[ 网络协议篇 ] TCP三次握手四次挥手深度解析

Posted _PowerShell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 网络协议篇 ] TCP三次握手四次挥手深度解析相关的知识,希望对你有一定的参考价值。

很抱歉,今天本来是要更新应急响应的,一个ctlt+z让我在暂时放弃了

8900字,直接跳回2300字,今天没法沉下心去写了。为了写出来的文章品质更高,今天暂时不更新,毕竟应急响应后续是比较难的。

目录

1. TCP报文的头

2. 三次握手过程

3. 三次握手过程(状态机)

4. 实例观察tcpdump命令

5. 从实例看三次握手过程

 6. 精品文章分享


这篇文章你如果可以认认真真一点点看完,你收获会很大。

看不懂的地方可以查看我给的传送门,相信你看完之后会学到很多,不仅仅是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. 精品文章分享

[ 网络模型篇 ]大白话告诉你什么是OSI七层模型

[ 网络协议篇 ] 一篇文章让你掌握神秘的 ACL

[ 网络协议篇 ] 一篇文章让你掌握神秘的 NAT

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP(一)

[ 应急响应 ]服务器(电脑)受到攻击该如何处理?(三)

睡觉:

 

以上是关于[ 网络协议篇 ] TCP三次握手四次挥手深度解析的主要内容,如果未能解决你的问题,请参考以下文章

Linux疑难杂症解决方案100篇(十九)-什么是TCP协议中的“三次握手,四次挥手”?带你深入探讨下

网络 之 三次握手&四次挥手 介绍

TCP/IP协议全解析 三次握手与四次挥手[转]

TCP协议三次握手与四次挥手通俗解析

TCP三次握手与四次挥手

python 网络协议-------------- tcp 三次握手 四次挥手 简述