1.网络模型
常见的网络层次划分有OSI七层协议、TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
由于工作偏向于底层网络,主要讨论的TCP/IP五层模型 即:
-
应用层 直接为用户的应用进程提供服务如:文件传输,电子邮件,文件服务,虚拟终端
协议:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet -
运输层 负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题
协议: TCP,UDP -
网络层 路径选择、路由及逻辑寻址,具体功能包括寻址和路由选择、连接的建立、保持和终止等
协议:IP,ICMP,RIP,OSPF,BGP,IGMP -
数据链路层 作用:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等,
协议:SLIP,CSLIP,PPP,ARP,RARP,MTU -
物理层 物理层的任务就是透明地传送比特流,以二进制数据形式在物理媒体上传输数据 。
协议:ISO2110,IEEE802,IEEE802.2
2.二三层转发
分层转发模型:
二层转发
在一层即物理层可以采用中继设备对物理信号进行中继,如HUB集线器,但是HUB对所连接的LAN只做信号的中继,所有的物理设备构成了一个冲突域和广播域。
在主机数目较多的情况下,冲突严重,广播泛滥,为了避免冲突遂在二层使用交换机进行转发。
设备模型:
常见的有ATM交换机、X.25交换机、以太网二层交换机等
二层转发过程:
- 查MAC转发表处理转发
- 对于表中不包含的地址,通过广播的方式转发
- 使用地址自动学习(根据以太帧的源MAC)和老化机制进行地址表维护
- 转发过程不对帧内数据进行修改
例如:
port1上的PCA要与port2上的PCB通信时,A发到交换机上,交换机收到信息后,
先记录port1所对应的A机器的MAC地址,
然后再查找目的机器B的MAC是否在表中。
如果在表中,直接转发给B所应该的port2。
如果不在表中,则向所有端口广播出去,当B收到后,会回应交换机转发到A,
在回应过程中,交换机就会把B的MAC记录到表中,达到双方通信功能。
依此类推,交换机都是从发端学习到MAC地址的,并在每5分钟后,如果端口上连接的计算机的MAC地址没有信息交换,就把该端口对应的MAC地址从表中清除。以此来保障地址表的空间容量。
二层转发帧格式如下:
以太二层交换机限制了冲突域的大小,但是无法限制广播域的大小,链接交换机主机过多的情况下依然影响性能。需要使用vlan进一步限制广播域。
VLAN(Virtual Local Area Network),相同VLAN内主机可以任意通信,不同VLAN间二层流量完全隔离,可以有效阻断广播包,减小广播域,同时提高了网络安全性,之后会单独介绍。
支持VLAN的以太二层交换基本过程
- 根据帧内Tag Header的VLAN ID查找MAC表,确定查找的范围
- 根据目的MAC查找出端口
- 如果在MAC表中查找不到该目的MAC,则该报文将通过广播的方式在该VLAN内所有端口转发
- 同时该以太网帧的源MAC将被学习到接收到报文的端口上
- MAC表中的MAC地址通过老化机制更新
- 转发过程不对帧内数据进行修改
vlan标准:
802.10,Cisco在1995年提出--------802.1Q,IEEE于1996 制定
支持vlan的二层转发帧格式如下:
- TPID:协议标志,通常是0x8100
- Priority:优先级
- CFI:规范指示为,总设为0
- VLAN ID:VLAN号
三层转发
当数据到达网络层时,路由器先检查目的IP是否和自己是同一网段。
如果是,则进行二层转发,交由数据链路层进行ARP过程请求目的主机的MAC地址;
如果不是,则进入三层转发进行路由的递归查找,找到下一跳路由并将数据包进行转发,在三层转发的过程中,还要进行二层的封装。
若经过反复的递归查找都没有找到匹配的路由,将发送ICMP包给发送主机告知目的主机不可达。
三层转发设备主要用于异构网络的互联和跨网段转发
三层转发举例
PC1准备向PC2发送数据包
- PC1检查报文的目的IP地址,发现和自己不在同一网段,则需要进行三层转发,通过网关转发报文信息;
- PC1检查自己的ARP表,发现网关的MAC地址不在自己的ARP表里;
- PC1——>Router(网关)发出ARP请求报文;
- Router将PC1的MAC地址学习到自己的ARP表;
- Router(网关)——>PC1发出ARP应答报文;
- PC1学习到Router(网关)的mac地址,发出报文,此时源ip、目的ip不变,目的mac为Router(网关)的mac
- PC1——> Router(网关)发出报文。
- Router(网关)收到报文,发现是三层报文(原因是报文的目的mac是自己的mac)
- Router(网关)检查自己的路由表(FIB),发现目的ip在自己的直连网段
- Router检查自己的arp表,如果发现有与目的ip对应的mac地址则直接封装报文(目的ip、源ip不变,目的mac为查arp表所得mac)发送给PC2
- 如果查ARP表没有得到与目的ip对应MAC,则重复(3)发arp请求
- PC2收到ARP广播报文,发现目的IP是自己的IP,于是给Router发送ARP应答报文。报文中会附上自己的mac地址。
- Router收到应答报文后,目的mac改为PC2的mac,然后向PC2发送数据帧。
三层ip报文格式:
IP数据包由报头和数据两部分组成。报头的前一部分是固定长度,共20字节。在报头的固定部分的后面是可选部分——IP选项和填充域。
首部各字段的含义如下
- 版本
占4位,指IP协议的版本。占4位,指IP协议的版本。 - 报头长度
占4位,该字段的单位是32位字(1个32位字长是4字节),因此当IP报头长度为1111时,报头长度就达到最大值60字节。当IP分组的首部长度不是4字节的整数倍是,就需要对填充域加以填充。最常用的报头长度为20位(报头长度值为0101),这时不使用任何选项。 - 区分服务(服务类型)
占8位,在一般情况下都不使用这个字段。 - 总长度
指报头和数据之和的长度,单位是字节。总长度字段为16位,故IP数据报的最大长度为65535。
每一种数据链路层都有其自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU。当IP数据报封装成链路层的帧时,此数据报的总长度不能超过对应MTU的值。若数据报长度超过对于MTU的值,就将数据报进行分片处理,此时数据报首部中的“总长度“字段是指分片后的每一个分片的报头长度和数据长度之和。 - 标识
占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并赋给标识字段。当数据报进行分片处理后,每个分片的标识值都与原数据报的标识值相同,则在接收端具有相同标识值的分片就能最终正确的重装成为原来的数据报。 - 标志
占3位,但目前只有两位有意义。
最低位记为MF。MF=1即表示后面”还有分片“的数据包。MF=0表示这已是若干数据包片中的最后一个。
中间位记为DF,意思是”不能分片“。只有当DF=0时才允许分片。 - 片偏移
占13位。表示每个数据报的分片在原数据报中的相对位置。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍。 - 生存时间
占8位。表示数据报在网络中的寿命。最初以秒为TTL值为单位,现在以跳数为单位,则目前的最大数据为255. - 协议
占8位,指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给那个处理过程。
TCP对应协议字段值6;UDP对应协议字段值17 - 首部校验和
占16位,该字段只校验数据报的报头,但不包括数据部分。 - 源地址
占32位 - 目的地址
占32位
三层交换机下VLAN实现
2层交换机下的VLAN之间不可以访问,需要通过3层协议来实现互通。
实现:
- 添加一个VLAN虚接口表,记录VLAN ID、虚拟IP地址、虚拟MAC地址
每个VLAN只能对应一组
- 添加arp支持:
对于VLAN ID虚拟IP地址的arp请求,发送包含对应虚拟MAC地址arp回应 - 在MAC表中添加ip地址一列
转发过程:
- 根据包内目的IP地址是否在VLAN虚接口表中,如果不存在则查找路由表;如果存在,确定目的VLAN ID ,修改VLAN ID ;
- 根据VLAN ID在MAC表查找出端口
- 如果不存在目的IP对应的MAC地址,发送arp请求
- 如果在MAC表中查找不到该目的IP,则该报文将通过广播的方式在该VLAN内所有端口转发
- 同时该以太网帧的源IP将被学习到接收到报文的端口上
- MAC表中的MAC地址通过老化机制更新