网络协议分析重庆交通大学
信息科学与工程学院
课程设计报告
姓 名: 廖微 学 号 631206040326
班 级: 通信工程专业 2012级 3 班
课程设计项目名称: 网络协议分析综合课程实验
课程设计项目性质: 设计性
实验室(中心): 软件实验中心
指 导 教 师 : 王 勇
课程设计完成时间: 2015 年 1 月 10 日
实验成绩:
一、实验目的
一、课程设计目的...
重庆交通大学
信息科学与工程学院
课程
姓 名: 廖微 学 号 631206040326
班 级: 通信工程专业 2012级 3 班
课程设计项目名称: 网络
分析综合课程实验
课程设计项目性质: 设计性
实验室(中心): 软件实验中心
指 导 教 师 : 王 勇
课程设计完成时间: 2015 年 1 月 10 日
实验成绩:
一、实验目的
一、课程设计目的
1、了解wireshark软件,学会运用wireshark软件抓包。
2、通过wireshark抓包了解各种协议,可以和帧格式对应去理解
3、明白在网络中信息在主机和客户端是如何进行交互的。
二、相关知识
计算机网络的分层:
(1)OSI七层结构
物理层(Physical Layer):为两个相邻节点提供一个物理连接,将信息以比特流方式在通信线路上传送。
数据链路层(Data Link Layer,DL):在两个相邻节点间的线路上,无差错地传送以帧为单位的数据。
网络层(Network Layer):在计算机网络中两台主机之间传送以分组或包为单位的数据。
传输层(Transport Layer):在计算机网络中两个端系统之间传送以报文为单位的数据。
会话层(Session Layer):在两个互相通信的应用进程之间建立、组织和协调其交互。
表示层(Presentation Layer):用户信息的语法表示。
应用层(Application Layer):用户的各种应用程序。
(2)TCP/IP体系结构
(3)五层协议结构
三、课程设计主要内容及原理
1、首先,浏览器分析URL,因为是以字母(cn)而非数字结尾,可得知当前使用的是域名,必须首先解析其对应的IP地址
2、在DNS缓存中查找webmail.cqjtu.edu.cn项,命中则执行下面第X步,否则就发起DNS请求,请求解析域名
3、浏览器构建DNS包,递交给传输层实体同时告知该包为DNS包。
4、传输层实体构建UDP包,源端口按主机当前情况选择,目的端口为53(53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析),然后将包递交网络层。
5、网络层实体以源IP为10.1.45.5,目的IP为DNS服务器的即202.202.240.33等字段封装UDP包以构建IP包。同时,网络层实体通过子网掩码运算得知目的主机不在本子网,则应发给网关。在ARP缓存中查找10.1.45.1项,如果命中则执行第7步,否则
6、进行ARP广播,找到10.1.45.1的网关,找到的同时并更新ARP缓存。
7、此时在ARP缓存中查找到了10.1.45.1则直接发送到该网段的网关,网关然后再将IP帧的封装包传送到数据链路层。数据链路层将IP帧的封装包加上头部和尾部组装成帧,发送到物理层。
8、传输到物理层,物理层确保原始的数据可在各种物理媒体上传输。物理层是比特流的传送,因此不需要在加控制信息。
9、先传输到本机的数据链路层,数据链路层要检测所接收到的帧是否有差错,数据链路层就简单地丢弃这个出差错的帧,如果需要改正数据在数据链路层时出现的差错,此时采用可靠传输协议来纠正差错。然后利用逆ARP协议将MAC解析为IP地址202.202.240.6,此时可以直接在ARP缓存找到网关,并将数据包直接发送到该路由器
10、在网络层,根据控制信息进行必要的操作,然后剥离帧的控制信息将帧还原成为IP数据包。
就根据首部中的目的地址查找路由器中的路由表,找出转发分组接口。然后往传输层进行发送
11、在传输层中,会对IP包进行解析,去掉头部,此时的称其为用户数据包UDP。然后将UDP发送给应用层
12、应用层经过对控制信息的处理,此时就只剩下数据项,就将数据项直接发送给服务器。服务器收到数据后,给解析出来的IP地址直接发送到主机,此时的发送过程和前几步是一样的
这样主机和DNS服务器就完成了一次DNS包的传输和,如果要进行数据的传输,还需要和web服务器进行一次三次握手,这样双方就能通信了
三、课程设计过程简述
先利用ipconfig/flushdns将本地的DNS服务器缓存清除,然后打开wireshark,选正确自己所选用的网卡。然后将学校主页的地址写入网页的地址栏,在打开网页之前,先运行wireshark,然后开始抓包,对于这次抓的包进行分析。
首先通过客户端到服务器端,先将五层协议的通路走通。主机要发送信息首先要经过应用层,这一层是应用进程间通信和交互原则,常用的有HTTP协议,在这层,首先将数据包打包。然后将数据包发送到运输层,运输层主要有TCP和UDP协议,按照相应的信息,把数据包打包成UDP包或者TCP包,只要给数据包加上头部即可。然后将UDP包(TCP包)发送到下一层,网络层。网络层要做的事情也是封装,将上层传送下来的包进行IP封装。封装好了之后将数据传送到数据链路层,将IP数据包组装成帧,组装成帧需要将IP数据包加上头部和尾部。之后就传送到物理层,通过物理层的传输,传输到服务器端的数据链路层,在服务器端,就等于是对封装包的一层一层的剥离,等于是客户端封装的逆过程。这就是数据的一次传输,之后的数据传输还是按照这个过程来的。
应用进程的数据在各层之间传递所经过的变化描述如下:(为简单起见,假定两个主机是直接相连的。)
假定主机1的应用进程AP1向主机2的应用进程AP2传送数据。AP1先将其数据交给本主机的第5层应用层。第五层加上必要的控制信息H5就变成了下一层的数据单元。第4层运输层收到这个数据单元后,加上本层的控制信息H4再交给第3层网络层,成为第3层的数据单元。以此类推,不过到了第2层数据链路层后,控制信息分成两部分,分别加到数据单元的首部和尾部,而第1层物理层由于是比特流的传送所以不再加上控制信息。
四、课程设计结果及分析
(1)DNS协议的分析。
获取输入URL的域名地址,例如www.cqjtu.edu.cn
域名到IP地址的解析过程如下:当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报的形式发给本地域名服务器。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。
基本知识:
DNS的报文格式是:
其中12个字节的为头部部分,其次是查询问题,回答,
和额外信息,所有的请求报文都有查询问题,后面3个都是DNS服务器返回的应答报文所填充的。标识(2字节)可以看作是DNS的标志。标志也是两字节,是十分重要的部分。
抓包截图如下:
这部分我们可以对照wireshark的截图来观察DNS协议的标志:
QR(1比特):查询/响应的标志位,1为响应,0为查询。0就表示该DNS协议为查询报文。
opcode(4比特):定义查询或响应的类型(若为0则表示是
的,若为1则是反向的,若为2则是服务器状态请求)。这个查询的类型是标准的。
AA: 授权应答(Authoritative Answer) - 这个比特位在应答的时候才有意义,指出给出应答的服务器是查询域名的授权解析服务器。注意因为别名的存在,应答可能存在多个主域名,这个AA位对应请求名,或者应答中的第一个主域名。
TC(1比特):截断标志位。1表示响应已超过512字节并已被截断。0表示响应没有被截断。
RD(1比特):该位为1表示客户端希望得到递归回答。
zero(3比特):为0,保留位。
在接下来我们还可以看见四个选项
Questions 1 表明问题数为1
回答数Answer RRs: 0
权威数Authority RRs: 0
附加数Additional RRs: 0
我们可以看到问题是询问webmail.cqjtu.edu.cn的域名解析。
下面的图描述DNS服务器对域名进行解析:
我们可以从answer中看出,目的IP解析出来是202.202.240.6。
(2)浏览器将DNS包递给传输层
3、传输层构建UDP包,递交网络层
传输层构建的UDP包使用了UDP的传输协议,将这个包递交给了网络层,从wireshark抓包分析中我们可以看到,源端口用的是53358端口,目的端口是53端口,长度为46字节。
UDP传输协议
(4)网络层将UDP包封装为IP包
IP数据报的格式为:
通过这个IP帧格式,我们就可以将IP封装包进行解读。
版本:IPv4。
首部长度:20字节。
区分服务:只有在使用区分服务时,该字段才起作用,一般情况下都不起作用。
总长度:指首部和数据之和的长度为59字节。
标识:IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,此时计数器的值是7565。
标志:占三位,但是目前只有前两位有意义。第一个是最低标记位MF=0,表示这是若干数据报片中的最后一个。中间标记为DF=0,表示不能分片。
片偏移:因为没有分片,所以片偏移为零。
生存时间:TTL(Time to live)表示跳数,一共有64跳,表明在因特网中该数据报最多可经过64个路由器。因为是问题发送端,所以还没有经过路由器。
协议:由图可知,运用了UDP传输协议。
首部校验和:只检验数据包的首部,检验出来的结果是correct。
源IP地址:10.1.45.5本机地址
目的IP地址:202.202.240.33 学校的DNS服务器IP地址。
(4)进行ARP广播,找到网关
硬件类 型
协 议
类 型
1
2
op
发送端
以太网地址
发送端
IP地址
目的端
以太网地址
目的
IP地址
在wireshark中,我们可以看到类型是一个Broadcast,在询问谁10.1.45.63网关。
ARP包的外部还有以太网帧,增加了一个头部和尾部。
在ARP协议中,我们可以看到:
硬件类型:1。以太网的硬件类型
协议类型:是IP协议中的一个。
1(硬件地址长度):MAC地址长度,为6个字节。
2(协议地址长度):因为使用的IPv4,所以协议长度4个字节。
op操作符:1,该包为一个请求包。
发送端MAC地址:00:1a:a9:7e:50:a8
发送端IP地址:10.1.45.1
目的端MAC地址:00:00:00:00:00:00
目的IP地址:10.1.45.63
然后将IP数据包发送到数据链路层。
(5)数据链路层将IP数据报封装为帧
Ethernet II结构为
6字节 6字节 2字节 46-1500字节 4字节
目标MAC地址
源MAC地址
类型
数据
FCS
可以与图片相对应的进行解读:
目的MAC地址:00:1a:a9:7e:50:a8
源MAC地址:9c:2a:70:50:e2:d3
类型:IP表示上层用的IP数据包。
FCS:Frame Check Sequence,用于纠错,含有一个4位的冗余校验码。
(6)在数据链路层中加上头部和尾部,然后发送到物理层,交给物理层之后发送给外部线路。
(7)服务器的物理层接收到数据,并把数据发送给上层的数据链路层,数据链路层先要检查MAC地址,并对所收到的帧进行纠错和检错。没有错误后,去掉以太帧的首部和尾部之后,将IP包发送给网络层,网络层去掉IP头部之后,把UDP包发回给传输层,最后传输层将DNS包发送给服务器端。
(8)DNS服务器将发送过来的DNS中域名进行解析,解析出IP地址后按照上述所说的过程将IP地址发送给主机。
在这个包里面,可以看到,返回来了www.cqjtu.com的IP地址202.202.240.6。
(9)浏览器构建了HTTP包,请求传输数据,并且发送给了传输层。
HTTP有两类报文:
(1)请求报文——从客户想服务器发送请求报文
(2)响应报文——从服务器到客户端的回答
在wireshark的截图中,我们可以看到该HTTP显示是一个请求报文。在上面我们可以看到请求的方法,请求的版本等。Host头域指定请求资源的Intenet主机和端口号,上面包含了url的原始服务器(webmail.cqjtu.edu.cn)。connection告诉服务器一直保持链接。user-agent表明用户代理使用的浏览器。Accept-language表示了用户希望优先得到中文网页。
(10)建立链接需要用TCP协议,因为网页的传输是需要可靠的服务的,因此使用传输控制协议TCP
TCP协议的格式我们可以对照TCP的帧结构来解读
TCP的帧结构
源端口:2字节,50280代理服务器列表
目的端口:2字节,80端口,开放了HTTP协议。
序号:4字节,为1。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个自己都按顺序编号。
保留:占6位,目前是全部置为0。
紧急URG:当URG=1时,表明紧急指针字段有效。此时就告诉系统这个数据的优先级比较高,要优先传送。在该图中,URG=0,只说明这是个普通的数据。
确认ACK:ACT=0时,确认号无效,这说明了连接还没有建立,因为TCP规定,连接建立后所有传送的报文段都必须把ACK置1,图中,ACK=1。
推送PSH:当两个应用进程进行交互式通信时,有时在一端的应用进程希望在键入一个命令后立即能够收到对方的响应。此时PSH置为1.
复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立运输连接。还可以用来拒绝一个非法的报文段或拒接打开一个连接。此时RST=0,表明TCP连接没有出现错误,也不用拒绝打开连接。
同步SYN:在连接建立是用来同步的序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。当同时置1时,表示连接接收报文。当前的TCP协议正好是一个连接接受的报文段。
终止FIN:用来释放一个连接。此时FIN=0,表示数据还没有发送完,不用中止连接。
窗口:占两字节。窗口指的是发送本报文段的一方的接收窗口。窗口值告诉告诉对方:从本报文段首部的确认信号算起,接收方目前允许对方发送的数据量。此时的窗口值为16425。
最后剩下的了校验和和选项,选项的长度是可变的。
(11)连接建立
即此时主机向服务器发送请求报文段,完成3次握手
第一次握手
TCP规定同部位SYN=1,SYN报文段不带数据,序号为0,我与服务器第一次握手SYN=1,报文段的数据为0。
第二次握手
服务器发回确认包, 标志位为 SYN,ACK. 将确认序号设置为客户的序号加1,即0+1=1。
第三次握手
TCP客户收到服务器确认报文段后,再向服务器发出确认报文段ACK=1,TCP规定若无数据则消耗序号。此时序号还为1,则传输的信号无序号。
TCP建立连接的三次握手如图:
(12)数据传送
完成三次握手后,客户端和服务器端就可以传送数据了。比如网页的图片声音等数据,但是在传输数据的时候,还是需要通过5层协议来传输,传输的方法和上述的相同。
(13)连接释放
当双方都不需要数据的时候就会释放连接,双方任一一方都可先释放。TCP规定,请求释放方A先提出释放连接则FIN=1,且要消耗序号。B接到释放请求后会发出确认及ACK=1,这时请求释放方无数据发送给B了,但B可再发数据给A,若B也无数据发送了,因此也要发送释放连接报段;B也无数据发送了也发送了释放连接报段,这时FIN也应为1,无数据,有序号A收到释放报文后也要发出后确认,则释放连接全部结束,双方都不会放送数据,也不会收到对方的数据。此过程为四次握手。
五、心得体会
本次实验主要结合了《计算机网络》这门课程的基础知识,在课本知识的基础上使用Wireshark软件进行抓包并且对网络体系结构进行分析,本次实验的主要内容是主要分析了应用层的DNS协议,运输层的UDP用户数据报协议,网络层的IP协议,解决IP地址与MAC地址映射问题的ARP协议,数据链路层中的硬件地址等。主机要发送信息首先要经过应用层,这一层是应用进程间通信和交互原则,常用的有HTTP协议,在这层,首先将数据包打包。然后将数据包发送到运输层,运输层主要有TCP和UDP协议,按照相应的信息,把数据包打包成UDP包或者TCP包,只要给数据包加上头部即可。然后将UDP包(TCP包)发送到下一层,网络层。网络层要做的事情也是封装,将上层传送下来的包进行IP封装。封装好了之后将数据传送到数据链路层,将IP数据包组装成帧,组装成帧需要将IP数据包加上头部和尾部。之后就传送到物理层,通过物理层的传输,传输到服务器端的数据链路层,在服务器端,就等于是对封装包的一层一层的剥离,等于是客户端封装的逆过程。这就是数据的一次传输,之后的数据传输还是按照这个过程来的。
本次实验遇到的主要问题是:
(1)抓包时候,在刚开始抓DNS包的时候以为wireshark可以显示出来一层一层的封装过程,在抓包的过程中,才明白这几层协议是封装到一起的,比如封装DNS包的时候,这之中用到了UDP传输协议,封装成帧等。它是不会一层一层给你封装的。
(2)开始对软件中抓出来的包中描述的信息不理解,对各层的主要任务以及各协议的格式不熟悉。
(3)刚开始不太熟悉各层中的各种协议。
(4)在开始时在心里没有一个网络结构知识结构比较凌乱,也不太清楚数据包是怎么发送过去的
经过总结得出计算机网络访问网站的基本流程图如下:
浏览器缓存中有IP地址,直接向IP地址发送
HTTP协议
主机访问浏览器
如果浏览器缓存中没有IP地址,则向DNS服务
器发送请求(DNS包)得到它的IP地址,然后
向IP地址发送HTTP协议。
传输层:当应用层将HTTP协议传下来时,传输层将进行进一步封装
传输层是面向连接的工作方式,所以建立连接(三次握手)
数据传输 释放连接(四次握手)
网络层:网络层是非连接的工作方式,它提供best effort 的工作方式,在网络层由于传输 介质的原因,有的时候会需要将分组分裂。
数据链路层:在相邻节点以帧为单位进行无差错传输
现在都是在以太网的环境中,交换机比较重要。
物理层:在传输媒体上以bit流的形式传输数据信息
经过本次课程设计让我了解了网络的体系结构,以及不同主机应用进程之间通信的具体过程,还掌握了Wireshark软件的应用。在一定程度上提高了实践动手能力,以及对解决问题的能力。虽然还存在一些问题,比如ARP广播到的硬件地址为零等,在今后的学习过程中,我会通过各种方法来解决这些问题。在学习的过程中进步、积累知识才能不断提升,丰富自己的知识库。
文档已经阅读完毕,请返回上一页!
本文档为【网络协议分析】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。