mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
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/cn/posts/tcp-protocol-analysis/
作者
dreaife
发布于
2022-07-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

相关文章 智能推荐
1
实验2 IP协议分析
cs-base 实验旨在了解IP报文格式及字段含义,掌握tcpdump和Wireshark的使用。实验环境包括阿里云主机和操作系统。通过tcpdump抓包和Wireshark分析,学习IP协议结构及相关命令的应用,解决了traceroute命令和Xftp连接问题,提升了编程能力和对IP协议的理解。
2
实验7 HTTP协议分析与测量
cs-base 实验旨在了解HTTP协议及其报文结构,掌握使用tcpdump和wireshark进行HTTP数据包抓取与分析。通过下载新疆大学主页,分析HTTP版本、IP地址、状态码、内容字节数及头部字段。实验中解决了连接错误的问题,并提高了编程能力和对HTTP协议的理解。
3
实验3 UDP协议分析
cs-base 实验旨在掌握UDP协议的内容及其工作原理,分析DNS查询和QQ通信的UDP数据包。实验包括使用tcpdump和wireshark进行数据抓取与分析,结果显示UDP报文由源端口、目的端口、长度和校验和组成。通过实验,解决了traceroute命令和Xftp连接问题,并提高了对IP协议分析的理解和编程能力。
4
实验6 DNS协议分析与测量
cs-base 实验旨在了解DNS协议及其基本概念,包括域名结构、DNS服务器和域名解析原理。实验内容涵盖DNS系统配置、使用dig工具进行DNS信息测量,以及通过tcpdump和wireshark分析DNS查询数据包。实验结果显示了DNS查询的各个字段及其含义,最后总结了在实验过程中遇到的问题及解决方案,提升了对DNS协议的理解和编程能力。
5
实验5 电子邮件
cs-base 实验旨在理解电子邮件系统的基本结构和通信协议,包括SMTP和POP3。通过使用邮件代理、客户端、Web邮件和telnet命令进行邮件收发,分析其通信过程和协议。实验结果表明,掌握了邮件发送的具体流程和SMTP协议的分析,提高了编程能力和对协议的理解。

目录