网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包
南京邮电大学软件设计TCPIP网络通信程序设计实验报告

201 /201 学年第二学期课程设计实验报告模块名称TCP/IP网络通信程序设计专业学生班级学生学号学生姓名指导教师QT5.6环境下的源代码目录题目1获取计算机的名称和IP地址 (1)1、设计内容 (1)2、设计分析论述及程序实现流程框图 (1)3、关键实现代码及注解 (2)4、程序运行测试与结果 (4)5、程序设计中遇到的问题及改进思路 (4)题目2基本C/S模式的通信实验 (4)1、设计内容 (4)2、设计分析论述及程序实现流程框图 (5)3、关键实现代码及注解 (8)4、程序运行测试与结果 (21)5、程序设计中遇到的问题及改进思路 (22)题目3简单的浏览器的实现 (23)1、设计内容 (23)2、设计分析论述及程序实现流程框图 (24)3、关键实现代码及注解 (25)4、程序运行测试与结果 (26)5、程序设计中遇到的问题及改进思路 (28)题目4利用smtp协议发送邮件 (28)1、设计内容 (28)2、设计分析论述及程序实现流程框图 (28)3、关键实现代码及注解 (29)4、程序运行测试与结果 (36)5、程序设计中遇到的问题及改进思路 (36)课程设计小节 (37)附录 (37)题目1获取计算机的名称和IP地址1、设计内容获取计算机的名称和IP地址实验编写程序实现下述功能:获取计算机的名称和IP地址2、设计分析论述及程序实现流程框图Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。
Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境(IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。
即使不开发Qt应用程序,Qt Creator也是一个简单易用且功能强大的IDE。
Qt数据库中提供QtNetwork Module中的QHostInfo、QHostAddress、QNetworkInterface和QNetAddressEntry等类来查询网络参数。
主要协议分析实验报告(3篇)

第1篇一、实验背景随着计算机网络技术的飞速发展,网络协议作为计算机网络通信的基础,扮演着至关重要的角色。
为了更好地理解网络协议的工作原理和功能,我们开展了主要协议分析实验。
本实验旨在通过分析常用网络协议的报文格式和工作机制,加深对网络协议的理解。
二、实验目的1. 熟悉常用网络协议的报文格式和工作机制。
2. 掌握网络协议分析工具的使用方法。
3. 培养网络故障排查和问题解决能力。
三、实验环境1. 实验设备:PC机、网线、Wireshark软件。
2. 实验网络:局域网环境,包括路由器、交换机、PC等设备。
四、实验内容本实验主要分析以下协议:1. IP协议2. TCP协议3. UDP协议4. HTTP协议5. FTP协议五、实验步骤1. IP协议分析(1)启动Wireshark软件,选择合适的抓包接口。
(2)观察并分析IP数据报的报文格式,包括版本、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间、协议、头部校验和、源IP地址、目的IP地址等字段。
(3)分析IP分片和重组过程,观察TTL值的变化。
2. TCP协议分析(1)观察TCP数据报的报文格式,包括源端口号、目的端口号、序号、确认号、数据偏移、标志、窗口、校验和、紧急指针等字段。
(2)分析TCP连接建立、数据传输、连接终止的过程。
(3)观察TCP的重传机制和流量控制机制。
3. UDP协议分析(1)观察UDP数据报的报文格式,包括源端口号、目的端口号、长度、校验和等字段。
(2)分析UDP的无连接特性,观察UDP报文的传输过程。
4. HTTP协议分析(1)观察HTTP请求报文和响应报文的格式,包括请求行、头部字段、实体等。
(2)分析HTTP协议的请求方法、状态码、缓存控制等特性。
(3)观察HTTPS协议的加密传输过程。
5. FTP协议分析(1)观察FTP数据报的报文格式,包括命令、响应等。
(2)分析FTP的文件传输过程,包括数据传输模式和端口映射。
网络通信协议分析课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包

网络协议分析课程设计之协议编程实验一帧封装实验目的:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。
•要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。
•输出:对应input1和input2得结果分别为output1和output2。
试验要求:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。
•要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。
输出:对应input1和input2得结果分别为output1和output2验设计相关知识:帧:来源于串行线路上的通信。
其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。
Ethernet从某种程度上可以被看作是机器之间的数据链路层连接。
按802.3标准的帧结构如下表所示(802.3标准的Ethernet帧结构由7部分组成)802.3标准的帧结构其中,帧数据字段的最小长度为46B 。
如果帧的LLC 数据少于46B ,则应将数据字段填充至46B 。
填充字符是任意的,不计入长度字段值中。
在校验字段中,使用的是CRC 校验。
校验的范围包括目的地址字段、源地址字段、长度字段、LLC 数据字段。
循环冗余编码(CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。
CRC 校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。
TCP/ IP网络协议分析网络协议分析实验报告(简洁)

广东警官学院《计算机网络》
实验报告
课程名称计算机网络原理
实验学期 2011 至 2012 学年第二学期
学生所在系部计算机系
年级 2010 专业班级计算机科学与技术3班
学生姓名陆长鹏学号 201007140315 任课教师
实验成绩
计算机系制
实验报告须知
1、学生上交实验报告时,必须为打印稿(A4纸)。
页面空间不够,可以顺延。
2、学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、
内容、结果及分析等。
3、教师应该填写的内容包括:实验成绩、教师评价等。
4、教师根据本课程的《实验指导》中实验内容的要求,评定学生的综合性实验成
绩;要求在该课程期末考试前将实验报告交给任课教师。
综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。
任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。
5、未尽事宜,请参考该课程的实验大纲和教学大纲。
《计算机网络原理》课程综合性实验报告
开课实验室:网络工程实验室2012 年月日。
TCPIP协议分析课程设计报告书要点

《TCP/IP协议分析》课程设计题目:用协议分析工具分析 DNS以及以下各层协议的工作机制院系:计算机学院班级: 2023级网络工程班姓名: ****学号: *********组别:第四组组长:*****组员:****** **** **** *** **** ***2023年1月8日书目一、课程设计目的 (3)二、课程设计的要求 (3)三、试验环境 (3)四、试验内容及过程 (3)五、总结 (17)一、课程设计目的1、用协议分析工具分析 DNS以及以下各层协议的工作机制;2、驾驭DNS协议的恳求与应答过程二、课程设计的要求1、分析网络拓扑图的结构与组成,视察网络设备在拓扑图中的表示方法,学习依据拓扑图进行网络构建的基本步骤,了解网络组建的过程。
分析网络中可能用到的网络协议,说明其应用目的和实现机理。
2、驾驭协议分析工具的安装、配置和基本操作。
利用协议分析工具分析现实中某种网络应用的协议工作过程,通过分析工具捕获网络数据的详细传输,分析该应用在协议栈个层次中数据包的详细内容,从而理解各层协议的作用与协同工作的过程,达到能更加深化驾驭网络协议原理的目的。
三、试验环境1、网络环境机房环境、Packet Tracer虚拟环境2、操作系统Windows 7 (服务器端安装DNS服务器及web服务器)3、协议分析工具Wireshark、Packet Tracer四、试验内容及过程1、DNS基本学问及原理DNS(Domain Name System)及域名服务系统,它的作用就是域名到IP地址的转换过程。
IP地址是网络上标识web站点的数字地址,为了简洁好记,采纳域名代替IP地址来标识站点地址。
而实现域名到IP地址的转换就必需具有DNS服务器。
2、DNS解析过程第一步:客户端提出域名解析恳求,并将该恳求发送给本地的域名服务器其次步:当本地的DNS服务器收到恳求后,就先查询本地的缓存,假如有该项记录,则本地的DNS服务器就干脆把查询结果返回;第三步:假如本地的缓存记录中没有该记录就干脆把该恳求发给根服务器,然后根域名服务器再返回本地域名服务器一个所查询域的主域名服务器地址;第四步:本地服务器再向上一步返回的域名服务器发出恳求,然后接收恳求的服务器查询自己的缓存记录,假如有该条记录则将结果返回;第五步:若没有则重复该过程,直到找到正确记录;第六步:本地域名服务器把返回的结果保存到本地缓存以备下次运用,同时将结果返回给发出恳求的客户机;3、网络拓扑结构设计图4.3.1中①pc1---pc4为客户机,由客户机向服务器发出DNS—192.168.8.4 子网掩码均为255.255.255.0,DNS服务器地址为192.168.8.6;②pc5 即图中的Server-pt server 作为web服务器,IP地址配置为192.168.8.5,子网掩码为255.255.255.0,DNS服务器地址为192.168.8.6;③pc6 即图中的Server-pt DNS serve就是负责域名解析的本地DNS服务器、IP地址配置为192.168.8.6。
《TCPIP协议分析》课程设计

5.2.2udpclient.c程序内容:16
6结术语18
参考ቤተ መጻሕፍቲ ባይዱ献19
1
1.1协议的简介
UDP是UserDatagramProtocol的简称,中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。在网络中它与TCP协议一样用于处理UDP数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据报传输服务。它不提供报文到达确认、排序、及流量控制等功能。因此,UDP报文可能会出现丢失、延迟或乱序到达的现象。而且,报文到达的速率可能会大于接收进程能够处理的速率。
使用UDP的应用程序可根据自己的需求设计相应的可靠性机制。例如,作为文件传输协议之一的简单文件传输协议就在应用层做这方面的工作。
图1-1UDP
1.2协议的作用
为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据报的发送和接收,设计用户数据报协议UDP。
UDP提供了应用程序之间传输数据的基本机制。它能够基于端口号区分在一台机器上运行的多个程序。在传递每个UDP报文时,该报文除了携带用户数据外,还携带目的端口号和源端口号,这使得目的机器上的UDP软件能够将报文交给正确的接收进程,而接受进程也能正确地返回应答报文。
计算机网络课程设计报告--帧封装

计算机网络课程设计报告题目:帧封装一、问题描述帧是在数据链路层数据进行传输与交换的基本单位。
构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。
本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。
二、概要设计(抽象数据类型定义)编写程序,根据给出的原始数据,组装一个IEEE802.3格式的帧(题目默认的输入文件为二进制原始数据(文件名为input1)。
D要求程序为命令行程序。
比如,可执行文件名为framer,exe,则命令行形式如下:framerinputfi1eoutputfi1e其中,inputfi1e为原始数据文件,OUtPUtfi1e为输出结果。
2)输出:对应input1的结果分别为OUtPUt1。
三、详细设计1.填充帧头部字段在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。
写入前四个部分十分简单,而写入长度字段时需要计算输入文件的长度。
所以计算输入文件长度的方法如下所示:intIength=O;infi1e.seekgOiOS::end);〃将读指针移到文件末尾。
Iength=infi1e.te11g();〃计算指针偏移量,即为输入文件的长度。
unsignedchar*data=newunsignedChar[1ength];〃创建字符指针并根据文件长度初始化。
infi1e.seekg(07ios::beg);〃将读指针移到文件开始。
infi1e.read(datajength);〃将文件数据读入到字符指针data中。
fi1e.put(char(1ength>>8));fi1e.put(char(1ength&Oxff));〃将文件长度值按照逆序写入到输出文件的长度字段中Ofi1e.write(data,1ength);〃将data内容写入到输出文件中。
网络协议分析实验报告

网络协议分析实验报告一、实验目的本次实验旨在通过网络协议分析,深入了解常见的网络协议的工作原理和通信过程,加深对于网络通信的理解。
二、实验环境本次实验使用了Wireshark网络协议分析工具,实验环境为Windows 系统。
三、实验步骤1. 安装Wireshark2.抓包启动Wireshark,选择需要抓包的网络接口,开始进行抓包。
在抓包过程中,可以选择过滤器,只捕获特定协议或特定IP地址的数据包。
3.分析数据包通过Wireshark显示的数据包列表,可以查看抓取的所有数据包,每个数据包都包含了详细的协议信息。
可以通过点击数据包,查看每个数据包的详细信息,包括源IP地址、目标IP地址、协议类型等。
四、实验结果通过抓包和分析数据包,我们发现了一些有趣的结果。
1.ARP协议ARP(Address Resolution Protocol)是用于将IP地址解析为MAC地址的协议。
在数据包中,可以看到ARP请求(ARP Request)和ARP响应(ARP Reply)的过程。
当发送方需要向目标发送数据包时,会发送ARP请求来获取目标的MAC地址,然后通过ARP响应获取到目标的MAC地址,从而进行通信。
2.HTTP协议HTTP(Hypertext Transfer Protocol)是Web开发中常用的协议。
在数据包中,可以看到HTTP请求(HTTP Request)和HTTP响应(HTTP Response)的过程。
通过分析HTTP的请求和响应,我们可以看到客户端发送了HTTP请求报文,包括请求的URL、请求的方法(GET、POST等)、请求头部和请求体等信息。
服务器收到请求后,发送HTTP响应,包括响应的状态码、响应头部和响应体等信息。
3.DNS协议DNS(Domain Name System)是用于将域名解析为IP地址的协议。
在数据包中,可以看到DNS请求(DNS Query)和DNS响应(DNS Response)的过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络协议分析课程设计之协议编程实验一帧封装实验目的:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。
•要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。
•输出:对应input1和input2得结果分别为output1和output2。
试验要求:•编写程序,根据给出的原始数据,组装一个IEEE 802.3格式的帧(题目)默认的输入文件为二进制原始数据(文件名分别为input1和input2))。
•要求程序为命令行程序。
比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile,其中,inputfile为原始数据文件,outputfile为输出结果。
输出:对应input1和input2得结果分别为output1和output2验设计相关知识:帧:来源于串行线路上的通信。
其中,发送者在发送数据的前后各添加特殊的字符,使它们成为一个帧。
Ethernet从某种程度上可以被看作是机器之间的数据链路层连接。
按802.3标准的帧结构如下表所示(802.3标准的Ethernet帧结构由7部分组成)802.3标准的帧结构其中,帧数据字段的最小长度为46B 。
如果帧的LLC 数据少于46B ,则应将数据字段填充至46B 。
填充字符是任意的,不计入长度字段值中。
在校验字段中,使用的是CRC 校验。
校验的范围包括目的地址字段、源地址字段、长度字段、LLC 数据字段。
循环冗余编码(CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。
CRC 校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。
利用CRC 进行检错的过程可简单描述如下:在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的r 位监督码(CRC 码),附在原始信息的后边,构成一个新的二进制码序列(共k+r 位),然后发送出去。
在接收端,根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。
这个规则在差错控制理论中称为“生成多项式”。
循环冗余校验码的特点:(1)CRC 校验码可检测出所有单个错误。
(2)CRC 校验码可检测出所有奇数位错误。
(3)CRC 校验码可检测出所有双位的错误(4)CRC 校验码可检测出所有小于、等于校验位长度的突发错误。
(5)CRC 校验码可以](1/2)-[11-k 的概率检测出长度为(K+1)位的突发错误实验分析:• 填充帧头部字段要完成一次帧封装的过程,首先要完成的就是帧头部的装入,这一过程只要将签到吗、定界符、目的地址、源地址、长度字段的相应数值按顺序写入就可以了。
其中,长度字段的值即为要发送的数据的实际长度。
• 填充数据字段在填充数据字段的过程中要注意的主要问题是数据字段的长度。
802.3标准中规定了帧数据字段的最小长度为46B,最大长度为1500B。
如果数据不足46B,则需要通过填充0来补足;若数据长度超过1500B,则的大奖超过部分封装入下一个帧进行发送。
•CRC校验帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。
程序流程图:CRC计算流程图:序源代码:#include<iostream.h>#include<fstream.h>#include<stdlib.h>void main(int argc,char*argv[]){//如果输入命令行不正确,则输出提示后退出。
if(argc!=3){cout<<endl<<"请按以下格式输入:framer inputfile outputfile"<<endl;exit(0);}//打开指定的输出文件,以二进制方式打开并可读可写,如文件存在,则清除其内容。
fstream file(argv[2],ios::out|ios::in|ios::binary|ios::trunc,0);for(int i=0;i<7;i++)file.put((char)0xaa);file.put((char)0xab);//写入B的前导码和B的帧前定界符。
chardes_add[]={char(0x00),char(0x00),char(0xE4),char(0x86),char(0x3A),char(0xDC)}; file.write(des_add,6);//写入B的目的地址。
charsor_add[]={char(0x00),char(0x00),char(0x80),char(0x1A),char(0xE6),char(0x65)}; file.write(sor_add,6);//写入B的源地址。
//创建输入文件流并打开指定的输入文件,以二进制方式打开并可读。
ifstream infile(argv[1],ios::in|ios::binary,0);int length=0;infile.seekg(0,ios::end);//将读指针移到文件末尾。
length=infile.tellg();//计算指针偏移量,即为输入文件的长度。
unsigned char* data=new unsigned char[length];//创建字符指针并根据文件长度初始化。
infile.seekg(0,ios::beg);//将读指针移到文件开始。
infile.read(data,length);//将文件数据读入到字符指针data中。
file.put(char(length>>8));file.put(char(length&0xff));//将文件长度值按照逆序写入到输出文件的长度字段中。
file.write(data,length);//将data内容写入到输出文件中。
//如果输入文件长度不足B,则用补足B。
if(length<46){for(int j=length;j<46;j++)file.put(char(0x00));}file.put(char(0x00));//将数据字段后添加个file.seekg(8,ios::beg);//将读指针指向目的地址字段,从此处开始CRC计算unsigned char ch;//ch用来保存读入的字符。
unsigned char crc=char(0x00);//余数初始值为。
while(1)//进行CRC计算{file.get(ch);if(ch==0xff)//判断是否到了文件结尾,如果是,则退出循环。
break;for(i=0;i<8;i++)//对入读入的字符的位分别处理。
{if(0x80==(crc&(0x80)))//当前余数最高位为,需要进行除法运算。
{crc=(crc<<1)&(0xff);//crc左移位,最低位补。
crc=crc|((ch&0x80)>>7);//将输入数据相应的值递补到余数末位。
crc=crc^(0x07);//进行除法运算,即与除数的低位相异或。
}else//当前余数的最高位为,不需要进行除法运算。
{crc=(crc<<1)&(0xff);//crc左移位,最低位补。
crc=crc|((ch&0x80)>>7);//将输入数据相应位的值递补到余数末位。
}ch=ch<<1;//读到的字符左移位,使数据下一位作为输入位。
}}file.clear();file.seekp(-1,ios::end);//将写指针移到输出文件的最后。
file.put(crc);//写入crc码。
file.close();infile.close();//关闭输入文件和输出文件。
cout<<endl<<"数据帧文件"<<argv[2]<<" 封装完成"<<endl; }运行结果:运行结果如下所示:执行framer.exe文件的结果如下所示:实验小结:实现帧的封装,主要是将帧的七个部分---前导码、帧前定界符、目的地址、源地址、长度字段、数据字段和校验字段,一个一个按顺序封装的,最后使得一个帧的封装得以完成。
同时,在编写程序的过程中,用到了很多的函数,这些函数的运用使得程序简便而且正确的运行出来。
实验二解析IP数据包实验目的:•设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。
实验要求:本实验的目标是捕获网络中的IP数据包,解析数据包的内容,见个结果显示在标准输出上,并同时写入日志文件。
程序的具体要求如下:•以命令行形式运行:ipparse logfile,其中ipparse是程序名,而logfile则代表记录结果的日志文件。
•在标准输出、和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。
•当程序接收到键盘输入Ctrl+C时退出。
设计相关知识:IP数据报的格式说明IP协议都具有什么功能。
其首部,版本目前广泛使用的版本号为4;首部长度站4bit;服务类型占8bit,其中服务类型TOS子域占4位,优先级子域占3位,另一位为保留位;总长度字段为2B,IP数据包的最大长度是65535B;标识占16bit,它是一个计数器,用来产生数据报的标识;标志占3bit,其中最低为为MF,MF=1时为后面“还有分片”,MF=0表示这是数据报片中的最后一个,DF=0时,表示允许分片;片偏移以8个字节为偏移单位;生存时间字段记为TTL,单位为秒;协议段占8bit,用于指出次数据是使用何种协议,典型的协议号有6:TCP,17:UDP,1:ICMP。
本程序使用套接字socket编程,将网卡设为能够接受流经网卡的所有类型的数据包。
首先,初始化套接字,然后监听数据包,解析数据包。
SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)用来创建套接字,其参数为通信发生的区字段和套接字的类型。
WSAIoctl(sock , IO_RCVALL ,&dwBufferInLen , sizeof(dwBufferInLen)函数用来把网卡设置为混杂模式。