1 基础知识
网络层向运输层提供主机到主机(或路由器)之间的通信服务。运输层向应用层提供进程到进程之间的服务。
向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
-
- 仅在网络层提供无连接服务的计算机网络成为数据报网络。如,因特网
- 仅在网络层提供连接服务的计算机网络成为虚电路网络。如,电信网(电话)
2 网际协议IP
2.1 与IP协议配套使用的四个协议
- 地址解析协议ARP(Address Resolution Protocol)
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
2.2 网络连接的四种不同中间设备
- 集线器(concentrator)、转发器(repeater):物理层使用的中间设备
- 交换机(interchanger)、网桥或桥接器(bridge):数据链路层使用的中间设备
- 路由器(router):网络层使用的中间设备
- 网关(gateway):在网络层以上使用的中间设备
3 IP地址
IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围唯一的32位标识符。IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
历史上,IP地址的编址方法经过了三个历史阶段:
- 分类的IP地址
- 子网的划分
- 构成超网
这里我们主要讨论第一种(分类的IP地址):
定义:就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。网络号必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)。
IP地址 ::= {<网络号>,<主机号>}分类:
- A类地址:以0开头,第一个字节范围:1~127(1.0.0.0 - 127.255.255.255);
B类地址:以10开头,第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头,第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
D类地址:以1110开头,第一个字节范围:224~239(224.0.0.0 - 239.255.255.255);(作为多播使用)
E类地址:以1111开头,第一个字节范围:240~55(240.0.0.0 - 255.255.255.255);(保留为今后使用) - 其中A、B、C是基本类,D、E类作为多播和保留使用。
以下是留用的内部私有地址:
A类 10.0.0.0–10.255.255.255
B类 172.16.0.0–172.31.255.255
C类 192.168.0.0–192.168.255.255 - IP地址与子网掩码相与得到网络号:
ip : 192.168.2.110
&
Submask : 255.255.255.0
网络号 : 192.168.2.0 - 注:主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)
- A类地址:以0开头,第一个字节范围:1~127(1.0.0.0 - 127.255.255.255);
IP地址是一个分等级的地址结构。第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),剩下的主机号(第二级)由得到该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号转发分组,这样就可以使路由器表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间。
实际上IP地址是标志一个主机和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。由于一个路由器至少连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
在IP地址中,所有分配到的网络号的网络都是平等的。
IP地址与硬件地址的区别:物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。
(1)在IP层抽象的互联网上只能看到IP数据报。
(2)虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
(3)在局域网的链路层,只能看到MAC帧。
(4)皮层抽象的互联网屏蔽了下层复杂的细节,使用统一的、抽象的IP地址研究主机和主机或者路由器之间的通信。
4 地址解析协议ARP和逆地址解析协议RARP
4.1 地址解析协议ARP
解决的问题(目标):给定一个机器的IP地址,找出其相应的物理地址(MAC地址)。
步骤:
1. 每个主机都会在自己的ARP高速缓冲区中建立一个ARP列表,里面有本局域网上的IP地址到MAC地址的映射表。
2. 当源主机要本局域网上的某个主机发送IP数据报时,首先检查ARP列表中又没有目的主机的IP地址。
- 有:就查出对应的MAC地址,然后通过局域网把MAC帧发往此硬件地址。
- 没有:
- ①源主机的ARP进程在本局域网上广播发送一个ARP请求分组(分组内容包括:源主机 IP地址,源主机MAC地址,目的主机的IP 地址,目的是寻求目的主机的MAC地址)。
- ②本局域网上所有主机上运行的ARP进程都接收到此ARP请求分组,检查该分组中的目的IP是否是自己的IP。否,就忽略该分组;是,则首先从数据包中取出源主机的IP和MAC地址写入到自己的ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包(单播)中,告诉源主机自己是它想要找的MAC地址。
- ③源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
4.2 逆地址解析协议RARP
解决的问题(目标):完成硬件地址到IP地址的映射。主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。。
步骤:
在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
5 IP数据报首部
- 版本 占4位
IP协议的版本。 - 首部长度 占4位
可表示最大十进制数值是15. - 区分服务 占8位
用来获得更好的服务 - 总长度 16位
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。 - 标识 占16位
- 标志 占3位
标志字段中的最低位记为MF(More Fragment)。MF = 1 表示后面“还有分片”的数据报。MF= 0 表示这已经是数据报中的最后一个。标志字段中间的一位记为DF(Don’t Fragment),意思“不能分片”,只有当DF = 0时才允许分片。 - 片偏移 占13位
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移一8个字节为偏移单位,每个分片的长度一定是8字节的整数倍。 - 生存时间 占8位
TTL(Time To Life),数据报在网络中的寿命。 - 协议 占8位
表示数据报使用何种协议。 - 首部检验和 占16位
检验数据报的首部,不包括数据部分。 - 源地址 占32位
- 目的地址 占32位
6 IP层转发分组的流程
根据目的网络地址来确定下一跳路由器:
1. IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
2. 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
注:在互联网上转发分组时,是从一个路由器转发到下一个路由器。总之,在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址)。
特定主机路由:
- 虽然因特网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即对特定的目的主机指明的一个路由。,这种路由叫做特定主机路由。
- 采用特定主机路由的好处:
- ①可使网络管理人员能够更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
- ②在对网络的连接或路由表进行排错时,指明到某一主机的特定路由就十分有用。
注:特定主机路由是要到某一台机器的路由。特定网络路由是你到某一个子网的路由。特定主机路由也可视为特定网络路由的一个特例,即Mask为255.255.255.255的特定网络路由。
默认路由:
- 默认路由是一种特殊的静态路由,指的是当路由表中与包的目的地址之间没有匹配的表项时路由器能够做出的选择。
- 如果没有默认路由,那么目的地址在路由表中没有匹配表项的包将被丢弃。
- 默认路由在某些时候非常有效,当存在末梢网络时,默认路由会大大简化路由器的配置,减轻管理员的工作负担,提高网络性能。
- 主机里的默认路由通常被称作默认网关,默认网关通常会是一个有过滤功能的设备,如防火墙和代理服务器。
- 默认路由和静态路由的命令格式一样,只是把目的地ip和子网掩码改成0.0.0.0和0.0.0.0,默认路由只能存在末梢网络中。
分组转发算法:
注:当发送一连串的数据报时,上述的这种查找路由表、计算硬件地址、写入MAC帧的首部等过程,将不断地重复进行,造成了一定的开销。尽管如此,也不能在路由表中直接使用硬件地址,因为使用抽象的IP地址,就是为了屏蔽各种底层网络的复杂性而便于分析和研究问题,这样就不可避免地多了一些开销。
- (1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。
- (2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就要执行(3)进行间接交付。
- (3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(4)。
- (4)若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(5)。
- (5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行(6)。
- (6)报告转发分组出错。