当前位置:   article > 正文

计算机网络与通信实验复习_浙江工商大学计算机网络实验复习

浙江工商大学计算机网络实验复习

计算机网络与通信实验复习

由于时间匆忙和作者水平有限,本文可能存在部分错误和描述含糊的地方,但均不影响读者理解。也希望各位可以提出批评,有空后也会加以改正。

本文理论部分图片和少部分描述来自学校教学课件,实验图片为作者自己实验后成功的截图,仅供教学使用。

建议先学习计网理论相关知识,再看相关实验。

本文使用的模拟仿真软件为Cisco Packet Tracer,抓包软件为WireShark,在网上均可下载。

祝学习顺利

本文包含的重要内容有:DHCP、DNS、HTTP、交换机基本设置、交换机工作原理、VLAN、静态路由、动态路由、NAT、ARP协议分析、TCP协议分析

1.传输介质

1.1.双绞线的制作标准

1.EIA/TIA 568A 标准:白绿 绿 白橙 蓝 白蓝 橙 白棕 棕

2.EIA/TIA 568B 标准:白橙 橙 白绿 蓝 白蓝 绿 白棕 棕

在现实中多用第二种 记忆方法:先按白X X记忆,将绿蓝交换位置

一二的区别是13,26互换

1.2.直连线与交叉线

直连线:两端为同一标准的双绞线

交叉线:两端分别为EIA/TIA 568B 和EIA/TIA 568A 排序的双绞线

直连线用于两种不同的设备之间,比如:1.主机和交换机或集线器;2.路由器和交换机或集线器

交叉线用于同种类型设备之间,比如:1.计算机与计算机连接;2. 交换机与交换机连接;3.交换机和集线器之间;4.主机和路由器之间

注意加粗重点

2.DHCP

DHCP用于动态的自动分配IP地址

2.1.工作原理

DHCP的工作原理
这里src指代源地址,dest指代目的地址,yiaddr指代被分配给请求主机的地址,而transaction ID指的是事务ID,事务ID可以理解为一次事务的标记,而67、68分别表示UDP服务器和客户端端口
由上图可知:
1.DHCP发现报文:发现报文中的源地址是0.0.0.0,因为此时还未分配,而目的地址是255.255.255.255,即广播地址。因为此时不知道发给哪个DHCP服务器。使用UDP68端口作为源端口,使用UDP67端口作为目的端口来广播请求IP地址信息
2.DHCP提供报文:提供报文中的源地址即为服务器IP地址,目的地址也为广播地址255.255.255.255,因为此时还未分配成功,并携带了即将给请求主机分配的IP地址233.1.2.4,这里客户主机是通过事务ID来分辨提供报文的(存疑)使用UDP67端口作为源端口,使用UDP68端口作为目的端口来广播请求IP地址信息
3.DHCP请求报文:请求报文就是主机确认接收该DHCP服务器提供的IP,因为发现报文是广播的,所以会有多个接收到的DHCP服务器为该主机提供IP,但最终主机只会接收其中一个,一般为第一个。但请求报文的源地址仍为0.0.0.0,因为还没有经过DHCP服务器的最终同意。目的地址也仍为广播,需要告诉别的DHCP服务器主机已经接收其他DHCP服务器提供的IP地址了。使用UDP68端口作为源端口,使用UDP67端口作为目的端口来广播请求IP地址信息
4.DHCP ACK报文:此时DHCP服务器确定该IP可用,便允许客户主机使用,因此ACK报文用于最后的确认。使用UDP68端口作为目的端口来广播请求IP地址信息

3.DNS

DNS是域名解析系统,以符号名字代替纯数字(IP地址)对计算机进行标识
域名解析图

3.1.DNS基本概念

由于数字过于抽象,用户很难记住每个域名的IP地址,因此使用DNS服务器将相应的域名转换成IP地址。而DNS域名服务器是分级的,即由浅到深,大部分网址都为com,少部分为xxx.com,最后www.xxx.com便唯一,也唯一对应一个IP。因此不同级别的域名服务器也只知道不同级别网址的IP。例如www.baidu.com,第一级域名服务器知道com的IP,下一级知道baidu.com的IP,以此类推,最后可以推出整个网址对应的IP
具体了解DNS需要系统学习计网原理,这里不作详细介绍

3.2.DNS服务器的划分

【根域名服务器】
最⾼层次、最重要的的域名服务器。根域名服务器知道所有的顶级域名服务器的域名和 IP 地址。不管是哪⼀个本地域名服务器,若要对互联⽹上任何⼀个域名进⾏解析,只要⾃⼰⽆法解析,⾸先求助于根域名服务器。
在互联⽹上共有 13 个不同 IP 地址的根域名服务器(13套),它们的名字是⽤⼀个英⽂字⺟命名,从 a ⼀直到 m(前 13 个字⺟)。
13台根服务器,主根部署在美国,12个辅根有9台在美国,1台在英国,1台在瑞典,1台在⽇本。

【顶级域名服务器】
是各顶级域名自己的名称服务器,负责他们各自管理的二级域名解析。

【权威域名服务器】
是针对dns区域提供名称解析服务而专门配置、建立的名称服务器,可为用户提供最权威的dns域名解析。

【本地域名服务器】
一般是指ISP提供的名称服务器(也就是本地DNS服务器),例如我们使用的114.114.114.114,Google的8.8.8.8。

3.3.DNS的迭代查询与递归查询

递归查询:
主机询问本地域名服务器,本地域名服务器询问根域名服务器,根域名服务器访问顶级域名服务器,以此类推,最后再逐层返回。这样会导致根域名服务器的工作量很大很大。因此递归查询并不常见
迭代查询:
即主机询问跟本地域名服务器,这一点从与递归查询是一致的。但是后续的不同,是以本地域名服务器为点,分别访问根域名服务器、顶级域名服务器等,即根域名服务器告诉本地域名服务器,下一个要访问的顶级域名服务器是哪一个,由本地域名服务器去访问顶级域名服务器,以此类推。这样所有的工作都是本地域名服务器完成的,根域名服务器等只需要告诉相应的本地域名服务器下一个要访问的下一级域名服务器是哪个即可
用迭代的方式查询www.baidu.com
这里的首选域名服务器就是本地域名服务器

  1. 客户机(PC)向首选DNS服务器发起请求:“你知道www.baidu.com的IP吗?”如果首选DNS服务器知道,那么首选DNS 服务器就会直接给客户机返回域名的IP 地址
  2. 若首选DNS 服务器上没有相关信息,就不能直接返回域名的IP 地址,这时候,首选DNS 服务器就会去询问根DNS服务器,根服务器可能不知道这个具体的 www.baidu.com 的IP地址,但是它知道一级域 com 的IP
  3. 根服务器将com 的IP地址返回给 首选DNS 服务器
  4. 首选DNS服务器再去请求 ” com” DNS服务器:“你知道 www.baidu.com的IP吗”,但是com DNS服务器也不知道 www.baidu.com 的IP,但是com DNS 服务器知道 baidu.com 的IP
  5. ”com“DNS服务器将这个信息返回给 首选DNS 服务器
  6. 首选DNS服务器再去请求 “baidu.com” DNS服务器,这时候 baidu.com 服务器当然就会知道 www.baidu.com的IP地址
  7. ”baidu.com“DNS服务器将这个信息返回给首选DNS 服务器
  8. 首选DNS 服务器将获取到的 www.baidu.com的IP返回给客户机
  9. 客户机根据获取到的www.baidu.com 的IP地址来访问WEB服务器
  10. WEB服务器返回相关的数据
    具体过程

4.HTTP协议

HTTP :超文本传输协议,也就是HyperText Transfer Protocol。
Web服务器:指驻留于因特网上某种类型计算机的程序
当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
服务器使用HTTP与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。
目前最主流的三个Web服务器是Apache、 Nginx 、IIS。

这里需要用到WireShark抓包进行分析,具体分析放在后续协议分析的实验中,和其他实验一起讲

5.交换机基本配置

交换机是一种用于广电信号转发的网络设备,通俗来说,多个主机需要通过交换机来连接路由器,因为路由器接口较少,而交换机有很多接口,这样方便管理及后续使用
交换机的分类

5.1.交换机的基本命令

用户模式
Switch>
特权模式
Switch>enable
Switch#
配置模式
**Switch#configure terminal **
Switch(config)#
vlan配置模式
Switch(config)#vlan 10
Switch(config-vlan)#
接口配置模式
Switch(config)#interface fastethernet 0/0
Switch(config-if)#
若不知道要使用什么命令 可以使用?
例如:Switch(config)#interface ?
交换机会自动跳出可能的选项
若要补齐命令可以用Tab

5.2.错误提示信息

% Ambiguous command: "show c“
用户没有输入足够的字符,网络设备无法识别唯一的命令,较为模糊
% Incomplete command.
用户没有输入该命令的必需的关键字或者变量参数
% Invalid input detected at ‘^’ marker.
用户输入命令错误,符号(^)指明了产生错误的单词的位置

5.3Telnet配置

网络拓扑图:
Telnet的网络拓扑
1、配置交换机管理IP
Switch(config)#interface vlan 1 //进入vlan 1接口
Switch(config-if)#ip address 192.168.1.1 255.255.255.0 //为vlan 1接口上设置管理IP
Switch(config-if)#no shutdown //开启vlan 1端口
2、配置telnet密码
Switch(config)#line vty 0 4 //进入虚拟终端模式
Switch(config-line)#password 123456 //将telnet密码设置为123456
Switch(config-line)#login //启用需输入密码才能telnet成功
3、配置特权模式密码
Switch(config)#enable password 123456 //配置进入特权模式密码
配置过程

6.交换机工作原理

6.1.MAC地址

首先要了解MAC地址。MAC地址又称为物理地址由48位二进制数组成,通常表示为12个16进制数,如:00-50-56-C0-00-01。前24位是厂商识别码,后24位是节点标识符,可以认作每一个端口的物理标识
分为单播、组播、广播三种类型
单播:第1个字节的最低位为0,可作为目的地址和源地址
组播:第1个字节的最低位为1,仅能作为目的地址
广播:48位全部为1
MAC地址及分类

6.2.交换机与MAC地址

在交换机内部有一张MAC地址表,其存放了每个端口对应的MAC地址,即用于存放物理地址与交换机端口映射关系的数据库,也是交换机用于转发的依据
转发表格式如下:
MAC地址表
其中包含所属VLAN,MAC地址,类型及对应接口
其中,类型若为静态,则该MAC地址映射关系不会自动修改,若为动态,则一段时间后交换机会重新询问并更改

6.3.地址学习

一个新的交换机的MAC地址表是没有任何对应MAC地址的,因此需要地址学习,地址学习的规则如下:

  1. 主机A向交换机发送信息,且包含目的主机的MAC地址
  2. 交换机的MAC地址表中没有该目的MAC地址
  3. 因此交换机泛洪转发:即向所有端口转发
  4. 其他主机收到后便向交换机报告自己的MAC地址,交换机便记录下来
  5. 若找到目的MAC地址,则转发,其他的主机是不会收到该信息的,即转发/过滤

6.4.实验内容(设置静态MAC地址)

实验拓扑图
总体实验步骤:

  1. 连接
  2. 设置IP地址
  3. 设置静态MAC

将PC1、PC2、PC3的MAC地址信息写入MAC地址表中,机号与端口号对应。
例:
Switch(config)#mac-address-table static 00d0.f838.0003 vlan 1 interface fastethernet 0/3
将PC3的MAC地址信息从MAC地址表中删除。
例:
Switch(config)#no mac-address-table static 00d0.f838.0003 vlan 1 interface fastethernet 0/3
操作代码
展示MAC地址表
此处Fa0/1连接PC1,Fa0/2连接PC2,若PC2连接Fa0/4,便ping不通,因为交换机只会转至Fa0/2。而动态路由会自己建立,因此无论怎么pingPC3都是通的

7.交换机VLAN

因为广播域过大会引起宽带浪费,安全性降低和不易管理等麻烦,因此我们需要分割广播域,在分割广播域过程中,若使用路由器分割,则成本较高,因此使用虚拟局域网VLAN

7.1.VLAN简介

VLAN是虚拟局域网的英文简称。虚拟局域网是指局域网的划分并不是实体的划分,其在一个网络中,通过设置将一个网络中的主机划分到多个虚拟子网中,每一个虚拟子网就是一个VLAN。具体学习请系统学习计网理论

7.2.交换机的不同端口

1.Access端口
该端口为接入端口,通常用于连接主机和交换机。每一个Access端口仅属于一个VLAN,其发送的帧是不带有VLAN标签的
2.Trunk端口
该端口多用于交换机之间的连接。其可设置VLAN列表,**即一个Trunk端口可对应多个VLAN
**,每个端口只转发带有相同或处于列表中VLAN的帧

7.3.缺省VLAN

即默认VLAN,默认所有端口都在vlan1里,又叫缺省vlan1
设置缺省vlan是省去了用户配置的环节,让所有的端口都能通用,但有的交换机默认没有缺省vlan,也就是所有的口都不通,需要自己配置vlan才能使用。缺省,即系统默认状态(default),意思与“默认”相同
特别的,Trunk接口两端的缺省VLAN必须相同
缺省VLAN

7.4.VLAN配置

创建VLAN:
Switch(config)#vlan vlan-id

删除VLAN:
Switch(config)#no vlan vlan-id

查看VLAN
Switch#show vlan brief

向VLAN内添加一个端口:
Switch(config)#interface interface-id
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan vlan-id

向VLAN内添加一组端口:
Switch(config)#interface range port-range
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan vlan-id

将端口设置成Trunk端口:
Switch(config)#interface interface-id
Switch(config-if)#switchport mode trunk

为Trunk端口指定缺省VLAN(两端一致):
Switch(config-if)#switchport trunk native vlan vlan-id
一般默认为VLAN 1

Trunk端口的许可VLAN列表:
**Switch(config-if)#switchport trunk allowed vlan { all | [add| remove | except] vlan-list } **
all:许可列表包含所有支持的VLAN
add:将指定VLAN列表加入许可VLAN列表。
remove:将指定VLAN列表从许可VLAN列表中删除。
except:将除列出的VLAN列表外的所有VLAN加入许可VLAN列表

7.5.实验内容

实验要求
实验拓扑图

  1. 建立VLAN
  2. 向VLAN中添加端口
  3. 设置Trunk端口
  4. 设置缺省VLAN即可

首先,设置VLAN
设置VLAN
再将端口加入相应VLAN
加入相应VLAN
相应端口VLAN
接着便设置Trunk端口
设置Trunk端口和缺省VLAN
之后同一VLAN之间的主机可以相互ping通,不同VLAN之间的就不行

8.静态路由

8.1.静态路由的概念

当一个交换机上的主机属于不同的网络时,此时他们便无法通信,这时就需要用路由器来连接两个网络。与交换机相似,路由器中也有一张转发表,其中包含了发送至某个网络的数据应当往哪里转发。静态路由则是管理员事先设置好的固定路由信息,其不会自动变更,因此较适应一些小型网络

8.2.路由器的相关命令

配置接口IP作为所连接网络的网关。
Router(config)# interface interface-id
Router(config-if)# ip address ip-address mask
Router(config-if)# no shutdown

配置静态路由。
Router(config)# ip route prefix mask ip-address
查看路由信息。
Router# show ip route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.2.0/24 is directly connected, FastEthernet0/1
S 192.168.3.0/24 [1/0] via 192.168.2.2

通过192.168.2.2的端口,访问所有24位子网掩码的目的网络
Router(config)# ip route 0.0.0.0 255.255.255.0 192.168.2.2

通过192.168.2.2的端口,访问所有网络。(用于边界路由)
Router(config)# ip route 0.0.0.0 0.0.0.0 192.168.2.2

8.3.实验内容

配置默认网关并设置静态路由
具体的网络拓扑

  1. 设置端口IP并填写默认网关
  2. 打开端口
  3. 设置静态路由
  4. 测试
    首先,设置默认网关
    这里的gig与fa相同的意思,只是不同的路由器端口叫法不同
    在这里插入图片描述
    再设置静态路由

    另一个路由器也是由上面两步组成
    其中
    ip address 192.168.1.1 255.255.255.0是为相应端口配置IP
    设置默认网关可以去图形化界面里设置
    ip route 192.168.3.0 255.255.255.0 192.168.2.2则表示发往192.168.3.0的数据都往192.168.2.2转发

9.VLAN间通信

9.1.VLAN间的通信问题

由于VLAN是广播域,不同广播域之间是相互隔离的。因此若VLAN间要实现通信必须借助路由器或三层交换机

9.2.单臂路由

单臂路由是指多个VLAN共用路由器的一个端口

方法便是将路由器的端口进一步细分成更小的,每一个VLAN都占据一个细分端口

缺点:

路由器转发速度有限,无法满足VLAN间通信数据量大的需求,并且容易造成单点故障

数据在物理链路上往返传输,会有转发延迟,很可能成为局域网性能瓶颈

细分端口
可能用到的命令:

将路由器接口配置为干道模式,且去掉接口上的IP地址
Router(config)# interface interface-id
Router(config-if)# no ip address
Router(config-if)# no shutdown

进入子接口、封装802.1Q并指定VLAN ID号、配置IP地址
**Router(config)# interface type slot/number.subinterface-number
Router(config-subif)# encapsulation dot1q vlan-id
Router(config-subif)# ip address ip-address mask **
查看路由表信息
Router# show ip route

9.3.单臂路由实验

搭建如下拓扑并完成相应通信

PC0属于VLAN10,PC1属于VLAN20
![在这里插入图片描述请添加图片描述
实验步骤:

交换机部分:

  1. 设置VLAN

  2. 给不同的VLAN加入相应端口

  3. 设置Trunk端口

打开端口:
在这里插入图片描述
设置VLAN:
在这里插入图片描述
给不同的VLAN加入端口:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHHxA4bc-1640257546292)(C:\Users\Bruce\AppData\Roaming\Typora\typora-user-images\image-20211223185217459.png)]

设置Trunk端口:

在这里插入图片描述

路由器设置:

  1. 进入干道模式,去掉端口IP并打开端口

  2. 细分子端口,并设置对应网关

  3. 显示路由表

进入干道模式,去掉端口IP并打开端口:

在这里插入图片描述

细分子端口并设置对应网关——这步最关键

在这里插入图片描述

这步做好后一定要记得去PC机里设置默认网关!

显示路由表:

在这里插入图片描述
接下来在PC0上pingPC1即可ping通

9.4.利用三层交换机实现VLAN间通讯

三层交换机实现VLAN间通信的方法是在已有的VLAN上创建虚接口,它同样可以配置IP地址,借助虚接口三层交换机能够实现路由转发功能。

优点:
VLAN间流量不必经过路由器,网络延时和抖动都很小,同时也极大程度的减轻上层接入路由器的负载。

三层交换机的VLAN间路由由交换机的三层转发引擎完成,其性能取决于交换机的背板转发速率,可以在多个端口上轻松实现线速转发,可以获得很好的性能。

事实上,网络一般分层设计,三层交换机一般很少用于接入层。

可能用到的命令:

创建VLAN:
Switch(config)# vlan vlan-id
向VLAN内添加端口:
Switch(config)# interface interface-id
Switch(config-if)# switchport access vlan vlan-id

配置SVI:
Switch(config)# interface vlan vlan-id
Switch(config-if)# ip address ip-address mask

开启路由功能:
Switch(config)# ip routing
查看路由表:
Switch# show ip route

9.5.三层交换机实验

根据如下拓扑图搭建实验
在这里插入图片描述

二层交换机操作:

  1. 配置VLAN并加入相关端口
  2. 配置Trunk端口
    在这里插入图片描述

三层交换机操作:

  1. 配置VLAN

在这里插入图片描述

  1. SVI配置并打开端口
    在这里插入图片描述
    在这里插入图片描述

这边要记得no shutdown
结束后要打开交换机ip routing

  1. 查看路由表
    在这里插入图片描述
    即可互相ping通

须注意的是,如默认网关,IP地址这类在图中并没有显示,一定要自己设置好

10.动态路由RIP

10.1.RIP简介

RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离。

在RIP网络中,缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。

为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用。
在这里插入图片描述
由上图所示,路由表中存在三个信息,目的网络、下一跳网络和跳数。当路由器A收到路由器B的路由更新时,其会检查自己的路由表,若该网络存在,则将已储存跳数和路由器B的跳数相比较,同时检查下一跳网络是否一致,若路由器B发来的信息中,某一网络的跳数更小且下一跳网络不同或更大且下一跳网络相同(可能原先路由线路中新增了部分路由器),则+1并更新,若更大且下一跳网络不同,便不更新。若某网络不存在,则储存该网络,并将跳数+1

当然,不同路由器之间也根据是否能收到路由更新来反映对方路由器可不可达,同时,这也是保证路由表信息正确的方法,即及时的更新路由表信息,来保证信息的正确性,这里就需要设计计时器。一共有三种计时器:

第一个为更新计时器,其为30s,即每隔30s发送一次路由更新。

第二个为无效计时器,其为180s,若180s内未收到某路由器的路由更新,则将该路由器标记为16跳(即不可达),即变为无效路由

第三个为刷新计时器,若240s内都未收到无效路由的路由更新,便删除该记录

下表为RIP工作流程图:

在这里插入图片描述

10.2.RIP的三种特殊情境

  1. 路由毒化(好)

    路由毒化用一句话来总结:当路由器A检测到一个路由条目不可达的时候不会直接删除,而是会将该路由条目的metric置为16跳(毒化),然后再泛洪给其他所有路由器,保证其他路由器同样可以收到该条目不可达的消息

    在这里插入图片描述

  2. 错误更新(坏)

    即在路由器C发送毒化路由信息前,其他路由器发送了路由更新,导致路由器C对毒化路由的记录出现了问题。使毒化路由的信息无法泛洪告知其他路由,即其他路由仍认为某个毒化路由可通

    在这里插入图片描述

在这里插入图片描述
由上图可见路由器C接受了错误信息

  1. 路由环路(坏)

    由于存在错误更新,路由器BC之间会不断传播错误的信息直至16跳不可达才会停止。这是对网络资源的极大浪费

在这里插入图片描述
防止路由环路的方法:

  1. 定义最大值;
    路由跳数一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息。

  2. 水平分割
    路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它 .

  3. 路由毒化;
    使用无穷大的度量(16跳)传播关于路由失效的坏消息。

  4. 毒化逆转;
    当路由器学习到一条毒化路由(度量值为16)时,对这条路由忽略水平分割的规则,并通告毒化的路由。

  5. 抑制计时器;
    在抑制时间内,失效的路由不接受任何更新信息,除非这条信息是从原始通告这条路由的路由器来的。一般180S。

  6. 触发更新。
    在改变一条路由度量时立即广播一条更新消息,而不管30秒更新计时器还剩多少时间。

10.3.RIPV1和RIPV2

RIV1:

RIV1较为简单,其使用广播的方式发送路由更新信息。由于其不携带子网掩码,属于有类路由协议,因此不支持VLSM:可变长子网掩码Variable Length Subnet Mask 和 CIDR:无类别域间路由Classless Inter-Domain Routing,同时也不支持认证

RIV2:

RIV2则较为复杂,其通过报文组播的方式发送路由更新信息,组播地址为224.0.0.9 。路由信息中加入了子网掩码,为无类路由协议,支持 VLSM,支持路由聚合与 CIDR,且支持明文认证和 MD5 密文认证。

10.4.RIP实验

可能用到的命令:

启动RIP进程
Router(config)# router rip

定义关联网络
Router(config-router)# network network-number

定义RIP的版本
**Router(config-router)# version {1 | 2} **

关闭自动汇总(v2)
Router(config-router)# no auto-summary

查看路由更新过程
Router# debug ip rip

查看路由信息
Router# show ip route
Router# show ip rip database
Router#show ip protocols

清空路由信息
**Router# clear ip route ***

RIPV1实验步骤:

在这里插入图片描述

1.转向边缘网络: int loopback 0
2. 加入左端的lo0IP地址:ip add 1.1.1.1 255.255.255.0
3. 转向接口gig0/0:int gig0/0(gig为实现过程中的端口名称,即替换拓扑图中的fa)
4. 向接口处添加IP地址:ip add 12.1.1.1 255.255.255.0
5. 防止接口关闭:no shutdown
6. 调整RIP:router rip
7. 选择模式:version 1
8. 加入相应的网络:net 1.0.0.0 net 12.0.0.0

Router1的操作
在这里插入图片描述
Router2:
在这里插入图片描述
在这里插入图片描述
漏配loopback 0,可根据拓扑图自行配置

Router3:

在这里插入图片描述

RIPV2实验步骤:

拓扑图一致

其余步骤与RIPV1一致,只是选version 2并在后面加入 no auto-summary

Router1:

在这里插入图片描述
Router2:

在这里插入图片描述
Router3:

在这里插入图片描述

11.NAT

11.1.NAT的作用及原理

众所周知,所有的网络通信都需要IP来标识主机,但随着电子产品的不断增多,IPv4中的IP地址已经严重不足,在IPv6完全代替IPv4之前,人们便想出了其他方法来减缓IPv4地址严重不足的问题,这个方法就是NAT

互联网是由多个网络组合而成的,人们便想到,如果一个网络内部的多个主机可以将内部网络的IP地址映射成外部网络的IP地址进行交互,这便是静态NA或动态NAT,这样当内部主机不需要访问外网时,便会节约许多IP地址。或者让一个网络内部的多个主机通过同一个外部网络IP地址进行交互,那便大大减少了IP地址的使用量,这便是NAPT

11.2.NAT的类型

  1. 静态NAT

    静态NAT是将每一个内部网络私有IP与一个外部网络公有IP进行一对一的匹配,即当内部主机需要访问外网时,便会以这个外部网络公有IP作为合法IP地址进行数据交互

  2. 动态NAT

    动态NAT是在路由器内设置一个IP地址池,这个地址池内有一连串的IP地址,内部网络私有IP会随机转换成地址池中的合法公有IP和外网进行数据交互

  3. NAPT

    NAPT是指将多个内部私有IP转换为同一个合法公有IP和外网进行数据交互

11.3.实验内容

  1. 静态NAT

    静态NAT可能用到的命令:

    指定一个内部接口和一个外部接口
    **Router(config-if)# ip nat { inside | outside } **

    连接内部网络的称为内部接口,外部接口亦然

    配置静态转换条目(IP和端口)
    Router(config)# ip nat inside source static tcp local-ip local-port global-ip global-port

    这条命令的意思是将内部IP local-ip 转换为外部公有IP global-ip 和外网进行数据交互

网络拓扑图如下:
在这里插入图片描述

实验步骤:

首先先配置主机及服务器的内部ip地址,默认网关,子网掩码

再配置路由器各端口ip地址,并打开端口

以上步骤不再截图,因为和之前的一致

接下来讲述重点:

第一点,配置静态路由,静态路由是保证路由器在路由表中没找到需要转发的网络时,默认转发的条目,就是静态路由,即若从10.1.1.10处访问1.1.1.10,可是路由器的路由表中没有1.1.1.1这个网络,其便会按照静态路由转发,我们就需要让路由器0在找不到网络时向路由器1转发

ip route 0.0.0.0 0.0.0.0 2.2.2.2

命令含义在之前实验中有

在这里插入图片描述

第二点就是配置静态NAT,就是命令里面的内容,设置内外接口并设置静态NAT
下图是路由器0的配置,路由器1模仿即可

在这里插入图片描述
在这里插入图片描述
配置完后用主机10.1.1.10浏览器ping1.1.1.10即可ping通

在这里插入图片描述

  1. 动态NAT

    动态NAT与静态NAT的不同就是其设置了一个地址池,IP转换并不唯一了,只要有空闲IP都可以转换

    动态NAT可能用到的命令:

    指定一个内部接口和一个外部接口
    **Router(config-if)# ip nat { inside | outside } **
    定义IP访问控制列表
    Router(config)# access-list access-list-number { permit | deny } any

    这边直接配为permit any即可

    定义一个地址池
    Router(config)# ip nat pool pool-name start-ip end-ip netmask netmask
    配置动态转换条目
    Router(config)# ip nat inside source list access-list-number pool pool-name
    查看NAT信息
    Router# show ip nat statistics
    Router# show ip nat translations

与静态NAT唯一的区别就是将静态NAT的第二个重点换成地址池即可

在这里插入图片描述

  1. NAPT

NAPT也与动态NAT类似,只是地址池内只有一个IP地址,并且后面使用overload

可能用到的命令:

指定一个内部接口和一个外部接口
**Router(config-if)# ip nat { inside | outside } **
定义IP访问控制列表
Router(config)# access-list access-list-number { permit | deny } any
定义一个地址池
Router(config)# ip nat pool pool-name start-ip end-ip netmask netmask
配置动态转换条目
Router(config)# ip nat inside source list access-list-number pool pool-name overload

注意:
也可以不设地址池,用外部接口IP作为内部全局IP地址
Router(config)# ip nat inside source list access-list-number interface interface-name overload
在这里插入图片描述

12.ARP协议

12.1.ARP的原理

众所周知,每台主机都有IP地址与MAC地址,在传送数据的过程中,二者缺一不可。ARP就是用于获取目的主机MAC地址的。每个主机都会有一张ARP表,来存储对应主机的IP地址和MAC地址。

步骤如下:

  1. 若源主机的ARP表中没有对应目的主机的相关信息,源主机会发送广播的ARP请求报文,内容如下:**我已知道目的主机的IP地址,谁知道其MAC地址?**该报文的源IP地址和源MAC地址就是源主机的IP与MAC。目的IP地址为目的主机IP,目的MAC地址为全0
  2. 由于是广播发送,因此许多主机都会收到,但只有目的主机会作出回复。其先将源主机的相关信息放入ARP表,再作出回复,即ARP响应报文,我是目的主机,我的MAC地址如下。响应报文中的目的IP与MAC地址和源IP与MAC地址刚好和ARP请求报文相反,因为是发给源主机的
  3. 源主机得到目的主机MAC地址后,便可以发送信息

示例如下:

主机A的IP地址为192.168.2.10,MAC地址为54-89-98-f6-16-c0

主机B的IP地址为192.168.3.20,MAC地址为54-89-98-15-3a-5c

现在主机A要发送消息给主机B,其只知道主机B的IP地址。

  1. 发送ARP请求报文:

    源IP地址:192.168.2.10

    源MAC地址:54-89-98-f6-16-c0

    目的IP地址:192.168.3.20

    目的MAC地址:00-00-00-00-00-00

  2. 主机B存储相应信息到ARP表

  3. 发送ARP响应报文:

    源IP地址:192.168.3.201

    源MAC地址:54-89-98-15-3a-5c

    目的IP地址:92.168.2.10

    目的MAC地址:54-89-98-f6-16-c0

  4. 主机A再发送其他信息

12.2.ARP报文格式

在这里插入图片描述
在这里插入图片描述

Hardware type :硬件类型,标识链路层协议
Protocol type: 协议类型,标识网络层协议
Hardware size :硬件地址大小,标识MAC地址长度,这里是6个字节(48bit)
Protocol size: 协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode: 操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address :发送者MAC
Sender IP address :发送者IP
Target MAC address :目标MAC,此处全0表示在请求
Target IP address: 目标IP

12.3.实验内容

用WireShark抓包ARP,通过访问学校FTP为例

实验步骤:

  1. 以管理员身份进入命令行模式
  2. 执行ipconfig获取本机IP与MAC地址
  3. 使用arp -a来查看ARP表
  4. 使用arp -d来删除ARP表
  5. 打开WireShark,在捕获内输入学校ftp地址
  6. 在网页中访问学校ftp
  7. 在WireShark内找到ARP报文,获取内容

ARP请求报文:
在这里插入图片描述
ARP响应报文:
在这里插入图片描述

13.TCP协议

13.1.TCP原理

TCP是可靠的数据传输协议,其为面向连接,面向字节的一对一传输协议(即TCP协议是点对点协议,会专门建立TCP传输通道),TCP协议的首部最小为20字节,最大为60字节。其与UDP的区别如下表:

** **UDPTCP
是否连接无连接面向连接
是否可靠不可靠传输,不使用流量控制和拥塞控制可靠传输,使用流量控制和拥塞控制
连接对象个数支持一对一,一对多,多对一和多对多交互通信只能一对一
传输方式面向报文面向字节流
首部开销首部开销小,仅8字节首部最小20字节,最大60字节
使用场景适用于实时应用(IP电话、视频会议、直播等)适用于要求可靠传输的应用,例如文件传输

13.2.TCP的报文格式

如下表:

在这里插入图片描述
端口号:
用来标识同一台计算机的不同应用进程,即不同进程应用不同的端口号

序号:
本报文段发送的数据组的第一个字节的序号
在TCP传送的流中,每一个字节一个序号。例如一个报文段的序号为300,此报文段数据部分共有100字节,即为300-399共100个字节,下一个报文段的序号为400

确认号:
指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。

数据偏移/首部长度:
指示了数据区在报文段中的起始偏移值,偏移量的前面部分就是首部,因此也称为首部长度。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,即最小为0101。 首部长度以4字节为单位。1000转化为10进制为8,8*4=32,报头长度为32字节。

(保留位到如今也没什么实际含义)

标志位:
每一个标志位表示一个控制功能。
URG:紧急指针(urgent pointer)有效。ACK:确认序号有效。PSH:接收方应该尽快将这个报文交给应用层。RST:重置连接。SYN:发起一个新连接。FIN:释放一个连接。这个在后续介绍三次握手和四次挥手的过程中很重要

窗口:
滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小16bit,因而窗口大小最大为65535

校验和:
奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据

紧急指针:
TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式,用于指明紧急数据的长度。若紧急指针不为0,则可以移至队列前面读取

选项和填充:
最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size)(在第一个TCP报文)。选项长度不一定是32位的整数倍,所以要加填充位

数据部分:
TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部

13.3.TCP的三次握手

在这里插入图片描述
以上图为例作解释

前面提到,TCP是点对点连接,其有专用的传输信道。即其应该有建立连接的过程,整个过程需要发送三个报文,因此被称为三次握手。上图就是三次握手的过程

首先要解释seq和ack。seq是指自身的序列号,即自身携带的数据是从哪一个序列号,开始的,也是上一个报文的ack值(在正常数据传输过程中,三次握手和四次握手过程中不一定遵循),ack值就是该报文请求的下一个序列号,即发出该报文的主机希望收到ack代表的序列号的数据

首先第一个报文:

第一个报文的SYN位为1,表示该报文为同步请求报文,即请求建立连接。后面的seq是一个随机的序号,由于TCP协议规定,SYN非0的报文不得携带任何数据,因此该序号没有任何含义,只是该报文要求携带一个随机的序号

第二个报文:

第二个报文的SYN=1,表示其也为同步报文。ACK=1表示确认,seq=y也是随机序号,无任何含义。ack=x+1表示的是其数据接收是从x+1位开始的,但由于第一个报文中的seq没有任何含义,所以该ack的取值只是遵循了规则, 也无任何含义

第三个报文:

第三个报文的ACK=1,也指代确认报文。seq=x+1无意义,ack也是遵循规则

如果没有第三次握手,则若第二次握手的报文丢失,会导致主机未收到服务器的确认报文,但服务器认为主机应已经收到,便开启TCP通道,而主机未接入TCP通道但服务器已经开启

13.4.TCP的四次挥手

在这里插入图片描述
那么在关闭TCP传输通道的时候,也需要报文的交互来互相告知。这便是四次挥手。关闭的请求可以由服务器提出,也可以是主机

第一个报文:

可以由服务器发出,也可以由主机发出。FYN=1,表示该报文为释放报文,即终止请求报文。seq=u且ack=v(图中未显示),ack=v是对上一个报文的确认。该报文发送后,发送端只能接收,不再发送

第二个报文:

ACK=1,表示其为确认报文,seq=v和上一报文ack=v衔接。ack=u+1表示希望接收的信息,该处并无实际意义,因为主机已经不能再发送了

第三个报文:

FIN=1表示服务器请求关闭,ACK=1表示确认报文,仅为格式要求。seq=w无含义,ack=u+1是对上一报文的重复确认,也是遵循规则

第四个报文:

表示主机确认收到服务器的释放请求,即ACK=1代表确认,seq=u+1和ack=w+1都是遵循规则,无实际含义

但是单纯的通过报文进行释放建立的交互难免会有报文出错,丢失的情况,因此TCP协议还设有保活计时器,没收到一个报文保活计时器就刷新,若保活计时器超时,则判断为一端有故障,随即关闭TCP连接

13.5.实验内容

就是上一个实验的同样内容,只是这次查看TCP报文罢了

在这里插入图片描述

在这里插入图片描述

14.HTTP协议分析

这里介绍一整个HTTP数据的传输过程

回顾之前的实验,我们可以发现,先前的DHCP、ARP、TCP等等都是在为发送数据服务,而交换机、路由器也是参与数据传输服务的硬件部分。只是他们分别负责其中的某一部分,例如DHCP请求IP地址,ARP搜寻MAC地址,TCP负责可靠传输。一个HTTP数据从源主机到目的主机的整个过程,都需要这些协议的参与

14.1.应用层封装

这部分包含三个环节

  1. 解析URL-DNS
  2. 客户端产生HTTP请求信息
  3. 服务器发送HTTP页面

首先是URL的解析,在先前实验中我们已经知道,一个页面的URL是通过层层DNS服务器解析后,方才转换成IP地址的,这部分不再详述,可以参考DNS实验部分

紧接着便是发送HTTP数据

14.2.协议栈

通过 DNS 获取到 IP 后,就可以把 HTTP 的传输工作交给操作系统中的协议栈,协议栈是操作系统的一部分,其上半部分便是UDP与TCP协议,下半部分是IP协议。

在这里插入图片描述

14.3.可靠传输协议TCP

TCP刚刚在上一个实验中介绍过,应该不会陌生,虽然三次握手和四次挥手可能介绍的不是那么清晰(需要具体学习计网理论后才会有完整清晰的认识),但在HTTP数据发送过程中,上个实验中的介绍内容已经足够。

TCP的数据分割:

这部分内容在计网理论中会详述。这边只需要知道,TCP协议的每个报文携带数据是有最大长度限制的,因此若HTTP数据过大,需要划分为多个TCP报文,一个个发送。具体发送过程和相应数据可以参考其他HTTP协议的详细文章(寒假再写)。

在这里插入图片描述
TCP的任务便是在每一段数据的头部添加TCP头部,来确保可靠传输

14.4.IP地址

之前的实验中我们详细介绍了IP数据报的具体格式与内容。TCP头部之前就要加入IP头部来引导方向。源IP地址即源主机IP地址,而目的IP地址是通过DNS解析URL后得到的IP地址

14.5.MAC地址

在之前,ARP协议早已帮我们找到了下一个要转发的路由器的MAC地址,HTTP数据根据一跳一跳的路由器逐渐走下去,最终才会到达目的服务器。

在这里,必须明确强调,在发送HTTP数据的整个过程中,源IP地址和目的IP地址一直不会改变,而目的MAC地址会随着下一跳路由器的改变而改变,即其仅指代下一跳路由器的MAC地址

14.6.硬件设施——网卡、交换机、路由器

  1. 网卡

网卡驱动从 IP 模块获取到包之后,会将其复制到网卡内的缓存区中,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。
最后网卡会将包转为电、光或无线信号,通过网线发送出去

在这里插入图片描述
2. 交换机

HTTP数据会由交换机负责找到目的MAC地址对应的端口,将HTTP数据发往下一个路由器或服务器

在这里插入图片描述
3. 路由器

根据RIP协议,路由器知道如何将该HTTP数据转发至下一跳路由器或直达目的网络。因为路由器早已通过泛洪学习了相应网络及需要转发的下一个路由器的端口IP地址

至此,整个HTTP数据的传输过程就解析完了

15.小结

到这里,计网实验部分的内容就结束了,很高兴你们可以看到这里。这篇文章是即兴写的,也是为了作者自己的期末复习,那么就祝看到这的各位考试顺利!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/864101
推荐阅读
相关标签
  

闽ICP备14008679号