发布网友 发布时间:2024-09-26 02:09
共1个回答
热心网友 时间:2024-12-02 03:34
前言TCP位于传输层,是一个可靠的连接服务,为了准确的传输数据,TCP采用了三次握手,四次挥手策略. 这里讲的是四次挥手(也叫四次握手)。
TCP首部格式TCP首部数据格式,通常是20个字节再加可变字段,其中有6个特殊的标识bit,分别是URG,ACK,PSH,RST,SYN,FIN等,位置见下图
| 标识位 | 含义 | | --- | --- | | URG | 紧急指针有效 | | ACK | 确认序号有效 | | PSH | 接收方应该尽快将这个报文段交给应用层 | | RST | 复位,关闭异常连接 | | SYN | 同步序号用来发起一个连接 | | FIN | 发端完成发送任务 | ...
本文中用到的标识位是 ACK FIN, 使用的时候bit位设置为1,否则默认为0. 也用到了32位序号(Sequence number)和32位确认序号(Acknowledgment number),这里是用来存放双发的初始序列号(ISN)的.
大写的ACK FIN代表标志位, 小写的seq代表Sequence number, 小写的ack代表Acknowledgment number,
四次挥手通俗的说以客户端先断开的话
客户端: 我数据发送完了,可以关闭连接了.
服务端: 收到了,等我发送完数据.
服务端: 我数据发送完了,我也可以关闭连接了.
客户端: 收到了.
随后服务端关闭连接, 客户端等指定时间后也关闭了连接.
正常的说以客户端先断开为例:
在四次挥的过程中,会使用ACK FIN,seq和ack.
第一次握手(客户端): 发送请求,TCP中设置FIN=1 ,seq设置为本机的ISN.
第二次握手(服务端): 收到客户端的数据之后,发送请求,TCP中设置ACK=1 ,seq设置为本机的ISN,并将ack设置为客户端的ISN+1
第三次握手(服务端): 等服务端数据传送完成之后, 发送请求, TCP中设置ACK=1 FIN=1, seq设置为本机的另一个ISN(叫ISN2) ,ack设置为客户端的ISN+1
第四次握手(客户端): 客户端收到返回信息后, 发送请求, TCP中设置ACK=1 , seq设置为本机的ISN+1 ,ack设置为服务器的ISN2+1
服务端关闭连接,客户端等待2MSL时间之后再次关闭.
图如下
示例如下 20.1.0.1是我的电脑,20.1.0.128电脑上的一个虚拟机
在128上使用tcpmp监听ens33(虚拟机网卡)的80(nginx)端口
tcpmp-iens33port80andhost20.1.0.1-S-n在1电脑上使用telnet请求20.1.0.128的80端口
telnet20.1.0.12880之后Ctrl+C之后
tcpmp监听日志如下
Ctrl+C的数据
10:33:19.377458IP20.1.0.1.58633>20.1.0.128.http:Flags[P.],seq2066280967:2066280968,ack3607501457,win2053,length1:HTTP10:33:19.377573IP20.1.0.128.http>20.1.0.1.58633:Flags[.],ack2066280968,win229,length010:33:19.377855IP20.1.0.128.http>20.1.0.1.58633:Flags[P.],seq3607501457:3607501766,ack2066280968,win229,length309:HTTP:HTTP/1.1400BadRequest四次挥手的数据
10:33:19.378017IP20.1.0.128.http>20.1.0.1.58633:Flags[F.],seq3607501766,ack2066280968,win229,length010:33:19.378079IP20.1.0.1.58633>20.1.0.128.http:Flags[.],ack3607501767,win2051,length010:33:19.382138IP20.1.0.1.58633>20.1.0.128.http:Flags[F.],seq2066280968,ack3607501767,win2051,length010:33:19.382234IP20.1.0.128.http>20.1.0.1.58633:Flags[.],ack2066280969,win229,length0针对四次挥手的攻击FIN FloodRST Flood...
结束语尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
如果您喜欢我的文章,可以[关注]+[点赞]+[评论],您的三连是我前进的动力,期待与您共同成长~
作者:ZOUZDC链接:https://juejin.cn/post/7028963866063306760