计算机网络导论

网络结构的演变

网状结构

最开始的网络,主机之间都是两两相连

好处

这样连接,好处是安全性比较高(A与B之间的连线断了,可以绕一下C);

另外通信不需要互相等待(没有中间交换设备,所以没有竞争的中立资源,所以不需要排队),网络延迟小

需要说明的一点是,网线其实是电路线,通过高低电压的01信号传输信息

此时聪明的小伙伴会提出问题:现在不是有光纤吗,你怎么说网线是电缆线呢?

这样说其实没错,过去没有光纤的时候网线确实是电缆线,通过高低电压传输0101的数据;现在我们通过光纤,只有传输过程是光信号,到我们真正上网使用会将光信号转化为电信号(光猫,也叫调制解调器),所以本质上我们使用的还是电信号

坏处

但是随着机器数量的增多,这样的连接线数量也越来越多

假设我们现在有10万台计算机,按照这种方式连接,每台计算机需要连接99999条线,共4,999,950,000条线,公式是n*(n-1)/2

需要的电缆数量太多,而且电路会越来越复杂

星形结构1

好处

电缆数量 = 计算机数量;

电路简单;

坏处

同时发会互相干扰,因为电压会互相叠加(势能)

星型结构2

所以我们中间加一个交换设备,先发给交换设备,然后交换设备再轮流转发

但是即便是这样,也可能会出现干扰,比如A和B同时给对方发信息,这里一般有两种模式处理:

可以同时发而不需要等待对方的,就是全双工模式;
不能同时双向发,只能一侧发完另一侧发,这样叫半双工;

坏处

另外, 不管全双工还是半双工,都需要在交换设备处排队等待(涉及到了资源的竞争)

现实网络交换结构

每家每户都有各自的网络设备(手机,电脑等),他们通过路由器连接,并轮流转发;

路由器连接到交换机,轮流转发请求,基本上每隔几栋楼会产生一个交换机(一般是在弱电井中,12,24,36根网线的都有);

交换机再连接到核心交换(核心交换的性能更为强劲),核心交换再连接到更高一级的设备......一般是6~8级的连接设备

家用的交换设备是路由器,小区楼之间用小型交换机作为交换设备

向上交换能力依次提升,小区交换机,街道交换机,乡镇交换机,区县交换机......最大的交换机是国家的大区(华北,东北,西北,华中,华东,华南......等),这些交换机之间两两连接

大区之间的数据会互相备份,保证出现问题能够恢复

国与国之间通过海底光缆等互相通信

计算机通信的原理

MAC地址

上面我们说了,最后我们用星型结构将计算机连接起来

我们连接起来是为了什么?自然是为了通信

那么现在问题来了,A要怎样才能发到B那边?

在一个小范围的虚拟内网中,我们一般使用MAC地址进行计算机的区分

MAC地址是每一个带有网卡的设备出厂时给予的一个,全球唯一的,不可改变的物理地址

中间的交换设备当中一般会存储一个MAC地址表,用于转发数据

这样,A只需要在发送数据时,携带B的MAC地址,即可发送数据给B

IP地址

但是MAC只能用于小范围的设备定位,假设跨省甚至跨国的两台计算机通信,依然使用MAC地址,需要遍历上千万的设备才能查询到,显然是不合理的

此时就用到了IP地址

IP = 网络部分(行政划分)+主机部分

IP主要作用是为了寻址

ip地址最多定位到某个交换设备的ip,但是不知道是这个交换设备哪台计算机,所以需要更进一步的,全球唯一的标识(目标设备id,即MAC地址)

IP和MAC共同合作才能实现端到端的通信

以112.113.87.50为例,112.113.87是可能代表网络部分,指定了你是哪个省,哪个市,哪个县的,最后一位表示你的上级交换机的ip地址

DNS服务器

百度的域名是www.baidu.com,我们访问百度只需要输入域名即可,不需要知道它的ip,这就是域名解析

将域名与ip映射起来,需要ip时将域名转化为ip,需要域名时将ip转化为域名

DNS服务器的地址写在了电话卡当中,以下这个是某些移动电话卡的DNS服务器地址

三大运营商各自有各自的DNS服务器集群

当我们访问www.baidu.com时,会先请求DNS服务器(百度会先将自己的域名写入DNS服务器当中),将域名转化为ip,返回给我们;然后我们再带着数据访问百度服务器的ip(可能不止一个ip);最后百度服务器将数据返回给我们

相关推荐
迎風吹頭髮2 小时前
UNIX下C语言编程与实践58-UNIX TCP 连接处理:accept 函数与新套接字创建
c语言·网络·unix
猫头虎6 小时前
如何查看局域网内IP冲突问题?如何查看局域网IP环绕问题?arp -a命令如何使用?
网络·python·网络协议·tcp/ip·开源·pandas·pip
hello_2509 小时前
动手模拟docker网络-bridge模式
网络·docker·桥接模式
武文斌779 小时前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
爱吃喵的鲤鱼9 小时前
仿mudou——Connection模块(连接管理)
linux·运维·服务器·开发语言·网络·c++
爱吃小胖橘9 小时前
Unity网络开发--超文本传输协议Http(1)
开发语言·网络·网络协议·http·c#·游戏引擎
萧鼎10 小时前
Python schedule 库全解析:从任务调度到自动化执行的完整指南
网络·python·自动化
7哥♡ۣۖᝰꫛꫀꪝۣℋ11 小时前
网络层--数据链路层
网络·tcp/ip·智能路由器
_清浅11 小时前
计算机网络【第四章-网络层】
网络·计算机网络·智能路由器
沐浴露z11 小时前
【深入理解计算机网络08】网络层之IPv4
网络·计算机网络·网络编程·信息与通信·408