链路层提供的服务
基本服务:
将数据报通过单一通信链路从一个节点移动到相邻节点.
链路层协议能提供的可能服务:
(1). 成帧
帧结构由链路层协议规定.
(2). 链路接入
媒体访问控制协议规定了帧在链路上传输的规则.
(3). 可靠交付
通过确认,重传取得,常用于高差错率链路.目的是本地纠正一个差错,而非依赖上层.
(4). 差错检测和纠正
链路层差错检测和纠正用硬件实现.
差错检测和纠正
差错检测和纠正是以一定概率保证错误识别与纠正.
奇偶校验
添加一个额外检验位,使所有位中1的个数为偶数为偶校验,为奇数为奇校验.
可以检测出数据位发生了奇数个变化的情况.
接收方检测和纠正差错的能力被称为前向纠错(Fec
),可减少重发次数,允许立即纠错.
检验和方法
在检验和技术中,图6-4
的d
比特数据被作为一个k
比特整数的序列处理,一个简单检验和方法是将这k比特整数加起来,用得到的和作为差错检测比特.
一般运输层使用检验和,链路层使用CRC
,运输层差错检测用软件实现,检验和方案简单快速.链路层差错检测在适配器中用专用硬件实现,能快速执行复杂的CRC
.
多路访问链路和协议
点对点链路:
由链路一端的单个发送方和链路另一端的单个接收方组成.
广播链路:
能让多个发送和接收节点都连接到相同的,单一的,共享的广播信道上.
例如:以太网,无线局域网,此时协调多个发送和接收节点对一个共享广播信道的访问.
多路访问协议:
节点通过这些协议来规范它们在共享的广播信道上的传输行为,可将任何多路访问协议划分为3
种类型之一:
(1). 信道划分协议.
(2). 随机接入协议.
(3). 轮流协议.
信道划分协议-时分,频分
时分多路复用,频分多路复用是两种能用于在所有共享信道节点间划分广播信道带宽的技术.
设一个支持N
个节点的信道且信道的传输速率为R bps
,TDM
将时间划分为时间帧,进一步划分每个时间帧为N
个时隙,每个时隙分配给N
个节点中的一个.
无论何时,某个节点在有分组要发送时,它在循环的TDM
帧中指派给它的时隙内传输分组比特.
每个节点在每个帧时间得到专用传输速率R/N bps
.
FDM
将R bps
信道划分为不同的频段,把每个频段给N
个节点中一个.
随机接入协议-具有碰撞检测的载波侦听多路访问(CSMA/CD)
节点检测到碰撞后放弃继续传输.
分析CSMA/CD
协议前,从与广播信道相连的适配器角度总结它的运行.
(1). 适配器从网络层一侧获得数据报,准备链路层帧,将其放入帧适配器缓存.
(2). 适配器侦听到信道空闲,开始传输帧.适配器侦听到信号忙,等待,直到侦听到空闲,开始传输.
(3). 传输过程中,适配器监视来自其他使用该广播信道的适配器的信号能量的存在.
(4). 如适配器传输整个帧而未检测到其他适配器的信号能量,该适配器就完成了该帧的传输.另一方面,如适配器在传输时检测到来自其他适配器的信号能量,它中止传输.
(5). 中止传输后,适配器等待一个随机时间量,返回步骤2
.
二进制指数后退:
当传输一个给定帧时,该帧经历了一连串的n
次碰撞后,节点随机地从(0,1, ... , 2^n-1)
中选择一个值k
.
对以太网,一个节点等待的实际时间量是k*发送512比特到以太网所需时间
.
轮流协议-轮询,令牌
(1). 轮询协议
要求这些节点之一要被指定为主节点,主节点以循环方式轮询每个节点.
(2). 令牌传递协议
无主节点,一个称为令牌的小的特殊帧在节点间以某种固定次序交换.当一个节点收到令牌时.仅当它有一些帧要发送时,才持有该令牌.否则,向下一个节点转发该令牌.
链路层寻址和ARP
主机和路由器的适配器(网络接口)都具有链路层地址,即MAC
地址.ARP
用于将IP
地址转换为链路层地址.
MAC地址
链路层地址可称为LAN
地址/物理地址/MAC
地址.
对多数局域网,Mac
地址长度为6
字节,每个适配器的Mac
地址唯一.
Mac
广播地址:所有比特位皆为1
.
地址解析协议
假设IP
地址为222.222.222.220
的主机要向主机222.222.222.222
发送IP
数据报.为发送数据报,该源必须向它的适配器不仅提供IP
数据报,且提供目的主机的MAC
地址.
在发送主机的ARP
模块将取在相同局域网上的任何IP
地址作为输入,返回相应的MAC
地址.
ARP
只为在同一个子网上的主机和路由器接口解析IP
地址对应的MAC
地址.
每台主机或路由器在内存有一个ARP
表:
这张表包含IP
地址到MAC
地址的映射关系.一个表项放置到某ARP
表中开始,一个表项通常的过期时间是20
分钟.
222.222.222.220
向它的适配器传递一个ARP
查询分组,且指示适配器用MAC
广播地址来发送这个分组.
适配器在链路层帧中封装这个ARP
分组,用广播地址作为帧的目的地址,将帧传输进子网中.包含该ARP
查询的帧可被子网上的所有其他适配器接收到,每个适配器都把在该帧中的ARP
分组向上传递给ARP
模块.每个ARP
模块检查它的IP
地址是否与ARP
请求分组中的目的地址匹配.匹配时给查询主机发送回一个带有所希望映射的响应ARP
分组.查询主机更新它的ARP
表,之后可正常发送IP
数据报.
发送数据报到子网以外
路由器的每个接口有一个IP
地址,一个适配器(有一个MAC
地址).
考察111.111.111.111
向222.222.222.222
发送一个IP
数据报,发送主机帧的目的地MAC
地址为路由器接口111.111.111.110
的适配器地址(发送主机可通过ARP
获得),发送主机帧中目的IP
地址仍为222.222.222.222
.
路由器查询其转发表,将帧由接口111.111.111.110
进入的帧转发到接口222.222.222.220
,接口222.222.222.220
把数据报封装到一个新的帧,目的MAC
地址设为最终MAC
地址(通过ARP
获得).
以太网
以太网是目前最流行的有线局域网技术.
使用总线拓扑的以太网是广播局域网,所有传输的帧传送到与该总线连接的所有适配器并被其处理.
集线器是一种物理层设备,作用于各个比特而不是作用于帧.表示一个0或一个1的比特到达一个接口时,集线器只是重新生成这个比特,将其能量强度放大,将该比特向其他所有接口传输出去.采用基于集线器的星形拓扑的以太网也是一个广播局域网.集线器在多个接口收到帧时,发生碰撞.
交换机用于替代集线器,运行在第二层.可以多个接口同时接收帧和转发,不会碰撞.
以太网帧结构
考虑从一台主机向另一台主机发送一个IP数据报且两台主机在相同的以太局域网,以太网帧的6个字段.
(1). 数据字段
这个字段承载了IP
数据报,以太网的最大传输单元是1500
字节.如IP
数据报超过了1500
字节,主机必须将该数据报分片.数据字段的最小长度是46
字节.
IP数据报首部的长度字段准确记录了数据报长度(可用于去除链路层填充).
(2). 目的地址(6
字节)
包含目的适配器的MAC
地址.
(3). 源地址(6
字节)
(4). 类型字段(2
字节)
类型字段允许以太网复用多种网络层协议,IP
和其他链路层协议都有各自的,标准化的类型编号.
(5). CRC
(4
字节)
CRC
字段的目的是使得接收适配器(适配器B
)检测帧中是否引入了差错.
(6). 前同步码(8
字节)
以太网帧以一个8
字节的前同步码字段开始,该前同步码的前7
字节的值都是10101010
,最后一个字节是10101011
.前7
个字节用于使接收适配器的时钟和发送方的时钟同步.
所有以太网技术向网络层提供无连接服务,以以太网技术都向网络层提供不可靠服务.适配器B
收到来自适配器A
的帧,对该帧进行CRC
校验.通过时,不发送确认帧.没通过,也不发送否定确认帧,只是丢弃.
以太网技术
以太网的CSMA/CD
协议很好解决了多路访问问题.
今天多数安装中,节点经点对点的由双绞铜线,光纤线缆构成的线段与一台交换机相连.
在总线拓扑和基于集线器的星形拓扑技术时代,以太网是广播链路,用CSMA/CD
解决共享冲突.
今天基于交换机的星形拓扑,采用的是存储转发分组交换.交换机协调其传输,任何时候不会向相同接口转发多个帧,交换机是全双工的.基于交换机的以太局域网无碰撞,不需要CSMA/CD
协议.
链路层交换机
交换机自身对子网中的主机和路由器是透明的,某主机/路由器向另一个主机/路由器寻址一个帧,顺利将帧发进局域网,不知道某交换机将会接收该帧并将它转发到另一个节点.
交换机转发和过滤
过滤是决定一个帧应转发到某个接口还是应当将其丢弃.转发是决定一个帧应被导向那个接口,并把该帧移动到那些接口的交换机功能.
交换机的过滤和转发借助于交换机表完成.交换机表的一个表项包含:
一个MAC
地址,通向该MAC
地址的交换机接口,表项放置在表中的时间.
假定目的地址为DD-DD-DD-DD-DD-DD
的帧从交换机接口x
到达,交换机用MAC
地址DD-DD-DD-DD-DD-DD
索引它的表.有3
种可能的情况:
(1). 表中没有对应DD-DD-DD-DD-DD-DD
的表项
交换机向除接口x
外的所有接口转发该帧的副本.
(2). 表中有一个表项将DD-DD-DD-DD-DD-DD
与接口x
联系起来
丢弃.
(3). 表中有一个表项将DD-DD-DD-DD-DD-DD
与接口y
(!=x
)联系
转发到接口y
.
自学习
交换机的表是自动,动态和自治地建立的.交换机的自学习以如下方式实现:
(1). 交换机表初始为空
对于在每个接口接收到的每个入帧,该交换机在其表中存储
a. 该帧源地址字段中的MAC地址.
b. 该帧到达的接口.
c. 当前时间.
(2). 如果在一段时间后,交换机没收到以该地址作为源地址的帧,就在表中删除这个地址.
链路层交换机的性质
(1). 消除碰撞
交换机缓存帧,不会在网段上同时传输多于一个帧.交换机的最大聚合带宽是该交换机所有接口速率之和.
(2). 异质的链路
局域网的不同链路能以不同速率运行在不同媒体,连接到同一交换机.
(3). 管理
自己配置和管理,收集带宽使用的统计数据,碰撞率,流量类型,使这些信息为网络管理者使用.
回顾:Web页面请求历程
6.7.1 准备:DHCP, UDP, IP和以太网
设Bob
启动它的便携机,用一根以太网电缆连到学校的以太网交换机,交换机又与学校的路由器相连.学校的路由器与一个ISP
连接
.本例中ISP
为comcast.net
,comcast.net
为学校提供DNS
服务,假设DHCP
服务器运行在路由器中.
(1).获取本机IP
地址.
Bob
首先将其便携机与网络连接时,Bob
便携机采取的一个网络相关动作是运行DHCP
协议,以从本地DHCP
服务器获得一个IP
地址及其他信息.
DHCP
过程:
a. Bob
便携机上的操作系统生成一个DHCP
请求报文,将这个报文放入具有目的端口67
(DHCP
服务器)和源端口68
(DHCP
客户)的UDP
报文段.该UDP
报文段,被放置在一个具有广播IP
目的地址(255.255.255.255
)和源IP
地址(0.0.0.0
)的IP
数据报中.
b. 包含DHCP
请求报文的IP
数据报被放置在以太网帧中,该以太网帧具有目的MAC
地址FF:FF:FF:FF:FF:FF
,使该帧将广播到与交换机的所有设备(如顺利,包括DHCP
服务器).该帧的源MAC
地址是Bob
便携机的MAC
地址00:16:D3:23:68:8A
.
c. 包含DHCP
请求的广播以太网帧是第一个由Bob
便携机发送到以太网交换机的帧,该交换机在所有的出端口广播入帧,包括连接到路由器的端口.
d. 路由器在它的具有MAC
地址00:22:6B:45:1F
的接口接收到该广播以太网帧,该帧中包含DHCP
请求,且从该以太网帧中抽取出IP
数据报.该数据报的广播IP
目的地址和路由器的ip
匹配.因此数据报的载荷被分解,向上到达UDP
.DHCP
请求报文从此UDP
报文段抽取出来
e. DHCP
服务器有了DHCP
请求报文
设运行在路由器中的DHCP
服务器以CIDR
块68.85.2.0/24
分配IP
地址,所以本例中,学校内使用的所有IP
地址都在comcast
地址块中.
假设DHCP
服务器分配地址68.85.2.101
给Bob
的便携机.DHCP
服务器将这个分配的IP
地址,DNS
服务器的IP
地址(68.87.71.226
),默认网关路由器的IP
地址(68.85.2.1
)和子网块(68.85.2.0/24
)等信息写入一个DHCP ACK
报文.该DHCP
报文被放入一个UDP
报文段,UDP
报文段被放入一个IP
数据报中,IP
数据报再被放入一个以太网帧中.这个以太网帧的源MAC
地址是路由器连到归属网络时接口的MAC
地址(00:22:6B:45:1F:1B
),目的MAC
地址是Bob
便携机的MAC
地址(00:16:D3:23:68:8A
).
f. 包含DHCP ACK
的以太网帧由路由器发送给交换机,交换机是自学习的,且先前从Bob
便携机收到(包含DHCP
请求的)以太网帧,所以该交换机知道寻址到00:16:D3:23:68:8A
的帧,仅从通向Bob
便携机的输出端口转发.
g. Bob
便携机接收到包含DHCP ACK
的以太网帧,从该以太网帧中抽取IP
数据报,从IP
数据报中抽取UDP
报文段.从UDP
报文段抽取DHCP ACK
报文.Bob
的DHCP
客户端则记录下它的IP
地址和它的DNS
服务器的IP
地址,及其IP
转发表中会安装的默认网关的地址.
Bob
便携机会向该默认网关发送目的地址为其子网68.85.2.0/24
以外的所有数据报.此时,Bob
便携机已经初始化好它的网络组件,并准备开始处理Web
网页获取.
仍在准备:DNS和ARP
当Bob
将www.google.com
的URL
键入其Web
浏览器时,他开启了一长串事件,这将导致谷歌主页最终显示在其Web
浏览器上.
Bob
的Web
浏览器通过生成一个TCP
套接字开始了该过程,套接字用于向www.google.com
发送HTTP
请求.为了生成该套接字,Bob
便携机将需要知道www.google.com
的IP
地址,使用DNS
协议提供这种名字到IP
地址的转换服务.
DNS
过程:
(1). Bob
便携机上的操作系统因此生成一个DNS
查询报文,将字符串www.google.com
放入DNS
报文的问题段.该DNS
报文则放置在一个具有53
号(DNS
服务器)目的端口的UDP
报文段中.该UDP
报文段则被放入具有IP
目的地址68.87.71.226
(在第5
步中DHCP ACK
返回的DNS
服务器地址)和源IP
地址68.85.2.101
的IP
数据报中.Bob
便携机将包含DNS
请求报文的数据报放入一个以太网帧中,该帧将发送到Bob
学校网络中的网关路由器,Bob
便携机经过上述第5
中中的DHCP ACK
报文知道了学校网关路由器的IP
地址(68.85.2.1
)
但仍然不知道该网关路由器的MAC
地址.
路由转发前,需先将帧传递到网关路由器.若只知道网关路由器的IP
地址,不知其MAC
地址.需借助ARP
得到其MAC
地址.
为获得网关路由器的MAC
地址,Bob
便携机将需要使用ARP
协议.
(1). Bob
便携机生成一个具有目的IP
地址68.85.2.1
(默认网关)的ARP
查询报文,将该ARP
报文放置在一个具有广播目的地址(FF:FF:FF:FF:FF:FF
)的以太网帧中,向交换机发送给以太网帧,交换机将该帧交付给所有连接的设备,包括网关路由器.链路层广播会将帧通过交换机发给子网内每个对象.
(2). 网关路由器在通往学校网络的接口上接收到包含该ARP
查询报文的帧,发现在ARP
报文中目标IP
地址68.85.2.1
匹配其接口的IP
地址,网关路由器因此准备一个ARP
回答.指示IP
地址68.85.2.1
对应的MAC
地址为00:22:6B:45:1F:1B
.它将ARP
回答放在一个以太网帧中,其目的地址为00:16:D3:23:68:8A
,并向交换机发送该帧,再由交换机将帧交付给Bob
便携机.
(3). Bob
便携机接收包含ARP
回答报文的帧,并从ARP
回答报文中抽取网关路由器的MAC
地址00:22:6B:45:1F:1B
.
(4). Bob
便携机现在能使包含DNS
查询的以太网帧寻址到网关路由器的MAC
地址,该帧的IP
数据报有IP
目的地址68.87.71.226
(DNS
服务器),该帧具有目的地址00:22:6B:45:1F:1B
(网关路由器).Bob
便携机向交换机发送该帧,交换机将该帧交付给网关路由器.
仍在准备:域内路由选择到DNS服务器
(1). 网关路由器接收该帧并抽取包含DNS
查询的IP
数据报,路由器查找该数据报的目的地址(68.87.71.226
),并根据其转发表决定该数据报应当发送到图6-23
的Comcast
网络中最左边的路由器.IP
数据报放置在链路层中,该链路适合将学校路由器连接到最左边Comcast
路由器且该帧经过这条链路发送.
(2). 在Comcast
网络中最左边的路由器接收到帧,抽取IP
数据报,检查该数据报的目的地址(68.87.71.226
),并根据其转发表确定出接口,经过该接口朝着DNS
服务器转发数据报,而转发表已根据Comcast
的域内协议(如RIP, OSPF
或IS-IS
)及因特网的域间协议BGP
所填写.
(3). 最终包含DNS
查询的IP
数据报到达了DNS
服务器,DNS
服务器抽取出DNS
查询报文.在它的DNS
数据库中查找名字www.google.com
,找到包含对应www.google.com
的IP
地址(64.233.169.105
)的DNS
源记录.这种缓存数据源自于google.co
m的权威DNS
服务器,该DNS
服务器形成一个包含这种主机名到IP
地址映射的DNS
回答报文.将该DNS
回答报文放入UDP
报文段,该报文段放入寻址到Bob
便携机的IP
数据报中.该数据报将通过Comcast
网络反向转发到学校的路由器并从这里经过以太网交换机到Bob
便携机.
(4). Bob
便携机从DNS
报文抽取出服务器www.google.com
的IP
地址.
Web客户-服务器交互:TCP和HTTP
(1). Bob
便携机有了www.google.com
的IP
地址,它能够生成TCP
套接字,该套接字将用于向www.google.com
发送HTTP GET
报文.当Bob
生成TCP
套接字时,在Bob
便携机中的TCP
必须首先与www.google.com
中的TCP
执行三次握手.Bob
便携机因此首先生成一个具有目的端口80
(针对HTTP
的)的TCP SYN
报文段,将该TCP
报文段放置在具有目的IP
地址64.233.169.105
(www.google.com
)的IP
数据报中,将该数据报放置在MAC
地址为00:22:6B:45:1F:1B
(网关路由器)的帧中并发送该帧.
(2). 在学校网络,Comcast
网络和谷歌网络中的路由器朝着www.google.com
转发包含TCP SYN
的数据报,使用每台路由器中的转发表,支配分组经Comcast
和谷歌网络间域间链路转发的路由器转发表项,由BGP
协议决定.
(3). 包含TCP SYN
的数据报到达www.google.com
,从数据报抽取出TCP SYN
报文并分解到与端口80
相联系的欢迎套接字.对谷歌HTTP
服务器和Bob
便携机间的TCP
连接生成一个连接套接字,产生一个TCP SYNACK
报文段.将其放入向Bob
便携机寻址的一个数据报中,最后放入链路层帧中,该链路适合将www.google.com
连接到其第一跳路由器.
(4). 包含TCP SYNACK
报文段的数据报通过谷歌,Comcast
和学校网络,最终到达Bob
便携机的以太网卡.数据报在操作系统中分解到相应的TCP
套接字,从而进入连接状态.
(5). 借助于Bob
便携机上的套接字,现在准备向www.google.com
发送字节了,Bob
浏览器生成包含要获取的URL
的HTTP GET
报文.HTTP GET
报文则写入套接字,其中GET
报文称为一个TCP
报文段的载荷,该TCP
报文段放置进一个数据报中,并交付到www.google.com
.
(6). 在www.google.com
的HTTP
服务器从TCP
套接字读取HTTP GET
报文,生成一个HTTP
响应报文,将请求的Web
页内容放入HTTP
响应体中,并将报文发送进TCP
套接字中.
(7). 包含HTTP
回答报文的数据报通过谷歌,Comcast
和学校网络转发,到达Bob
便携机.Bob
的Web
浏览器程序从套接字读取HTTP
响应,从HTTP
响应体中抽取Web
网页的html
,最终显示了Web
网页.