Linux网络
一、网络诞生背景及产生的诸多问题
1. 1 网络诞生背景
计算机最初一定是相互独立的。但我们由很多工作需要相关协作完成,当时的解决办法是用某些硬件将数据进行拷贝交给其他人。但该过程中设计到人力,一旦设计到人力必然导致效率下降。这也为网络的诞生埋下伏笔!
后来网络的诞生,让多台计算机连接在一起,数据共享,实现网络互联。随着计算机的数量越来越多,我们通过交换机和路由器将众多的计算机全部链接起来,构成了局域网LAN。但随着局域网的产生,我们来需要将相隔千里的计算机链接起来,比如将中国和美国的一些计算机连接起来,由此广域网的概念诞生!
1.2 网络诞生面临的困境
网络的诞生本质上还是用于不同的主机间的相互通信。而在每台计算机内部,硬件之间的数据拷贝交换本身就是一种通信行为,而每台计算机中硬件的个数是有限的,并且由OS管控!而不同机器间通信,就是不同机器上的网卡间的相关通信。两者也是硬件间的通信,根本在于后者通信的距离变长,并且中间会经过其他众多设备!
距离变长,经过众多设备比如会导致如下问题:
- 如何保证数据准确的由一跳交给下一跳?
- 在转发过程中,如何查找路径,定位目标主机?
- 如果转发过程中发生数据丢包,如何解决?
- 向目标设备发送数据成功后,目标设备如何使用接收到的数据?即如何处理接收到的数据?(即接收到的信息很杂,如何分辨处理这些信息)
二、网络协议栈(OSI七层模型、TCP/IP五层模型)
为了解决上述问题,OSI(Open System Interconnection,开放系统互连)定义出了相关协议 —— 网络协议栈!而协议本质上就是一种约定,每一种约定对于上述一种问题的解决办法!软件上,绝大部分优秀的软件都是分成的,这不仅可以完成不同软件间的解耦合,未来也非常方便对软件进行维护、更新、替换和优化等!每一层协议解决不同问题,从而将网络进行分层。网络