007_wireshark分析TCP的三次握手和四次断开

要想进行抓包分析,必须先了解TCP的原理。这里介绍了TCP的建立连接的三次握手和断开连接的四次握手。

一、前言:介绍三次握手之前,先介绍TCP层的几个FLAGS字段,这个字段有如下的几种标示

SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。

二、三次握手的步骤

(1)第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

(2)第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

(3)第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。
 完成三次握手,主机A与主机B开始传送数据。
从抓包分析中可以很清晰的看到TCP三次握手,下图就是完整的三次握手,客户端41826端口和服务器的80端口建立了连接

 

三、tcp断开连接的四次握手

(1)tcp断开连接有两种方式,第一种是正常的四次握手断开的,第二种是RST异常断开的.

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

(2)用抓包来看断开连接的四次握手

下图中的四个箭头就是标准的四次握手了。

1.首先服务器80端口想41826端口发出FIN的断开连接请求
2.然后第二个箭头41826收到请求之后想服务器80端口回复了一个ACK
3.接着第三个箭头41826向服务器80端口发送断开请求FIN
4.最后第四个箭头,服务器80向客户端发送断开的回复ACK
这样四次握手之后,服务器和客户端都确认了断开连接,可以看到断开连接是双向的。

(3)RST异常关闭连接

有时候也会出现异常断开连接的情况,也就是RST,比如说下图,服务器80向客户端32875发送断开请求FIN,客户端也通过这条链路回复了ACK,但是此时还有数据需要发送,所以没有急着回复FIN,而是先将get请求发送出去,发送了get请求之后再发送的断开请求FIN,但是此时服务器不知道什么原因在没有确认客户端的确认前就断开了,所以在接到get请求之后,返回了一个RST,异常断开了这条链路。

Reference:

https://osqa-ask.wireshark.org/questions/20423/pshack-wireshark-capture

TCP三次握手wireshark抓包分析{https://blog.csdn.net/u014530704/article/details/78842000}

  

  

  

原文地址:https://www.cnblogs.com/itcomputer/p/10278004.html

时间: 2024-10-14 11:41:27

007_wireshark分析TCP的三次握手和四次断开的相关文章

TCP/IP 三次握手,四次断开

TCP/IP 三次握手,四次断开 一.TCP报文格式                     TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷 本. 下面是TCP报文格式图: 图1-1 TCP报文格式 上图中有几个字段需要重点介绍下:1.序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.2.确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效(Ack=Seq+1).3.标志位:共6个,即URG.ACK.PSH.R

抓包分析TCP的三次握手和四次握手

问题描写叙述: 在上一篇<怎样对Android设备进行抓包>中提到了,server的开发者须要我bug重现然后提供抓包给他们分析.所以抓好包自己也试着分析了一下.发现里面全是一些TCP协议和HTTP协议.所以要想进行抓包分析,必须先了解TCP的原理.这里介绍了TCP的建立连接的三次握手和断开连接的四次握手. 问题分析: 1.TCP建立连接的三次握手 1.1前言:介绍三次握手之前,先介绍TCP层的几个FLAGS字段,这个字段有例如以下的几种标示 SYN表示建立连接, FIN表示关闭连接. ACK

简析TCP的三次握手与四次断开

TCP/IP及OSI模型 TCP/IP OSI 功能 TCP/IP协议族 应用层 应用层 为应用软件提供服务 Telnet.FTP.DNS.HTTP.DNS.SMTP 表示层 处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等   会话层 维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等   传输层 传输层(数据段Segmen) 向用户提供的端到端服务,处理数据报错误,数据包次序,向高层屏蔽了下层数据通讯细节 TCP.UDP 网络层 网络

使用 WireShark 分析 TCP/IP 三次握手 和 四次挥手

TCP 三次握手 示意图 Wireshark 抓包注意事项 为了演示一个TCP三次握手建立连接的过程,我们通过 Chrome 访问一个网页. 已知 HTTP 协议就是建立在TCP链接上的 比如访问以下的网址: http://toutiao.newmedia139.net/ 通过 Cmd 的 ping 命令获取 这个网站对应的 IP地址 183.136.236.13 确定 这个IP 有一个非常重要的好处,就是我们只需要 电脑 -> 网站 的数据包 网站->电脑 的数据包 所以,可以使用Wires

抓包分析TCP的三次握手和四次分手

一:三次握手 三次的握手的过程是: 1.由发起方HostA向被叫方HostB发出请求报文段,此时首部中的同步位SYN=1,同时选择一个序列号seq=x.TCP规定,SYN报文(即SYN=1的报文段)不能携带数据,但要消耗一个序列号.这时,TCP客户端进程进入SYN-SENT(同步已发送)状态. 2.HostB收到连接请求报文后,如同意建立连接,则向HostA发送确认.在确认报文段中应把SYN和ACK都置为1,确认号是ack=x+1,同时也为自己选择一个序列号seq=y.请注意这个报文段也不能携带

TCP的三次握手,四次断开

1.三次握手 1)服务器处于LISTEND,客户端发来请求syn=1.ack=0,  状态为:SYN_SEND 2)服务端收到请求,并返回syn=1.ack=1,  状态为SYN_RCVD 3)确立连接 ESTABLISHED   ESTABLISHED 2.四次断开 1)客户端主动发起断开请求 发送FIN=1,ack=0包 状态为FIN_WAIT1 2)服务端收到客户端的请求 回复ACK包 状态为CLOSE_WAIT 3)服务端发送给客户端再次确认断开 FIN 状态为LAST_ACK , 客户

TCP的三次握手与四次释放

TCP的三次握手与四次释放 一.名词解释     序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文段中的第一个字节的数据编号.    确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号:序列号表示报文段携带数据的第一个字节的编号:而确认号指的是期望接收到下一个字节的编号:因此当前报文段最后一个字节的编号+1即为确认号.   

TCP的三次握手与四次挥手

最近在看一些Tcp网络编程方面的内容,不免涉及客户端和服务器交互的内容,其中最经典的应该是TCP的三次握手和四次挥手了. 背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据.IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程.而端到端的通信才应该是应用进程之间的通信. UDP,在传送数据前不需要先建立连接,远地的主机在

TCP链接的三次握手与四次断开

一直总觉得三次握手和四次断开,之前老师讲的有问题,经过自己再次琢磨,发现是的,老师讲的没毛病,这次也把自己的理解总结一下,让对这个知识模糊的小伙伴再换种思路去理解 首先看一下TCP三次握手发生了哪些: TCP三次握手 这是第一次用画图工具画图,有点low,细节处理的不好见谅 这是第一次设计三次握手的过程,实际上发生了四件事,其次你要清楚TCP链接建立的标准是双向的,就像谈恋爱表白一样,你必须俩人相互喜欢才能表白成功啊 白话版:TCP 链接建立就像谈恋爱一样,互相表白才是表白成功背景条件:某专业