2150 字
11 分钟
网络编程基本概念

网络通信和协议#

网络通信 指的是不同设备之间通过网络交换数据的过程。
两台主机想要正确通信,必须遵循统一的规则,这些规则就叫做 协议

协议本质上约定了:数据如何封装、如何发送、如何接收、如何校验,以及出现错误后如何处理。

网络协议和OSI网络模型#

网络协议 是一组通信规则,用来保证不同厂商、不同系统的设备能够互联互通。
为了更清晰地理解网络通信过程,人们把复杂的通信过程分层描述,典型代表就是 OSI 七层模型

OSI 七层模型 自下而上分别是:

  1. 物理层:负责比特流传输,例如网线、电信号、光信号。
  2. 数据链路层:负责相邻节点之间的数据传输,例如 MAC 地址、帧。
  3. 网络层:负责路径选择与跨网络传输,例如 IP 协议。
  4. 传输层:负责端到端通信,例如 TCP、UDP。
  5. 会话层:负责建立、管理、终止会话。
  6. 表示层:负责数据格式转换、加密解密、压缩解压。
  7. 应用层:直接为用户程序提供服务,例如 HTTP、FTP、SMTP。

OSI 模型的意义 主要在于:

  1. 降低网络系统设计复杂度。
  2. 让每一层只关注自己的职责。
  3. 便于协议标准化与模块化开发。
  4. 出现故障时更容易定位问题。

TCP/IP模型#

在实际互联网中,更常用的是 TCP/IP 模型
它比 OSI 模型更贴近真实网络实现,通常分为四层或五层。

常见四层 TCP/IP 模型 包括:

  1. 网络接口层:对应 OSI 的物理层和数据链路层。
  2. 网络层:主要协议是 IP,负责寻址和路由。
  3. 传输层:主要协议是 TCP 和 UDP,负责进程之间的通信。
  4. 应用层:包含 HTTP、HTTPS、DNS、FTP 等协议。

数据在发送时会经历逐层封装:

  1. 应用层产生原始数据。
  2. 传输层添加 TCP 头或 UDP 头。
  3. 网络层添加 IP 头。
  4. 网络接口层再封装成帧并发送。

接收方则进行逐层拆包,还原出原始数据。

IP地址#

IP 地址 用于唯一标识网络中的一台主机。
可以把它理解为设备在网络中的地址,没有 IP 地址,数据就不知道该发送到哪里。

IP 地址主要分为两类:

  1. IPv4:由 32 位二进制组成,通常写成点分十进制形式,例如 192.168.1.10
  2. IPv6:由 128 位二进制组成,地址空间更大,例如 2001:db8::1

按照使用范围,IP 地址还可以分为:

  1. 公网 IP:可在互联网中直接访问。
  2. 私网 IP:通常用于局域网内部,常见网段有 192.168.x.x10.x.x.x172.16.x.x172.31.x.x

在网络通信中,IP 地址负责找到目标主机,但只靠 IP 地址还不能确定具体是主机上的哪个程序在通信,因此还需要 端口号

端口号#

端口号 用于标识一台主机上的某个具体应用程序或服务。
IP 地址定位的是主机,端口号定位的是主机中的进程。

端口号范围0 ~ 65535,通常分为:

  1. 知名端口0 ~ 1023,例如 HTTP 默认端口 80,HTTPS 默认端口 443
  2. 注册端口1024 ~ 49151,常用于某些固定服务。
  3. 动态或私有端口49152 ~ 65535,通常由客户端临时使用。

例如访问网站时,目标可能是:

服务器IP + 80端口

这表示把数据发送到某台服务器上的 Web 服务程序

客户端和服务端#

网络程序通常分为 客户端服务端 两部分。

  1. 服务端:负责提供服务,通常长期运行并监听固定端口,等待客户端连接或请求。
  2. 客户端:负责发起请求,主动去连接服务端并获取结果。

以浏览器访问网页为例:

  1. 浏览器是客户端。
  2. 网站服务器是服务端。
  3. 浏览器向服务器发起请求。
  4. 服务器返回网页数据给浏览器。

在编程中,两者职责不同:

  1. 服务端 重点在于监听、接收连接、处理多个请求。
  2. 客户端 重点在于连接目标主机、发送请求、接收响应。

UDP和TCP#

UDP 和 TCP 都是传输层协议,用于实现进程与进程之间的通信,但两者设计目标不同。

协议主要特点
UDP无连接、速度快、开销小,但不保证可靠性
TCP面向连接、可靠、有序,但开销较大

简单理解:

  1. UDP 更像“发消息”,发出去就结束,不确认对方是否收到。
  2. TCP 更像“打电话”,先建立连接,再进行可靠通信。

UDP网络协议#

UDP 全称是 User Datagram Protocol,即 用户数据报协议
它在发送数据之前不需要建立连接,直接把数据打包后发出去,因此效率较高。

UDP 的通信特点是 面向数据报。发送方每发送一次,就是一个独立的数据包;接收方一次接收的也是一个完整数据报。

UDP编程步骤#

UDP 编程的一般流程如下:

  1. 创建 Socket 对象,指定使用 UDP 协议。
  2. 如果是接收方,可以绑定本地 IP 和端口。
  3. 发送方直接调用发送接口,把数据发送到目标 IP 和端口。
  4. 接收方调用接收接口,获取数据报。
  5. 通信结束后关闭 Socket。

UDP 通信通常不需要先建立连接,因此实现简单,适合快速收发短消息。

UDP特点与优缺点#

UDP 的特点:

  1. 无连接
  2. 不保证数据一定到达
  3. 不保证数据按顺序到达
  4. 没有重传机制
  5. 首部开销小,效率较高

UDP 的优点:

  1. 传输速度快。
  2. 实现简单。
  3. 资源消耗较小。
  4. 适合实时性要求高的场景。

UDP 的缺点:

  1. 容易丢包。
  2. 数据可能乱序。
  3. 不能自动处理可靠传输问题。

UDP应用场景#

UDP 常用于 对实时性要求高、对少量丢包可容忍的场景,例如:

  1. 语音通话。
  2. 视频直播。
  3. 在线游戏中的实时状态同步。
  4. DNS 查询。
  5. 局域网广播和组播。

TCP网络协议#

TCP 全称是 Transmission Control Protocol,即 传输控制协议
它是一种 面向连接、可靠、有序、基于字节流 的传输协议。

在正式通信之前,TCP 需要先建立连接;通信结束后,还要断开连接。
为了保证可靠性,TCP 提供 确认应答、超时重传、流量控制、拥塞控制 等机制。

TCP编程步骤#

TCP 编程的一般流程如下:

服务端步骤:

  1. 创建 ServerSocket 或监听 Socket 对象。
  2. 绑定本地 IP 和端口。
  3. 监听客户端连接。
  4. 接收到连接后,得到与客户端通信的 Socket 对象。
  5. 通过输入输出流或收发接口与客户端交换数据。
  6. 通信结束后关闭连接。

客户端步骤:

  1. 创建 Socket 对象。
  2. 主动连接服务端 IP 和端口。
  3. 连接成功后发送数据。
  4. 接收服务端返回的数据。
  5. 通信结束后关闭连接。

TCP特点与优缺点#

TCP 的特点:

  1. 面向连接
  2. 可靠传输
  3. 按顺序到达
  4. 基于字节流
  5. 具有流量控制和拥塞控制机制

TCP 的优点:

  1. 数据可靠,不易丢失。
  2. 能保证顺序。
  3. 适合传输重要业务数据。

TCP 的缺点:

  1. 建立连接和断开连接有额外开销。
  2. 传输速度通常比 UDP 慢。
  3. 协议实现更复杂。

TCP应用场景#

TCP 适用于 对准确性、完整性要求高的场景,例如:

  1. 网页访问。
  2. 文件传输。
  3. 邮件发送。
  4. 数据库连接。
  5. 即时通信中的可靠消息传输。

Socket编程#

Socket 可以理解为网络通信的“插座”或“接口”,应用程序通过它与传输层协议进行交互。
无论是 TCP 还是 UDP 编程,最终通常都要通过 Socket 来完成数据发送和接收。

Socket 编程的核心作用包括:

  1. 创建网络通信端点。
  2. 绑定本地地址和端口。
  3. 建立连接或直接发送数据。
  4. 接收远程主机发来的数据。
  5. 在通信结束后释放资源。

根据协议不同,Socket 编程可以分为两类:

  1. UDP Socket:无连接,直接发送数据报。
  2. TCP Socket:面向连接,需要先建立连接再通信。
网络编程基本概念
https://fuwari.vercel.app/posts/ai/others/网络编程基本概念/
作者
Lorem Ipsum
发布于
2026-04-16
许可协议
CC BY-NC-SA 4.0