章节主要内容
虚拟互连网络
- 实际的计算机网络是错综复杂的
- 物理设备通过使用ip协议,屏蔽了物理网络之间的差异
- 当网络中的主机使用ip协议连接时,则无需关注网络细节
IP协议
- ip协议使得复杂的实际网络变为一个虚拟互连的网络
- ip协议使得网络层可以屏蔽细节而专注网络层的数据转发
- ip协议解决了在虚拟网络中数据报传输路径的问题
- mac地址是固定不变的,就算换了计算机它的硬件地址是固定的
- ip地址是可变的,比如换一个wifi的话IP地址就会发生变化,受网络环境影响
- IP地址长度为32位,常分为4个8位
- IP地址尝试用点分十进制来表示
头部信息
- 版本:占4位,指的是IP协议的版本,通信双方的版本必须是一致的,当前主流版本是4,即ipv4,也有ipv6
- 首部位长度:占4位,最大数值为15,表示的是IP首部长度单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
- 总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)
- TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时网络设备必须丢弃该报文
- 协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
- 首部校验和:占16位,校验IP首部是否有出错
IP协议的转发流程
第一种
- A发出目的地为C的IP数据报,查询路由表发现下一跳为E
- A将数据报发送给E
- E查询路由表发现下一跳为F,将数据报发送给F
- F查询路由表发现目的地C直接连接,将数据报发送给C
第二种
- A发出目的地为C的IP数据报,查询路由表发现下一跳为E
- A将IP数据报交给数据链路层,并告知目的MAC地址是E
- 数据链路层填充源MAC地址A和目的MAC地址E
- 数据链路层通过物理层将数据发送给E
- E的数据链路层接收到数据帧,把帧数据交给网络层
- E查询路由表,发现下一跳为F
- E把数据报交给数据链路层,并告知目的MAC地址为F
- E的数据链路层封装数据帧并发送
- F的数据链路层接收到数据帧,把帧数据交给网络层
- F查询路由表,发现下一跳为C
- F把数据报交给数据链路层,并告知目的MAC地址为C
- F的数据链路层封装数据帧并发送
其中:- 数据帧每一跳的MAC地址都在变化
- IP数据报每一跳的IP地址始终不变
ARP协议与RARP协议
ARP协议
-
ARP协议的作用,就像是一个"黄页电话簿"或者"地址查询服务"。当你知道某个人(设备)的身份证号码(IP地址),但是不知道他们实际住在哪里(MAC地址),就可以使用ARP协议来获取他们的实际居住地址。
-
ARP协议是地址解析协议
-
ARP缓存表,就是一个IP地址的映射
-
ARP缓存表有两种情况:
-
第一种是ARP缓存表有IP地址和MAC地址的映射关系
-如果有映射关系的话就可以使用网络层的ip地址找到数据链路层的mac地址 -
第二种是ARP缓存表没有IP地址和MAC地址的映射关系
-如果没有映射关系的话ARP会广播一个ip的信息,所以设备收到信息会回应一个包,表示说是不是这个IP地址,如果是就会记录IP地址和MAC地址。 -
ARP缓存表是ARP协议和RARP协议运行的关键
-
ARP缓存表缓存了IP地址到硬件地址之间的映射关系
-
ARP缓存表中的记录并不是永久有效的,有一定的期限,因为IP地址会变化
RARP协议
- RARP协议,逆地址解析协议
ARP总结
- ®ARP协议是TCP/IP协议栈里面基础的协议
- ARP和RARP的操作对程序员是透明的
- 理解®ARP协议有助于理解网络分层的细节
IP地址的子网划分
- IP地址长度为32位,常分为4个8位
- IP地址常用点分十进制来表示(0 ~ 255,0 ~ 255, 0 ~ 255, 0 ~ 255)
分类的IP地址
- 特殊的主机号
-主机号为0表示当前网络段,不可分配为特定主机
-主机号为全1表示广播地址,向当前网络段所有主机发送消息,主机号不是网络号 - 特殊的网络号
-A类地址网络段全0(00000000)表示特殊网络
-A类地址网络段后7位全1(01111111:127)表示回环地址
-B类地址网络段(10000000.00000000:128.0)是不可使用的
-C类地址网络段(192.0.0)是不可使用的
- 回环地址
-127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
划分子网
- 子网掩码
-子网掩码和IP地址是一样的,都是32位
-子网掩码由连续的1和0组成
-某一个子网的子网掩码具备网络号位数个连续的1
通过上面两个的与运算得出子网号
无分类编址CIDR
- CIDR中没有A、B、C类网络号、和子网划分的概念
- CIDR将网络前缀相同的IP地址称为一个“CIDR地址块
- 斜线记法
-193.10.10.129/25
网络地址转换NAT技术
- 网络地址转换NAT技术就是把内网地址和外网地址互转
- IPv4最多只有40+亿个IP地址
- 早期IP地址的不合理规划导致IP号浪费
- 三类内网地址
-10.0.0.0~10.255.255.255(支持千万数量级设备)
-172.16.0.0~172.31.255.255(支持百万数量级设备)
-192.168.0.0~192.168.255.255(支持万数量级设备)
- 网络地址转换(网络地址转换)
- NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
- 转换过程是在路由器中执行的
ICMP协议
- 双际控制报文协议(Internet ControlMessage Protocol)
- ICMP协议可以报告错误信息或者异常情况
- 作用是辅助IP协议的传输
差错报告报文
询问报文
ICMP应用
Ping应用
- ping实际上就是使用了ICMP的询问报文
Traceroute应用
- Traceroute可以探测IP数据报在网络中走过的路径
- 就是使用TTL设置为1,2,3…一直到最终的设备接收到为止来获取各路的IP地址
网络层的路由概述
- 每一顶点表示一个网络、路由器或计算机
- 每一条边表示一条网络路径
- 路由算法实际上是图论的算法
- 算法是正确的、完整的
- 算法在计算上应该尽可能的简单
- 算法可以适应网络中的变化
- 算法是稳定的和公平的
自治系统
- -个自治系统(AS)是处于一个管理机构下的网络设备群
- AS内部网络自行管理,AS对外提供一个或者多个出(入)口
- 自治系统内部路由的协议称为:内部网关协议(RIP, OSPF)
- 自治系统外部路由的协议称为:外部网关协议(BGP)
内部路由网关协议之RIP协议
距离矢量(DV)算法
- 每一个节点使用两个向量Di和Si
- Di描述的是当前节点到别的节点的距离
- Si描述的是当前节点到别的节点的下一节点
- 每一个节点与相邻的节点交换向量Di和Si的信息
- 每一个节点根据交换的信息更新自己的节点信息
RIP协议的过程
- RIP(Routing Information Protocol)协议,路由信息协议
- RIP协议是使用DV算法的一种路由协议
- RIP协议把网络的跳数(hop)作为DV算法的距离
- RIP协议每隔30s交换一次路由信息
- RIP协议认为跳数>15的路由则为不可达路由
1.路由器初始化路由信息(两个向量D;和S;)
2.对相邻路由器X发过来的信息,对信息的内容进行修改(下一跳地址设置为X,所有距离加1)
i.检索本地路由,将信息中新的路由插入到路由表里面
ii.检索本地路由,对于下一跳为X的,更新为修改后的信息
iii. 检索本地路由,对比相同目的的距离,如果新信息的距离更小,则更新本地路由表
3.如果3分钟没有收到相邻的路由信息,则把相邻路由设置为不可达(16跳)
- RIP协议:实现简单,开销很小
- RIP协议:限制了网络的规模
- RIP协议:“坏消息传的慢”,更新收敛时间过长
内部网关路由协议之OSPF协议
链路状态(LS)协议
- 向所有的路由器发送消息
- 消息描述该路由器与相邻路由器的链路状态
- 只有链路状态发生变化时,才发送更新信息
OSPF协议的过程
- OSPF(Open Shortest Path First:开放最短路径优先)
- OSPF协议的核心是Dijkstra算法
五种消息类型
- 问候消息(Hello)
链路状态数据库描述信息 - 链路状态请求信息
- 链路状态更新信息
- 链路状态确认信息
外部网关路由协议之BGP协议
- BGP(Border Gateway Protocol: 边际网关协议)
- BGP协议是运行在AS(自治系统)之间的一种协议
- BGP协议能够找到一条到达目的比较好的路由
为什么要使用BGP
- 互联网的规模太大了
- AS内部使用不同的路由协议
- AS之间需要考虑除网络特性以外的一些因素(政治、安全…)
BGP发言人
- BPG并不关心内部网络拓扑
- AS之间通过BGP发言人交流信息
- BGP发言人可以人为配置策略