链路层主要解决了一个两个nodes之间的传输问题. 比如一段路程中, 从火车的一端到另外一端.
链路层的功能在适配器上实现(Network interface card NIC). 比如802.11网卡
单个共享的广播型链路, 会有冲突collision, 解决collision大概有三种方案
有频分以及时分,但是二者都有相同的问题, 就是每个node只有R/N bps. 对于时分来说, 每个node还必须等待.
还有这用叫码分, 就是通过assign a differnet code to each node, 就像不同人使用不同语言说话一样解决collision的问题
这个Protocol之下, each node transmits at the full rate, 当有冲突, 随机重传
Slotted ALOHA
所有的frame都是等长的, 时间被划分成相等的时隙, 每个时隙可以发送一帧, 如果两个或者多个节点在一个时隙传输, 所有站点都能检测到冲突, 会重新随机选择一个时间重传
最好的情况: 信道的利用率为37%
ALOHA
没有时隙的概念, 当有frame需要传输, 马上传输, 这样简单, 但是会导致冲突概率的增加
最好的情况: 信道的利用率为17.5%
CSMA/CD
在传输前先侦听信道, 如果侦听到信道空闲, 传送增高帧, 如果侦听信道忙, 推迟传送. 如果推迟发送, 适配器会进入指数退避状态, 在第m次失败后,适配器随 机选择一个{0,1,2,… 2^m-1}中K,等待K*512位时 ,然后发送
最好的情况: 信道的利用率为100%
一种是需要专门的master去分配turn, 这种会带来single point of failure的问题; 另外一种就是分布式的, 通过token-passing Protocol, 但是如果一个node出错了, 也会影响这个channel
线缆接入使用了多点访问协议, 也就是上面讲到的Protocol
这个system是CMTS cable modem termination system
Downstream 下行使用的是广播, 没有collision的问题
Upstream 上行使用的是多路访问
这里, 上行channel被分为多个时隙TDM-like, CMTS会通过MAP的message告诉每个channel什么时候可以用这些时隙. 那么, CMTS怎么知道cable modems有数据需要传输呢? 这个通过cable modems send mini-slot-request frames to the CMTS实现的, 这些mini-slot-request是transmitted in a random access manner so may collide with each other, 然后通过csma/ca类似的方法, 指数退避, 再重新发送
这里的局域网就不需要用到上面讲的多路访问的技术了, 而是用到更加好的switch交换机实现多路通信
在局域网上, 每个适配器都有一个唯一的MAC地址 (switch不需要MAC地址), 如果是广播, 地址是FF-FF-FF-FF-FF-FF
MAC地址是IEEE管理分配的, 就像social security nubmer一样; 这个跟IP不同, mac地址是跟着适配器不变的
ARP是IP和MAC地址的对应的表格, 通过IP地址可以找到MAC地址. 一开始这个表格是空的, 所以通过IP地址, 找不到对应的MAC地址, 这时候需要广播, 问这个IP的地址MAC地址是什么, 对应的IP收到之后, 把自己的MAC地址返回.
这个表格跟DNS类似, 不过ARP运行在subnet子网上
这个协议是网络层以及链路层之间的协议
在子网中传输是通过MAC地址的, 但是client sends reqeust to host给的不是host的MAC地址, 而是client所在子网的MAC地址, subnet子网会重新把下一个去的子网的route inerface的MAC找到写到data上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4WZ0tTE-1685654789745)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4fbaa96b-ff98-4c71-899b-a9023ff46573/Untitled.png)]
如图,
以太网是目前局域网使用最多的技术. 其发展是通过BUS → CSMA/CD → HUB → SWITCH
传输
发送方适配器在以太网帧中封装IP数据报, 或其他网络层协议数据单元
无连接不可靠的服务
作用是转发和过滤, swtich会有一个swtich table, 记录mac地址, interface, time, 通过这个swtich table, swtich实现转发和过滤功能.
记录的mac地址是发过来的mac地址, 也就是src的mac地址, interface也是src的interface, time是到达swtich的时间. 那么怎么找到destination呢, 首先先看看switch table有没有记录destination的mac地址, 如果有就使用, 如果没有就广播 (避免cycling, 只会在生成树上广播)
swtich table是不需要配置的, self-learning; 对比router, router需要配置
虽然router也有转发的功能, 但是swtich是通过mac而router是通过ip, 而且swtich是子网内部的功能
一个物理的LAN被虚拟成多个LANs, 也就是一个交换机提供多个局域网
这章讲了链路层的功能, 对于多点访问的需要做冲突避免, 技术包括了channel partition, random access (CSMA/CD), taking turns. 然后讲了局域网, 使用了交换机的技术就变成了点到点的传输, 不需要做冲突避免, ARP (Address Resolution Protocol) 可以让client通过ip地址找到mac地址, 然后具体讲了局域网怎么传数据的, 要记住的是mac地址不是src的mac地址, 而是子网subneet路由的mac地址. 之后介绍了局域网使用的技术, 以太网以及还讲了VLANS