目录
1--运输层概述
2--端口号、复用与分用的概念
3--UDP和TCP的对比
4--TCP的流量控制
5--TCP的拥塞控制
6--TCP超时重传时间的选择
7--TCP可靠传输的实现
8--TCP的连接建立
9--TCP的连接释放
10--TCP报文段的首部格式
1--运输层概述
运输层的任务:
为运行在不同主机上的应用进程提供直接的通信服务;
运输层为应用层提供了两种不同的运输协议:
面向连接的 TCP 和无连接的 UDP 协议;
2--端口号、复用与分用的概念
端口号:
端口号用于区分应用层的不同应用进程;
端口号只具有本地意义,用于标识本计算机应用层中的各进程;
复用是针对发送方的,分用是针对接收方的;
复用可以细分为 UDP 复用和 TCP 复用,UDP 和 TCP 在协议字段上不同,即 UDP 的协议字段是 17,TCP 的协议字段是 6;
分用也可以细分为 UDP 分用和 TCP 分用,协议字段也分别为 17 和 6;
应用层中,RIP、DNS、TFTP、SNMP 和 DHCP 等协议在运输层中使用 UDP 协议;
应用层中,SMTP、FTP、BGP、HTTP 和 HTTPS 等协议在运输层中使用 TCP 协议;
3--UDP和TCP的对比
UDP:全称是用户数据包协议(User Datagram Protocol);
TCP:全称是传输控制协议(Transmission Control Protocol);
UDP 协议和 TCP 协议具有以下不同:
① UDP 是无连接的,TCP是面向连接的:
UDP 随时可以发送数据,无需建立连接;
TCP 发送数据需要通信双方建立连接和释放连接,其中需要三次握手建立连接和四次挥手释放连接;
② UDP 支持单播、多播、广播等方式,TCP 仅支持单播;
③ UDP 协议面向应用报文,TCP 协议面向字节流;
④ UDP 协议是不可靠的,TCP 协议是可靠的;
UDP 向上层提供无连接不可靠传输服务,会发生丢失、误码等情况,适用于视频会议等实时应用;
TCP 向上层提供面向连接的可靠传输服务,不会发送丢失、误码等情况,适用于文件传输等要求可靠传输的应用;
⑤ UDP 首部仅 8 字节,TCP 首部最小 20 字节,最大 60 字节;
4--TCP的流量控制
TCP 协议的接收方利用滑动窗口机制可以实现对发送方的流量控制;
TCP 协议通过滑动窗口机制、超时重传机制和接收方的接收窗口大小严格控制发送方的发送数据;
TCP 协议规定,当接收方的接收窗口调整为 0 时,发送方的发送窗口会被调控为 0,同时发送方会启动持续计时器;
当持续计时器超时时,发送方会发送零窗口探测报文,探测接收方最新的接收窗口,并相应地调控发送方自己的发送窗口;
5--TCP的拥塞控制
TCP 协议通过慢开始、拥塞避免、快重传和快恢复等方法实现拥塞控制;
① 慢开始:
慢开始算法在门限 ssthresh 前,拥塞窗口(发送方的发送窗口)每次增加上一次发送的拥塞窗口大小(1→2→4→8→16);
② 拥塞避免:
拥塞避免算法发生在门限 ssthresh 后,拥塞窗口(发送方的发送窗口)每次线性增加1;
当重传计时器超时时(认为发生了拥塞),门限 ssthresh 会更新为发生拥塞时拥塞窗口的一半,同时拥塞窗口会减少为1,重新开始执行慢开始算法;
③ 快重传:
当发送方收到 3 个连续的重复确认后,发送方会立即将相应的报文段重传;
④ 快恢复:
当收到 3 个重复确认时(快重传),TCP协议会将门限 ssthresh 更新为当前拥塞窗口的一半,同时拥塞窗口也更新为 ssthresh 的值,即去除了慢开始阶段,直接快速从拥塞避免阶段开始发送数据;
6--TCP超时重传时间的选择
7--TCP可靠传输的实现
TCP 协议基于以字节为单位的滑动窗口来实现可靠传输;
只有发送方收到接收方的 ACK 确认信号(且是某一个字节前所有字节都收到ACK信号),发送方的发送窗口才能向前滑动;
8--TCP的连接建立
TCP 协议使用三报文握手建立连接:
客户发送 TCP 连接请求(第一次握手);
服务器发送针对 TCP 连接请求的确认(第二次握手);
客户发送针对 TCP 连接请求的确认的确认(第三次握手);
第三次握手可以防止已失效的连接请求报文段突然传送到 TCP 服务器,导致 TCP 服务器处于数据接收阶段的错误;
9--TCP的连接释放
TCP 协议使用四报文挥手释放连接:
客户发送 TCP 连接释放(第一次挥手);
服务器发送 TCP 普通确认(第二次挥手);
服务器发送 TCP 连接释放(第三次挥手);
客户发送 TCP 普通确认(第四次挥手);
客户进行第四次挥手后,处于时间等待状态(持续 2MSL),可以防止由于第四次挥手信号丢失,导致服务器处于最后确认阶段的问题;
10--TCP报文段的首部格式
一个 TCP 报文段由首部和数据载荷两部分构成,TCP 的全部功能体现在首部中各个字段的作用;