ff79d7c46221e02e138a2c23fabab76e.png

OSI 第四层是传输层(Transport layer),用于管理应用程序的连接,保证连接的有效建立,第四层有两个协议

快速但不可靠的 UDP 协议

UDP(user datagram protocol ) 协议是一种无连接的协议,它的目标是快速高效,并不在乎数据有没有被接收方收到,所以它是不可靠的,例如一些互联网广播和电视,重要的是实时发送这些信息,如果丢失一点信息,也并不会停止。

UDP数据报的格式:

d92f8a45cc48cfc1738a7e66ff2b3bcb.png

源端口号:发送信息的应用程序的地址。

  • 目标端口号:接收信息的应用程序的地址。
  • Checksum:表示 “校验和”,与 OSI 第 2 层的以太网帧里的 CRC功能类似,也是用于错误校验,确保发送的数据和接收的数据是相同的。

可靠的 TCP 协议

TCP(transmission control protocol)协议非常可靠,发送的每一个数据包都会去确认对方是否收到,如果接收方没有确认,发送方将会重新发送此数据包。

在正式交谈前,TCP 协议会先建立通信,因此发送的前三个数据包都只是用于建立通信,这些都是空的数据包。

一、3次握手建立通信

2a7b2b37f23a8738b791052460391314.png

①客户端 A 发送一个SYN(synchronous)标志,这是一个同步请求,表明客户端 A 想与服务端 B 建立通信。

②接收到请求的服务端 B 将会回复一个 ACK(acknowledgement)标志表示确认,同时还会向客户端 A 发送一个 SYN 标志,询问客户端 A 是否要与自己建立通信,因为 TCP 协议是双全工,连接是双向的,所以需要建立两个连接。

③客户端 A 再次发送 ACK 标志的数据包,接受来自服务端 B 的连接请求。

经过三次握手后,双向通信建立,应用程序之间就可以互传数据包了,在互传的过程中,所有的数据包都会加上 ACK 标志,表示确认收到了先前的数据包。

二、4次挥手终止通信

b70e41568c78b4cc2b3de06f7d25b9fe.png

①客户端 A 发送一个FIN( finish )标志到服务端 B,请求关闭 A 到 B 方向的连接。

②服务端 B 收到 FIN 请求后,回复一个 ACK 标志表示确认关闭 A 到 B 的连接。

③服务端 B 请求关闭 B 到 A 方向的连接,发送一个 FIN 标志给客户端 A。

④客户端 A 回复一个 ACK 标志给服务端 B ,从 B 到 A 的连接被关闭。

在建立连接的三次握手中,第二步的 SYN 和 ACK 标志可以一起设置,是因为此时连接还未成功建立,还没有数据传输。

在断开连接的四次挥手中,第二步的 ACK 标志和第三步的 FIN标志不能合并到一起,是因为从 B 到 A 的方向还有数据传输,服务端 B 将在数据传输完毕后,再向客户端 A 发送 FIN 请求关闭连接。

上一篇:OSI模型第三层网络层中的ARP协议

下一篇:OSI模型第四层传输层中的NAT和端口转发

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐