计算机网络课程实习
一.实习目的
通过计算机网络课程的学习,掌握了计算机网络的基础理论知识,为了对于计算机网络的理解更加深入。理论与实践结合起来,实现更好的学习效果.把书本上的理论知识实践化,把枯燥的内容变得生动起来,加强我们的动手能力和独立分析问题的能力,而进行这个实习
二.实习内容与及实习步骤
2-1、捕获APR请求、应答数据包,分析其组成特征;
要求:弄清楚ARP协议的作用,对LAN内、LAN之间,APR是如何工作的?APR缓冲的内容如何保存与其作用?请求与应答包的区别。
2-1-1.实验步骤
运行Ehereal捉包软件
选择”OPion”进入相关设置
1 / 28
2 / 28
然后打开命令提示符窗口
3 / 28
删除ARP缓存信息
删除完成后就可以开始实验了
2-1-2.实验结果
当收到4条请求4条回复时就可以完成实验了,这时可以在软件中看到实验结果如下
这里总共有10条数据,其中两条是ARP的,8条是ICMP的
2-1-3.分析一下ARP的数据
在实际的应用中,我们常会遇到这样的问题,已经知道了一个机器(主或者是路由器)的IP地址,需要找出其相应的物理地址,或 反 过来,已经知道了物理地址,需要找出相应的IP地址.地址解析协议ARP就是用来解决这样的问题的.
1 对LAN内、arp
IP为172.16.56.46的主机记为主机A IP为172.16.56.82的主机记为主机B
方案:用” HOST+R”打开命令窗口,然后用ARP/A查看ARP缓存的信息,如果有的话,就用ARP/D命令把其删除,不然会影响实验的结果的.启动软件ethereal软件,设置好相关参数后,按开始操作,然后在命令提示符窗口 用PING命令去PING 172.16.56.82
然后就可以看到以下的结果了.
4 / 28
上面的截图第一条信息说明”我是172.16.56.46,硬件地址是00-10-5C-d0-9b,我想知道主机172.16.56.82的硬件地址,”在本局域网的所有主机上运行的ARP进程都会收到此ARP请求分组.第二条信息是相应主机对发出请求的主机进行回复,
第二条信息,可以理解为”我是172.16.56.82,我的硬件地址是00:10:5C:d1:78:1e”,主机B在ARP 请求分组中见到自己的IP 地址,就向主机A发送ARP响应分组,并定入自己的硬件地址,其余的所有主机都不理睬这个ARP请求分组,虽然ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址.主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP 地址的映射.
下面来详细看一下下面的详细信息
先看第一条信息对应的下面的详细信息,这是请求ARP分组看到的情况
看回上半部分信息.
看上图可以知道,说明这是发了一个广播信息,其目的地址是所有主机,即使说所有主机都会收到运行的ARP进程都收到此ARP的请求分组.具体的含义如下 Destination:broadcast(ff:ff:ff:ff:ff:ff)目的地址是一个广播地址 下面的说明是,这是一个组播帧而且这不是一个默认的地址. 说一下下部部分的信息吧
这个表明了源物理地址是” 00:10:5C:d0:9b”说明了这是一个单播帧,这是一台主机发出的ARP请求分组.并且说明协议的类型为0806 再看下面的图
5 / 28
最顶一行说明这是一个地址解析协议的请求 硬件类型:Ethernet(0*0001) 协议类型:IP(0*80800) 硬件长度为:6 协议长度为4
操作码是:请求的操作码0*0001
发送方MAC地址是”00:10:5c:d1:78:1e 发送方的IP地址:172.16.56.46 接收方的MAC地址还不知道的
接收方的IP地址是:172.56.46.82
看出目的和源的信息刚好换过来,但现在源和目的的组播方式都是一个单播帧. 目的下面还说明了其协议的类型是一个ARP协议,其他的没有什么分别.
看第一行可以看得出这是一个响应的信息, 下面的信息几乎与第一条没有什么区别,
操作码是 reply(0*0002)说明这是一个响应的信息.
只是发送方和接收方互换了一下,还有现在显示了两台主机的物理地址和相应的IP地址,而第一条的详细信息中没有172.16.56.82的物理地址.通过这一过程
通过以上的过程,就可以达到A主机的目的了,就可以查找到B主机的相应的物理地址了,两台主机之间就可以互相过行访问了.
6 / 28
但是有一个问题.ARP是解决同一个局域网上的主机或路由的IP地址的映射问题.如果所要找的主机和源主机不在同一个局域网上.比如我和百度通信,我要不要知道百度的主机的物理地址呢?答案让下面的示例来解答.
可以看得出回应的主机IP并不是百度的IP,百度的IP
百度的IP是
123.125.114.144.而
是这个局域网内的路由器的IP地址.
是这个局域网的网络地址.此就说明了如果主机不是在同一个VLN的话,我的主机就无法解析出百度的硬件地址,我的主机首先发送给百度的IP数据报首先需要通过与我的主机连接在同一个局域网上的路由器来转发,因为我的主机这时需要把路由器的IP地址IP3解析为硬件地址HA3,以便把IP数据报传送给路由器,以后,R1从转发表找出下一跳路由器,同时使用ARP解析出下一跳的硬件地址HA5,于是IP数据报按照硬件地址GA5转发到我网内的那个路由器.我网内的路由器在转发这个IP数据报时用类似的方法解析 出百度主机的硬件地址HA2,使IP数据报最终交付给百度的主机.
所以这面的结果表明对LAN内、LAN之间,APR是如何工作的.
2-1-4.实验的思考与回答
APR缓冲的内容如何保存与其作用?
当主机A向主机B发送数据报时,很可能以后不久主机B还要向A发送数据报,因而主机B也可能要向A发送ARP请求分组,为减少网络上的通信量,主机A在发送其ARP请求分组时,就把自己的IP地址到硬件地址的映射写入ARP请求分组中,就把主机A的这一地址映射写入主机B自己的ARP高速缓存中.以后主机B向A发送数据报时就很方便了.
如果不使用ARP缓存,那么任何一个主机只要进行一次通信,就必在网络上用广播的方式 发送ARP请求分组,就就使网络上的通信量大大增加,ARP把得到的地址映射保存在高速缓存中找到所需的硬件地址而不必再用广播方式发送ARP请求分组了.
如何分别发送方和接收方呢? 方法1
从箭头指向的地方可以看得出IP为172.16.56.46的主机是发送方
7 / 28
方法2
方法3
从这两个对比也可以看得出来
2-2.ICMP的解说
要求:弄清楚ICMP数据包的分类、作用, 捕捉Ping命令数据包,如何构成ICMP协议包,请示与应答包的区别,怎样传输的。
2-2-1.获取数据包的步聚
获取ARP数据包时已获取了ICMP数据包
8 / 28
2-2-2.实验结果
其中可以看到总共有8条数据.有4条回复,4条请求,ICMP的报文种类有两种,一种是ICMP差错报文,一种是ICMP询问报文.结果显示的只是ICMP报文的一种应用,是属于ICMP询问报文的应用.为了简化数据
2-2-3.ICMP实验结果的分析
看上面的图可以大概知道其中一个是请求包,一个是应答包. 请求包为
类型:是一个请求报文 代码:0
检验和:0*f65b是正确的. 标识符:为0*0200 序列号:0*5500 数据部分:(32 个字节) 应答包为
9 / 28
类型:是一个应答报文 代码:0
检验和: 0*f65b是正确的. 标识符:为0*0200 序列号:0*5500 数据部分:(32 个字节)
2-2-4.分析IP数据报
版本:IPV4(说明IP协议的版本) 首部长度:20byte 总长度:60
标识:0*4749(18249)(占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1)
标志:0*00
片偏移:0(较长的分组分片后,某片在原分组中的相对位置) 生存时间:52 协议:ICMP(0*01)
10 / 28
头部检验:0*7871[correct] 源IP:220.181.6.19 目的IP:172.16.56.46
2-3-1.捕获TCP数据包并分析
要求: 捕获一对通信的TCP连接、数据传送、释放的整个过程,分析其三次握手连接、
四次握手释放的会话过程中每一步通信的参数传送,以及可靠传输的实现
2-3-2.捕捉TCP数据包的方法
在软件设好的基础上(在捕捉ARP时的设置),启动开始,然后去浏览一个网站,即可得到数结果
2-3-3.实验结果.
2-3-4.结果分析
三次握手
11 / 28
源端口:2018(2018) 目的端口:http(80)
序列号:0(relative sequence number) 头部长度:44bytes 标志:0*0002(SYN) 减少拥窗口:没有设置 ECN的回应:没有设置 确认号:没有设置 推:没有设置 复位:没有设置 同步:置为1 Fin:没有设置 窗口的大小65535 检验和:0*9019(correct) 最大段大小:1460 bytes Nop指令
窗口缩放:3(multiply by 8) Nop指令 Nop指令
时间戳:tsval 0,tsecr 0 Nop指令
12 / 28
Nop指令 允许袋
源端口: http(80) 目的端口: 2018(2018)
序列号:0(relative sequence number) 确认号置1 头部长度:44bytes 标志:0*001(SYN) 减少拥窗口:没有设置 ECN的回应:没有设置 确认号:1 推:没有设置 复位:没有设置 同步:置为1 Fin:没有设置 窗口的大小65535 检验和:0*4dfo[correct] 最大段大小:1452ytes 第三次握手
13 / 28
源端口: 2018(2018) 目的端口: http(80)
序列号:1( relative sequence number) 确认号:1
头部长度:20 bytes 标志:0*0010(syn) 减少拥窗口:没有设置 ECN的回应:没有设置 紧急:没有设置 确认号:设置1 推:没有设置 复位:没有设置 同步:置为1 Fin:没有设置 窗口的大小65535 检验和:0*c2c4[correct]
三次握手示意图与分析
14 / 28
A的TCP服务器进程先创建传输控制控制块TCB,然后向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始号seq=x,tcp规定,SYN报文段不能携带数据,但同样要消耗一个序号,这时,TCP客户进程进葡萄牙SYN-SENT状态 B收到连接请求后,如同意建立连接,则向A发送确认.在确认报文中SYN,ACK位都被设置为1确认号是ack=x+1,同时也为自己选择一个初始号 seq=y.这个报文段也不能携带数据,但同样要消耗掉一个序号,这时TCP服务器进程进入SYN-RCVK状态.
TCP客户进程收到B的确认后,还要向B给出确认,确认报文段的ACK设置,确认号ACK=Y+1而自己的序号SEQ=X+1,TCP的的标准规定,ACK报文可以携带,但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是SEQ=X+1,这时,TCP连接已经建 立,A进入ESTABLISHED状态.当B收到A的确认后,也进入ESTABLISHED状态. 四次释放
第一次
15 / 28
HTTP分析
回应一个接收成功的确认 要求版本为:HHTp/1.1
响应代码:200
日期:头域表示消息发送的时间服务:浏览器服务 内容长度:6222\\r\\n
内容类型:文本;字符集 缓存控制:private\\r\\n 过期: 连接:关闭
源端口:http(80)
目的端口:2018(2018)
序列号:5979(relative sequence number) 下一下序列号:6441
确认号:425(relative ack number) 头部长度:20 bytes
标志位:0*0019(fin .psh,ack) 减少拥窗口:没有设置 ECN的回应:没有设置
16 / 28
紧急:没有设置 确认号:1 PUSH:1
复位:没有设置 同步:没有设置 FIN:1
窗口大小:6432
检验和:0*1b36[correct] TCP 段数据:(462 bytes) 第二次
源端口:2018(2018) 目的端口: http(80)
序列号:425 ative sequence number) 下一下序列号:6441
确认号:6442 tive ack number) 头部长度:20 bytes
标志位:0*0010 in .psh,ack) 减少拥窗口:没有设置 ECN的回应:没有设置 紧急:没有设置 确认号:1 PUSH:0 复位:0 同步:0 FIN:0
窗口大小:6432
检验和:0*a7f3[correct] 第三次
17 / 28
源端口:2018(2018) 目的端口: http(80)
序列号:425 ative sequence number) 下一下序列号:6442
确认号:6442 tive ack number) 头部长度:20 bytes
标志位:0*0011 n .psh,ack) 减少拥窗口:没有设置 ECN的回应:没有设置 紧急:没有设置 确认号:1 PUSH:0 复位:0 同步:0 FIN:1
窗口大小:65535
检验和:0*a7f2 orrect]
第4次
源端口: http(80)
目的端口: 2018(2018)
18 / 28
序列号:6442 确认号:426
头部长度:20 bytes
标志位:0*0010 .psh,ack) 减少拥窗口:没有设置 ECN的回应:没有设置 紧急:没有设置 确认号:1 PUSH:0 复位:0 同步:0 FIN:0
窗口大小:6432 检验和:0*8ed2
四次释放示意图与分析
数据传送结束后,通信双方都可释放连接,现在A和B都可释放连接,A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接.
19 / 28
B收到连接释放报文段后即发出确认.
A收到B的确认后,就进入FIN-WAIT-2状态,等待B发出的连接释放报文段 若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接
A在收到B的连接释放报文后,必须对此发出确认,从A进入到TIME-WAIT状态后,要经过4分钟才能进入到CLOSED状态,才能开始建立下一个新的连接,当A撤销相应的传输控制块TCB后,就结束了这次的TCP连接.
2-4-1、DNS数据包的分析
要求: 捕获本机浏览外部某一网站时的DNS、HTTP数据包,取DNS、HTTP典型
数据包各一个,列出其应用层、传输层、IP层、数据链路层上各层上数据包相应参数,首部内容,并对感兴趣的部分进行深入分析。
2-4-2.实验步骤
在软件参数设置不变的情况下,在命令提示符窗口中PING一个不常用的网址,或通过其他方式,也可以访问一个网站,就可以得到DNS的数据包了.
2-4-3实验结果
2-4-4.结果分析
20 / 28
交易ID:0*40D0
标志位:0*0100(标准查询) 响应:信息查询 操作码:标准查询 截断:信息不可截断 递归所需:做递归查询 Z:保留
未经验证的数据确定:未经验的数据是不可接受的 请求:1 应答:0
查询:名字:www.icann.org 类型:A(host address)
类:in(0*0001)
应答包
应答
域名为www.icann.org:类型 A,类 IN,,地址为192.0.32.7
21 / 28
详细解析:域名为www.icann.org 类型:A(主机地址) 类:IN(0*0001)
生存时间:4 minutes,10 seconds. 地址长度:4 地址:192.0.32.7
从详细信息我们就可以知道关于IP的详细信息了.
2-5-1.捕获DHCP数据包,分析其构成;
要求:本机设置为自动获取IP地址,捕获本机的DHCP数据包,列出数据包包含
的内容,并对其构成进行分析,检查数据包中是否包含本机需要的数据。
2-5-1.实验步骤
1. 运有Ethereal软件 2. 进行相关设置
3.
22 / 28
4.
网上邻居 右键 看到以下窗口
23 / 28
对其进行设置后启动 启动后
24 / 28
2-5-2.实验结果
2-5-3.结果分析
首先我要申请一个IP地址,我向服务器发送一个广播DHCP发现报文,网络上至少有一个DHCP服务器可以收到我的报文DHCP服务器对此广播报文进行回答,DHCP服务器先在其数据库中查找我的主机的配置信息,若找到,则返回找到的信息,如果找不到,就从服务器的IP地址池中取出一个IP地址分配给我的主机,DHCP服务器回应的报文叫做提供报文,表示提供了IP地址等配置信息.凡是DHCP报文DHCP服务器都会发出DHCP提供报文,因此DHCP客户可以收到多个报文,但DHCP只从几个或多个的DHCP服务器中选择其中一个,并向其发送DHCP请求报文,被请
25 / 28
求的DHCP服务器发送确认报文DHCPACK,从这时起,DHCP客户就可以使用这个IP地址了,这时也完成了绑定,称为绑定状态,并且可以使用临时的IP地址了, 然后多个DHCP服务器回应我,给我分配IP等信息.
注意第三步的请求报文的发送还是以广播的形式发送的
这步还用广播发送的原因是,比如有几台DHCP服务器收到我的发现报文,并且向我发出了提供报文,但是我只是选择其中的一台DHCP服务器为我提供的提供报文,同时其他DHCP服务器又给我发来了报文,所以我还要告诉所有的DHCP服务器,说我已经选择了某一台DHCP服务器为我提供的提供报文,所以我还要以广播
的形式将无的消息传出去. 主机要接入因特网,首先要有的条件 1. IP地址 2. 默认网关 3. 默认路由器
4. 域名服务器的IP地址
26 / 28
你的主机的IP地址:172.16.56.46 中继代理的IP地址:172.16.56.1 客户端物理地址:00:10:5c:d1:78:1e DHCP消息类型:DHCP的应答 主机名:JSJ320 供应商标识符:MSFT 5.0 子网掩码:255.255.252.0 路由:172.16.56.1
域名服务器地址:202.96.128.86
202.96.128.166这两个是本地域名服务器的址 IP址的租用时间:12小时
三.实验总结
这次实习,我学会了从各种方式获取知识,比如问老师,和同学探讨,上网搜索等.不过最重要的是在于自己,一开始,我以为我自己想得很周全了,理解得很全面了,但后来老师问了一个我想都没想过的问题,所以,以后不管怎么样,也要向其他人
27 / 28
学习,和其他同学讨论.也许只有这样才能使自己做得更好.也许不会做到十全十美,但不管怎么样,只要自己努力去做了,就一定会做得好的,一定会进步的.从这次实习,我得了的结论是,做一件就是不简单,做好一件平凡的事就是不平凡,只有脚踏实地地去做,认认真真去做,一定能做到自己的最好的,同时还要从方面,多角度去考虑问题,如果必要的话,还可以和同学讨论一下,这样可以集慧于一身,也许我这次实习做得不太好,但我相信只要我不断去发掘,不断学习,我一定能做好的。
四.主要参考书
《计算机网络(第五版)》,谢希仁编著,电子工业出版社
《计算机网络(第4版)》,Andrew著,潘爱民译,清华大学出版社 <<>>
作者:广东海洋大学 余乃飞
28 / 28
因篇幅问题不能全部显示,请点此查看更多更全内容