如果我访问一个具体的mac地址,如果是组播,这个mac地址会变吗

如果你的电脑,访问一个mac地址是04-0e-3c-30-12-2f 的流量,那本身这就是一个单播流量,不是组播流量

(单播是mac地址48个bit的第8位bit为0)

如果你访问的是组播,你的数据包的目标地址就不是你说的这个地址

所以不要搞错了逻辑

单播的mac地址就是你的某个目标电脑的mac

组播的mac是你协议生成的目标mac地址(这个组播的48bit的第8位为1就是组播mac地址)

 

mtu是个什么鬼

MTU是个什么意思

mtu就是你的肚子能吃几碗饭的意思,比如你一口气能吃两碗米饭,这就是你的MTU了,再吃就撑死了

但是当你撑死的时候,你的体重是:你的身体其他器官重量+ 两碗米饭(MTU)的总和

所以,你看这个ppt, 这是一个局域网的数据帧= SMAC(源mac地址,6个字节=48个bit)+ DMAC(目标mac,48个比特)+长度字段(2个比特)+ payload (这个就是数据,就是你肚子里面真真正正的货,可以是46-1500 字节,你可以理解成你的胃的容量)+ crc (校验位,4个比特,相当于在你身上按个gps监控,看你正不正常) = ZD(6+6+2+1500+4= 1518)

Q:路由器上是不是发送的一个数据包的ZD长度就是MTU

A: 不是的! 路由器发送的是“纯数据” ,也就是payloadZD的是1500字节,就相当于你光个身子,体重是1500字节,但是路由本身发出去的还要有自身的头部信息,比如源mac地址,目标mac地址,长度字段,CRC字段(6+6+2+4 = 18字节),就也就是你行走江湖,不能光哥屁股,你还要穿件衣服,但是衣服的重量是18字节,你自己的肉身重量是ZD1500字节,所以你在江湖上是ZD1518字节重

Q: 如果一个数据包特别大,大于要经过的路由器的MTU怎么办

A: 如果你的肚子一口气能吃2碗羊肉泡,现在有3碗泡馍,你会怎么吃, 当然是先吃了2碗之后,消化了再吃,不能大于你的MTU

比如这张图,Z-U-I左边的数据包是1480字节,要经过MTUZD是1300的路由器,那就把数据包拆成两个,一个MTU是1280,一个MTU是200, 这样就能经过路由器了

这就是数据包的切包的过程,你有没有看过魔术切美女,就是把美女切成3段,头,肚子和腿

然后发到目的地再组合 ,这个过程就是路由器的软件CPU要干的(切包,组包),这就是路由器CPU为什么慢了,因为这个过程慢!

这个慢也是为什么有的人会问你,传统的为什么路由慢,这就是其中之一,因为要把每个美女(数据包)切割,在组装,数据量特别大的时候,CPU就开挂了

如果组播地址要求mac地址的第8个bit为1的话,那么我电脑的mac地址不就变了吗

这个问题:看清楚,mac地址是组播,组播要求mac的48个bit的第8位必须是1,那么:

我觉得你晕了

因为mac组播地址,我们说的是目标地址,就是你电脑发出的地址是组播地址,那么这个组播地址的mac的48个bit的第8个bit位1

不是指你自己的电脑的mac地址需要转换

我这么说

你打公安局的电话是110,这就是目标地址,不是你打电话的时候你自己的主叫号码是110,也就是你不是110!!!

不管你的问题是什么

mac地址如果是组播地址,那么第8个bit(mac地址全长48个bit)就是1