2.4寻址(Addressing)
2.4.1MAC寻址
地址解析协议ARP:将IP地址转换为链路层地址
MAC地址:链路层地址,也叫LAN地址,物理地址
32位的IP地址:
- 网络层地址的接口
- 用于第三层(网络层)转发
MAC(或局域网或物理或以太网)地址:
- 功能:用于“本地”从一个接口到另一个物理连接的接口(相同的网络,在ip寻址意义上)
- 48位(6字节,2^48种可能地址)MAC地址(大多数局域网)刻录在网卡ROM中,有时也可通过软件设置
- 链路层地址不在主机或路由器当中,而是在他们的适配器当中
- IEEE管理MAC地址(保证地址不会重复)
- 制造商购买部分MAC地址空间(以确保唯一性)
- 扁平结构–MAC地址不会随位置改变(不像IP地址层次结构,随位置改变)
- 适配器可以接收并非向他寻址的帧,适配器接收到帧时会检查该帧MAC地址是否与自己MAC地址相同,相同就取出封装的网络层数据报,不同就丢弃
2.4.2ARP:地址解析协议
- 局域网中的每个IP节点(主机、路由器)都有一个ARP表
- ARP表:一些局域网节点的IP/MAC地址映射:
- < IP address; MAC address; TTL>
- TTL(Time To Live):地址映射被遗忘的剩余时间(通常是20分钟)
如果发送方的ARP表中没有接收方的表项:
- 构造ARP分组(ARP packet)
- 广播ARP查询分组,MAC广播地址(FF-FF-FF-FF-FF-FF)
- 目的主机接收查询分组后通过响应分组返回MAC地址,有相同格式
注意:
- 查询ARP报文在广播帧发送,响应ARP报文在标准帧发送
- ARP表自动建立,不需要网络管理员配置
- ARP既是链路层协议也是网络层协议
2.4.3发送数据报到子网外
- 发送端A向B发送数据报
- 首先发给路由器接口111.111.111.110,对于该帧来说MAC地址为E6-E9-00-17-BB-4B
- 路由器适配器看到MAC地址与自己相同,把数据报传到网络层
- 根据路由器转发表选择转发接口
- 该接口把数据报传递给他的适配器,适配器把数据报封装成新的帧,此时该帧的MAC地址为最终MAC地址
注意:每台主机只有一个IP地址和适配器,而路由器每个接口都有IP地址、适配器和ARP模块
2.5以太网
2.5.1以太网物理结构
总线: 90年代中期流行
星型: 中间有交换机(switch),无碰撞,储存转发分组
2.5.2以太网帧结构
发送适配器封装的IP数据报(或其他链路层协议包)在以太网帧内 Ethernet frame
Preamble-前同步码: 8字节,奇案字节都是10101010,第8字节是10101011,前7字节唤醒适配器,同步发送方时钟速率,第8字节后两位(第一个连续的11)提醒重要内容将要到达
dest Addresses-目的地址: 6字节 目的地MAC地址,目的主机适配器检查MAC地址,与自己相同或者是广播地址就上传网络层,其余MAC地址就丢掉帧
sourceAddress-源地址: 6字节,字面意思
Type-类型字段: 2字节,表示更高的层协议(主要是IP,但其他可能被支持,如Novell IPX和AppleTalk)
data-数据: 46~1500字节,IP数据报,以太网最大传输单元(MTU)是1500字节,超过就要分片,少于46字节就要填充
CRC-循环冗余检测: 使接受适配器检测帧是否有差错
所有以太网技术向网络层提供无连接服务
无连接:发送和接收网卡之间没有握手’
不可靠:接收网卡不发送确认帧acks和否定确认帧 nacks
2.5.3以太网技术CSMA/CD
以太网使用CSMA/CD带有二进制指数后退(binary exponential back off)
- 无时隙
- 如果适配器感知到其他适配器正在传输,则适配器不进行传输,即载波监听
- 当传输适配器感觉到另一个适配器正在传输时,传输适配器将中止,即冲突检测
- 在尝试重新传输之前,适配器等待一个随机时间,即随机访问
重点看书99,100页!
2.6链路层交换机
2.6.1集线器(hub)
集线器本质上是物理层中继器
- 来自一个链路的比特会输出到所有其他链路
- 同样的速度(rate)
- 没有帧缓冲
- 在集线器没有CSMA/CD:适配器检测冲突
- 提供网络管理功能
工作原理:
曼彻斯特编码(Manchester encoding):
- 在10BaseT使用(见书311-以太网技术)
- 每个比特都有一个转换
- 允许发送和接收节点中的时钟彼此同步
- 物理层
互相连接的集线器
- 骨干网集线器连接局域网段
- 扩展节点之间最大距离
- 但是单个的分段碰撞域成为一个大的碰撞域
- 不能连接10BaseT和100BaseT
2.6.2以太网交换机
链路层设备,起到积极作用:
- 存储,转发以太网帧(有缓存)
- 检查传入帧的MAC地址,有选择地将帧转发到一个或多个出链路,使用CSMA/CD远程访问
透明:
- 主机不知道交换机的存在
即插即用,自学plug-and-play, self-learning:
- 交换机不需要配置
2.6.2.1交换机转发和过滤
过滤(filtering): 决定一个帧是应该转发到某个接口还是应该丢弃
转发(forwarding): 决定一个帧应该转发到哪个接口,并转发
转发和过滤借助于交换机表(switch table)
交换机表包括但不必全部包括局域网内主机和路由器的表项,一个交换机表项应该包括:
- 一个MAC地址
- 通向该MAC地址的交换机接口
- 表项放置在表中的时间
2.6.2.2交换机的自学习
交换机自主学习哪些主机可以通过哪些接口到达:
- 交换机表开始为空
- 对于每个接口接收到的每一个帧,交换机在交换机表中储存:
1.该帧源地址字段的MAC地址
2.该帧到达的接口
3.当前时间 - 如果在一段时间之后(老化期(aging time)),交换机没有收到以该地址作为源地址的帧,在表中清除该表项
即插即用设备:Plug and Play Devices
自学习交换器可以连接在一起
交换机是双工的,无MAC地址,上图A发送送到G是可以通过自学习实现的,一个接口可以对应多个MAC地址
2.6.2.3交换机和路由器的比较
都进行储存-转发(store-and-forward):
路由器:网络层设备(检查网络层报头)
交换机:链路层设备(检查链路层报头)
它们都有转发表:
路由器:使用路由算法计算表,IP地址
交换机:学习转发表使用泛洪,学习,MAC地址
流量隔离、即插即用、优化路由、抄近路
2.6.3虚拟局域网VLAN
现代机构的局域网常常配置为等级结构,每个工作组有自己的交换局域网,经过一个交换机等级结构与其他工作组的交换局域网互联
缺点:
- 缺乏流量隔离
- 交换机的无效使用
- 管理用户
虚拟局域网络
支持VLAN功能的交换机可以配置为在单个物理LAN基础设施上定义多个虚拟LAN。
基于端口的VLAN Port-based VLAN
交换机端口分组(通过交换机管理软件)使单个物理交换机…
…作为多个虚拟交换机运行
跨越多个交换机的:跨越多个交换机的VLANs
VLAN干线连接(VLAN trunking)
每台交换机上的特殊端口配置为干线端口(左16,右1),此端口属于所有VLAN,但是交换机不知道干线端口的帧属于哪个VLAN,所以IEEE定义拓展以太网帧格式——802.1 Q(携带VLAN ID),802.1q协议为中继端口之间转发的帧添加/删除额外的报头字段
802.1Q VLAN帧构成:
左:2字节标签协议标识(取值:81-00)
下:Tag Control Information(12位VLAN ID字段,3位优先级字段,类似IP TOS)
右:重新计算的CRC
- 当 B1 向 VLAN2 工作组内成员发送数据时,工作站 B2 和 B3 将会收到广播的信息。
- B1 发送数据时,工作站 A1, A2 和 C1都不会收到 B1 发出的广播信息。
- 虚拟局域网限制了接收广播信息的工作站数,使得网络
不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。
100BASE-T:
100代表100 Mb/s以太网
BASE代表基带以太网(物理媒介仅承载以太网流量)
T代表双绞铜线
2.7PPP点对点通讯协定 (Point-to-Point Protocol)
2.7.1点对点数据链路控制
一个发送者,一个接收者,一个链接:比广播链接容易:
- 没有媒体访问控制( Media Access Control,MAC)
- 不需要显式MAC寻址
- 例如,拨号链路,ISDN线路
流行的点对点DLC(Data Link Control)协议:
- HDLC: High level data link control----高级数据链路控制协议
- PPP point-to-point protocol-------------点对点通讯协定
数据链路层传送的是帧
2.7.2数据链路层:三个基本问题
(1) 封装成帧
(2) 透明传输
(3) 差错控制
2.7.3PPP 协议的组成
- 1992 年制订了 PPP 协议。经过 1993 年和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准[RFC 1661]。
- PPP 协议有三个组成部分 :
- 一个将 IP 数据报封装到串行链路的方法
- 链路控制协议 LCP (Link Control Protocol)
- 网络控制协议 NCP (Network Control Protocol)
PPP设计要求:
packet framing: encapsulation of network-layer datagram in data link frame
- carry network layer data of any network layer protocol (not just IP) at same time
- ability to demultiplex upwards----有向上拆分的能力
bit transparency(比特透明): must carry any bit pattern in the data field
error detection (no correction)
connection liveness: detect(检测), signal link failure to network layer
network layer address negotiation(协商): endpoint can learn/configure(配置) each other’s network address
PPP 无需求
- 没有差错检测,纠正
- 没有流量控制
- 交付错误——没问题
- 不需要支持多链路(例如轮询polling)
错误恢复,流控制,数据重新排序所有交给更高的层解决!
2.7.4ppp数据帧
- Flag: delimiter(定界符) (framing)
- Address: does nothing (only one option)
- Control: does nothing; in the future possible multiple control fields
- Protocol: upper layer protocol to which frame delivered (eg, PPP-LCP, IP, IPCP, etc)
- info: upper layer data being carried
- check: cyclic redundancy check for error detection
2.7.5字节填充Byte Stuffing
在PPP中01111110是数据帧标志字段(flag),在帧首帧尾,如果信息域(info)里也有01111110会导致帧提前结束,PPP透明性要求不能限制高层协议数据的位模式,此时就需要字节填充。
原理: 在除flag字段的01111110前加一个01111101(转义字符),如果01111101出现在信息域内,则在01111101再加一个01111101证明后面的是实际数据部分,接收端收到数据后去除转义字符还原成原数据
2.7.6PPP数据控制协议
在交换网络层数据之前,数据链路对等体必须:
- 配置PPP链路(最大帧长度、身份验证)
- 了解/配置网络层信息:for IP:携带IPCP (IP Control Protocol) 消息 (Protocol field: 8021)配置/学习IP地址