当前位置:首页 » 《我的小黑屋》 » 正文

网络基础知识

14 人参与  2024年09月08日 18:03  分类 : 《我的小黑屋》  评论

点击全文阅读


目录

网络发展

独立模式

网络互联

局域网LAN

广域网WAN

网络通信基础

IP 地址

端口号

协议

五元组

协议分层

OSI 七层模型

TCP/IP 五层模型

网络设备所在分层

封装和分用

封装 

分用


网络发展

独立模式

独立模式:计算机之间相互独立

网络互联

随着时代的发展,计算机之间需要相互通信,共享软件和数据,即,需要多个计算机协调工作来完成业务,此时就有了网络互联

网络互联:将多台计算机连接起来,完成数据共享

数据共享的本质是网络数据传输,即,计算机之间通过网络来传输数据,也就是 网络通信

根据网络互联的规模不同,可划分为 局域网 广域网

局域网LAN

局域网,即,Local Area Network,简称 LAN

Local 标识了局域网是本地、局部组建的一种私有网络

局域网内的主机之间能够方便的进行网络通信,又称为 内网。局域网和局域网之间在没有连接的情况下,是无法通信的

局域网组件网络的方式有很多种:

(1)基于网络直连

(2)基于集线器组建

(3)基于交换机组建

(4)基于交换机和路由器组建

广域网WAN

广域网,即,Wide Area Network,简称 WAN

通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。其内部的局域网属于其子网

 

网络通信基础

网络互连的目的是进行网络通信,即网络数据传输,也就是 网络主机的不同进程之间,基于网络传输数据

那么,在组件网络时,如何判断是从哪台主机将数据发送到哪台主机呢?这就需要使用 IP 地址 来进行标识

IP 地址

IP 地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,简而言之,IP 地址用于定位主机的网络地址

就像收发快递一样,只有知道对方的收货地址,快递员才能将包裹送到目的地

格式 

IP 地址是一个 32 位的二进制数,通常被分割为 4个 8位二进制数(也就是4个字节),如

11111111 11111111 11111111 00000000

通常使用 点分十进制 的方式来表示,即通过 . 来分割这4个8位二进制数,而每个字节使用十进制来表示,即,a.b.c.d 的格式,如 255.255.255.0

端口号

在网络通信过程中,IP 地址用来标识主机网络地址,而端口号用于标识主机中发送数据、接收数据的进程,简而言之,端口号用于定位主机中的进程

同样的,在收发快递时,不但需要知道收获地址(IP 地址),还需要知道收件人(端口号)

格式

端口号是 0 ~ 65535 范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送和接收网络数据

协议

协议,即 网络协议 的简称,网络协议是网络通信(网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如 如何建立连接,怎样相互识别等。只有遵守这个约定,计算机之间才能相互通信交流

协议(protocol)最终体现为在网络上传输的数据包格式

为社么需要使用协议呢?

计算机之间的传输媒介是 光信号 和 电信号,通过 频率 和 强弱 来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定号双方的数据格式

就如同在和朋友见面之前,需要先彼此协商见面的时间、地点以及要准备的东西,这就是一种提前的约定,也可以称之为协议 

计算机的生产厂商有很多,操作系统也有很多,网络硬件设备也很多,如何让不同厂商之间生产的计算机能够互相通信?

就需要约定一个共同的标准,大家都遵守,这就是 网络协议

五元组

在 TCP/IP 协议中,使用 五元组 来标识一个网络通信:

源IP:标识源主机

源端口号:标识源主机中本次通信发送数据的进程

目的IP:标识目的主机

目的端口号:标识目的主机中本次通信接收数据的进程

协议号:标识发送进程和接收进程双方约定的数据格式

同样的,我们还是以收发快递的例子来理解 五元组 在网络通信中的作用:

 

cmd 中,通过输入 netstat -ano 可以查看网络数据传输中的五元组信息:

协议分层

在网络通信的过程中,其中涉及到的细节是非常多的,若使用一个协议来完成网络通信,就需要考虑到每一个细节,约定好方方面面的内容,这就导致这个协议会非常的复杂

而若一个协议太过复杂和庞大,是非常不利于学习和维护的,因此,就需要将这个 "大而全" 的协议,拆分成多个更能更加单一, "小而细" 的协议

但此时,就会拆分出很多协议。为了让这些协议之间相互配合,就引入了 协议分层将功能定位相似的协议放到同一层中:

上层协议调用下层协议的功能

下次协议为上层协议提供服务

相邻的层次之间可以进行沟通,不能跨层次调用(若跨层次调用,则容易混乱)

当我们对网络协议进行分层后,就类似于 面向接口编程:定义好两层之间的接口规范,让双方遵循这个规范来对接,这样,就能够更好的扩展和维护

对于上层(使用方)来说,并不关心提供方是如何实现的,只需要使用接口即可

对于下层(提供方)来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

那么,协议分层分成几层呢?

OSI 七层模型

OSI,即 Open System Interconnection,开放系统互连

OSI 七层网络模型是一个逻辑上的定义和规范,将网络从逻辑上分为了 7 层

OSI 七层模型是一种框架性的设计方法,其中最主要的功能是帮助不同类型的主机实现数据传输

OSI 七层模型划分为以下七层:

分层名称功能
7应用层针对特定应用的协议
6表示层设备固有的数据格式和网络标准数据格式的转换
5会话层通信管理。负责建立和断开通信连接(数据流动的逻辑通路)管理传输层以下的分层
4传输层管理两个节点之间的数据传输,保证数据被可靠地传输到目标地址
3网络层地址管理和路由选择
2数据链路层互连设备之间的传送和识别数据帧
1物理层以 0 和 1 代表电压的高低、灯光的闪灭,界定连接器和网线的规格

但是,由于 OSI 七层模型太过复杂且不实用,因此,OSI 七层模型并没有实现

在实际组建网络时,只是使用了 OSI 七层模型设计中的部分分层,也就是 TCP/IP 五层模型 来实现

TCP/IP 五层模型

TCP/IP 是一组协议的代名词,其中还包含许多协议,组成了 TCP/IP 协议簇

TCP/IP 通讯协议采用了 5 层层级结构:

分层名称功能
5应用层负责应用程序间的沟通。如:文件传输协议(FTP)、简单电子邮件传输(SMTP)等。
4传输层负责两台主机之间的数据传输。如:传输控制协议(TCP),能够确保数据可靠的从源主机发送到目标主机
3网络层负责地址管理和路由选择。如:在 IP 协议中,通过路由表的方式规划出两台主机之间的数据传输线路(路由)
2数据链路层负责设备之间的数据帧传送和识别。如:网卡设备的驱动、数据差错校验等
1物理层负责 光/电 信号的传递方式。如:光纤、wifi 无线网等。物理层的能力决定了 最大传输速率、传输距离、抗干扰性等。

OSI模型 与 TCP/IP模型:

网络设备所在分层

对于一台 主机,其操作系统内核实现了传输层到物理层的内容,也就是 TCP/IP 五层模型的下四层

对于一台 路由器,其实现了从网络层到物理层,也就是 TCP/IP 五层模型的下三层

对于一台 交换机,其实现了从数据链路层到物理层,也就是 TCP/IP 五层模型的下两层

对于 集线器,其只实现了物理层

在这里,我们所说的是传统意义上的交换机和路由器,也称为 二层交换机(工作在 TCP/IP 五层模型的下两层)、三层路由器(工作在 TCP/IP 五层模型的下三层)

随着网络设备技术的发展,也出现了许多 3 层、4 层交换机,4 层路由器,在本篇文章中,我们所说的网络设备都是指的传统意义上的交互机和路由器

封装和分用

不同的协议层对数据有不同的称谓:

传输层 叫做 段(segment)

网络层 叫做 数据报(datagram)

数据链路层 叫做 帧(frame)

封装 

我们首先来看封装的过程:

假设张三要使用微信给李四发送消息:hello

应用层(应用程序):

从消息输入框获取到张三输入的 hello 后,就将这个字符串构造成一个应用层数据包

假设应用层数据包按照以下应用层协议约定格式来构造(也就是字符串拼接的方式):

接着,应用程序调用操作系统提供的 API,将这个数据包交给传输层

传输层:

将上述数据作为一个整体,再将其构造成 传输层 的 数据段

传输层涉及到的协议主要是 TCP UDP

在这里,我们假设使用的是 UDP 来进行通信,此时就会构造一个 UDP 数据段

上述添加报头的过程,就是 封装,其本质是 字符串拼接,拼接的报头具有一定的结构,能够承载一些关键的用来转发数据的信息

而对于 UDP 报头来说,承载的最重要的信息就是 源端口 和 目的端口

拼接好 传输层 数据段后,再将这个数据段交给下层(网络层)继续进行封装

网络层:

在网络层,涉及到的最核心的协议是 IP 协议

此时,将刚才传输层的 UDP 数据段作为一个整体,再拼接上 IP 报头,构成一个 IP数据报:

IP 报头中也包含了辅助转发的关键信息,其中,最关键的是 源IP 和 目的IP

构造完IP数据报后,IP 协议 继续调用数据链路层 API,将数据交给数据链路层的协议进行处理

数据链路层: 

数据链路层涉及的核心协议是 以太网协议

将 IP 数据报作为一个整体,添加上一个 帧头 和 帧尾

接下来,就将数据交给 物理层

物理层:

将上述以太网数据帧(二进制结构 01001 这样的数据),转换为 光信号/电信号/电磁波,然后进行发送

 经过上述一些列操作,数据才终于发送出去

分用

假设数据已经抵达 李四 的网卡,如何进行处理,其处理过程,就称为 分用

物理层:

物理层接收到 光信号/电信号/电磁波,就将这些物理信号转换成数字信息(二进制的0 1 0 1),得到一个以太网数据帧,进一步将这个数据帧交给数据链路处理

数据链路层:

按照 以太网数据帧 的格式,解析,取出其中载荷,再将其交给上层协议

网络层:

按照 IP 协议 的格式进行解析,取出其中的载荷,再交给上层协议:

传输层:

按照 UDP 协议 格式来解析,取出其中的载荷,再交给上层协议:

应用层(应用程序):

按照程序内部的 应用层协议格式 来解析数据,并将信息在窗口弹出

上述 分用 的过程,其实就是 封装 的逆向过程

在数据传输的过程中,需要通过一系列的交换机或路由器来进行数据转发

在经过交互机或路由器时,上述封装和分用的过程,也是相同的

只是,封装分用的程度不一定到应用层

我们以交换机为例:

物理层:

交换机接收到光电信号后,将其转换成 以太网数据帧 二进制数据,交给数据链路层

数据链路层: 

数据链路层对上述数据进行解析,取出载荷部分,并解析帧头中的关键信息,根据帧头中的信息,决定下一步将数据往哪里发送,并根据这个情况进一步构造出新的以太网数据帧

然后再将这个新的数据交给物理层,并发送出去

若是 路由器,则会 封装分用 到 网络层


点击全文阅读


本文链接:http://zhangshiyu.com/post/157107.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1