【Linux进阶之路】网络——“?“(上)

文章目录

  • 一、历史发展
    • 1. 独立形态
    • 2. 互联形态
    • 3. 局域网
  • 二、网络协议
    • 1.OSI七层协议
    • 2.TCP/IP四(五)层模型
  • 三、网络通信
    • 1.封装与解包
    • 2.数据的传输
      • 1.局域网
      • 2.广域网
  • 总结
  • 尾序

  • 本篇文章的目的是带大家初步认识网络,为后面的网络编程打下基础,

一、历史发展

1. 独立形态

【Linux进阶之路】网络——“?“(上)_第1张图片

  • 说明:数据的传递人来完成,效率是较低的,且中间可能会出现错误。

2. 互联形态

【Linux进阶之路】网络——“?“(上)_第2张图片

  • 说明:数据的传输由人变为了机器,更加的高效。
  • 拓展:
  1. 服务器的存储、计算和服务支持,为客户端设备提供各种网络相关的服务和资源。
    【Linux进阶之路】网络——“?“(上)_第3张图片
  2. 光纤:光电信号的传输介质,广泛的用于长距离(百公里)、高速(最大100Gbps)、抗干扰和安全性要求高的场合。
    【Linux进阶之路】网络——“?“(上)_第4张图片
  3. 网线: 电信号的传输介质,适用于需要长距离传输(百米内)、高速传输(最大40Gbps)、安全性要求高以及网络负载大的场合。成本综合来看比光纤较低。
    【Linux进阶之路】网络——“?“(上)_第5张图片
    这是双绞线属于网线的一种。

3. 局域网

随着设备的增多,使用路由器与交换机来保证网络连接的稳定与高效。
【Linux进阶之路】网络——“?“(上)_第6张图片

说明:

  1. 交换机:主要用于在局域网内转发数据包和避免数据包的碰撞,提高网络的安全和稳定。
  2. 路由器:主要功能是连接不同的网络,并提供数据包转发等功能,使得计算机可以通过路由器实现跨网络的通信和互联网访问。
    【Linux进阶之路】网络——“?“(上)_第7张图片
  3. 集线器:一种传统的网络设备,主要功能是将多台计算机或网络设备连接在一起形成局域网,还有信号放大的功能。与交换机相比,集线器的性能较低,无法提供交换机那样的灵活性、安全性和高效性能。因此,在现代网络环境中,交换机已经取代了集线器成为更常见的局域网连接设备。
    【Linux进阶之路】网络——“?“(上)_第8张图片
  • 广域网,简而言之就是由多个局域网组成的。

【Linux进阶之路】网络——“?“(上)_第9张图片

二、网络协议

  • 简而言之,协议其实就是一种" 约定 "。
  • 举个例子:再回学校前,父亲叮嘱你隔一段时间就要给他打电话报一次平安,而你又想省一笔电话费,于是就跟父亲说,我打电话的时候知道是我就先不用接,听电话响几声即可,我们之间定一个规定,电话响一声就挂了意思是放心好了,我没事。电话响两声就挂了的意思是我缺生活费了,赶紧打钱。响三声以及以上就接电话,这是其它事,可以接电话了。因为一般不会有响三声及以上的情况,所以能省一笔电话费。
  • 说明:在抗战期间发电报,以及摩斯密码其实本质上也是一种约定。

 回过头来看,网络传输其实就是光电信号的传输,其实跟发电报一个样,计算机之间需要定一个"约定",需要知道如何将传来的光电信号转换为数字信号,然后再呈现给用户,或者将数字信号转化为光电信号发送给另一个用户。

涉及三点:

  1. 网络完成传输数据。
  2. 传输的数据的接受。
  3. 待发送数据的处理。
  • 说明:协议完成就是后两点。

1.OSI七层协议

  • 纯理论的协议,是协议指定规范,但在实际的协议进行制定中反而过于复杂。
  • 从下到上:
  1. 物理层:例如网卡只负责将数字信号和电信号之间的转换。(数据单位为比特)
  2. 数据链路层:例如交换机负责互联设备之间传送和识别数据帧(特指这一层的数据单位)
  3. 网络层:例如路由器负责地址管理和路由选择,将数据准确的发送到目的地。数据单位为数据报
  4. 传输层:例如通信协议,也就是"约定",负责检测数据是否可靠,通常被嵌入到操作系统中。数据单位为报文段
  5. 会话层:例如会话层协议,负责建立和维护应用程序之间的会话连接,以实现数据传输的可靠性和完整性。数据单位为数据包
  6. 表示层:例如数据转换器,负责将固有形式的信号(比如文本,声音,视频)转换为网络标准数据格式。数据单位为数据单元
  7. 应用层:例如HTTP等协议,负责支持不同应用之间的网络服务。每个协议都有特定的功能和用途,以满足特定的通信需求。数据单位为消息,请求,响应等。

图解:
【Linux进阶之路】网络——“?“(上)_第10张图片

  • 其实这七层协议是贯穿于整个操作系统的,我们可以画一张图来表示之间的关系。

【Linux进阶之路】网络——“?“(上)_第11张图片

2.TCP/IP四(五)层模型

  1. 物理层: 负责光/电信号的传递方式。
  2. 数据链路层: 负责设备之间的数据帧的传送和识别。
  3. 网络层: 负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层。
  4. 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机。
  5. 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
  • 说明:
  1. 四层协议是将物理层和数据链路层合并为链路层。
  2. 应用层包含OSI七层协议的应用层,表示层,会话层。
  3. 因为传输层的TCP协议和网络层的IP协议较为重要因此名字叫做TCP/IP协议,实际上是一系列协议的统称。

图解:
【Linux进阶之路】网络——“?“(上)_第12张图片

  • 说明:从上到下叫数据的封装,从下到上叫数据的解包。网络通信的本质就是不断的封装和解包的过程。
  • 拓展:在进行向上解包的过程中,目标层可能不止一种协议,因此计算机还要能够正确的识别报文的协议,从而正确的分发数据。

三、网络通信

1.封装与解包

  •  有了上面的铺垫,我们可以先开始数据的封装和解包的具体流程,数据的传输我们放下文讲解。

图解:
【Linux进阶之路】网络——“?“(上)_第13张图片

  • 说明:
  1. 报头:通常位于数据的开头部分,用于描述和控制数据的传输以及提供必要的信息。
  2. 有效载荷:指的是报文除了报头的部分,是用户数据核心的一部分。
  3. 报文 = 报头 + 有效载荷。
  • 每一层都得必须有把报头与有效载荷封装与分离的能力,只有这样才能将这一层有用的数据封装/解析出来,而且通常是通过报头的长度,即数据的字节数

概念铺垫:

  1. 端口号:位于应用层,指的是用于标记进程或者服务的逻辑地址。既然是地址那么一个可执行程序或者服务一般只能拥有一个端口号。
  2. IP地址:
  1. 位于网络层。
  2. 通常分为内网IP和公网IP,分别对应的是局域网和广域网,即内网一般是在私有网络或局域网通信使用,公网IP指的是在全球范围的网络中进行使用。
  3. 会随着位置的变化而变化。
  4. 表示形式一般有两种。
  1. IPv4地址,由四个十进制数字组成,每个数字的取值范围为0到255,以点分隔。例如,192.168.0.1是一个IPv4地址。大小为4个字节。
  2. IPv6地址,由八组四位十六进制数(共32位)组成,每组之间使用冒号分隔。IPv6地址的长度更长,提供了更大的地址空间,以满足互联网上设备的增长需求。大小为32个字节。
  1. MAC地址: 位于数据链路层,是一个由48位二进制数组成的物理地址,通常以十六进制表示,并被用于在局域网内唯一标识网络设备不会随着位置的变化而变化。可以用于准确的定位设备
  2. 使用ifconfig 指令可查看内网地址与以太网的地址:
    【Linux进阶之路】网络——“?“(上)_第14张图片

那么在网络层与数据链路层数据的封装的大致过程即为:

  1. 将源IP地址和目的IP地址等信息作为报头封装起来。
  2. 将当前设备的Mac地址等信息作为报头封装起来。

2.数据的传输

1.局域网

  • 引入:
  • 假设我们在教室里面上课,大概有几十个学生,一个老师讲课。
  • 这个班每个学生的名字唯一。
  • 这时老师要对一名叫张三的学生进行提问,于是在讲台上说:“张三,请你站起来回答一个问题”。
  • 于是这名张三的学生就站起来了……

把老师看做局域网内的一台A主机,张三看做一台B主机,剩余的几十名学生也看做其它主机。

  1. 我们可以明显的看出是老师对张三发消息,即A主机向B主机发送消息。
  2. 其它学生听到了消息的内容,但是不对消息进行处理,因为不是张三,所以没有站起来。即其它主机在不是本主机的数据传输中,有获取信息的能力,但是不对信息进行处理和反应,选择了沉默。

图解:
【Linux进阶之路】网络——“?“(上)_第15张图片

  • 简而言之,向网络中发一条消息和老师在课堂上点一位同学的名的本质其实是相同的,只不过一个是向网络里发,一个是向空气里面发,一份数据都能够各个主机(同学)被"听到",对应的主机会对发来的数据进行接受和处理。

  1. 那么如果老师在课堂上点张三名的同时,其它人也在说话,这时可能会导致张三听不到,可能就得需要老师反复的给张三发消息,也可以让全班人闭嘴,然后再发消息。
  2. 在网络里面这叫做数据之间发生了碰撞,如果对面没收到可以重复再发,或者没有设备在网络里面发送信息时再发,从而避免大部分的碰撞。与此也产生了相应的碰撞避免算法,有兴趣可以了解一下。
  • 拓展:在网络中如果局域网过大,则发生数据碰撞的可能性也就越大,可采取使用交换机的方式将局域网进行分割(原理),进而降低局域网之间发生数据碰撞的可能性。而且交换机也可以完成定向传输的功能。

2.广域网

  • 所谓广域网,其实就是由多种局域网组成的大型互联网,这个局域网可能是无线网(WIFI),以太网,令牌环网等网络的联合,那么我们是如何将不同的局域网联合呢?

  • 答案很简单,使用路由器,将不同数据在不同网络里面进行转发。但是如何转发确保能够发送到目标主机呢?下面我们娓娓道来。

  • 科普小知识:以太网,其中的以太曾被认为是光传播的介质,但实际被证明并不存在,只是科学家假想的一种物质。而Robert Metcalfe即罗伯特·梅特卡夫,以太网的发明者,比较喜欢希腊神话,觉得其中的以太是一种神秘的物质,并且查阅了大量的资料,于是便觉得这符合他的观点,便将发明的网络取名为以太网。

假设要从郑州到云南进行旅游,交通工具使用高铁,采用走一路玩一路的形式进行旅游。

  1. 我们可以先到陕西去看一看兵马俑,然后再考虑往哪一个省份游玩。
  2. 然后我们可以去临近的四川吃一顿火锅,也可以到湖北去看一看黄鹤楼,因为迫切想要去云南,此时我们选择靠近云南的四川。
  3. 吃完火锅之后,我们直奔云南昆明去度假,看看美景,吃一吃美食,顺便静一下心。

【Linux进阶之路】网络——“?“(上)_第16张图片

走进网络:

  1. 首先数据在进行传输的过程前,肯定得知道自己的出发地点和目的地点是哪,即网络层封装进报头的源IP信息和目的IP。也就是从郑州到云南。
  2. 其次在数据传输过程中,得知道自己当前的位置在哪和下一次该去哪。比如我们到了陕西看兵马俑,就得知道往云南可以走四川然后直接到,也可以湖北再转一下再到。其中的路径规划和选择交由路由器,所谓的路径规划其实就是根据网络层的目的IP,在数据链路层进行完成Mac地址的解包和选择新Mac地址封装的过程。
  3. 最终,数据经过路由器不断转发,到源IP所在的局域网,将数据发送到目标主机进行接收。
  • 总结大致图解:
    【Linux进阶之路】网络——“?“(上)_第17张图片
  • 最后,网络的本质其实是在传输数据,而计算机实际上是处理发来的数据,然后再呈现给上层的应用程序,于是就有了各种各样的APP,而一个一个的运行的应用程序不就是操作系统的进程么,那么所谓的网络之间的通信,其实就是进程之间在进行通信。

总结

  1. 认识网络发展的三种基本形态。
  2. 认识网络协议的基本原理与相关概念。
  3. 认识网络传输的基本流程。
  4. 理解网络传输的本质。

尾序

我是舜华,期待与你的下一次相遇!

你可能感兴趣的:(Linux进阶之路,linux,网络)