网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
网络层需要解决的问题:
- 网络层向运输层提供怎样的服务(可靠传输,不可靠传输)
- 网络层寻址问题
- 路由选择问题,路由选择协议
因特网
- 是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议中,网络层常称为网际层
网络层提供的两种服务
面向连接的虚电路服务
- 可靠通信由网络来保证
- 必须建立网络层的连接 - 虚电路VC
- 通信双方沿着已建立的虚电路发送分组
- 目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
- 这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方
- 通信结束后,需要释放之前所建立的虚电路
无连接的数据包服务
- 可靠通信应当由用户主机保证
- 不需要建立网络层连接
- 每个分组可走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传诵的分组可能 误码,丢失,重复,失序
- 由于网络本身不提供端到端的可靠传输服务,这使网络中的路由器可以做得比较简单,而且家底低廉
- 因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心
IPv4地址的概念
- IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
- IP地址由因特网名字和数字分配机构(ICANN)进行分配
- 国内用户可向亚太网络信息中心APNIC申请IP地址,需要缴费
- 2011.2.3互联网号码分配管理局IANA宣布,IPv4已经分配完毕
- IPv4地址的编址方法经历了三个阶段:
- 1981,分类编址
- 1958,划分子网
- 1993,无分类编址
- 32比特的IPv4地址不方便阅读,记录以及输入等,因此IPv4地址采用点分十进制表示方法,以方便用户使用
分类编址
A类地址
B类地址
C类地址
D类地址
E类地址
注意事项:
- 只有A类,B类和C类地址可分配给网络中的主机或路由器的各接口
- 主机号为全0的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为全1的地址是广播地址,不能分配给主机或路由器的各接口
- 0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”。
- 以127开头且后面三个字非全0或全1的IP地址是一类特殊的IPv4地址,可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址:127.0.0.1
- 地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示只在本网络上进行广播,各路由器均不转发
解析:
- 根据地址左起第一个十进制数的值,可以判断出网络类别
- A类:小于127
- B类:128 - 191之间
- C类:192 - 223之间
- 根据网络类别,可找出地址中的网络号部分和主机号部分
- A类:左起前一个字节
- B类:左起前二个字节
- C类:左起前三个字节
划分子网
子网掩码:
- 32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
例子一
十进制(128) = 二进制(1000 0000)
表示借用了C类网络内主机号的一个位作为子网掩码
此时主机号由原来的八位(0000 0000),变为七位(000 0000)
则该网络被分为子网0 (0 000 0000),和子网1(1 000 0000)
例子二
十进制(192) = 二进制(1100 0000)
表示借用了C类网络内主机号的两个位作为子网掩码
此时主机号由原来的八位(0000 0000),变为六位(00 0000)
则该网络被分为:
子网0 (00 00 0000),和子网1(01 00 0000)
子网2 (10 00 0000),和子网3(11 00 0000)
例子三
无分类编址
IPv4地址的应用规划
给定一个IPv4地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址
定长的子网掩码划分
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,容易造成浪费
则造成IP地址浪费
变长子网掩码划分
- 使用不同的子网掩码来划分子网
- 每个子网所分配的IP地址数量可以不同,尽可能减少IP地址的浪费
通过计算网络中所需主机地址总数,和主机号位数匹配
分配的原则是,每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点
建议先给大的子块分配
IP数据包的发送和转发过程
- 主机发送IP数据包
- 路由器转发IP数据包
本章节暂时忽略使用ARP协议获取目的主机或路由器接口MAC地址的过程,以及以太网交换机自学习和转发帧的过程
主机发送IP数据报
-
判断目的主机是否与自己在同一个网络(将目的主机的IP地址与源主机子网掩码相与)
- 若在同一个网络,则属于直接交付
- 若不在同一个网络,则属于间接交付,传输给主机所在的默认网关(路由器),由默认网关帮忙转发
路由器转发IP数据报
- 检查IP数据报首部是否出错
- 出错,直接丢弃IP数据报并通告源主机
- 无误,进行转发
- 根据IP数据包的目的地址在路由表中查找匹配的条目
- 若找到,则转发给条目中指示的下一条
- 若找不到,则丢弃IP数据报并通告源主机
静态路由配置及其可能产生的路由环路问题
静态路由配置使之用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
- 这种人工配置方式简单,开销小。但是不能及时适应网络状态(流量,拓扑等)的变化
- 一般只在小规模网络中采用
默认路由
特定主机路由
使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
- 当网络回复正常后,则再设置该黑洞路由位失效状态即可
路由选择协议概述
静态路由选择
- 由人工配置的网络路由,默认路由,特定主机路由,黑洞路由等都属于静态路由
动态路由选择
- 路由协议通过路由选择协议自动获取路由信息
因特网采用的路由选择协议特点
- 自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分成为许多较少的自治系统AS
因特网采用分层次的路由选择协议
- 路由选择协议:
- 内部网关协议
- 路由信息协议RIP
- 内部网关路由协议IGRP
- 增强型内部网关路由协议EIGRP
- 开放式最短路径优先OSPF
- 中间系统到中间系统IS-IS
- 外部网关协议
- 边界网关协议BGP
- 内部网关协议
路由器基本结构
路由表和转发表的关系
路由器的缓冲区
端口一般同时拥有输入和输出的功能
输入缓冲区用于暂存新进入路由器但来不及处理的分组
输出缓冲区用于暂存已处理完但来不及发送的分组
虚拟专用网络VPN与网络地址转换NAT
VPN:利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网
由于IPv4地址的进去,一个机构能申请到的IPv4地址数量往往远小于本机构所拥有的主机数量,因此虚拟专用网中的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的,在因特网上使用的公有地址
网络地址转换NAT
虽然因特网次啊用了无分类编址方式来减缓IPv4地址空间耗尽的速度,但由于因特网用于数目的激增,特别是大量小型办公室网络和家庭网络接入因特网的需求不断增加,IPv4地址空间即将面临耗尽的危险仍然没有被解除
1994年提出一种网络地址转换NAT的方法,再次缓解了IPv4地址空间即将耗尽的问题
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
由于绝大多数的网络应用都是使用运输层协议TCP或者UDP来传送数据,因此可以利用运输层的端口号和IP地址一起进行转换,这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信,将这种端口号和IP地址一起进行转换的技术叫做:网络地址与端口号转换NAPT(Network Address and Port Translation)
对于一些P2P网络应用,需要外网主机主动与内网主机进行通信,在通过NAT时会遇到问题(),需要网络应用自己使用一些特殊的NAT穿越技术来解决问题
另外,由于NAT对外网屏蔽了内网主机的网络地址,能为内网的主机提供一定的安全保护