网络层在TCP/IP网络体系常被称为网际层
网络层的连发各种服务
TCP/IP体系的网络层提供的是数据报服务
网络层的两种重要的功能分别是路由选择和分组转发
网际协议IP
与其配套使用的还有:
- 根据IP地址获取物理地址。
- 收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间。
- 其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。
ARP 是 TCP/IP 协议簇中的网络接入层协议
- 管理网络通不通、主机是否可达、路由是否可用等网络本身的消息。
- ICMP靠IP协议来完成任务,所以ICMP报文中要封装在IP头部。
- 提供internet网际多点传送的功能,即将一个ip包拷贝给多个host,windows系列采用了这个协议。
- 尚未成熟。
虚拟互联网络
网络互联需要一些中间设备:
虚拟互联网络简称为IP网,在这种覆盖全球的IP网上层使用TCP协议则是现在的互联网(Internet)。
IP由互联网名字和数字分配机构(ICANN)分配。
IP编址方法:
- 分类的IP地址
- 子网的划分
- 构成超网
分类的IP地址
IP地址分为五类:A,B,C,D,E.
D类地址为网络地址,E类地址为广播地址
1.0.0.1—126.155.255.254
- 网络号有8位,第一位已固定为0,固有7位可用。
- 10.0.0.0到10.255.255.255是私有地址(在互联网上不使用,而被用在局域网络中的地址)。
127.0.0.0到127.255.255.255是保留地址,用做循环测试用的。
0.0.0.0到0.255.255.255也是保留地址,用做表示所有的IP地址。
故有2^7-2=126个网络号
128.0.0.1—191.255.255.254
网络号有16位,但第一二位已确定为10,所以只有14位可用,虽然由于前两位导致网络号不可能全零或全一,但128.0.0.0是不指派的,故可分配的网络号有:2^14-1=65534个。
192.0.0.1—223.255.255.254
前三位固定为110,192.0.0.0也是不指派的,有2^21-1=2097151个网络号
224.0.0.1—239.255.255.254
前四位固定为1110
作为网络地址
240.0.0.1—255.255.255.254
前五位固定为11110
作为广播地址
主机位全1为广播地址,全为0为网络地址,其它为主机地址
如果网络 150.25.0.0 的子网掩码是 255.255.224.0,下面的哪一个是合法的主机地址( )。
IP地址是标志一台主机或路由器和一条链路的接口。具有两个IP地址的主机称为多归属主机
- 路由器具有两个或两个以上的IP地址即没一个路由器的接口都有一个不同网络号的IP地址
- 当两个路由器直接相连时,两端的接口可以分配也可以不分配IP地址,若分配了IP地址,这一段连线就构成了一种只包含一段线路的特殊网络。若不分配则把这段特殊网络叫做无编号网络。
IP地址与硬件地址
物理地址是数据链路层和物理层使用的地址,而IP地址是网络层及以上使用的地址,是一种逻辑地址
- 在IP层抽象的互联网上只能看到IP数据报
- 路由器只根据目的站的IP地址的网络号进行路由选择
- 在局域网的链路层只能看到MAC帧
地址解析协议ARP
ARP协议会在主机ARP高速缓存(ARP cache)中存放一个IP地址到硬件地址的映射表。
当主机A要向本局域网上的某台主机B发送IP数据报时就在其ARP cache中查找是否有主机B的IP地址,如有就在ARP cache中找出对应的MAC地址,再把该硬件地址写入MAX帧,然后通过局域网把该MAC帧发往此硬件地址。
若高速缓存为空,则需要执行以下步骤:
ARP进程会在本局域网广播一个ARP请求分组,结构为:“源IP地址,目的IP地址,请求内容”,当匹配到了IP地址相同的主机时,该主机就将发送一个ARP响应分组,将自己的MAC地址写入该分组中,同时该主机也会把发送端的MAC地址记录到本地的MAC Cache中。
ARP对保存在高速缓存中的每一个映射地址都设置了生存空间,即该映射地址能在该缓存存活多久。
ARP报文封装在以太帧中传送
IP数据报的格式
占4位,目前广泛使用的是4,即IPv4。
占4位,转换成十进制数为15,但注意:首部长度字段所表示的单位是32位字即4个字节,因为IP首部的固定长度为20字节,所以首部字段长度最小值为5,即就只有固定长度那20字节,当首部长度为最大值时则有15*4=60字节。
占8位,该字段在就标准中叫做服务类型,后来被IETF改名为区分服务DS
指首部和数据之和的长度,单位为字节。总长度字段为16位,故该数据报的最大长度为2^16-1=65535字节。
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这被称为最大传送单元MTU。若所传送的数据报长度超过数据链路层的MTU值,就必须把过长的数据报进行分片处理。
占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将辞职赋给标识字段。
占3位
- 标志字段最低位记为MF。当MF=1时即表示后面“还有分片”的数据报;MF=0表示这已是若干数据报片中的最后一个
- 标志字段中间的一位记为DF,指不能分片,只有当DF=0时才允许分片
占13位,分片后某片在原分组中的相对位置,片偏移以8个字节为偏移单位,也就是说每个分片的长度必须是8字节的整数倍
指定数据报在网络中的寿命,以秒为TTL的值的单位,没经过一个路由就减去在路由器中所花费的时间,当TTL小于1秒就减1,直到TTL值减为0就丢弃该数据报。
如今TTL单位为跳数,TTL的意义为在互联网中至多可以经过多少个路由器,最多可经过255(其占8位)个路由器。
占16位,只检验数据报首部,但不包括数据部分
检验方法:
发送方:先把IP数据报首部划分为16位的序列,然后将检验和部分置零,将所有单元进行反码和运算,将得到的结果写入检验和字段。
接收方:将首部所有字段再进行一次反码和运算,若得出的结果为0,则说明数据正常。
求首部检验和:
解首部检验和:
1.版本4和首部长度5各占4位,区分服务0占8位,写成16位序列为:
0100010100000000
2.总长度28占16位,写成16位序列为:
0000000000011100
…
IP转发分组的流程
分组转发算法如下:
- 从数据报首部提取目的主机的IP地址D,得出目的网络地址N。
- 若N就是此路由器直接相连的某个网络地址,则直接交付,否则执行3进行间接交付。
- 若路由表中的目的地址为D的特定主机路由,则把数据报传送给路由表所指明的下一跳路由器,否则执行4.
- 若路由表中有到达N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行5.
- 若路由表中有默认路由,则把数据报传送给默认路由,否则执行6.
- 报告转发分组失败。
划分子网和构造超网
划分子网
IP地址::{<网络号>,<子网号>,<主机号>}
子网掩码:
从IP数据报首部无法看出源主机和目的在主机所连接的网络是否进行过子网划分,所以需要子网掩码进行判断和求出网络地址
如上图子网号为3的网络的网络地址为145.13.3.0
通过子网掩码和IP地址进行逐位相与,可得出所要找的子网的网络地址145.13.3.0
子网掩码是一个网络或一个子网的重要属性
子网数是根据子网号算出来的,若subnet-id有n位,则共有2^n种可能的排列,除去全0和全1这两种情况就可得出子网数
计算对应目的地址的下一跳:
目的网络 | 子网掩码 | 下一跳 |
---|---|---|
128.96.39.0 | 255.255.255.128 | m0 |
128.96.39.10
128.96.39.10 与 255.255.255.128 求与的:128.96.39.0,故:
对应的下一跳是m0
求数目为6的A类子网掩码:
设nbit,则6=2^n-2,=>n=3,故有:
11111111.11100000…..=> 255.192.0.0
使用子网时分组的转发
路由表必须包括:目的网络地址,子网掩码和下一跳地址
在划分子网的情况下,路由器转发分组的算法如下:
- 从收到的数据报首部获取目的IP地址D。
- 先判断是否为直接交付,即对与路由器直接相连的网络的子网掩码与D逐位相与,看结果是否与相应的网络地址匹配,若匹配则直接交付(需要把D转换成物理地址封装成帧发送出去),否则执行3.
- 若路由表中有目的地址为D的特定主机路由器,则把数据报传送给路由表所指明的下一跳路由器,否则执行4.
- 对路由表中的每一行,用其中的子网掩码与D逐位相与,其结果若与改行目的网络地址相匹配,则把数据传给改行指定的下一跳路由器,否则执行5。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器,否则执行6。
- 报告转发分组错误。
无分类编址CIDR(构造超网)
在变长子网掩码VLSM的基础上研究出了无分类编址,即无分类域间路由选择CIDR。
CIDR特点:
- CIDR消除了传统的A类,B类和C类地址以及划分子网的概念。
- CIDR吧网络前缀相同的连续的IP地址组成一个“CIDR地址块”。
IP地址 :: = {<网络前缀>,<主机号>}
da sejhuiosaHJDKLAshndjkl;asJdnmksl;Zcmn LZDK:
有三级编址(使用子网掩码)转为两级编址
eg:128.14.35.7/20
写成二进制:10000000 00001110 00100011 00000111,则:
前二十位为网络号,后十二位为主机号
最小地址 | 128.14.32.0 | 10000000 00001110 00100000 00000000 |
---|---|---|
最大地址 | 128.14.47.255 | 10000000 00001110 00101111 11111111 |
CIDR使用的地址掩码也可以继续称为子网掩码,例如以上的子网掩码就是:
11111111 11111111 11110000 00000000
路由表中利用CIDR地址块来查找目的网络,这种地址的聚合称为路由聚合,也称为构成超网
CIDR的特殊写法:
10.0.0.0/10 = 10/10
00001010 00*
每一个CIDR地址数一定是2的整数次幂
路由表中的每一个项目由“网络前缀”和”下一跳地址”组成”
网际控制报文协议ICMP
ICMP允许主机或路由器提供差错情况和有关异常情况的报告。
ICMP是存在于IP数据报中的,故不是高层协议。
ICMP报文种类有两种:
改变路由:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
ICMP差错报告报文格式为:
把收到的需要进行差错报告的IP数据报的前8个字节提取出来(为了得到运输层的端口号),作为ICMP报文的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。
常见的询问报文有以下两种:
回送请求和回答
给特定主机或路由发送一个询问,对应主机必需做出一个应答,该询问报文用来测试目的站是否可达以及了解其有关状态。时间戳请求和回答
让某台主机或路由器回答一个当前的日期和时间,该报文中有一个32字节的字段,其中写入的整数代表从1900年1月1日到当今时刻一共有多少秒。该报文用于时钟同步和时间测量。
互联网的路由选择协议
从路由算法能否随网络的通信量或拓扑自适应地进行调整变化来划分,则有静态路由选择策略(非自适应路由选择)与动态路由选择策略(自适应路由选择)
自治系统(AS)是在单一技术管理下的一组路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。一个AS对其它AS表现出的是一个单一的和一致的路由选择策略。
互联网将路由选择协议分为两大类:
- 内部网关协议(IGP):RIP和OSPF
- 外部网关协议(EGP):EGP和BGP(边界网关协议)
内部网关协议RIP
RIP叫做路由信息协议,是一种分布式的基于距离向量的路由选择协议。
RIP协议要求网络中的每一个路由器都要维护从它自己到其它目的网络的距离记录,故该距离为一组距离即距离向量。
RIP协议将距离称作为跳数,每经过一个路由器跳数就加1,只允许一条路径最多只能有15个路由器,即距离为15以上时则将该路径看作不通,因此该协议仅仅适用于小型互联网。
RIP不能使用多条路由线路,只会先择一条距离最短的线路。
RIP协议的特点是:
- 仅和相邻路由器交换信息
- 路由器交换的信息是当前本路由器所知道的全部信息,即自己现在的路由表
- 按固定的时间间隔交换路由信息
距离向量算法
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
- 对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把下一跳字段中的地址都改为X,并把所有的距离都加1,每一个项目都有三个数据:到目的网络N,距离为d,下一跳路由器为X。
- 对修改后的RIP报文进行以下步骤:若原路由表没有目的网络N,则把该项目添加到路由表中,否则:若下一跳地址为X则把收到的项目替换原路由表中的项目,否则:若收到的项目中的距离d小于路由表中的距离,则进行更新,否则:什么也不做。
- 若3分钟还没收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16。
- 返回。
eg:
RIP协议的报文格式
首部中的命令字段指出报文的意义,如1表示请求路由信息。
路由部分由若干个路由信息组成,每个路由信息占20个字节,最多只能有25个路由信息,故RIP报文最大长度为:4+20*25=504
其中地址族标识符(地址类别)字段用来标志所使用的地址协议,如采用IP地址就将其置为2。路由标记填入自治系统号ASN,因为RIP有可能收到本自治系统以外的路由选择信息。
RIP2鉴别功能:将原来写入第一个路由信息的位置用作鉴别,此时应将地址族标识符置为全1,而路由标记写入鉴别类型,剩下的16字节作为鉴别数据。
RIP协议的特点:好消息传的快,坏消息传得慢
当R1到网1的链路出现故障,则R1路由表相应的项目会变为1,16,直接(网络1,16跳,直接交付),此时可能需要30s才能把更新信息发送给R2,而此时R2传了1,2,R1(网络1,距离为2跳,下一跳为R1)给R1,R1就会以为到达网络1的距离为2+1=3,下一跳为R2,并把更新信息给R2,R2又会以为其到网络1的距离为4,下一跳为R1,这样的更新会持续下去直到距离达到16才会发现出错。
v1.5.2