数据链路层(以太网+以太网帧格式+访问控制方式+ARP协议)

数据链路层(以太网+以太网帧格式+访问控制方式+ARP协议) 首先要清楚的是真正在网络中跑的报文其实都是数据帧IP报文是要给到数据链路层的认识以太网以太网不是一种具体的网络而是一种技术标准它完整规定了物理层介质和信号、数据链路层的帧格式以及介质访问控制方式CSMA/CD或全双工。只要这三者中的核心规范尤其是访问控制方式和帧格式有一个不符就不是标准以太网。平常听到的以太网规定了网络拓扑结构、传输速率等也是对的。但是要清楚网络拓扑结构、传输速率这些并不是以太网的硬性规定也就是说不是使用了它们所以使用的局域网就是以太网没法成为以太网的身份认证因为它们是衍生结果比如网络拓扑结构它是以太网物理层介质选择结果是因为以太网物理层使用了这种介质所以使用的这种网络拓扑结构以太网是当前应用最广泛的局域网技术和以太网并列的还有令牌环网、无线LAN等以太网帧格式目的地址和源地址就是mac地址网卡的硬件地址类型字段有三个值分别为 IP0800、ARP0806、RARP8035帧末尾是CRC校验码帧的总长度有限制数据部分得在46字节-1500字节之间上图中的 PAD 就是填充部分主要作用就是将数据部分扩充到46字节接收方如何分离报头和有效载荷目的地址和源地址作为mac地址是固定大小的固定长度的首和尾根据长度直接分离就好接收方如何分用类型就会告诉接收方到底是交付给网络层还是arprarp访问控制方式CSMA/CD要发送的主机准备发送前先听信道是否有载波信道空闲后必须连续听满 96 比特IFG且在此期间不能听到任何杂音才敢发一旦在此期间听到载波计时器立即归零重新开始监听直到载波消失重新等待96比特载波就是网线上跑的电网卡开始发送数据帧后会采用边发边听的措施冲突检测它会持续做两件事发送自己的信号把数据帧的比特流转换成电信号或光信号推到线缆上。监听线缆上的信号实时比对线缆上的信号波形与自己的发送波形是否一致。如果监听到的信号与自己的信号一致就代表没有发生碰撞网卡会持续发送完整个数据帧如果监听到的信号与自己的信号不一致就会立即停止发送数据帧就会立即发送拥塞信号目的是为了通知当前所有正在发送的主机信道发生碰撞了同时覆盖残留信号然后发生碰撞的主机就会启动退避算法根据当前帧的重传次数随机抽取时间槽数每个时间槽51.2微秒然后倒计时倒计时结束就会重新回到发送前状态开始监听载波IFG等待需要注意的是如果碰撞发生在发送前期64字节内网卡可以及时检测到但如果超过64字节才发生碰撞此时检测窗口已过网卡会无视这个碰撞继续发送将数据帧长度最短设置为64字节就是因为避免网卡发送完数据帧了才意识到数据发生碰撞因为一旦网卡发送完数据帧就会将缓冲区清空同时单个数据帧长度不能过长这是为了避免导致网络拥塞因此就有了MTU最大传输单元如果主机数增加的特别多发生碰撞的概率也会增加为了让主机数量太多也不要让网络流量降低的太快就有了交换机交换机可以把局域网划分就是划分碰撞域划分成A区域和B区域A区域内的主机之间通信交换机识别到就不会将报文给到区域B区域B就不会受到影响此时区域A和区域B内的主机可以彼此同时通信一个区域内的可能会互相影响但是影响远比整个局域网要小得多局域网内怎么将报文给到下一跳在同一个网段当中必须要有一种技术能够把下一跳IP转化成为下一跳主机的mac地址这种局域网技术就是ARP地址解析协议它属于数据链路层的协议但是在封装mac帧之上在网络层以下ARP协议的基本原理ARP的过程就是先广播再一对一发送的过程ARP大小是固定28字节arp报文格式如图所示硬件类型链路层网络类型1代表以太网协议类型要转换成为mac地址的网络层地址类型0x0800为IP地址硬件地址长度链路层网络所要求的mac地址长度协议地址长度网络层IP地址长度op选项字段为1表示ARP请求为2表示ARP应答可以注意到arp报文里也包含了源mac地址和目的mac地址好像和以太网的帧头的源mac地址和目的mac地址重复了但是仍然是必须的。因为一个用来在数据链路层进行解析一个在ARP层进行解析。主要是为了保证链路层是其他类型的网络时也不会出现问题其它链路层网络不一定会在报头加上mac地址接收方数据链路层查看报头发现类型字段为0806就会将有效载荷交给ARP层ARP层首先会看op选项如果是请求就会去看目的IP地址查看是不是自己的IP地址如果是就会去查看发送端IP地址构建应答应答报文是一对一通信目的mac地址就是固定对象发送方的mac地址不再是广播地址发送端mac地址就是自己接收方接收到应答之后给到arp层arp会先看op然后就去看发送端IP地址和发送端 mac地址arp返回之后mac和ip的映射关系就会被os缓存起来防止频繁发送arp报文arp缓存的存储时间长度一般是以分钟为单位因为IP和mac不一定一直保持关系它们是变化的所以不能一直缓存得缓存新的主要是因为主机每次连网都会申请IP主机的IP是会变的逆地址解析协议rarp知道mac不知道IP可以做arp欺诈不停的给某个主机发送arp应答报文由于arp缓存只会记录最新的信息就导致发送信息时就会给到另一台主机这种方式就是中间人攻击