【计算机网络】-网络层-Internet的网络层

半城伤御伤魂 提交于 2019-12-05 11:04:24

【计算机网络】-网络层-Internet的网络层

  • Internet是一组相互连接的网络或者自治系统的集合
  • Internet
    1.存在几个主要骨干网络,骨干网络是由高带宽的线路和快速路由器构成
    2.这些骨干网络中最大的一个称为一级网络,每个骨干网都与它连接,进而达到其他骨干网
    3.连接在骨干网络上的是ISP
    4.ISP为家庭和企业、数据中心和服务器托管设施,以及区域(中级)网络提供接入Internet服务
    5.连接在区域网络上是更多ISP、许多大学和公司局域网和其他边缘网络

Internet是相互连接的许多网络

IP(Internet Protocol)

将整个Internet粘合在一起的是IP(Internet Protocol)
IP协议设计之初就考虑了网络互联的需求

IP的任务
提供一种尽力投递的(best-efforts,即不提供任何保证)方法将数据报从源端传输到目标端,它不关心源机器和目标机器是否在同样的网络中,也不关心它们之间是否还有其他网络

IPv4协议头部的各个字段信息

IPv4头部:

各个字段的含义:

版本域与头部长度

版本号(version)
4bits,IPv4协议填4,IPv6协议填6
头部长度(IHL)
4bits,单位为4字节,取值范围5-15(确省值为5,即标准头标长20字节),指示IP包头的长度

服务类型(TOS)域

总长度域、标识域

总长度域
16bits ,单位字节,描述IP包的总长(包括头和数据),最大包长度为65535字节

标识域
16bits,用于唯一标识该包

标志域、分段偏移域

标志域
3bits。第1位未定义
第2位DF代表“不分段”,DF为0表示该包可分段,否则表示不可分段
第3位MF代表“更多的分段”,MF为0表示这是最后分段,否则表示还有后续分段

分段偏移域
13bits,单位8字节。取值0-8191,标明当前报片在原包中的位置

生存时间域、协议域

生存时间(TTL)域
8bits,单位秒,表示包的生存时间。实际操作时,包每经过一个路由器,TTL值减一,当TTL值为0时,该包被丢弃

协议(Protocol)域
表示高层协议类型。协议的编号详见http://www.iana.org
0 Reserved
1 Internet Control Message Protocol (ICMP)
2 Internet Group Management Protocol (IGMP)
3 Gateway-to-Gateway Protocol (GGP)
4 IP (IP encapsulation)
5 Stream
6 Transmission Control (TCP)
8 Exterior Gateway Protocol (EGP)
9 Private Interior Routing Protocol
17 User Datagram (UDP)

头部校验和域、源/目的地址域

头部校验和域
16bits,用来检验包头

源地址域
32bits,包的发送者的IP地址

目的地址域
32bits,包的接收者的IP地址

填充(padding)
包头长度必须为4字节的整数倍,如果选项的长度不是4字节的整数倍,那么就要进行填充

选项(option)

安全性选项
指明包的机密性

严格的源路由选项
给出包经过的完整路由

宽松的源路由选项
给出包经过的某些路由器列表

记录路径选项
使每个路由器都附上它的IP地址

时间戳选项
使每个路由器都附上它的IP地址和时间戳

IP地址

IP地址

  • 为了屏蔽物理网络地址的差异,IP采用一种全局通用的地址格式为全网的每个主机和路由器分配一个唯一的地址
  • 实际上,IP地址引用的不是一台主机,而是一个网络接口。大多数主机只有一个网络接口,也就只有一个IP地址

IP地址是32位长,包含网络部分和主机部分

IP地址分类

A类地址

  • Class A - 0nnnnnnn hhhhhhhh hhhhhhhh hhhhhhhh
  • 第一位为0;7位网络位;24位主机位
  • 第一个字节:0-127
  • 允许多达126个网络(0和127保留)
  • 每个网络允许多达16,777,214(=2^24-2)台主机

B类地址

  • Class B - 10nnnnnn nnnnnnnn hhhhhhhh hhhhhhhh
  • 前两位10; 14位网络位;16位主机位
  • 第一个字节:128-191
  • 允许多达16,384(=2^14)个网络
  • 每个网络允许多达65,534(=2^16-2)台主机

C类地址

  • Class C - 110nnnnn nnnnnnnn nnnnnnnn hhhhhhhh
  • 前三位110;21位网络位;8位主机位
  • 第一个字节:192 - 223
  • 允许多达2,097,152网络
  • 每个网络允许多达254台主机

D类地址

  • Class D - 1110mmmm mmmmmmmm mmmmmmmm mmmmmmmm
  • 前四位1110;28位多播( multicast)地址位
  • 第一个字节:224 - 247
  • D类地址是多播地址 – 见RFC 1112

E类地址

  • Class E - 1111rrrr rrrrrrrr rrrrrrrr rrrrrrrr
  • 前四位1111;28位保留地址位
  • 第一个字节:248 - 255
  • 预留将来扩展

IP地址表示

点分十进制
161.0.116.225
二进制
10100001 00000000 01110100 11100001
十六进制
A10074E1

特殊IP地址

环回地址(Loopback)
每个IP协议栈都实现了
127.0.0.0
本地网络的广播地址和对一个指定网络的广播地址
FF.FF.FF.FF: 255.255.255.255
network.FF: 196.34.5.255, 19.255.255.255
网络地址
network.00: 196.34.5.0
本地网络中的主机地址
00.00.00.host: 0.0.0.188

子网划分

为什么要进行子网划分?

  • 分类地址适用于设计之初的互联网,但是A类网络和B类网络太大,不易管理
    解决方法
  • 将网络分成若干供内部使用的子网,对外界,该网络还是一个单独的网络

例子:

划分为三个子网后对外仍是一个网络

子网划分距离:

例如:C类网络192.10.1.0,主机号部分的前三位用于标识子网号,即:

子网地址分别为
11000000 00001010 00000001 00000000 -- 192.10.1.0
11000000 00001010 00000001 00100000 -- 192.10.1.32
11000000 00001010 00000001 01000000 -- 192.10.1.64
11000000 00001010 00000001 01100000 -- 192.10.1.96
11000000 00001010 00000001 10000000 -- 192.10.1.128
11000000 00001010 00000001 10100000 -- 192.10.1.160
11000000 00001010 00000001 11000000 -- 192.10.1.192
11000000 00001010 00000001 11100000 -- 192.10.1.224

子网掩码

经过上述子网划分后存在的问题,如何知道一个IP地址中哪些位是网络号+子网号,哪些位是主机号呢?

解决方法:引入子网掩码

子网掩码格式:

32比特
前一部分全1,1的个数表示相应IP地址中网络+子网部分的位数
后一部分全0,0的个数表示相应IP地址中主机部分的位数

注意
连接在同一个子网上的所有主机和路由器的子网掩码相同
两个IP地址和子网掩码相与结果相同,表示这两个IP地址的主机在同一个子网中

无类别域间路由(CIDR)

分类地址存在的问题:
A类、 B类地址太大
一个A类网络有16M个地址
一个B类网络有65536主机地址
C类地址太小
一个C类网络有256个地址
需要更灵活的方式!

解决方法1:子网划分
将网络分成若干供内部使用的子网

但是还存在着问题
C类地址太小
每个C类网络对应一个路由表项,造成路由表膨胀

解决方法2:CIDR
在网络和主机间使用可变长度的划分方法,即无类别地址(CIDR),不需要子网

表示法:
点分十进制表示法后跟“/”和网络部分长度
如:198.16.16.0/21

198.16.16.0/21表示网络部分长度为21的一段地址,这段地址中第一个地址为198.16.16.0,最后一个地址为198.16.23.255

使用CIDR需要路由协议的支持(到目前所有路由器都支持)
每个路由表项进行扩展,增加了32位的掩码。路由表由所有网络的三元组(IP地址、子网掩码、输出线路)构成的
当一个数据包到达时,路由器首先将它的目标IP提取出来,和子网掩码去“与”,结果和表项中的网络号比较,是否匹配
最长匹配原则
路由查找时,若多个路由表项匹配成功,选择掩码长(1比特数多)的路由表项

网络地址转换(NAT)

临时解决IP地址的短缺问题
出现了NAT方案
NAT的基本思想
为公司分配一个或少量的公有IP地址,使用公有IP地址在Internet上传输数据包
在公司内部,每台计算机有唯一的私有IP地址,使用该地址在公司内部传输数据包
当一个数据包离开公司的网络时,它需要一个地址转换
私有地址
10.0.0.0 ---10.255.255.255
172.16.0.0---172.31.255.255
192.168.0.0---192.168.255.255
注:含有私有地址的数据包不应该出现在Internet上

任何时候当一个向外发送的数据包进入到NAT盒中,源地址被公有IP替代,传输层(如:TCP)的源端口号与被一个索引值替代
回来时根据传输层的目的端口号从NAT盒中找到对应的表项,提取相应的私有IP地址和原来的端口号,填到数据包中

NAT方案的缺陷
违反了IP的结构模型。IP的结构模型声明每个IP地址均唯一标示一台机器
将Internet从一个无连接的网络变成一个面向连接的网络
违反最基本的协议分层规则
Internet上层的进程不一定使用TCP或者UDP
有些应用会在正文内容中插入IP地址
TCP端口号16位,至多65536台机器被映射

IPV6协议

采用IPv6原因

  • IPv4所面临的问题
  • IPv4的地址严重匮乏
  • 路由表急剧膨胀
  • 扩展性问题
  • 安全问题
  • 服务质量等
  • 暂时的解决方法
  • NAT(网络地址翻译)
  • CIDR(无类域间路由)等等
  • 只有全新的协议才能彻底解决IPv4的问题

IPv6包头格式

和ipv4对比

  • 协议标头具有更长的地址128与32位
  • 通过使用扩展头,协议更简单
  • IPV6固定标头(必填)
  • 扩展头处理其他功能

Internet控制协议

ICMP

功能

  • 当发生意外时,通过ICMP可以报告有关的事件
  • ICMP也可以用来检测因特网
  • ICMP报文封装在IP包中

ICMP报文需要两层封装

ICMP经常被认为是IP层的一个组成部分

ARP-地址解析协议

问题提出
因特网上主机间通信使用的是IP地址

当一台主机发送数据包时,是根据硬件地址(如:以太网地址)来确定目的接口的
如何将IP地址映射到对应的硬件地址?

  • 通过直接映射解析
  • ARP

ARP(地址解析协议)
用于在以太网中解决网络层地址(IP地址)与数据链路层地址(MAC地址)的映射问题

地址解析过程举例

1.主机A发送一个广播数据包到以太网上,问“谁拥有IP地址202.112.10.5?”
2.该数据包将会到达以太网202.112.10.0/24上的每一台主机,每台主机都会检查它自己的IP地址
3.只有主机B(IP地址为202.112.10.5)会用自己的以太网地址作为应答
4.主机A收到ARP应答后,提取其中的MAC地址,进行通信

优化方法-ARP高速缓存

缓存IP地址和MAC地址的映射关系
减少了广播流量
缓存的映射表项要设置生存时间
一般为20分钟
ARP缓存表不要太大

DHCP-动态主机配置协议

DHCP允许服务器将IP地址和配置信息动态分发给客户端。正常情况下,DHCP服务器至少会为客户端提供以下基本信息:IP地址、子网掩码、默认网关,也可以提供以下信息,例如DNS服务器地址和 Windows Internet 名称服务(WINS)服务器地址

基本思想
每个网络必须有一个DHCP服务器来负责地址配置
当计算机启动时,它有一个嵌入在NIC中的内置以太网地址或其他链路层地址,但没有IP
该计算机在自己的网络上广播一个DHCP DISCOVER包。(若DHCP服务器和主机不再同一个LAN上,这时需要将路由器配置成一个DHCP中继代理)
当DHCP服务器收到请求,它就为该主机分配一个空闲的IP地址,并通过DHCP OFFER包返回给主机

Internet路由协议

Internet把整个互联网划分成为许多的自治系统(AS)
一个AS内的所有网络都属于一个行政单位来管辖
它有权自主地决定在本系统内采用何种路由选择协议
一个AS内的所有路由器都必须是在本系统内连通的
如果一个部门管辖两个网络,但这两个网络要通过其他的主干网才能互连起来,则这两个网络就不能构成一个自治系统
Internet是由大量的AS构成的,每个AS由不同的组织来运行
内部网关协议IGP(interior gateway protocol)
AS内使用的路由算法,如:RIP、OSPF
外部网关协议EGP(exterior gateway protocol)
AS之间使用的路由算法,如:BGP

OSPF

开放最短路径优先OSPF(Open Shortest Path First)

  • 开放,算法是公开发表
  • 支持多种距离衡量尺度,例如,物理距离、延迟等
  • 动态算法
  • 支持基于服务类型的路由(服务类型域)
  • 负载平衡
  • 支持分层系统
  • 适量的安全措施
  • 支持隧道技术

OSPF支持三种连接和网络

  • 两台路由器间的点到点线路
  • 支持广播传送的多路访问网络(如大多数LAN)
  • 不支持广播传送的多路访问网络(如大多数数据包交换的WAN)

多路访问网络
它有多台路由器,每台路由器可以直接与其他所有路由器进行通信
所有的LAN和WAN都有这个特性

OSPF的工作方式
将实际的网络、路由器和线路抽象到一个有向图中,并给图中的每条弧分配一个开销值(如:距离、延迟等)
根据这些弧段上的权值计算出最短路径

分层路由
庞大的自治系统(AS)可以划分区域(areas);每个区域是一个网络或者一组邻近的网络,区域不能相互重叠,也不必覆盖所有的网络或路由器。在一个区域外部,它的拓扑结构和细节是不可见的
每个AS有一个骨干(backbone)区域,称为区域0,所有区域与骨干区域相连
区域内部,每台路由器都有同样的链路状态数据库,并运行同样最短路径算法,在一个区域中至少有一台路由器连接到骨干上

在OSPF中,AS、骨干区域和区域之间的关系

BGP

边界网关协议(BGP)
AS之间的路由算法

外部网关与内部网关的区别
要考虑其他的因素(如:政治、安全或经济方面)

BGP协议
通过TCP连接传送路由信息
采用距离矢量算法,但它与大多数其它的距离矢量协议(如:RIP)有显著不同
每台BGP路由器并不仅仅维护它到每个目标的开销值,而且还记录下所使用的路径
每台BGP路由器将它所用的确切路径告诉它的邻居

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!