目录
网络原理
网络互连:将多台计算机连接在一起,完成数据共享
网络通信:数据共享本质是网络数据传输,即计算机之间通过网络来传输数据
根据网络互连的规模不同,可以划分为局域网和广域网
局域网(LAN)
定义:局域网(Local Area Network)指在有限地理范围(如家庭、办公室、校园)内连接多台设备的私有网络
特点:
·高速传输(通常使用以太网、Wi-Fi等技术)
·低延迟,适合实时通信(如游戏、视频会议)
·设备间可直接通信(无需公网IP)
常见设备:
·交换机(Switch):负责局域网内设备的数据帧转发
·路由器(Router):连接不同网络(如LAN和互联网)
·网卡(NIC):设备接入网络的硬件接口
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的
局域网组建网络的方式有很多种:
1.基于网线直连

2.基于集线器组建

3.基于交换机组建

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

广域网(WAN)
定义:广域网通过公共或专用通信链路(如光纤、卫星、5G)连接多个局域网(LAN)或城域网(MAN),跨越地理边界。通过路由器,将多个局域网链接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网

如果属于全球化的公共型广域网,则称为互联网(又称公网、外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实指的便是互联网
与LAN的区别:
特性 LAN WAN
覆盖范围 小范围(办公室、家庭) 大范围(城市、国家、全球)
传输速度 高(Gbps级) 较低(Mbps到Gbps级)
延迟 低(毫秒级) 较高(几十到几百毫秒)
管理权 私有网络 通常由运营商管理
典型技术 以太网、Wi-Fi 光纤、MPLS、SD-WAN、5G
常用场景
·企业分支互联(如总部与分公司的VPN)
·互联网(全球最大的WAN)
·云服务(如AWS、Azure的跨区域数据中心互联)
网络通信
网络互连的目的是进行网络通信,也就是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到哪台主机呢?
这就需要使用IP地址来标识
IP地址
概念
IP地址主要是用于标识网络主机、其他网络设备(如路由器)的网络地址。简单来说,IP地址用于定位主机的网络地址。就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。
格式
IP地址是一个32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节),如:01100100.00000100.00000101.00000110。
通常用"点分十进制"的方式来表示,即a.b.c.d的形式(a、b、c、d都是0~255之间的十进制整数)。如:100.4.5.6
端口号
在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程(动态应用程序)。简单来说:端口号用于定位主机中的进程
在本文末尾,我们会简单介绍,关于进程和应用程序之间的练习
类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货人(端口号)
格式
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据
问题:
有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同。如发送一个文本字符串"你好!";如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式(数据类型+编码格式)
网络协议
概念
协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流
协议最终体现为在网络上传输的数据包的格式
作用
为什么需要协议?
计算机之间的传输媒介是光信号和电信号。通过"频率"和"强弱"来表示0和1这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式
·计算机生产厂商有很多;
·计算机操作系统也有很多;
·计算机网络硬件设备也是有很多
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信呢?
这时候就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议
五元组
在TCP/IP协议中,用五元组来表示一个网络通信:
- 源IP:标识源主机
- 源端口号:标识源主机中该次通信发送数据的进程
- 目的IP:标识目的主机
- 目的端口号:标识目的主机中该次通信接受数据的进程
- 协议号:标识发送进程和接受进程双方约定的数据格式
可以在cmd中输入netstat -ano中 查询网络数据传输中的五元组信息:

关键列的含义:
1.协议:传输层协议(TCP/UDP)
2.本地地址:本机的IP和端口(源IP,源端口)
3.外部地址:通信对端的IP和端口(目的IP,目的端口)
4.状态:连接状态(如LISTENING、ESTABLISHED)
5.PID:占用该连接的进程ID
在上述所说的1、2、3即包含了五元组
PID表示进程 它是进程标识符的缩写,用于唯一标识操作系统中的一个进程,它是一个非负整数。每当操作系统运行一个程序时,都会创建一个进程,并为其分配一个唯一的PID。这个PID在进程的生命周期内是唯一的,但当进程终止后,PID会被系统回收并可能重新分配给新的进程
协议分层
协议分层是将网络通信过程划分为多个独立 且相互关联的层次,每次负责特定的通信功能,通过层间接口实现信息交换。
以下是对协议分层的详细解释:
协议分层的原理
网络通信非常复杂,如果我们设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂、庞大。所以我们想把一个大的协议,拆分成若干个小的、功能单一的协议。
分层类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接
在代码中,类似于定义好一个接口,一方为接口的实现类(提供方,提供服务),一方为接口的使用类(使用方,使用服务)
协议分层的好处:
1.对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
2.对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可
分层后使得这些协议能够遵守:
·只有相邻两层协议之间可以进行交互
·上层协议可以调用下层协议
·下层协议可以给上层协议提供服务(协议之间的交互,不能跨层进行)
协议分层的层次
常见的协议分层模型有OSI七层模型(下图左侧部分)、TCP/IP四层(五层)协议模型(下图右侧部分)。在实际应用中,由于OSI七层模型过于复杂,TCP/IP四层模型的网络接口层包含了网络链路层和物理层,不利于学习和理解,因此TCP/IP五层协议模型更为常用。
我们在这里不进行讲解OSI七层模型,只讲解TCP/IP五层协议模型。
TCP/IP五层模型

TCP/IP五层协议模型(如上图右侧部分)包括:
5.应用层:负责应用程序之间的通信,定义了应用程序间通信的报文格式和规则。
例如,HTTP协议用于Web浏览器和Web服务器之间的通信,SMTP协议用于电子邮件的发送等
协议:包括简单邮件传输协议(SMTP)、文件传输协议(FTP)、超文本传输协议(HTTP)、网络远程访问协议(Telnet)。
4.传输层:负责两台主机之间的数据传输,提供端到端的通信服务
传输层定义了端口这个概念,应用程序发送数据需要通过端口发送,接收数据也要通过端口接收。
协议:主要包括传输控制协议(TCP)和用户数据报协议(UDP)
TCP特点:面向连接、可靠传输、流量控制、拥塞控制
UDP特点:无连接、不可靠传输、速度块、开销小
3.网络层:负责地址管理和路由选择,确保数据从源主机传输到目标主机。
例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划处两台主机之间的数据传输的线路(路由)。路由器工作在网络层,根据路由表进行数据包转发。
协议:主要使用互联网协议(IP)进行地址标识和路由规划
2.数据链路层:负责在两个相邻节点之间传送数据,将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。数据链路层定义了MAC地址,用于子网内的通信。交换机工作在数据链路层,根据MAC地址表进行数据帧转发。
协议:以太网、令牌环网、点对点协议等
1.物理层:负责光/电信号的传递方式,确保数据在物理媒介上的正确传输。
例如网线(双绞线)、同轴电缆、光纤、电磁波(WiFi)都属于物理层。
简单来说,物理层的协议就是约定这些硬件设施要符合的要求是怎样的。集线器工作在物理层,主要功能是信号放大和转发
程序员主要关注应用层,通过编写程序来使用这些协议进行网络通信
在协议分层中,数据在发送端从上层到下层(5-->1)逐层封装,每层都会添加相应的首部信息(称为报头、包头),形成新的数据单元。然后,这个新的数据单元会被传递给下一层,直到最终到达物理层并发送出去。在接受端,数据从下层到上层(1-->5)逐层解封装,每层都会去除相应的首部信息,最终还原成原始数据
总结:
数据在发送端 是从(5--->1)逐层封装 每层都添加相应的首部信息
数据在接受端 是从(1--->5)逐层解封装 每层都去除相应的首部信息
网络设备所在分层
主机:它的操作系统内核实现了从传输层到物理层的内容--TCP/IP五层模型的下四层
路由器:它实现了从网络层到物理层--TCP/IP五层模型的下三层
交换机:它实现了从数据链路层到物理层--TCP/IP五层模型的下两层
集线器:它只实现了物理层
我们之前在协议分层中说过,数据在发送端从上层到下层逐层封装。在接受端,数据从下层到上层逐层解封装,还原成原始数据
接下来我们就详细讲解封装和分用
封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)
封装:应用层数据通过协议栈发到网络上(数据链路层)时,每层协议都要加上一个数据首部(header)。首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息
分用:数据封装成帧(数据链路层)后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对于的上层协议处理
注意:网络数据传输时,数据在哪一层,就需要遵守那一层的协议
封装步骤

分用步骤

数据封装过程
封装流程图如下:

封装流程解释
1.应用层:应用层报文
2.传输层:添加TCP头部
3.网络层:添加IP头部
4.数据链路层:添加帧头和帧尾
5.物理层:将帧转换为比特流,通过网卡发送到物理介质(如光纤、网线)
数据分用过程
分用流程图如下:

分用流程解释
1.物理层:接收到比特流,重组为以太网帧
2.数据链路层(以太网):校验帧尾,检查目的MAC是否为本机,剥离帧头和帧尾,提取IP数据包
3.网络层(IP):检查目的IP是否为本机IP,剥离IP头部,提取TCP段
4.传输层(TCP):根据TCP头部中的目的端口,找到监听该端口的进程(如浏览器),剥离TCP头部,传递HTTP相应报文给应用层
5.应用层:浏览器解析响应
注意:
封装:方向自上(应用层)向下(物理层),主要是添加头部/尾部,形成协议数据单元。依赖目标地址、端口、协议类型等
分用:方向自下向上,主要是剥离头部/尾部,根据字段分发数据。依赖MAC地址、IP地址、端口号等
补充
进程和应用程序的关系
应用程序:是用户使用的软件(如浏览器、qq等),通常由代码、资源文件组成,是静态的程序文件(如 .exe、.app)
进程:是应用程序在操作系统中的动态执行示例。当程序运行时,操作系统会为其分配内存、CPU时间片等资源,形成一个进程
关系:
一个应用程序可以对应多个进程(如Chrome浏览器每个标签页可能独立为一个进程)
一个进程也可以服务于多个应用程序(如数据库服务进程被多个应用共享)
可以将进程和应用程序进行类比:
应用程序=乐谱(静态的指令集合)
进程=乐队演奏乐谱的过程(动态执行,占用资源)