注:文章非原创,来自极客时间 《趣谈网络协议》个人笔记
2.1 简单机器互联
MAC全程是Medium Access Control 媒体访问控制,解决多路访问问题。
有如下方式解决多路访问,信道划分、轮流协议、随机接入协议。
其中数据链路层的包结构信息如下
最后4字节是CRC,循环冗余检测,通过XOR算法或异或算法计算数据包是否出现错误。
在一个局域网中,如果只知道IP地址不知道MAC地址,则会发送一个广播包,相应的机器会回复自己的MAC地址。问答和询问的报文如下:其中两层交换机可以拦截下请求包,查看MAC地址。但是需要一个学习的过程,也就是维护内部的转发表。
2.2 交换机与LAN
当局域网机器过多,需要多个交换机的时候,我们可以组成拓扑结构,类似如下结构
机器之间的信息通过广播传递出去。交换机学习相关的映射关系。同时为了避免环路问题,多交换机常使用STP协议,讲交换机生成最小生成树,有根交换机、指定交换机、网桥协议数据单元以及各交换机的优先级向量。这个最小生成树会在交换机互联的时候自动生成。
同时在办公网络中使用VLAN隔离局域网。划分网段,不同的VLAN发的包是看不到的,这样就能解决广播安全问题。
2.3 ICMP和ping
ping命令是基于ICMP进行工作的,全程internet Control Message Protocol 互联网控制报文协议。ICMP报文是封装在IP包里的,是工作在网络层中,随着IP包向下传。
其分为两种,一种是查询报文类型,类似ping命令,是一种是主动请求,获得主动应答的ICMP协议
另一种是差错报文类型,主要有终点不可达、源一直为4、超时为11、重定向为5。
终点不可达又分为几种,其中有网络不可达为0、主机不可达为1、协议不可达为2、端口不可达为3等
源站抑制主要为让源站放慢发送速度。
时间超时则是超过了网络包的生存时间还没到
路由重定向则是下次重新发送发送其他路由器
ping命令的发送和接收过程如下:
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,使用路径矢量路由协议。