产生
- HTTP/1.0标准公布于1996年5月,并记载于RFC1945;
- HTTP/1.1 是目前主流的标准,记载于RFC2616。
新一代HTTP/2.0正在制定当中,但要达到较高的使用覆盖率,仍需假以时日。
网络基础TCP/IP
TCP/IP 协议族
TCP/IP 协议族是互联网相关联的协议的集合。从电缆的规格到IP地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及Web页面显示需要处理的步骤,等等。而HTTP是属于它内部的一个子集。TCP/IP的分层管理
TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。 分层的好处:把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。而且,层次化之后,设计也变得相对简单。处于应用层上的应用可以只考虑分派给自己的任务,而无需弄清对方在地球上哪个地方、对方的传输路线、是否能确保传输送达等问题。- 应用层:决定了向用户提供应用服务时通信的活动。 TCP/IP 协议族预存了各类通用的应用服务。如
FTP
(File Transfer Protocol)、DNS
(Domain Name System)和HTTP
。 - 传输层:该层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
TCP
(Transmission Control Protocol)和UDP
(User Data Protocol,用户数据报协议)。 - 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方。
- 链路层:用来处理网络的硬件部分
TCP/IP 通信传输流
利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
用HTTP
举例来说:首先作为发送端的客户端在应用层(HTTP
协议)发出一个HTTP
请求。
接着,在传输层(TCP
协议)把从应用层处收到的数据(HTTP
请求报文)进行分隔,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP
协议),增加作为通信目的地的MAC
地址后转发给链路层。这就让发往网络的通信请求准备齐全了。
接收端的服务器在链路层接收到数据后,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到客户端发送过来的HTTP
请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。 把数据信息包装起来的做法称为封装。
与HTTP关系密切的协议:IP、TCP和DNS
负责传输的 IP 协议
IP
(网际协议)位于网络层。该协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中最重要的两个条件是 IP
地址和 MAC
地址。 IP 地址指明了节点被分配到的地址,MAC
地址是指网卡所属的固定地址。IP
地址可以和MAC
地址进行配对。
使用ARP
协议凭借MAC
地址进行通信 IP
间通信通信依赖MAC
地址。通信的双方通常会经过多台计算机和网络设备中转才能连接到对方,而在进行中转时,会利用下一站中转设备的MAC
地址来搜索下一个中转目标。这时,会采用ARP
协议。该协议是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC
地址。
确保可靠性的TCP协议
TCP
属于传输层,提供可靠的字节流服务。 字节流服务是指:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。 这就是为什么下载高清大图时,图片会一块一块地加载。
三次握手为了准确无误地将数据送达目标处,TCP
协议在发送数据的准备阶段采用了三次握手策略(若在握手过程中某个阶段中断,TCP
协议会再次以相同的顺序发送相同的数据包)。
当然,除了三次握手,TCP还有其它各种手段确保通信的可靠性。
负责域名解析的 DNS 服务
DNS
服务提供域名到IP
地址之间的解析服务。 即可通过域名查找IP
,或逆向从IP
地址反查域名服务。
URI和URL
URI
(uniform Resource Identifier) Uniform
:规定统一的格式可方便处理多种不同类型的资源。 Resource
:可标识的任何东西 Identifier
:标识符
URI
就是某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称,如http
、ftp
。
URI
用字符串标识某一个互联网资源,而URL
表示资源的地点。URL
是URI
的子集。
关于URI和URL:
URI 定义了一个抽象的统一资源的表示规则,URL 是 URL 针对已经存在的协议的一种具体应用.
同时补充一点的是,URN 定义了 URI 中的各个元素的命名规则。
理解URI和URL的区别,我们引入URN这个概念。
URI = Universal Resource Identifier
统一资源标志符
URL = Universal Resource Locator
统一资源定位符
URN = Universal Resource Name
统一资源名称
这三者的关系如下图:
也就是说,URI
分为三种,URL
or URN
or (URL
and URI
)
URL
代表资源的路径地址,而URI
代表资源的名称。
表示指定的URI
,要使用涵盖全部必要信息的绝对URI
、绝对URL
以及相对URL
。相对URL
是指从浏览器中基本URI
处指定的URL
,如 /image/logo.gif
。
绝对URI
的格式如下: