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

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

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

目录

1. TCP报文的头

2. 三次握手过程

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

4. 实例观察tcpdump命令

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

 6. 精品文章分享


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

看不懂的地方可以查看我给的传送门,相信你看完之后会学到很多,不仅仅是tcp三次握手四次挥手,主要是学习思路可以得到很大的提升。

TCP 的三次握手和四次挥手是大厂常见的面试考题,具有一定的水平区分度。

如果你的回答不符合面试官期待的水准,有可能就直接凉凉。

那么,之前我是分享过TCP三次握手和四次挥手的,之前我是站在一个常见面试题的角度去进行的分享,讲的比较浅。主要讲了为什么不能两次握手,半连接队列是什么,SYN Flood攻击是什么,四次挥手为什么是十四次以及12种状态机。传送门

那么这篇文章将从其他的角度来进行分享

1. TCP报文的头

要彻底掌握三次握手和四次挥手我们就需要了解TCP报文的头部结构,如下图所示:

[ 网络协议篇 ] TCP三次握手四次挥手深度解析_第1张图片

[ 网络协议篇 ] TCP三次握手四次挥手深度解析_第2张图片

需要用到的字段:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置

2. 三次握手过程

(在此不做详细讲解,可看传送门

 [ 网络协议篇 ] TCP三次握手四次挥手深度解析_第3张图片

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

(在此不做详细讲解,可看传送门

[ 网络协议篇 ] TCP三次握手四次挥手深度解析_第4张图片

4. 实例观察tcpdump命令

使用tcpdump观察如下:因为都是在本机同时运行client和server

所以命令为: tcpdump -i lo port 5555

只能监听回路lo接口,结果如下:
[ 网络协议篇 ] TCP三次握手四次挥手深度解析_第5张图片

 如图用红色圈起来的就是3次握手

但是为什么最后一次握手,为什么ack = 1,而不是369535922 呢

这是因为这里的第三次握手tcpdump显示的是相对的顺序号。

但是为了便于观察我们需要把tcpdump的顺序号变为绝对的顺序号。

命令只需要加-S(大写)便可,即:tcpdump - i lo port 5555 -S
[ 网络协议篇 ] TCP三次握手四次挥手深度解析_第6张图片

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(一)

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

睡觉:

 

你可能感兴趣的:(网络基础,p2p,linq,wpf)