运输层(也称为传输层)是OSI七层模型中的第四层,它位于网络层之上、会话层之下。运输层的主要功能是向应用层提供通信服务,确保数据的可靠传输,并负责端到端的通信。它是整个协议层次中最核心的一层,也是面向网络通信的低三层和面向信息处理的最高三层之间的中间层。
根据应用层的不同需要,传输层可以提供两类服务:可靠的服务(TCP)和不可靠的服务(UDP)。
其中TCP/IP的运输层通过端口来实现多路复用和多路分解。一个应用进程通过系统调用可以绑定到运输层协议(UDP或TCP)的一个端口上,这样通过端口号就能确定对应的应用进程,端口和应用进程是一一对应的。当应用进程有数据需要运输层传递时,他将数据放入对应的端口中;运输层协议会将其取走,并在数据前面添加运输层首部,再首部里写入发送方的端口号(源端口)和接收方的端口号(目的端口)。这样,当对方的运输层协议收到时,就可以根据目的端口号将数据交给正确的应用进程。

端口机制的工作原理
熟记端口号:0~1023 -----常用应用程序固定使用
登记端口号:1024~49151
动态端口号:49152~65535
在TCP/IP体系中,熟知的服务(web服务、FTP服务等)使用的运输层协议和端口号都是固定的,这些端口被称为数值端口,且其数值一般小于1024。
| 应用 | 应用层协议 | 运输层协议 | 端口 |
|---|---|---|---|
| 网页浏览 | HTTP | TCP | 80 |
| 文件传输 | FTP | TCP | 21 |
| 电子邮件 | SMTP | TCP | 25 |
| 电子邮件 | POP3 | TCP | 110 |
| 远程登录 | Telnet | TCP | 23 |
| 动态获取IP | DNCP | UDP | 67 |
| 域名解析 | DNS | UDP | 53 |
| 网络管理 | SNMP | UDP | 161 |
UDP(User Datagram Protocol,用户数据报协议)是传输层协议的一种,与TCP协议一样都位于IP协议之上。与TCP不同的是,UDP不提供数据包分组、组装和排序功能,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
由于UDP的这些特性,它通常用于那些对实时性要求较高、但对数据传输的可靠性要求相对较低的应用场景,如实时音视频传输、在线游戏、DNS查询等。
| 应用 | 应用层协议 | 运输层协议 |
|---|---|---|
| 域名解析 | DNS | UDP |
| 网络管理 | SNMP | UDP |
| 路由信息交换 | RIP | UDP |
| 简单文件传输 | TFTP | UDP |
| 网络文件系统 | NFS | UDP |
| IP电话 | 专有协议 | UDP |
| 流式多媒体 | 专有协议 | UDP |
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它的首部由8个字节组成,这8个字节进一步分为4个字段,每个字段的长度都是2个字节。以下是这四个字段的详细解释:

TCP(Transmission Control Protocol,传输控制协议)是专门为了在不可靠的互联网络中提供一个可靠的端到端的通信而设计的,是TCP/IP协议体系中运输层的重要协议。TCP为应用层提供面向连接的、可的数据传输服务。发送方应用进程将数据交给TCP,TCP保证将这些数据有序地、无差错地、完整地送达目的应用进程。TCP为应用进程构建了一个可靠的比特流管道,发送方应用进程的报文从一端流人,无差错地、完整地从另一端流出,交给接收方应用进程。
| 应用 | 应用层协议 | 运输层协议 |
|---|---|---|
| 网页浏览 | HTTP | TCP |
| 文件传输 | FTP | TCP |
| 电子邮件 | SMTP、POP3 | TCP |
| 远程登录 | Telnet | TCP |
1、TCP是面向连接的运输层协议:
2、TCP提供可靠的数据传输服务:
3、TCP提供流量控制:
4、TCP提供拥塞控制:
5、TCP提供全双工通信:
6、TCP是面向字节流的:
总的来说,TCP协议通过其面向连接、可靠传输、流量控制、拥塞控制、全双工通信和面向字节流等特性,为应用程序提供了高效、可靠的网络传输服务。

TCP报文段是TCP协议中用于传输数据的基本单位。每个TCP报文段都包含源端口号、目的端口号、序列号、确认序号、数据偏移、保留字段、控制位、窗口大小、校验和以及紧急指针等字段。这些字段共同协作,确保数据的可靠传输。
- 源端口和目的端口:源端口和目的端口字段(各占 2 字节,16比特)。源端口 用来 标识 发送该TCP报文段的应用进程。目的端口 用来 标识接受该TCP报文段的应用进程。
- 序列号和确认序号:用于对字节流进行编号和确认,确保数据的按序到达和无损传输。
- 数据偏移:占4比特。表示TCP报子段中的数据部分距离TCP首部的起始位置有多少字节。数据部分前面是TCP首部,所以数据偏移实际上就是TCP首部的长度。
- 标志字段:占6比特。每个比特都代表特定的含义,当其值为1时称为置位。
- 窗口大小:占16比特。窗口大小的值代表了发送方当前TCP连接接收缓存的大小。这个字段用于流量控制,告诉对方下一次可以发送的数据量。通过动态调整窗口大小,TCP可以确保发送方不会发送过多的数据,导致接收方缓冲区溢出。
- 校验和:占16比特。用于检测数据的传输中是否发生了错误。通过计算校验和,接收方可以验证数据的完整性,确保数据在传输过程中没有被修改或损坏。
- 紧急指针:紧急指针仅在URG控制位为1时才有意义。它指出了本报文段中的紧急数据的字节数。当发送方需要向接收方发送紧急数据时,可以设置URG控制位,并通过紧急指针来指示紧急数据的长度。
TCP报文段的标志字段是用于控制和管理TCP连接的各种状态和操作的重要部分。这些标志字段包括:
- SYN(同步):用于建立连接。当一个TCP数据包携带SYN标志并设置为1时,它表示请求建立连接。在三次握手过程中,客户端发送的第一个报文段就会设置SYN标志。
- ACK(确认):用于确认接收到的数据。当ACK标志为1时,表示这是一个应答报文段,其中确认号字段的值表示接收方期望从发送方接收的下一个字节的序号。
- FIN(结束):用于结束连接。当FIN标志为1时,表示发送方已经没有更多的数据要发送,并希望关闭连接。在四次挥手过程中,FIN标志用于通知对方准备关闭连接。
- RST(复位):用于强制关闭连接。当检测到严重错误或异常时,接收方可以发送一个携带RST标志的TCP报文段来关闭连接。
- PSH(推送):通知协议栈尽快把TCP数据提交给上层程序处理。当发送方希望接收方尽快处理接收到的数据时,可以设置PSH标志。
- URG(紧急):表示报文段中有紧急数据。当URG标志为1时,紧急指针字段有效,用于指示紧急数据的位置。
这些标志字段在TCP报文段头部中占据一定的位数,并通过设置相应的比特位来表示不同的状态和操作。它们共同协作,确保TCP连接的建立、数据传输的可靠性、连接的正常关闭以及异常情况的处理。
---------------------------------------------------------------------------------------------------------------------------------
这里只是关于UDP、TCP的介绍和报文字段的分析,若想了解关于TCP的数据传输过程,可以观看这篇博客。
本文作者:zzz
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!