概述
网络层工作流程 将分组从发送方发到接收方 发送方将数据段包装成分组发出去 接收方将分组解出数据段然后给传输层 网络层协议在每台主机和路由器上 剩下的直接在具体内容里看吧
虚电路和数据报网络
数据报网络在网络层提供无连接服务 虚电路网络是有连接服务 可以对比传输层的TCP和UDP,但是也有区别
- 服务是主机到主机,提供给传输层(传输层是端到端,提供给应用进程的服务)
- 同一时间提供两种中的一种(传输层:提供TCP和UDP)
- 在端系统及网络核心实现(传输层是在端系统实现的)
虚电路网络
和普通的电话线路相似,性能可靠,源端到目的端 特点:
- 数据传输前建立虚电路,传输完毕拆除虚电路
- 每个分组携带vc标识
- 从源到目的的路径上的每个路由器都要维护每个连接的状态信息
- 链路、路由器资源可能分配给vc
数据报网络
对于端到端的连接没有状态信息维护,分组使用目的主机的地址进行转发,同一个源到目的主机分组可能走不同的路径
使用的是最长前缀匹配,不作过多说明
路由器工作原理
首先是路由器的两个主要功能:
- 运行路由算法/协议(RIP,OSPF,BGP),管理控制平面
- 将分组从输入链路转发到适当的输出链路,转发数据平面
路由器的结构如下图 ####输入端口
- 根据分组中的目的地址,在输入端口的缓存中查找转发表得出适当的输出端口
- 有硬件查找和线性搜索两种
- 目标:要求输入端口的处理速度超过线路的处理速度
- 排队:如果输入端口分组的到达速度快于转发速度,那么就会进行排队
交换结构
在输入端口的路由表已经找到了输出端口,后面就要依靠交换结构来将分组从输入端口转到输出端口了 交换结构有三种
- 内存交换
传统的计算机,交换在cpu的控制下完成的,分组被拷贝到内存 这种交换收到内存带宽的限制(每个分组经过两次总线)
- 总线交换
分组从输入端口缓存经过一根共享总线到达输出端口缓存,交换速率受到带宽限制
- 互联网络交换
克服了总线带宽的限制
输出端口
- 缓存
当分组从交换结构达到的速率快于输出链路速率的时候就需要缓存
- 调度原则
先到先服务FCFS,加权公平排队WFQ 抛弃原则:弃尾,主动队列管理,随机早期检测 当分组从交换结构达到的速率过快,输出端口缓冲区溢出的时候则会造成分组的丢失
网际协议
Internet网络层
IP数据报格式
头部20字节,具体来看
分片和重组
例题
每隔一个完整数据报偏移为1480/8=185,ID相同,除了最后一个数据报的fragflag为0其他的均为1,length为MTU
ip寻址:介绍
IP地址:分配给主机或路由器接口的32bit的标识符 接口:主机/路由器和链路之间的边界
- 路由器和主机都可以有多接口
- 每个接口有一个ip地址
子网
IP高位为子网部分 低位为主机部分 什么是一个子网?
- 设备接口的IP有相同的网络部分
- 没有路由器的介入,物理上能够互相到达
为了确定子网,分开主机和路由器的每个接口,从而产生了几个分离的网络岛,这些独立网络中的每一个叫做一个子网
子网掩码
和IP做AND运算,获得的结果相同则处于同一子网
分类ip

CIDR地址块
格式:a.b.c.d/x
DHCP
问:主机如何获得IP? windows:控制面板->网络->配置->tcp/ip->属性 unix:/etc/rc.config
- DHCP(动态主机配置协议)
自动从一个DHCP服务器得到IP地址
目标:
- 允许主机在加入网络时从网络服务器动态得到IP地址
- 能够在使用时续借地址租用
- 允许重用地址
- 支持准备加入网络的移动用户
- DHCP概述 主机广播"DHCP discover" DHCP回复"DHCP offer" 主机请求 "DHCP request" DHCP发送地址"DHCP ack"
NAT
动机:对外部网络来讲,本地网络只用一个IP地址:
不需要从ISP分配一系列IP,只要一个IP地址用于所有设备
本地网络改变设备的IP不需要通知外界
可以变更ISP而不用改变本地网络的设备的地址
本地网络内部不能被外界寻址(对外界不可见)
执行 对于NAT路由器
对于外出的分组,替换每个外出分组的(源ip,端口)为(NAT IP,新端口),远程服务器用(NAT IP,新端口)作为目的地来响应
NAT转换表中,每个(源IP,端口)到(NAT IP,新端口)转换配对
进来的分组:对每个进来的分组,用保存在NAT表中的(源IP 端口)来替换目的域(NAT IP,新端口)
也就是用NATIP来做外访问外网的媒介,示意图如下
ICMP
用于主机路由器之间彼此交流网络层信息 - 差错报告:不可到达的主机,端口,协议
- 请求/应答
位于IP之上 - ICMP消息装载在IP分组里 ICMP的类型
ipv6
初始动机:32-bit地址空间即将用尽 其他动机:改变格式可以帮助转发 IPv6数据报格式
固定长度的40字节首部
不允许分片
ipv6和ipv4的不同:
校验和:全部去掉,减少每一跳的处理时间
选项:允许,但是不是标准首部的一部分,而是用下一个首部域指出
ICMPv6:新版本的ICMP,增加了消息类型,比如分组太大,多波组管理功能
ipv4到ipv6的过渡 两种推荐方法:
- 双栈:一些路由器具有双重栈能够在两种格式中转换
即ipv6和ipv4之间转换
- 隧道:穿过ipv4路由器的时候,ipv6作为分组负载
用ipv4包住ipv6
选路算法
选路算法决定了路由器中转发表中的值 路由算法可以简单的分个类 比如全局或是分散 全局 所有的路由器都有完整的网络拓扑结构和链路开销 使用链路状态算法(如dijkstra) 分散 路由器只知道物理连接的邻居和到邻居的链路开销 通过邻居之间的反复计算处理和交换信息来构造路由表 使用距离矢量算法 或者是静态和动态的 静态的 路由变化很慢,通常有人工设定 动态的 路由变化很快,周期性更新,而且直接影响链路开销的变化
链路状态算法
也就是dijkstra算法 所有节点知道网络拓扑结构和链路开销(通过链路状态广播完成)
距离向量算法
动态计算 dx(y)=minv{c(x,y)+dv(y)}
方程举例:
基本思想
每个节点周期性地给相邻节点发送自己的距离向量估计值
当节点x从它的任何一个邻居v收到一个新的距离向量估计值,就用B-F方程更新自己的距离向量估值
简单正常情况下,距离向量估值Dx(y)收敛到实际的最小路径开销dx(y)