(二)数据链路层到网络层

注:文章非原创,来自极客时间 《趣谈网络协议》个人笔记

2.1 简单机器互联

MAC全程是Medium Access Control 媒体访问控制,解决多路访问问题。

有如下方式解决多路访问,信道划分、轮流协议、随机接入协议。

其中数据链路层的包结构信息如下


(二)数据链路层到网络层_第1张图片
mac链路层包结构.png

最后4字节是CRC,循环冗余检测,通过XOR算法或异或算法计算数据包是否出现错误。

在一个局域网中,如果只知道IP地址不知道MAC地址,则会发送一个广播包,相应的机器会回复自己的MAC地址。问答和询问的报文如下:
(二)数据链路层到网络层_第2张图片
问答和询问报文.png

其中两层交换机可以拦截下请求包,查看MAC地址。但是需要一个学习的过程,也就是维护内部的转发表。

2.2 交换机与LAN

当局域网机器过多,需要多个交换机的时候,我们可以组成拓扑结构,类似如下结构


(二)数据链路层到网络层_第3张图片
常见局域网结构.png

机器之间的信息通过广播传递出去。交换机学习相关的映射关系。同时为了避免环路问题,多交换机常使用STP协议,讲交换机生成最小生成树,有根交换机、指定交换机、网桥协议数据单元以及各交换机的优先级向量。这个最小生成树会在交换机互联的时候自动生成。

同时在办公网络中使用VLAN隔离局域网。划分网段,不同的VLAN发的包是看不到的,这样就能解决广播安全问题。

2.3 ICMP和ping

ping命令是基于ICMP进行工作的,全程internet Control Message Protocol 互联网控制报文协议。ICMP报文是封装在IP包里的,是工作在网络层中,随着IP包向下传。


(二)数据链路层到网络层_第4张图片
ip包结构.png

其分为两种,一种是查询报文类型,类似ping命令,是一种是主动请求,获得主动应答的ICMP协议

另一种是差错报文类型,主要有终点不可达、源一直为4、超时为11、重定向为5。

终点不可达又分为几种,其中有网络不可达为0、主机不可达为1、协议不可达为2、端口不可达为3等

源站抑制主要为让源站放慢发送速度。

时间超时则是超过了网络包的生存时间还没到

路由重定向则是下次重新发送发送其他路由器

ping命令的发送和接收过程如下:


(二)数据链路层到网络层_第5张图片
ping命令发送接收过程.png

2.4 网关配置和MAC

在任何一台机器上要访问另一个IP地址的时候都会先判断这个IP地址和当前IP机器的IP地址是否在同一个网段。使用CIDP和子网掩码进行判断,当判断是同一网段的电脑则直接将原地址和目标地址放到IP头,然后通过ARP获得MAC地址,再放入MAC头上发出去。如果不是同一网段则默认发往网关,网关往往是所在网段的第一个或者第二个地址。网关是一个三层的转发设备。也就是路由器,再路由器中找下一跳的地址。

每到一个局域网MAC地址都要要边直到目标主机,其中涉及到私网IP和公网IP的转换叫做NAT

2.5路由协议

路由器是一台网络设备,有多张网卡,当一个入口的网络包发送到路由器时,它会根据一个本低的转发信息库决定如何正确的转发流量,这个库称为路由表,可以通过route命令和ip route命令查询配置

配置路由的策略可以使用根据IP地质来配置路由,是静态路由

动态路由算法,根据路由协议生成动态路由表,随着网络运行状况的变化而变化。

第一大类算法,其中计算路径使用的距离矢量路由算法,基于Ford算法,每个路由器都保存一个路由表,每过几秒路由器会收集新的信息。但是这种算法每次发送就要发送整个路由表。并且好消息传的快,坏消息传的慢,当中间的路由器挂掉短时间无法感应。

第二个算法是链路状态路由,基于Dijkstra算法。向邻居路由say hello并要求立刻返回计算距离。再将自己和邻居的链路状态广播出去,然后每个路由器在自己内部构件一个完成的图。这样一旦某个路由器挂掉,所有的路由器都能收到广播消息,同时更新图

动态路由协议,基于链路状态路由算法的OSPF,开放式最短路径优先。

基于距离矢量路由算法的BGP,使用路径矢量路由协议。

你可能感兴趣的:((二)数据链路层到网络层)