mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
2182 字
6 分钟
实验4 TCP协议分析
2022-07-01

1.实验目的#

  • 了解运输层TCP协议基本概念、报文结构
  • 分析TCP报文头部
  • 分析TCP连接建立过程、TCP连接释放
  • 掌握利用tcpdumpwireshark进行tcp协议分析技术。

2.实验环境#

  • 硬件要求:阿里云云主机ECS 一台。
  • 软件要求:Linux/ Windows 操作系统

3.实验内容#

TCP是面向连接的、在不可靠的互联网络上提供可靠的端到端通信。它是TCP/IP协议集的核心协议。

TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

利用wget下载新疆大学主页www.xju.edu.cn,与此同时使用tcpdump抓包。使用wireshark分析TCP数据报文头部,分析建立连接三次握手和分析释放连接的四次挥手。

4.实验结果与分析#

4.1 填写表格#

  • 首先抓取wget下载 时的数据,操作如下:

L6OKb28SnoZCtIR.png

  • 利用wareshark打开分析cap文件,筛选TCP协议,结果如下:

Wn6tz9xaCfgMUBS.png

  • 根据捕获的数据包,分析TCP的报文结构,将TCP协议中个字段名,字段长度,字段值,字段含义填入下表:
字段名字段长度字段值字段含义
Source Port2bit23242Source Port: 23242
Destination Port2bit22Destination Port: 22
TCP Segment Len1bit0[TCP Segment Len: 0]
relative Sequence Number4bit1Sequence Number: 1 (relative sequence number)
Sequence Number4bit3259399585Sequence Number (raw): 3259399585
relative Acknowledgment Number4bit1Acknowledgment Number: 1 (relative ack number)
Acknowledgment number (raw)4bit1484179832Acknowledgment number (raw): 1484179832
Header Length4bit200101 … = Header Length: 20 bytes (5)
Reserved1bit0000. … … = Reserved: Not set
Nonce1bit0…0 … … = Nonce: Not set
Congestion Window Reduced (CWR)1bit0… 0… … = Congestion Window Reduced (CWR): Not set
ECN-Echo1bit0… .0.. … = ECN-Echo: Not set
Urgent1bit0… ..0. … = Urgent: Not set
Acknowledgment1bit1… …1 … = Acknowledgment: Set
Push1bit0… … 0… = Push: Not set
Reset1bit0… … .0.. = Reset: Not set
Syn1bit0… … ..0. = Syn: Not set
Fin1bit0… … …0 = Fin: Not set
Window2bit229Window: 229
Calculated window size2bit29312[Calculated window size: 29312]
Window size scaling factor2bit128[Window size scaling factor: 128]
Checksum2bit0xda61Checksum: 0xda61 [unverified]
Urgent Pointer2bit0Urgent Pointer: 0
  • 通过分析实验结果,TCP报文结构由哪几部分组成,其功能是什么?

TCP报文一般可以分为:

  1. 端口号:用来标识同一台计算机的不同的应用进程。

1.1 源端口:源端口和IP地址的作用是标识报文的返回地址。

1.2 目的端口:端口指明接收方计算机上的应用程序接口。

TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。

  1. 序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号,确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。
  2. 数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,其实际上指示了数据区在报文段中的起始偏移值。
  3. 保留:为将来定义新的用途保留,现在一般置0。
  4. 控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。

5.1 URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

5.2 ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

5.3 PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

5.4 RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

5.5 SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

5.6 FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

  1. 窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。
  2. 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。
  3. 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。
  4. 数据部分:传输的信息。

4.2 分析建立连接三次握手#

  • 分析三次握手的标志位和序号

YrHyu594bim7VpD.png

第一次握手:客户端向服务器发送了标志位为SYN,并设置Seq=0(x),请求与服务器建立连接

第二次握手:服务器向客户端回应了SYN,标志位为SYN和ACK,并设置Seq=0(y),ACK=1(x+1)

第三次握手:客户端收到服务器的SYN报文,回应一个ACK=1(y+1),标志位为ACK

4.3 分析释放连接的四次挥手#

  • 分析四次挥手的报文标志和序号

O6n4rQpIR8DHjsL.png

第一次挥手:客户端向服务器发送FIN,Seq=166,Ack=7725

第二次挥手:服务器回发了ACK,Seq=7725,Ack=167

第三次挥手:服务器发送FIN,Seq=7725,Ack=167

第四次挥手:客户端向服务器回复了ACK,Seq=167,Ack=7726

  • wireshark只抓取了四段报文的原因

据图,我们可以发现此时四次挥手只有三次挥手,是因为TCP是全双工通信,Cliet在自己已经不会在有新的数据要发送给Server后,可以发送FIN信号告知Server,这边已经终止Client到对端Server那边的数据传输。但是,这个时候对端Server可以继续往Client这边发送数据包。于是,两端数据传输的终止在时序上是独立并且可能会相隔比较长的时间,这个时候就必须最少需要2+2=4次挥手来完全终止这个连接。但是,如果Server在收到Client的FIN包后,在也没数据需要发送给Client了,那么对Client的ACK包和Server自己的FIN包就可以合并成为一个包发送过去,这样四次挥手就可以变成三次了

5、实验小结#

5.1 问题与解决办法#

问题使用Xftp连接服务器时,出现连接错误的情况解决方法使用校园网连接后恢复正常,排查后发现为服务器防火墙原因

5.2 心得体会#

  • 本次实验报告熟系了对IP协议分析过程中代码及软件的操作,以及对TCP报文的分析与提取,实现对课上知识的印证。通过这次实验,我掌握了wget命令使用中的具体流程,了解了常用IP协议分析软件的基本用法,提高了自身编程能力。
  • 通过这些常用的IP协议分析命令操作,对IP协议使用时的跟踪分析,TCP报文的结构分析,让我印证了上课所学的知识。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

实验4 TCP协议分析
https://dreaife.tokyo/posts/tcp-protocol-analysis/
作者
dreaife
发布于
2022-07-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时