在某网站被骗钱该怎么做,上海关键词优化的技巧,网页编辑软件edit,宁波住房和城乡建设官网目录 一、认识以太网
二、以太网帧格式
三、MTU
四、ARP协议
ARP协议
ARP协议格式
ARP缓存表 一、认识以太网
前面#xff0c;我们讲到了网络层的IP协议#xff0c;它通过目的IP#xff0c;子网划分#xff0c;路由表查找及其算法等方式让IP报文能够从一个主机到另一…目录 一、认识以太网
二、以太网帧格式
三、MTU
四、ARP协议
ARP协议
ARP协议格式
ARP缓存表 一、认识以太网
前面我们讲到了网络层的IP协议它通过目的IP子网划分路由表查找及其算法等方式让IP报文能够从一个主机到另一个主机。但是IP协议没有解决设备转发的具体功能而只是提供了一个转发的策略。
在局域网中数据报文的具体转发怎么从一个主机到另一个主机的具体方式是由数据链路层协议来实现的。
要将数据发送到目标主机的前提是需要先将数据转发给与当前主机直接相连的下一跳主机而两台主机直接相连也就意味着这两台主机属于同一网段因此将数据转发到下一跳主机实际是属于局域网通信范畴的而这实际就是链路层需要解决的问题。
所以说数据链路层解决的是同一个局域网中两台相连主机之间的数据传输的问题。 以太网 以太网 不是一种具体的网络而是一种技术标准既包含了数据链路层的内容也包含了一些物理层的内容 例如规定了网络拓扑结构访问控制方式传输速率等。
例如以太网中的网线必须使用双绞线传输速率有10M100M1000M等。
以太网是当前应用最广泛的局域网技术和以太网并列的还有令牌环网无线LAN等。
二、以太网帧格式
以太网帧格式如下 源地址和目的地址是指网卡的硬件地址即MAC地址长度是48位是在网卡出厂时就标定好了的。 且每个主机的MAC地址是全球唯一的。
帧协议类型字段有三种值080008608035分别对应IP协议、ARP协议和RARP协议后面两种协议后面会讲。
帧末尾是CRC校验码。 MAC帧如何将报头与有效载荷进行分离 以太网MAC帧的帧头和帧尾都是固定长度的因此当数据链路层收到一个MAC帧后直接提取出MAC帧当中固定长度的帧头和帧尾此时剩下的就是有效载荷了。 MAC帧如何知道将有效载荷交付给上层的哪一个协议 数据链路层MAC帧对应的上层网络层的协议不止一种因此在将MAC帧的报头和有效载荷分离后还需要确定应该将分离出来的有效载荷交付给上层的哪一个协议。
在MAC帧的帧头当中有2个字节的类型字段因此在分离出报头和有效载荷后根据该字段将有效载荷交付给对应的上层协议即可。 局域网通信原理 MAC地址用来识别数据链路层中相连的节点。 长度为48位及6个字节一般用16进制数字加上冒号的形式来表示。 对于上图。现在主机1想要给主机6发送消息。主机1封装MAC帧当中的目的地址就是主机6的MAC地址源地址就是主机1的MAC地址而帧协议的类型对应就是0800紧接着就是要发送的IP数据报帧尾部分对应就是CRC校验。
当主机1将该MAC帧发送到局域网当中后局域网当中的所有主机都可以收到这个MAC帧包括主机1自己。
主机6收到该MAC帧后提取出MAC帧当中的目的地址发现该目的地址与自己的MAC地址相同于是在CRC校验成功后就会将有效载荷交付给上层IP层进行进一步处理。
局域网中的其他主机收到该MAC帧后也会提取出MAC帧当中的目的地址但发现该目的地址与自己的MAC地址不匹配于是就会直接将这个MAC帧丢弃掉。
主机1收到该MAC帧后可以对收到的MAC帧进行CRC校验如果校验失败则说明数据发送过程中产生了碰撞此时主机1就会执行碰撞避免算法后续进行MAC帧重发。
总结当主机的数据链路层收到一个MAC帧后会根据MAC帧当中的目的地址来判断该MAC帧是否是发给自己的如果是发送给自己的则会再对其进行CRC校验如果校验成功则会根据该MAC帧的帧协议类型将该MAC交付给对应的上层协议进行处理。 碰撞避免算法 由于以太网中的所有的主机共享一个通信信道因此在同一时刻只允许有一台主机发送数据否则各个主机发送的数据就会相互干扰。站在系统的角度来看这里各个主机所共享的通信信道就是一种临界资源这个临界资源同一时刻只允许一台主机使用。
所以说当局域网中有多个主机在同时发送消息的时候就会发生数据碰撞。
那么只要发送出去的数据与其他主机发送的数据产生了碰撞那就得执行碰撞避免算法即主机在等待一段时间后重新发送数据。 数据跨网络传输原理 我们现在要将主机A的消息传输给主机B。
首先主机A要将数据传输给与自己在同一个局域网的路由器A于是它从上到下封装数据。在网络层通过查询路由表知道了下一步应该去往路由器A于是向下交付给数据链路层封装MAC帧目的地址就是路由器A的MAC地址源地址就是主机A的MAC地址。
此时主机A所在局域网当中的所有主机都能收到这个MAC帧但最终只有路由器A发现该MAC帧当中的目的MAC地址与自己的MAC地址相同于是才会对该MAC帧进行解包并将解包后剩下的IP数据报交付给网络层IP协议。
路由器A的网络层IP协议将IP报头和有效载荷分离后提取出了目的IP然后通过查询路由表后确定需要将该数据转发给路由器B。于是向下交付给数据链路层封装MAC帧目的地址就是路由器B的MAC地址源地址就是路由器A的MAC地址。这样就可以去往路由器B了。
就这样数据报经过一跳一跳最终就能够到达主机B了。
所以数据在进行跨网络传输时其对应的源IP地址和目的IP地址一般是不会变化的而该数据的源MAC地址和目的MAC地址却是一直在变化的。
三、MTU
1、以太网帧中的数据长度规定最小46字节最大1500字节ARP数据包的长度不够46字节要在后面补填充位。
2、最大值1500称为以太网的最大传输单元(MTU)不同的网络类型有不同的MTU。
3、如果一个数据包从以太网路由到拨号链路上数据包长度大于拨号链路的MTU了则需要对数据包进行分片IP协议。
4、不同的数据链路层标准的MTU是不同的。 MUT对IP协议的影响 因为数据链路层规定了最大传输单元MTU所以如果IP层一次要发送的数据量超过了MTU此时IP层就需要先对该数据进行分片然后才能将分片后的数据向下交付。IP报文的分片和组装在上一文中已经讲过了。这就不再赘述了。 MTU对TCP协议的影响 对于TCP来说分片会增加TCP报文丢包的概率而TCP丢包后还需要进行重传因此TCP应该尽量减少因为分片导致的数据重传。
所以TCP发送的数据报不能无限大应该受制于MTU我们将TCP的单个数据报的最大报文长度称为MSS。
TCP通信双方在建立连接的过程中就会进行MSS协商最终选取双方支持的MSS值当中的较小值作为最终MSS。MSS的值实际就是在TCP首部的40字节的选项字段当中。
当然在将IP协议的时候我们也说过了最理想的情况是TCP协议严格控制每次传输数据的大小使报文不会被分片。
四、ARP协议
地址解析协议Address Resolution ProtocolARP协议是根据IP地址获取MAC地址的一个TCP/IP协议。 为什么要有ARP协议 上面我们讲到IP报文在向下交给数据链路层后将由其对IP报文进行封装形成MAC帧这样才能在局域网中进行转发到达下一个主机。可是数据链路层能够封装MAC帧的前提应该是先知道下一个主机的MAC地址那么怎么才能知道同一局域网中其他主机的MAC地址呢
对于IP地址我们有专门的路由表这样主机就可以知道另一个主机的IP地址通过路由表我们就能够知道报文该去往哪个网段。那么可不可以像路由表一样将局域网中所有主机的MAC地址保存起来呢当然是不行的因为一个局域网中就有大量的主机主机数量可比局域网多多了这样维护成本就太大了。
也就是说在同一个局域网中要给对方发消息就必须得知道对方的MAC地址而实际大部分情况下我们只知道对方的IP地址因此需要通过ARP协议来根据IP地址来获取目标主机的MAC地址。
ARP协议
ARP协议和RARP协议也是属于数据链路层协议。
ARP、RARP和MAC帧协议虽然都属于数据链路层的协议但ARP协议和RARP协议属于MAC帧的上层协议。也就是说MAC帧的上层协议不一定就直接是网络层的协议MAC帧的上层协议有可能也属于数据链路层的协议就是位于MAC帧的上层。 ARP协议格式 硬件类型指链路层的网络类型1为以太网。
协议类型指要转换的地址类型0x0800为IP地址。
硬件地址长度对于以太网地址为6字节因为MAC地址是48位的。
协议地址长度对于IP地址为4字节因为IP地址是32位的。
op字段为1表示ARP请求op字段为2表示ARP应答。 ARP协议的工作过程 主机A想要给主机B发信息那么主机A要先知道主机B的MAC地址。于是主机A构建ARP请求。 ARP请求 因为构建的是ARP请求因此ARP请求当中的op字段设置为1。
ARP请求当中的硬件类型字段设置为1因为当前使用的是以太网通信。
ARP请求当中的协议类型设置为0800因为是要将IP地址转换成MAC地址。
ARP请求当中的硬件地址长度和协议地址长度分别设置为6和4因为MAC地址的长度是48位IP地址的长度是32位。
ARP请求当中的发送端以太网地址和发送端IP地址对应就是主机A的MAC地址和IP地址。
ARP请求当中的目的以太网地址和目的IP地址对应就是主机B的MAC地址和IP地址但由于主机A不知道主机B的MAC地址因此将目的以太网地址的二进制序列设置为全1表示在局域网中进行广播。
ARP请求构建完成后还需要将ARP数据包向下交付给MAC帧协议封装成MAC帧。 MAC帧封装完毕后主机A就可以将封装好的MAC帧以广播的方式发送到局域网当中了。
因为这个MAC帧是以广播的方式发出的因此局域网当中的每台主机收到这个MAC帧后都会对该MAC帧进行解包。当这些主机识别到MAC帧当中的帧类型字段为0806后便知道这是一个ARP的请求或应答的数据包于是会将MAC帧的有效载荷向上交付给ARP层。
当ARP层收到这个数据包后发现ARP数据包当中的op字段为1于是判定这是一个ARP请求然后再提取出ARP数据包当中的目的IP地址字段虽然局域网当中的所有主机都会将该数据包交给自己的ARP层但最终只有主机B发现ARP数据包当中的目的IP地址与自己相同因此只有主机B会对该ARP请求进行应答而局域网当中的其他主机在识别到ARP数据包当中的目的IP地址与自己不匹配后就会直接将这个ARP请求报文丢弃。 ARP应答 因为主机B构建的是ARP应答因此ARP应答当中的op字段设置为2。
ARP应答当中的硬件类型、协议类型、硬件地址长度、协议地址长度的值与ARP请求当中设置的值相同。 ARP应答当中的发送端以太网地址和发送端IP地址对应就是主机B的MAC地址和IP地址。
ARP应答当中的目的以太网地址和目的IP地址对应就是主机A的MAC地址和IP地址。
ARP协议封装好后向下交付封装MAC帧。最终的MAC帧如下 MAC帧封装完毕后主机B就可以将封装好的MAC帧发送到局域网当中了。
此时局域网当中的每台主机在底层都能收到这个MAC帧但大部分的主机在发现该MAC帧对应的以太网目的地址与自己不同后就会将该MAC帧丢弃而不会交付给上层ARP层最终只有主机A会将解包后MAC帧的有效载荷向上交付给自己的ARP层。
当主机A的ARP层收到这个数据包后发现ARP数据包当中的op字段为2于是判定这是一个ARP应答然后就会提取出ARP数据包当中的发送端以太网的地址和发送端IP地址此时主机A就拿到了主机B的MAC地址。
ARP缓存表
实际上我们并不是每次都要在获取对方的MAC地址时都需要发起ARP请求每次发起ARP请求后都会建立对应主机IP地址和MAC地址的映射关系每台主机都维护了一个ARP缓存表我们可以用arp -a命令进行查看。 当然这个缓存表并不是能够一直保存映射关系它是有过期时间的一般是20分钟。20分钟过后就会失效需要重新发送ARP请求来获取MAC地址。 什么时候需要发起ARP请求 我们刚才说的只是主机A要将数据发送给主机B的时候需要通过ARP请求获得主机B的MAC地址但实际数据在路由过程中的每一跳可能都需要发起ARP请求询问下一跳主机对应的MAC地址因为在每一跳时我们一般都是只知道下一跳的IP地址而并不知道其对应的MAC地址的。
ARP请求不能够跨网络传输它只在局域网内有效。