为了理解HTTP,有必要事先了解一下TCP/IP协议族。
通常使用的网络,是在TCP/IP协议族的基础上使用的,而HTTP则是其中的一个子集。
接下来我会介绍理解HTTP所需掌握的TCP/IP知识,想了解更多,请参考其他书籍。
计算机与网络设备要互相通讯,双方就要基于相同的方法。例如:在面对许多的设备时,该如何寻找到目标,找到后哪边该先发送信息,又该以何种方式以及语言发送信息,怎样结束通讯等规则都需要事先约束。也就是说,不同的硬件,以及操作系统之间都需要事先确定一种操作规则。而我们就把这种规则称之为协议
协议中存在各种各样的内容,从电缆的选取到IP地址的选定方法。我们把与互联网有关的协议集合起来总称为TCP/IP协议。也就是说TCP/IP协议指的并不只是这两个协议,而是一个庞大的协议族的统称。
TCP/IP协议中最重要的一点就是分层管理。TCP/IP分别按层次分为:应用层、传输层、网络层、数据链路层。
把TCP/IP层次化是有好处的,例如互联网如果只有一个协议统筹,在某个地方需要修改时,就要把整个部分都替换掉,而分层后,只需修改部分即可。把各层之间的接口部分规划好后,每层就可以互不干扰的改动了。而且分层后,程序设计也变得相对简单了,位于应用层上的应用只需关注自己要处理的业务,而不必去担心对方所处的位置,传输线路等等其他琐碎的问题。
应用层决定了向用户提供应用服务时通信的活动
传输层对上层应用,提供处于网络连接中的两台计算机之间的数据传输
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方计算机,兵把数据包传给对方
数据链路层用来处理连接网络的硬件部分
TCP/IP通信传输流
用HTTP举例说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个请求。
接着,为了方便传输,在传输层(TCP协议)把从应用层收到的数据进行分割,并在各个报文上打上标记序号,后发给网络层
在网络层(IP协议)增加作为通信目的地的MAC地址后转发给链路层
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。发送端在发送数据时,每经过一层,都会打上一个该层所有的首部信息,当到达接收端后,每经过一层,则会去掉对应的首部信息。这种把数据信息包装起来的做法称为封装。
负责传输的IP协议
按层次分,IP网际协议位于网络层。可能有人会把IP和IP地址搞混,IP其实是一种协议的名称。
IP协议的作用其实是把各种数据包传给对方,而要保证送到对方那里,则要满足各种条件。其中重要的两个条件是IP地址和MAC地址。IP地址指明了节点被分配到的地址,MAC地址则是固定的网卡地址。一台电脑,IP地址可变,但MAC地址不可变。
在中转过程中,两台设备在同一个局域网的可能性是非常小的,这时,会借用下一台设备的MAC地址来搜索下一个中转目标,这时,会使用ARP协议。ARP协议是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
没有人能够完全掌握互联网中的传输状况。在到达目标之前,计算机和路由器只能粗略的获得传输路线。
确保可靠性的TCP协议
按层次分,TCP协议位于传输层,提供可靠的字节流服务。
所谓字节流服务是指,为了方便传输,将大块的数据分割成以报文段为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠的传给对方。总的来说,TCP协议是为了更容易传达大的数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标,TCP采用了三段握手策略。用TCP协议把数据送出后,TCP不会对其置之不理,它一定会向对确认是否成功送达。握手过程中使用了TCP的标志——SYN和ACK
发送端首先发送一个带有SYN标志的发送包。接收端收到后,会返回一个带有SYN/ACK标志的数据包,以确认数据包已经送达。最后,发送一个带有ACK的数据包代表握手结束。
负责域名解析的DNS服务
DNS服务也是位于应用层的协议,它提供域名到IP地址之间的解析服务。计算机既可以被赋予IP地址也可以被赋予域名。例如,当人们在访问一个网站时,通常会选择输入其网址(域名),而一般网站也会有一个由数字组成的IP地址。
人们一般用字母和数字组成的域名来访问计算机,但电脑只认得数字,因此,DNS服务应运而生。DNS协议提供通过域名查找IP地址,或逆向从IP地址反推域名的服务。
各种协议与HTTP协议的关系
原文:https://www.cnblogs.com/tonedog/p/12881615.html