计算机网络实验四

一、实验目的

  1. 理解并掌握TCP协议、UDP协议通信机制
  2. 熟悉使用抓包软件wireshark的流程和操作
  3. 学会分析连接时TCP三次握手过程
  4. 学会分析接收方如何应答

二、实验环境

计算机,wireshark,Server.exe,Client.exe,textbook.txt

三、相关原理与知识点

  1. TCP三次握手协议
    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
    第二次握手:服务器收到syn包,必须确认客户的SYN(ACK=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
    TCP三次握手
  1. TCP四次握手
    1.客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
    2.服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号
    3.服务器B关闭与客户端A的连接,发送一个FIN给客户端A
    4.客户端A发回ACK报文确认,并将确认序号设置为收到序号加1
    TCP四次握手

四、实验内容

实验任务一:TCP协议分析

设计思路:
1.首先要有两台计算机,一台作为客户端,一台作为服务端
2.假设有计算机1和计算机2。在计算机1上运行已有的Server.exe,并设置端口号;在计算机2上运行已有的Client.exe,输入计算机1的IP地址和设置的端口号,上传准备好的textbook.txt文件。
3.此时wireshark抓取发送的包,并显示,观察并分析已抓取的数据。

关键细节:第一,在打开Server.exe和Client.exe时,一定要先打开Server.exe,否则会出现错误;第二,在用Client.exe发送数据时,一定要先把wireshark打开,否则将抓不到

五、实验步骤

实验任务一

  1. 选择两台计算机,用ipconfig命令查看两台计算机的网络IP地址,一台打开Server.exe,命令是Server.exe 8888(8888是端口号,端口号可以取其它值,如8080,2021等);
  2. 打开wireshark,设置捕获条件为host IP地址1 and host IP地址2,然后开始捕获。
    捕获图片
  3. 另一台计算机打开Client.exe,使用命令Client+Server.exe端的IP地址+Server.exe设置的端口(如Client 10.0.0.1 8888),打开后输入已准备好的文件textbook.txt,再输入block size为1,当出现“Start xxx connect to Server;File transfer is over!”时表明已经传送成功。
    传输成功
  4. 从后台切回wireshark,中止抓包。然后在上方过滤器中输入“tcp”过滤其它无用信息,观察数据并分析TCP的三次握手和四次握手。
  5. 然后重新执行以上四条操作,把设置端口号不变,并且分别输入block size为1460及3000,再到wireshark中获取新的数据,观察和分析。

关键细节:

  1. 注意Server端设置的端口要与在Client中输入的端口号一致;
  2. 要先开wireshark开启捕获,再开Server.exe,最后开启Client.exe;
  3. textbook.txt文件最好要大一些,太小则可能会影响实验数据

六、实验结果和分析

实验任务一结果

当设置Server处端口设置为8888,block size为1,捕获条件为校园网下,host 10.33.114.39 and host 10.33.87.94时,结果如下
在这里插入图片描述
三次握手:
在这里插入图片描述
四次握手:
在这里插入图片描述
(block size为其它值时图略)

结果分析:

  1. 实验中TCP三次握手的过程:

第一次握手:两台计算机建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN就是同步序列编号,代表客户端请求连接。示例如图
第一次握手
第二次握手:
服务器收到SYN包,必须确认客户端的SYN,同时自己也民送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态第二次握手
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。第三次握手

  1. 发送包的顺序号的作用,及产生、变化的规律

服务端和客户端通信过程中,在三次握手完成后,连接建立,客户端开始向服务端传输发送的数据。而包的确认序号就是期望收到对方下一个报文段的第一个数据字节序号,从开始传输数据产生,序列号都是上一个确认序号加上上一个包的长度。

  1. 分析三次传输相同文件的数据

由下图可知,文件总长为16936字节不变,三次传输的分割尺度分别为1,1460和3000。相应的分割块数也是逐次递减,网络传输的数据块数是先增大后减小。但整体效率还是一致的

序号 文件分割尺度 文件总长 文件分割块数 经网络传输的数据块数 文件传输网络带宽效率
1 1 16936 16936 16 16936/x*100%=98.5%
2 1460 16936 12 22 16936/x*100%=98.5%
3 3000 16936 6 17 16936/x*100%=98.5%

七、实验总结

  1. 本次实验环境需要两台计算机来模拟客户端和接收端的数据传输,需要老师提供的Server.exe和Client.exe以及传输文件textbook.txt。步骤也简单易懂,需要先在wireshark中设置捕获条件并打开,然后查询两台计算机的网络IP地址,注意要在同一网络段下进行操作。先在一台计算机上打开Server.exe并设置端口号,接着在另一台计算机上用命令行打开Client.exe加上服务端的IP地址和端口号,再上传文件后,wireshark就可以抓到相应的包了。
  2. 本次实验重点在于TCP协议的分析,在wireshark中查看TCP三次握手和TCP四次握手,并理解其中的过程。TCP三次握手连接中需要双方都确认连接已经建立,连接才算成功。
    当需要连接时,客户端向服务器发出请求,服务器收到后会对客户端表示收到请求,客户端收到确认信息后还对服务端发出确认表示结束;TCP四次握手断开连接中,先是客户端认为请求发送完成,向服务端发送断开连接的请求,然后服务端收到后,向客户端释放应答,发完所有数据后,服务端向客户端发送释放请求,最后客户端向服务端发送确认应答,若无重发请求,就关闭;服务端确认应答后,也关闭。
  3. 总结:通过本次实验,我基本了解TCP的三次握手和四次握手的过程,并可以对TCP的连接断开抓包进行数据分析。实验中也出现了不是TCP的包,这时需要我们在上方的过滤器中写入“tcp”过滤不是TCP的包。

猜你喜欢

转载自blog.csdn.net/DCJwwh/article/details/122307384