网络层
导学
网络层决定数据在网络中的传输路径,数据路由(决定数据在网络的路径)
A怎么把数据传输给B?
重要硬件:路由器
ip协议详解
虚拟互联网络
◆ 实际的计算机网络是错综复杂的
◆ 物理设备通过使用IP协议,屏蔽了物理网络之间的差异
◆ 当网络中的主机使用IP协议连接时,则无需关注网络细节
◆ IP协议使得复杂的实际网络变为一个虚拟互连的网络
◆ IP协议使得网络层可以屏蔽底层细节而专注网络层的数据转发
◆ IP协议解决了在虚拟网络中数据报传输路径的问题
IP协议
MAC地址
每一个网络设备的身份证,对于数据链路层而言,是唯一不可改变的。
IP地址
IP地址是对于网络层而言,是可变的
IP数据报
IP协议头
版本:占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
首部位长度:占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节、
总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)--MTU
标识:
标志:
片偏移:
TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文
协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
首部校验和:占16位,校验IP首部是否有出错
源IP地址:
目的IP地址:
ip协议的转发流程
ip协议工作的过程
逐跳(hop-by-hop)
路由表简介
计算机或者路由器都拥有路由表
mac地址表,是在数据链路层,其工作流程如下:
◆ 数据帧到达路由器,路由器取出前6字节
◆ A通过网卡发出数据帧
◆ 路由器匹配MAC地址表,找到对应的网络接口
◆ 路由器往该网络接口发送数据帧
IP协议的转发流程
结合数据链路层、网络层理解
◆ 数据帧每一跳的MAC地址都在变化
◆ IP数据报每一跳的IP地址始终不变
arp协议与rarp协议
路由器不知道C的MAC地址?
ARP协议
ARP(Address Resolution Protocol)地址解析协议
将ip地址转换为mac地址
ARP缓存表
- ARP缓存表缓存有IP地址和MAC地址的映射关系
红框处,其实是先查询了ARP缓存表,知道了mac地址,再告知 - ARP缓存表没有缓存IP地址和MAC地址的映射关系
◆ ARP缓存表是ARP协议和RARP协议运行的关键
◆ ARP缓存表缓存了IP地址到硬件地址之间的映射关系
◆ ARP缓存表中的记录并不是永久有效的,有一定的期限
ARP协议在帧数据中,报文格式
RARP协议
RARP(Reverse Address Resolution Protocol)逆地址解析协议,很少使用了
报文格式
◆ (R)ARP协议是TCP/IP协议栈里面基础的协议
◆ ARP和RARP的操作对程序员是透明的
◆ 理解(R)ARP协议有助于理解网络分层的细节
ip地址的子网划分
分类的IP地址
-
特殊的主机号
-
特殊的网络号
-
本地回环地址(Loopback Address)
127.0.0.1,通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。
划分子网
某公司拥有100名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
某公司拥有256名员工,每人配备一个计算机,请问该公司应该申请哪种网络段?
造成了很大的地址空间浪费
子网号这么多,有没有办法快速判断某个IP的网络号?--子网掩码
无分类编址CIDR
现在使用的IP地址分类的方法
◆ CIDR中没有A、B、C类网络号、和子网划分的概念
◆ CIDR将网络前缀相同的IP地址称为一个“CIDR地址块”
斜线记法
子网
超网
IP分类是为了尽量避免IP地址浪费
网络地址转换NAT技术
◆ IPv4最多只有40+亿个IP地址
◆ 早期IP地址的不合理规划导致IP号浪费
IP地址不够用了,引出NAT技术。
◆ 网络地址转换NAT(Network Address Translation)
◆ NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
-
内网地址
◆ 内部机构使用
◆ 避免与外网地址重复
◆ 内网地址分为三类
◆ 两个不同外网的内网地址可以相同。 -
外网地址
◆ 全球范围使用
◆ 全球公网唯一
内网多个设备使用同一个外网IP请求外网的服务,外部怎么知道具体是哪个设备在请求的?
使用端口进行区别。
在本地路由器进行端口转换。
◆ 网络地址转换NAT(Network Address Translation)
◆ NAT技术用于多个主机通过一个公有IP访问互联网的私有网络中
◆ NAT减缓了IP地址的消耗,但是增加了网络通信的复杂度
ICMP协议详解
辅助IP协议进行传输
◆ 网际控制报文协议(Internet Control Message Protocol)
◆ ICMP协议可以报告错误信息或者异常情况
差错报告报文
询问报文
icmp协议的应用
Ping应用
当你家里的电脑上不了网的时候,怎么排查?
◆ Ping回环地址127.0.0.1
◆ Ping网关地址
◆ Ping远端地址
利用icmp询问报文
Traceroute应用
Traceroute可以探测IP数据报在网络中走过的路径,利用ICMP终点不可达差错报文
网络层的路由概述
路由是什么?
路由表
◆ 路由表是怎么来的呢?
◆ 下一跳地址是唯一的吗?
◆ 下一跳地址是怎么来的?
◆ 下一跳地址是最佳的吗?
◆ 路由器怎么多,他们是怎么协同工作的?
-- 需要一个好的算法去解决这些事情
抽象问题进行解决
◆ 算法是正确的、完整的
◆ 算法在计算上应该尽可能的简单
◆ 算法可以适应网络中的变化
◆ 算法是稳定的和公平的
但是
◆ 互联网的规模是非常大的
◆ 互联网环境是非常复杂的
-- 所以对互联网进行划分,引出“自治系统(AS)”
◆ 一个自治系统(AS)是处于一个管理机构下的网络设备群
◆ AS内部网络自行管理,AS对外提供一个或者多个出(入)口
由此,可以分类
◆ 自治系统内部路由的协议称为:内部网关协议(RIP、OSPF)
◆ 自治系统外部路由的协议称为:外部网关协议(BGP)
内部网关路由协议之RIP协议
距离矢量(DV)算法
RIP协议的过程
◆ RIP(Routing Information Protocol)协议
◆ RIP协议是使用DV算法的一种路由协议
-
RIP协议的过程
◆ RIP协议把网络的跳数(hop)作为DV算法的距离
◆ RIP协议每隔30s交换一次路由信息
◆ RIP协议认为跳数>15的路由则为不可达路由
具体不展开了 -
RIP协议的过程的缺点
◆ 随便相信“隔壁老王”
◆ “自己不思考” “视野不够”
导致故障信息传递慢 -
RIP协议小结
◆ RIP协议:实现简单,开销很小
◆ RIP协议:限制了网络的规模
◆ RIP协议:“坏消息传的慢”,更新收敛时间过长
Dijkstra(迪杰斯特拉)算法
◆ Dijkstra算法是著名的图算法
◆ Dijkstra算法解决有权图从一个节点到其他节点的最短路径问题
◆ “以起始点为中心,向外层层扩展”
具体不展开,知道OSPF协议应用这个算法
内部网关路由协议之OSPF协议
链路状态(LS)协议
特点
◆ 向所有的路由器发送消息
一传十、十传百
◆ 消息描述该路由器与相邻路由器的链路状态
◆ 只有链路状态发生变化时,才发送更新信息
与rip协议特征对比学习
OSPF协议的过程
◆ OSPF(Open Shortest Path First:开放最短路径优先)
◆ OSPF协议的核心是Dijkstra算法
-
OSPF协议的过程
◆ 向所有的路由器发送消息
◆ 消息描述该路由器与相邻路由器的链路状态
◆ 只有链路状态发生变化时,才发送更新信息
-
五种消息类型
◆ 问候消息(Hello)
◆ 链路状态数据库描述信息
◆ 链路状态请求信息
◆ 链路状态更新信息
◆ 链路状态确认信息
外部网关路由协议之BGP协议
◆ BGP(Border Gateway Protocol: 边际网关协议)
◆ BGP协议是运行在AS之间的一种协议
为什么在AS之间要使用BGP协议?
◆ 互联网的规模很大
存储的路由数据很大,计算路径很慢
◆ AS内部使用不同的路由协议
不同协议不能直接通信,使用BGP协议进行协调
◆ AS之间需要考虑除网络特性以外的一些因素(政治、安全…)
◆ BGP协议能够找到一条到达目的比较好的路由,而不是最好的路由
- 为什么需要配置BGP发言人(speaker)
◆ BGP并不关心内部网络拓扑
◆ AS之间通过BGP发言人交流信息
◆ BGP Speaker可以人为配置策略
人为干预网络
小结:
◆ BGP协议能够找到一条到达目的比较好的路由
◆ AS之间通过BGP发言人来进行路由信息的交换