第一届智科牛马人的计网实验验优报告:
实验需要组队,三人一组好像,也可以一人两人,排名在前面的人验优更容易,同时需要操作四台电脑,跟着实验指导书,不懂的问问老师和身边同学,一天从早到晚可以搞定,开窍也可以一上午或者一下午搞定。
前面画的拓扑图越简单越好!便于后面操作
还有记得做实验过程中,做出一个小版块就拍照截图,不然后面写报告找不到素材!一定切记,甚至电脑会出问题,所以拍照一定安排!
(2)在左边数起的第一个路由器划分路子网接口,配置路由器的 IP地址
enable
con
Router(config)#interface gi 0/1
Router(config-if)#no ip address
去掉路由器主接口上的 IP 地址
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface gi 0/1.10
进入子接口 gi 0/1.10
Router(config-subif)#encapsulation dot1Q 10
指定子接口 gi 0/1.10 对应 VLAN 10,并配置干道模式
Router(config-subif)#ip address 200.168.10.1 255.255.255.0
配置子接口 gi 0/1.10 的 IP 地址
Router(config-subif)#exit
Router(config)#interface gi 0/1.20
进入子接口 gi 0/1.20
Router(config-subif)#encapsulation dot1Q 20
指定子接口 gi 0/1.20 对应 VLAN 20,并配置干道模式
Router(config-subif)#ip address 200.168.20.1 255.255.255.0
配置子接口 gi 0/1.20 的 IP 地址
Router(config-subif)#end
(3)我们对左边的PC进行ping,检测单臂路由行不行
给左边的PC1和 PC2(左边分别是PC1和PC2和PC3)分别配置 200.168.10.0/24 和 200.168.20.0/24 网段内的 IP 地址,并分别以 200.168.10.1 和 200.168.20.1 作为网关,我们将PC1地址配置为200.168.10.2,PC2地址配置为200.168.20.3。
(5)路由器设置ip地址
这里凭当时打代码的记忆给出其中三个
Enable
con
int gi0/0
ip address 192.168.1.2 255.255.255.0
interface Loopback 0
ip address 200.168.10.1 255.255.255.0
interface Loopback 1
ip address 200.168.20.1 255.255.255.0
con
int gi0/0
ip address 192.168.1.1 255.255.255.0
int gi0/1
ip address 192.168.2.1 255.255.255.0
con
int gi0/0
ip address 192.168.2.2 255.255.255.0
interface Loopback 0
ip address 200.168.31.1 255.255.255.0
(6)osff协议配置
router ospf 10
network 200.168.10.0 0.0.0.255 area 0
network 200.168.20.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 1
router ospf 10
network 192.168.1.0 0.0.0.255 area 1
network 192.168.2.0 0.0.0.255 area 1
router ospf 10
network 192.168.2.0 0.0.0.255 area 2
network 200.168.31.0 0.0.0.255 area 2
(8)nat地址配置
在左边第一个路由是配置实现nat地址转换。
在路由器上配置 IP 路由选择和 IP 地址,再配置静态NAT,指定一个内部接口和一个外部代码如下:
con
Int gi0/0
ip address 192.168.1.2 255.255.255.252
clock rate 64000
interface gi 0/1
ip address 200.168.1.1 255.255.255.0
ip route 0.0.0.0 0.0.0.0 gi 0/0
ip nat inside source static 200.168.10.2 200.1.1.80
ip nat inside source static 200.168.20.3 200.1.1.81
int gi0/0
ip nat outside
int gi0/1
ip nat inside
(9)测试我们的nat
telnet 登录远程主机200.168.31.3来测试 nat的转换。
telnet 100.1.1.1
User Access Verification
Password:
sh ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 200.1.1.80:1172 200.168.10.2:1172 200.168.31.3:23 200.168.31.3:23
tcp 200.1.1.81:1173 200.168.20.3:1173 200.168.31.3:23 200.168.31.3:23
debug ip nat
nat: [A] pk 0x03f470e4 s 200.168.10.2->200.1.1.80:1172 [3980]
nat: [B] pk 0x03f5b540 d 200.1.1.80->200.168.10.2:1172 [259]
nat: [A] pk 0x03f4b3ac s 200.168.10.2->200.1.1.80:1172 [3981]
nat: [B] pk 0x03f4a888 d 200.1.1.80->200.168.10.2:1172 [260]
nat: [A] pk 0x03f478c8 s 200.168.10.2->200.1.1.80:1172 [3982]
nat: [B] pk 0x03f4a6f4 d 200.1.1.80->200.168.10.2:1172 [261]
nat: [A] pk 0x03f4bd24 s 200.168.10.2->200.1.1.80:1172 [3983]
nat: [B] pk 0x03f498a8 d 200.1.1.80->200.168.10.2:1172 [262]。
到此,我们的nat地址转换成功,实验的第一第二部分完成。
三、实验重头戏(基于模拟互联网的网络协议分析,即抓包)
(1)IPV4数据报分析如下:
1.Version(版本): 该字段长度为4比特位。标识IP报头的版本和格式,ipv4数据包的该字段设置为:0100。
2.Header-Length(Internet报头长度):该字段长度为4比特位。它标识报头的总长度,以32比特位为一个单位,在ipv4中头部被限制为最多15个32位字。有效报头的最小值为5,即0101。
3.Type of Service(服务类型): 该字段长度为8比特位。被分为2个部分,前6位被称为区分服务字段——DS字段;后2位是显示拥塞通知字段——ECN字段,用于QS。
4.Total Length(总长度): 该字段长度为16比特位。它标识数据报和数据包的总长度,单位为字节,ipv4的数据最大为65535。
5.Identification(标识符): 该字段长度为16比特位。它标识分段所属的组,所属为同一组则标识符相同。在网络层中也可把流量区分开来,用于流量分片。
6.Flags(标记位): 该字段长度为3比特位。它分为三分部分,保留位(reserved bit)为0;分片位(Don`t fragent)当为1时标识未分片,0则标识被分片;更多位(more fragments)为0标识最后分段,为1标识更多分段。
7.Fragment Offset(分段偏移): 该字段长度为13位比特位。用来重排序,它标识分段在当前数据包的位置,单位为字节。
8.Time to Live(存活时间):该字段长度为8比特位。在网络中标识数据包最大存活时间,用来防止路由环路,每经过一台路由器则TTL字段减去1,直到为0,此数据包直接被丢弃。其值最大为255,单位为s。然而现在路由器转发数据包都是用跳数来作为衡量单位。
9.Protocol(协议):该字段长度为8比特位。它用来标识上层协议(0—255),上图为6标识为TCP协议号。
10.Header Checksum(报头校验和):该字段长度为16比特位。 这个16位字段只对首部查错,不包括数据部分。在每一跳,路由器都要重新计算出的首部检验和并与此字段进行比对,如果不一致,此报文将会被丢弃。重新计算的必要性是因为每一跳的一些首部字段(如TTL、Flag、Offset等)都有可能发生变化,不检查数据部分是为了减少工作量。数据区的错误留待上层协议处理——(UDP)和(TCP)都有检验和字段。此处的检验计算方法不使用CRC。
11.Source address(源地址):该字段长度为32比特位。它标识发送者的ip地址。在上图中,我们抓取的是PC2 ping PC1的报文,所以源地址是PC2 200.168.20.3。
12.Destination address(目的地址):该字段长度为32比特位。它标识接受者的ip地址。在上图中,PC2是目的地,所以其目的地址是PC2 200.168.10.2。
13.options(ip选项):该字段长度可变。该字段提供某些控制功能,但在大部分情况下不需要这些功能。里面包括机制有松散路由,严格路由,路由记录及时间戳。
14.padding(填充):通过options字段后面补充0来补齐32位比特位,padding的和位0或者是32的倍数。
(2)IP分片分析
我们使用左边第二部电脑PC2 ping PC1,在PC2的cmd里写ping 200.168.10.2 -l 6000,把传送的IP数据报长度设为6000字节,而以太网数据报的数据部分最大长度MTU为1500字节,所以传送的数据报需要进行IP分片,一共分成4片。
(1)第一个分片:首部长度为20字节,数据部分长度为1480字节,MF=1,段位移(Fragment Offset)=0,说明这是分片中的第一片。
(2)第二个分片:首部长度为20字节,数据部分长度为1480字节,Identification唯一标识符与第一个分片相同,说明这是同一组分片,MF=1,段位移=1480。
(3)第三个分片:首部长度为20字节,数据部分长度为1480字节,MF=1,段位移=2960。
(4)第四个分片:首部长度为20字节,数据部分长度为1480字节,MF=0,说明这是最后一个分片,段位移=4440。
(3)TCP协议分析
这是抓取的PC2 ping PC1的报文截图,因此PC2是客户端,PC1是服务器端。
上图中前三行为三次握手,第9至12行为四次挥手,以下为其分析:
1.第一次握手:客户端PC2发送一个TCP,我们可以看到上图中源地址为PC2 200.168.20.3,目的地址为PC1 200.168.10.2,SYN=1,Seq=0,shockwave -> ftp代表客户端请求建立连接。
2.第二次握手:服务器向客户端返回一个数据包,SYN=1,ACK=1,ftp -> shockwave,将确认序号Ack设置为期望下一个收到的序号,即0+1=1。
3.第三次握手:客户端收到服务器发来的包后检查确认序号Ack是否正确,即第一次发送的序号Seq加1(X+1= 0+1=1),以及标志位ACK是否为1。若正确,客户端会再向服务器端发送一个数据包,SYN=0,ACK=1,确认序号Ack=Y+1=0+1=1,并且把服务器发来ACK的序号Seq加1发送给对方,发送序号Seq为X+1= 0+1=1。客户端收到后确认序号值与ACK=1,shockwave -> ftp,至此,一次TCP连接就此建立,可以传送数据了。
4.第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,序号Seq=29,确认序号Ack=154,shockwave -> ftp。
5.第二次挥手:服务器向客户端返回一个数据包,ACK=1代表收到客户端的关闭连接请求,Ack=30表明下一个期望收到的序号,ftp -> shockwave。
6.第三次挥手: 服务器收到FIN后,服务器关闭与客户端的连接,发回一个FIN和ACK(标志位FIN=1,ACK=1)表示服务器端请求关闭连接,确认序号Ack为收到的序号加1,即Ack=29+1=30。序号Seq等于收到的确认序号Ack 154,ftp -> shockwave。
7.第四次挥手:客户端收到服务器发送的FIN之后,发回ACK确认(标志位ACK=1),确认序号为收到的序号加1,即Ack+1=155。序号为收到的确认序号Ack 154,shockwave -> ftp。
四、课程设计总结或结论
略
五、参考文献
[1]谢希仁.计算机网络. 电子工业出版社,第七版.2017年1月
上一届的计网实验:
略