目录
- 0 引言
- 1 概述
- 1.1 传输服务和协议
- 1.2 传输层 vs 网络层
- 1.3 Internet传输层协议 TCP和UDP
- 2 多路复用、解复用
- 2.1 UDP的多路复用
- 2.2 TCP的多路复用
- 3 UDP
- 3.1 概述
- 3.2 UDP报文段
- 3.3 拓展:TCP报文段
- 🙋♂️ 作者:海码007
- 📜 专栏:计算机四大基础专栏
- 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
- 💥 标题:【计网 传输层概述】 中科大郑烇老师笔记 (十)
- ❣️ 寄语:书到用时方恨少,事非经过不知难。
- 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正!
0 引言
从上到下学习,终于学到了传输层的知识点了,那么计算机网络传输层的学习目标有哪些?主要分为下面两个大点:
- 理解传输层的工作原理
- 源端的多路复用 / 目标端的解复用
- 可靠数据传输 RDT(Reliable Data Transfer)
- 流量控制
- 拥塞控制
- 学习Internet的传输层协议
- UDP:无连接传输
- TCP:面向连接的可靠传输
- TCP的拥塞控制
1 概述
1.1 传输服务和协议
- 为运行在不同主机上的应用进程提供逻辑通信
- 传输协议运行在端系统
- 发送方:将应用层的报文分成报文段,然后传递给网络层。
- 接收方:将报文段重组成报文,然后传递给应用层
- 有多个传输层协议可供用选择:Internet(TCP和UDP)
1.2 传输层 vs 网络层
- 网络层服务:主机之间的逻辑通信
- 传输层服务:进程间的逻辑通信
- 依赖于网络层的服务:延时、带宽
- 并对网络层的服务进行增强:数据丢失、顺序混乱、加密
类比一下就是:北京和上海有两个家庭通信,北京家庭的12个小孩给上海家庭的12个小孩发送信封。每人写12封信,总共144封
- 主机:家庭
- 进程:小孩
- 应用层报文:信封中的信件
- 传输协议:北京家庭和上海家庭为小孩提供复用解复用服务
- 网络层协议:邮政服务(家庭-家庭的邮包传输服务)北京家庭要把12个人写的信全部收集起来给邮政公司(这就是传输层提供的复用服务),上海家庭收到144封信,然后传输层进行信件整理,发到对应小孩的手中(这就是传输层提供的解复用服务)。
1.3 Internet传输层协议 TCP和UDP
- TCP:可靠的、保序的传输
- 多路复用、解复用
- 拥塞控制
- 流量控制
- 建立连接
- UDP:不可靠、不保序的传输
- 多路复用、解复用
- 没有尽力为IP服务添加更多其他额外服务
- 都不提供的服务:
- 延时保证
- 带宽保证
2 多路复用、解复用
多路复用(Multiplexing)和 解复用(Demultiplexing)是一种通信技术,用于在计算机网络中同时传输多个数据流(或多个应用程序的数据)通过单个通信通道。这有助于提高网络的效率和性能,因为它允许多个数据流共享同一个物理通道,而无需为每个数据流分配单独的通道。
- 多路复用(Multiplexing) 是指在发送端将多个数据流合并成一个单一的数据流(多个套接字接受来自多个进程的报文),然后通过网络传输。这可以通过不同的技术实现,例如统一数据包交错,时间分割,频分割,代码分割等。多路复用允许多个数据流在同一个通信通道上并行传输,而不会相互干扰。
- 解复用(Demultiplexing) 是指在接收端将接收到的单一数据流拆分回原始的多个数据流。接收端使用一些标识信息来确定如何将单一数据流分解为原始数据流,以便将它们交付给正确的应用程序或进程。这些标识信息通常包括端口号、IP地址、协议标识符等,用于确定数据流的归属。
多路复用和解复用在传输层的协议(例如TCP和UDP)中发挥重要作用,它们允许多个应用程序同时使用网络连接,而无需为每个应用程序分配独立的端口或连接。这提高了网络的效率,同时也为应用程序提供了更灵活的通信机制。
对应上面举得北京家庭的小孩给上海家庭的小孩通信的例子,北京家庭所以小孩的信封先统一打包起来,然后只需要一个邮政人员就可以将信封包裹送给上海家庭,这就是多路复用。然后上海家庭收到包裹后将包裹拆开,不同的信封交到不同的小孩手里,这就是解复用。
这样就不需要多个信封交给多个邮政人员,也就是多个数据流共享同一个物理通道(邮政人员),不需要给每个数据流分配单独的通道(一个信封安排一个邮政人员进行传输)。
2.1 UDP的多路复用
在接受端,如果有两个不同源IP地址/源端口号的数据报,但是有相同的目标IP地址和端口号,则被定位到相同的套接字。
2.2 TCP的多路复用
3 UDP
3.1 概述
传输层的UDP(User Datagram Protocol)是一种面向无连接的协议,用于在计算机网络中传输数据。UDP与另一种传输层协议TCP(Transmission Control Protocol)相对比,它具有以下主要特点:
- 无连接性:UDP是一种无连接的协议,这意味着在通信的开始时不会建立连接,也不会在通信结束时拆除连接。这使得UDP的通信更加轻量级,没有复杂的连接建立和拆除过程,从而降低了通信的开销。
- 不可靠性:UDP不提供可靠的数据传输。它发送数据包,但不保证数据包的可靠性、顺序性或交付。因此,如果使用UDP传输数据,应用程序需要自行处理数据包的丢失、重复、乱序等情况。
- 无拥塞控制:UDP不提供拥塞控制机制,因此在网络拥塞的情况下,UDP数据包可能会丢失或出现延迟。这与TCP不同,后者具有拥塞控制机制,可以适应网络拥塞。
- 高性能:由于UDP的轻量级性质和缺乏复杂的控制机制,它具有低延迟和高性能的特点,适用于实时应用程序,如音频和视频流传输,在线游戏等。
- 多播和广播:UDP支持多播和广播传输,允许单个数据包被多个接收者同时接收,这在某些应用场景中非常有用,如流媒体分发和网络广播。
UDP适合那些对数据传输延迟要求高、可以容忍一定数据包丢失的应用程序。然而,由于它的不可靠性,应用程序在使用UDP时必须自行处理数据的可靠性和完整性,通常需要实现自己的错误检测和纠正机制。UDP通常用于实时通信、媒体流传输、DNS查询等应用,其中快速传输和低延迟更为重要。
3.2 UDP报文段
UDP报文段的结构相对简单,它由两个主要部分组成:报头(Header)和数据(Data)。
UDP报文段的结构如下:
- 报头(Header):
- 源端口号(Source Port):占用16位,指示发送端的端口号。
- 目标端口号(Destination Port):占用16位,指示接收端的端口号。
- 长度(Length):占用16位,表示UDP报文段的总长度(包括报头和数据)。通常,UDP报文段的最小长度为8字节。
- 校验和(Checksum):占用16位,用于检测UDP报文段是否在传输过程中发生了错误。
- 数据(Data):
- 数据部分可以包含0个或更多字节的应用程序数据。数据部分的长度由UDP报头中的长度字段指定。
- 数据部分可以包含0个或更多字节的应用程序数据。数据部分的长度由UDP报头中的长度字段指定。
3.3 拓展:TCP报文段
TCP(Transmission Control Protocol)报文段的结构相对复杂,因为TCP提供了可靠的、面向连接的通信,包括连接建立、数据传输、错误检测和纠正、拥塞控制等功能。TCP报文段的结构如下:
-
报头(Header):
- 源端口号(Source Port):占用16位,指示发送端的端口号。
- 目标端口号(Destination Port):占用16位,指示接收端的端口号。
- 序列号(Sequence Number):占用32位,用于标识TCP报文段中的数据的顺序。
- 确认号(Acknowledgment Number):占用32位,用于确认已收到的数据的最大序列号。
- 报头长度(Header Length):占用4位,指示TCP报文段报头的长度,以4字节为单位。
- 保留位(Reserved):占用6位,保留供将来使用,目前必须为0。
- 控制位(Control Bits):占用6位,包括以下标志:
- URG(URGent):用于指示紧急数据。
- ACK(ACKnowledgment):用于确认收到的数据。
- PSH(PUSHit):用于提示接收端立即交付数据给应用程序。
- RST(ReSeT):用于复位连接。
- SYN(SYNchronize):用于建立连接。
- FIN(FINish):用于关闭连接。
- 窗口大小(Window Size):占用16位,表示接收端当前可接受的数据量,用于流量控制。
- 校验和(Checksum):占用16位,用于检测TCP报文段是否在传输过程中发生了错误。
-紧急指针(Urgent Pointer):占用16位,只有在URG标志被设置时才有效,用于指示紧急数据的位置。 - 选项(Options):可选,可以包括一些可选字段,如最大报文段长度、时间戳等。
-
数据(Data):
- 数据部分可以包含0个或更多字节的应用程序数据。数据部分的长度由TCP报头中的窗口大小字段指定。
TCP报文段结构的复杂性反映了TCP提供的高度可靠性和控制功能,但也导致了额外的开销。每个TCP报文段都包括了用于建立连接、确认数据、处理错误、控制流量等多种信息。这些信息使得TCP在可靠性方面非常强大,但也使得它在某些情况下相对较慢或开销较大。