数据链路层

ip根据根据目的ip、子网掩码、路由表查找进行路径选择,决定为什么交给下一跳的问题,解决的是路径选择的问题。跨网络通的本质就是经历很多个子网或者局域网,mac帧决定如何交给下一跳的问题,解决是同一个子网当中两台主机是如何通信的。数据链路层属于驱动程序,由于底层的硬件不同所以是千差万别的,无法做到os里面。数据链路层和网络层提供了将数据从A传输到B的能力。

以太网

每台主机的网卡当中都配有一个mac地址

mac帧报文的有效荷载最大不能超过1500,最小不能小于46字节。目的地址和源地址指的是6个字节大小的mac地址,通过定长报头区分报头和有效载荷,如何向上交付是依靠帧类型,指的是有效载荷包的是什么类型的数据。0800一般包的是ip报文。

主机a向主机d发送的mac报文,在同一个局域网下的每一台主机在数据链路层都收到了这个mac报文,以主机b为例,提取到该mac报文的目的地址是macd和自己的mac地址macb不一样便直接将该mac报文丢掉。主机d在分离报头和有效载荷并且提取该mac报文的目的地址的时候发现这个报文找的正是我,于是分包并根据报头的帧类型得知是ip报文便将有效荷载向上传给ip网络层。局域网的通信原理其实和我们上课的过程非常的相似。

碰撞检测:局域网是一个公共共享的资源,是一个碰撞域。主机a的网卡发出消息之后就立马去读,mac中由crc校验,只要新老对比一下如果crc不一样(二进制干扰)就说明存在碰撞,需要进行碰撞避免,也就是随机sleep一段时间再进行信息的补发。这也可以看出数据链路层也存在重传,只不过这次重传的目的只是为了报这个可以将数据从只a主机送到同一网络的另一台主机。要我想办法不断往局域网大量垃圾数据,这样碰撞就会一直存在,从而黑掉一个局域网。  

交换机是工作再数据链路层的设备。其作用是用来划分碰撞域,比如a和c发生了数据碰撞,这种碰撞不会传播到区域Ⅱ来,此时区域Ⅱ的设备可以正常进行外网访问。同时如果只是a与c之间的正常通信,交换机收到之后不会传递到域Ⅱ,这样使得域Ⅱ的信息量大大减少,从而减少了碰撞的几率。交换机使得碰撞的报文和合法的报文不会进行无意义的扩散,减少碰撞概率。

局域网只负责数据报转发的问题,将数据从主机a交给主机b还是路由c这是路由决策的问题,通过主机a的路由表来决定。

ARP协议(拿到mac地址)

ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议。从上面的结构也可以看出来,arp可以做为mac帧的有效荷载的。封装mac帧需要目标的mac地址。该协议是用来建立主机ip地址和MAC地址的映射关系。arp协议也是数据链路层的协议,只不过要根据上层的ip地址直接控制mac帧报文的发送。先根据arp协议在局域网中广播一条消息,询问谁的ip地址是谁这个?所有主机对该报文做处理并进行响应,然后把自己的ip地址所对应的mac帧地址返回给该主机,该主机收到目标主机的mac地址之后就可以封装mac帧了。ARP是在mac帧之上的,所以ARP协议的内容也属于mac帧的有效载荷。此时mac帧由于上层是arp协议不是ip协议所以其帧类型也要发生改变。协议类型字段这边是想要将ip地址转换称为mac帧地址。协议类型是代表这次arp是想要将什么类型地址转换成为mac地址,一般都是IP地址类型ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网 络层之间的协议ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网 络层之间的协议0x0800,也是写死的。 ARP请求种以太网目的地址和目的以太网地址这两个字段填写的都是FFFFFF,标识广播。 帧类型也变成了0806为arp的请求或者应答。

如果主机向询问对方的mac地址来封装mac帧,此时询问的mac报文的中的目的mac地址不清楚的时候需要填写全FFFF视为广播,这时该局域网的每一台主机都会在数据链路层收到这个数据帧,mac层收到之后由于目的地址是全F也无法知道是不是给自己的,所以还要继续向上交付到ARP层,然后arp层先看op而不是目的ip地址字段,看这个arp是请求还是应答,是请求再看目的ip地址,不符合就丢弃(这是在arp层进行的丢弃,并不是再数据链路层mac帧的丢弃)。os会临时保存ip地址和mac地址的映射关系,并不是每一次发送数据都需要进行arp请求。对于请求,在数据链路层就可以查看其以太网目的地址(由于是请求一定不是全F),不是自己就可以丢弃(此时是数据链路层mac帧的丢弃)。任何主机受到arp,先看op字段。ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网 络层之间的协议。

对于一个公网上的路由器,我们是如何发现彼此的?我们虽然不知道对方的ip地址,但是我们可以遍历网络号发送arp请求,不存在的ip地址也发,这样我们就可以收集到同一个子网的所有主机的ip地址和mac地址。

数据帧不建议过长,因为碰撞的概率会更大,并且补发成本大。

arp欺骗

 DNS

DNS是一整套从域名映射到IP的系统。域名解析服务器,但是我们现在依旧很少使用域名访问服务器,而是采用搜索引擎。当我们使用浏览器进行访问的时候,输入域名需要先做DNS把域名转换成为ip地址,然后再以ip地址加上端口号向特定的服务器发起访问。

ICMP

ping命令其实用的都是icmp协议,icmp是绕过tcp/udp网络层直接使用的,其基于ip协议可以做为ip协议的荷载,属于网络层协议。这也注定了其上面没有端口号。ping命令基于ICMP,是在网络层。而端口号, 是传输层的内容。 在ICMP中根本就不关注端口号这样的信息。

 NAT技术

解决ip地址不足的问题,NAT能够将私有IP对外通信时转为全局IP,也就是就是一种将私有IP和全局IP相互转化的技术方法。NAT不仅要替换源ip地址,还要工作在应用层识别源端口号。转换表中的目的端口号和目的ip看似存在冗余,但是一定程度上保护了内网环境,防止外部环境对内部环境随意访问,只有发送过请求的服务器的响应才可以进入我们内网环境。

限制(由于依赖NAT转换表):无法从NAT外部向内部服务器建立连接;装换表的生成和销毁都需要额外开销;通信过程中一旦NAT设备异常,所有的TCP连接也都会断开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值