TCP协议分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议分析相关的知识,希望对你有一定的参考价值。

1.实验目的:

理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输过程中编号与确认的过程。

2. 原理

CPTransmission ControlProtocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETFRFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内 另一个重要的传输协议。在因特网协议族(Internetprotocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

TCP头格式

技术分享

---Source Port是源端口,16位。

---Destination Port是目的端口,16位。

---Sequence Number是发送数据包中的第一个字节的序列号,32位。

---Acknowledgment Number是确认序列号,32位。

---Data Offset是数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4

---标志位: 6位,URG表示UrgentPointer字段有意义:

ACK表示AcknowledgmentNumber字段有意义

PSH表示Push功能,RST表示复位TCP连接

SYN表示SYN报文(在建立TCP连接的时候使用)

FIN表示没有数据需要发送了(在关闭TCP连接的时候使用)

Window表示接收缓冲区的空闲空间,16位,用来告诉TCP连接对端自己能够接收的最大数据长度。

---Checksum是校验和,16位。

---Urgent Pointers是紧急指针,16位,只有URG标志位被设置时该字段才有意义,表示紧急数据相对序列号(Sequence Number字段的值)的偏移。

连接建立

TCP是因特网中的传输层协议,使三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答。

技术分享


SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。

TCP三次握手的过程如下:

客户端发送SYNSEQ=x)报文给服务器端,进入SYN_SEND状态。

服务器端收到SYN报文,回应一个SYN SEQ=yACK(ACK=x+1)报文,进入SYN_RECV状态。

客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

技术分享

连接终止

建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。

技术分享


(1) 某个应用进程首先调用close,称该端执行主动关闭active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。

(2) 接收到这个FIN的对端执行被动关闭passiveclose),这个FINTCP确认。

注意:FIN的接收也作为一个文件结束符(end-of-file)传递给接收端应用进程,放在已排队等候该应用进程接收的任何其他数据之后,因为,FIN的接收意味着接收端应用进程在相应连接上再无额外数据可接收。

(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN

(4) 接收这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN

既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

窗口确认

TCP的一项功能就是确保每个数据段都能到达目的地。位于目的主机的TCP服务对接受到的数据进行确认,并向源应用程序发送确认信息。

技术分享

配置TCP

修改建立TCP连接的超时时间

建立TCP连接需要经过三次握手:主动端先发送SYN报文,被动放回应SYN+ACK报文,然后主动端再回应ACK 

l在主动端发送SYN后,如果被动端一直不回应SYN+ACK报文,主动端会不断的重传SYN报文直到超过一定的重传次数或超时时间。

l在主动端发送SYN后,被动端回应SYN+ACK报文,但主动端不再回复ACK,被动端也会一直重传直到超过一定的重传次数或超时时间。(SYN报文攻击会出现这种情况)

可以通过以下命令配置SYN报文的超时时间(发送SYN报文到三次握手成功的最大时间),也就是建立TCP连接的超时时间。

 

3.实验步骤:

(1)启动tcp协议分析软件,并开始抓包。

(2)启动某个基于TCP的应用程序,例如连接某个FTP站点,或通过浏览器访问某个网页。

(3)等出现浏览的网页后停止数据包的捕获。

(4)出现协议分析界面,将filter 一栏填入tcp则只显示TCP协议信息,通过此信息,可以看到TCP连接的三次握手过程和协商的初始的序列号,数据传输过程以及拆除连接的相应信息。




以上是关于TCP协议分析的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议分析

网络协议分析课程设计:基于TCP协议网上聊天程序

TCP源码分析 - 三次握手之 connect 过程

TCP协议学习笔记报文分析

TCP/IP协议栈概述及各层包头分析

使用Wireshark分析-以太网帧与ARP协议-IP协议-ICMP-UDP协议-TCP协议-协议HTTP-DNS协议