首页 > 代码库 > 计算机网络的那些事1

计算机网络的那些事1

  1. 从几张图来看网络的发展


wKiom1PD7PaBYIP1AABho5RTQfY309.jpg

由于A,B,C,D四个主机,共用一个信道,导致如果A与B进行通信,就会占用I信道,使得其他主机无法通信。为了解决这个问题,出现了网桥。



wKioL1PD7YuhAlrUAABwPz_kPa4764.jpg

网桥,顾名思义,就是连接2个网络的一座桥。显然,通过网桥实现分而治之,A与B通信不会影响C与D通信;早期,网桥上只有2个接口,后来发展为多个接口。



wKioL1PD7oDzhOfKAAB2z9WUoPs719.jpg

具有多个接口的网桥,即为交换机。这样的话,主机实际上只与交换机上的接口冲突,也就是说,A发信号给B的同时,B无法发送信号。实际上,就是半双工状态;如果给主机2个接口同交换机相连,一个用于发,一个用于收,于是,就实现了全双工。如果A发信号给B,交换机接到后,会进行广播,试想下,如果交换机上的主机很多的话,那么这样的广播将相当浪费资源。




wKiom1PD8AOgB7MUAADJTntcfG4554.jpg

引入路由器,将本地通信隔离开。使用多个交换机,并由路由器进行连接。路由器就是用于连接不同网络的。路由器上的接口R1,R2就是网关,比如R1这个网关同A,B,C,D在同一网络,R2这个网关同E,F在同一个网络。



2.通信过程分析

对于图4进行分析。


如果是本地网络通信,比如A和B进行通信的话。

假设A的逻辑地址为1.1,B的逻辑地址为1.2,A要发信号给B,但是A并不知道B的物理地址,也即是MAC-B。于是,A发起一个广播信号寻找B,B收到信号后,告诉A自己的MAC地址。于是A知道了B的物理地址。可以发现,其实广播的过程,就是实现了逻辑地址到物理地址的转换。对于本地通信,路由器会进行隔离,E,F并不会收到广播信号。



如果是跨网络通信,比如A与E进行通信的话。

假设A的逻辑地址为1.1,E的逻辑地址为2.1,A要发信号给E。首先,直观上,我们可以知道A,E并不处于同一个网络,即不是本地网络通信。

第一,那么计算机是如何知道并识别它们不是一个网络的呢?

第二,跨网络,路由器如何进行路由转发?

第三,消息如果最后送达E,那么E上的哪个应用程序进行处理?



其实是这样的:


第一,逻辑地址,应该分为2段,分别标示网络段和主机段。【逻辑地址,说白了,就是IP】


第二,子网掩码用于取得逻辑地址的网络段。

【将IP与子网掩码按位相与即可】

打个比方:

A的逻辑地址为

0000 0001 .  0000 0001

和子网掩码  相与

1111 1111 .  0000  0000

【注意1与任何相与,是本身;0与任何相与是0】

通过计算就是可以得到网络段部分了。


第三,路由器中,不论是动态学习也好,还是手动维护也好,里面都有一张路由表:

网络段  转发接口

x.y.z.w  R1

A.B.C.D  R2

......


类似的,交换机中,也应该存在一张MAC表:

主机 MAC地址

A    MAC-A

B    MAC-B

......



第三,总而言之,可以这样说,IP实现了主机到主机的通信,MAC实现了本地网络通信,端口则实现了同一主机上的不同进程的通信。




本文出自 “我想超越自我” 博客,请务必保留此出处http://zhangfengzhe.blog.51cto.com/8855103/1438163