0%

传输层简析

传输层简析:数据传输的可靠保障与核心协议

传输层是 TCP/IP 协议栈中承上启下的关键层级,位于网络层之上、应用层之下,负责为应用程序提供端到端的高效数据传输服务。它弥补了网络层(如 IP 协议)的不可靠性,通过封装复杂的控制逻辑,为上层应用屏蔽了底层网络的细节差异。无论是浏览网页、发送邮件还是视频通话,都依赖传输层协议确保数据准确、有序地到达目的地。

传输层的核心作用

传输层的设计目标是解决 “端到端数据传输的可靠性与效率” 问题,具体功能包括:

  1. 可靠传输保障
    网络层(如 IP 协议)仅负责将数据包从源地址传送到目标地址,不保证数据不丢失、不重复、按序到达。传输层通过差错控制(如校验和)、重传机制(如超时重传)和顺序控制(如序号与确认号),确保数据完整、有序地交付给应用层。
  2. 流量与拥塞控制
    根据接收方的处理能力(流量控制)和网络负载情况(拥塞控制),动态调整发送速率,避免接收方缓冲区溢出或网络因过载而瘫痪。
  3. 端到端通信标识
    通过 “端口号” 区分同一设备上的不同应用程序(如 HTTP 用 80 端口,HTTPS 用 443 端口),确保数据能准确交付给目标应用。
  4. 两种服务模式
    提供面向连接(如 TCP)和无连接(如 UDP)两种服务,满足不同应用对可靠性和效率的需求(如文件传输需要可靠传输,视频通话更注重实时性)。

传输层与网络层的本质区别

传输层与网络层均涉及 “数据传输”,但核心定位截然不同:

维度 网络层(如 IP 协议) 传输层(如 TCP/UDP)
控制范围 由运营商管理的路由器等中间设备 完全运行在用户设备(主机、服务器)
用户控制权 用户无法直接干预(依赖网络配置) 用户可通过协议参数(如超时时间)调整
核心目标 实现 “主机到主机” 的数据包转发 实现 “应用到应用” 的端到端数据传输
可靠性保障 不提供(可能丢包、乱序) 可提供(如 TCP 的重传、排序机制)

简言之,网络层解决 “数据如何从 A 主机到达 B 主机”,而传输层解决 “数据如何从 A 主机的应用程序准确交付到 B 主机的应用程序”。

核心传输层协议:TCP 与 UDP

传输层的两大核心协议是TCP(传输控制协议)UDP(用户数据报协议),两者基于不同设计理念,适用于不同场景。

TCP:面向连接的可靠传输协议

TCP 是一种面向连接、可靠、有序的传输协议,通过三次握手建立连接、四次挥手释放连接,并采用多种机制确保数据传输的可靠性。

核心特性:
  • 面向连接:通信前必须通过 “三次握手” 建立连接,通信结束后通过 “四次挥手” 释放连接,类似打电话的 “拨号 - 通话 - 挂断” 流程。
  • 可靠传输:
    • 序号与确认号:为每个数据包编号,接收方通过确认号告知发送方已收到的数据,未确认的数据包会被重传。
    • 超时重传:发送方若超时未收到确认,自动重传数据包。
    • 校验和:检测数据包是否在传输中被损坏,损坏则丢弃并要求重传。
  • 流量控制:通过 “滑动窗口” 机制,根据接收方的缓冲区大小调整发送速率,避免接收方过载。
  • 拥塞控制:通过慢启动、拥塞避免等算法,感知网络拥塞并降低发送速率,防止网络瘫痪。
TCP 原语(编程接口核心操作):
  • SOCKET:创建一个通信端点(类似 “电话听筒”),作为应用程序与传输层的接口。
  • BIND:将套接字与本地 IP 和端口绑定(如服务器绑定 80 端口供 HTTP 使用)。
  • LISTEN:服务器端进入监听状态,为接收客户端连接请求分配队列(如允许同时等待 10 个连接)。
  • ACCEPT:服务器端被动接受客户端的连接请求,建立新的连接套接字(每个连接对应一个套接字)。
  • CONNECT:客户端主动向服务器发起连接请求(触发三次握手)。
  • SEND/RECEIVE:发送或接收数据(TCP 会确保数据有序、完整交付)。
  • CLOSE:关闭连接(触发四次挥手,释放资源)。
适用场景:
  • 对可靠性要求高的场景,如文件传输(FTP)、网页浏览(HTTP/HTTPS)、邮件发送(SMTP)等。

UDP:无连接的高效传输协议

UDP 是一种无连接、不可靠的传输协议,它直接封装数据并发送,不建立连接,也不提供重传、排序等机制,追求传输效率最大化。

核心特性:
  • 无连接:通信前无需建立连接,直接发送数据,类似 “写信”—— 写完就寄出,不确认对方是否准备好。
  • 不可靠传输:
    • 不保证数据到达:数据包可能丢失,且不会重传。
    • 不保证顺序:数据包可能乱序到达,接收方需自行处理。
    • 仅提供校验和:可检测损坏的数据包,但损坏后直接丢弃,不通知发送方。
  • 高效轻量:头部仅 8 字节(TCP 头部至少 20 字节),协议开销小,传输速度快。
适用场景:
  • 对实时性要求高于可靠性的场景,如视频通话(延迟敏感,少量丢包不影响观感)、语音通话(UDP+RTP 协议)、DNS 查询(快速响应优先)、游戏数据传输(实时交互比完整传输更重要)。

TCP 与 UDP 的对比总结

特性 TCP UDP
连接方式 面向连接(三次握手建立连接) 无连接(直接发送)
可靠性 可靠(保证无丢失、无重复、按序) 不可靠(可能丢包、乱序)
传输效率 较低(协议开销大,重传耗时) 较高(轻量,无额外控制开销)
适用场景 文件传输、网页浏览、邮件等 视频通话、游戏、DNS 查询等
头部大小 20-60 字节 8 字节
拥塞控制 支持 不支持

选择 TCP 还是 UDP,核心取决于应用的需求:“是否能接受数据丢失?” 若不能(如文件传输),选 TCP;若能(如视频通话),选 UDP 以换取更高效率。

传输层简析

传输层架构在网络层之上,应用层之下,需要提供高效、可靠地数据传输服务,同样提供了有连接和无连接的服务,且与网络层对于有连接和无连接的操作也相当类似,两者不同的是传输层的代码是完全运行在用户的机器上,而网络层的代码主要是运行在由运营商操作的路由器上,用户对于网络层并没有真正的控制权,只能在网络层之上再加一层传输层来提高网络的服务质量

作用

负责确保各包以发送的顺序接收,并保证没有数据丢失或破坏,如果丢包,传输层会请求发送方重传这个包

协议

传输层协议主要是TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)两种

TCP面向连接的协议

面向连接的传输服务是可靠的传输服务,而且可提供拥塞控制和差错控制功能,支持对丢失或破坏的数据进行重传,并按照发送时的顺序进行传送

TCP原语
  • SOCKET 创建一个通信端点
  • BIND 为套接字分配地址,将套接字与一个本地地址关联
  • LISTEN 为入境呼叫分配队列空间
  • ACCEPT 服务端被动创建一个连接
  • CONNECT 客户端主动创建一个连接
  • SEND 发送数据
  • RECEIVE 接收数据
  • CLOSE 释放连接

UDP无连接的协议

无连接的传输服务在提供服务前不需要建立专门的传输,直接向目的节点发送数据,不管是否有可传输的通道,只提供不可靠的传输服务,允许接收方检测被破坏的包,但不保证这些包以正确的顺序传送

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10