TCP三次握手四次挥手抓包解析
来源:互联网 发布:网络优化教程 编辑:程序博客网 时间:2024/05/24 03:19
TCP三次握手四次挥手抓包解析
上次面试,被问到TCP 三次握手,是怎么回事,直至呜呜,只说出了个大概的意思,甚是不好意思;
因没有实际根据抓包分析来解读TCP三次握手的过程,鉴于此,周末写了个TCP服务器、客户端通信程序(),将服务器下载到开发板,客户端PC 机上运行,通过wireshark抓包工具来抓取TCP的通信过程。
下图为TPC通信三次握手和四次挥手抓包截图:黄色部分为三次握手后抓取的通信数据包:hellobbbbb
从上图中,可知wireshark抓取到的数据封包列表(Packet List Pane) 格式:
封包列表的面板中显示,编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。 你可以看到不同的协议用了不同的颜色显示。
(高亮代表详细信息在下方说明)
封包详细信息 (Packet Details Pane)
这个面板是我们最重要的,用来查看协议中的每一个字段。各行信息分别为
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
参考此博文:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html
下图为客户端,服务器通信收发的数据:
下面用TCP协议,客户端(PC机)向服务器(开发板)发送数据,通过wireshark抓包的方式,解析TCP协议3次握手的过程:
第1次握手:No.522
第二次握手:No.523
第三次握手:No.524
TCP的三次握手,大致可以这么理解:假设PC_B(Seriver) 、PC_A(Client)
握手1) PC_A:向服务器发送SYN报文,说明我要开始建立链接了; SYN = 1; Seq = X;
握手2) PC_B:服务器收到客户端的请求后,给客户端发送SYN报文,以及应答数据(收到的序号+1); SYN = 1; ACK = 1; Seq = Y; ack = X+1;
握手3) PC_A:客户端再次向服务器发送SYN报文,此次表示确认收到的数据; ACK = 1; Seq = X+1; ack = Y+1;
故:确认的应答数据ack = 收到的序号Seq + 1;
发送的序号Seq = 收到ack,若没有收到ack应答数据,则发送随机数;
【握手其实就是确保客户端链接服务器时,确保链接成功:客户端给服务器发送SYN 里面包含序号,服务器收到后将序号+1作为应答数据,以及服务器端的自己的序号一块发给客户端,客户端收到后,先确认自己的请求数据是否正确,若正确,则在将收到的服务器的序号+1作为应答数据,发给服务器确认】
【一般要发送报文时,确认序号为收到的序号+1; 序号为收到的确认序号 】
三次握手的流程图,如下所示:
- TCP三次握手四次挥手抓包解析
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- wireshark抓包图解 TCP三次握手/四次挥手详解
- 4.设置bootargs启动时挂载
- springmvc+tomcat图片上传后如何立即刷新出来
- Unity Shader入门精要 阅读笔记 前言
- 【分治法】快速排序及C++代码
- Unity Shader入门精要 阅读笔记一
- TCP三次握手四次挥手抓包解析
- 心得体会
- MVP请求
- Python 把序列转换为元组的函数tuple
- STM32F407VE单片机使用I2C接口操作内部控制芯片为RA8816的FYD12864-1001A型的12864液晶
- ACM训练周末总结—11月5日
- React native刷新,类似android的广播
- 剑指offer 复杂链表的复制
- 【数据库事务】--事务传播子方法事务失效(老张)