一、网络层概述
发送主机向接受主机传送数据段Segment
发送主机:将数据段Segment封装到数据报datagram中
接受主机:接收到数据报datagram,向上层传递数据段Segment
路由器检查所有穿越它的IP数据报的头部域
1.1 路由转发
转发forwarding:将分组从路由器的输入端口 移动到合适的 输出端口
路由routing:确定分组从源到目的经过的路径,路由算法routing algorithms
必须提前维护好路由转发表
1.2 建立连接
某些网络的重要功能:非同步傳輸模式(英語:Asynchronous Transfer Mode,ATM)
数据分组传输之前需要建立虚拟/逻辑连接
网络层连接和传输层连接的对比:
- 网络层连接:两个主机之间(路径上的路由器等网络设备参与其中)的连接
- 传输层连接:两个 应用进程 直接的链接(对中间设备透明)
1.3 网络服务类型
- 无连接服务(connection-less service)
- 不事先为系列分组的传输确定传输路径
- 每个分组独立确定传输路径
- 不同分组可能传输路径不能不同
- 数据报网络(datagram network)
- 连接服务(Connection service)
- 先确定从源到目的经过的路径
- 沿该路径传输的系列分组
- 系列分组都按照这个路径传输
- 结束后拆除
- 虚电路网络(virtual-circuit network)
二、虚拟电路与数据报网络
都是 报文交换
数据报datagram 和 虚电路virtual-circuit网络是两类分组交换网络
数据报 网络提供 网络层 无连接 服务 类似于传输层的UDP
虚电路 提供 网络层 连接 服务 类似于传输层的TCP
2.1 虚电路Virtual circuits VC网络
一条从源主机到目的主机,类似于电路的路径(逻辑链路)
-
分组交换
-
每个分组的传输利用链路的全部带宽
-
源到目的的路径经过的网络层设备共同完成虚电路功能
-
通信过程:
- 呼叫建立call setup 、数据传输、拆除呼叫
- 每个分组携带虚电路标识VC ID,而不是目的的主机地址
- 经过的每个网络设备(Routing) 维护每条经过它的虚电路连接状态
- 链路、网络设备资源(带宽、缓存)可以面向VC进行预分配
- 预分配资源=可预期服务性能
- 如ATM的电路仿真CBR
2.1.1 VC 实现
- 每条虚电路包括:
- 从源主机到目的主机的一条路径
- 虚电路号VCID,沿路每段链路的一个编号
- 沿路每个网络层设备Router ,利用 Routing Table 记录经过的每条虚电路
- 同一条VC,每段链路上的VCID通常不同
- 路由转发分组的时依据转发表改写替换虚电路号
2.1.1 虚电路信令协议(signaling protocols)
VC建立、维护、拆除
目前Internet不采用
2.2 数据报网络
网络层 无连接
每个分组携带目的地址
路由器根据分组的目的地址转发分组,
每个分组独立选路(Routing Table 更新之后 选路就会变)
Routing Table中,不会记录每一个地址,不然太大了
记录的是地址范围
理想情况下:
但是大多数情况都是不规律的
最长前缀匹配优先
第二条:更长更具体,优选前缀匹配更长的原则
2.3 对比
三、Internet网络的网络层 IP协议
ICMP协议:Internet Control Message Protol
Router 、网关、主机用来报告错误情况和检测网络通路的可达性 ping
ICMP 和 IP 是伴随协议,
ICMP利用IP传输消息;IP利用ICMP进行错我处理和故障排除
- 版本号 IPV4 IPV6
- 首部长度
- 服务类型TOS
- 总长度字段:IP分组的总字节数(首部+数据)
- 生存时间TTL:可以通过的路由器数(跳步数)
- 协议字段8位:TCP UDP
- 首部校验和:反码:每次路由都校验
- 源 目的 IP
- 选项字段:安全、源选路径(给Router指定)
- 填充:保证符合32位对齐
3.1 IP分片
3.1.1 最大传输单元MTU
一段链路上,可以分装的单片 数据帧上限
大的IP分组 向 小的MTU链路转发的时候,就需要分片 fragmented
- 1个IP分组分为多片
- IP分片到达目的主机后,进行重组reassembled
- Router只会分片,不会重组,最终目的地才会重组
IP首部头部,标识分片以及确定分片的相对顺序
- 总长度、标识、标志位、偏移
3.1.2 分片过程
3.2 IP编址 addressing
IP分组:
源地址SA-
目的地址DA
接口interface:主机/路由器与物理链路的连接
- 实现网络层功能
- 路由器通常有多个接口
- 主机通常带1个或2个接口(以太网接口、无线802.11接口)
IP地址:32bit(IPV4)
编号标识主机、路由器的接口
IP地址与每个接口关联
IP子网
3.3 有类IP地址
私有IP地址
A 10
B 172.16 ~ 172.31
C 192.168.0 ~ 192.168.255
3.4 IP地址划分
ABC类网络的子网掩码:
A:255.0.0.0
B:255.255.0.0
C:255.255.255.0
借用3bit换分子网的B类子网:255.255.224.0
子网地址 + 子网掩码
C类网络划分成八个 子网划分
C:255.255.255.0 借用3位
子网掩码为:255.255.255.224
借用的3位 分成以下子网
四、CIDR
无类域间路由(CIDR:Classless InterDomain Routing)
- 消除传统的A B C类网络
- 融合了子网地址和子网掩码,方便子网划分 a.b.c.d/x x:前缀长度
- 提高IPV4的空间分配效率
- 提高路由效率
- 多个子网聚合为一个大的子网
- 构造超网supernetting
- 路由聚合router aggregation
4.1 路由聚合 router aggregation
先到达 大的 子网 223.1.0.0 然后达到后再进行路由划分
- 层级编址使得路由信息更加高效
- 最长前缀匹配优先
五、DHCP
5.1 如何获取IP
5.1.1 静态
主机如何获取到IP地址
硬编码:
默认网关 default gateway:子网中的 IP 数据报需要发送到其他子网的时候,就需要把这个数据报发送给路由器指定的接口,这个接口就是整个子网的默认网关。
作用就是充当 内网 ----> 外网的中继
5.1.2 动态IP
动态主机配置协议DHCP:DynamicHostConfiguration
从服务器动态获取
地址充分利用
新接入的 移动用户加入网络,无需配置
- 主机广播:DHCP discover 发现报文
- DHCP服务器利用 :DHCP offer 提供报文 进行相应
- 主机请求IP:DHCP request 请求报文
- DHCP服务器分配IP:DHCP ack 确认报文
六、NAT网络地址转换
IPV4 已经分配殆尽
现在很多实用的是 私有IP地址
为了保证这些 私有IP地址的通信,就需要 NAT
用不同的端口号,区分不同的主机
- 一个网络只有一个IP地址
- 私有IP变更,无需告知外界
- 对外IP地址变更,子网IP不影响
- 内部网络设备对外网不可见,不可直接寻址(安全)
6.1 NAT实现
Network Address Translation
6.1.1 替换
利用(NAT IP地址,新端口号)
----> 外出IP数据报(源IP Port)
6.1.2 记录
对每个(NAT IP地址,新端口号)与 (源IP Port) 的替换信息存储到NAT转换表中
6.1.3 替换
根据NAT替换表,找到对关系
端口号:
16bit 组成,2的16次方 = 65536
所以NAT最多可以支持6万多个链接(一般的子网够用了)
NAT主要争议
- 路由器应该只处理网络层功能,但现在处理了 传输层 的数据
- 违背端到端的通信原则:P2P
- 地址短缺问题应该由IPv6来解决
6.2 NAT内网穿透
6.2.1 静态NAT
配置静态的NAT转化表
外网想要访问内网的IP,对NAT的特定端口发送数据
6.2.2 UPnP
原理和静态NAT类似,就是动态配置
Universal Plug and Play
互联网网关设备协议
IGD-Internet Getway Device
自动配置:
- 学习到NAT公共IP地址
- 在NAT转换表中,增删端口映射表
6.2.3 中继Skype
你们都用微信orSkype,那不就能发消息了
6.2.4 DDNS
(Dynamic Domain Name System)动态域名解析服务
将内网IP(每次拨号可能变化,实时的更新到 域名 上)
外网 对这个 域名进行访问
七、ICMP
互联网控制报文协议
Internet Control Message Protocol
- 两类ICMP报文:
- 差错报告报文
- 目的不可达
- 源控制(Source Quench)
- 超时超期
- 参数问题
- 重定向
- 网络探寻报文
- 回升Echo请求和应答报文
- 时间戳请求与应答报文
RIP 只和邻站交换信息,使用 UDP 无可靠保障,但开销小,可以满足 RIP 要求;
OSPF 使用可靠的洪泛法,直接使用 IP,灵活、开销小;
BGP 需要交换整个路由表和更新信息,TCP 提供可靠交付以减少带宽消耗;
RIP 使用不保证可靠交付的 UDP,因此必须不断地(周期性地)和邻站交换信息才能使路由信息及 时得到更新。但 BGP 使用保证可靠交付的 TCP 因此不需要这样做。
** RIP ** Routing Information Protocol 动态路由的距离矢量路由协议,基于距离向量算法的内部网关协议,只和相邻站点交换信息,动态学习规划路由表,用UDP,在小型网络中适用,大型网络用OSPF(Open Shortest Path First)和BGP(Border Gateway Protocol)
OSPF open shortest path first,开放式最短路径链路状态路由协议,用Dijkstra算法实现,计算路由表,用IP协议
BGP Border Gateway Protocol, 外部网关协议 ,交换不同子网的路由信息,用TCP
八 IPv6
最佳动机:32位IPv4 地址匮乏
其他动机:1.快速处理转发2.支持Qos数据质量
128位
8.1 IPv6数据报格式
IPv6数据报格式:
-
固定长度的40字节基本首部
-
不允许分片
-
优先级(priority):标识数据报的优先级
-
流标签flow Label:标识同一"流"中的数据报
-
下一个首部(next Header):标识下一个选项首部或上层协议首部
-
校验和checksum:彻底移除
-
选项Options:允许,从基本首部移除
-
ICMPv6:新版ICMP:附加报文类型,多播组管理功能
8.2 IPv6 表示
8组16进制数
8.3 v6基本地址类型
8.4 v4 v6
共存
80 个 0 + 16 个 1 + 32 bit IPv4 = 128 位IPv6
IPv6 中 子网
和IPv4做区分,会把IPv6
过度
不会有确定的时刻将所有路由器同时更新为v6
肯定需要v4 v6共存
隧道:v6数据报作为v4数据报的 载荷(数据位) 进行封装,穿越v4网络
8.5 NAT-PT
NAT-PT(Network Address Translation - Protocol Translation)是一种IPv4到IPv6协议的转换技术,它可以在IPv4网络和IPv6网络之间进行双向通信。
在IPv6网络中,每个主机都有一个全局唯一的IPv6地址,而在IPv4网络中,由于公网IPv4地址资源不足,很多主机只能使用私有IPv4地址,这就导致IPv4网络内部的主机无法直接和IPv6网络中的主机通信。NAT-PT协议的目的就是解决这种IPv4和IPv6之间的互通问题。
NAT-PT协议的原理是将IPv6数据包封装为IPv4数据包进行传输,同时把IPv4数据包中的源地址和目的地址进行转换,使得IPv6主机和IPv4主机可以互相访问。从IPv6主机到IPv4主机的数据流程如下:
- IPv6主机发送IPv6数据包。
- NAT-PT设备接收到IPv6数据包,并将其封装为IPv4数据包。
- NAT-PT设备将IPv4数据包的目的地址转换为IPv4地址,然后将其发送给IPv4网络上的目标主机。
- 目标主机收到IPv4数据包,将其解析为IPv6数据包,并进行相应的处理。
从IPv4主机到IPv6主机的数据流程类似,只是转换的方向相反。
NAT-PT协议的实现需要使用NAT和协议转换两个功能,其中NAT负责IPv4和IPv6地址的转换,而协议转换则负责IPv4数据包和IPv6数据包之间的封装和解封装。通常采用的方式是在网络层和传输层之间插入NAT-PT设备(也称为IPv4-IPv6网关),通过配置IP地址映射、端口映射和协议转换等参数来实现IPv4和IPv6之间的互通。
尽管NAT-PT协议可以实现IPv4和IPv6网络之间的互通,但它存在一些问题,例如性能低下、安全性差等。因此,随着IPv6技术的普及,NAT-PT协议已经逐渐被其他IPv6转换技术所替代,例如IPv6 over IPv4隧道、6to4隧道、ISATAP隧道等。
8.6 网络划分习题
文章来源:https://www.toymoban.com/news/detail-487616.html
文章来源地址https://www.toymoban.com/news/detail-487616.html
到了这里,关于计算机网络开荒4-网络层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!