计算机⽹络协议(⼆)——从⼆层到三层
底层⽹络知识详解:从⼆层到三层
这个专栏的计算机⽹络协议,我是在极客时间上学习 已经有三万多⼈购买的刘超⽼师的专栏,讲的特别好,像看⼩说⼀样学习到了平时很枯燥的知识点,计算机⽹络的书籍太枯燥,感兴趣的同学可以去付费购买,绝对物超所值,本⽂就是对⾃⼰学习专栏的总结,评论区可以留下你的问题,咱们⼀起讨论!
我在CSDN写博客的⽬的真的不是为了写⽽写,写博客的意义⼀来是⽅便⾃⼰复习,⼆来是也是想分享知识。我并不会说侵犯 刘超 ⽼师的版权,我也不是照抄,作者的⽂章内容很精彩,我是记录⾃⼰想学的点,当作⼀个笔记⽅便⾃⼰复习。⼤家可能看到这篇⽂ 也会去购买专栏学习,或者看到觉得有⼀点点⽤就可以啦!
概述
上⼀篇⽂章中对通信⽹络协议做了⼀个综述,这⼀篇开始底层⽹络知识详解:从⼆层到三层 分为以下五⼩节去介绍:
1. 从物理层到MAC层;
2. 交换机与VLAN;
3. ICMP和ping;
4. ⽹关;
5. 路由协议;
⼀、从物理层到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
上⽂中讲了交换机,假如公司越来越⼤,交换机数⽬肯定越来越多。交换机之间连接起来,就形成复杂的拓扑结构。这么多⽹线,绕过来绕过去,不可避免地会出现⼀些意料不到的情况,其中常见的问题就是环路问题,如下图所⽰:
这就需要采⽤使⽤STP协议,解决环路问题:
在数据结构中,有⼀个⽅法叫作最⼩⽣成树。有环的我们常称为图。将图中的环破了,就⽣成了树。在计算机⽹络中,⽣成树的算法叫作STP,全称**Spanning Tree Protocol。**有环路的图变成没有环路的树,从⽽解决环路问题。这⾥我就不细细描述了,感兴趣的同学可以去学习⼀下!
2.1 如何解决⼴播问题和安全问题?
交换机数⽬多,会⾯临⼴播问题和安全问题;⼀⼤波机器和交换机,就是想⼀个公司中相关的部门、不相关的部门,⼤家都在⼀个会议室开会吵吵闹闹的,乱的很,这种⼴播问题就会导致性能下降;
有的部门会议内容需要保密,如果都在⼀个⼴播域⾥⾯,碰到了⼀个会抓包的程序员,就能抓到这些包,如果没有加密,就能看到这些敏感信息了。就像是⼤家都在会议室⾥七嘴⼋⾆,讨论的问题也能被别⼈听见喽,就会导致安全问题。所以,那就要分部门、分会议室。
程序员培训机构去到极客时间⽅法⼀:物理隔离
在⽹络⽅⾯,每个部门都有单独的交换机,配置着单独的⼦⽹,这样部门间的沟通就需要路由器;但是部门中的⼈数不固定,就会导致交换机中的接⼝空闲较多或者不够⽤;
⽅法⼆:虚拟隔离
常说的VLAN,或者说是虚拟局域⽹,使⽤VLAN,⼀个交换机上就会连着属于多个局域⽹的机器。交换机会根据⼆层头上的Tag中的VLAN ID,只有相同VLAN的包,才会互相转发,不同VLAN的包,是看不到的。
对于⽀持VLAN的交换机,有⼀种⼝叫作Trunk⼝。它可以转发属于任何VLAN的⼝。交换机之间可以通过这种⼝相互连接。
三、ICMP和ping
当⽹络不通,你连不上另⼀台机器的时候,⼀般都会ping⼀下,ping是基于ICMP协议⼯作的;
3.1 ICMP协议的格式
ICMP全称Internet Control Message Protocol,就是互联⽹控制报⽂协议。
ICMP是封装在IP包中的,在传输指令的时候,需要源地址和⽬标地址,其格式如下:
ICMP报⽂有很多的类型,不同的类型有不同的代码。最常⽤的类型是主动请求为8,主动请求的应答为0。
3.2 ICMP报⽂类型
查询报⽂类型
ping就是查询报⽂,是⼀种主动请求,并且获得主动应答的ICMP协议;ping发的包符合ICMP协议,只不过在后⾯增加了⾃⼰的格式。
对ping的主动请求,进⾏⽹络抓包,称为ICMP ECHO REQUEST,同理主动请求的回复,称为**ICMP ECHO REPLY.**⽐起原先的ICMP,多了两个字段,⼀个是标识符,就像侦察兵,⼀类是侦察
战况,⼀类是查⽔源,需要采⽤标识对其进⾏区分。另⼀个是序号,ping会存放发送请求的时间值,来计算往返时间,说明路程的长短。
差错报⽂类型
ICMP差错报⽂的例⼦:终点不可达为3,源抑制为4,超时为11,重定向为5
1. 终点不可达:⽹络不可达、主机不可达、协议不可达、端⼝不可达、需要进⾏分⽚但设置了不分⽚位;
2. 源站抑制:源站放慢发送速度;
3. 时间超时:超过⽹络包的⽣存时间还没送达;
4. 路由重新定向:下⼀次发给另⼀个路由器;
3.3 ping:查询报⽂类型的使⽤
⼀起来看⼀下ping的发送和接收过程:
假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,它们都在同⼀个⼦⽹,当你在主机A上运⾏“ping
192.168.1.2”后,源主机⾸先会构建⼀个ICMP请求数据包,数据包中包含类型字段和顺序号;
然后,由ICMP协议将这个数据包连同地址192.168.1.2⼀起交给IP层,IP层将以192.168.1.2作为⽬的地址,本机IP地址作为源地址,加上⼀些其他控制信息,构建⼀个IP数据包。
接下来,需要加⼊MAC头,可以通过ARP查询MAC地址,之后传送出去;主机B收到这个数据帧后,先检查它的⽬的MAC地址,并和本机的MAC地址对⽐,如符合,则接收,否则就丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层。同样,IP层检查后,将有⽤的信息提取后交给ICMP协议。
主机B会构建⼀个 ICMP 应答包,应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号,然后再发送出去给主机A。在规定的时候间内,源主机如果没有接到 ICMP 的应答包,则说明⽬标主机不可达;反之,即不可达。
如果跨⽹段的话,还会涉及⽹关的转发、路由器的转发等等。
3.4 Traceroute:差错报⽂类型的使⽤
Traceroute的第⼀个作⽤:故意设置特殊的TTL,来追踪去往⽬的地时沿途经过的路由器
Traceroute的参数指向某个⽬的地的IP地址,它会发送⼀个UDP数据包,将TTL设置为1,也就是说⼀旦遇到⼀个路由器或者⼀个关卡,表⽰其牺牲了,如此反复到达⽬的地址,就获取到了所有路由器的I
P;
Traceroute的第⼆个作⽤:故意设置不分⽚,从⽽确定路径的MTU;
发送分组,并设置“不分⽚”标志。每次收到ICMP"不能分⽚"差错时就会减少分组的长度,直到到达⽬标主机。
总结:
ICMP相当于⽹络世界的侦察兵,分为主动探查的查询报⽂,⼀种异常报告的差错报⽂;
ping使⽤查询报⽂,Traceroute 使⽤差错报⽂;
四、⽹关

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。