【EE初阶 - 网络原理】网络基本原理
文章目录
- 1. 网络发展史
- 1.1 独立模式
- 1.2 网络互连
- 1.3 局域网 LAN
- 1.4 广域网
- 2. 网络通信基础
- 2.1 IP地址
- 2.2 端口号
- 2.3 认识协议
- 2.4 五元组
- 2.5 协议分层
- 2.5.1 分层的作用
- 2.5.2 OSI七层参考模型
- 2.5.3 TCP/IP 五层(四层)模型
- 2.5.4 网络设备所在的分层
- 2.5.5 网络分层对应
- 3. 网络通信基本流程
- 3.1 数据传输时的封装分用过程
- 3.2 封装过程
- 3.3 分用过程
- 4. 网络编程
- 4.1 什么是网络编程
- 4.2 网络编程中的基本概念
- 4.2.1 发送端和接收端
- 4.2.2 请求和响应
- 4.2.3 客户端和服务端
- 4.2.4 常见的客户端服务端模型
1. 网络发展史
1.1 独立模式
独立模式: 计算机之间相互独立
1.2 网络互连
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即用多个计算机协同工作完成业务
网络互连:将多台计算机连接在一起,完成数据共享
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信
根据网络互连的规模不同,可以划分为局域网和广域网
1.3 局域网 LAN
局域网,即 Local Area Network -LAN
Local 标识了局域网是本地,局部组建的一种私有网络
局域网内的主机之间能方便的进行网络通信,又称为内网
局域网和局域网之间在没有连接的情况下,是不发通信的
局域网组建网络的方式
(一) 基于网线直连
(二) 基于集线器组建
(三) 基于交换机组建
(四) 基于交换机和路由器组建
1.4 广域网
广域网,即 Wide Area Network -WAN
通过路由器,将多个局域网那个连接起来,在物理上组成很大范围的网络,就形成了广域网.广域网内部的局域网都属于其子网
一个国家内各地的分公司,甚至是海外分公司,把这些分公司以专线方式连接起来,即称为"广域网"
如果是全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集
有时在不严格的环境下说广域网,其实是指互联网
2. 网络通信基础
网络互连的目的是进行网络通信,也就是网络数据传输
更具体一点就是,网络主机中的不同进程之间,基于网络传输数据
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到哪台主机呢?–这里需要使用IP地址来标识
2.1 IP地址
- 概念:IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,IP地址用于定位主机的网络地址
就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地
- 格式:IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节)
通常使用"点分十进制"来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数) 如: 100.4.5.6
2.2 端口号
- 概念:在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据,接收数据的进程–>端口号用于定位主机中的进程
类似于发快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)
- 格式:端口号是 0~65535范围的数字,在网络通信汇总,进程可以通过绑定一个端口号,来发送及时接收网络数据
-
问题1: 有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题**,网络通信是基于二进制 0/1 数据来传输,如何告诉对方发送的数据是什么样的呢?**
-
问题2: 网络通信传输的数据类型可能有很多种:图片,视频,文本等,同一个类型的数据,格式可能也不同,如发送一个文本字符串"你好!" ,如何标识发送的数据是文本类型,及文本的编码格式呢?
-
答: 基于网络数据传输,需要使用协议来规定双方的数据格式
2.3 认识协议
- 概念:协议, 网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵守的一组约定,规则.
比如怎么样建立连接,怎样互相识别等,只有遵守这个约定,计算机之间才能互相通信交流
- 作用: 为什么需要协议?
就好比见网友,彼此协商好穿什么样的衣服,作为提前的约定,也可以称之为协议
计算机之间的传输媒介是光信号的电信号.通过"频率"和"强弱"来表示0和1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式
- 计算机生产商很多
- 计算机操作系统也有很多
- 计算机网络硬件设备,还是有很多
如何让这些厂商之间生产的计算机能够相互顺畅的通信?
就需要约定一个共同的标准,大家都来遵守,这就是网络协议
2.4 五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
- 1. 源IP : 标识源主机
- 2. 源端口号 : 标识源主机中该次通信发送数据的进程
- 3. 目的IP : 标识目的主机
- 4. 目的端口号 : 标识目的主机中该次通信接收数据的进程
- 5. 协议号 : 标识发送进程和接收进程双方约定的数据格式
五元组在网络通信中的作用,类似于发送快递:
CMD中输入 netstat -ano 可以查看网络数据传输中的五元组信息:
如果需要过滤(⼀般是通过端口号或进程PID过滤),可以使用netstat -ano | findstr 过滤字符串
2.5 协议分层
2.5.1 分层的作用
为什么需要网络协议分层? --分层最大的好处,类似于面向接口编程 : 定义好两层间的接口规范,让双方遵循这个规范来对接
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务) ,一方为接口的使用类(使用方,使用服务)
- 对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
- 对于提供方来说,利用封装特性,隐藏了实现的细节,只需要开放接口即可
2.5.2 OSI七层参考模型
OSI:即 Open System Interconnection,开放系统互连
- OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了 7 层。
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
OSI七层模型既复杂又不实用 : 所以OSI七层模型没有落地实现
实际组建网络时,只是以OSI七层模型设计中的部分分层,也就是一下TCP/IP 五层(四层)模型来实现
2.5.3 TCP/IP 五层(四层)模型
通俗的理解 TCP/IP 五层协议各层的作用
举个生活中的例子
- 我们网购了一个刷子
- 我只关心刷子买到后,我要如何使用 --> 应用层
- 卖家只关心,收件人的信息 --> 传输层
- 物流公司只关心包裹是怎样的路径传输 --> 网络层
- 快递员只关心 相邻的节点 --> 数据链路层
从五层模型到四层模型,是因为把数据链路层和物理层看作一个整体
主要是实际实现协议时,数据链路层和物理层本身就不太容易完全分开
因为物理层和硬件设备直接相关,不同的硬件设备,又会影响到数据链路层中的特性,所以数据链路层和物理层的耦合比较紧密,很难把它们完全拆分开
协议分层有一个好处,就是可以灵活的替换层,但是如果站在物理层和数据链路层的角度来看,物理层一旦被替换,那么对应的数据链路层往往也会发生改变,因为它们的高耦合,所以可以把这两层看做一层;
2.5.4 网络设备所在的分层
- 对于一台主机,他的操作系统内核实现了从传输层到物理层的内容,也就是TCP/IP 五层模型的下四层
- 对于一台路由器,它实现了从网络层到物理层,也就是TCP/IP 五层模型的下三层
路由器工作原理
- 主机的数据发送到路由器,路由器收到之后,物理层,数据链路层,网络层解析,重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发
- 路由器工作在网络层,这也叫三层转发
- 对于一台交换机,它实现了从熟路链路层到物理层,也就是TCP/IP 五层模型中的下两层
交换机工作过程
- 主机的数据发送到交换机,交换机收到之后,物理层解析,数据链路层解析,重新构造出新的以太网数据帧,发送给下一个设备数据链路层中,得到以太网数据帧的帧头,信息就足以支持交换机进行下一步工作
- 交换机工作在数据链路成,这也叫二层转发
- 对于集线器,他只实现了物理层
注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层),三层路由器(工作在TCP/IP五层模型的下三层)
随着现在网络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器,我们以上说的网络设备都是传统意义的交换机和路由器
2.5.5 网络分层对应
网络数据传输时,经过不同的网络节点(主机,路由器)时,网络分层需要对应
以下为同一个网段内的两台主机进行文件传输
两台计算机通过TCP/IP协议通讯的过程如下所示
以下为跨网段的主机的文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
3. 网络通信基本流程
3.1 数据传输时的封装分用过程
计算机利用协议进行通信时
- 发送方从上层向下层传输数据,每经过一层都附加一个协议控制信息,到达物理层后将数据包进行转换,送到传输介质,这样的操作称为"封装"
- 数据传输到接收方时,再自下层向上层,逐层去掉协议控制信息,并且完成各层的制定功能,这样的操作,称为"分用"
3.2 封装过程
第一步
- 应用程序,获取到用户输入,构造一个"用户数据包"
这个用户数据包遵守开发这个程序员定义的应用层协议
第二步
- 应用程序调用传输层提供的API,把数据交给传输层,传输层拿到数据后构造出"传输层数段"
- 这个"传输层数据段"遵守传输层协议,主要是TCP协议或者UDP协议
- TCP数据段(传输层数据段) = TCP端头 + TCP载荷
- TCP载荷就是"应用数据"
第三步
- 传输层构造好"传输层数据段"后,继续调用网络层的API,把"传输层数据段"交给网络层,网络层那到数据后构造出"网络层数据报"
- 这个"网络层数据报"遵守网络层协议,主要是IP协议
- IP 数据段(网络层数据报) = IP报头 + IP载荷
- IP载荷就是"传输层数据段"
第四步
- 网络层构造好"网络层数据报"后,继续调用数据链路层的API,把"网络层数据报"交给数据链路层,数据链路层拿到后构造出"数据链路层数据帧"
- "数据链路层数据帧"遵守数据链路层协议,主要是以太网协议
- 以太网数据帧(数据链路层数据帧) = 以太网帧头 + 以太网载荷 + 以太网帧尾
- 以太网载荷就是IP数据报
第五步
数据链路层构造好"数据链路层数据帧"后,继续调用物理层的API,把"数据链路层数据帧"交给物理层
- 物理层给网卡,网卡将上述二进制数据,最终以光/电/电磁信号发送出去
3.3 分用过程
1.信号到达接收方网卡,网卡将这些信息还原为二进制数据,交给上层数据链路层
2.数据到达数据链路层,通过帧头帧尾包含的数据反应出使用的数据链路层协议,按该协议进行解析,将载荷数据传给上层网络层
3.数据到达网络层,通过报头包含的数据反应出使用的网络层协议,按该协议进行解析,将载荷数据传给上层传输层
4.数据到达传输层,通过报头包含的数据反应出使用的传输层协议,按该协议进行解析,将载荷数据传给上层应用层
5.数据到达应用层,按照程序的应用层协议解析,将信息传输给接收者
4. 网络编程
4.1 什么是网络编程
网络编程,网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)
我们只要满足进程不同就行,即便是同一个主机,只要是不同的进程,基于网络来传输数据,也属于网络编程
特殊的,对于开发来说,在条件有限的情况下,一般也都是在同一个主机中运行多个进行来完成网络编程
4.2 网络编程中的基本概念
4.2.1 发送端和接收端
在一次网络数据传输时:
- 发送端: 数据的发送方进程,称为发送端.发送端主机即网络通信中的源主机
- 接收端: 数据的接收方进程,称为接收端.接收端主机即网络通信中的目的主机
- 收发端: 发送端和接收端两端
注意:发送端和接收端只是相对的,只是一次网络数据传输产生数据流向后的概念
4.2.2 请求和响应
一般来说,获取一个网络资源,涉及到两次网络数据传输:
- 第一次:请求数据的发送
- 第二次:响应数据的发送
请求:点一份炒饭
响应:老板端来一份炒饭
4.2.3 客户端和服务端
服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务
客户端: 获取服务的一方进程
对于服务来说,一般是提供:
- 客户端获取服务资源
- 客户端保存资源在服务器
客户端与服务器交互在银行办事
- 银行提供存款服务:用户(客户端)保存资源(现金)在银行(服务端)
- 银行提供取款服务:用户(客户端)获取服务端资源(银行替用户保管的现金)
4.2.4 常见的客户端服务端模型
最常见的场景,客户端是指给用户使用的程序,服务端是提供用户服务的程序
- 1.客户端先发送请求到服务器
- 2.服务端根据请求数据,执行相应的业务处理
- 3, 服务端返回响应,发送业务处理结果
- 4.客户端根据响应数据,展示处理结果(展示获取的资源,或提示保存资源的处理结果)