[ 网络协议篇 ] TCP三次握手四次挥手深度解析
Posted _PowerShell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 网络协议篇 ] TCP三次握手四次挥手深度解析相关的知识,希望对你有一定的参考价值。
很抱歉,今天本来是要更新应急响应的,一个ctlt+z让我在暂时放弃了
8900字,直接跳回2300字,今天没法沉下心去写了。为了写出来的文章品质更高,今天暂时不更新,毕竟应急响应后续是比较难的。
目录
这篇文章你如果可以认认真真一点点看完,你收获会很大。
看不懂的地方可以查看我给的传送门,相信你看完之后会学到很多,不仅仅是tcp三次握手四次挥手,主要是学习思路可以得到很大的提升。
TCP 的三次握手和四次挥手是大厂常见的面试考题,具有一定的水平区分度。
如果你的回答不符合面试官期待的水准,有可能就直接凉凉。
那么,之前我是分享过TCP三次握手和四次挥手的,之前我是站在一个常见面试题的角度去进行的分享,讲的比较浅。主要讲了为什么不能两次握手,半连接队列是什么,SYN Flood攻击是什么,四次挥手为什么是十四次以及12种状态机。传送门
那么这篇文章将从其他的角度来进行分享
1. TCP报文的头
要彻底掌握三次握手和四次挥手我们就需要了解TCP报文的头部结构,如下图所示:
需要用到的字段:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置
2. 三次握手过程
(在此不做详细讲解,可看传送门)
3. 三次握手过程(状态机)
(在此不做详细讲解,可看传送门)
4. 实例观察tcpdump命令
使用tcpdump观察如下:因为都是在本机同时运行client和server
所以命令为: tcpdump -i lo port 5555
只能监听回路lo接口,结果如下:
如图用红色圈起来的就是3次握手
但是为什么最后一次握手,为什么ack = 1,而不是369535922 呢
这是因为这里的第三次握手tcpdump显示的是相对的顺序号。
但是为了便于观察我们需要把tcpdump的顺序号变为绝对的顺序号。
命令只需要加-S(大写)便可,即:tcpdump - i lo port 5555 -S
5. 从实例看三次握手过程
从tcpdump的数据,可以明显的看到三次握手的过程是:
第一次握手:client SYN=1, Sequence number=2322326583 —> server
第二次握手:server SYN=1,Sequence number=3573692787; ACK=1, Acknowledgment number=2322326583 + 1 —> client
第三次握手:client ACK=1, Acknowledgment number=3573692787 + 1 -->server
6. 精品文章分享
睡觉:
以上是关于[ 网络协议篇 ] TCP三次握手四次挥手深度解析的主要内容,如果未能解决你的问题,请参考以下文章