网络层(上)
一、网络层提供的两种服务
问题:
- 网络层中应该向运输层提供怎样的服务?面向连接还是无连接?
- 可靠支付应当由谁来负责?网络还是端系统?
观点一:让网络层负责可靠交付
- 这种观点认为应该使用面向连接的通信方式
- 通信前先建立虚电路,保证双方通信所需的一切网络资源,再使用可靠传输的网路协议,就可使发送的分组无差错的按序到达终点,不丢失不重复
- 虚电路:逻辑上的连接,所有分组都沿这条逻辑连接按照存储转发方式发送
观点二:网络提供数据服务(获胜)
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付 的数据报服务
- 网络发送分组不先建立连接,每个IP数据报独立发送,与其前后分组无关
- 网络层不提供服务质量的承诺,可能出错、丢失、重复和失序
- 网络层不提供端到端的可靠传输服务,如果主机中的进程间需要可靠通信,那么由传输层负责可靠交付(差错处理、流量控制、拥塞控制等等)
- 优点:网络造价大幅降低,运行方式灵活
二者服务对比
二、网际协议IP(重要!)
IP协议是TCP/IP体系中两个最主要的协议之一,与之配套使用的还有三个协议:
- 地址解析协议 ARP
( Address Resolution Protocol )
- 网际控制报文协议 ICMP
( Internet Control Message Protocol )
- 网际组管理协议 IGMP
( Internet Group Management Protocol )
1. 虚拟互连网络
问题1:如何将异构的网络互相连接起来
将网络互相连接起来需要一些中间设备(中继系统),大致分为以下五种
- 物理层中继系统:转发器
- 数据链路层中继系统:网桥或桥接器
- 网络层中继系统:路由器
- 网桥和路由器的混合物:桥路器
- 网络层以上的中继系统:网关
转发器和网桥仅仅是把一个网络扩大了,不称之为网络互连;
网关比较复杂,使用较少;
所以,网络互连都是采用路由器进行网络互连和路由选择,由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关。
问题2:虚拟互连网络是什么,有什么意义?
- 所谓虚拟互连网络就是逻辑互连网络,利用IP协议是这些性能结构各异的网络从用户角度看起来好像是一个统一的网络
- 使用IP协议的虚拟互连网络简称为IP网,它的好处是互连的各个具体网络的网络结构细节对用户透明
2. 分类的IP地址
IP地址及其表示方法
IP地址:将整个因特网看成一个单一的、抽象的网络,IP地址就是给每个连接在互联网上的主机分配一个在全世界范围是唯一的32 (128) 位的标识符,IP地址由ICANN分配
IP地址的编制方法
IP地址分类
- 将IP地址分为若干类(ABC等),每类地址由网络号和主机号组成,网络号标志主机连接到的网络,主机号标志网络中的某台主机,是唯一的
IP地址的重要特点
- IP地址是一种分等级的地址结构
- IP地址管理机构分配IP时只分配网络号,剩下的主机号则由获得网络号的单位自行分配,方便IP地址管理
- 路由器仅根据目的主机所连接的网络号来转发分组,大幅减小路由表中项目数,节省存储空间
- IP地址是标志一个主机和一条链路的接口
- 当一个主机同时具有连接到多个网络,即同时具有多IP地址时,这种主机称为多宿主机(多归属主机)
- 路由器至少应该有2个ip地址
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因为它们具有相同的网络号
- 所有分配到网络号的网络,无论是小范围局域网还是大范围的广域网,都是平等的
3. IP地址与硬件地址(MAC地址)
MAC地址时数据链路层和物理层使用的地址,是物理地址
IP地址时网络层和应用层使用的地址,是逻辑地址
数据流动
- 路由器只根据目的站的ip地址的网络号进行路由选择
- 在具体的物理网络只能看见MAC帧而看不见IP数据报
(思考:这个HA3是通过什么知道的?ARP中揭晓)
4. 地址解析协议ARP
- 作用:将IP地址解析为对应的MAC地址
- 要点:
- 每个主机设有 ARP高速缓存(ARP cache),里面有所在局域网上的个主机和路由器的IP地址到邮件地址的映射表,TTL为地址映射有效时间
- 局域网中 当主机A向主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址,有则通过局域网向该MAC地址发送封装好的MAC帧,没有,ARP进程在本局域网上广播发送一个ARP请求分组,收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存
- ARP请求分组:包含发送方硬件地址 / 发送方IP地址 / 目标方硬件地址(未知时填0) / 目标方IP地址
- ARP响应分组:包含发送方硬件地址 / 发送方IP地址 / 目标方硬件地址 / 目标方IP地址
- ARP分组封装在物理网络的帧中传输
- 注意事项:
- ARP的解析是自动进行的
- ARP是解决同一个局域网上主机或路由器的IP地址和硬件地址的映射问题
- 如果所找的主机和源主机不在同一个局域网上,那么就通过ARP找到一个位于本局域网的路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络来做;这就是数据流动最后面思考问题的答案
- ARP的四种使用情况:
- H~1~发送IP数据报给H~2~
- H~1~发送IP数据报给H~3~
- R~1~发送IP数据报给网1或网2中主机
- R~1~发送IP数据报给H~4~
- 为什么不直接使用MAC地址进行通信?
- 硬件地址是物理地址,不同的网络间使用硬件地址需要经过复杂的转换
- IP地址是逻辑地址,连接到互联网的主机只需要一个唯一的IP地址,便可消除异构网络之间的复杂转换,看上去像是在同一个网络上那样简单方便
5. IP数据报的格式
-
概述:
- 一个IP数据报由首部和数据两部分组成
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的
- 在首部的固定部分是一些可选字段,其长度是可变的
-
各字段描述:
- 版本:占4位,IP协议版本( 4 / 6)
- 首部长度:占4位,可表示0~15,由于数据报长度是4字节的整数倍,所以IP首部长度的最大值为15*4 = 60字节
- 区分服务:占8位,用来获得更好的服务(了解)
- 总长度:占16位,是首部和数据之和的长度,则数据包的最大长度位65535字节,总长度必须不超过最大传输单元MTU(数据链路层MAC帧规定为1500字节)
- 标识:占16位,计数器,用来产生IP数据报的标识
- 标志:占3位,目前只有前两位有意义,最低位是MF,MF=1代表后面还有分片,MF=0代表这是最后一个分片;中间位是DF,DF=0时才允许分片
- 片偏移:占13位,指出较长的分组在分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位(详情)
- 生存时间:占8位,TTL,数据报在网络中可通过的路由器数的最大值
- 协议:占8位,指出此数据报携带的数据使用什么协议,以便目的主机的IP层将数据部分上交给哪个处理过程(ICMP、IGMP、TCP、UDP、OSPF)
- 首部校验和:占16位,IP数据报的首部检验和采用16位二进制反码求和算法,如图:
- 源地址和目的地址:占32位,4字节
- 可变部分:实现扩展功能,支持排错、测量以及安全等措施,长度为1~40字节,最终被填充为4字节的整数倍
-
IP数据报分片
数据报的总长度为3820字节,数据部分为3800字节,分片为长度不超过1420字节的数据报片
- 分为3个数据报片,每个数据报片数据部分长度分别为:1400、1400、1000
- 原始数据首部被复制为格数据报片的首部,修改部分值如下:
6. IP层转发分组的流程
- 按照主机所在的网络地址制作路由表,将大大简化路由表
- 目的网络地址,即下一跳地址:
- **查找路由表作用:**根据目的网络地址就能确定下一跳路由器,经过若干次的交付,IP数据报最终一定能找到目的主机所在目的网络上的路由器,只要到达最后一个目标路由时,才试图向目的主机进行直接交付
- 默认路由:路由器采用默认路由减少路由表所占用的空间和搜索路由表的时间,在小局域网中,只用一个路由和互联网连接;没找到有到达网络N的路由时,则默认发送到该默认路由器上,
- IP数据报在路由间的交付:IP数据报首部不指明下一跳路由器的IP地址,当路由器收到代转发的数据报时,查找路由表获得下一跳IP地址,送交至下层的网络接口软件,网络接口软件使用ARP解析出对应的MAC地址,并放到MAC帧的首部中,然后根据这个地址找到下一跳路由器
- 路由器分组转发算法:
- 从数据报首部提取目的IP地址D,得出目的网络地址N
- 若N与路由器直接相连,则直接交付数据报给D,结束
- 若路由表中由目的地址为D的特定主机路由,则把数据报传送给该表指定的下一跳路由器,结束
- 若路由表中有到达网络N的路由,则把数据报传送给路由表的下一跳路由器,结束
- 若有默认路由则发送到该默认路由,结束
- 报告转发分组出错
Q.E.D.