给女朋友讲HTTP协议 | 网络基础

为了更好的理解HTTP,我们需要花点时间了解一下TCP/IP协议族。

通常使用的网络是在TCP/IP协议族的基础上运作的。而HTTP属于它内部的一个子集。

TCP/IP协议族

计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

TCP/IP的分层

把 TCP/IP 层次化是有好处的。比如,如果互联网只由一个协议统筹,某个地方需要改变计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。值得一提的是,层次化之后,设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对方在地球上哪个地方、对方的传输路线是怎样的、是否能确保传输送达等问题。

停留在教学模型阶段的OSI七层模型

OSI参考模型:(Open System Interconnect 开放系统互连参考模型)。

osi

OSI七层模型从上往下分别是:

  • 第7层:应用层。各种应用程序协议,如HTTP、FTP、SMTP、POP3。
  • 第6层:表示层。信息的语法语义以及它们的关联,如加密解密、转换翻译、压缩解压缩。
  • 第5层:会话层。不同机器上的用户之间建立及管理回话。
  • 第4层:传输层。接受上一层数据,在必要时把数据进行分割,并将这些数据交给网络层,且保证这些数据段有效到达对端。
  • 第3层:网络层。控制子网的运行,如分组传输、路由选择。
  • 第2层:数据链路层。物理寻址,同时将原始比特流转变为逻辑传输线路。
  • 第1层:物理层。机械、电子、定时接口通信信道上的原始比特流传输。
  • 这一部分看不懂也没事,毕竟就是因为它太复杂导致在实际生产中没有使用。哈哈哈…

实际使用的四层模型

osi and 4

TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。

  • 第4层:应用层。应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。
  • 第3层:传输层。传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission ControlProtocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。
  • 第2层:网络层。(又名网络互连层)网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
  • 第1层:数据链路层。(链路层,网络接口层)用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

通信传输流

send

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)。

与HTTP关系密切的三个协议

负责传输的IP协议

IP(Internet Protocol)网际协议位于网络层。Internet Protocol这个名字有点恐怖哈,不过IP协议的的确确是很重要的。

IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address)。IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC地址基本上不会更改。

确保可靠性的TCP协议

TCP 位于传输层,提供可靠的字节流服务。

所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(three-way handshaking)策略。用 TCP 协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。断开的时候则是采用四次挥手。

负责域名 解析的DNS服务

DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。
用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP地址访问。因为与 IP 地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称,相对而言就变得困难了。因为计算机更擅长处理一长串数字。为了解决上述的问题,DNS 服务应运而生。DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。

发表评论

电子邮件地址不会被公开。 必填项已用*标注