实验五、传输层协议分析
实验五、传输层协议分析
5.1. 实验目的
理解TCP报文首部格式和字段的作用,TCP连接的建立和释放过程,TCP数据传输中编号与确认的作用。
5.2 实验内容
应用TCP应用程序传输文件,截取TCP报文,分析TCP报文首部信息,TCP连接的建立过程,TCP数据的编号和确认机制。
5.3 实验原理
TCP协议是传输控制协议的简称,工作在网络层协议之上,是面向连接的,可靠的,端到端的传输层协议。
1.TCP的报文格式
TCP报文段分为头部和数据两部分,如图1:
图1 TCP报文段的总体结构
TCP报文段首部又分为固定部分和选项部分,固定部分为20B,如图2所示,这些字段的组合实现了TCP的所有功能。
图2 TCP报文段的首部
TCP采用传输输连接的方式传送TCP报文,传输连接包括连接建立、数据传输和连接释放三个阶段。
2.TCP连接的建立
TCP连接建立采用“3次握手”方式。
首先,主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步位SYN应置1,同时选择一个序号X,表明在后面传送数据时的第一个数据字节的序号是X+1,如图3所示:
主动打开被动打开连接请求
确认
确认
图3 TCP连接建立的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报文段首部的选项字段进行双方最大报文段长度MSS协商,确定报文段的数据字段的最大长度。
双方都将自己能够支持的MSS写入选项字段,比较之后,取较小的值赋给MSS,并应用于数据传送阶段。
3. TCP数据的传送
为了保证TCP传输的可靠性,TCP采用面向字节的方式,将报文段的数据部分进行编号,每个字节对应一个序号。
并在连接建立时,双方商定初始序号。
在报文段首部中,序号字段和数据部分长度可以确定发送方传送数据的每一个字节的序号,确认号字段则表示接收方希望下次收到的数据的第一个字节的序号,即表示这个序号之前的数据字节均已收到。
这样既做到了可靠传输,又做到了全双工通信。
当然,数据传送阶段有许多复杂的问题和情况,如流量控制、拥塞控制、重传机制等,本次实验不探究。
4.TCP连接的释放
在数据传输结束后,通信的双方都可以发出释放连接的请求。
TCP连接的释放采用“4次握手”。
如图
应用进
放连接A不再发送报文
放连接确认
B不再发送报文
A
图4 TCP 连接释放的4次握手过程
首先,设图4中主机A 的应用进程先向其TCP 发出释放连接的请求,并且不再发送数据。
TCP 通知对方要释放从A 到B 这个方向的连接,将发往主机B 的TCP 报文段首部的中止位置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,因为根据TCP 标准,前面发送过的FIN 报文段要消耗掉一个序号。
这样就把B 到A 的反方向的连接释放掉。
主机A 的TCP 再向其应用进程报告,整个连接已经全部释放。
5.4 实验步骤
步骤1 在sniffer 中设置过滤条件,协议为TCP HTTP ,地址为本机->any ,并开始截获报文
步骤2 打开 ,完成后,分析捕获的报文。
这里,TCP 的连接和建立采用的是: 方式,本机是 ,远端主机是 。
步骤3 分析TCP 连接建立过程的前3个报文,填写下表1:
表1 TCP 建立过程的三个报文信息
步骤4 分析截获报文中数据发送部分的第一条TCP报文及其确认报文,将报文中的字段值填写在表格2中。
表2 TCP报文首部信息
步骤5 TCP连接建立时,其报文首部与其它TCP报文不同,有一个option字段,它的作用是什么?结合IEEE802.3协议规定的以太网最大帧长分析此数据是怎么得出来的?
步骤6 分析TCP数据传送阶段的前8个报文,将报文信息填入表3:
5.5 试验总结
在实验中,通过分析截获的TCP报文首部信息,可以看到首部中的序号、确认号等字段是TCP可靠连接的基础。
分析TCP头部信息,分析“3次握手”过程。
通过对数据传送阶段报文的初步分析,了解数据的编码和确认机制。
总之,TCP协议中的各项设置都是为了在数据传输时提供可靠的面向连接的服务。
计算机网络实验-传输层协议分析
实验四、传输层协议分析【实验目的】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报头、数据和伪首部进行计算得出的校验和。
传输层和应用层的协议分析
FTP命令学习
ftp:进入FTP模式 open host [port]:连接远程FTP服务器 pwd: 显示当前工作目录 ls: 列出当前文件夹所有文件 get remote-file [local-file] :下载文件到本地文件(本 地文件需在下载之前新建好) put local-file [remote-dir]: 上传文件到远程目录,缺 省为上传到根目录 bye、quit:断开
实验条件:
连网的计算机; Ubuntu10.10; Vsftp;
实验指导
(一)安装ftp服务器
实验指导
(二)安装成功标志(默认用户名密码为系统用户名密码)
实验指导
(三)创建相应主目录和测试文件
实验指导
(四)登录 (用户名密码为当前用户名和密码)
实验指导
(六)访问(地址栏输入ftp://localhost,填写当前用户名和 密码), 点击“返回上一层文件夹”到/home/ftp/,右 键另存为下载test.txt文件。
实验六
传输层和应用层的协议分析
实验内容
一、准备:FTP 服务的配置和启动 二、 TCP协议分析 :使用FTP客户端上传/下载大文件,使用 wireshark分析TCP数据段,并观察
TCP三次握手过程 TCP四次断开过程
三、FTP协议分析:使用Telnet方式(命令行)访问FTP服务, 使用Wireshark分析FTP报文,并观察
FTP 命令示例
5、打开cmd,输入如下命令开始与ftp服务器交互,抓包界
面会显示请求响应的详细过程。
6、观察分析抓包的信息(部分截图)
连接建立
PORT和PASV两种工作模式(重点)
port模式(主动模式)
协议分析实验报告
协议分析实验报告协议分析实验报告引言:协议是计算机网络中实现通信的基础,各种协议的设计与实现直接影响着网络的性能和安全性。
为了深入了解协议的工作原理和性能特点,我们进行了一系列协议分析实验。
本报告将对我们的实验过程和结果进行详细介绍,并对协议分析的重要性进行探讨。
实验一:TCP协议分析我们首先选择了TCP协议作为实验对象,TCP协议是一种可靠的传输协议,在互联网中被广泛应用。
我们通过Wireshark工具对TCP协议的数据包进行抓取和分析。
通过观察数据包的头部信息,我们可以了解到TCP协议的各个字段的含义和作用。
同时,我们还分析了TCP协议的连接建立过程、数据传输过程以及连接释放过程,以便更好地理解TCP协议的工作原理。
实验二:UDP协议分析接着,我们选择了UDP协议进行分析。
与TCP协议不同,UDP协议是一种无连接的传输协议,在一些实时性要求较高的应用中被广泛使用。
我们通过对UDP协议的数据包进行抓取和分析,了解了UDP协议的头部格式和特点。
同时,我们还研究了UDP协议的优缺点,以及与TCP协议相比的适用场景。
实验三:HTTP协议分析HTTP协议是万维网中最为重要的协议之一,它负责在客户端和服务器之间传输超文本文档。
我们通过对HTTP协议的数据包进行抓取和分析,了解了HTTP协议的请求和响应的格式,以及常见的状态码的含义。
同时,我们还分析了HTTP协议的特点和应用场景,以便更好地理解和使用HTTP协议。
实验四:DNS协议分析DNS协议是域名解析系统中的重要组成部分,负责将域名转换为IP地址。
我们通过对DNS协议的数据包进行抓取和分析,了解了DNS协议的查询和响应的格式,以及常见的域名解析过程。
同时,我们还研究了DNS协议的安全性问题,以及一些常见的DNS攻击方式和防范措施。
实验五:SSL/TLS协议分析SSL/TLS协议是一种用于保护网络通信安全的协议,广泛应用于电子商务、在线支付等场景。
我们通过对SSL/TLS协议的数据包进行抓取和分析,了解了SSL/TLS协议的握手过程、密钥交换过程以及数据传输过程。
传输层、网络层、链路层协议分析
实验三、传输层、网络层、链路层协议分析一、传输层TCP协议分析概述:在这个实验中,我们将详细的研究TCP保护协议的行为.我们通过从你的电脑与远程服务器之间发送150KB的文件来分析TCP段的发送和接收. 我们将研究TCP的使用序列和确认号来提供可靠的数据传输; 我们将看到TCP拥塞控制算法--慢启动和拥塞避免;我们将着眼于TCP的接收流量控制机制. 我们也将简要考虑TCP连接的建立,我们将调查您的计算机和服务器之间的TCP连接的性能(吞吐量和往返时间)。
目的:以TCP协议为例,研究传输层协议的具体实现。
包括可靠数据传输、拥塞控制实现以及流量控制机制。
过程和细节:1.TCP批量传输分析a.打开你的web浏览器,进入/wireshark-labs/alice.txt,复制这篇文章Alice in Wonderland到你的电脑。
b.接下来访问/wireshark-labs/TCP-wireshark-file1.html你会看到这样的画面使用这个Browse按钮访问在你的电脑中包含Alice in Wonderland这篇文章的路径(完整路径)。
不要点击“Upload alice.txt file”按钮。
c.现在开始网络封包分析和数据包捕获.(Capture->Start)。
然后在网络封包分析和数据包捕获选项页面点击“OK”。
d.返回你的浏览器,点击“Upload alice.txt file”按钮来更新文件到服务器。
一旦这个文件被更新,将会在窗口弹出一个提示。
e.停止网络封包分析和数据捕获。
你的网络封包分析窗口应该像下面一样。
2.TCP trace 分析a.在详细的分析TCP连接行为之前,先观察追踪的高级视图。
可以发现主机和之间的一系列基于TCP和HTTP协议的交换数据。
可以分辨出看到初始的包含SYN报文的三次握手,以及一个HTTP POST 报文。
根据正在使用的网络分析封包的版本,能看到从你的计算机发送到 的一系列“HTTP过程”。
实验五、传输层可靠传输协议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;}四、实验总结通过这次实验基本弄清了停止等待协议的工作机理。
传输层协议分析实验报告
实验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/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 ,等待服务器的确认。
网络通信中的传输层协议分析
网络通信中的传输层协议分析在如今高度互联的世界中,网络通信已经成为人们生活中不可或者缺的一部份。
而网络通信的核心就是数据的传输,而传输层协议则是实现数据传输的关键。
本文将对网络通信中的传输层协议进行分析,探讨其作用、特点以及常见的协议类型。
一、传输层协议的作用传输层协议位于网络协议栈的第四层,负责在源主机和目标主机之间提供端到端的数据传输服务。
传输层协议的作用主要有以下几个方面:1. 数据分段:传输层协议将应用层传来的数据进行分段,每一个段都加之序列号,以确保数据的按序传输。
2. 可靠传输:通过使用确认、重传和超时等机制,传输层协议可以保证数据的可靠传输,即使在网络不稳定的情况下也能保证数据的完整性。
3. 流量控制:传输层协议可以通过滑动窗口机制来控制发送方发送数据的速率,以避免数据的丢失和拥塞。
4. 多路复用:传输层协议可以通过端口号来实现多个应用程序之间的并发传输,使得多个应用程序可以同时使用网络资源。
二、传输层协议的特点传输层协议具有以下几个特点:1. 端到端通信:传输层协议是在源主机和目标主机之间进行通信的,而不是在网络中的每一个节点之间进行通信。
这意味着传输层协议可以隐藏底层网络的复杂性,提供简单、可靠的通信服务。
2. 无连接和面向连接:传输层协议可以是无连接的,如用户数据报协议(UDP),也可以是面向连接的,如传输控制协议(TCP)。
无连接的传输层协议提供了简单、高效的数据传输服务,而面向连接的传输层协议则提供了可靠、有序的数据传输服务。
3. 端口号标识:传输层协议使用端口号来标识不同的应用程序。
源主机和目标主机可以通过端口号来确定数据应该被传送给哪个应用程序。
三、常见的传输层协议类型在网络通信中,常见的传输层协议有UDP和TCP。
1. 用户数据报协议(UDP):UDP是一种无连接的传输层协议,它提供了简单的数据传输服务。
UDP的特点是传输速度快、开消小,但不保证数据的可靠性和按序传输。
实验五、IP协议分析实验报告
实验五、IP协议分析实验报告一、实验目的本次实验的主要目的是深入理解 IP 协议的工作原理和机制,通过实际的抓包分析,掌握 IP 数据包的格式、IP 地址的分类与分配、子网掩码的作用以及路由选择的基本过程。
二、实验环境1、操作系统:Windows 102、抓包工具:Wireshark三、实验原理1、 IP 协议概述IP(Internet Protocol)协议是 TCP/IP 协议簇中最为核心的协议之一,它负责为网络中的设备提供逻辑地址(即 IP 地址),并实现数据包的路由和转发。
2、 IP 数据包格式IP 数据包由头部和数据部分组成。
头部包含了源 IP 地址、目的 IP地址、协议类型、生存时间(TTL)等重要信息。
3、 IP 地址分类IP 地址分为 A、B、C、D、E 五类,其中 A、B、C 类为常用的单播地址,D 类用于组播,E 类为保留地址。
4、子网掩码子网掩码用于确定 IP 地址中的网络部分和主机部分,从而实现子网划分。
5、路由选择路由器根据 IP 数据包中的目的地址和路由表,选择合适的路径将数据包转发到下一跳。
四、实验步骤1、打开 Wireshark 软件,选择合适的网络接口进行抓包。
2、在网络中进行一些常见的网络操作,如访问网页、发送邮件等,以获取 IP 数据包。
3、停止抓包,并对抓取到的数据包进行筛选,只显示 IP 协议的数据包。
4、逐个分析 IP 数据包的头部信息,包括源 IP 地址、目的 IP 地址、协议类型、TTL 等。
5、观察不同类型的 IP 地址,并分析其网络部分和主机部分。
6、研究子网掩码在数据包中的作用,以及如何通过子网掩码确定子网范围。
7、分析路由选择过程,观察数据包在网络中的转发路径。
五、实验结果与分析1、 IP 数据包格式分析通过对抓取到的 IP 数据包进行分析,我们可以看到其头部格式如下:版本(Version):通常为 4,表示 IPv4 协议。
头部长度(Header Length):以 4 字节为单位,指示头部的长度。
计算机网络原理实验五传输层可靠传输协议GBN编程实验报告
云南大学软件学院
实验报告
实验五、传输层可靠传输协议GBN编程实验报告
一、实验目的:
1、编程实现简单可靠的数据传输GBN协议,模拟可靠数据传输
2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。
二、实验指导:
参考教材。
三、实验要求:
编程实现一个GBN传输协议,采用编程语言不限,要求能将发送――接收流程以及处理方法表现出来.附源代码及注释并附上实验结果截图。
四、实验总结
1.通过看代码了解了编程实现简单可靠的数据传输GBN协议,模拟可靠数据传
输
2.要理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输
策略。
3.Packet是pkt结构体类型. 调用此函数将此分组发送到网络中,前往另一
个实体。
