【学习笔记】透视HTTP协议(四):网络分层模型

  本文是一篇学习笔记,学习的课程是极客时间的《透视HTTP协议》。

透视HTTP协议_HTTP_HTTPS-极客时间 (geekbang.org)

网络分层协议,通常指的是将网络通信的功能划分为若干层次,每一层都有特定的功能和任务,各层之间通过接口进行通信和协作。以下是网络分层协议的两个典型模型——TCP/IP模型以及OSI(Open System Interconnection)模型。

目录

1、TCP/IP网络分层模型(四层)

2、OSI网络分层模型(七层)

3、两个分层模型的映射关系

4、TCP/IP协议栈的工作方式


1、TCP/IP网络分层模型(四层)

1.1 模型说明

TCP/IP模型是一种网络通信协议模型,由两个主要协议组成:传输控制协议(TCP)和互联网协议(IP)。这个模型将网络通信划分为四个层次,每个层次都有其特定的功能和任务。以下是TCP/IP模型的详细解析:

层次顺序是“从下往上”数的,所以第一层就是最下面的一层。

第一层叫“链接层”(link layer),负责在以太网、WiFi这样的底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标记网络上的设备,所以有时候也叫MAC层。

第二层叫“网际层”或者“网络互连层”(internet layer),IP协议就处在这一层。因为IP协议定义了“IP地址”的概念,所以就可以在“链接层”的基础上,用IP地址取代MAC地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把IP地址再“翻译”成MAC地址就可以了。

第三层叫“传输层”(transport layer),这个层次协议的职责是保证数据在IP地址标记的两点之间“可靠”地传输,是TCP协议工作的层次,另外还有它的一个“小伙伴”UDP。

TCP是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。而UDP则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。两个协议的另一个重要区别在于数据的形式。TCP的数据是连续的“字节流”,有先后顺序,而UDP则是分散的小数据包,是顺序发,乱序收。

第四层叫“应用层”(application layer),由于下面的三层把基础打得非常好,所以在这一层就“百花齐放”了,有各种面向具体应用的协议。例如Telnet、SSH、FTP、SMTP等等,当然还有我们的HTTP。

MAC层的传输单位是帧(frame),IP层的传输单位是包(packet),TCP层的传输单位是段(segment),HTTP的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。

1.2 链接层和网际层的区别

链接层是关注于物理层面上的数据传输,处理帧的传输、流量控制、差错检测等。网际层是关注于逻辑上的数据传输,处理数据包在不同网络之间的路由和转发。

1.2.1链接层

(1)功能

  • 帧的传输:在物理层面上提供数据传输服务,将数据封装成帧并传输。
  • 流量控制:确保发送方和接收方之间的数据传输速率匹配,避免数据丢失。
  • 差错检测与纠正:使用CRC校验码等方法检测传输过程中的错误,并可能通过重传等机制纠正错误。
  • 物理地址:管理设备的物理地址(MAC地址),确保数据能够准确发送到目标设备。

(2)协议

  • Ethernet:最常见的链路层协议之一,用于以太网网络中的数据传输。
  • PPP(Point-to-Point Protocol):用于点对点连接的数据链路层协议。
1.2.2 网际层

(1)功能

  • 路由与转发:负责将数据包从源地址路由到目标地址,选择最佳路径,并转发数据包到下一个节点。
  • 数据包的分片与重组:如果数据包的大小超过网络的最大传输单元(MTU),网络层会将其分片成较小的数据包,并在目标地址处重新组装。
  • 拥塞控制:在网络拥塞时,网络层会采取措施减少数据包的数量,以避免网络性能下降。
  • 服务选择:为传输层提供数据报和虚电路两种服务,但Internet的网络层仅为传输层提供数据报一种服务。

(2)协议

  • IP(Internet Protocol):网络层的核心协议,负责数据包的路由和转发。
  • ICMP(Internet Control Message Protocol):用于发送控制消息,如错误报告。

这两个层次在网络通信中协同工作,确保数据能够准确、高效地传输到目标地址。网络层负责确定数据包应该走哪条路,而链路层则负责在选定的路径上传输数据包。

2、OSI网络分层模型(七层)

OSI,全称是“开放式系统互联通信参考模型”(Open System Interconnection Reference Model)。OSI分为七层,基本对应TCP/IP网络分层模型,TCP协议在第四层,HTTP在第七层;

OSI模型分成了七层,部分层次与TCP/IP很像,从下到上分别是:

  1. 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;

  2. 第二层:数据链路层,它基本相当于TCP/IP的链接层;

  3. 第三层:网络层,相当于TCP/IP里的网际层;

  4. 第四层:传输层,相当于TCP/IP里的传输层;

  5. 第五层:会话层,维护网络中的连接状态,即保持会话和同步;

  6. 第六层:表示层,把数据转换为合适、可理解的语法和语义;

  7. 第七层:应用层,面向具体的应用传输数据。

OSI模型相比TCP\IP模型也是有优点的。对比一下就可以看出,TCP/IP是一个纯软件的栈,没有网络应有的最根基的电缆、网卡等物理设备的位置。而OSI则补足了这个缺失,在理论层面上描述网络更加完整。

还有一个重要的形式上的优点:OSI为每一层标记了明确了编号,最底层是一层,最上层是七层,而TCP/IP的层次从来只有名字而没有编号。显然,在交流的时候说“七层”要比“应用层”更简单快捷,特别是英文,对比一下“Layer seven”与“application layer”。

3、两个分层模型的映射关系

OSI可以映射到TCP/IP,但这期间一、五、六层消失。日常交流的时候通常使用OSI模型,用四层、七层等术语;

  1. 第一层:物理层,TCP/IP里无对应;

  2. 第二层:数据链路层,对应TCP/IP的链接层;

  3. 第三层:网络层,对应TCP/IP的网际层;

  4. 第四层:传输层,对应TCP/IP的传输层;

  5. 第五、六、七层:统一对应到TCP/IP的应用层。

4、TCP/IP协议栈的工作方式

HTTP协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。

接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。

但下层的传输过程对于上层是完全“透明”的,上层也不需要关心下层的具体实现细节,所以就HTTP层次来看,它不管下层是不是TCP/IP协议,看到的只是一个可靠的传输链路,只要把数据加上自己的头,对方就能原样收到。

过程图如下:

题外话:HTTP利用TCP/IP协议栈逐层打包再拆包,实现了数据传输,但底层的细节并不可见。

可以把HTTP利用TCP/IP协议栈传输数据想象成一个发快递的过程。

假设你想把一件毛绒玩具送给朋友,但你要先拿个塑料袋套一下,这件玩具就相当于HTTP协议里要传输的内容,比如HTML,然后HTTP协议为它加一个HTTP专用附加数据。

你把玩具交给快递小哥,为了保护货物,他又加了层包装再贴了个标签,相当于在TCP层给数据再次打包,加上了TCP头。

接着快递小哥下楼,把包裹放进了三轮车里,运到集散点,然后再装进更大的卡车里,相当于在IP层、MAC层对TCP数据包加上了IP头、MAC头。

之后经过漫长的运输,包裹到达目的地,要卸货再放进另一位快递员的三轮车,就是在IP层、MAC传输后拆包。

快递员到了你朋友的家门口,撕掉标签,去除了TCP层的头,你朋友再拆掉塑料袋包装,也就是HTTP头,最后就拿到了玩具,也就是真正的HTML页面。

这个比喻里省略了很多TCP/IP协议里的细节,比如建连、路由、数据切分与重组、错误检查等,但核心的数据传输过程是差不多的。

题外话:二层转发和三层路由

首先,“二层转发”主要指的是在数据链路层进行的数据包转发。在TCP/IP协议栈中,数据链路层负责处理数据帧的传输和接收。当数据包到达网络的这一层时,它们会根据MAC地址(物理地址)进行转发。MAC地址是网络接口卡(NIC)的唯一标识符,用于在网络中标识不同的设备。二层转发机制确保数据包能够准确地从源设备传输到目标设备。

其次,“三层路由”发生在网络层,它涉及使用路由器进行数据包转发和路由选择。在网络层,数据包被封装成IP数据报,并包含源IP地址和目标IP地址。路由器根据这些IP地址信息来决定数据包的最佳传输路径。通过三层路由,不同网络之间的通信得以实现,确保数据包能够高效、准确地到达目的地。

题外话:DNS协议位于哪一层呢?

关于DNS协议的位置,它位于TCP/IP协议栈的应用层。DNS协议的主要功能是将域名转换为IP地址,使得用户可以通过易记的域名来访问网络资源。在进行域名解析时,DNS协议通常使用UDP协议作为传输层协议,因为其开销较小,适用于短小的查询请求。

题外话:CDN工作在那一层呢?

关于CDN(内容分发网络)的工作层次,CDN主要涉及到数据包的传输和接收,因此它通常在网络协议栈的传输层工作。CDN通过使用TCP或UDP协议来确保内容的高效分发和传输。TCP协议用于可靠的数据传输,而UDP协议则更适用于实时加速和流媒体传输。通过在多个地理位置部署缓存服务器,CDN能够减少网络延迟,提高用户体验。

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值