实验七 UDP和TCP

合集下载

UDP与TCP的对比分析

UDP与TCP的对比分析

实训报告UDP与TCP的对比分析1.实训目的1)熟悉UDP与TCP协议的主要特点及支持的应用协议2)理解UDP的无连接通信与TCP的面向连接通信3)熟悉TCP报文段和UDP报文的数据封装格式2.实训拓扑图3.主要操作步骤及实训结果记录(1)任务一:观察UDP无连接的工作模式步骤1:捕获UDP事件注意:本步骤仅DNS,没有UDP。

因为UDP无连接。

✧步骤2:分析UDP无连接的工作过程本步骤仅查看第4层中UDP报文段的内容。

注意观察并分析以下几项内容:●运输层的UDP发送DNS的请求之前是否有先建立连接;●记录UDP的用户数据报首部中的LENGTH字段的值,分析该报文的首部及数据部分的长度。

分析完成后单击Reset Simulation(重置模拟)按钮,将原有的事件全部清空。

事件一:事件二:事件三:事件四:(2)任务二:观察TCP面向连接的工作模式 步骤1:捕获TCP事件✧步骤2:分析TCP面向连接的工作过程本步骤仅查看第4层中TCP报文段的内容。

注意观察并分析以下几项内容:●在捕获到的第一个HTTP事件之前及最后一个HTTP事件之后是否有TCP事件;●第一个以及最后一个HTTP事件对应的TCP报文中的sequence number(序号)、ACK number(确认号)的值以及它们与data length(数据长度)的关系;●并查看TCP报文首部中固定部分的长度。

分析完成后单击Reset Simulation(重置模拟)按钮,将原有的事件全部清空。

事件一:事件二:事件三:事件四:4.实训结果分析及心得体会(1) TCP报文首部中的序号和确认号有什么作用?答:序号和确认号:是TCP可靠传输的关键部分。

序号是本报文段发送的数据组的第一个字节的序号。

在TCP传送的流中,每一个字节一个序号。

序号确保了TCP传输的有序性。

确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。

基于SOCKET的TCP和UDP传输程序(CS)

基于SOCKET的TCP和UDP传输程序(CS)

实验7基于SOCKET的TCP和UDP传输程序(C/S)一、实验目的TCP协议是TCP/IP协议族的核心协议之一。

熟悉TCP包结构对于理解网络层次结构,以及TCP协议与IP协议的关系有着重要意义。

根据TCP协议的基本原理,通过封装与发送一个标准的TCP数据包,了解TCP包结构中各字段的含义与用途,从而深入理解传输层与下面各层的关系。

二、实验要求(1)掌握TCP/UDP报头结构、各字段含义以及校验和计算方法;(2)使用Wincap(Lipcap)构造并发送TCP,UDP数据包;(3)使用原始套接字(Raw Socket)发送自定义的TCP,UDP数据包;(4)使用NDIS协议驱动发送自定义的TCP/UDP数据包。

三、实验内容实验一SOCKET编程实验实验内容1、通过调试、运行“UDPClient”和“UDPServer”实验程序,加强对网络通讯原理的了解。

(或“简单Client”和“简单Server”实验程序,下同)2、学习分析实验程序功能结构,了解基于SOCKET编程的网络通信软件的基本设计方法。

3、在所提供的”UDPClient”和“UDPServer”实验程序基础上,完善程序功能。

4、通过实验学习和了解SOKCET通信的实现方法。

实验结果分析与总结(1)总结运行”UDPClient”和“UDPServer”实验程序的运行情况。

UDPClient运行结果:UDPServer运行结果(2)设计交互程序的运行结果如下:(3)总结程序设计的情况,列出所设计或修改部分的源代码清单。

附上程序源代码。

Client端修改的代码如下://(3)开始接收或发送过程printf("\n------------- waiting for message from Seaver -------------\n");//进入一个循环while (1){//输入并发送信息给服务器buffer[0]='\0'; //先清空发送缓冲区printf("\n Input datagram send info ( quit 退出 ): "); //输入发送字符串scanf("%s",buffer);sendto(socketid,buffer,sizeof buffer,0,(struct sockaddr*)&server,server_len);//发送信息//控制循环退出if(strcmp(buffer,"quit") == 0) //输入为quit则结束{ printf("\n send info quit");return 0;}//接收服务器返回信息buffer[0]='\0'; //先清空接收缓冲区if(recvfrom(socketid,buffer,sizeof buffer,0,(structsockaddr*)&server,&server_len)!=SOCKET_ERROR) //接收返回信息{printf("Received datagram from --%s\n",buffer);}}closesocket(socketid); //关闭SOCKET连接WSACleanup(); //退出使用wsock32.dll动态链接库return 0;}Seaver端修改的代码如下:printf("\n------------- waiting for message from client -------------\n");//进入一个循环while (1){buffer[0]='\0';if(recvfrom(socketid,buffer,sizeofbuffer,0,(structsockaddr*)&client,&client_len)!=SOCKET_ERROR){printf("Received datagram from --%s\n",buffer);//给cilent发信息// char ack[100] = "recv ok!";// sendto(socketid,ack,sizeof ack,0,(struct sockaddr*)&client,client_len);}buffer[0]='\0';printf("\n Input datagram send info ( quit 退出 ): "); //输入发送字符串scanf("%s",buffer);sendto(socketid,buffer,sizeof buffer,0,(struct sockaddr*)&client,client_len); //发if(strcmp(buffer,"quit") == 0) //输入为quit则结束{printf("\n send info quit");return 0;}//Sleep(500);}closesocket(socketid);WSACleanup();return 0;}指导教师评语及成绩【评语】【成绩】指导教师签名:日期:年月日。

UDP及TCP通信程序的设计与实现实验报告

UDP及TCP通信程序的设计与实现实验报告

实验报告课程计算机网络(双语)(课程设计)实验名称UDP及TCP通信程序的设计与实现专业班级姓名学号2013年 5 月30日目录实验目的和内容ﻩ错误!未定义书签。

实验目的ﻩ错误!未定义书签。

实验内容ﻩ错误!未定义书签。

实验环境ﻩ错误!未定义书签。

程序的逻辑框图ﻩ错误!未定义书签。

UDP通信程序的逻辑框图:ﻩ错误!未定义书签。

TCP通信程序的逻辑框图:ﻩ错误!未定义书签。

程序源代码(数据结构的描述、核心算法)ﻩ错误!未定义书签。

1.TCP通信程序源代码............................................. 错误!未定义书签。

2.TCP通信程序数据结构的描述ﻩ73.TCP通信程序的核心算法ﻩ错误!未定义书签。

4.UDP通信程序源代码.................................................. 错误!未定义书签。

5.UDP通信程序数据结构的描述.................................. 错误!未定义书签。

6.UDP通信程序的核心算法.......................................... 错误!未定义书签。

实验数据、结果分析.................................................................... 错误!未定义书签。

TCP通信程序实验结果分析ﻩ错误!未定义书签。

UDP通信程序实验结果分析......................................... 错误!未定义书签。

总结................................................................................................ 错误!未定义书签。

实验目的和内容实验目的掌握win32平台下,使用winsock API来实现UDP通信程序和TCP通信程序。

TCP协议与UDP协议分析实验(熟悉基础网络概念)

TCP协议与UDP协议分析实验(熟悉基础网络概念)

TCP协议与UDP协议分析实验(熟悉基础网络概念)一、实验目的1、理解TCP协议包格式和工作原理,如TCP建链拆链的三次握手机制和捎带应答机制等。

2、理解UDP协议包格式二、实验类型验证类实验三、实验课时2学时四、实验步骤1、在VC6.0以上环境下编译提供IPdump协议包分析程序,了解其工作原理和执行流程,重点熟悉TCP包解包函数和UDP包解包函数,然后运行该程序,并完成下列实验。

2、TCP协议分析●指定IPdump运行时源IP地址为主机A的地址,目的IP地址为主机B的地址,分析开关为TCP协议;●在主机B上启动TELNET服务,从主机A上向主机B发起telnet连接登陆到B上,并进行有关操作(如dir, cd / 等),然后退出telnet,捕获通信过程中的TCP数据包,记录并分析各字段的含义,并与TCP数据包格式进行比较;●在主机B上启动FTP服务,从主机A上向主机B发起FTP连接登陆到B上,并将A机的一个文件传输到B机上,然后退出ftp,捕获通信过程中的TCP数据包,记录并分析各字段的含义,并与TCP数据包格式进行比较;表2:FTP通信过程中的TCP包格式3、UDP 协议●指定IPdump运行时源IP地址为主机A的地址,目的IP地址为主机B的地址,分析开关为UDP协议;●在主机A的DOS仿真环境下,运行net send 命令向主机B发送一个UDP消息,捕获UDP数据包,记录并分析各字段的含义,并与UDP数据包格式进行比较;●在主机A的DOS仿真环境下,运行net send 命令向本网内所有主机发送一个UDP消息,捕获UDP数据包,记录并分析各字段的含义,并与UDP数据包格式进行比较;表3:UDP报文格式五、实验体会六、思考问题1、在两次TCP协议通信过程中,发送序列号是连续的吗,为什么在每次通信时发送序列号不从0开始编号呢?2、在主机A与主机B进行telnet通信时,从捕获的TCP包来看,在A上输入的命令是一个字符作为一个TCP包传送的还是一条命令作为一个TCP包传送的?为什么?。

UDP及TCP通信程序的设计与实现实验报告

UDP及TCP通信程序的设计与实现实验报告

实验报告课程计算机网络(双语)(课程设计)实验名称UDP及TCP通信程序的设计与实现专业班级姓名学号2013 年 5 月30 日目录实验目的和内容 (1)实验目的 (1)实验内容 (1)实验环境 (2)程序的逻辑框图 (2)UDP通信程序的逻辑框图: (2)TCP通信程序的逻辑框图: (3)程序源代码(数据结构的描述、核心算法) (4)1.TCP通信程序源代码 (4)2.TCP通信程序数据结构的描述 (7)3.TCP通信程序的核心算法 (7)4.UDP通信程序源代码 (8)5.UDP通信程序数据结构的描述 (11)6.UDP通信程序的核心算法 (12)实验数据、结果分析 (13)TCP通信程序实验结果分析 (13)UDP通信程序实验结果分析 (14)总结 (16)实验目的和内容实验目的掌握win32平台下,使用winsock API来实现UDP通信程序和TCP通信程序。

实验内容1.实现控制台模式下,在单机上基于UDP的聊天程序;2.实现控制台模式下,在单机上基于TCP的聊天程序;3.上述两个程序,最简单的实现方式是:一方发送、另一方接收、交替进行;4.提交上述2个程序的源程序,程序代码有充分的注释,并填写实验报告,实验报告的主要内容为说明程序设计的思路,程序代码的流程。

实验环境在win7系统下,visual studio 2008环境下的win32平台下程序的逻辑框图UDP通信程序的逻辑框图:Server端:Client端:TCP通信程序的逻辑框图:Server端:程序源代码(数据结构的描述、核心算法)1.TCP通信程序源代码Client端:#include"stdafx.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<winsock.h>//初始化函数,初始化版本号int InitSock(BYTE minorVer = 2, BYTE majorVer = 2){WSADATA wsaData;WORD sockVersion = MAKEWORD(minorVer, majorVer);if(WSAStartup(sockVersion, &wsaData) != 0)exit(0);return 1;}int main(){char rbuf[256];char szText[256];InitSock();//创建socket,第一个参数表示用IP协议,第二个参数表示用TCP传输,第三个不大清楚SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//判断socket是否创建成功if(sListen == INVALID_SOCKET){printf("Failed socket() \n");return 0;}//用于存储IP地址和端口号的变量sockaddr_in sin;sin.sin_family = AF_INET; //IP协议sin.sin_port = htons(4567); //端口号sin.sin_addr.S_un.S_addr = INADDR_ANY; //接收任何IP的连接//绑定函数,将socket 与IP地址和端口绑定在一块if(bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR){printf("Failed bind() \n");return 0;}//开始监听,第二个参数表示最大连接数if(listen(sListen, 2) == SOCKET_ERROR){printf("Failed listen() \n");return 0;}//定义一个新的变量sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);//用于存储连接客户端的socketSOCKET sClient;//accept函数会阻塞,直到等到有socket连接服务器为止,才继续往后执行,并将客户端的IP 和端口号存在remoteAddr中sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);printf("接收到一个连接%s \r\n", inet_ntoa(remoteAddr.sin_addr));while(TRUE){if(sClient == INVALID_SOCKET){printf("Failed accept()");continue;}printf("send:");scanf("%s",szText);//发送函数,往sClient这个socket中发送szTextsend(sClient, szText, strlen(szText), 0);//recv为阻塞函数,等待sClient中传来数据int nRecv = recv(sClient, rbuf, 256, 0);if(nRecv>0){rbuf[nRecv] = '\0';printf("receive:%s\n", rbuf);}}closesocket(sClient);closesocket(sListen);WSACleanup();return 0;}Server端:#include"stdafx.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<winsock.h>//初始化函数,初始化版本号int InitSock(BYTE minorVer = 2, BYTE majorVer = 2){WSADATA wsaData;WORD sockVersion = MAKEWORD(minorVer, majorVer);if(WSAStartup(sockVersion, &wsaData) != 0)exit(0);return 1;}int main(){InitSock();//创建socket,第一个参数表示用IP协议,第二个参数表示用TCP传输,第三个不大清楚SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(s == INVALID_SOCKET){printf(" Failed socket() \n");return 0;}//用于存储IP地址和端口号的变量sockaddr_in servAddr;servAddr.sin_family = AF_INET;servAddr.sin_port = htons(4567); //要连接的端口号servAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//要连接的IP地址//连接函数,是一个阻塞类型的函数,用s这个socket与服务器地址的某个端口连接,之后往s这个socket中写数据,服务器就能收到if(connect(s, (sockaddr*)&servAddr, sizeof(servAddr)) == -1){printf(" Failed connect() \n");return 0;}char buff[256];char szText[256];while(true){//接收函数,是一个阻塞类型的函数,等待s这个socket中传来数据,256表示接收的最大字符数int nRecv = recv(s, buff, 256, 0);if(nRecv > 0){buff[nRecv] = '\0';printf("receive:%s\n", buff);}printf("send:");scanf("%s",szText);//发送函数,往s这个socket中发送szText这个字符串send(s, szText, strlen(szText), 0);}closesocket(s);WSACleanup();return 0;}2.TCP通信程序数据结构的描述(1)客户端及服务器都含有存储IP地址及端口号的数据结构,sockaddr_in remoteAddr;和servAddr(2)用于存储连接客户端的socket:SOCKET sClient;和用于存储连接服务器的socket:SOCKET s3.TCP通信程序的核心算法服务器首先启动,通过调用socket( )建立一个套接口,然后bind( )将该套接口和本地地址(IP地址和端口)联系在一起,再listen( )使套接口做好侦听的准备,并规定它的请求队列的长度, 之后就调用accept( )来接收连接,并获得客户机的地址信息;客户在建立套接口后就可调用connect( ) 和服务器建立连接;连接一旦建立,客户机和服务器之间就可以通过调用:send( )和recv( ) (或read( )和write( ))来发送和接收数据;最后,待数据传送结束后,双方调用closesocket() 关闭套接口。

TCP流和UDP流的竞争实验报告_11300240047

TCP流和UDP流的竞争实验报告_11300240047

TCP协议分析实验报告
11300240047
马会心1 实验目的
用Wireshark分析TCP数据流和UDP数据流同时在网络传输时是如何占有所有可用带宽的,使学生对TCP协议的流量控制和拥塞控制有着较深的理解。

2 实验环境
Windows 7 Service Pack1
Wireshark Version 1.10.2
PCATTCP
3 实验内容
由于在机房抓取数据时,仅保留了数据包文件,而翻到实验指导书的最后一条才发现还需要cmd窗口的截图,所以只好在自己寝室的路由器局域网上重做了。

所以这里的IP地址等都与前面的实验不同。

3.1 两个TCP流的竞争
本节实验的数据包文件见tcp_tcp.pcapng。

本节实验中的命令行信息截图如下,其中端口5001的TCP流先被发送。

5001端口,发送方:
5001端口,接收方:
5002端口,发送方
5002端口,接收方
3.1.1 查看两个TCP流的情况
通过Wireshark中的TCP-Sequence Graph(tcptrace)功能,我们可以看到两个TCP流的整体传输情况。

(对于Flow Graph,我也尝试了一下,但感觉并不能很好的体现出TCP流的整体特性,所以没有涉及,下同)
两个TCP流的传输情况分别如下,前一张是先被发送的,后一张是延迟发送的。

实验七 UDP和TCP

实验七 UDP和TCP

南昌大学实验报告学生姓名:吴长福学号:8000114105 专业班级:卓越141班实验类型:□ 验证□ 综合√设计□ 创新实验日期:2016.12.15 实验成绩:实验七(1)UDP协议【实验目的】1. 掌握UDP协议的报文格式2. 掌握UDP协议校验和的计算方法3. 了解DNS的工作原理【实验学时】建议4学时【实验环境配置】采用网络结构一服务器A172.16.1.1【实验原理】一.UDP报文格式每个UDP报文称为一个用户数据报(User Datagram)。

用户数据报分为两个部分:UDP 首部和UDP数据区。

二.UDP单播与广播在UDP单播通讯模式下,客户端和服务端之间建立一个单独的数据通道。

从一台服务端传送出的数据包只能由一个客户端接收。

众所周知,UDP协议是不可靠的,数据包可能在传输过程中丢失、重复、没有按照发送顺序到达,而且作为UDP数据包,其大小还受限于数据包的最大上限。

在UDP广播通讯模式下,一个单独的数据包拷贝发送给网络上所有主机。

当不能明确具体的服务器,而又要求该服务时,UDP广播提供了传输不区分种类的消息的便捷方式。

在多数情况下UDP广播仅仅作为本地网络通信形式。

受限的广播地址是255.255.255.255。

该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。

在任何情况下,路由器都不转发目的地址为受限广播地址的数据报,这样的数据报仅出现在本地网络中。

已知网络主机的IP地址和子网掩码,可以算得指向主机所在子网的广播。

子网广播地址= (主机IP)“或” (子网掩码取反)。

三. UDP校验和的计算下图给出了一个计算UDP校验和的例子。

这里假定用户数据报的长度是15字节,因此要添加一个全0的字节。

【实验步骤】练习一:编辑并发送UDP数据报1. 主机B编辑发送给主机C的UDP数据报,其中应用选择“DNS”,源端口设为“1025”,报文数据大小设为“0”。

实验报告七 操作系统安全配置(安徽农业大学)

实验报告七  操作系统安全配置(安徽农业大学)

实验七操作系统安全配置姓名:学号:班级:2班实验组别:同组实验者姓名:指导教师:章恒日期:成绩:【实验报告要求】1.使用软件对一台操作系统是Windows 2000 Server的计算机进行风险评估,并写出风险评估报告。

实验一网络安全扫描工具Nessus的使用1、网络安全扫描工具Nessus的安装。

(2)配置扫描策略。

如下图所示。

(3)新建一个扫描任务,并开始扫描。

(4)查看扫描报告3、扫描主机和网络。

利用Neessus的功能,对指定的主机和学生所在的网络进行服务和端口开放等情况的扫描。

信息安全风险评估软件RiskAssess的使用【实验前需要学习掌握的知识】1、复习信息安全风险评估的基本过程,了解信息安全风险评过程的每一个阶段需要完成的工作;2、掌握矩阵法和相乘法两种常用的安全风险计算方法。

【实验目的】1、掌握信息安全风险评估软件RiskAssess的安装方法和主要功能;2、利用信息安全风险评估软件RiskAssess完成一个信息安全风险评估实例。

【实验内容】1、风险评估软件RiskAssess的安装打开安装盘,运行可执行文件Setup.exe,进入软件安装界面,如下图所示。

根据安装界面提示,完成软件安装。

2、熟悉RiskAssess的主要功能(1)建立一个新的评估工程,如下图所示。

(2)选择“风险评估准备”——“风险评估向导”,如下图所示。

根据界面提示,完成风险评估准备工作。

(3)评估要素的识别。

对资产识别、脆弱性识别、威胁识别进行填写。

如下图所示。

(4)选择风险评估方法,矩阵法或相乘法。

(5)风险管理。

完成已有安全措施确认,风险处理计划并生成阶段文档。

(6)评估文档管理。

利用此功能可以实现对评估项目所有文档的管理。

3、RiskAssess的实际应用。

使用RiskAssess,完成课堂讲授的信息安全风险评估实例——企业“数字兰曦”的信息安全风险评估工作。

实验三简单网络扫描器的设计与实现。

【实验前需要学习掌握的知识】1、复习TCP、UDP、IP和ICMP 数据报的报文格式,复习TCP 连接建立和终止的过程;2、复习基本的套接字网络编程方法;3、掌握利用Libnet接口函数库构造网络数据包的方法;4、了解常用网络扫描器的主要功能和实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学实验报告学生姓名:吴长福学号:8000114105 专业班级:卓越141班实验类型:□ 验证□ 综合√设计□ 创新实验日期:2016.12.15 实验成绩:实验七(1)UDP协议【实验目的】1. 掌握UDP协议的报文格式2. 掌握UDP协议校验和的计算方法3. 了解DNS的工作原理【实验学时】建议4学时【实验环境配置】采用网络结构一服务器A172.16.1.1【实验原理】一.UDP报文格式每个UDP报文称为一个用户数据报(User Datagram)。

用户数据报分为两个部分:UDP 首部和UDP数据区。

二.UDP单播与广播在UDP单播通讯模式下,客户端和服务端之间建立一个单独的数据通道。

从一台服务端传送出的数据包只能由一个客户端接收。

众所周知,UDP协议是不可靠的,数据包可能在传输过程中丢失、重复、没有按照发送顺序到达,而且作为UDP数据包,其大小还受限于数据包的最大上限。

在UDP广播通讯模式下,一个单独的数据包拷贝发送给网络上所有主机。

当不能明确具体的服务器,而又要求该服务时,UDP广播提供了传输不区分种类的消息的便捷方式。

在多数情况下UDP广播仅仅作为本地网络通信形式。

受限的广播地址是255.255.255.255。

该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。

在任何情况下,路由器都不转发目的地址为受限广播地址的数据报,这样的数据报仅出现在本地网络中。

已知网络主机的IP地址和子网掩码,可以算得指向主机所在子网的广播。

子网广播地址= (主机IP)“或” (子网掩码取反)。

三. UDP校验和的计算下图给出了一个计算UDP校验和的例子。

这里假定用户数据报的长度是15字节,因此要添加一个全0的字节。

【实验步骤】练习一:编辑并发送UDP数据报1. 主机B编辑发送给主机C的UDP数据报,其中应用选择“DNS”,源端口设为“1025”,报文数据大小设为“0”。

2. 设置过滤条件(提取UDP协议),开始捕获数据。

3. 停止捕获数据,在捕获到的数据中观察主机B所发送的数据报、以及主机C发出的数据报。

主机B发出去的数据报:C发出去的数据报:4. 校验和应该为多少?手工计算校验和。

5. 主机B编辑发送给服务器A的UDP数据报,其中应用选择“DNS”,源端口设为“1025”,报文数据大小设为“0”。

6. 设置过滤条件(提取UDP协议)开始捕获数据。

7. 停止捕获数据,在捕获到的数据中观察主机B所发送的数据报。

练习二:UDP单播通信1. 服务器A的DNS服务缓存中,添加一条域名解析记录,域名“”,地址“172.16.1.1”。

2. 主机B设置DNS为172.16.1.1,使用Web浏览器访问“”。

3. 设置过滤条件(提取UDP协议),开始捕获数据。

4. 停止捕获数据,在捕获到的数据中观察主机B所发送的数据报,并回答以下问题:目标IP地址为多少?172.16.1.1源端口和目标端口分别为多少?源端口:1027目的端口:535. 在捕获到的数据中观察主机B所接收的数据报,并回答以下问题:源IP地址和目标IP地址为多少?源:172.16.1.2目的:172.16.1.1源端口和目标端口分别为多少?6. 根据对捕获报文观察,回答以下问题:UDP是基于连接的协议吗? UDP报文交互中含有确认报文吗?不是,没有。

练习三:UDP广播通信1. 清空主机B的DNS设置,使用Web浏览器访问“”。

3. 设置过滤条件(提取UDP协议),开始捕获数据。

4. 停止捕获数据,在捕获到的数据中观察主机B所发送的数据报,并回答以下问题:目标IP地址为多少?源端口和目标端口分别为多少?源端口:1030,目标端口:535. 在捕获到的数据中观察主机B所接收的数据报,并回答以下问题:源IP地址和目标IP地址为多少?源端口和目标端口分别为多少?源端口:1030,目标端口:53【思考问题】1.UDP和IP的不可靠程度是否相同?为什么是或为什么不是?UDP 和IP 的不可靠程度是不相同的,因为IP 仅检验首部,而UDP 检验整个数据报。

2.UDP协议本身是否能确保数据报的发送和接收顺序?不能实验七(2) 传输控制协议TCP【实验目的】1. 掌握TCP 协议的报文格式2. 掌握TCP 连接的建立和释放过程3. 掌握TCP 数据传输中编号与确认的过程4. 理解TCP 重传机制【实验学时】建议4学时【实验环境配置】采用如下网络结构【实验原理】一. TCP 报文格式二. TCP 连接的建立TCP 是面向连接的协议。

在面向连接的环境中,开始传输数据之前,在两个终端之间必服务器A 172.16.1.1须先建立一个连接。

对于一个要建立的连接,通信双方必须用彼此的初始化序列号seq和来自对方成功传输确认的应答号ack(指明希望收到的下一个八位组的编号)来同步,习惯上将同步信号写为SYN,应答信号写为ACK。

整个同步的过程称为三次握手,如图:三. TCP连接的释放对于一个已经建立的连接,TCP使用四次握手来结束通话(使用一个带有FIN附加标记的报文段),如图:四. TCP重传机制TCP每发送一个报文段,就对这个报文段设置一次计时器。

只要计时器设置的重传时间到期,但还没有收到确认,就要重传这一报文段。

【实验步骤】练习一:察看TCP连接的建立和释放1.进入仿真模式,设置过滤条件(提取TCP协议)。

2.主机B编辑发送给服务器A的TCP数据报,其中应用选择“HTTP”,源端口设为“1025”,报文数据大小设为“0”。

3.在捕获的数据中,查找用于建立TCP连接的三次握手报文,填写下表。

4. 在捕获的数据中,查找用于断开TCP连接的四次握手报文,填写下表。

结合步骤3、4所填的表,理解TCP的三次握手建立连接和四次握手的释放连接过程,理解序号、确认号等字段在TCP可靠连接中所起的作用。

练习二:理解TCP数据包的编号与确认1.主机B使用Web浏览器访问“http://172.16.1.1”。

2.设置过滤条件(提取TCP, HTTP协议),捕获数据。

停止捕获数据,在捕获到的数据中观察主机B所发送的报文,并回答以下问题:目标IP地址为多少?IP首部的协议字段值为多少?目的地址为:172.16.1.1 IP首部的协议字段值为:0x6 (代表tcp协议)源端口和目标端口分别为多少?源端口:1026 目的端口:80TCP首部中Sequence Number为多少?Acknowledgement Number为多少?哪些控制比特置为了1?Sequence num:0,ack num:0 syn置为了1.3.在捕获到的数据中观察主机B所接受的报文,并回答以下问题:目标IP地址为多少?IP首部的协议字段值为多少?目的地址为:172.16.1.2 IP协议字段的值为:0x6 (tcp)源端口和目标端口分别为多少?源端口:80 目的端口:1025TCP首部中Sequence Number为多少?Acknowledgement Number为多少?哪些控制比特置为了1?Sequence num:0 ack num:1练习三:TCP的重传机制1. 关闭服务器A的HTTP服务。

2.主机B编辑发送给服务器A的TCP数据报,其中应用选择“HTTP”,源端口设为“1026”,报文数据大小设为“0”。

3.设置过滤条件(提取TCP协议),捕获数据。

4.停止捕获数据。

查看捕获的报文,是否相同?为何有这种现象产生?相同,当服务器没有收到的时候,就会产生重传【思考问题】1.试用具体例子说明为什么在运输连接建立时要使用三次握手。

说明如不这样做可能会出现什么情况。

三次握手完成了两个重要的功能,一个是双方做好发送数据的准备工作,即双方都知道彼此已准备好,一个是允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

假如把三次握手改为两次握手,就会可能出现死锁的情况。

如,计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。

按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。

可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。

在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。

而A在发出的分组超时后,重复发送同样的分组。

这样就形成了死锁。

2.使用TCP对实时话音数据的传输有没有什么问题?使用UDP在传送数据文件时会有什么问题?TCP延时比较大,因为其具有拥塞控制算法,对于实时性要求高的业务来说,有其必然的缺点。

UDP没有拥塞控制,只能提供尽力而为的服务,所以会出现丢包现象,且不重传。

所以不适合传准确性要求比较高的,不允许有错误的等数据文件。

相关文档
最新文档