传输层协议分析实验报告

合集下载

计算机网络实验-传输层协议分析

计算机网络实验-传输层协议分析

实验四、传输层协议分析【实验目的】1. 通过捕获TCP 包并进行分析,了解传输层协议的工作过程,加深对TCP 及面向连接的服务的工作原理的理解与掌握,2. 观察简单的TCP 流传输,理解其首部各字段的变化。

3. 理解UDP 数据报的传输特点。

【实验原理】【实验内容】1、查看分析TCP 链路管理(1)、在PC2(192.168.2.24)中安装有FTP 服务端程序。

(2)、在PC1 中开启协议分析软件,进行数据包抓包。

(3)、在PC1 中的协议分析软件中利用工具栏中的TCP 连接工具对PC2 发起连接,如下图所示。

PC1 主动打开连接请求确认PC2 被动打开确认确认SYN ,SEQ = xACK,SEQ = x+1,ACK = y +1SYN,ACK,SEQ = y , ACK = x+1图 4-12 TCP连接工具在IP地址中填入PC2地址192.168.2.24,端口填入FTP服务端口21,然后点击连接。

分析捕获到的三次握手报文。

图 4-13 三次握手第一次连接查看上图TCP报文中的报头部分:源端口:3241,由于发起连接的是客户端,因此源端口为TCP程序随机出的短暂端口,在此连接中是3241。

目的端口:21,由于是向FTP服务发起连接,因此目的端口为FTP服务的熟知端口,为21。

序列号:0X732020CD,此序列号为TCP程序随机出的字节编号。

确认序号:0X00000000,第一个发出的连接请求中,确认号为0。

TCP首部长度:7,TCP首部长度包括TCP报头长度和数据长度,这个字段表示TCP报头长度,其中20字节为标准TCP报头长度,另有8字节选项字段长度,选项字段中和服务器端协商了最大报文段长度。

标识位:SYN位置1,只有TCP连接中三次握手第一次连接的报文段中SYN位置1。

窗口大小:65535,默认大小。

校验和:0X5D64,校验和是对TCP报头、数据和伪首部进行计算得出的校验和。

TCP协议分析实验报告

TCP协议分析实验报告

TCP协议分析实验报告实验4传输层协议分析一、实验目的1、学习3CDaemon FTP服务器的配置和使用,分析TCP报文格式,理解TCP的连接建立、和连接释放的过程。

2、学习3CDaemon TFTP服务器的配置和使用,分析UDP报文格式,理解TCP协议与UDP协议的区别。

二、实验工具软件3CDaemon软件简介3CDaemon是3Com公司推出的功能强大的集FTP Server、TFTP Server、Syslog Server 和TFTP Client于一体的集成工具,界面简单,使用方便。

这里主要介绍实验中需要用到的FTP Server功能和TFTP Server功能。

1、FTP Server功能(1)配置FTP Server功能:选中左窗格功能窗口,打开FTP Server按钮,单击窗格中的 Configure FTP Server按钮,打开3CDaemon Configuration配置窗口,配置FTP Server功能。

这里需要设置的就是“Upload/Download”路径,作为FTP Server的文件夹,其它选项可以使用系统缺省设置。

设置完成后,单击确认按钮,设置生效。

(2)在实验中,我们使用3CDaemon系统内置的匿名帐户“anonymous”登陆FTP 服务器,客户端使用微软FTP客户端命令,关于Ftp命令的说明介绍如下。

(3) Ftp命令的说明FTP的命令格式:ftp[-v][-d][-i][-n][-g][-w:windowsize][主机名/IP地址] 其中:-v不显示远程服务器的所有响应信息;-n限制ftp的自动登录;-i在多个文件传输期间关闭交互提示-d允许调试、显示客户机和服务器之间传递的全部ftp命令;-g不允许使用文件名通配符;-w:windowsize忽略默认的4096传输缓冲区。

使用FTP命令登录成功远程FTP服务器后进入FTP子环境,在这个子环境下,用户可以使用FTP的内部命令完成相应的文件传输操作。

tcp协议实验报告

tcp协议实验报告

tcp协议实验报告TCP协议实验报告一、引言在计算机网络中,TCP(Transmission Control Protocol)是一种常用的传输层协议,负责实现可靠的数据传输。

本实验旨在通过对TCP协议的实验研究,深入理解其工作原理和性能特点。

二、实验目的1. 理解TCP协议的基本原理和机制。

2. 掌握TCP协议的连接建立、数据传输和连接释放过程。

3. 了解TCP协议的流量控制和拥塞控制机制。

三、实验环境1. 操作系统:Windows 102. 实验工具:Wireshark、Python四、实验过程1. 连接建立在实验中,我们使用Python编写了一个简单的TCP服务器和客户端程序。

首先,客户端向服务器发起连接请求(SYN包),服务器接收到请求后发送确认包(SYN+ACK包),最后客户端发送确认包(ACK包)完成连接建立过程。

2. 数据传输在连接建立后,我们通过客户端向服务器发送数据,观察数据在网络中的传输情况。

Wireshark工具可以捕获和分析网络数据包,我们可以通过它来查看TCP 数据包的详细信息,包括源地址、目的地址、序列号、确认号等。

3. 连接释放当数据传输完成后,我们需要关闭TCP连接。

在实验中,我们模拟了正常关闭连接和异常关闭连接两种情况。

正常关闭连接时,客户端和服务器分别发送FIN包和ACK包,最后双方都发送FIN包完成连接释放。

异常关闭连接时,我们可以通过强制关闭客户端或服务器进程来模拟,观察TCP协议对连接异常关闭的处理过程。

五、实验结果通过实验,我们观察到TCP协议的一些重要特点和性能表现:1. 可靠性:TCP协议通过序列号和确认号机制,确保数据的可靠传输。

如果接收方收到的数据包乱序或丢失,TCP协议会要求发送方重新发送。

2. 流量控制:TCP协议通过滑动窗口机制实现流量控制,防止发送方发送速度过快导致接收方无法处理。

当接收方缓冲区已满时,会发送窗口为0的ACK包,告知发送方暂停发送。

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告精编

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告精编

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告精编实验七:传输层可靠传输协议-GBN编程实验报告一、实验目的1. 理解传输层的可靠传输协议GBN(Go-Back-N)的工作原理;2. 利用Python编程实现GBN协议;3.通过实验验证GBN协议的可靠性。

二、实验环境1. 操作系统:Windows 10;2. 开发工具:Python3.9;3. Python库:socket, threading。

三、实验原理GBN(Go-Back-N)协议是一种滑动窗口协议,用于实现可靠的传输。

在GBN协议中,发送方可以连续发送一批数据包,每个数据包都有一个序号。

接收方会按照相同的序号顺序接收并确认收到的数据包,若一些数据包丢失,则接收方会等待一定时间,然后要求发送方重传从丢失的数据包开始之后的所有数据包。

在本实验中,我们将通过编程实现一个简化的GBN协议。

发送方和接收方将通过socket进行通信。

发送方将发送一定数量的数据包,接收方将模拟数据包丢失,并且在一段时间后要求发送方重传。

四、实验过程1. 建立发送方和接收方的socket连接,并互相绑定IP地址和端口号;2.发送方将一定数量的数据包发送给接收方;3.接收方按照GBN协议的规定接收数据包,并发送确认信息给发送方;4.发送方接收到确认信息后,继续发送下一批数据包;5.当接收方丢失数据包时,等待一段时间之后要求发送方重传;6.发送方收到重传请求后,重新发送从丢失的数据包开始之后的所有数据包;7.重复步骤2-6,直到所有数据包都被成功接收。

五、实验结果经过多次实验,数据包的发送与接收均顺利进行。

发送方能够根据接收方的确认信息进行滑动窗口的滑动,并实现重传功能。

接收方也能够检测到丢失的数据包,并要求发送方进行重传。

整个传输过程基本完成了GBN协议可靠性传输的要求。

六、实验总结通过本次实验,我深入理解了传输层的可靠传输协议GBN的工作原理,并通过编程实现了一个简化的GBN协议。

实验五、传输层可靠传输协议GBN编程实验报告

实验五、传输层可靠传输协议GBN编程实验报告

实验五、传输层可靠传输协议GBN编程实验报告序号:姓名:杨学号:成绩一、实验目的:1、编程实现简单可靠的数据传输GBN协议,模拟可靠数据传输2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。

二、实验指导:参考教材。

三、实验要求:编程实现一个GBN传输协议,程序源代码:发送方源代码:// sender.cpp发送方程序代码,定义控制台应用程序的入口点//#include <stdafx.h>#include <iostream>#include <WinSock2.h>#include <string.h>#include <../header/ARQ.h>#include <../header/Exception.h>#define SERVER_PORT 2011 // 服务器端口#define MAXRETRY 5 //最大重传次数#define TIMEOUT 2000 // 传送传时时间#pragma comment(lib,"ws2_32.lib")//设置link时的lib库using namespace std;SOCKET PrimaryUDP;char ServerIP[20];char FilePath[MAX_PATH];bool g_number = false; // 用作奇偶检校的序号char g_bcc;// 返回的控制字符HANDLE m_hEvent;void InitWinSock(){WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){throw Exception("Windows sockets 2.2 startup unsuccessful");}else{printf("Using %s (Status: %s)\n",wsaData.szDescription, wsaData.szSystemStatus);printf("with API versions %d.%d to %d.%d\n\n",LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion),LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));}}void mksock(int type){PrimaryUDP = socket(AF_INET, type, 0);if (PrimaryUDP < 0){throw Exception("create socket error");}}void BindSock(){sockaddr_in sin;sin.sin_addr.S_un.S_addr = INADDR_ANY;sin.sin_family = AF_INET;sin.sin_port = 0;if (bind(PrimaryUDP, (struct sockaddr*)&sin, sizeof(sin)) < 0) throw Exception("bind error");}bool ASendto(){sockaddr_in remote;remote.sin_addr.S_un.S_addr = inet_addr(ServerIP);remote.sin_family = AF_INET;remote.sin_port = htons(SERVER_PORT);int fromlen = sizeof(remote);// 打开文件FILE * file;if((file = fopen(FilePath, "rb")) == NULL){cout<<FilePath<<" open error"<<endl;return false;}cout<<"file open succeed"<<endl;// 设置文件指针位置SetFilePointer(file, 0, NULL, FILE_BEGIN);BSC bsc;bsc.header = STX;bsc.tail = ETX;// 设为有信号SetEvent(m_hEvent);// 分段序号bool number = false;unsigned long dwRead = -1;bool sendComplete = false;while(!sendComplete){// 清空数据memset(bsc.data, 0, MAXBSCLENGTH);// 当前分块的奇偶序号bsc.number=number;// 记录当前的分块序号g_number = bsc.number;if (dwRead ==-1)//第一次应发送文件请求消息{// 发送文件请求bsc.bcc = ENQ;char * filename = FilePath;if ((filename = strrchr(FilePath,'\\'))==NULL)filename = FilePath;else++filename;strcpy(bsc.data,filename);dwRead = 0;}else{if(!feof(file)){bsc.bcc = SYN;int i = fread(bsc.data, sizeof(char),MAXBSCLENGTH , file);cout<<"read:"<<i<<"\tsend:"<<sizeof(bsc.data)<<endl;dwRead+=i;}else{// 发送完毕bsc.bcc = EOT;sendComplete = true;cout<<"send complete.send size:"<<dwRead<<endl;fclose(file);}}for(int i=0;i<MAXRETRY;i++){sendto(PrimaryUDP,(char*)&bsc,sizeof(bsc),0,(sockaddr*)&remote,fromlen);ResetEvent(m_hEvent);DWORD reslut = WaitForSingleObject(m_hEvent,TIMEOUT);if (reslut == WAIT_OBJECT_0){// 收到应答消息,一种是ACK,一种是NAKif (g_bcc == NAK){if (i == MAXRETRY -1){return false;}// 继续重传continue;}else{ // 收到应答消息//cout<<"send succeed"<<endl;break;}}else if(i == MAXRETRY-1){cout<<"send file failed"<<endl;return false;}} // 开始发下一段数据number = !number;}return true;}DWORD WINAPI ARecv(LPVOID lpParam){sockaddr_in remote;int sinlen = sizeof(remote);BSC buffer;int iread = 0;while (true){iread = recvfrom(PrimaryUDP,(char*)&buffer,sizeof(buffer),0,(sockaddr*)&remote,&sinlen);// 处理ACK与NAKif (iread == SOCKET_ERROR){continue;}// 与当前的分块序号进行比较,看是不是当前块的应答if (buffer.number!=g_number){continue;}if (buffer.bcc == ACK || buffer.bcc == NAK){// 保存返回的控制字符g_bcc = buffer.bcc;SetEvent(m_hEvent);}}return 0;}int _tmain(int argc, _TCHAR* argv[]){InitWinSock();mksock(SOCK_DGRAM);BindSock();cout<<"Please input receiver ip:";cin>>ServerIP;cout<<"Please input the file path:";cin>>FilePath;m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);CreateThread(NULL, 0, ARecv, NULL, 0, NULL);if (!ASendto()){cout<<"file send failed"<<endl;getchar();}getchar();getchar();return 0;}接收方源代码:// receiver.cpp 接收方程序代码,定义控制台应用程序的入口点// #include <stdafx.h>#include <iostream>#include <WinSock2.h>#include <../header/ARQ.h>#include <../header/Exception.h>#define SERVER_PORT 2011// 服务器端口#pragma comment(lib,"ws2_32.lib")//设置link时的lib库using namespace std;SOCKET PrimaryUDP;char FileSavePath[MAX_PATH];void InitWinSock(){WSADATA wsaData;if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0){throw Exception("Windows sockets 2.2 startup unsuccessful");}else{printf("Using %s (Status: %s)\n",wsaData.szDescription, wsaData.szSystemStatus);printf("with API versions %d.%d to %d.%d\n\n",LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion),LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));}}void mksock(int type){PrimaryUDP = socket(AF_INET, type, 0);if (PrimaryUDP < 0){throw Exception("create socket error");}}void BindSock(){sockaddr_in sin;sin.sin_addr.S_un.S_addr = INADDR_ANY;sin.sin_family = AF_INET;sin.sin_port = htons(SERVER_PORT);if (bind(PrimaryUDP, (struct sockaddr*)&sin, sizeof(sin)) < 0) throw Exception("bind error");}DWORD WINAPI ARecv(LPVOID lpParam){FILE * file = NULL;sockaddr_in remote;int sinlen = sizeof(remote);BSC buffer,bsc;bsc.header = STX;bsc.tail = ETX;memset(bsc.data, 0, MAXBSCLENGTH);int iread = 0;unsigned long dwReceived = 0;bool number = true;//发送方的数据开始发送时的序号设为0,为了判断是不是第一次一段数据,所以这里标为1while (true){iread = recvfrom(PrimaryUDP,(char*)&buffer,sizeof(buffer),0,(sockaddr*)&remote,&sinlen) ;if (SOCKET_ERROR == iread || buffer.header != STX || buffer.tail != ETX) {// 数据错误,发送负应答cout<<"received a error data"<<endl;bsc.bcc = NAK;bsc.number=false;//number这时没有实际的意义sendto(PrimaryUDP,(char*)&bsc,sizeof(bsc),0,(sockaddr*)&remote,sinlen);continue;}if (buffer.number == number){// 重复收到数据,发送应答消息cout<<"received a repeat data"<<endl;bsc.bcc = ACK;bsc.number = buffer.number;sendto(PrimaryUDP,(char*)&bsc,sizeof(bsc),0,(sockaddr*)&remote,sinlen);continue;}switch(buffer.bcc){case ENQ:{number = !number;//准备接收下一段数据// 文件请求cout<<"received a file request message,filename:"<<buffer.data<<endl;// 打开文件if(strcmp((FileSavePath+strlen(FileSavePath)-1),"\\")!=0)strcat(FileSavePath,"\\");strcat(FileSavePath,buffer.data);if((file = fopen(FileSavePath, "ab")) == NULL){cout<<"file open failed"<<endl;return -1;}break;}case SYN:{number = !number;// 文字发送中int i =0;if((i=fwrite(buffer.data, sizeof(char), sizeof(buffer.data), file)) <= 0){cout << "write failed" << endl;return -1;}dwReceived += i;cout<<"write:"<<i<<"\treceived:"<<sizeof(buffer.data)<<endl;break;}case EOT:{number = !number;// 文件发送完毕cout<<"file received completely,save path:"<<FileSavePath<<",received size:"<<dwReceived<<endl;fclose(file);break;}default:{// 数据错误,发送负应答bsc.bcc = NAK;bsc.number=false;sendto(PrimaryUDP,(char*)&bsc,sizeof(bsc),0,(sockaddr*)&remote,sinlen);continue;break;}} // 发送应答消息bsc.bcc = ACK;bsc.number = buffer.number;sendto(PrimaryUDP,(char*)&bsc,sizeof(bsc),0,(sockaddr*)&remote,sinlen);}return 0;}int _tmain(int argc, _TCHAR* argv[]){InitWinSock();mksock(SOCK_DGRAM);BindSock();CreateThread(NULL, 0, ARecv, NULL, 0, NULL);cout<<"Please input the file save path:";cin>>FileSavePath;cout<<"receiver start succeed"<<endl;getchar();getchar();return 0;}四、实验总结通过这次实验基本弄清了停止等待协议的工作机理。

UDP协议分析实验报告

UDP协议分析实验报告

实验三 UDP 协议分析一、实验目的1. 掌握传输层的UDP协议内容;2. 理解UDP协议的工作原理;2. 了解应用层协议与传输层协议的关系。

二、实验内容1. 学习UDP协议的通信过程;2. 分析UDP协议报文格式;3. 学会计算UDP的校验和。

三、实验原理UDP(User Datagram Protocol)用户数据报协议(RFC 768)一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

UDP 协议基本上是 IP 协议与上层协议的接口。

由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。

这是通过使用UDP 的“端口号”完成的。

例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。

源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。

与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。

由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。

UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。

UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。

UDP协议结构:(1) Source Port —16位。

源端口是可选字段。

当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。

如果不使用,设置值为0。

(2) Destination Port — 16位。

目标端口在特殊因特网目标地址的情况下具有意义。

传输层协议分析实验报告

传输层协议分析实验报告

实验4 传输层协议分析一、实验目的1、学习3CDaemon FTP服务器的配置和使用,分析TCP报文格式,理解TCP 的连接建立、和连接释放的过程。

2、学习3CDaemon TFTP服务器的配置和使用,分析UDP报文格式,理解TCP 协议与UDP协议的区别。

二、实验工具软件3CDaemon软件简介3CDaemon是3Com公司推出的功能强大的集FTP Server、TFTP Server、Syslog Server和TFTP Client于一体的集成工具,界面简单,使用方便。

这里主要介绍实验中需要用到的FTP Server功能和TFTP Server功能。

1、FTP Server功能(1)配置FTP Server功能:选中左窗格功能窗口,打开FTP Server按钮,单击窗格中的Configure FTP Server按钮,打开3CDaemon Configuration配置窗口,配置FTP Server功能。

这里需要设置的就是“Upload/Download”路径,作为FTP Server的文件夹,其它选项可以使用系统缺省设置。

设置完成后,单击确认按钮,设置生效。

(2)在实验中,我们使用3CDaemon系统内置的匿名帐户“anonymous”登陆FTP服务器,客户端使用微软FTP客户端命令,关于Ftp命令的说明介绍如下。

(3) Ftp命令的说明FTP的命令格式:ftp[-v][-d][-i][-n][-g][-w:windowsize][主机名/IP地址]2、TFTP Server功能(1) TFTP Server功能配置基本同上(FTP erver功能)。

(2)实验中,为了与TFTP服务器连通,可以使用Windows命令行模式下的TFTP 客户端命令,命令格式如下:TFTP[-i]host[GET|PUT]source[destination]三、实验内容和步骤1、TCP协议分析实验(1)按照上面3CDaemon软件的介绍方法在PC1上建立FTP服务器;(2)在PC1和PC2中运行Ethereal,开始截获报文,为了只截获到与我们实验有关的内容,将截获条件设置为对方主机的IP地址,如PC1的截获条件为“host 192.168.1.xx”(注释:PC2的IP地址);(3)在PC2上打开命令行窗口,执行如下操作:C:\Documents and Settings\Administrator>ftpftp>openTo 192.168.1.yy(注释:PC1的IP地址)Connected to 192.168.1.yy.220 3Com 3CDaemon FTP Server Version 2.0User(192.168.1.yy:(none)):anonymous331 User name ok,need passwordPassword:230-The response'is not valid.230-Next time,please use your email address as password.230 User logged inftp>quit221 Service closing control connectionC:\Documents and Settings\Administrator>(4)停止截获报文,将截获的结果保存为FTP-学号,按下列要求分析截获的结果;a)结合本节TCP协议介绍部分的内容,分析TCP连接建立的“三次握手”过程,找到对应的报文,填写表1(传输方向填写PC2-> PC1或PC2<-PC1)。

分析tcp协议实验报告

分析tcp协议实验报告

分析tcp协议实验报告
《分析TCP协议实验报告》
近年来,随着互联网的快速发展,TCP协议作为互联网传输层协议的重要组成
部分,一直备受关注。

为了更好地了解TCP协议的性能和特点,我们进行了一
系列的实验,并撰写了实验报告,以便更深入地了解TCP协议的运行机制和优
化方法。

在实验中,我们首先搭建了一个简单的网络环境,然后使用不同的工具和技术
对TCP协议进行了测试和分析。

我们发现,在实际的网络环境中,TCP协议的
性能受到多种因素的影响,包括网络延迟、带宽限制和数据包丢失等。

通过实验,我们深入分析了这些因素对TCP协议性能的影响,并提出了一些优化建议,以改善TCP协议在实际应用中的性能表现。

另外,我们还对TCP协议的拥塞控制机制进行了深入研究。

通过实验,我们发
现TCP协议的拥塞控制机制在一定程度上可以有效地避免网络拥塞和数据包丢失,但也存在一些局限性和不足之处。

我们对这些问题进行了详细的分析和讨论,并提出了一些改进的建议,以提高TCP协议在拥塞控制方面的性能。

总的来说,通过本次实验和报告,我们深入分析了TCP协议的性能和特点,提
出了一些优化和改进的建议,以便更好地应用和推广TCP协议。

我们相信,通
过不断地实验和研究,我们可以更好地理解和利用TCP协议,为互联网的发展
和应用做出更大的贡献。

实验4传输层本科生

实验4传输层本科生

16位源端口号 16位长度
数据
16位目的端口号 16位校验和
实验内容
TCP协议基本分析实验 TCP滑动窗口实验 TCP糊涂窗口避免实验 TCP其它拥塞控制实验(选作) UDP协议分析实验 TCP编程实验(选做) 实验报告中第7、8、9、11题为选作。
TCP基本协议分析
图4-7接线如下图,所有线通过交换机接; 2人一小组,共用交换机和路由器各1台。
时间
PC A
Fin P Ack P+1
Fin Q Ack Q+1
PC B
拥塞控制-滑动窗口
发送窗口
接收窗口:接收端空闲的接收缓存的大小
滑动窗口-发送窗口变化
糊涂窗口综合症
含义
❖ 接收方通告了一个小的窗口 ❖ 发送方发送少量的数据 ❖ 导致传输效率降低
解决
❖ 接收方不通告小窗口:推迟确认 ❖ 发送方:Nagle算法(尽量一次发送较大数据)
下周实验
应用层实验
谢谢欣赏
THANK YOU FOR WATCHING
16位校验和 选项 数据
16位目的端口号
16位窗口大小
16位紧急指针
实验原理 — TCP建立连接过程
时间
时间
PC A
syn seq=N ctl=syn syn seq=M ctl=syn ack=N+1 seq=N+1 ctl=ack ck=M+1
数据
PC B
实验原理 — TCP撤销连接过程
时间
超时和重传 超时重传时间:RTO 平均往返时延:RTT 修正的Karn算法
窗口探查技术:探查报文的发送间隔 快重传和快恢复:定性分析
体会上述方法的协同工作。

传输层协议分析_实验报告

传输层协议分析_实验报告

高校-----计算机学院 实验报告书课程名称: 《TCP/IP原理及应用》实验题目:实验名称:班 级:学 号:姓 名:成 绩:指导教师:年 月 日实验报告课程名称课程名称 计算机网络计算机网络 学号学号 学生姓名学生姓名学生姓名 组号组号组号_______________辅导教师辅导教师辅导教师 罗娅罗娅罗娅 系别系别网络工程系实验室名称实验室名称实验时间实验时间1.实验名称.实验名称实验四 传输层协议分析2. 实验目的实验目的(1)利用HTTP 协议,分析TCP 建立连接的三次握手、释放连接的四次握手以及数据传输的控制方法;(2)利用QQ 软件分析相应的UDP 报文结构 3. 实验内容实验内容(1)TCP 协议分析实验(2)UDP 协议分析实验4. 预习内容预习内容(1)描述UDP 协议的报文格式。

(2)结合TCP 标志字段的相应比特和SYN 、ACK 字段描述TCP 建立连接的过程第一次握手:主机A 发送位码为syn =1,随机产生seq number=1234567的数据包到服务器,主机B 由SYN=知道,A 要求建立联机;第二次握手:主机B 收到请求后要确认联机信息,向A 发送ack number=(主机A 的seq+1),syn=1,ack=1随机产生seq=7654321的包第三次握手:主机A 收到后检查ack number 是否正确,即第一次发送的seq number+1,以及位码ack 是否为1,若正确,主机A 会再发送ack number=(主机B 的seq+1),ack=1,主机B 收到后确认seq 值与ack=则连接建立成功。

完成三次握手,主机A 与主机B 开始传送数据。

(3)结合TCP 标志字段的相应比特和FIN 、ACK 字段描述TCP 释放连接的基本过程。

第一次握手:客户发送 FIN=1,seq=u 给服务器客户把连接释放报文段首部的 FIN = 1,其序号seq = u ,等待服务器的确认。

传输层协议分析实验报告

传输层协议分析实验报告

传输层协议分析实验报告一、实验目的本实验旨在通过对传输层协议的深入分析和研究,掌握传输层协议的工作原理和实现机制,并以此为基础,进一步理解网络通信的整体结构和工作流程。

二、实验原理传输层协议是计算机网络中负责端到端通信的协议,常用的传输层协议有TCP和UDP。

TCP(Transmission Control Protocol)提供可靠的、面向连接的通信服务,保证数据的完整性和顺序。

UDP(User Datagram Protocol)则提供无连接的通信服务,数据传输速度快但不保证数据的可靠性。

三、实验内容本实验主要分为两部分,第一部分是对TCP协议的分析,第二部分是对UDP协议的分析。

1.TCP协议分析首先,我们通过抓包工具Wireshark,捕获一段TCP协议的通信数据。

然后,我们观察捕获到的数据包,分析TCP的连接建立、数据传输和连接释放的过程。

在连接建立阶段,我们可以看到TCP连接的三次握手过程,即客户端向服务器发送SYN报文段,服务器回复SYN+ACK报文段,客户端再次回复ACK报文段。

通过这个过程,建立了客户端和服务器之间的可靠连接。

在数据传输阶段,我们可以看到TCP协议通过序号和确认号来保证数据的可靠性。

发送方将数据划分为若干个报文段,并为每个报文段分配一个序号。

接收方在接收到报文段后,通过确认号告知发送方已接收到数据,并通过序号保证数据的顺序。

在连接释放阶段,我们可以看到TCP连接的四次挥手过程,即发送方向接收方发送FIN报文段,接收方回复ACK报文段,然后接收方再向发送方发送FIN报文段,发送方回复ACK报文段。

通过这个过程,断开了客户端和服务器之间的连接。

根据抓包分析的结果,我们对TCP协议的工作原理有了更深入的理解。

2.UDP协议分析接下来,我们捕获一段UDP协议的通信数据,并通过Wireshark进行分析。

与TCP不同,UDP是一种无连接的协议,数据传输快速但不保证数据的可靠性。

计算机网络与通信传输层协议分析实验报告

计算机网络与通信传输层协议分析实验报告

南昌航空大学实验报告年月日课程名称:计算机网络与通信实验名称:传输层协议分析班级:学生姓名:学号: 2212893107指导教师评定:签名:一.实验目的理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输的编号与确认的过程;学习TFTP工具3CDaemon软件的使用,分析UDP协议报文格式。

二.实验内容1.TCP协议基本分析2. UDP协议分析三.实验过程1.TCP协议基本分析1.TCP的报文格式,2. TCP连接的建立,3. TCP数据的传送4. TCP连接的释放步骤1 相邻两台机器分别为PCA和PCB。

在PCB上下载并安装Telnetd,然后建立用于登录的用户和密码。

步骤2在PCA上运行WireShark进行报文截获,同时设置相应的显示过滤规则。

步骤3PCA上打开Windows命令窗口,执行telnet到PCB,然后执行“exit”退出,从而完成一次TCP协议连接的建立和释放。

步骤4分析截获报文中数据发送部分的第一条TCP报文及其确认报文。

步骤5步骤6TCP连接建立时,其报文首部与其他TCP报文不同,有一个option字段,它的作用是什么,值给多少?结合IEEE802.3协议规定的以太网最大帧长度分析此数据是怎么样得出的。

步骤7分析TCP连接的释放过程中,选择TCP连续撤消的四个报文,将报文信息填入下表:步骤8分析TCP数据传送阶段的前8个报文,将报文信息填入下表:请写出TCP 数据部分长度的计算公式。

数据传送阶段第一个报文的序号字段值是否等于连接建立时第三个报文的序号? 2. UDP 协议分析步骤1相邻两台机器分别为PCA 和PCB 。

步骤2 根据3CDeamon 软件的配置,在PCA 上配置TFTP server 功能,在PCB 上配置TFTP client 功能。

选择TFTP client 要从TFTP server 下载的文件名。

步骤3 运行PCA 、PCB 上的Wireshark ,开始报文截获。

传输层协议分析实验报告(五篇模版)

传输层协议分析实验报告(五篇模版)

传输层协议分析实验报告(五篇模版)第一篇:传输层协议分析实验报告2.传输层协议分析2.A 数据包捕获分析部分2.1 实验目的理解TCP 报文首部格式和字段的作用,TCP 连接的建立和释放过程,TCP 数据传输中编号与确认的作用。

2.2 实验内容应用 TCP 应用程序传输文件,截取 TCP 报文,分析TCP 报文首部信息,TCP 连接的建立过程,TCP 数据的编号和确认机制。

2.3 实验原理TCP 协议是传输控制协议的简称,工作在网络层协议之上,是面向连接的,可靠的,端到端的传输层协议。

1)TCP 的报文格式 TCP 报文段分为头部和数据两部分,如图 1:图 1TCP 报文段的总体结构 TCP 首部 TCP 数据部分TCP 报文段首部又分为固定部分和选项部分,固定部分为20B,如图 2 所示,这些字段的组合实现了 TCP 的所有功能。

图 2 TCP 报文段的首部源端口目的端口序号确认号头部长度(4bit)保留 U R G A C K P S H R S T S Y N F I N窗口校验和紧急指针选项(长度可变)填充 TCP 采用传输输连接的方式传送 TCP 报文,传输连接包括连接建立、数据传输和连接释放三个阶段。

2)TCP 连接的建立 TCP 连接建立采用“3 次握手”方式。

首先,主机 A 的 TCP 向主机 B 的 TCP 发出连接请求报文段,其首部中的同步位 SYN 应置 1,同时选择一个序号 X,表明在后面传送数据时的第一个数据字节的序号是 X+1,如图 3所示:图 3TCP 连接建立的 3 次握手过程然后,主机 B 的 TCP 收到连接请求报文段后,若同意,则发回确认。

在确认报文段中应将 SYN 和 ACK 都置 1,确认号应为 X+1,同时也为自己选择一个序号 Y。

最后,主机 A 的 TCP 收到 B 的确认后,要向 B 发回确认,其 ACK 置 1,确认号为 Y+1,而自己的序号为 X+1。

传输层实验报告心得

传输层实验报告心得

一、实验背景随着计算机网络技术的飞速发展,传输层协议在计算机网络通信中扮演着至关重要的角色。

为了更好地理解传输层协议的工作原理,提高自己的网络通信能力,我们进行了传输层实验。

通过本次实验,我对传输层协议有了更加深入的认识,以下是我对本次实验的心得体会。

二、实验目的1. 理解传输层协议的基本概念和功能;2. 掌握TCP和UDP协议的工作原理;3. 分析TCP和UDP协议在实际应用中的优缺点;4. 提高网络通信能力,为今后的网络编程打下基础。

三、实验内容1. TCP协议分析(1)实验步骤①编写TCP客户端程序,向服务器发送数据;② 编写TCP服务器程序,接收客户端发送的数据;③ 分析TCP报文首部信息,了解TCP连接的建立、数据传输和连接释放过程。

(2)实验心得通过本次实验,我深入了解了TCP协议的工作原理。

TCP协议采用面向连接的方式,在传输数据前需要建立连接,传输完成后释放连接。

在实验过程中,我掌握了TCP三次握手、四次挥手的过程,以及TCP报文首部中各个字段的作用。

2. UDP协议分析(1)实验步骤① 编写UDP客户端程序,向服务器发送数据;② 编写UDP服务器程序,接收客户端发送的数据;③ 分析UDP报文首部信息,了解UDP协议的特点。

(2)实验心得UDP协议与TCP协议相比,具有传输速度快、无连接、不可靠等特点。

通过本次实验,我掌握了UDP协议的工作原理,了解了UDP报文首部信息,以及UDP在实际应用中的优缺点。

四、实验总结1. 理解了传输层协议的基本概念和功能,掌握了TCP和UDP协议的工作原理;2. 分析了TCP和UDP协议在实际应用中的优缺点,为今后的网络编程打下了基础;3. 提高了网络通信能力,为解决实际网络问题积累了经验。

五、展望通过本次实验,我对传输层协议有了更加深入的认识。

在今后的学习和工作中,我将继续关注网络通信技术的发展,努力提高自己的网络编程能力。

同时,我将不断拓展自己的知识面,为我国计算机网络事业贡献自己的力量。

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告

计算机网络原理实验七传输层可靠传输协议GBN编程实验报告

实验七、传输层可靠传输协议G B N编程实验报告序号:姓名:学号:成绩指导老师:一、实验目的:1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略;二、实验原理:在GBN中,发送端不需要在接收到上一个数据包的ACK 后才发送下一个数据包,而是可以连续发送数据包;在发送端发送的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发;三、结果分析:本次试验中采用java语言进行程序编写代码注释:(一)S ender类import class Sender extends Thread{public int windowsize=3; ; import .;public class GBN extends Thread{static void senddelay int x throws InterruptedException{if x==1 {sleep300; "发送数据分组时发生延迟:300毫秒"; }else if x==2 {sleep750; "发送数据分组时发生延迟:750毫秒";}else if x==3 {sleep1200;"发送数据分组时发生延迟:1200毫秒";}else if x==4 {sleep3000;"发送数据分组时发生延迟:3000毫秒";}else;}public static void mainString args throws IOException, InterruptedException {Sender s=new Sender;Receiver re=new Receiver;; extInt3;int randelay=new Random.nextInt5;;senddelay randelay; extInt3;int randelay=new Random.nextInt5;; //计时开始2秒时间senddelay randelay; //设置随机值,模拟数据传输延迟if ran=1 i,s;//设置随机值,模拟数据丢包过程else "序号为"+i+"的分组在传给接收方途中发生了丢包";}}"以下是每个数据分组被发送过的次数的统计结果";forint i=0;i<7;i++ //显示关于每个数据包发送次数的统计表"序号为"+i+"的数据分组被发送过的次数为:"+retimesi;0;}}结果截图:。

分析tcp协议实验报告

分析tcp协议实验报告

分析tcp协议实验报告TCP协议实验报告分析在计算机网络中,TCP(Transmission Control Protocol,传输控制协议)是一种常用的传输层协议,它提供可靠的、面向连接的通信。

TCP协议的设计和实现对于网络通信的稳定性和性能至关重要。

本文将对TCP协议的实验报告进行分析,探讨其关键内容和实验结果。

实验目的和背景首先,实验报告应明确实验的目的和背景。

TCP协议的设计目标是提供可靠的数据传输,确保数据的完整性和顺序性。

通过实验,可以验证TCP协议的可靠性和性能,并分析其在不同网络环境下的适应性。

实验设计和方法实验报告中应包含实验的设计和方法。

实验设计应包括实验所使用的工具和设备,实验所涉及的网络拓扑结构,以及实验过程中的具体步骤和参数设置。

实验方法应明确实验的操作流程和数据采集方式。

实验结果和分析实验报告的重点是实验结果和分析。

实验结果可以包括数据传输速度、丢包率、延迟等性能指标的测量结果。

实验结果应以图表的形式展示,并对结果进行详细的分析。

在分析实验结果时,可以从以下几个方面进行讨论:1. 可靠性:通过实验结果可以评估TCP协议在不同网络环境下的可靠性。

例如,可以比较在高丢包率和低丢包率环境下的数据传输情况,分析TCP协议对丢包的处理能力。

2. 吞吐量:实验结果可以反映TCP协议的吞吐量性能。

通过比较不同网络条件下的吞吐量,可以评估TCP协议在不同网络带宽和拥塞程度下的性能表现。

3. 延迟:实验结果可以反映TCP协议的延迟性能。

通过测量数据传输的延迟时间,可以评估TCP协议在不同网络环境下的响应速度。

4. 拥塞控制:实验结果可以揭示TCP协议的拥塞控制机制。

通过观察拥塞窗口的变化和传输速率的调整,可以评估TCP协议对网络拥塞的响应能力。

实验总结和展望实验报告应包含对实验结果的总结和展望。

总结部分可以对实验结果进行概括,并提出对TCP协议性能的评价和改进建议。

展望部分可以探讨未来可能的研究方向和改进空间,以及对实验结果的进一步分析和验证。

tcp协议 实验报告

tcp协议 实验报告

tcp协议实验报告TCP协议实验报告引言:TCP(Transmission Control Protocol)是一种广泛应用于互联网的传输层协议,它提供了可靠的、面向连接的通信服务。

本实验旨在深入理解TCP协议的工作原理和性能特点,并通过实际操作验证其可靠性和稳定性。

实验目的:1. 理解TCP协议的三次握手过程,掌握建立连接的方法;2. 探究TCP协议的流量控制和拥塞控制机制;3. 通过实验验证TCP协议的可靠性和稳定性。

实验环境:本实验使用了两台计算机,分别作为客户端和服务器。

客户端通过一个简单的应用程序向服务器发送数据,服务器接收数据并进行处理。

实验步骤:1. 建立连接在实验开始前,我们首先需要建立TCP连接。

客户端向服务器发送一个连接请求报文段,服务器收到请求后发送确认报文段,客户端再次发送确认报文段,完成三次握手过程。

2. 数据传输连接建立后,客户端可以向服务器发送数据。

我们通过应用程序模拟客户端发送一段文本数据,服务器接收并打印出来。

可以多次发送数据,观察TCP协议的可靠性,即使在网络不稳定的情况下,数据也能够正确传输。

3. 流量控制为了验证TCP协议的流量控制机制,我们可以在客户端发送数据的速度上做一些限制。

通过控制发送速度,观察服务器接收数据的速度是否受到影响。

可以逐渐增加发送速度,观察服务器的接收速度是否跟随增加。

4. 拥塞控制为了验证TCP协议的拥塞控制机制,我们可以模拟网络拥塞的情况。

通过限制带宽或增加网络延迟,观察TCP协议的拥塞控制机制如何调整发送速度。

可以观察到当网络出现拥塞时,TCP协议会自动降低发送速度以避免数据丢失。

实验结果分析:通过实验,我们可以得出以下结论:1. TCP协议的三次握手过程确保了连接的可靠性和稳定性,保证了数据能够正确传输。

2. TCP协议具有流量控制机制,可以根据接收方的处理能力动态调整发送速度,避免数据丢失。

3. TCP协议具有拥塞控制机制,可以根据网络情况自动调整发送速度,避免网络拥塞导致的数据丢失和延迟增加。

tcp协议 实验报告

tcp协议 实验报告

tcp协议实验报告TCP协议实验报告引言:TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。

它在互联网中扮演着重要的角色,负责数据的可靠传输和连接的管理。

本实验旨在深入了解TCP协议的工作原理和特性,并通过实验验证其可靠性和效率。

实验目的:1. 了解TCP协议的基本原理和工作机制;2. 掌握TCP协议的连接建立和断开过程;3. 验证TCP协议的可靠性和流量控制机制;4. 分析TCP协议的性能和优化方法。

实验环境:本实验使用了一台运行Linux操作系统的计算机。

实验步骤:1. 连接建立过程:TCP协议使用三次握手来建立连接。

首先,客户端向服务器发送一个SYN包,服务器收到后回复一个SYN+ACK包,最后客户端再回复一个ACK包。

通过抓包工具观察这个过程,并分析其中的数据包格式和字段含义。

2. 可靠性验证:a. 通过模拟网络丢包情况,验证TCP协议的可靠性。

在发送数据时,故意丢弃一部分数据包,观察TCP协议的重传机制是否能够保证数据的可靠传输。

b. 测试TCP协议的流量控制机制。

通过发送大量数据,观察TCP协议如何调整发送速率,避免网络拥塞。

3. 连接断开过程:TCP协议使用四次挥手来断开连接。

首先,客户端向服务器发送一个FIN包,服务器收到后回复一个ACK包,并进入CLOSE_WAIT状态。

然后,服务器向客户端发送一个FIN包,客户端回复一个ACK包。

最后,服务器接收到客户端的ACK包后,进入TIME_WAIT状态,等待一段时间后关闭连接。

观察这个过程,并分析其中的数据包格式和字段含义。

4. 性能分析和优化:a. 使用网络性能测试工具,如iperf,测试TCP协议的吞吐量和延迟。

分析测试结果,找出网络瓶颈并进行优化。

b. 分析TCP协议的拥塞控制机制,了解拥塞窗口的调整过程和拥塞避免算法。

通过调整拥塞窗口的大小,观察TCP协议对网络拥塞的响应。

传输层实训报告

传输层实训报告

一、实训目的本次传输层实训旨在使学生深入了解传输层协议的工作原理,掌握传输层协议的基本概念、功能以及实现方法。

通过实训,提高学生对传输层协议的理解和实际应用能力,为后续网络编程和系统设计打下坚实基础。

二、实训环境1. 操作系统:Windows 102. 编程语言:Python3.83. 库:socket库4. 实验工具:PyCharm IDE三、实训原理传输层负责在网络中提供端到端的通信服务,其主要协议有TCP和UDP。

TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,它通过三次握手建立连接,并在数据传输过程中保证数据的完整性和顺序。

UDP(用户数据报协议)是一种无连接的、不可靠的传输层协议,它不保证数据传输的完整性和顺序,但具有较低的延迟和较小的开销。

四、实训过程1. TCP协议实现(1)创建TCP服务器端程序,使用socket库的socket()函数创建一个socket 对象,并绑定到指定的端口。

(2)使用listen()函数使socket对象处于监听状态,等待客户端连接。

(3)使用accept()函数接受客户端连接,创建新的socket对象用于与客户端通信。

(4)使用recv()和send()函数进行数据传输。

(5)关闭socket对象,结束通信。

(6)编写TCP客户端程序,使用与服务器端类似的步骤实现数据传输。

2. UDP协议实现(1)创建UDP服务器端程序,使用socket库的socket()函数创建一个socket 对象,并绑定到指定的端口。

(2)使用recvfrom()函数接收客户端发送的数据,并获取客户端的IP地址和端口号。

(3)使用sendto()函数向客户端发送数据。

(4)关闭socket对象,结束通信。

(5)编写UDP客户端程序,使用与服务器端类似的步骤实现数据传输。

五、实训结果1. 成功实现了TCP和UDP协议的基本功能,包括连接建立、数据传输和连接关闭。

2. 通过实际编程,加深了对传输层协议的理解,掌握了TCP和UDP协议的实现方法。

tcp协议分析 实验报告

tcp协议分析 实验报告

tcp协议分析实验报告TCP协议分析实验报告一、引言TCP(Transmission Control Protocol)是互联网中最常用的传输层协议之一,负责在网络中可靠地传输数据。

本实验旨在对TCP协议进行分析,了解其工作原理以及性能特点。

二、实验目的1. 了解TCP协议的基本原理和工作流程;2. 分析TCP协议的可靠性和拥塞控制机制;3. 掌握使用网络抓包工具对TCP数据包进行分析。

三、实验环境与工具本实验使用的环境为Windows 10操作系统,实验工具为Wireshark网络抓包工具。

四、实验过程及结果1. TCP协议的基本原理和工作流程TCP协议是一种面向连接的协议,通过三次握手建立连接,保证数据的可靠传输。

在实验中,我们使用Wireshark对TCP连接过程进行抓包分析。

首先,客户端向服务器发送SYN包(同步请求);然后,服务器接收到SYN包后,向客户端发送SYN+ACK包(同步确认);最后,客户端接收到SYN+ACK包后,向服务器发送ACK包(确认)。

通过分析抓包数据,我们可以清楚地看到TCP连接建立的过程,并且可以查看每个包的详细信息,如源IP地址、目标IP地址、源端口、目标端口等。

2. TCP协议的可靠性和拥塞控制机制TCP协议通过序列号和确认应答机制来保证数据的可靠传输。

在实验中,我们可以通过Wireshark工具查看TCP数据包中的序列号和确认号,以及数据包的重传情况。

此外,TCP协议还具备拥塞控制机制,用于避免网络拥塞和保证网络的稳定性。

在实验中,我们可以通过查看TCP数据包的窗口大小和拥塞窗口大小来了解TCP协议的拥塞控制机制。

3. 使用Wireshark对TCP数据包进行分析Wireshark是一款功能强大的网络抓包工具,可以捕捉并分析网络数据包。

在实验中,我们可以使用Wireshark对TCP数据包进行抓包分析,以了解TCP协议的工作原理和性能特点。

通过Wireshark工具,我们可以查看每个TCP数据包的详细信息,如源IP地址、目标IP地址、源端口、目标端口、序列号、确认号、窗口大小等。

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

2、传输层协议分析
2、A数据包捕获分析部分
2、1 实验目得
理解TCP报文首部格式与字段得作用,TCP连接得建立与释放过程,TCP数据传输中编号与确认得作用。

2、2 实验内容
应用TCP应用程序传输文件,截取TCP报文,分析TCP报文首部信息,TCP连接得建立过程,TCP数据得编号与确认机制。

2、3实验原理
TCP协议就是传输控制协议得简称,工作在网络层协议之上,就是面向连接得,可靠得,端到端得传输层协议。

1)TCP得报文格式
TCP报文段分为头部与数据两部分,如图1:
图1TCP报文段得总体结构
TCP报文段首部又分为固定部分与选项部分,固定部分为20B,如图2所示,这些字段得组合实现了TCP得所有功能。

图2 TCP报文段得首部
01531
TCP采用传输输连接得方式传送TCP报文,传输连接包括连接建立、数据传输与连接释放三个阶段。

2) TCP连接得建立
TCP连接建立采用“3次握手"方式。

首先,主机A得TCP向主机B得TCP发出连接请求报文段,其首部中得同步位SYN应置1,同时选择一个序号X,表明在后面传送数据时得第一个数据字节得序号就是X+1,如图3所示:
然后,主机B得TCP收到连接请求报文段后,若同意,则发回确认.在确认报文段中应将SYN与ACK都置1,确认号应为X+1,同时也为自己选择一个序号Y.
最后,主机A得TCP收到B得确认后,要向B发回确认,其ACK置1,确认号为Y+1,而自己得序号为X+1。

TCP得标准规定,SYN置1得报文段都要消耗掉一个序号。

同时,运行客户进程得主机A得TCP通知上层应用进程,连接已经建立.当主机A向B发送第一个数据报文段时,其序号仍为X+1,因为前一个确认报文段并不消耗序号。

当运行服务器进程得主机B得TCP收到主机A得确认后,也通知其上层应用进程,连接已经建立.
另外,在TCP 连接建立得过程中,还利用TCP 报文段首部得选项字段进行双方最大报文段长度M SS 协商,确定报文段得数据字段得最大长度。

双方都将自己能够支持得MSS 写入选项字段,比较之后,取较小得值赋给MSS,并应用于数据传送阶段。

3) T CP 数据得传送
为了保证T CP 传输得可靠性,T CP 采用面向字节得方式,将报文段得数据部分进行编号,每个字节对应一个序号。

并在连接建立时,双方商定初始序号.在报文段首部中,序号字段与数据部分长度可以确定发送方传送数据得每一个字节得序号,确认号字段则表示接收方希望下次收到得数据得第一个字节得序号,即表示这个序号之前得数据字节均已收到。

这样既做到了可靠传输,又做到了全双工通信。

当然,数据传送阶段有许多复杂得问题与情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。

4)T CP 连接得释放
在数据传输结束后,通信得双方都可以发出释放连接得请求。

T CP 连接得释放采用“4次握手”。

如图
应用进程释放连接
A不再发送报文
放连接确认
B不再发送报文
A
图4 TCP 连接释放得4次握手过程
首先,设图4中主机A得应用进程先向其TCP 发出释放连接得请求,并且不再发送数据。

TCP 通知对方要释放从A到B 这个方向得连接,将发往主机B 得TC P报文段首部得中止位置1,其序号X 等于前面已传送过得数据得最后一个字节得序号加1。

主机B 得TCP 收到释放连接通知后即发出确认,其序号为Y ,确认号为X+1,同时通知高层应用进程,如图中得箭头①。

这样从A 到B 得连接就被释放了,连接处于半关闭状态,相当于主机A对主机B 说“我已经没有数据发送了。

但就是如果您还有数据要发送,我仍然接收."
此后,主机B不再接收A 发来得数据。

但若主机B还有一些数据要发给A,则可以继续发
送(这种情况很少)。

主机A只要正确收到数据,仍然向B发送确认.
若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接,如图中得箭头②。

主机B发出得连接释放报文段必须将中止位FIN与确认位ACK置1,并使其序号仍为Y(因为签名发送得确认报文段不消耗序号),但就是还必须重复上次已经发送过得ACK=X+1。

主机A必须对此发出确认,将ACK置1,ACK=Y+1,而自己得序号仍然就是X+1,因为根据T CP标准,前面发送过得FIN报文段要消耗掉一个序号。

这样就把B到A得反方向得连接释放掉。

主机A得TCP再向其应用进程报告,整个连接已经全部释放。

2、4实验步骤
步骤1在Wireshark中设置过滤条件,协议为TCP,地址为本机-〉any,并开始截获报文;
步骤2打开、,完成后,保存截获得报文并命名为“TCP学号”,分析捕获得报文。

这里,TCP得连接与建立采用得就是: 三次握手方式,本机就是192、168、3、3 ,远端主机就是192、168、3、183 .
步骤3 分析TCP连接建立过程得前3个报文,填写下表1:
表1TCP建立过程得三个报文信息
步骤4分析截获报文中数据发送部分得第一条TCP报文及其确认报文,将报文中得字段值填写在表格2中。

表2TCP报文首部信息
字段名长度字段值字段意义
发送报文确认报文
源端口16 发送
目标端口16 确认端口号就是唯一标识
序号32
确认好32 确认
头部长度 4
保留 6 保留字段
窗口16
校验与16
紧急指针16
选项(长度可变)
步骤5TCP连接建立时,其报文首部与其它TCP报文不同,有一个option字段,它得作用就是什么?结合IEEE802、3协议规定得以太网最大帧长分析此数据就是怎么得出来得?
步骤6分析TCP数据传送阶段得前8个报文,将报文信息填入表3:
表3TCP数据传送部分得前8个报文
报文序号报文种类序号字段确认号
字段
数据长度被确认报文序号窗口
3744 确认289 1 324289 123 3754 发送10 6616580 3764 确认 1 1 344291 1233784 发送 1 0 66 16579 3794 确认237 1 290237 123 3804 发送 1 0 66 16593 3814 确认289 8 3824 确认2968 2、5实验总结
在实验中,通过分析截获得TCP报文首部信息,可以瞧到首部中得序号、确认号等字
段就是TCP可靠连接得基础。

分析TCP头部信息,分析“3次握手”过程。

通过对数据传送阶段报文得初步分析,了解
数据得编码与确认机制。

总之,TCP协议中得各项设置都就是为了在数据传输时提供可靠得面向连接得服务.
2、B编程构造UDP数据包部分
使用C语言构造UDP数据包程序。

1)UDP首部与伪首部结构体定义
UDP报文数据
2)构建。

相关文档
最新文档