计算机网络原理 - 网络层、链路层

##4.网络层

网络层主要是利用IP上的传输,在路由器中最高达到的层次为网络层,分组交换机只到链路层;IP准确来说不是一个主机的地址,而是一个接口的地址。

4.1 概述

网络层的作用:将分组从一台发送主机移动到一台接收主机。

4.1.1 转发和路由选择

转发:当一个分组到达路由器的一条输入链路时,路由器必须将该分组移动到适当的输出链路

路由选择:分组从发送方流向接收方时,网络层必须决定这些分组采用的路由或路径,路由选择算法

概述:

转发是路由器本地动作,路由选择是网络范围过程。比如开车从北京到上海,转发相当于在某个路口选择某一条岔路,路由选择相当于规划从北京到上海所有线路的过程

每台路由都有一张转发表。路由器检查分组首部字段值(可能是目的地址或所属连接,看网络层协议)来转发分组,使用该值在转发表索引查询。该值指出了该分组将被转发的路由器输出链路接口

路由选择算法决定了插入路由器转发表中的值。路由器接收路由选择协议报文,来配置转发表。有两种算法:

集中式:统一分配路由表

分布式:路由器自带路由表

一些其他概念:

分组交换机:指一台通用分组交换设备,根据分组首部字段值从输入链路接口转移分组到输出链路接口

链路层交换机:基于链路层字段中的值做转发决定

路由器:基于网络层字段值做转发决定

连接建立:某些网络结构(ATM、帧中继、MPLS)除了转发和路由选择功能,还有连接建立功能。要求从源到目的地沿着所选择路径彼此握手,建立连接

4.1.2 网络服务模型

定义了分组在发送与接收端系统之间的端到端运输特性

网络层可以提供的服务(注意:IP并没有这些服务):

  • 确保交付
  • 具有时延上界的确保交付
  • 有序分组交付
  • 确保最小带宽:模仿发送方和接收方之间一条特定比特率传输链路的行为。发送速率低于该速率,分组不会丢失,且会在预定时延内到达
  • 确保最大时延抖动:确保发送方两个相继分组之间的时间 = 目的地接收到它们之间的时间
  • 安全性服务:使用仅由源和目的地主机知晓的密钥,加密数据报,源加密,目的主机解密。此外还有数据完整性和源鉴别服务

因特网的网络层IP协议提供单一服务,尽力而为服务,无带宽保证,无丢包保证,无顺序保证,不定时,无拥塞指示

其他提供服务的服务模型:
  • 恒定比特率(CBR) ATM网络服务

就是使网络连接看起来就像在发送和接收主机之间存在一条专用的、固定带宽的传输链路,以使用性质相同的虚拟管道来提供分组(ATM术语称为信元)流。

  • 可用比特率(ABR)ATM网络服务

比尽力而为的服务稍好一点的服务。然而与IP不同的是,信元不能重排序。最小传输速率是可以保证的。

4.2虚电路和数据报网络

仅在网络层提供连接服务的计算机网络称为虚电路;仅在网络层提供无连接服务的计算机网络称为数据报网络。

运输层面向连接服务是在位于网络边缘的端系统中实现的;我们很快看到,网络层连接服务除了在端系统中,也在位于网络核心的路由器中实现

4.2.1 虚电路网络

包括ATM、帧中继的体系结构是虚电路网络,在网络层使用连接。IP是数据报网络

虚电路组成:
  • 源和目的主机之间的路径,一系列链路和路由器

  • VC号,该路径每段链路一个号码,属于一条虚电路的分组首部有VC号

  • 该路径每台路由器转发表表项。当跨越一台路由器创建一条虚电路时,转发表增加一个新表项,终止将会删除一条虚电路每条链路上可能有不同VC号,每台路由器必须用一个新的VC号更新每个分组的VC号(which can get from the forwarding tables)也就是一个分组经过一台路由器,首部VC号可能就变了,原因:

  • 逐链路代替该号码减少了分组首部VC字段长度

  • 大大简化虚电路建立。如果要求一个VC号,创建虚电路时路由器需要交换处理大量报文来约定VC号

    虚电路网络中的路由器必须为进行中的连接维护连接状态信息。创建一个连接,转发表加一项;释放一个连接,转发表删一项。该信息将VC号与输出接口号联系起来。即使没有VC号转换,仍有必要维持状态信息,该信息将VC号和输出接口号联系起来。

虚电路3个阶段:
  • 虚电路建立

    发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路

    网络层决定发送方和接收方之间的路径,即虚电路要通过一系列链路和路由器,为每条链路设置vc号

    网络层在路径上每台路由器的转发表增加一个表项

    预留该虚电路路径上的资源

  • 数据传送

    发起呼叫—>入呼叫—>接收呼叫—>呼叫连接—>数据流开始—>接收数据

  • 虚电路拆除

    网络层通知网络另一侧端系统结束呼叫,更新删除路由器上转发表项以表明虚电路不存在(说明路由器转发表项是虚电路的物理体现)

信令报文

端系统向网络发送指示 虚电路启动与终止的报文

路由器之间传递的用于建立虚电路(修改路由器表中的连接状态)的报文

用来交换这些报文的协议称为信令协议

4.2.2 数据报网络

每当端系统要发送分组,为分组加上目的地地址,推进网络

分组从源到目的地传输,通过一系列路由器传递,每台都使用分组的目的地址转发该分组

每个路由器有转发表,将目的地址映射到输出链路接口,路由器将分组向该接口转发

目的地址(其实就是IP地址)32bit,转发表不可能对每个目的地址有一个表项,因此,路由器用分组的目的地址的前缀与表项进行匹配。当有多个匹配时,使用最长前缀匹配规则。

数据包网络中路由器不维持连接状态信息,但是维护了转发状态信息。实际上每1-5分钟,路由选择算法更新一次转发表。

因为在数据包网络中的转发表能在任何时刻修改,从一个端系统到另一个端系统发送一系列分组可能在通过网络时走不同的路径,并可能无序到达

4.2.3 虚电路和数据报网络的由来

虚电路来源于电话界(真电路)

端系统设备复杂,网络层服务模型应尽可能简单,复杂功能在更高级实现(按序、可靠数据传输、拥塞控制等)

因为简单,所以互联各种链路(卫星、以太网、光纤、无线)和丢包特性的网络变得容易

增加一个新服务器只需连接一台主机到网络,定义一个新的应用层协议即可,使得Web之类的新服务很快在因特网部署

4.3 路由器工作原理

路由器的组成部分

  • 输入端口

    行将一条输入的物理链路与路由器相连接的物理层功能

    执行与位于入链路远端的数据链路层交互的数据链路层功能

    查找功能,查询转发表决定路由器的输出端口,将分组转发到输出端口

  • 交换结构

    将路由器的输入端口与输出端口相连
    分组通过交换结构转发到输出端口

  • 输出端口

    存储从交换结构接收的分组,执行必要的链路层和物理层功能在输出链路上传输这些分组。

    当链路是双向的时,输出端口与输入端口在同一线路卡成对出现

  • 路由选择处理器

    执行路由选择协议

    维护路由选择表、连接的链路状态信息,为路由器计算转发表

路由转发平面

一台路由器的输入端口、输出端口和交换结构共同实现了转发功能,并且用硬件实现

路由控制平面

路由器的控制功能(执行路由选择协议、对上线或者下线链路进行响应、管理功能),在毫秒时间尺度上运行,用软件实现并在选择处理器上执行(一种cpu)

4.3.1 输入端口

查找

查找必须在纳秒级别执行,不仅要用硬件执行查找,而且要对大型转发表使用快速查找算法,而且需要更快的内存访问速度(DRAM、SRAM)。

影子副本:

转发表由路由选择处理器计算和更新,从路由选择处理器经过独立总线复制到(输入)线路卡(影子副本)有了转发表副本,转发决策能在每个输入端口本地做出,无须调动路由选择处理器,避免集中式处理

排队:

查找确定了某分组输出端口,分组就能发送进入交换结构。一个被阻塞的分组必须在输入端口处排队

尽管查找在输入端口可以说是最为重要的,但必须采取许多其它动作:

必须出现物理层和数据链路层处理

必须检验分组的版本号、检验和和寿命字段。后两个字段必须重写

必须更新用于网络管理的计数器

匹配加动作

4.3.2 交换结构

通过交换结构,分组才能实际地从一个输入端口交换(转发)到一个输出端口中

三种交换方式:
  • 经内存交换

一个分组到达输入端口时,该端口会先通过中断方式向路由选择处理器发出信号

分组从输入端口复制到处理代路由器查找交换进内存,是器内存中(现由输入线路卡处理的)

早期路由选择处理器从首部提取目的地址,在转发表查找输出端口,将分组复制到输出端口

  • 经总线交换

输入端口经一根共享总线将分组直接传送到输出端口,无需路由选择处理器的干预

路由器的交换带宽受总线速率限制

  • 经互联网络交换

纵横式交换机,2N条总线组成网络,连接N各输入端口和N个输出端口

每条垂直的总线与每条水平的总线交叉,交叉点通过交换结构控制器开启闭合

某分组到达端口A,需要转发到Y,交换机控制器闭合总线A和Y的交叉点,A在其总线上发送分组,仅由Y接收;同时B也能发分组到X,因为没有公用总线。纵横式网络能并行转发多个分组。但是如果两个不同输入端口的两个分组的目标是同一个输出端口。则一个分组必须在输入端等待

经过不同的端口最后到达同一个目标

4.3.3 何处出现排队

输入、输出端口都能形成分组队列,取决于流量负载、交换结构

随着队列增长,路由器缓存空间会耗尽,出现丢包

需要路由器缓存吸收流量负载波动,需要多少缓存?

少量TCP流:RTT * C(链路容量)

大量TCP流:RTT* C/ (N^1/2)

输出端口排队 ,需要分组调度程序选出一个分组发送。提供服务质量保证

输出端口的一个分组调度程序必须在这些排队的分组中选取一个发送。

分组调度程序在提供服务质量保证上有很大的作用

主动队列管理(RQM):

缓存填满前丢弃(或首部加个标记)一个分组,向发送方提供一个拥塞信号

随机早期检测算法(RED)

平均队列长度在某个范围内时,以某种概率被丢弃/标记。

线路前部阻塞(HOL)

深色阴影分组必须等待。但不仅该分组要等待,左下角队列中排在该分组之后的浅色阴影分组也要等待,即使右侧输出端口中无竞争。这种现象叫做线路前部阻塞(HOL)

4.3.5 路由选择控制平面

网络范围的路由选择控制平面是分布式的,即不同部分(如路由选择算法)执行在不同的路由器上,并且通过彼此发送控制报文进行交互

4.4 网际协议(IP)

因特网中的转发和编址

网络层三个组件

  • IP协议
  • 路由选择协议
  • 控制报文协议(ICMP):报告数据报中的差错、对某些网络层信息请求进行响应的设施

4.4.1 数据报格式

  • 版本号(IPv4、IPv6):不同版本对数据报不同解释
  • 首部长度:数据报可包含可变数量的选项。不过大部分没有,首部固定20字节
  • 服务类型:区分不同类型的IP数据报
  • 数据报长度:首部+数据的长度。该字段16bit,然而一般数据报很少超过1500字节
  • 标识、标志、片偏移:IP分片相关。不过IPv6不允许在路由器上对分组分片
  • 寿命TTL:确保数据报不会永远在网络中循环。每被一个路由器处理时,值-1。若值减到0,丢弃数据报
  • 协议号:到达最终目的地才有用,指示了IP数据报的数据部分应该交给哪个运输层协议。如6交给TCP,如17交给UDP协议号是将网络层与运输层绑定到一起的粘合剂;端口号是将运输层和应用层绑定的粘合剂
  • 首部检验和:帮忙路由器检测收到IP数据报中首部的比特错误,有错一般丢弃。每台路由器上必须重新计算检验和。IP层仅对IP首部计算检验和,而TCP/UDP检验和是对整个TCP/UDP报文段进行的
  • 源和目的IP地址:源主机通过DNS查找目的地址
  • 选项:IPv6已抛弃选项字段
  • 数据(有效载荷):包含运输层报文段(TCP或UDP),或ICMP报文段

一个IP数据报有长为20的首部,如果数据报承载一个TCP报文段,则每个无分片数据报承载总长40的首部(还有TCP的20)以及应用层报文

IP数据报分片

网络链路存在MTU (最大传输单元)和链路层数据帧可封装数据的上限不同链路的MTU不同

IPv4的设计者决定把数据报的重新组装工作放在端系统而不是路由器中

大IP分组向较小MTU链路转发时, 可以被“分片” (fragmented)

1个IP分组分为多片IP分组

​ P分片到达目的主机后进行“重组”(reassembled)

IP首部的相关字段用于标识分片以及确定分片的相对顺序

​ 总长度、标识、标志位和片偏移

假设原IP分组总长度为L,待转发链路的MTU为M

若L>M,且DF=0,则可以/需要分片

分片时每个分片的标识复制原IP分组的标识

通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片

最后一个片的标志为0,其余的为1

例:

4000字节的数据报,在MTU1500字节的链路上

数据报的有效载荷仅当在IP层已完全重构为初始IP数据报时,才会传递给目的地传输层。如果一个或多个片没有到达目的地,则该不完整的数据报被丢失

并不是所有链路层协议都能承载相同长度的网络层分组,如以太网帧能承载不超过1500字节的数据,某些广域网链路帧不超过576字节

一个链路层帧承载的最大数据量:最大传送单元MTU

限制了IP数据报的长度,且发送方与目的路径上的每段链路可能使用不同的链路层协议,有不同的MTU

如何将过大的IP分组压缩进链路层帧的有效载荷字段?

将IP数据报中的数据分片成多个较小的IP数据报,用单独的链路层帧封装这些小IP数据报,每个小数据报叫

IPv4将数据报的重新组装放在端系统中,而不是路由器中

标识、标志、片偏移字段,帮助主机执行重组任务

一个4000字节的数据报(20+3980)到达一台路由器,转发到一条MTU为1500子节的链路上。必须分配3个独立的片,假设初始数据报的标识号是777,则前两片字节都为20+1480,第三层为20+1020

IPv6废除了分片,简化了IP分组的处理

4.4.2 IPV4编址

主机与路由器连入网络的方法
  • 一台主机通常只有一条链路连接到网络,主机IP发送数据报从该链路发送

  • 主机与物理链路的边界叫接口,一台路由器有多个接口

  • IP要求每台主机和路由器都有自己的IP地址因此一个IP地址实际上是与每一个接口相关联的

  • 每个IP地址长度32bit(4字节),总共2^32个可能的IP地址,约40亿个

  • 点分十进制记法,如:193.32.216.9

  • 一个接口的IP地址的一部分需要由其连接的子网决定,如互联3个主机接口与1个路由器接口的网络形成一个子网,IP编址为这个子网分配一个地址:223.1.1.0/24,/24记法称为子网掩码,指示了32bit中的最左侧24bit定义了子网地址

  • 为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点,这些隔离的网络中每一个都叫做一个子网

  • 因特网地址分配策略:无类别域间路由选择CDIR

  • a.b.c.d/x的地址的x最高比特构成IP地址的网络部分,称为该地址的前缀,一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。BGP路由选择协议中,该组织网络外的路由器仅考虑x,减少了转发表的长度,因为形式为a.b.c.d/x单一表项足以将数据报转发到该组织内的任何目的地

  • 地址聚合(路由聚合):使用单个网络前缀通告多个网络的能力

    一个ISP将8个组织连接到因特网。该ISP向外界通告:向我发送以200.23.16.0/20开始的任何内容。外部无需知道在该地址块内还有8个其他组织,每个组织有自己的子网

  • 一个地址的剩余32-x比特可认为是用于区分该组织内部设备的。组织内部路由器转发分组时,才会考虑这些比特

  • 在CDIR出现之前,采用分类编址A、B、C类网络,分别具有8、16、24比特子网地址

    E类:240.0.0.0~255.255.255.255

    D类 224.0.0.0~239.255.255.255

    C类(/24)仅能容纳2^8-2=254台主机(其中两个用于特殊用途)192.0.0.0~223.255.255.255

    B类(/16)支持65534台主机,一个组织分配一个B类地址却只用2000个接口,造成巨大浪费 128.0.0.0~191.255.255.255

    A类 (/8)0.0.0.0~127.255.255.255

IP广播地址

当一台主机发出目的地址为255.255.255.255的数据报时,报文会交付给同一个网络的所有主机,路由器也会有选择的向邻近的子网发送报文(通常不这样做)。可用于DHCP发现报文的发送,广播最小生成树

如何获取地址、分配地址?
1. 获取一块地址

子网获取IP地址:由ISP从它大块地址中分配

ISP获取IP地址:IP地址由因特网名字和编号分配机构ICANN管理(也管理DNS根服务器、AS标识号)。ICANN向区域性因特网注册机构分配地址,处理本地域内的地址分配/管理

2.获取主机地址

组织获得一块地址,就可为组织内的主机、路由器接口逐个分配IP地址
主机地址能手动配置,也能自动配置,即动态主机配置协议DHCP

3.动态主机配置协议DHCP

通过UDP和主机连接动态获得

DHCP允许主机自动获取一个IP地址

DHCP可配置,可以使主机每次连网获得相同IP地址,也可每次分配一个临时IP地址

DHCP还允许主机查看子网掩码、默认网关(第一跳路由器地址)、本地DNS服务器地址

DHCP能将主机连接进一个网络的自动能力,常被称为即插即用协议

DHCP是一个客户-服务器协议。新来的主机要获得自使用的IP地址等网络配置信息

每个子网都有一台DHCP服务器

若子网没有DHCP服务器,则由一个路由器做DHCP中继代理,该代理知道该网络的DHCP服务器地址

新主机到来时,DHCP协议的四个步骤

1.DHCP服务器发现

新到的客户通过广播DHCP发现报文,发现一个要与其交互的DHCP服务器

客户在UDP分组中向端口67发送该发现报文,此时必须用广播地址255.255.255.255,源地址是0.0.0.0

2.DHCP服务器提供

DHCP收到DHCP发现报文后,响应一个DHCP提供报文,仍然使用广播地址,因为此时新客户并没有IP地址

可能有多台DHCP服务器,每台服务器提供的报文中,有向客户主机推荐的IP地址、网络掩码以及IP地址租用期(一般几天或几小时)

3.DHCP请求

客户从提供中选一个,向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数

4.DHCP ACK

收到DHCP请求报文后,用DHCP ACK报文对其记性响应,证实所传参数

客户收到ACK后,交互完成,在租期内使用DHCP分配的IP地址。DHCP提供了机制允许客户更新对一个IP地址的租用

当一个移动结点在子网之间移动时,就不能维持与远程应用的TCP连接

4.网络地址转换NAT

地址10.0.0.0/8是保留的3个IP地址空间之一,这些地址用于家庭网络等专用网络或具有专用地址的地域。具有专用地址的地域是指其地址仅对还网络中的设备有意义的网络。

当ISP已经为SOHO网络当前地址范围分配过一块连续地址,而SOHO内主机越来也多时,需要用到NAT(比如电信给你家分配一个动态IP地址,家里要好几台手机电脑联网用一个IP地址,需要用NAT)

NAT使能路由器

NAT路由器对外界来看像一个具有单一IP地址的单一设备。例如,家里有一个NAT使能路由器,其IP地址138.76.29.7,且进入和离开家庭的报文都有同样的该地址

NAT路由器对外隐藏了家庭网络的细节

NAT路由器从ISP的DHCP服务器得到它的地址,并且路由器运行一个DHCP服务器,为位于NAT-DHCP路由器控制的家庭网络地址空间中的主机提供地址

NAT重要问题

违反各种原则,应该用IPv6来改进

妨碍P2P应用程序,包括P2P共享和语音。一个对等方在NAT后面,不能充当服务器并接受TCP连接,其解决办法是连接反转

连接反转:A通过C与B联系,C不位于NAT之后并与B建立了TCP连接,已经被很多P2P应用用于NAT穿越

若对等方A和B都在NAT之后,使用应用程序进行中继处理,如Skype中继

5.UPnP

NAT穿越由通用即插即用(UPnP)提供

UPnP是一种允许主机发现并配置邻接NAT的协议,要求主机和NAT都是UPnP兼容(运行在NAT使能路由器)。允许外部主机使用TCP和UDP向NAT化的主机发起通信会话

使用UPnP,在主机上运行的应用程序能为某些请求的公共端口号请求一个NAT映射**(专用IP地址,专用端口号 — 公共IP地址,公共端口号)**。如果某NAT接收请求并生成映射,来自外部的结点能发起到(公共IP地址,公共端口号)的TCP连接

4.4.3 因特网控制报文协议ICMP

ICMP被主机和路由器用来沟通网络层信息,如差错报告

如『目的网络不可到达』这种错误是在ICMP产生的,IP路由器找不到路径通往指定主机,该路由器就向发送主机发出ICMP报文指示错误

ICMP通常被认为是IP的一部分,但从体系结构上来讲它是位于IP之上的,因为ICMP报文是承载在IP分组中的。也就是说,ICMP报文是作为IP有效载荷承载的

ping:发送一个ICMP类型8编码0(回显请求)的报文到指定主机,目的主机发回一个类型0编码0(回显回答)的报文

源抑制报文:拥塞的路由器向主机发送,强制主机减小发送速率。TCP在运输层有拥塞控制机制,不需要该报文的信息了

Traceroute:如何跟踪从一台主机到世界上任意一台主机之间的路由?

原理:IP协议规定,路由器收到TTL为0的数据报会将其丢弃,然后发送一个ICMP告警报文给源主机,which concludes the name and IP address of it
方法:发送TTL为1~n的一系列IP数据报。当到达目的主机时,返回一个端口不可达(数据报携带了不可达UDP端口号)的ICMP报文,则结束探测

4.4.4 IPv6

IPv4地址耗尽,也可升级强化IPv4某些方面

IPv6数据报格式

  • 扩大的地址容量

32bit —> 128bit

除了单播多播地址,引入任播地址,使数据报交付给一组主机中的任意一个

  • 简化高效的40字节首部
  • 流标签与优先级。 如音频流、视频流、高优先级用户承载的流量
  • 分片/重组。 只能在源与目的地进行
  • 选项 放到了『下一个首部』位置,使得IP首部定长40字节
  • 去除首部检验和
IPv6字段
  • 版本号(version)

    不同的IP协议版本使用不同的数据报格式。

  • 通信量等级(Traffic Classes)

    使得源节点和路由器能够识别IPv6信息包的优先级。与IPv4服务类型TOS字段含义类似。

  • 流标签(Flow Label)

    标记那些需要IPv6路由器特殊处理(如一种非默认服务质量或实时服务)的信息包顺序。

  • 有效负载长度(Payload Length)

    定长40字节数据报首部后面的字节数量,包括扩展报头和负载数据,即数据报长度-40。

  • 下一个首部(Next Header)

    当IPv6没有扩展报头时,该字段的作用和IPv4的上层协议字段一样。当含有扩展报头时,该字段的值即为第一个扩展报头的类型。

  • 跳限制(Hop Limit)

    转发数据报的每台路由器对该字段的值减1,若减为0则丢弃该数据报。

  • 源和目的IP地址(Source/Destination Address)

  • 数据(Data)

    当数据报到达目的地时,该有效载荷就从IP数据报移出,并交给下一个首部字段中指定的协议。

  • 源和目的IP地址(Source/Destination Address)

IPv4到IPv6的迁移

双栈:同时使用IPv4和IPv6,这种结点有两种地址。DNS可解析两种地址。如果发送方和接收方中任意一个仅为IPV4使能的,则必须使用IPv4数据报

例:

结点B必须生成一个IPv4数据报发给C,IPv6数据报的数据字段可以复制到IPv4数据报的数据字段中,并且要做适当的映射。在IPv4中没有对应的部分的数据,这些字段的信息会丢失

建隧道:图中B和E,要使用IPV6交互,但是它们经由中间IPv4路由器关联的,我们将两台IPv6路由器之间的Ipv4路由器的集合成为一个隧道,将整个IPv6数据报放在IPv4的有效载荷中

4.4.5 涉足IP安全性

新型网络层协议:IPsec(如果你是Mac OS,网络设置中添加VPN服务时你会看到)。与IPv4和IPv6向后兼容

在VPN(虚拟专用网)中部署

两台主机要通信,IPsec只需在两台主机中可用,其他主机和路由器继续用普通的IPv4

两台主机首先创建IPsec会话(面向连接的),在两台主机发送的TCP和UDP报文段都享受IPsec的安全性服务

  • 密码技术约定
  • IP数据报有效载荷的加密
  • 数据完整性
  • 初始鉴别。主机确信在数据报中的源IP地址是该数据报的实际源。

4.5 路由选择算法

路由选择:确定从发送方到接收方通过路由器网络的好路径

主机通常直接与一台路由器相连,该路由器即为该主机的默认路由器第一跳路由器

源主机默认路由器称为源路由器,目的主机默认路由器称为目的路由器

一个分组从源主机到目的主机 == 从源路由器到目的路由器

路由选择算法:给定一组路由器和连接路由器的链路,路由选择算法找到一条源路由器到目的路由器好的路径(最低费用),如最短路径算法

第一种分类方法:

全局式路由选择算法

用完整、全局性的网络信息计算出最短路径(最低费用路径)

practically具有全局状态信息的算法称作链路状态算法(LS)

分散式路由选择算法

迭代、分布式的方式计算最短路径

没有结点拥有关于网络链路的完整信息,每个结点仅有与其直接相连链路的信息即可工作

通过迭代计算并与相邻结点交换信息,逐渐计算出最低费用路径,距离向量算法(DV)

第二种分类方法:

静态路由选择算法

变化缓慢, 通常人工干预

动态路由选择算法

网络流量负载或拓扑发生变化时改变路由选择路径

周期性运行或直接响应变化

也容易受路由选择循环、路由震荡等问题的影响

第三种分类方法

负载敏感算法

链路费用动态变化来反映链路拥塞水平

负载迟钝算法

链路费用与拥塞无关,当今因特网路由选择算法基本都是迟钝的

4.5.1 链路状态路由选择算法LS

网络拓扑和所有链路费用已知。实践中是由每个节点向网络其他所有节点广播链路状态分组完成的,例如OSPF路由选择协议由链,路状态广播算法完成

所有节点都具有该网络的信息,每个节点运行LS算法

Dijkstra算法

会产生路由震荡,可以让每台路由器发送链路通告的时间随机化

4.5.2 距离向量路由算法DV

迭代、异步、分布式

分布式:每个结点要从一个或多个直接相连邻居接收某些信息,计算,将计算结果发给邻居

迭代:过程持续到邻居之间无更多信息交换

异步:不要求所有节点相互步伐一致操作

DV算法

Bellman-Ford方程

无更新报文发送,不会出现进一步路由选择表计算,算法进入静止状态。直到一条链路费用发生改变

链路费用改变与链路故障

路由选择环路,无穷计数问题

增加毒性逆转

欺骗费用无穷大。如果z通过y路由选择到目的地x,则z通告y,它(z)到x的距离是无限大

解决两个直接相连无穷计数问题,更多结点环路无法解决

LS与DV路由选择算法的比较

报文复杂性

显然LS复杂得多,每条链路费用改变都要通知所有结点
收敛速度

DV算法收敛较慢,且会遇到路由选择环路和无穷计数问题

健壮性

路由器发生故障,LS结点仅计算自己的转发表,提供了一定健壮性

DV算法一个不正确的结点会扩散到整个网络

其他路由选择算法

LS、DV基本上是当前因特网实践中使用的仅有的两种路由选择算法

很多种新型算法

一种是基于将分组流量看做网络中源和目的之间的流电路交换路由选择算法也有参考价值

4.5.3 层次路由选择

问题

规模。当路由器数目变得很大,算法开销高的不可实现,如LS更新链路费用

管理自治

一个组织应该当按自己愿望运行管理其网络

解决方法:将路由器组织进自治系统–AS

每个AS由一组处在相同管理控制下的路由器组成(如相同的ISP运营)

相同AS中路由器全部运行同样的路由选择算法,叫做自治系统内部路由选择协议

一个AS内一台或多台路由器负责向本AS之外的目的地转发分组,这些路由器称为网关路由器当有多台网关路由器,需要用到自制系统间路由选择协议来配置转发表

因特网中所有AS中都运行相同的AS间路由选择协议BGP4

每台路由器接收来自一个AS内部路由选择协议和一个AS间路由选择协议的信息,并使用来自这两个协议的信息配置它的转发表

某AS非网关路由器对转发表增加用于子网x(该AS外)的表项采取的动作:

从AS间协议知道经多个网关可达子网x

使用AS内部协议的路由选择信息,决定到每个网关的最低费用路径的费用

热土豆路由选择:

选择具有最小的最低费用的网关

从转发表确定最低费用网关接口I,将(x,I)添加到转发表中

如果AS从一个相邻AS处知道一个目的地,该AS能向它某些其他相邻AS通告该路由选择信息

一个ISP可能分为多个互联的AS

4.6 因特网中的路由选择

AS内部路由选择协议,又称内部网关协议

路由选择信息协议RIP,通常设置在下层ISP中

开放最短优先OSPF,通常设置在上层ISP中

4.6.1 AS(自治系统)内部的路由选择:RIP(DV思想)

AS内部路由选择协议又称为网关协议,是一种距离向量协议,使用跳数作为其费用测度

:沿着源路由器到目的子网(包括)的最短路径经过的子网数量

一条路径的最大费用限制为15,因此RIP使用限制在网络直径不超过15跳的自治系统内

路由选择更新信息在邻居之间通过使用RIP响应报文(RIP通告)来交换,大约每30s交换一次

一台路由器或主机发出的响应报文包含了该AS内多达25个目的子网的列表,以及发送方到每个子网的距离

每台路由器维护一张称为路由选择表的RIP表,包括该路由器的距离向量和转发表(目的子网,下一台路由器,到目的地跳数)

路由器收到通告后,将通告与路由选择表合并,记下更短路径(DV算法还在收敛,或者新的链路加入AS)

一台路由器超过180s没有从邻居听到报文,该邻居要么死记要么链路中断

RIP可以修改本地路由选择表,向活着的邻居发送RIP通告,也可以使用RIP请求报文请求邻居到目的地的费用

RIP被当做一个应用进程来实现,能在一个标准socket上发送个接收报文,并且使用一个标准的运输层协议

路由器在UDP上用端口520相互发送RIP请求/响应报文。意思是RIP使用一个运输层协议实现网络层功能

4.6.2 AS内部的路由选择:OSPF(LS思想)

OSPF和其兄弟IS-IS通常设置在上层ISP中,RIP在下层ISP和企业网中

OSPF核心:使用洪泛链路状态信息的LS协议 + Dijkstra最低费用路径算法各条链路费用(权值)是管理员配置的

使用OSPF,一台路由器构建了整个AS的拓扑图,然后在本地运行Dijkstra算法

使用OSPF,路由器向AS内所有其他路由器广播路由选择信息。即使链路未发生变化,也要周期性广播链路状态(at least 30 minutes at a time)

OSPF报文由IP直接承载

优点:

  • 安全:能够鉴别OSPF路由器之间的交换,仅有受信任的路由器能参与AS内的OSPF协议。包括使用MD5加密
  • 多条相同费用路径:无需只选择单一路径承载所有流量
  • 支持单播多播路由选择
  • 支持在单个路由选择域内的层次结构*:具有按层次结构构造一个自治系统的能力**

一个OSPF AS可以配置成多个区域,每个区域运行自己的OSPF LS算法,一个区域内每台路由器可以向该区域其他路由器广播链路状态

一个区域内,一台或多台区域边界路由器负责为流向该区域以外的分组提供路由选择

AS内只有一个OSPF区域配置成主干区域,为其他区域之间的流量提供路由选择。该主干包含AS内所有区域边界路由器,也可能包含一些非边界路由器

某区域内分组—》区域边界路由器—》主干—》目的区域边界路由器—》目的地

4.6.3 AS间的路由选择:BGP

BGP:边界网关协议,跨越多个AS的源和目的对之间确定路径,现在用的BGP4

BGP为AS提供:

从相邻AS获得子网可达性信息

向本AS内部所有路由器传播这些可达性信息

基于可达性信息和AS策略,决定到达子网的路由

BGP使得每个子网向因特网其余部分通告它的存在:一个子网高声宣布『在这』,并且确保因特网中所有AS知道该子网以及如何到达

BGP基础

BGP是因特网中至关重要的协议,正是BGP将一切『粘合』起来

BGP中,路由器通过使用179端口的半永久TCP连接来交换路由信息

跨越两个 AS的TCP连接称为外部BGP会话eBGP,AS内部每对路由器之间的TCP连接成为内部BGP会话iBGP

iBGP并不总与物理链路对应

位于连接两端的两台路由器成为BGP对等方

假设你开了公司,与ISP签订协议,获得了一个IP地址范围(子网),每台路由器是通过BGP知道你公司地址的前缀进行转发的,这样别人才能成功将分组发到公司

BGP使每个AS知道经过其相邻AS可到达哪些目的地子网,目的地是CDIR化的前缀,子网或子网的集合

BGP中,一个AS由其全局唯一的AS号ASN标识,which is allocated by ICANN

当一台路由器通过BGP会话通告一个前缀时,它在前缀中包括一些属性。带属性的前缀称为一条路由,BGP对等方彼此通告路由

**AS-PATH:**该属性包含了前缀通告已经通过的AS,当一个前缀传送到一个AS时,AS将其ASN增加到AS-PATH中

路由器使用AS-PATH属性检测和防止循环通告

路由器使用AS-PATH在多条路径中选择相同的前缀

**NEXT-HOP:**是一个开始某AS-PATH的路由器接口

路由器使用该属性正确地配置它们的转发表

使用NEXT-HOP值和AS内部路由选择算法,路由器能确定到每条对等链路的路径的费用,用热土豆路由选择决定适当的接口

BGP路由选择

BGP使用eBGP和iBGP向在AS中的所有路由器发布路由,路由器可能知道到达任何一条前缀的多条路由。消除规则从上到下:

  • 选择具有最高本地偏好值(管理员决定)的路由

  • 选择具有最短AS-PATH的路由

  • 最靠近NEXT-HOP路由器的路由,最靠近指最低费用路径最低,由AS内部算法决定(hot potato routing)

  • 使用BGP标识符选择路由

    路由选择策略,反应ISP之间商业关系

4.7 广播和多播路由选择

广播路由选择(必须同一网段)中,网络提供了一种源节点到网络中事务所有其它结点的交付分组的服务

多播路由选择使单个源节点能够向其他网络结点的一个子集发送分组的副本

4.7.1 广播路由选择算法

1.N次单播

给定N个目的节点,源结点产生该分组的N份副本,对不同目的地每个副本编址,用单播路由选择传送

效率低,多份独立的副本会重复经过某段链路,让网络结点本身生成分组副本更有效

N次单播的一个假设是广播的接收方及其地址为发送方所知晓。但是怎样得到这些消息呢?最可能的是,可能还需要别的机制。这将增加更多的开销

2.无控制洪泛

源节点向所有邻居发送分组副本,结点复制该分组并向它邻居转发

图中有环,会无休止循环

当一个结点与两个以上结点连接时,它将生成并转发广播分组的多个副本,副本中的每个又产生多个副本,产生广播风暴,使网络变得毫无用处

3.受控洪泛

序号控制洪泛:源节点将其地址或其他唯一标识和广播序号放入广播分组,每个结点维护**它已经收到的、复制的和转发的源地址和序号列表。**当结点接受到一个广播分组时,它首先检查该分组是否在列表中。如果在,丢弃该分组;如果不在,复制该分组并向该结点的所有邻居转发

**反向路径转发RPF:**仅当分组到达的链路正好位于它自己返回源的最短单薄路径上,才传输报文,否则丢弃。RPF仅需要知道在它到发送方的单薄路径上的下一个邻居;它仅用这个邻居的身份以决定是否洪泛一个接收到的广播分组

4.生成树广播

虽然序号控制洪泛RPF避免了广播风暴,但它们不能完全避免冗余广播分组的传输

构造最小生成树;结点只需知道哪些邻居在生成树中

分布式生成树算法

基于中心的方法:建立一棵生成树时,定义一个中心结点(汇合点、核),结点向中心结点单薄加入树的报文。加入树的报文使用单播路由选择朝着中心结点进发,直到它到达一个生成树中,经过的路径再嫁接到现有生成树中

在实践中,广播协议被用于应用层和网络层

4.7.2 多播

只有一部分路由器(那些具有加入该多播组的相连主机的路由器)实际需要接收多播流量

一些新兴应用要求将分组从一个或多个发送方交付给一组接收方,比如各种直播、游戏

多播数据报使用间接地址来编址。每个分组难道携带所有接收方IP地址吗?这不科学

用一个标识表示一组接收方(D类多播地址),接收方小组称为多播组
因特网组管理协议IGMP

IGMP + 多播路由选择协议 组成网络层多播

确定多播路由选择:

**使用一棵组共享树的多播路由选择(共享的):**通过组共享树进行多播路由选择的基础是构建一棵树。

**使用一棵基于源的树的多播路由选择:**而第二种方法为多播组中的每个源构建一棵多播路由选择树。

解决应用RPF时会收到不想要的多播分组这个问题称为**剪枝。**一台接收到该多播分组的多播路由器,如它无加入改组的相连主机,则它向其上游路由器发送一个剪枝报文,则它就能向上游转发一个剪枝报文

chapter 5 – 链路层

5.1 链路层概述

运行链路层协议的任何设备均称为结点,沿着通信路径连接相邻结点的通信信道称为链路。通过特定链路时,传输结点将数据报封装在链路层帧中,将该传入链路

举例:游客想从苏州到临汾玩,旅行社安排的线路是:

第一段线路是从苏州乘火车到上海,第二段线路是在上海坐飞机到太原,第三段线路是太原坐大巴到临汾

游客相当于数据报

每个运输段相当于一条链路

每种运输方式相当于一种链路层协议

旅行社相当于一个路由选择协议

5.1.1链路层提供的服务

能够提供的协议可能包括:(不同协议包括不同,细节不同)

成帧

网络层数据报经链路传送前,链路层协议要将其用链路层帧封装起来

帧的结构由链路层协议规定

链路接入

媒体访问控制MAC协议,规定帧在链路上传输的规则,协调多个结点的帧传输

可靠交付

保证无差错经链路层移动每个网络层数据报

确认和重传,类似TCP

通常用于高差错率链路,如无线链路,同轴电缆、光纤、双绞线等链路不需要

目的是在差错发生的链路上纠正差错,而不是通过运输层或应用层进行端到端数据重传

链路层可靠交付可能会被认为是一种不必要的开销。由于这个原因,许多有线的链路层协议不提供可靠交付服务

差错检测和纠正(硬件)

奇偶校验

检验和循环冗余检测

5.1.2 链路层在何处实现(较硬件)

路由器中:在线路卡中实现

端主机中:网络适配器(网络接口卡,网卡),位于其核心的是链路层控制器,一个实现了许多链路层服务(成帧、链路介入、差错检测)的专用芯片。之前是物理分离的卡,现在网卡直接焊在了主板上

大部分链路层是在硬件中实现的,但部分链路层是在运行于主机CPU上的软件中实现的,软件实现了高级功能,如组装链路层寻址信息和激活控制器硬件,响应控制器中断

链路层是协议栈中软件和硬件交接的地方

5.2 差错检测和纠正技术

**比特级差错检测与纠正,**即对从一个结点发送到另一个物理上连接的邻近结点的链路层帧中的比特损伤进行检测与纠正,它们通常是链路层提供的两种服务。

为了保护比特免受差错,使用差错检测和纠正比特(EDC)。通常,要保护的数据不仅包括从网络层传递下来需要通过链路传输的数据报,而且包括链路帧首部中的链路级的寻址信息、序号和其它字段。

即使采用差错检验比特,也还是可能有未检出比特差错

传输数据中检测差错的三种技术
  • 奇偶校验(描述差错检测和纠正背后的思想)

  • 单个奇偶校验位

    单个比特的奇偶校验是指在要发送的数据最后附加一个奇偶校验位,奇校验的意思就是整个编码中的1的个数要是奇数,偶校验就是1的个数是偶数,显然如果有偶数个比特发生错误,那么奇偶校验就检测不出来了

  • 二维奇偶校验

    D中的d个比特被划分为i行j列.对每行没咧计算奇偶值,产生的i + j + 1奇偶比特就构成了链路层帧的差错检测比特

    当出现单个比特差错时,发生错误的行和列都会出现差错。接收方不仅可以检测差错,还可以根据行列索引来纠正它

    二维奇偶校验也可以检测(但不能纠正)两个比特错误的任何组合

    如果在同一行两个比特错误,则那一行的奇偶校验正确,但是会有两列的奇偶校验失败。如果不同行,则会有四列出错。这两种情况都无法纠错,只能检测。但是还是有一些偶数个错误的情况是二维奇偶校验无法检测的

    接收方检测和纠错的能力被称为前向纠错(FEC)

校验和方法

在校验和方法中,数据被切成k比特的序列,这些序列全部相加之后取反码就是校验和。接收方收到数据之后,把所有数据加起来(包括校验和)。用结果是否全为1来作为判断数据是否出错的标准

和CRC相比,校验和提供较弱的保护

为什么传输层使用校验和而链路层使用CRC呢?
  1. 传输层使用软件实现,采用简单快速的方案是必须的(校验和)
  2. 链路层的CRC用硬件实现,能够快速执行CRC操作
循环冗余检测(CRC)

编码解码步骤

CRC编码也称为多项式编码,因为该编码能够将要发送的比特串看成系数是0或1的一个比特串,对比特串的操作被解释为多项式算数,这里不过多讨论多项式理论

编码步骤如下 :

  1. 发送方和接收方实现协商一个r + 1的比特模式(比特串)G,叫做生成多项式.要求G的最高位是1
  2. 对于一个给定的数据段D,发送方选择r个附加比特R,并将它们附加到D上
  3. 使得得到的d + r比特模式用模2算数恰好能被G整除(模2算数就是异或)

接收方的解码步骤很简单,用G去除收到的d + r比特。如果余数非0,接收方知道出了差错。否则认为数据被正确接收

5.3 多路访问链路和协议

有两种类型的网络链路

点对点链路

点对点协议PPP

高级数据链路控制协议HDLC

广播链路

让多个发送和接收结点都连接到相同的、单一的、共享的广播信道上

当任何一个结点传输一个帧时,信道广播该帧,其他结点都收到一个副本

如以太网和无线局域网

多路访问问题

如何协调多个发送和接收结点对一个共享广播信道的访问

所有结点都能传输帧,多个结点可能会同时传输帧,所有结点同时接到多个帧,传输的帧在所有接收方出碰撞了,发生碰撞时,所有帧丢失

多路访问协议:结点通过协议规范它们在共享的广播信道上的传输行为

信道划分协议

随机接入协议

轮流协议

协议希望有的特性,理想情况下对速率R bps的广播信道

​ 仅有一个结点发送数据,结点具有R bps的吞吐量M个结点发送数据时,每个结点平均吞吐量R/M bps,协议分散,不会因为主结点故障似整个系统崩溃,协议简单不昂贵

5.3.1信道划分协议

TDM(时分多路复用)

TDM把时间划分为时间帧,并进一步把时间帧划分为N个时隙(slot)。(时间帧和链路层交换的单元帧不是一个意思)

然后把每个时隙分给N个节点中的一个。无论何时某个节点在有分组想要发送的时候,他在循环的TDM帧中指派给它的时隙内传输分组比特。时隙长度一般应是一个时隙内能传输一个分组

TDM的缺点

  1. 最高速率只能达到R/N bps ,即使只有一个人使用信道
  2. 节点总是总是要等待它的时隙,可能会对缓存等造成压力
  3. 3.消除了碰撞且十分公平

FDM(频分多路复用)

FDM将Rbps的信道划分为不同的频段(每个频段具有R/N带宽),并把每个频段分给N个结点中的一个。因此FDM在N个较大的信道中创建了N个较小的R/N信道

FDM的缺点和TDM相同,限制了每个结点只能使用R/N带宽

码分多址CDMA

TDM和FDM分别为结点分配时隙和频率,CDMA对每个结点分配不同的编码

每个结点用其唯一编码对发送数据进行编码,使得不同结点能同时传输,接收方仍能正确而接收

抗干扰,军用系统,民用蜂窝电话

5.3.2随机接入协议

传输结点总是以信道全部速率R bps进行发送

有碰撞时,涉及碰撞的每个节点反复重发它的帧(等待一个随机时延),直到该帧无碰撞的通过

常用随机接入协议
  1. 时隙ALOHA

    当结点有新帧发送时,等到下一个时隙开始传输整个帧(设一个时隙传一个帧)。时隙开始时传输

    如果有碰撞,结点在时隙结束之前检测到这次碰撞,以p的概率在后序的每个时隙重传它的帧,直到无碰撞

    时隙ALOHA的确需要在结点中对时隙同步。刚好有一个结点传输的时隙称为一个成功时隙。时隙多路访问协议的效率定义为:当有大量的活跃结点且每个结点总有大量的帧要发送时,长期运行中成功时隙的份额

    效率:当活跃结点数量趋向无穷大时,最大效率1/e,即37%。一个给定的结点成功传送的概率因为有N个结点。

  2. (纯)ALOHA

    碰撞时,立即以概率p重传该帧,否则等待一个帧传输时间

    效率:仅为时隙ALOHA的一半:一个给定结点成功传输一次的该概率是

  3. 载波侦听多路访问CSMA

    在时隙和纯ALOHA种,一个结点传输的决定独立于其他结点,不关心自己传输时别人是不是在传输

    举例:有礼貌的人类谈话有两个重要规则

    说话之前先听。如果在说话,等他们说完话再说,网络中称为载波侦听 ,结点等待直到一小段时间没有传输,然后开始传输

    如果与他人同时开始说话,停止说话。称为碰撞检测,当一个传输结点在传输时一直侦听此信道,如果检测到另一个结点正在传输,它就停止,等待一段随机事件,重复『侦听=当空闲时传输』动作

    这两个规则包含在CSMA和具有碰撞检测的CSMA/CD协议族中

    所有结点都载波侦听了,为何当初会发生碰撞?

    B的比特沿着广播媒体传播所实际需要的时间不是0(即使2*10^8),在还没到D时,尽管B正在发,但D侦听的信道空闲,D就开始传输,于是发生了碰撞

    广播信道端到端信道传播时延决定了性能,时延越大,不能侦听到已传输结点的可能就越大,碰撞越多,性能越差

  4. 具有碰撞检测的载波侦听多路访问CSMA/CD

    与广播信道相连的适配器

    ​ 适配器从网络层一条获得一条数据报,准备链路层帧,并将其放入帧适配器缓存中
    ​ 如果适配器侦听到信道空闲,开始传输帧;如果侦听到信道在忙,等待,直到空闲
    ​ 传输过程中,适配器监视信道

    ​ 如果适配器传输整个帧而未检测到其他信号,该适配器完成了该帧,否则停止传输帧

    ​ 中止传输后,适配器等待一个随机时间量,继续侦听

    ​ 选择随机回退时间间隔太大,信道会空闲,太小会再次碰撞。当碰撞结点数量较少时时间应该间隔较短,否则较长。二进制指数后退算法解决这个问题

    ​ 帧经历一连串n次碰撞,结点随机从{0,1,2,…,2^n-1}选择一个K值

    ​ 一个帧经历碰撞越多,K选择的间隔越大.该算法称为二进制指数倒退

    ​ 以太网中,一个结点等待的实际时间量是K*512bit的时间

    效率:信道在大多数时间都会有效地工作。

5.3.3 轮流协议

轮询协议

指定一个主结点,以循环的方式轮询每个结点

主结点首先向结点A发送一个报文,告知A能传输帧的最大数量,A传完后主结点告诉B能传帧的最多数量,如此循环

缺点:有轮询时延;主结点故障,整个信道就GG

令牌传递协议

没有主结点,一个叫令牌token的特殊帧在结点之间以固定次序交换,如1发给2,2发给3,N发给1,就像网络拓扑结构中的环状网络令牌

当一个结点收到令牌时,有帧发送,则发送最大数量的帧,然后转发令牌;没帧发送,直接把令牌转发

缺点:单点故障

DOCISIS

用于电缆因特网接入的链路层协议

5.4 交换局域网

交换机运行在链路层,它们使用链路层地址而不是IP地址来转发链路层帧通过交换机网络

5.4.1 链路层寻址和ARP

  • MAC地址

    ​ 并不是主机或路由器具有链路层地址,而是它们的适配器(网络接口)具有链路层地址。具有多个网络接口的主机或路由器也有多个链路层地址,就像它也有多个IP地址一样

    ​ 链路层交换机并没有链路层地址,交换机透明地执行在主机与路由器之间承载数据报的任务

    ​ 链路层地址也叫LAN地址、物理地址、MAC地址

    ​ MAC地址长度6字节,2^48个可能的MAC地址,通常用十六进制表示法,如5C-66-AB-90-75-B1

    ​ MAC地址一般是固定的(也有软件改变适配器MAC地址的可能)

    没有两块适配器有相同的MAC地址,MAC地址空间由IEEE管理,IEEE给公司固定前24个比特,后面24个比特让公司自己去生成

    ​ MAC地址具有扁平接口。比如具有802.11接口的手机总是有相同mac地址,而当主机移动时,IP地址会改变(IP地址是层次结构

    ​ MAC地址像身份证号,IP地址像邮政地址,有层次,会改变

    ​ 当某适配器要向目的适配器发送一个帧时,发送适配器将目的适配器的MAC地址插入该帧,发送到局域网上,适配器可以接受一个并非向它寻址的帧,当适配器接受一个帧时,检查帧中的目的MAC地址与自己的MAC地址是否匹配,若匹配则取出数据报,向上传递,否则丢弃

    ​ 适配器通过MAC广播地址FF-FF-FF-FF-FF-FF来广播

  • 地址解析协议ARP(即插即用的)

    ​ 转换网络层地址和链路层地址,如IP地址和MAC地址的转换

    ​ DNS为因特网中任何地方的主机解析主机名,而ARP只为在同一个子网上的主机和路由器接口解析IP地址

    ​ 每台主机和路由器在内存中有一个ARP表,包含IP地址到MAC地址的映射关系,过期时间20分钟

    ​ 若发送方的ARP表没有目的主机的表项,发送反公用ARP协议来解析这个地址

    ​ 首先发送方构造一个ARP分组,字段包括发送和接受IP地址和MAC地址,ARP查询分组和响应分组格式相同

    ​ 适配器用MAC广播地址发送该ARP查询分组,每个适配器都把ARP分组向上传递给ARP模块,检查自己的IP地址和分组中的目的IP地址是否一致

    ​ 匹配的主机发送回一个ARP响应分组,然后查询主机更新它的ARP表,并发送它的IP数据报

    ​ ARP协议是一个跨越链路层和网络层的协议

  • 发送数据报到子网以外

    ​ 路由器有几个接口,就有几个IP地址、ARP模块和适配器,假设一个路由器连着两个子网A、B

    ​ 子网A中的适配器要发往子网B中的适配器,先通过子网A的ARP把数据报发到子网A跟子网B相连的路由器(目的地址是路由器的MAC),路由器通过子网B的ARP将该数据报转发给目的适配器(目的地址是最终目的地的MAC)

5.4.2 以太网

以太网占领了现有的有线局域网市场,就像因特网之于全球联网的地位

集线器是一种物理层设备,作用于比特而不是帧。当0或1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,并将该比特向其他所有接口传输出去

早期基于集线器星形拓扑以太网,现在位于中心的集线器被交换机所取代。交换机是无碰撞的存储转发分组交换机,运行在链路层

以太网帧结构

数据字段(46~1500字节):承载了IP数据报(如),超过1500字节的数据报需要分片;若小于46字节,需要填充到46字节

目的地址(6字节):目的适配器的MAC地址。当目的适配器收到一个以太网帧,若目的地址是自己的MAC地址或广播地址,将数据字段传给网络层,其他则丢弃

源地址

类型字段:允许以太网复用多种网络层协议

CRC(4字节):差错检测

前同步码(8字节):以太网帧以前同步码开始,前7个字节用于唤醒接收适配器,同步发送方接收方时钟,第8个字节最后两个比特(11)警告目的适配器,重要内容来了

以太网技术向网络层提供不可靠无连接服务。没有通过CRC校验只是丢弃

以太网有时候的确重传了数据,但并不知道正在传输新数据还是旧数据

以太网技术

早期10BASE-2和10BASE-5标准规定两种类型的同轴电缆的10Mbps以太网,每种标准限制在500米,通过转发器得到更长运行距离

BASE表示基带以太网。前面的数字代表速率。T代表双绞线。F代表光纤

100BASE-FX

今天的以太网,结点经点对点由双绞铜线或光纤构成的线段与一台交换机相连

10Gbps以太网,5类UTP线缆

线代交换机是全双工的,一台交换机和一个结点能同时向对方发送帧而没有干扰。在基于交换机的以太局域网中,没有必要使用MAC协议了

5.4.3 链路层交换机

交换机的任务:接收入链路层帧,转发到出链路

交换机自身对子网中的主机和路由器是透明的,主机/路由器向另一个主机/路由器寻址一个帧,顺利将帧发送进局域网,并不知道交换机干

交换机输出接口设有缓存

交换机是即插即用设备,管理员无需配置

交换机是双工的,任何交换机接口能同时发送和接收

转发和过滤

借助于交换机表,包含局域网上某些主机和路由器的表项(MAC地址,通向该地址的交换机接口,表项放置的时间)

假定目的地址为DD-DD-DD-DD-DD-DD的帧从交换机接口x到达,交换机用该MAC地址索引交换机表,有三种可能:

表中没有该地址,交换机广播该帧

表中有表项将该地址与接口x联系起来,过滤掉,因为该帧从x来,DD也通过x去,说明该帧跟DD适配器在同一个局域网段,该帧已经在包含目的地的局域网网段广播过了

表中有表象将该地址与接口y≠x联系起来,该帧需要被转发到与接口y相连的局域网段,放到接口y前的输出缓存,完成转发功能

自学习:表是自动、动态建立的

交换机表初始为空

对于每个接口接收到的每个入帧,交换机在其表中存储

该帧源MAC地址

帧到达的接口

当前时间

一段时间后,交换机没有接受到以该地址作为源地址的帧,在表中删除该地址。如果一台PC被另一台PC代替,原来PC的MAC地址将被清除

链路层交换机的性质
  • 消除碰撞

    交换机缓存帧并且不会在网段上同时传输多于一个帧,交换机提供了比广播链路局域网高的多的性能改善

  • 异质的链路

    交换机将链路彼此隔离,因此局域网中的不同链路能够以不同速率运行,在不同媒介上运行

  • 网络管理

    主动断开异常适配器

    收集带宽使用的统计数据、碰撞率和流量类型,这些信息用来调试解决问题

安全性

交换机毒化:向交换机发送大量不同伪造源MAC地址的分组,用伪造表项填满了交换机表,没有为合法主机留下空间,导致交换机广播大多数帧,被嗅探器俘获到

路由器是第三层的分组交换机,交换机是第二层的分组交换机

交换机:

交换机即插即用,相对高的分钟过滤和转发速率

防止广播帧循环,交换网络的活跃拓扑限制为一颗生成树

大型交换网络要求在主机和路由器中有大的ARP表,生成大量ARP流量和处理量,对广播风暴不提供任何保护,使得以太网崩溃

路由器:

分组不会被限制到生成树上,可以使用源到目的地的最佳路径,拓扑结构更加丰富

对第二层的广播风暴提供了防火墙保护

不是即插即用,需要人为配置IP地址

对分组处理时间较长,因为必须处理第三层字段

5.5链路虚拟化:网络作为链路层

5.5.1多协议标签交换(Multiprotocol Label Switching, MPLS)

采用来自虚电路网络领域的一个关键概念:固定长度标签。其目标是:对于基于固定长度标签和虚电路的技术,在不放弃基于目的地IP数据报转发的基础设施的前提下,当可能时通过选择性地标识数据报并允许路由器基于固定长度的标签转发数据报来增强其功能

图显示了在MPLS使能的路由器之间传输的一个链路层帧。

包括在MPLS首部中的字段是:

标签:预留的3比特实验字段;1比特S字段,用于指示一系列“成栈”的MPLS首部的结束;寿命字段。

一个MPLS加强的帧仅能在两个均为MPLS使能的路由器之间发送。一个MPLS使能的路由器常被称为标签交换路由器,因为它通过在其转发表中查找MPLS标签,然后立即将数据报传递给适当的输出接口来转发MPLS帧。因此,MPLS使能的路由器不需要提取目的IP地址和在转发表中执行最长前缀匹配的查找

MPLS能够并且已经被用于实现所谓虚拟专用网(Virtual Private Network, VPN)。

5.6数据中心网络

每个数据中心都有自己的数据中心网络,这些数据中心网络将其内部主机彼此互联并与因特网中的数据中心互联。数据中心中的主机称为刀片,一般是包括CPU、内存和磁盘存储的商用主机。主机被堆叠在机架上,每个机架一般堆放20~40台刀片。在每一个机架顶部有一台交换机,这台交换机形象地被称为机架顶部(Top of Rank, TOR)交换机,它们与机架上的主机互联,并与数据中心中的其他交换机互联。具体来说,机架上的每台主机都有一块与TOR交换机连接的网卡,每台TOR交换机有额外的端口能够与其他TOR交换机连接。

数据中心网络支持两种类型的流量:在外部客户与内部主机之间流动的流量,以及内部主机之间流动的流量。为了处理外部客户与内部主机之间流动的流量,数据中心网络包括了一台或者多台边界路由器,它们将数据中心网络与公共因特网相连。数据中心网络因此需要将所有机架彼此互联,并将机架与边界路由器连接。

在数据中心内部,外部请求首先被定向到一个负载均衡器。负载均衡器的任务是向主机分发请求,以主机当前的负载作为函数来在主机之间均衡负载。一个大型数据中心通常会有几台负载均衡器,每台服务于一组特定的云引用。由于负载均衡器基于分组的目的端口号以及目的的IP地址做决策,因此它们常被称为“第四层交换机”。一旦接收到一个对于特定应用程序的请求,负载均衡器将该请求分发到处理该应用的某一台主机上。当主机处理完该请求后,向负载均衡器回送响应,再由负载均衡器将其中继发回给外部客户。负载均衡器不仅彭亨主机间的工作负载,而且还提供类似NAT的功能,将外部IP地址转换为内部适当主机的IP地址,然后将反方向流向客户的分组按照相反的转换进行处理。这防止客户直接接触主机,从而具有隐藏网络内部结构和防止客户直接与主机交互等安全益处。

数据中心网络的两个设计趋势是全连接拓扑和模块化数据中心

计算机网络原理 - 网络层、链路层总结笔记相关推荐

  1. 计算机网络 自顶向下(5)链路层——学习笔记

    · 概述: · 结点:任何运行链路了层协议的任何设备.包括主机.路由器.交换机和WiFi接入点. · 链路:沿着通信路径连接相邻结点的通信信道称为链路.数据报必须通过沿端到端路径上各段链路传输. · ...

  2. 计算机网络--网络层/链路层

    网络层:负责地址管理和路由选择: ip协议格式: 地址管理   IP地址:ipv4/ipv6   ipv4-uint32_t ---- 总共不到43e个IP地址,用于在网络中表示唯一主机   我们在上 ...

  3. 【计算机网络】【链路层和局域网-1】

    小白笔记 链路层和局域网目标: ·理解数据链路层服务的原理: ·检错和纠错 ·共享广播信道 ·链路层寻址 ·LAN:以太网.VLANs ·可靠数据传输,流控制:done! ·实例和各种链路层技术的实现 ...

  4. 【计算机网络系列】链路层的差错控制与流量控制

    差错控制 传输差错的特征 差错产生的主要原因 热噪声:传输介质内的分子热运动 冲击噪声:外界干扰 特征 热噪声 : 干扰幅度小,持续性,对模拟通信影响大. 冲击噪声:干扰幅度大,突发性,对数字通信影响 ...

  5. 【计算机网络】【链路层和局域网-2】

    小白笔记 本节学习多点访问协议 多路访问协议 ·单个共享的广播型链路 ·2个或更多站点同时传送:冲突 ·多个节点在同一个时刻发送,则会收到2个或多个信号叠加,这样电磁波叠加在一起,它是不能区分这两个哪 ...

  6. TI_BLE软件开发者指导4——链路层(笔记)

    Texas Instruments CC2540/41 Bluetooth® Low Energy Software Developer's Guide v1.3.2 Document Number: ...

  7. 计算机网络5-详述链路层:封装成帧、透明传输、差错控制、链路层协议(SR GBN ALOHA CSMA PPP HDLC)、滑动窗口

    一.链路层概述 1.基本功能概述 数据链路层主要负责通过一条链路从一个结点向另一个物理链路直接相连的相邻节点传送数据报 即,将其上层网络层交付给其的数据报,安全无差错地传给相邻结点 2.相关术语 节点 ...

  8. 计算机网络原理:链路聚合

    目录 为什么要使用链路聚合 定义: 作用: 分类: 链路聚合注意事项: 为什么要使用链路聚合 因为由于网络规划的复杂性,大型网络设计规划中链路众多,容易出现故障,可靠性不高,难以管理,而且需要更高的带 ...

  9. 计算机网络原理之局域网<复习笔记>

    网络分类 局域网(Local Area Network).广域网是按照网络作用范围划分出来的,这样划分的还有城域网.个人区域网. 广域网作用范围几十到几千公里,是互联网的核心,其任务是通过长距离运送主 ...

  10. 【前端基础】1.计算机网络原理

    重点掌握TCP/IP体系结构,理解自顶而下的计算机网络的分层设计思路 视频链接 一,计算机网络概述 1.1 计算机网络基本概念 1.定义:计算机网络是互联的,自治的计算机的集合. 2.协议(规定或约定 ...

最新文章

  1. presentViewController和pushViewController
  2. 福州大学计算机学院董晨老师,福州大学代表队高分斩获第三届福建省高校网络空间安全大赛冠军...
  3. 数据结构之串:KMP算法
  4. c语言主程序调用子程序数组,perl子程序返回多个数组到主程序中多个数组
  5. HTML静态网页--图片热点
  6. 如何调试 chrome插件
  7. PMP ITTO 和 4W1H
  8. 关于微信小程序·小程序云开发字段搜索
  9. 电脑如何设置uefi启动 电脑设置uefi启动方法
  10. bon app android,Bon App!
  11. CSS3(新增选择器,nth选择器,伪元素)
  12. 逍遥B2C商城源码(PC H5)v1.1.3
  13. OpenInfra峰会首度落地中国,中国OpenStack方兴未艾
  14. PHP获取微信用户手机号
  15. 无线网络边缘“遇上”分布式机器学习讲座:Machine Learning at the Wireless Edge
  16. 《论文写作》思考与总结
  17. Milking Cows UASCO
  18. unity shader中一些常用函数总结
  19. ossutil覆盖_查看选项_命令行工具ossutil_常用工具_对象存储 OSS - 阿里云
  20. 【异常】记录“错误: 找不到或无法加载主类 com.iotsoft.back.iotauthority.ApplicationRun”的解决方案

热门文章

  1. windows系统镜像修复计算机,如何修复:Windows无法在此计算机上查找系统映像
  2. mysql 给库赋权_mysql数据库赋权
  3. PeopleSoft 快捷键
  4. “盲人”马云:骑着盲虎贩卖梦想
  5. oracle追加imp,imp倒入的数据是追加,而不是替换,需要什么参数?
  6. ES 创建太多 buckets 错误: trying to create too many buckets. must be less than or equal to: [100000] but w
  7. Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition论文阅读翻译
  8. JavaScript中的模块化开发
  9. 实战教程:平面设计配色原则
  10. 0x0000050蓝屏srvsys_win7电脑出现蓝屏0x00000050提示srv.sys如何解决