TCP
名词解释:
- Seq:序列(sequence)
- Ack:应答信号(acknowledgment)
- Sync:握手
- PSH:推送数据
- FIN:完成断开(挥手)
TCP数据包结构
建立连接:3次握手
指令标识
抓包结果
图解过程
解释
- 从Seq=0开始
- 响应过程:本次Seq=上次Ack(没有就是0),本次Ack = 上次seq + 1
通俗表述
- 快递员→你 : 有你的快递,请问在家吗?
- 你→快递员:在家,送过来吧
- 快递员→你:好的
连接中:数据传输
抓包
图解过程
解释
- 从Seq=1,ack=1 开始
- 响应过程:本次Seq=上次Ack,本次Ack = 上次seq + 上次Len
断开连接:4次挥手
指令表述
抓包
图解
解释
- 假设从Seq=1,Ack=1 开始(连接后未传送数据)
- 响应过程:本次Seq=上次Ack,本次Ack = 上次Seq + 1(实际不管从Seq和ACK到多少也是遵从这个逻辑)
确认过程:都是Ack = 上次Seq + 1(如果是传送中就是+Len),Seq = 上次Ack
通俗表述
- 男→女:我们分手吧?
- 女→男:好,等下我把你以前的东西都找出来给你
- 女→男:你的东西都给你了,再见
- 男→女:再见
TCP 特点
缺点:
- 对头阻塞
- 客户端大量端口被占用:服务端最后的ack未给到客户端
- 慢启动
- 粘包
优点:
实时性好
滑动窗口,对头阻塞(可靠,能保证顺序)
- 通过窗口大小,进行拥塞控制
有发送和接收缓存区
粘包:(流量控制)