网络:数据链路层 ARP ICMP ping命令 路由器 NAT网关 动态路由算法 OSPF BGP
1 数据链路层
-
集线器hub:采取广播模式,会将数据发给所有的目标源,即没有大脑的交换机
-
在物理层的数据内容基础上,最前面封装了【目的mac地址】【源mac地址】【类型】,即14字节以太网首部;最后面封装了【CRC】循环冗余检测,检测是否在发送过程中出现错误
目的地址 源地址 帧类型 数据 CRC 6字节 6 2 46~1500 4 - 数据链路层解决收件人、发件人、错误检测
-
交换机
1)转发表:交换机会学习,记录每台机器的mac地址在哪个口,记录在转发表;由于机器的IP会变所有会更新
2 网络IP层
2.1 ARP协议
- 已知IP地址,求MAC地址;Address Resolution Protocol
1)维护一张ARP表:IP和MAC地址的映射
arp -a #查看ARP表
2)ARP数据报文格式:28字节ARP请求/问答,op=1表示请求,op=2表示问答
以太网首部 | 硬件类型 | 协议类型 | 硬件地址长度 | 协议地址长度 | op | 发送端以太网地址 | 发送端IP地址 | 目的以太网地址 | 目的地址 |
14字节 | 2 | 2 | 1 | 1 | 2 | 6 | 4 | 6 | 4 |
2.2 ICMP协议
-
Internet Control Message Protocol;主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等
1)ping命令和tracert命令:基于ICMP,ICMP是封装在IP包里面的,以下为IP数据报格式:
4位版本 | 4位首部长度 | 8位服务类型(TOS) | 16位总长度(字节数) | |
16位标识 | 3位标志 | 13位片偏移 | ||
8位生存时间(TTL) | 8位协议 | 16位首部检验和 | ||
32位源IP地址 | ||||
32位目的IP地址 | ||||
选项(如果有) | ||||
数据 |
2)ICMP报文:封装在IP包里面,作为侦察兵,以下不包括IP头部分为ICMP报文
IP头 | 类型TYPE(8位) | 代码CODE(8位) | 校验和(16位) | 根据类型和代码不同而不同 |
3)ping命令:主动请求TYPE=8,主动请求应答TYPE=0
2.3 路由器
- 将多个区域网相连,每个区域网的出口叫网关Gateway,路由器有多个网口或网卡
- 网关:三层转发设备,即MAC头和IP头取下来,根据自己的路由算法,选择另一个网口加上IP头和MAC头发出去,往往是一个路由器
- 静态路由:路由器上配置一条一条的规则
#windows查看路由表
route print
#Linux查看路由表,有2种方式
route #内核的路由表
netstat -rn
-
转发网关:源IP和目标IP没有变,只有每到一个新的区域网源MAC和目标MAC在不断的变,直到找到目标IP为止
下一跳:某个IP将这个IP地址转换为MAC放入MAC头
-
NAT网关:Network Address Translation
-
目标IP即为对方的公网IP(国际身份),不能是对方的区域网IP(国内身份),会有一个映射表去映射到公网IP
-
源IP 刚开始为本机的区域网IP(国内身份),网络包到达公网时,需 源IP 要把自己的国内身份改为国际身份,即改为自己区域网内的公网IP。即出国了,身份证需要换成护照了
-
#Linux下抓包
tcpdump
- 桥接模式:将主机网卡与虚拟机的网卡利用虚拟网桥进行通信,公用同一个网卡;和主机是平级关系,无需虚拟网卡
3 应用层协议
3.1 动态路由算法
-
距离矢量路由:distance vector routing,基于Bellman-Ford算法(最短路径算法)。例如应用层基于UDP的RIP路由协议,适用于小于15跳的小型网络
-
好消息传得开,坏消息传得满
-
每次发送需要发送整个全局路由表
-
链路状态路由:link state routing,基于Dijkstra算法(最短路径算法)。
-
只广播【更新的】或【改变的】网络拓扑。使得更新信息更小,节省带宽和CPu利用率
3.2 动态路由协议
-
OSPF协议:Open Shortest Path First,基于IP和链路状态路由算法,开放式最短路径有限
-
主要应用于数据中心内部,用于路由决策,称为内部网关协议IGP
-
BGP协议:Border Gateway Protocol**,**基于TCP,边界网关协议;路径矢量路由升级版