Wireshark下TCP三次握手四次挥手

一. TCP/IP协议族

TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能。包含以下四个层次:

1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

2. 网络层,也称作互联网层,处理分组在网络中的活动,例如分组的选路。网络层协议包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

3. 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。他所作的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必须的可靠性必须由应用层来提供。

4. 应用层负责处理特定的应用程序细节。包括Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传送协议)以及SNMP(简单网络管理协议)等。

wireshark抓到的包与对应的协议层如下图所示:

1. Frame:   物理层的数据帧概况

2. Ethernet II: 数据链路层以太网帧头部信息

3. Internet Protocol Version 4: 互联网层IP包头部信息

4. Transmission Control Protocol:  传输层的数据段头部信息,此处是TCP

5. Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议

二. TCP协议

TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包成报文段,它发送后启动一个定时器,另一端收到的数据进行确认、对失序的数据重新排序、丢弃重复数据。

TCP的特点有:

1. TCP是面向连接的运输层协议

2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的

3. TCP提供可靠交付的服务

4. TCP提供全双工通信。数据在两个方向上独立的进行传输。因此,连接的每一端必须保持每个方向上的传输数据序号。

5. 面向字节流。面向字节流的含义:虽然应用程序和TCP交互是一次一个数据块,但TCP把应用程序交下来的数据仅仅是一连串的无结构的字节流

TCP报文首部,如下图所示:

1. 源端口号:数据发起者的端口号,16bit

2. 目的端口号:数据接收者的端口号,16bit

3. 序号:32bit的序列号,由发送方使用

4. 确认序号:32bit的确认号,是接收数据方期望收到发送方的下一个报文段的序号,因此确认序号应当是上次已成功收到数据字节序号加1。

5. 首部长度:首部中32bit字的数目,可表示15*32bit=60字节的首部。一般首部长度为20字节。

6. 保留:6bit, 均为0

7. 紧急URG:当URG=1时,表示报文段中有紧急数据,应尽快传送。

8. 确认比特ACK:ACK = 1时代表这是一个确认的TCP包,取值0则不是确认包。

9. 推送比特PSH:当发送端PSH=1时,接收端尽快的交付给应用进程。

10. 复位比特(RST):当RST=1时,表明TCP连接中出现严重差错,必须释放连接,再重新建立连接。

11. 同步比特SYN:在建立连接是用来同步序号。SYN=1, ACK=0表示一个连接请求报文段。SYN=1,ACK=1表示同意建立连接。

12. 终止比特FIN:FIN=1时,表明此报文段的发送端的数据已经发送完毕,并要求释放传输连接。

13. 窗口:用来控制对方发送的数据量,通知发放已确定的发送窗口上限。

14. 检验和:该字段检验的范围包括首部和数据这两部分。由发端计算和存储,并由收端进行验证。

15. 紧急指针:紧急指针在URG=1时才有效,它指出本报文段中的紧急数据的字节数。

16. 选项:长度可变,最长可达40字节

wireshark捕获到的TCP包中的每个字段如下图所示:

三. TCP三次握手

TCP建立连接时,会有三次握手过程,如下图所示,wireshark截获到了三次握手的三个数据包。第四个包才是http的,说明http的确是使用TCP建立连接的。

下面来逐步分析三次握手过程:

第一次握手:客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,序号为X=0

第二次握手:服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号Y=0,将确认序号(Acknowledgement Number)设置为客户的序列号加1,即X+1 = 0+1=1, 如下图:

第三次握手:客户端收到服务器发来的包后检查确认序号(Acknowledgement Number)是否正确,即第一次发送的序号加1(X+1=1)。以及标志位ACK是否为1。若正确,服务器再次发送确认包,ACK标志位为1,SYN标志位为0。确认序号(Acknowledgement Number)=Y+1=0+1=1,发送序号为X+1=1。客户端收到后确认序号值与ACK=1则连接建立成功,可以传送数据了。

四. TCP四次挥手

TCP断开连接时,会有四次挥手过程,如下图所示,wireshark截获到了四次挥手的四个数据包。

下面来逐步分析四次挥手过程:

第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,序号为X=1,确认序号为Z=1。

服务器收到FIN后,发回一个ACK(标志位ACK=1),确认序号为收到的序号加1,即X=X+1=2。序号为收到的确认序号=Z。

服务器关闭与客户端的连接,发送一个FIN。标志位FIN和ACK置为1,序号为Y=1,确认序号为X=2。

客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即Y+1=2。序号为收到的确认序号X=2。

时间: 2024-10-03 23:10:36

Wireshark下TCP三次握手四次挥手的相关文章

wireshark抓包图解-tcp三次握手四次挥手详解/

http://www.seanyxie.com/wireshark%E6%8A%93%E5%8C%85%E5%9B%BE%E8%A7%A3-tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B%E8%AF%A6%E8%A7%A3/ wireshark抓包图解-tcp三次握手四次挥手详解/ tcpdump抓包命令使用方法及内容解析/

TCP三次握手/四次挥手详解

TCP三次握手/四次挥手详解 TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示: SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowledge

TCP三次握手&四次挥手(示意图)

经典的三次握手示意图:(#add,“握手”即图中左边到右边的连线) 经典的四次握手关闭图: TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示: SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急) Sequence number(顺序号码) Acknowledge number(确认号码

tcp三次握手四次挥手图解

建立TCP需要三次握手才能建立,而断开连接则需要四次挥手.三次握手,四次挥手流程图如下: 一.首先看下如何通过三次挥手----------建立连接 首先客户端发送连接请求报文,服务端接受连接后回复ACK报文,并为这次连接分配资源(即建立了客户端到服务端的单向连接).服务端接收到ACK报文后也向服务端发送ACK报文,并分配资源(即建立了服务端到客户端的单向连接),这样TCP双向连接就建立成功了. 二.如何通过四次挥手-------------断开连接 [强调]中断连接端可以是Client端,也可以

wireshark抓包图解 TCP三次握手/四次挥手详解

wireshark抓到的包与对应的协议层如下图所示: 1. Frame:   物理层的数据帧概况 2. Ethernet II: 数据链路层以太网帧头部信息 3. Internet Protocol Version 4: 互联网层IP包头部信息 4. Transmission Control Protocol:  传输层的数据段头部信息,此处是TCP 5. Hypertext Transfer Protocol:  应用层的信息,此处是HTTP协议 1. 源端口号:数据发起者的端口号,16bit

wireshark抓包直观图解 TCP三次握手/四次挥手详解

转http://www.seanyxie.com/category/linux/ 作者:seanyxie | 一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. 2. 网络层,也称作互联网层,处理分组在网络中的活动,例如分组的选路.网络层协议包括IP协议(网际协议

网络通信协议下的 TCP(三次握手,四次挥手) 和 UDP socket 套接字

osi七层模型 互联网的核心就是由一堆协议组成,协议就是标准,标准就是大家都认可的,所有人都按照这个来,这样大家都能够互相了解,互相深入了~~~比如全世界人通信的标准是英语 五层通信流程: tcp协议:(TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80.) 当应用程序希望通过 TCP 与另一个应用程序

转---tcp三次握手四次挥手syn fin......

http://blog.chinaunix.net/uid-22312037-id-3575121.html转自 一.TCP报文格式        TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记.        (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号

TCP三次握手四次挥手过程梳理

1. 数据传输的大致示意图 1.1 TCP连接的几种状态说明 即命令 netstat 结果中的所有状态: 2. TCP连接建立的全过程 2.1 TCP三次握手建立TCP连接 1)客户端和服务端都处于CLOSED状态.(发起TCP请求的称为客户端,接受请求的称为服务端) 2)服务端打开服务端口,处于listen状态. 3)客户端发起连接请求.首先发送SYN(synchronous)报文给服务端,等待服务端给出ACK报文回应.发送的SYN=1,ACK=0,表示只发送了SYN信号.此时客户端处于SYN