文章目录
- 1 概述
- 2 TCP 传输控制协议
- 2.1 报文格式
- 2.2 三次握手,建立连接
- 2.3 四次挥手,释放连接
- 2.4 四种拥塞控制
- 3 扩展
- 3.1 实验演示
- 3.2 网工软考
1 概述
- 在 TCP/IP 协议簇 中有两个传输协议
- TCP:Transmission Control Protocol,传输控制协议,是面向连接的、可靠的。
- UDP:User Datagram Protocol,用户数据报协议,是面向无连接的、不可靠的。
2 TCP 传输控制协议
2.1 报文格式
参数 | 英文名 | 说明 |
---|---|---|
源端口 | Sorce Port | |
目的端口 | Destination Port | |
序号 | Sequence Number | 保证数据的可靠性 |
确认号 | Acknowlegement Number | |
首部长度 | Header Length | |
保留 | Reserved | |
控制位 | Control bits | |
窗口大小 | Window Size | 进行流量控制 |
校验和 | Checksum | |
紧急指针 | Urgent | |
可选项 | Options |
【其中,控制位有以下参数,其值为 1 时,表示启用。】
控制位 | 全称 | 描述 |
---|---|---|
URG | Urgent | 紧急。表示本报文中是否包含紧急数据 |
ACK | Acknowledgement | 确认。表示前面的字段是否有效 |
PSH | Push | 推送。表示立即将数据推送给上层 |
RST | Reset | 重置。表示是否重置连接 |
SYN | Synchronization | 同步。在建立连接时使用,用来同步序号。 ① 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段。 ② 当 SYN=1,ACK=1 时,表示对方同意建立连接。 |
FIN | Finish | 完成。表示数据已经发送完成,可以释放连接。 |
2.2 三次握手,建立连接
说明
① 序号 seq:表示本次通信的字节流序号。初始序号 x、y 是自动生成的,如上图:seq = x 表示 客户端 本次的初始序号为 x,seq = y 表示 服务器 本次的初始序号为 y。
② 确认号 ack:确认上一步的序号,并进行 + 1 (目的:表明数据包是连续的)。
③ 当 控制位 ACK = 1 时,确认号 ack 才有值。
2.3 四次挥手,释放连接
说明
① 请求释放连接 中的 x、y 为上一次通信中的值
② MSL:Maximum Segment Lifetime(最大段时长)
2.4 四种拥塞控制
拥塞控制 | 英文名 | 描述 |
---|---|---|
慢开始 | slow-start | cwnd 初始值为 1,后续按 2i 增长,如:1,2,4,8… |
拥塞避免 | congestion avoidance | cwnd 按 + 1 增长,如:1, 2, 3, 4… |
快重传 | fast retransmit | 发送方一旦收到 3 个连续的确认(ack),就将相应的报文段 立即重传 |
快恢复 | fast recovery | 既可以使用 慢开始算法,也可以使用 拥塞避免算法 |
拥塞(congestion):在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变化,这种情况就叫做 拥塞。
拥塞窗口(cwnd) 和 慢开始门限(ssthresh):
① 当 cwnd < ssthresh 时,使用 慢开始算法
② 当 cwnd > ssthresh 时,停止使用 慢开始算法 而改用 拥塞避免算法
③ 当 cwnd = ssthresh 时,既可使用 慢开始算法,也可使用 拥塞避免算法
3 扩展
3.1 实验演示
【eNSP:网络拓扑图,对接口 Ethernet 0/0/2 抓包,演示 TCP 三次握手和四次挥手】
【客户端 Client1 和 服务器 Server1 配置】
【抓包参数信息】
3.2 网工软考
【2021上半年 - 21,22】TCP使用的流量控制协议是( ),TCP头中与之相关的字段是( )。
(21)A.停等应答
B.可变大小的滑动窗口协议
C.固定大小的滑动窗口协议
D.选择重发ARQ协议
(22)A.端口号
B.偏移
C.窗口
D.紧急指针
参考答案:21=B,22=C
通过数据抓包,可以看到,窗口大小是变化的
【2019下半年 - 22】建立TCP连接时,被动打开一端在收到对端SYN前所处的状态为( )。
A. LISTEN
B. CLOSED
C. SYN RESECEIVD
D. LASTACK
参考答案:A