- TCP传送的数据单元称为报文段
- TCP报文段用途包括运载数据建立连接释放连接和应答
- 报文段分为首部和数据两部分
- 整个TCP报文段封装在IP数据报的数据部分
- 首部的前20B是固定的
- TCP首部最短为20B
- 首部后可增加选项长度为4N字节
- 选项长度必须是4B的整数倍
- 发送缓存用于暂时存放
- 发送应用程序传送给发送方 TCP 准备发送的数据
- TCP 已发送但尚未收到确认的数据
- 接收缓存用于暂时存放
- 按序到达但尚未被接收应用程序读取的数据
- 不按序到达的数据
TCP 提供全双工通信, 允许通信双方的应用进程在任何时候都能发送数据, 为此 TCP 连接的两端都设有发送缓存和接收缓存, 用来临时存放双向通信的数据.
TCP 是面向字节流的, 虽然应用程序和 TCP 的交互是一次一个数据块 (大小不等), 但 TCP 把应用程序交下来的数据仅视为一连串的无结构的字节流。
TCP 和 UDP 在发送报文时所采用的方式完全不同。UDP 报文的长度由发送应用进程决定, 而 TCP 报文的长度则根据接收方给出的窗口值和当前网络拥塞程度来决定。
TCP报文段首部中,源端口和目的端口。各占 2B 。分别表示发送方和接收方使用的端口号。
Q: TCP 报文段首部中序号占多少字节,TCP 序号的范围是多少?
A: TCP 序号占 4 字节,TCP 序号的范围是 0 到
Q: TCP 报文段首部中数据偏移占多少字节,数据偏移的最大值为多少?
A: TCP 数据偏移占 4 个字节。TCP 数据偏移的最大值为 15。
Q: TCP 检验和字段的长度是多少?
A: 2 字节 (2B)。
Q: TCP 检验和字段的计算范围包括哪些部分?
A: TCP 检验和字段的计算范围包括 TCP 首部和数据部分。
Q: 在计算 TCP 检验和时,是否需要添加伪首部?
A: 是的,需要添加 12 字节的伪首部。
Q: TCP 伪首部的内容与 UDP 伪首部有什么区别?
A: TCP 伪首部与 UDP 伪首部基本相同,只是协议字段的值为 6,长度字段的值为 TCP 报文段的长度。
Q: TCP 检验和的计算方法与 UDP 检验和的计算方法相同吗?
A: 是的,TCP 检验和的计算方法与 UDP 检验和的计算方法相同。
Q: 超时事件和收到 3 个冗余 ACK,哪个意味着网络拥塞程度更严重?
A: 超时事件意味着网络拥塞程度更严重。超时事件发生时,说明网络可能已经拥塞到连 ACK 报文段都无法传输,发送方只能等待超时后重传数据。为了最大限度地抑制数据发送量,cwnd 被置为 1。
Q: 收到 3 个冗余 ACK 时,cwnd 减半的原因是什么?
A: 收到 3 个冗余 ACK 时,说明网络虽然拥塞,但至少还有 ACK 报文段能被正确交付。为了稍微抑制一下发送的数据量,cwnd 减半。