网络层设计思路
- 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接,每一个分组(也就是IP数据报)独立发送,与其前后的分组无关。
- 网络层不提供服务质量的承诺,可靠通信由网络的主机中的运输层负责(包括差错处理、流量控制等)
- 好处:网络造价大大降低,运行方式灵活,能适应多种应用。
IP地址
IP地址:就是因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位标识符。IP地址的结构使得可以在因特网上很方便地进行寻址。
IP地址由因特网名字与号码指派公司ICANN进行分配
IP地址的编址方法:
- 分类的IP地址。最近本的编址方法
- 子网的划分。对最基本的编址方法的改进
- 构成超网。误分类编址方法
“分类的IP地址”:就是把IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,
- 第一个字段是网络号net-id,标志主机(或路由器)所连接到的网络,在整个因特网范围内必须唯一
- 第二个字段是主机号host-id,标志该主机(或路由器),在它前面的网络号所指明的网络范围内必须唯一
一个IP地址在整个因特网上是唯一的
IP地址::={<网络号>, <主机号>}
"::="表示定义为
IP地址分类
- A类、B类和C类地址都是单播地址(一对一通信),是最常用的
- A、B、C类地址的网络号字段分别为1,2,3字节,网络号字段的最前面有1~3位的类别位,数值分别规定为0,10,110
- A、B、C类地址的主机号字段分别为3个、2个和1个字节长
- D类地址(前四位是1110)用于多播(一对多通信)
- E类地址(前四位是1111)保留为以后用
- 注:近年来已广泛使用无分类IP地址进行路由选择
IP地址的指派范围:
一般不使用的特殊IP地址:
IP地址的一些特点:
- 分等级的地址结构
- 方便管理,只分配网络号,主机号由得到该网络号的单位自行分配
- 路由器仅根据目的主机所连接的网络号来转发分株,减少路由表所占的存储空间和查找路由表时间
- 一个网络是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络
IP地址与硬件地址
- 局域网里,硬件地址固化在网卡上的ROM中,因此常将硬件地址称为物理地址。局域网的MAC帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为MAC地址。
- 但有时,如X.25网,计算机的硬件地址并不是固化在ROM中的。
区别:
- 物理地址是数据链路层和物理层使用的地址
- IP地址是网络层和以上各层使用的地址,是一种逻辑地址
协议
IP协议
与IP协议配套使用的还有四个协议
- 地址解析协议ARP(Address Resolution Protocol)
- 逆地址解析协议RARP(Reverse Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
- IP经常要使用ARP和RARP
- ICMP和IGMP要使用IP协议
ARP和RARP
RARP的主要功能是:只知道自己硬件地址的主机能够通过RARP协议找出其IP地址。现在DHCP协议已经包含RARP协议的功能,因此不再单独使用RARP协议。
ARP
- 每一个主机都设有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表
- 在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表经常动态更新。
获取硬件地址流程:
- 主机A要向本局域网上的某个主机B发送IP数据报时,先在ARP高速缓存中查看有无主机B的IP地址。
- 如有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址
- 如没有,主机A就自动运行ARP寻找B的硬件地址
- ARP进程在本局域网上广播发送一个ARP请求分组
- 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组
- 主机B在ARP请求分组中见到自己的IP地址,就向主机A发送ARP响应分组,并写入自己的硬件地址。其余所有主机不理睬这个ARP请求分组
- 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射
- 注:这个过程,主机B收到A的ARP请求分组时,就把A的这一地址映射写入主机B自己的ARP高速缓存中。
ARP高速缓存中的每一个映射地址项目都设置生存时间
IP
一个IP数据报由首部和数据两部分组成,首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。固定部分的后面是一些可选字段,长度是可变的。
数据报首部的固定部分中的各字段:
版本:4位。IPv4,IPv6
首部长度:4位。单位是32位字,即4字节。最大可表示十进制数值是15,即1111,最大就是15×4=60字节。IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
区分服务:8位。旧标准中叫服务类型。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,才起作用。
总长度:16位。指首部和数据之和的长度,单位是字节。因此数据报的最大长度为 2 16 − 1 = 65535 2^{16}-1=65535 216−1=65535字节
- IP层下面的每一种数据链路层都有其自己的帧格式,其中包括的帧格式中的数据字段的最大长度,称为最大传送单元MTU(Maximum Transfer Unit) ,此数据报总长度(首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
- 实际上使用的数据报长度很少有超过1500字节的。
- 为了保证传输效率,规定,所有的主机和路由器必须能够处理的IP数据报长度不得小于576字节,即最小的IP数据报的总长度。
- 当数据报长度超过网络所容许的最大传送单元MTU时,就必须把过长的数据报进行分片后才能在网络上传送。这时,数据报首部中的“总长度”字段指的是分片后的每一个分片的首部长度与数据长度的总和。
标识(identification):16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。当数据报的长度超过MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片的标识字段中。相同的标识字段的值使分片后的各数据报片后的各数据报片最后能正确地重装成为原来的数据报。
标志(flag):3位,但目前只有两位有意义。
- 标志字段中最低位记为MF(More Fragment)。MF=1表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。
- 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”,只有当DF=0时才允许分片。
片偏移:13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。相对于用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。也就是说,每个分片的长度一定是8字节(64位)的整数倍。
生存时间TTL:8位。表明数据报在网络中的寿命。由发送数据报的源点设置这个字段,目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初以秒为单位,随着技术发展,改为“跳数限制”,单位为跳数。路由器在转发数据报之前就把TTL减一,若减小为0,就丢弃,不再转发。
协议:8位。指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
首部校验和:16位。只检验数据报的首部,但不包括数据部分。为0,首部未发生变化,保留数据报,否则认为出现差错,将此数据报丢弃。
源地址:32位
目的地址:32位
数据报首部的可变部分:
就是一个选项字段。选项字段用来支持排错、测量以及安全等措施。此字段的长度可变,从1个字节到40个字节不等,取决于所选择的项目。
划分子网和构造超网
划分子网
两级IP地址到三级IP地址:
- 两级IP地址不够灵活
- 增加一个“子网号字段”
- 这种做法叫做划分子网,或子网寻址或子网路由选择
基本思路:
- 划分子网是一个单位内部的事情,本单位以外的网络看不见这个网络是由多少个子网构成的,对外仍然表现为一个网络
- 从网络的主机号接用若干位作为子网号subnet-id,主机号就相应减少了同样的位数。
- IP地址::={<网络号>, <子网号>, <主机号>}
- 从其他网络发送给本单位的某个主机IP数据报,仍然是根据IP数据报的目的网络号找到连接在本单位网络上的路由器。此路由器在收到IP数据报后,再按目的网络号和子网号找到目的子网,再把IP数据报交付给目的主机
子网掩码:
- 为了使路由器能很方便地从数据报中的目的IP地址中提取出索要找的子网的网络地址,路由器就要使用子网掩码。
- 子网掩码也是32位,由一串1和跟随的一串0组成。1对应于IP地址中原来的net-id加上subnet-id,而子网掩码中的0对应于现在的host-id。
- 例子:
- 如果一个网络不划分子网,就使用默认子网掩码。默认子网掩码中的1对应net-id,这样可以不用查找该地址的类别位就能知道是哪一类的IP地址。
划分子网增加了灵活性,却减少了能够连接在网络上的主机总数。使用子网划分后,路由表包括:目的网络地址、子网掩码和下一跳地址
构造超网(无分类编址CIDR)
无分类域间路由选择CIDR:
- 消除了传统的A类、B类和C类地址以及划分子网的概念,可以更有效地分配IPv4地址空间。
- CIDR把32位IP地址划分为两个部分:
- 前面的部分是“网络前缀”,用来指明网络
- 后面的部分用来知名主机
- 无分类的两级编址:
- IP地址::={<网络前缀>, <主机号>}
- 使用“斜线记法”,或称为CIDR记法,即在IP地址后面加上斜线“/”,然后写上网络前缀所占的位数。
- CIDR把网络前缀相同的连续的IP地址组成一个“CIDR地址块”。只要知道CIDR地址快中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
- 例子:
- 128.14.35.7/20,前20位是网络前缀,后面是主机号
- 这个地址所在地址块中的最小地址和最大地址可以很方便的得出
- 最小地址 128.14.32.0
- 最大地址 128.14.47.255
- 主机号全0和全1的地址一般不使用,只使用这两个地址之间的地址。
- 为了更方便的进行路由选择,使用32的地址掩码,也是一串1和一串0组成,1的个数是网络前缀的长度。
- 斜线记法中,斜线后面的数值就是地址掩码中1的个数
- 由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示原来传统分类地址的很多个(例如上千个)路由。
- 路由聚合也称为构成超网
最长前缀匹配
使用CIDR时,采用了网络前缀这种记法,IP地址由网络前缀和主机号这两个部分组成,因此在路由表中的项目也要有相应的改变。每个项目由网络前缀和下一跳地址组成,在查找路由表时可能会得到不止一个匹配结果,如何选择呢?
- 从匹配结果中选择具有最长网络前缀的路由。这叫最长前缀匹配。又称为最长匹配或最佳匹配。
ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会。
- ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP报文作文IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP报文分类
1、ICMP差错报告报文
2、ICMP询问报文
ICMP报文的前4个字节是统一格式,共有三个字段:即类型、代码和校验和。
代码字段是为了进一步区分某种类型中的几种不同情况。
校验和字段用来检验整个ICMP报文。
接着4个字节的内容与ICMP的类型有关。
最后面是数据字段,其长度取决于ICMP的类型。
常用ICMP报文类型:
ICMP差错报告报文:
1、终点不可达:路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
2、源点抑制:路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
3、时间超过:路由器收到生存时间为0的数据报时,除丢弃数据报外,还向源点发送时间超过报文。
当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
4、参数问题:路由器或目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
5、改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
差错报文格式:
常用的ICMP询问报文:
1、回送请求和回答:
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
2、时间戳请求和回答:
时间戳请求报文是请某个主机或路由器回答当前的日期和时间。时间戳请求和回答可用来与回答可用来进行时钟同步和测量时间。回答报文有一个32位的字段,写入的整数代表从1900年1月1日其到当前时刻一共有多少秒。
ICMP应用举例
1、分组网间探测PING(Packet InterNet Groper),用来测试两个主机之间的可达性。用到了ICMP回送请求与回送回答报文。是应用层直接使用网络层ICMP的一个例子,没有通过运输层的TCP或UDP。
2、traceroute(unix),tracert(Windows)
Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。
虚拟专用网VPN和网络地址转换NAT
VPN
专用地址
- 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
- 专用地址只用作本地地址而不能用作全球地址。
- 在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
- RFC1918指明的专用地址是:
- - 专用IP地址的互联网称为专用互联网或本地互联网,或叫做专用网。
- 专用IP地址也叫做可重用地址
很大机构有许多部门分布在相距很远的一些地点,在每个地点都有自己的专用网。
如果要通信:
1、租用电信公司的通信线路为本机构专用。
简单方便,线路的租金高
2、利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用VPN(Virtual Private Network)
如果不同网点之间的通信必须经过公用的因特网,但又有保密的要求,那么所有通过因特网传送的数据都必须加密。
NAT
另外一种情况,专用网络内部的一些主机本来已经分配到本地IP地址,但又想和因特网上的主机通信(不需要加密),采取什么措施?
NAT(Network Address Translation)需要在专用网连接到因特网的路由器上安装NAT软件,装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机载荷外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。文章来源:https://www.toymoban.com/news/detail-510395.html
文章来源地址https://www.toymoban.com/news/detail-510395.html
到了这里,关于计算机网络————网络层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!