网络协议(四)局域网内的通信

前面的文章中介绍了在网络中传输的网络包长什么样子,以及网络包的各项内容是怎么得来的,本篇文章再来探讨下局域网内的两个计算机是怎么通信的。

大学宿舍每天11点断网,但是夜猫们仍然睡不着,于是就开始联机打单机游戏,流星蝴蝶剑、红警等,不亦乐乎。这时候舍友之间电脑的通信就是局域网通信。

两台电脑构建局域网的方式有多种,最简单的就是网线互联,然后是Hub,交换机等。

网线互联

一根网线将两台电脑直接连起来,两台电脑就具备了通信的物理条件,网线属于一层设备(物理层)。早期的电脑比较笨,电脑之间互联需要将网线使用1-3,2-6交叉接法,即将网线一端的第1脚连另一端的第3脚,网线一端的第2脚连另一端的第6脚,其他脚一一对应。网线水晶头可以看到8根线,其中1,2用于发送信号,3,6用于接收信号,运用交叉接法接好后,一台电脑使用1,2脚发信号,另一台电脑的3,6脚就收到了信号,两台电脑就能进行通信了。(其余四脚保留为电话使用,正常家庭上网带宽下一般用不到)

现在的电脑已经变聪明了,即使不使用1-3,2-6接法也能正常收发消息了。

Hub

一根网线只能连接两台电脑,如果有更多的电脑要组网,这种方法就行不通了,于是就要用到Hub,即集线器。Hub也是工作在物理层的。多台电脑通过网线连接到Hub上,一台电脑通过网线发给Hub数据包(网络包)后,Hub就以广播的形式将数据包广播给所有连接到Hub的设备,各个设备判断是不是给自己的包,自行判断取舍。

集线器为共享式带宽,连接在集线器上的任何一个设备发送数据时,其他所有设备必须等待,此设备享有全部带宽,通讯完毕,再由其他设备使用带宽。正因此,集线器连接了一个冲突域的网络。所有设备相互交替使用,就好像大家一起过一根独木桥一样。

交换机

使用Hub的缺点是很明显的,无论是共享带宽,还是广播信号,都造成了网络资源的浪费。于是一个更高级的设备出现了,它就是交换机,交换机是二层设备(数据链路层),交换机解决了Hub的两个问题,一是不能构建点对点通信,二是设备之间不能并行通信。

设备之间点对点通信。

交换机具有多个端口,可以插多根网线,内部装有系统的交换机就可以记录MAC地址表,存储了mac和端口的一个关联关系,所以当一个数据包来到交换机后,它知道该把这个数据包发向哪个端口。所以交换机转送数据包的方式不再是广播给所有设备,而是仅发送给对的设备。

交换机刚开始在局域网工作时,MAC地址表是空的,所以在收到数据包后发现MAC不在地址表中时,它也会将这个包装发给所有端口,一旦收到目标设备的应答信息后,它就会把此MAC和对应的端口记录到MAC地址表中。

并行通信

不同于Hub的共享式带宽通信,交换机允许并行通信,打破了Hub的全局冲突域。当一个局域网内的机器较多时,交换机的传输性能优势就很明显。

ARP协议

回顾一下前几篇文章中讲到的网络包的构成,如下图

有一个知识点前面文章中没讲到。当设备A要跟设备B发消息之前,需要知道设备B的mac地址,一般情况下,我们程序中只会声明目标机器的IP和端口,而不会去管mac的事。其实获取目标设备mac地址的事,是设备自动去完成的,这其中用到了ARP协议。

ARP协议就是已知IP求mac地址的协议。现在设备A要找一个IP的对应mac了,

  1. 先去找本地缓存的ARP表,ARP表中缓存了近期获取到的IP和mac的对应关系,如果ARP表中有存的话,就结束流程了。
  2. ARP表中没有找到对应信息,于是向局域网发送一个广播包,去向所有设备问一下,这个目标IP的mac地址是啥?
  3. 局域网内的设备C、设备D收到包后,发现IP不是自己的,于是不做任何操作。设备B收到包后发现这个IP是自己的,于是就给设备A回复一条消息,说你要找的IP是我,我的mac是xxxx。这条ARP的应答消息是单播的,只发送给设备A,而不是广播的形式。
  4. 设备A收到应答后将设备B的IP和mac的对应关系存到自己的ARP表中,流程结束。

这就是ARP协议的一个大致流程,有了ARP协议获取局域网内的目标mac就很方便。

局域网内设备的通信流程

举例说明,设备A的IP是192.168.0.11,设备B的IP是192.168.0.12,子网掩码都是255.255.255.0。然后设备A的一个应用程序Y1(端口号为66)要跟设备B的一个应用程序Y2(端口号为68)发消息,流程是这样的

  1. 设备A根据目标IP(设备B的IP)和自己的子网掩码计算出目标IP和自己是不是处于同一个子网
  2. 如果不是同一个子网的话,需要出网关,这个后面再讨论
  3. 如果是同一个子网的话,使用ARP协议得到目标IP对应的mac地址
  4. 当目标地址的所有信息(端口,IP,MAC)都明确后就可以打包“网络包”了
  5. 网卡将网络包通过网线或者无线电波发向交换机或路由器
  6. 交换机收到网络包后判断这个包上的mac对应哪个端口的设备,然后将这个网络包发向指定端口所连接的设备,即设备B
  7. 设备B收到网络包后,层层拆包,最终将应用层的数据拿到,交给指定程序进行处理。
  8. 设备B要回消息的也是要经过1-7步

总结

到此为止,局域网内的设备通信流程和涉及的分层设备都已了解完毕,下篇文章来探讨下互联网中的两台设备是怎么进行通信的。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值