最近发现有些基础知识点很模糊,抽空回顾了一下:
1.802.1Q vs ISL:
IEEE 802.1Q所附加的VLAN识别信息,位于数据帧中“发送源MAC地址”与“类别域(Type Field)”之间。具体内容为2字节的TPID和2字节的TCI,共计4字节。在数据帧中添加了4字节的内容,那么CRC值自然也会有所变化。这时数据帧上的CRC是插入TPID、TCI后,对包括它们在内的整个数据帧重新计算后所得的值。802.1q只在帧前添加4个字节内容,然后重新计算CRC:
clip_p_w_picpath002
而当数据帧离开汇聚链路时,TPID和TCI会被去除,这时还会进行一次CRC的重新计算。
TPID的值,固定为0x8100。交换机通过TPID,来确定数据帧内附加了基于IEEE802.1Q的VLAN信息。而实质上的VLAN ID,是TCI中的12位元。由于总共有12位,因此最多可供识别4096个VLAN。
基于IEEE802.1Q附加的VLAN信息,就像在传递物品时附加的标签。因此,它也被称作标签型VLAN(Tagging VLAN)
使用ISL后,每个数据帧头部都会被附加26字节的“ISL包头(ISL Header)”,并且在帧尾带上通过对包括ISL包头在内的整个数据帧进行计算后得到的4字节CRC值。换而言之,就是总共增加了30字节的信息。
在使用ISL的环境下,当数据帧离开汇聚链路时,只要简单地去除ISL包头和新CRC就可以了。由于原先的数据帧及其CRC都被完整保留,因此无需重新计算CRC。
clip_p_w_picpath004
ISL有如用ISL包头和新CRC将原数据帧整个包裹起来,因此也被称为封装型VLAN(Encapsulated
VLAN)
2.ARP vs MAC
LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而为了获取MAC地址,TCP/IP协议下使用的是ARP。ARP解析MAC地址的方法,则是通过广播也就是说,如果广播报文无法到达,那么就无从解析MAC地址,亦即无法直接通信。
二层交换机与纯三层设备(如路由器或防火墙接口-无法设为switchport口模式)相连时,需要把二层设备上的口设为trunk模式,然后用一根网线连接到三层设备,这样也形成了trunk链路,然后把三层设备上的口用子接口上配置IP(PC的网关)来实现三层交换。
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
ARP数据帧格式如下:
clip_p_w_picpath006
3.三层交换 VS 路由器
层交换简图:
clip_p_w_picpath008
在一台本体内,分别设置了交换机模块和路由器模块;而内置的路由模块与交换模块相同,使用ASIC硬件处理路由。因此,与传统的路由器相比,可以实现高速路由。并且,路由与交换模块是汇聚链接的,由于是内部连接,可以确保相当大的带宽。
4.TCP/IP数据包的封装:
clip_p_w_picpath010
虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。
clip_p_w_picpath012
以太网帧的上层协议可能是IPARPRARP三种,如上图所示,后两者由于长度不够46字节(以太网帧数据长度为46-1500),因此有PAD字段作为填充;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。ifconfig命令的输出中也有MTU:1500。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。
 
6.关于上下层通信的问题:
 
  相邻层之间要交换信息,对接口必须有一致同意的原则,比如:n+1层实体通过SAP(service access point)把一个接口数据单元(IDU,interface data unit)传递给n层实体。IDU由服务数据单元SDU(servie data unit)和一些控制信息组成,其中SDU是将要跨过网络传递给对等实体然后上交给n+1层的信息(可以理解为数据信息),而控制信息则是用于帮助下一层完成任务(比如SDU中的字节数),它本身并不是数据的一部分。