目录
快速开始
一、SYN、ACK、seq、ack
SYN=1:表示这是一个同步请求,在连接时有用
ACK=1:表示确认号有效
seq:相对序号,发送的数据的第一个字节的编号
ack:确认号,告知对方我已经收到你ack-1个字节,请发送ack号开始的数据
seq是对对方ack的回应
ack是对对方seq的确认,
ack从另一个角度理解是告诉对方目前已经收到了ack-1个字节
二、数据分片和组装
lxy:
客户端发送http请求一个大文件
服务器大块数据 -> 服务器应用层 -> 服务器传输层对数据分片(分片1, 分片2,…) -> …. -> 客户端传输层对数据组装(分片1, 分片2,…)大块数据 -> 客户端应用层
从wearShark看:
http:客户端的request请求
tcp
tcp
tcp
http:服务端的response响应
序号、确认号
一、再来看下相关概念
ACK(Acknowledgment)
当ACK=1时,确认号字段才有效
SYN(Synchronization)
当SYN=1、ACK=0时,表明这是一个建立连接的请求
当SYN=1、ACK=1时,表明对方同意建立连接
SYN=1代表这是个同步请求,第一次发数据给对方
其它情况下SYN=0
序号(Sequence Number)
占4字节
首先,在传输过程的每一个字节都会有一个编号
在建立连接后,序号代表:这一次传给对方的TCP数据部分的第一个字节的编号
确认号(Acknowledgment Number)
占4字节
在建立连接后,确认号代表:期望对方下一次传过来的TCP数据部分的第一个字节的编号
二、相对序号、确认号
三、原生序号、确认号
序号、确认号变化流程
一、流程图 - 简洁
1、连接操作 - 序号、确认号变化
2、数据收发操作 - 序号、确认号变化
3、抓包
二、流程图 - 实际
行者常至,为者常成!