底层网络知识详解:从二层到三层
这个专栏的计算机网络协议,我是在极客时间上学习 已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,绝对物超所值,本文就是对自己学习专栏的总结,评论区可以留下你的问题,咱们一起讨论!
我在CSDN写博客的目的真的不是为了写而写,写博客的意义一来是方便自己复习,二来是也是想分享知识。我并不会说侵犯 刘超 老师的版权,我也不是照抄,作者的文章内容很精彩,我是记录自己想学的点,当作一个笔记方便自己复习。大家可能看到这篇文 也会去购买专栏学习,或者看到觉得有一点点用就可以啦!
概述
上一篇文章中对通信网络协议做了一个综述,这一篇开始底层网络知识详解:从二层到三层 分为以下五小节去介绍:
- 从物理层到MAC层;
- 交换机与VLAN;
- ICMP和ping;
- 网关;
- 路由协议;
一、从物理层到MAC层
1.1 第一层(物理层)
电脑连接电脑,除了网线交叉,还需要配置这两台电脑的IP地址、子网掩码和默认网关
IP层封装了MAC层才能放入物理层,两台电脑可以通过网线构成一个局域网,LAN
多台电脑可以通过Hub集线器进行连接。
1.2 第二层(数据链路层)
Hub采取的是广播的模式,无法确定接收者,数据发送混乱没有先后顺序、发送出错怎么办?
MAC层就是要解决这些问题,MAC全称是Medium Access Control(媒体访问控制),其实就是控制数据在媒体上的发送;
多路访问解决数据发送混乱:
- 信道划分,例如分为多车道,每个车一个道;
- 轮流协议,单双号出行;
- 随机接入协议,错峰出行;
为了解决了媒体接入控制的问题,就要考虑:发给谁,谁接收?这里用到一个物理地址,叫作链路层地址。但是常用于解决流媒体接入控制问题,所以常被称为MAC地址。
第二层的网络包的格式如下图所示,首先是包含目标MAC地址和源MAC地址,类型是IP数据包,IP里面封装了TCP、UDP,以及HTTP;数据包在链路上广播,MAC网卡通过目标MAC地址接收数据包,打开IP包,发现IP地址也是自己的,再打开TCP包,发现端口是自己,也就是80,而nginx就是监听80端口;
于是将请求提交给nginx,nginx返回一个网页。然后将网页需要发回请求的机器。然后层层封装,最后到MAC层。因为来的时候有源MAC地址,返回的时候,源MAC就变成了目标MAC,再返给请求的机器。
第二层的后面是CRC,就是循环冗余检测,通过XOR异或的算法,来计算整个包在传输过程中是否发生了错误。
在一个局域网中如果已知IP地址,求MAC地址,可以采用ARP协议;广播一个IP包,谁是这个IP谁来回答,回答的报文如下,机器会在本地进行ARP缓存来避免每次都用ARP协议,随着机器的上下线,缓存也会失效。
交换机是一个二层设备,假设一个数据包要从MAC1发送到MAC2,但是交换机不知道在MAC2电脑的哪个口,这个时候会将包发送给所有的口,找到MAC2电脑的接口之后,通过转发表来记录下对应的MAC地址,保证下次准确转发。
当机器的IP地址、端口发生改变,转发表中的信息也会发生改变。
总结:
第一,MAC地址是用来解决多路访问的堵车问题;
第二,ARP是通过吼的方式来寻找目标MAC地址,吼完以后,记住一段时间,叫作缓存;
第三,交换机是由MAC地址学习能力的,学完了就知道谁在哪儿了,不用广播了
二、交换机与VLAN
上文中讲了交换机,假如公司越来越大,交换机数目肯定越来越多。交换机之间连接起来,就形成复杂的拓扑结构。这么多网线,绕过来绕过去,不可避免地会出现一些意料不到的情况,其中常见的问题就是环路问题,如下图所示: