目录
一、MAC表、路由表、ARP表组成。
1、MAC表组成
2、ARP表组成
3、路由表组成
二、IP协议
1、IP协议
2、IP协议作用
3、IP头部各字段含义
三、ARP报文和ICMP报文
1、ARP报文
2、ICMP报文
四、封装、解封装过程
1、封装过程:
2、解封装过程:
五、二三层转发原理
1、二层转发原理
2、搭建二层组网,测试access口trunk口对报文的处理过程
3、三层转发原理
4、搭建三层组网
一、MAC表、路由表、ARP表组成。
1、MAC表组成
MAC地址表是以VLAN ID或VSI为索引来唯一标识。
图2-1-1
MAC ADDRESS(目的MAC地址)
VLAN/VSI/SI(设备所属VLAN号):将相同网段的通过VLAN进行分组隔离,相同VLAN可以通信,不同VALN不可以通信。
VLAN作用:
1)减少广播域范围。
2)增强了网络安全性。
3)提高了网络设计的合理性。
VLAN优点:配置简单。想要把某个端口划分到某个VLAN中,只需要把端口的PVID配置到相应的VLAN ID即可。
VLAN缺点:当终端移动位置时,可能需要为终端设备连接的新端口重新划分VLAN。
PORT(出接口):当交换机收到一个数据包会根据数据帧的目的MAC地址去查找MAC地址,如果匹配到那么就根据表项的出接口发送出数据帧。
TYPE(常用MAC表项类型):
1)static:静态MAC地址表项。由用户手工配置,表项不会被老化。
2)dynamic:标识动态MAC地址表项,由设备通过源MAC地址学习获得,表项有老化时间,可被老化。
2、ARP表组成
ARP协议即地址解析协议,根据IP地址以请求应答形式获取物理地址的一个TCP/IP协议(用于解析mac地址和ip地址,处于数据链路层和网络层之间,承上启下)。
图2-2-1
Internet Address(IP地址)
Physical Address(MAC地址)
Type(类型:动态/静态):动态项一般为ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖,不同系统老化时间不同其中windows老化时间2分钟,华为20分钟,思科5分钟。静态一般为手动设置,不会被老化,不会被动态ARP覆盖,不同系统不同,可能一直在也可能重启就不在。
拓展学习:
1)动态ARP一般用在拓扑结构复杂,通信实时性要求高的网络。
2)静态一般分为两种:长静态ARP(手工建立IP地址及MAC地址并指定该ARP表项所在VLAN和出接口)及短静态ARP(手工建立IP地址及MAC地址,未指定该ARP所在VLAN和出接口)。
3)静态ARP应用场景:当网络中用户设备的MAC地址为组播MAC地址时,可以在路由器上配置静态ARP表项。缺省情况下,设备收到源MAC地址为组播MAC地址的ARP报文时不会进行ARP学习。
当希望禁止某个IP地址访问设备时,可以在路由器上配置静态ARP表项,将该IP地址与一个不存在的MAC地址进行绑定。
3、路由表组成
路由表存储着指向特定网络地址的路径,主要目标是为了实现路由协议和静态路由选择。
图2-3-1
Destination/Mask:表示此路由的目的网络地址与网络掩码。
Proto:该路由的协议类型,就是路由器通过什么协议获得该路由的。
Pre:表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,不同路由协议有不同的优先级。pre数值最小者将成为当前的最优路由。
Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时(如都是OSPF产生的),路由开销最小的将成为当前的最优路由。
NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。
Interface:表示此路由的出接口,指明数据将从本路由器的哪个接口转发出去。
二、IP协议
1、IP协议
IP协议(网际协议)是TCP/IP协议族中最为核心的协议,它提供无连接的不可靠连接。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
2、IP协议作用
1)在相互连接的网络之间传递IP数据包。
2)标识节点和链路:用唯一的IP地址标识每一个节点,用唯一的IP网络号标识每一个链路。
3)寻址和转发:确定节点所在网络的位置,进而确定节点所在的位置,IP路由器选择适当的路径将IP包转发到目的节点
4)适应各种数据链路:根据链路的MTU对IP包进行分片和重组,为了通过实际的数据链路传递信息,须建立IP地址到数据链路层地址的映射。
3、IP头部各字段含义
图2-3-1
版本(version):4位,表示协议版本例IPV4为0100
首部长度(header length):4位,用于指明首部长度。( 图中每行是32bits(即4字节),图中标识的固定部分总共有5行,所以IP首部最小是20个字节(5行*4字节每行=20字节),首部长度是指IP首部占32bit字的数目,包括选项(如果有)。首部长度本身为4bit字段,能表示的二进制最大数为1111,换算成十进制为15,即首部最长为15个32bit长度,即最大长度60字节。)
区分服务(differentiated services field):8位,前六位表示服务类别,后两位表示拥塞通知信息。
总长度(total length):16位,表示一个数据报总共可以携带2^16的字节数据,包括首部。
标识(identification):16位,用于让目标主机确定新到达的数据报是哪一个数据包。
标志(flags):3位,reserved bit:待定。
Don't fragment:是否允许路由器分割数据包。
more fragment:是否是最后一个段。
分段偏移量(fragment offset):13位,表示该段在当前数据报中的位置。
生存期(time to live):8位,表示该数据报还能被路由器转发几次。
协议(protocol):8位,表示携带的载荷用的协议是什么。TCP为0x06,UDP为0x11,ICMP为0x01,IGMP为0x02。
头校验和(header checksum):16位,校验和,用于检测是否有数据错误。
源地址(source address):32位,发送这个数据报的地址,是一个IP v4地址。
目的地址(destination address):32位,接受这个数据包的地址,也是一个IP v4地址。
选项(option):可变长度,最多40字节,语序后续版本协议包含一些原设计中没有的东西,如今很少有人使用。
三、ARP报文和ICMP报文
1、ARP报文
1)ARP(地址解析协议):在网络 通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的MAC地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。APR 就是实现这个功能的协议。
2)地址解析协议 ARP 作用:在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表经常动态更新。每一台主机都设有一个 ARP 高速缓存(ARP Cache),里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表(并且每一个映射地址都设置有生存时间)。
3)同网段不同网段转发过程:
图3-1-1
同一个网段下发送信息:
假设主机A和B在同一个网段,主机A要向主机B发送信息。如上图 1-1-1局域网1中PC1和PC2 所示,具体的地址解析过程如下:
(1) 主机 A 首先查看自己的 ARP 表,确定其中是否包含有主机 B 对应的 ARP 表项。如果找到了对应的 MAC 地址,则主机 A 直接利用 ARP 表中的 MAC 地址,对 IP 数据包进行帧封装,并将数据包发送给主机 B。
(2) 如果主机 A 在 ARP 表中找不到对应的 MAC 地址,则将缓存该数据报文,然后以广播方式发送一个 ARP 请求报文。 ARP 请求报文中的源 IP 地址和源MAC 地址为主机 A 的 IP地址和 MAC 地址,目标 IP 地址和目标 MAC 地址为主机 B 的 IP 地址和全 0 的 MAC 地址。由于 ARP 请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机 B)会对该请求进行处理。
(3) 主机 B 比较自己的 IP 地址和 ARP 请求报文中的目标 IP 地址,当两者相同时进行如下处理:将 ARP 请求报文中的源 IP 地址和 源MAC 地址存入自己的 ARP 表中。之后以单播方式发送 ARP 响应报文给主机 A,其中包含了自己的 MAC 地址。
(4) 主机 A 收到 ARP 响应报文后,将主机 B 的 MAC 地址加入到自己的 ARP 表中以用于后续报文的转发,同时将 IP 数据包进行封装后发送出去。
不同网段发送消息:
当主机 A 和主机 B 不在同一网段时,主机 A 就会先向网关发出 ARP 请求, ARP 请求报文中的目标IP 地址为网关的 IP 地址。当主机 A 从收到的响应报文中获得网关的 MAC 地址后,将报文封装并发给网关。如果网关没有主机 B 的 ARP 表项,网关会广播 ARP 请求,目标 IP 地址为主机 B 的 IP地址,当网关从收到的响应报文中获得主机 B 的 MAC 地址后,就可以将报文发给主机 B;如果网关已经有主机 B 的 ARP 表项,网关直接把报文发给主机 B。
4)ARP报文组成:
图3-1-2
如图1-1-2所示从上至下依次为:
以太网帧头部:目的MAC地址(6字节)(广播发送为全FF)、源MAC地址(6字节)、帧类型(2字节);
ARP报文部分:硬件类型(2字节)、协议类型(2字节)、硬件地址长度(1字节)、协议地址长度(1字节)、OP(1表示ARP请求、2表示ARP响应、3表示RARP请求、4表示RARP响应)、发送端MAC地址、发送端IP地址、目的MAC地址(广播发送时为全0)、目的IP地址。
2、ICMP报文
1)ICMP简述:
TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递消息。控制信息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
2)ICMP报文组成:
如图1-2-1所示:从上至下依次有以太头、IP头、ICMP头组成:
以太头:目的MAC地址(6字节)(广播发送为全FF)、源MAC地址(6字节)、帧类型(2字节);
IP头:同二章IP头组成。
ICMP头:主要为类型、代码、校验和组成。
类型:如下述类型。
代码:ICMP报文的代码字段是为了进一步区分某种类型中的集中不同情况。
校验和:用来检验整个ICMP报文,IP数据报首部的校验和不检验IP数据报的内容,但ICMP是存在于IP数据报的数据部分,因此并不能保证传输的ICMP报文不产生差错。
图3-2-1
ICMP差错报文:
类型的值 | ICMP报文的类型 | 针对何种问题 |
3 | 终点不可达 | 无法交付 |
4 | 源点抑制 | 拥塞丢数据 |
11 | 超时 | TTL=0 |
12 | 参数问题 | 首部字段有问题 |
5 | 改变路由 | 值得更好的路由 |
1.终点不可达(无法交付):当路由器或主机不能交付数据报时就像源点发送终点不可达报文。具体可以根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等。
2.源点抑制:当路由器或主机由于拥塞而丢弃数据包时,就像源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
3.超时:当路由器收到一个IP数据报,若目的地址不是自己,会将TTL减1再转发出去,当TTL减为0时(收到TTL为1的IP数据报),除了丢弃改数据报外,还要向源点发送超时差错报告报文。另外当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,会丢弃已收到的数据报报片,也会向源点发送超时差错报告报文。
TTL(Time To Live)是IPv4报头中的一个8bit字段:生存时间,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量,指ICMP包的转发次数(跳数)。
比如发送端A规定TTL为4,每转发一次会减少1,当一个路由器B接收到TTL为1时,但目的地址并不是自己,再次转发TTL会减至0,也就意味着超时,所以就会直接丢弃掉此数据报,并不会转发,并向A发送超时差错报告报文。
4.参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
5.改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给另外的路由器(可通过更好的路由)。
ICMP差错报告报文,把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。
不应该发送ICMP差错报文的几种情况:
1.对ICMP差错报告报文不再发送ICMP差错报告报文。
2.对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3.对具有组播地址的数据报都不发送ICMO差错报告报文。
4.对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文:
类型的值 | ICMP报文的类型 | 目的 |
8或0 | 回送(Echo)请求或回答 | 测试目的站是否可达以及了解其相关状态 |
13或14 | 时间戳(Timestamp)请求或回答 | 用来进行时钟同步和测量时间 |
回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。
ICMP的应用:
PING:测试两个主机之间的连通性,使用了ICMP回送请求和会送回答报文
Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报文
四、封装、解封装过程
1、封装过程:
1)应用层将数据转换为二进制数据。
2)传输层为二进制数据被分割成小的数据段,并封装TCP头(数据段)。
3)网络层将传输层传来的数据封装上IP头(数据包)。
4)数据链路层将网络层传来的数据封装上MAC头(数据帧)。
5)物理层将二进制数据组成的比特流转换为电信号在网络上传播。
2、解封装过程:
1)物理层:将电信号转换为二进制数据,并将其送至数据链路层。
2)数据链路层:查看MAC地址,地址是自己的,就拆掉MAC头,继续传输。
3)网络层:查看IP地址,地址是自己的,就拆掉IP头,继续传输。
4)传输层:查看TCP头,判断应该传到哪里,然后重组数据,传输到应用层。
5)应用层:二进制转换为原始数据。
五、二三层转发原理
1、二层转发原理
假如PC1要访问PC2但是只知道PC2的IP地址这时候PC1会发送一个ARP请求,其中包含源MAC、源IP地址(PC1的MAC和IP地址),以及目的IP地址(PC2的IP地址)、目的MAC地址(因为是同一广播域所以PC1通过全FF的广播报文去寻找PC2的MAC地址),如图所示假如同一广播域有PC1、PC2、PC3三台主机,因为是同一广播域所以PC2和PC3都会收到PC1的广播请求,PC3收到后查看ARP请求中的目的IP不是自己,于是,PC3先把PC1的MAC地址缓存到自己的ARP表中,然后再将报文舍弃。PC2收到请求后发现ARP请求中目的IP与自己IP一致,将PC1的MAC地址缓存后,将PC2自己的MAC地址替换全FF的广播封装在回应的ARP报文中,以单播的形式返回给PC1.
图5-1-1
2、搭建二层组网,测试access口trunk口对报文的处理过程
LWS1交换机连接的主机PC1与LWS2交换机连接的主机PC7ping通与同网段其他主机ping不通, LWS1交换机连接的主机PC2与LWS2交换机连接的主机PC3ping通与同网段其他主机ping不通
进入配置视图:system-view
创建两个vlan:vlan batch 1 2
进入要设置vlan的端口:interface gigabitethernet 0/0/1(0/0/1为端口)
将该端口设置为access:port link-type access
将端口加入创建好的vlan 1中:port default vlan 1
退出端口:quit
进入交换机之间连接的端口:interface gigabitethernet 0/0/3
将该端口设置为trunk:port link-type trunk
设置该trunk口只允许通过预置vlan 1和vlan 2的数据包:port trunk allow-pass vlan 1 2
在主机PC1pingPC7:ping 1.1.1.5
PC1pingPC3:ping 1.1.1.4
3、三层转发原理
1)PC13要与PC14通信,若发现PC14的IP与自己IP不同网段(将PC13和PC14的IP地址和子网掩码转换成二进制按位与查看是否为同网段),则知道需要进行三层转发。
2)PC13在自己ARP表查找网关相应的ARP表项,如果没有网关IP对应的ARP表项,则向网关发送ARP请求(发送的为广播MAC地址),来获取网关的MAC地址。
3)PC13获取到网关的MAC地址后,就构造ICMP报文发给网关,ICMP报文的源IP和源MAC均是PC13自己的IP和MAC,目的IP是PC14的IP,目的MAC是AR6的MAC地址。
4)路由器收到PC13发过来的ICMP报文后,先检查自己的MAC地址与ICMP的目的MAC地址是否一致,如果一致拆掉MAC头查看IP头,发现目的IP不是自己的,检查自己的路由表,发现目的IP在自己的直连网段,就确定目的IP的下一跳,检查自身MAC表,没有目的MAC地址向PC14发送ARP请求(目的IP为PC14的IP,目的MAC为全FF,源IP源MAC为端口GE0/0/1的IP和路由器MAC地址),PC14收到请求后发现目的IP与自身IP一致,更新自身ARP表,将ARP响应发送给路由器,路由器收到ARP应答报文后封装为ICMP请求包再转发给PC14,PC14收到ICMP请求包发现目的MAC和目的IP与自身MAC地址、IP地址一致,拆封后,响应ICMP请求封装IMCP响应包,发送ICMP响应包给路由器,路由器收到ICMP响应包发现目的MAC与自身MAC地址一致,将MAC头拆掉,重复(2)(3)将ICMP响应包给PC13。
4、搭建三层组网
将主机IP及网关设置为如图所示:
如上图将GE0/0/0设置为PC13网关1.1.1.1,将GE0/0/1设置为PC14网关1.2.3.1
使用PC13 PING PC14查看是否ping通