传输层
100%

网络基础 · 第 6 课

传输层

学习 TCP 和 UDP 如何使用端口,并在应用程序端点之间提供不同的传送语义。

传输层通过 IP 网络连接应用程序端点。TCP 和 UDP 都使用 16 位端口号,但向应用程序公开的通信模型和保证不同。

端口与套接字

目标端口帮助操作系统把流量送达监听套接字。标识连接或流量不能只靠一个端口:协议、源地址与目标地址、源端口与目标端口都很重要。因此,同一个服务器端口可以同时服务许多客户端。

一个 TCP 服务器端口如何同时处理多个客户端?

TCP 字节流

只要连接仍然可用,TCP 就会提供有序、可靠的字节流。它使用序列号、确认、重传、流量控制和拥塞控制。TCP 不保留应用程序消息边界:一次写入可能通过多次读取到达,多次写入也可能由一次读取返回。应用程序必须自行定义成帧方式。

可靠并不等于绝对送达。连接可能超时、重置或失败,收到确认也不能证明应用程序已将数据持久提交。

TCP 如何处理应用程序消息边界?

TCP 握手

正常 TCP 连接以三次握手开始:

  1. 发起方发送带有初始序列信息的 SYN
  2. 监听方回复 SYN-ACK,带上自己的序列信息和确认。
  3. 发起方返回 ACK

该过程在两个端点中建立传输状态。它不会验证应用服务器的身份,也不能证明所请求的应用操作会成功。

正常的 TCP 三次握手顺序是什么?

UDP 数据报

UDP 保留数据报边界,并提供基于校验和的错误检测,但不提供 TCP 式连接状态、排序、重传、流量控制或拥塞控制。应用程序可以自行添加所需的可靠性或拥塞行为。UDP 并不必然更快;性能取决于协议设计、工作负载、路径和实现。

UDP 向应用程序提供哪项属性?

检查传输端点

使用 ss 以只读方式检查监听和已连接套接字:

$ ss -lntup
$ ss -tn state established

查看进程详情可能需要特权。监听套接字只能证明传输边界上的本地就绪状态;防火墙、路由、地址族、TLS 和应用程序健康仍需通过适当测试确认。

监听中的 TCP 套接字能确定什么?

课程已完成

你已完成 传输层

现在,你可以区分 TCP 字节流行为与 UDP 数据报行为。

  • 使用协议、地址和端口标识一个流。

  • 将 TCP 视为不保留消息边界的可靠有序字节流。

  • 认识 TCP 握手能够和不能证明的内容。

  • 将 UDP 的可靠性与拥塞行为视为应用程序设计选择。

  • 在本地套接字状态之外验证应用程序健康。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 网络基础