您的位置:首页 > 理论基础 > 计算机网络

WireShark捕获报文理解TCP协议

2017-08-27 18:11 183 查看
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在OSI模型的第四层传输层。


TCP协议三次握手

三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互。

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。连接建立后,客户端和服务器就可以开始进行数据传输了。

TCP报文

理解以上三次握手,我们需要看看TCP的协议报文



1:source port :源端口

2:desctination port:目的端口

3: Sequence Number :序号

4: Acknowledgment Number :确认序列号

5: Offset:偏移量

6: Flag :标志位

7: Checksum:校验和

8: Urgent Pointer:紧急指针

需要重点说一下Flag(标志位):

Flag(标志位):主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。

•URG:此标志表示TCP包的紧急指针域有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;

•ACK:此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;

•PSH:这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;

•RST:这个标志表示连接复位请求。用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包;

•SYN:表示同步序号,用来建立连接。

•FIN: 表示发送端已经达到数据末尾,也就是说双方的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,连接将被断开。这个标志的数据包也经常被用于进行端口扫描。

需要特别主要不要将Flag标志位中的ACK和确认序列号ack搞混淆

WireShark抓包

先来看一下三次握手的流程图,很经典的一张图。从其他地方Copy过来的



通过wireShar捕获的报文来理解上图

通过上图我们可以看到通过发送三次报文来建立了客户端和服务端的连接客户端–>客户端 第一次发送标志位(SYN=1)和序列号(Seq=0)



服务端–>客户端 第二次发送标志位(SYN=1,ACK=1 )确认序列号(Ack=1),序列号(Seq=0)



客户端–>服务端 第三次发送标志位(ACK=1) 确认序列号(Ack=1)



四次挥手断开连接:



服务端–>客户端 :第一次发送标志位(FIN=1,ACK=1 )确认序列号(Ack=397),序列号(Seq=717 )

客户端–>服务端 :第二次发送标志位(ACK=1)确认序列号(Ack=718),序列号(Seq=397)

服务端–>客户端 :第三次发送标志位(FIN=1,ACK=1 )确认序列号(Ack=718),序列号(Seq=397 )

客户端–>服务端 :第四次发送标志位(FIN=1,ACK=1 )确认序列号(Ack=718),序列号(Seq=398 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐