三次握手、四次挥手(模拟器模拟)

tcp 三次握手、四次挥手

先用模拟器进行实验

一、网络拓扑

在这里插入图片描述

一个重要的总结:在三次握手和四个挥手过程中,虽然这个时候载荷为0,但是会对上一个包进行确认,ack为上一个包的syn+1,但是在实际业务发送过程中,如果载荷为0,那么他的确认直接为syn的序列号。(还不够准确)

二、抓包如下,我们进行逐包分析

在这里插入图片描述

三次握手的过程

第一个包:SYN包,由于抓包工具的优化,这里序列号显示的为相对序列号,也显示真实序列号,可以看到第一个SYN包的syn标志位置位,syn序列号位6509、ack序列号为0
在这里插入图片描述

第二个包:SYN\ACK包,这里可以看到syn序列号为6589(这是对端回复的第一个包),ack为上一个包syn序列号+1=6510。同时syn\ack标志位置位。

在这里插入图片描述

第三个包:ack包,三次握手的最后一个包,所以只有ACK置位了,当然之后的每个包都会ack置位,这里syn序列号为6510(可以理解为,上一个包回复ack序列号来请求到这个包),ack序列号为上一个包的syn序列号+1=6590 。
在这里插入图片描述

数据交互过程

请求数据过程:这里是在ack发送完之后,紧接着又发送的一个包,所以可以看到syn、ack序列号与前一个包保持一致,这里带了一个载荷,也就是数据长度(159bytes),这里扩展先(IP包头固定为20byte、TCP包头固定为20byte、UDP包头固定为8byte),所以在ip包头中可以看到载荷长度为199byte。所以在tcp回复过程中希望下一个包是要159+6510序列号的。
在这里插入图片描述
在这里插入图片描述

回复数据的包过程:和请求的类似,他会回复syn6590,ack回复6669的序列号,同时他也携带了307byte的载荷。

在这里插入图片描述

ack确认回复的过程:这里是客户端给服务端确认收到了回复,所以会发送ack ,syn序列号就是6669,ack就是6897。

在这里插入图片描述

四次挥手阶段

FIN\ACK包:和上一个包一样syn6669、ack6897
在这里插入图片描述

ack:要确认上一个包,所以ack 为syn+1=6670,syn 6897。

在这里插入图片描述

FIN\ACK:与上一个包一同发出,所以syn、ack序列号一致。

在这里插入图片描述

ACK:对上一个包的确认所以ack会是上一个包syn+1,syn是上一个包的ack

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值