大话计算机网络
一、首先,我们来看一下基本的概念:
1、IP地址:IP地址指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
2、子网掩码:子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
将子网掩码和IP地址做与运算,可以得知该IP地址的网络地址。例如:IP地址为192.168.1.1,子网掩码为255.255.255.0(也可以记为24),按位与之后,得到该IP地址的网络地址为192.168.1.0.
3、网关:网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
3、OSPF协议:OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。
OSPF作为基于链路状态的协议,具有收敛块,路由无环,扩展性好等特点,链路状态算法路由协议相互通告的是链路状态信息,每台路由器都将自己的链路状态信息(包括接口的IP地址和子网掩码,网络类型,该链路的开销等)发送给其他的路由器,并在网路中泛红,当每台路由器收到网络内所有的链路状态信息后,就能拥有整个网络的拓扑情况,然后根据整网络拓扑情况运行SPF算法,得出所有网段的最短路径。
OSPF支持区域的划分,区域是从逻辑上将路由器划分为不同的组,每个组用区域号来标识,一个网段只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪个区域,区域0为骨干网络,骨干区域负责在非骨干区域之间发布区域间的路由消息。在一个OSPF区域中有且只有一个骨干区域。
4、OSI七层模型:开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
5、TCP/IP七层模型:网际接口层 网络层 传输层 应用层
两者 的对比图如下:
6、ARP协议:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
二、看完基本概念后,我们使用华为的ensp软件来模拟一个网络环境,拓扑图如下:
我们现在来看每一部分的配置(对每个设备配置,点击该设备即可),先来看PC1的配置:
我们配置了该PC的IP地址,子网掩码以及网关(在这里网关的地址其实就是路由器AR1的接口GE 0/0/0的地址)。PC2的配置同理,只不过IP地址为192.168.2.200,网关为192.168.2.1.
我们现在来看对AR2的配置(其实就是配置接口的ip地址和子网掩码以及运行的协议)。
通过命令sys进入系统视图后进入接口0/0/1,配置其ip地址和掩码,如下
这样就配置好了接口的ip地址和掩码,其他两台路由器的接口ip及掩码配置同理。
配置好IP地址和掩码之后,我们就可以将其发不出去(意思就是可以让与其直连的路由器获得他的路由信息,这里我们使用ospf协议进行发布)。
我们这里使用精确发布,即接口的ip地址加上反掩码,因为使用的是ip地址,所以反掩码就是4个0.
对每台路由器都配置完成以后,我们就可以从PC1来ping对面的PC2了。
效果如下:
我们可以看到已经成功的ping通。
三、那么接下来我们再来分析一下具体的路由过程以及包的封装过程。
我们先来看一下路由过程,我们是怎么访问到PC2的呢?
首先,PC1会将自己的IP地址和子网掩码做“与运算”,得到PC1的网络地址为192.168.1.0;然后PC1用自己的子网掩码跟PC2的IP做“与运算”,得到PC2的网络地址为192.168.2.0,显然,两台主机位于不同的子网,因此判断出两台主机位于不同的子网(如果两台主机位于相同的子网,不需要经过路由交换就可以相互通信)。
此时PC1就向自己的网关发出请求,然后再由网关转发到目标网络。
我们此时看一下AR1的路由表(使用命令,display ip routing-table)。
我们看到AR1中有一条到目标网段的路由信息,下一跳地址是10.20.0.2(也就是AR1的g 0/0/1接口)。同理我们查看AR2的路由表
可以看到到目标网段的路由信息,下一跳的ip地址为20.20.0.3 接口是g0/0/2.
就这样,经过查询路由表,PC1就最终找到了PC2。
然后我们看一下包的封装过程,在我们使用ping命令之前,我们先来对AR1的端口g 0/0/0 抓包,这里使用的软件是wireshark。
我们在PC1的命令行运行ping,由上图的结果我们知道我们这里ping了5次,那么看我们的抓包结果如下:
可以看到,我们在接口0/0/0处有10个icmp的数据包。其中没2个是一对,分为request和reply。我们现在先来分析request包
看到一个包主要由这4部分组成,下面分别来看一下这四部分
我们先看第四个包即ICMP的数据包,这部分不做过多讲解:
我们重点看一个IP数据包:
ip数据包中我们可以看到源ip为192.168.1.100,而目的ip为192.168.2.200.(这两个地址是固定不变的,当然此处不考虑nat的情况)。具体的可以对照IP数据报的格式进行分析。
接下来我们再看以太网数据帧:
这里我们要注意,源的mac地址是不变的,就是PC1的mac地址,这里我们可以查看一下
但目的的mac地址是在变化的,在这个以太网帧中的mac指的是接口0/0/0的mac地址,而不是PC2的mac地址,这里要注意。同理,如果我们在AR1的0/0/1接口抓包会发现,源mac地址是AR1的接口0/0/1的地址,而目的mac是AR2 的0/0/1的地址。但是源目IP地址是不变的。那么PC1是怎么知道网关的mac地址的呢?这里就要用到ARP协议了。
我们可以看一下ARP的数据包是怎样的。
可以看到,PC1发了一个广播的包,然后网关的路由器对其进行了应答,然后PC1就获得到了网关的mac地址。我们可以看到这个mac地址就是上面刚提到的接口0/0/0的mac地址。
关于reply包基本一致。
至此,一个大致的访问过程我们就介绍完了,关于每部分更细致的介绍,见下文。