⽹络协议--底层⽹络知识详解(从⼆层到三层)
从物理层到MAC层
第⼀层(物理层)
⽹线
第⼆层(数据链路层)
Hub 采取的是⼴播的模式,如果每⼀台电脑发出的包,宿舍的每个电脑都能收到,那就⿇烦了。这就需要解决⼏个问题
1. 这个包是发给谁的?谁应该接收?
2. ⼤家都在发,会不会产⽣混乱?有没有谁先发、谁后发的规则?
3. 如果发送的时候出现了错误,怎么办?
这⼏个问题,都是第⼆层,数据链路层,也即 MAC 层要解决的问题。MAC 的全称是 Medium Access Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问
题。防⽌发⽣混乱。这解决的是第⼆个问题。这个问题中的规则,学名叫多路访问。
三种⽅式:
关于感恩老师的诗歌⽅式⼀:分多个车道。每个车⼀个车道,你⾛你的,我⾛我的。这在计算机⽹络⾥叫作信道划分;
⽅式⼆:今天单号出⾏,明天双号出⾏,轮着来。这在计算机⽹络⾥叫作轮流协议;
⽅式三:不管三七⼆⼗⼀,有事⼉先出门,发现特堵,就回去。错过⾼峰再出。我们叫作随机接⼊协议。著名的以太⽹,⽤的就是这个⽅式。
接下来要解决第⼀个问题:发给谁,谁接收?这⾥⽤到⼀个物理地址,叫作链路层地址。但是因为第⼆层主要解决媒体接⼊控制的问题,所以它常被称为MAC 地址。
解决第⼀个问题就牵扯到第⼆层的⽹络包格式。
第⼆层的⽹络包格式
对于以太⽹,第⼆层的最后⾯是 CRC,也就是循环冗余检测。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题。
河南工业大学三口七肛这⾥还有⼀个没有解决的问题,当源机器知道⽬标机器的时候,可以将⽬标地址放⼊包⾥⾯,如果不知道呢?⼀个⼴播的⽹络⾥⾯接⼊了 N 台机器,我怎么知道每个 MAC 地址是谁呢?这就是ARP 协议,也就是已知 IP 地址,求 MAC 地址的协议。
ARP 是通过吼的⽅式(⼴播)来寻⽬标 MAC 地址的,吼完之后记住⼀段时间,这个叫作缓存。
谁能知道⽬标 MAC 地址是否就是连接某个⼝的电脑的 MAC 地址呢?这就需要⼀个能把 MAC 头拿下来,检查⼀下⽬标 MAC 地址,然后根据策略转发的设备,这个设备显然是个⼆层设备,我们称为交换机
交换机是有 MAC 地址学习能⼒的,学完了它就知道谁在哪⼉了,不⽤⼴播了。(刚开始不知道的时候,是需要⼴播的)
STP协议
STP 协议⾥⾯的⼀些概念:
Root Bridge,也就是根交换机。这个⽐较容易理解,可以⽐喻为“掌门”交换机,是某棵树的⽼⼤,是掌门,最⼤的⼤哥。
Designated Bridges,有的翻译为指定交换机。这个⽐较难理解,可以想像成⼀个“⼩弟”,对于树来说,就是⼀棵树的树枝。所谓“指定”的意思是,我拜谁做⼤哥,其他交换机通过这个交换机到达根交换机,也就相当于拜他做了⼤哥。这⾥注意是树枝,不是叶⼦,因为叶⼦往往是主机。
Bridge Protocol Data Units (BPDU) ,⽹桥协议数据单元。可以⽐喻为“相互⽐较实⼒”的协议。⾏⾛江湖,⽐的就是武功,拼的就是实⼒。当两个交换机碰见的时候,也就是相连的时候,就需要互相⽐⼀⽐内⼒了。BPDU 只有掌门能发,已经⾪属于某个掌门的交换机只能传达掌门的指⽰。
Priority Vector,优先级向量。可以⽐喻为实⼒ (值越⼩越⽜)。实⼒是啥?就是⼀组 ID 数⽬,[Root Bridge ID, Root Path Cost, Bridge ID, and Port ID]。为什么这样设计呢?这是因为要看怎么来⽐实⼒。先看 Root Bridge ID。拿出⽼⼤的 ID 看看,发现掌门⼀样,那就是师兄弟;再⽐ Root Path Cost,也即我距离我的⽼⼤的距离,也就是拿和掌门关系⽐,看同⼀个门派内谁和⽼⼤关系铁;最后⽐Bridge ID,⽐我⾃⼰的 ID,拿⾃⼰的本事⽐。
交换机数⽬多会⾯临隔离问题,可以通过 VLAN 形成虚拟局域⽹,从⽽解决⼴播问题和安全问题。
ICMP报⽂
ICMP 报⽂有很多的类型,不同的类型有不同的代码。最常⽤的类型是主动请求为 8,主动请求的应答为 0。
查询报⽂类型
常⽤的 ping 就是查询报⽂,是⼀种主动请求,并且获得主动应答的 ICMP 协议。所以,ping 发的包也是符合 ICMP 协议格式的,只不过它在后⾯增加了⾃⼰的格式。
对 ping 的主动请求,进⾏⽹络抓包,称为ICMP ECHO REQUEST。同理主动请求的回复,称为ICMP ECHO REPLY。⽐起原⽣的ICMP,这⾥⾯多了两个字段,⼀个是标识符。这个很好理解,你派出去两队侦查兵,⼀队是侦查战况的,⼀队是去查⽔源的,要有个标识才能区分。另⼀个是序号,你派出去的侦查兵,都要编个号。如果派出去 10 个,回来 10 个,就说明前⽅战况不错;如果派出去 10 个,回来 2 个,说明情况可能不妙。在选项数据中,ping 还会存放发送请求的时间值,来计算往返时间,说明路程的长短。
差错报⽂类型
举⼏个 ICMP 差错报⽂的例⼦:终点不可达为 3,源抑制为 4,超时为 11,重定向为 5。
韩文 我爱你
ping:查询报⽂类型的使⽤
缘分测试小游戏ping
ICMP总结:
ICMP 相当于⽹络世界的侦察兵。我讲了两种类型的 ICMP 报⽂,⼀种是主动探查的查询报⽂,⼀种异常报告的差错报⽂;元旦快乐祝福语
ping 使⽤查询报⽂,Traceroute 使⽤差错报⽂。
严宽微博
世界这么⼤,我想出⽹关
在进⾏⽹卡配置的时候,除了 IP 地址,还需要配置⼀个Gateway 的东西,这个就是⽹关。
MAC 头和 IP 头
⼀旦配置了 IP 地址和⽹关,往往就能够指定⽬标地址进⾏访问了。由于在跨⽹关访问的时候,牵扯到 MAC 地址和 IP 地址的变化,这⾥有必要详细描述⼀下 MAC 头和 IP 头的细节。