TCP的三次握手

Zss 发表于:

总结一下TCP的三次握手的过程,以及中间相关的标志位的含意,譬如:seq,ack,syn等等

SYN – 创建一个连接

FIN –  终结一个连接

ACK – 确认接收到的数据

seq-sequence number, next seq是根据当前的seq和包的大小决定的

ssh是基于TCP来传输数据的,所以实际抓包来看一下这个过程,当我ssh到服务器的时候,开始tcp的三次握手的连接

第一个数据包:从我的客户端开始发起建立连接到服务器(此时的服务器处于监听的状态),相当于一个通知

第二个数据包:服务器收到建立连接的请求返回到客户端确认连接(服务端确定客户端的连接)

第三个数据包:客户端发送到服务端的确认连接(客户端确认服务端的连接)

 

第一次握手:

seq为随机选取的一个序列号

可以从SYN为1其余的标志位均为0来判断出这是第一次握手,其中seq显示的为相对编号,数据包详细的显示确实76ab56a2,这个是绝对编号,

可以使用相对路径和绝对路径来理解,此时seq的初始值尾数为a2发送给服务器

 

第二次握手:

可以在第二次的包中看到第一次的seq(a2)被+1作为ack(a3),相对编号和绝对编号都有被+1,再次随机生成seq(0c21fb8e)返回给客户端

第三次握手:

将第二次的ack值作为第三次的seq(a3),将第二次的seq+1作为ack(8e+1=8f)

客户端:SYN=0 —>:服务端

客户端:<–  SYN=1  ACK =1:服务端

客户端:ACK=1 –> :服务端