作者:李成文;
标签: 网络基础TCP/IP
TCP/IP
为了理解HTTP,首先先了解TCP/IP协议族,通常使用的网络是在TCP/IP协议族的基础上运作的,HTTP是属于它内部的一个子集。
TCP/IP协议族
计算机与网络设备要互相通信,双方就必须基于相同的方法。
如何探测到通信目标、由那一边向发起通信、使用哪种语言进行通信、怎样结束通信等规则都是需要事先确定,不同的硬件、操作系统之间的通信,所有的一切都需要一种规则。这种规则被称之为协议。
TCP/IP的分层管理
在TCP/IP的协议族中最重要的一点就是分层,TCP/IP协议族的层次分别分为以下的四层:
- 应用层
- 传输层
- 网络层
- 链路层
将TCP/IP层次化的好处是:当协议的某个地方需要变动时可以只需将变动层替换掉即可,将各个层之间的接口规划好之后,每个层次内部的设计就可以自由的改动。每个层只需要处理自己这个层的事情即可。
TCP/IP各个层的作用如下:
-
应用层
引用层决定了向用户提供应用服务时通信的活动。在TCP/IP协议族中预存了各类通用的应用服务如:FTP和DNS等服务。HTTP协议也处于这一层。
-
传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:TCP(传输控制协议)和 UDP(用户数据报协议)。 -
网络层(又名网络互连层)
网络层用来处理网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过什么路径到达对方计算机,并把数据包传给对方。
-
链路层(又名数据链路层,网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动。硬件上的范畴都在链路层的作用范围之内。
TCP/IP通信传输流
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层-->传输层-->网络层-->链路层,接受端则从相反的方向走。
以http举例来说明:
- 首先作为发送端的客户端在应用层发出一个想看某个web页面的HTTP请求。
- 为了传输数据方便,在传输层把应用层处收到的数据(HTTP请求报文)进行分割,在各个报文上标记序号和端口号转发给网络层。
- 在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样发往网络的请求就准备齐全。
- 接收端的服务器在链路层接受到数据,会按照顺序往上层发送,一直到应用层。当传输到应用层,才算真正接收到由客户端发送过来的HTTP请求。
发送端在层和层之间传输数据时,每经过一层必定会被打上改层首部的信息。反之接收端在层与层之间传输数据时,每经过一层时会把对应的首部去掉。
IP、TCP和DNS
下面来了解一下与HTTP关系密切的三个协议(IP、TCP和DNS)
负责传输的IP协议
按层次分,IP网际协议位于网络层。
IP协议的作用是把各类数据包传送给对方,而要确保包确实传送到了对方那里,需要满足各类条件。其中两个重要的条件就是IP地址和MAC地址。
IP地址指明了节点被分配的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会更改。
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址,在网络上通信的双方在同一个局域网的情况很少,通常需要经过多台计算机和网络设备中转才能够连接到对方,在进行中转的时候,会利用下一站中转设备的MAC地址来搜索下一个中转目标。这个时候会采用ARP协议。ARP协议是一种用来解析地址的协议,根据通信方的ip地址可以反查出对应的MAC地址。这种机制称为路由选择。
确保可靠性的TCP协议
按层次分,TCP位于传输层,提供可靠的字节流服务。
字节流服务指的是:为了方便传输,将大块的数据分割以报文段为单位的数据包进行管理。而可靠的传输服务是指,能将数据准确可靠的传递给对方。
为了准确无误的将数据传递给目标,TCP协议采用了三次握手策略,握手过程中使用TCP的标志SYN和ACK。
发送端首先发送一个带有SYN标志的数据包给对方,接受端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后发送端再回传一个带有ACK标志的数据包,代表握手结束。
如果在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
负责解析域名的DNS服务
DNS服务与HTTP协议一样位于应用层,它提供域名到IP地址之间的解析服务。
各种协议与HTTP协议之间的关系
了解了上面TCP/IP协议族中的各种协议之后,看一下在HTTP协议通信的过程中这些协议都发挥了那些作用。
URI和URL
URI:Uniform Resource Identifier (统一资源标识符)指的是:由某个协议方案表示的资源的定位标识符。协议方案指的是访问资源时所使用的协议类型名称。(采用HTTP协议时,协议方案就是http。除此之外还有ftp、file、telnet等。)
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称,它只包括名称不包括资源的协议。
URI可以被分为URL、URN或两者的组合,URL、URN是URI的子集。
URI格式
表示指的的URI,要使用涵盖所有必要信息的绝对URI、绝对URL以及相对URL。
下面是绝对URI的格式: