计算机网络——网络基础
一,什么是网络?
网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、路由器等设备。用通俗大白话讲,网络 = 把好多设备连起来,能互相发数据、传信息的一套系统。
网络设备(结点)有:交换机、路由器、集线器等。
传输介质(链路)有:双绞线、同轴电缆、光纤。
交换机(Switch):用于连接多个结点,从而组建计算机网络。家庭、公司、学校等场景,通常会使用交换机来搭建内部网络(如局域网)。
路由器(Router):能够将两个或多个独立的计算机网络相互连接,从而组成规模更大的计算机网络,这种由多个网络互联而成的系统也被称为互连网(Internetwork)。
下图是一个简单的网络示意图:

1.1互联网
把多个网络连接起来就构成了互联网。 目前最大的互联网就是我们常说的因特网。
互联网(Internet,因特网):是由多个计算机网络通过路由器等设备,按照统一的TCP/IP 协议相互连接而成的、覆盖全球的最大互连网,实现了全球范围内计算机之间的数据通信与资源共享。
图示:
1.2IP地址
IP 地址(Internet Protocol Address):是给连接到互联网上的每一台计算机(或设备)分配的一个唯一的逻辑地址,用来在网络中标识设备的位置,实现数据在不同设备之间的准确传输。
你可以把 IP 地址想象成设备在互联网上的 **“门牌号”**:每台联网设备(电脑、手机、路由器、摄像头等)都有一个专属的 IP 地址。就像快递员要靠地址找到你家,网络数据也要靠 IP 地址找到目标设备。它是逻辑地址,可以变更(比如你换个 WiFi,IP 就变了),和设备的物理 MAC 地址不同。
IP地址的目的:在网络中唯一标识一台主机;路由器根据 IP 地址,为数据包选择从源设备到目标设备的最优传输路径;让数据能准确送达目标设备,实现跨网络的通信。
IP 地址主要分为 IPv4 和 IPv6 两种格式:
IPv4 地址:是 32 位二进制地址,采用点分十进制格式(A.B.C.D),用 . 分隔为 4 个段,每段对应 8 位二进制数,取值范围为 0~255。示例:192.168.31.1
IPv6 地址:是 128 位二进制地址,采用冒分十六进制格式(XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX),用 : 分隔为 8 个段,每段对应 16 位二进制数,用 4 位十六进制数表示。示例:2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b
IP 地址组成:IP 地址由网络号和主机号组成;网络号定网段,主机号定设备。

网络号(前面一段):
作用:标记你属于哪一个局域网 / 网段。
同一个教室、宿舍、公司内网,所有人网络号都一样。
主机号(后面一段):
作用:标记这个网段里具体哪一台设备。
同一内网里,每台设备的主机号独一无二。
子网掩码用来划分哪部分是网络号、哪部分是主机号:掩码里全 1 的位置 → 对应 IP 是网络号
掩码里全 0 的位置 → 对应 IP 是主机号。
例:IP:192.168.1.10 掩码:255.255.255.0
→ 网络号:192.168.1
→ 主机号:10
IP 地址分类:

由于每类地址的开头是固定的,因此每类地址都有自己的范围:
- A 类: IP 地址范围为 0.0.0.0~127.255.255.255。
- B 类: IP 地址范围为 128.0.0.0~191.255.255.255。
- C 类: IP 地址范围为 192.0.0.0~223.255.255.255。
- D 类和 E 类一般不使用 。
使用命令“ifconfig”可以在 linux 查看自己的 ip 地址。
1.3MAC地址
MAC 地址(物理地址 / 网卡地址):是网卡出厂时固化在硬件里的48 位唯一物理编号,用来在局域网内部标识设备、转发数据。
组成成分:总长:48 位二进制 → 写成12 个十六进制字符;
格式示例:00:50:C2:1F:3A:7B ,前 6 位:厂商编号(识别网卡厂家),后 6 位:设备唯一序列号(全球独一份)。
MAC示例:使用ifconfig命令。
1.4端口号
端口号:是操作系统给每个网络程序分配的逻辑编号,用来区分同一台主机上不同的网络服务 / 应用,实现数据精准转发到对应软件。
端口号就是应用程序的代号。一台电脑只有一个 IP,但同时开着微信、浏览器、游戏、网盘这些软件靠端口号区分数据该给谁。
那么也就是说我们通过一个ip地址+端口号就可以指定一个主机上的应用程序:ip+port;
实现A主机上的一个进程和B主机上的一个进程实现通信:通过源主机的应用程序:ip+port 和目的主机的应用程序ip+port就可以通讯了。
核心特点
范围:0~65535;工作在:传输层(TCP/UDP);只在本机生效,不跟着外网走。
常用默认端口:
- 80 → 网页 HTTP
- 443 → 加密网页 HTTPS
- 22 → Linux 远程 SSH
- 3306 → MySQL 数据库
- 21 → FTP 文件传输
总结:IP 找电脑,端口找软件;数据进门按端口,分给对应程序。
Linux查看所有端口占用:
netstat -tulnp
# 或者新版常用
ss -tulnp
Linux查某个端口有没有开(比如 3306、80、22):
netstat -tulnp | grep 3306
1.5网络协议
网络协议:是网络中所有设备(电脑、手机、路由器、服务器)必须共同遵守的一套规则、标准和约定,用来统一数据的格式、传输顺序、报错处理,保证不同设备之间能听懂彼此、正常通信。
常见协议如下:
- HTTP:超文本传输协议,用于网页浏览。
- FTP:文件传输协议,用于在网络中传输文件。
- TELNET:互联网远程登录服务的标准协议,用于远程控制主机。
- TCP:传输控制协议(Transmission Control Protocol),是一种面向连接、可靠、基于字节流的传输层通信协议,保证数据可靠送达。
- UDP:用户数据报协议,是一种无连接、不可靠但高效的传输层协议,适合对速度要求高的场景(如直播、游戏)。
- IP:网际协议(Internet Protocol),负责网络层寻址与路由,为数据找到目标设备。
- ICMP:因特网控制报文协议,用于网络诊断与差错控制(如 ping 命令)。
- ARP:地址解析协议,根据目标 IP 地址获取对应的 MAC 地址,实现局域网内寻址。
- RARP:逆地址解析协议,根据 MAC 地址获取对应的 IP 地址(现已较少使用)。
- MySQL 3306:数据库通信协议。
二,网络分层模型
网络分层是将计算机网络的数据传输功能,按逻辑划分为多个独立层级;每层定义固定功能、接口与规则,通过层与层之间交互完成通信,简化设计、方便维护与排错。
通俗理解:
网络分层:把复杂的网络通信,拆成好几层,每层只干自己一件事,互不干扰、分工合作;上层只管调用服务,下层只管干活,改一层不影响其他层。
打比方:寄快递 —— 打包员、分拣员、运输司机、派送员,各干各的,不用懂别人细节。
2.1OSI模型和TCP/IP模型
两个核心分层模型:
- OSI 七层模型(理论教学用)
物理层→数据链路层→网络层→传输层→会话层→表示层→应用层
- TCP/IP 四层模型(实际互联网在用)
网络接口层→网际层→传输层→应用层
OSI:是国际标准化组织制定的开放式系统互联七层参考模型,一套理论标准,用来统一全世界网络设备的通信规则、分层分工。
TCP/IP 模型:是互联网实际在用的四层分层模型,由美国国防部制定,把复杂网络通信简化成 4 层,所有上网设备(手机、电脑、路由器)都遵守这套规则,是真实互联网的通用标准。
图示:

OSI模型每层干啥(从上到下)
- 7 应用层:给用户用(网页、文件、登录)。
- 6 表示层:加密、转格式、翻译数据。
- 5 会话层:建立 / 断开通信连接。
- 4 传输层:TCP/UDP,端口、稳不稳。
- 3 网络层:IP 地址、路由选路。
- 2 数据链路层:MAC 地址、局域网转发。
- 1 物理层:网线、光信号、传 0 和 1。
TCP/IP 模型每层干啥(从上到下)
- 应用层:给用户提供服务 → HTTP、HTTPS、DNS、FTP。
- 传输层:管靠谱传输、分端口 → TCP(稳)、UDP(快)。
- 网际层:管 IP 地址、跨网指路 → IP、ICMP、ARP。
- 网络接口层:管 MAC、网线、信号 → 网卡、交换机、以太网。
2.2数据链路层
数据链路层,是 TCP/IP、OSI 模型的第二层;在物理传输基础上,把二进制比特流封装成帧,依靠MAC 地址完成局域网内精准转发,纠错、校验,保证相邻设备可靠通信。
数据链路层的核心功能是:通过各类控制协议,将存在差错的物理信道,转换为可可靠传输数据帧的无差错数据链路。
在计算机网络中,物理链路会因各类干扰而不可靠。因此,该层在物理层提供的比特流基础上,通过差错控制机制,将易出错的物理线路改造为可靠的数据链路,为上层提供稳定的物理介质数据传输方法。
子层划分
数据链路层通常分为两个子层:
-
MAC 子层(介质访问控制子层):主要解决共享型网络中多用户对信道的竞争问题,负责完成网络介质的访问控制。
-
LLC 子层(逻辑链路控制子层):主要负责建立和维护网络连接,执行差错校验、流量控制与链路管理。
TCP/IP 体系中的定位
在 TCP/IP 协议体系中,数据链路层的功能由网卡接口的网络驱动程序实现,用于处理数据在物理媒介上的传输。不同物理网络具有不同的电气特性,网络驱动程序会隐藏这些底层细节,为上层协议提供统一的接口。
该层重点关注三个核心问题:封装成帧、透明传输和差错检测。
2.3网络层
网络层(OSI 第 3 层 / TCP/IP 网际层)
负责跨网段寻址、逻辑路由转发,依靠IP 地址,把数据包从源主机,一路转发到不同网络里的目标主机,实现全网通信。
网络层主要实现数据包的路由选择与转发功能。互联网依托多级路由器,将各地主机与局域网相互连通,因此两台通信主机通常无法直连,需经过多个路由器中转。网络层的核心作用,就是筛选中转节点、规划通信路径;同时向下屏蔽复杂的网络拓扑细节,让上层传输层与应用程序感知不到中间转发流程,仿佛双方可直接通信。
网络层的核心协议为IP 协议(网际协议)。IP 协议依据数据包的目的 IP 地址判定转发方式:若无法直接送达目标主机,便匹配合适的下一跳路由器完成转交;该过程逐节点重复执行,直至数据包抵达目的地,传输失败则直接丢弃。由此可见,IP 协议采用逐跳转发的通信机制。
ICMP 协议(网际控制报文协议)是 IP 协议的重要补充,主要用于网络连通性检测与故障诊断。
IP 协议为上层提供无状态、无连接、不可靠的基础传输服务:
- 无状态:通信双方无需同步传输记录,所有 IP 数据报独立收发、互不关联,无法处理乱序与重复报文;IP 头部标识仅用于数据包分片重组,不保障接收顺序。优势是架构简单、传输高效,无需占用系统资源维护通信状态。
- 无连接:双方无需长期留存对方通信信息,上层每次发送数据,都必须明确填写目标 IP 地址。
- 不可靠:IP 协议仅尽最大努力转发数据包,不保障数据必定完整、准确送达接收端,丢包、错包无纠错与重传机制。
IPv4 数据报的头部结构,是网络层 IP 协议的核心数据格式,用来给数据包 “贴标签”,指导路由器如何转发。
图示:

| 字段 | 位数 | 核心作用 |
|---|---|---|
| 版本号 | 4 位 | 标识 IP 版本,IPv4 固定为 4 |
| 头部长度 | 4 位 | 表示 IP 头部有多少个 32 位字(最小值 5,即 20 字节) |
| 服务类型 (TOS) | 8 位 | 标记优先级、延迟、吞吐量等服务质量要求 |
| 总长度 | 16 位 | 整个 IP 数据报的总字节数(头部 + 数据) |
| 标识 | 16 位 | 同一个分片的数据包共用一个标识,用于重组 |
| 标志 | 3 位 | 控制分片:是否允许分片、是否还有后续分片 |
| 片偏移 | 13 位 | 标记分片在原数据包中的位置,用于拼接还原 |
| 生存时间 (TTL) | 8 位 | 数据包最多能经过的路由器数,每过一个路由器减 1,到 0 就丢弃(防止环路) |
| 协议 | 8 位 | 标识上层使用的协议(如 6 = TCP,17 = UDP) |
| 头部校验和 | 16 位 | 校验 IP 头部是否在传输中出错 |
| 源端 IP 地址 | 32 位 | 发送方的 IP 地址 |
| 目的端 IP 地址 | 32 位 | 接收方的 IP 地址 |
| 选项 | 最多 40 字节 | 可选扩展功能(如安全、路由记录),一般很少用 |
1.版本号(Version)- 4 位
作用:标识 IP 协议的版本。
取值:
0100 → IPv4(当前图中版本)
0110 → IPv6
意义:让网络设备知道后续头部的解析规则。
2.头部长度(IHL)- 4 位
作用:表示 IP 头部的总长度,以 4 字节为单位计数。
计算公式:头部长度(字节) = IHL值 × 4
典型值:
5 → 20 字节(最小头部,无选项)
15 → 60 字节(最大头部,选项占满)
意义:明确告诉接收方 “数据部分从哪里开始”。
3.服务类型(TOS)- 8 位
作用:用于 ** 服务质量(QoS)** 控制,指示数据包的传输优先级。
早期定义:
3 位优先级(0-7,数值越大优先级越高)
4 位服务标记(低延迟 D、高吞吐 T、高可靠 R、低代价 C)
1 位保留位
现代演进:被重定义为 ** 区分服务(DiffServ)** 字段,用于更精细的流量分类(如语音 / 视频数据包优先转发)。
意义:让路由器根据业务需求调度数据包。
4.总长度(Total Length)- 16 位
作用:记录整个 IP 数据报(头部 + 数据)的总字节数。
最大值:2^16 - 1 = 65535 字节。
数据长度计算:数据部分长度 = 总长度 - 头部长度
意义:接收方据此判断需要接收多少字节才算一个完整数据报。
5.标识(Identification)- 16 位
作用:IP 分片与重组的核心标识。
规则:同一个原始数据报的所有分片,都共享同一个标识号。
来源:发送方主机为每个数据报分配唯一的 16 位序号。
意义:目的主机收到分片后,根据标识号将它们重新组装成原始数据报。
6.标志(Flags)- 3 位
作用:控制数据包的分片行为。
各位含义:
第 0 位:保留位,必须为 0。
第 1 位(DF, Don't Fragment):
1 → 禁止分片,若数据包超过 MTU,路由器丢弃并返回 ICMP 错误。
0 → 允许分片。
第 2 位(MF, More Fragments):
1 → 这不是最后一个分片,后面还有更多。
0 → 这是最后一个分片。
意义:解决不同链路 MTU(最大传输单元)不一致的问题。
7.片偏移(Fragment Offset)- 13 位
作用:表示当前分片在原始数据报中的位置,以 8 字节为单位。
计算公式:偏移字节数 = 片偏移值 × 8
规则:
第一个分片偏移为 0。
后续分片偏移 = 前面所有分片数据部分总字节数 / 8。
意义:目的主机按偏移顺序重组分片。
8.生存时间(TTL, Time To Live)- 8 位
作用:防止数据包在网络中无限循环。
规则:
每经过一个路由器,TTL 值减 1。
TTL 减到 0 时,路由器丢弃该包,并向源主机发送 ICMP 超时消息。
初始值:操作系统默认设置(如 Linux=64,Windows=128)。
意义:避免路由环路导致网络拥塞。
9.协议(Protocol)- 8 位
作用:标识 IP 数据报携带的数据属于哪一种上层协议,以便交付给对应模块处理。
常见取值:
1 → ICMP(ping 命令使用)
6 → TCP(可靠传输,如 HTTP/HTTPS)
17 → UDP(高效传输,如 DNS / 直播)
41 → IPv6(隧道封装)
意义:实现网络层与传输层的解耦。
10.头部校验和(Header Checksum)- 16 位
作用:仅校验 IP 头部的完整性,不校验数据部分。
计算逻辑:
发送方:将头部所有 16 位字按二进制反码求和,取反得到校验和。
接收方:将头部所有 16 位字(含校验和)按反码求和,结果应为全 1,否则头部损坏。
特点:TTL 字段每跳都会变化,路由器转发时必须重新计算校验和。
意义:快速检测头部在传输中是否发生比特错误。
11.源端 IP 地址(Source IP Address)- 32 位
作用:记录数据包发送方的 IPv4 地址。
格式:点分十进制,如 192.168.1.100。
意义:让接收方知道数据包来源,也是回复的目标地址。
12.目的端 IP 地址(Destination IP Address)- 32 位
作用:记录数据包接收方的 IPv4 地址。
格式:点分十进制,如 223.5.5.5。
意义:指导路由器将数据包转发到最终目的地。
13.选项(Options)- 可变,最多 40 字节
作用:提供扩展功能,属于可选字段,通常不使用。
常见类型:
安全选项:标记数据包的安全级别。
路由记录:记录数据包经过的路由器 IP 地址。
时间戳:记录数据包经过每个路由器的时间。
源路由:由发送方指定数据包的传输路径。
意义:满足特殊网络需求,但会增加头部长度和处理开销。
IPv4 头部就是 IP 数据包的 “快递单”:写清发件人 / 收件人地址、包裹大小、能走几站、用什么快递(上层协议),路由器靠这张 “单子” 把数据一步步送到目的地。
2.4传输层(重点)
传输层是端到端通信层,负责给两台主机里的具体程序(进程)传数据;屏蔽底层网络差异,给应用层提供可靠 / 高效的数据传输服务。
网络层找电脑(IP),传输层找软件(端口)。
传输层为两台主机上的应用程序提供端到端的通信服务。与网络层的逐跳转发不同,传输层仅关注通信的起点与终点,无需关心数据包在中间节点的转发细节。
传输层的核心协议主要有三个:TCP 协议(传输控制协议)、UDP 协议(用户数据报协议)和SCTP 协议(流控制传输协议)。
TCP 协议(传输控制协议)
TCP 协议为应用层提供可靠、面向连接、基于字节流的传输服务:
- 可靠性保障:通过超时重传、确认应答等机制,确保数据包完整、准确地送达目的端。
- 连接特性:通信双方必须先建立 TCP 连接,内核会为该连接维护连接状态、读写缓冲区等必要数据结构;通信结束后,需关闭连接以释放内核资源。
- 基于流:TCP 传输的数据是无边界的字节流,发送端可以逐字节写入数据,接收端也可逐字节读取,数据像水流一样持续在两端间传输。
TCP 协议的报文头部结构,是传输层 TCP 协议为数据段添加的 “控制头”,用来实现可靠传输、连接管理和流量控制。
图示:
| 字段 | 位数 | 核心功能 |
|---|---|---|
| 源端口号 | 16 位 | 标识发送方应用程序的端口 |
| 目的端口号 | 16 位 | 标识接收方应用程序的端口 |
| 序号 (Sequence Number) | 32 位 | 标记本报文段发送数据的起始字节序号,用于排序和去重 |
| 确认号 (Acknowledgment Number) | 32 位 | 期望收到的下一个字节序号,用于确认已收到数据 |
| 头部长度 | 4 位 | 表示 TCP 头部有多少个 32 位字(最小值 5,即 20 字节) |
| 保留 | 6 位 | 留作未来扩展,目前为 0 |
| 控制位 (6 个标志位) | 6 位 | - URG:紧急指针有效- ACK:确认号有效- PSH:立即推送数据给应用层- RST:重置连接- SYN:同步序号,用于建立连接- FIN:释放连接 |
| 窗口大小 | 16 位 | 告知对方本端可接收的字节数,用于流量控制 |
| 校验和 | 16 位 | 校验 TCP 头部 + 数据在传输中是否出错 |
| 紧急指针 | 16 位 | 指向紧急数据的末尾,仅当 URG=1 时有效 |
| 选项 | 最多 40 字节 | 扩展功能,如最大段大小 MSS、窗口扩大、时间戳等 |
一句话总结:TCP 头部就是可靠传输的 “控制面板”:
- 用端口号找到对应进程;
- 用序号 / 确认号保证数据不乱序、不丢失;
- 用标志位管理连接(三次握手、四次挥手);
- 用窗口大小控制流量,避免拥塞。
UDP 协议(用户数据报协议)
UDP 协议(用户数据报协议)与 TCP 协议特性完全相反,它为应用层提供不可靠、无连接、基于数据报的传输服务:
- 不可靠:UDP 无法保证数据完整、准确地送达目的端。若数据在传输途中丢失,或接收端校验发现错误并丢弃,UDP 仅会简单通知应用层发送失败;若需实现可靠传输,必须由应用层自行处理确认应答、超时重传等逻辑。
- 无连接:通信双方无需维持持久连接,应用程序每次发送数据时,都必须显式指定接收端地址。
- 基于数据报:与 TCP 的字节流服务不同,每个 UDP 数据报都有固定长度,接收端必须以该长度为最小单位一次性读取全部内容,否则数据会被截断。
SCTP 协议(流控制传输协议)
SCTP(Stream Control Transmission Protocol)是一种面向连接、可靠的传输层协议,设计初衷是为了在 IP 网络上高效传输信令类业务(如电话网的七号信令),同时融合了 TCP 的可靠性与 UDP 的报文边界特性。
SCTP 是 “增强版可靠传输协议”:既保留了 TCP 的可靠性,又吸收了 UDP 的报文边界优势,还加入了多宿主、多流等特性,特别适合对可靠性、可用性和实时性要求高的场景。
| 特性 | TCP | UDP | SCTP |
|---|---|---|---|
| 连接性 | 面向连接 | 无连接 | 面向连接 |
| 可靠性 | 可靠 | 不可靠 | 可靠 |
| 数据边界 | 无边界(字节流) | 有边界(数据报) | 有边界(报文) |
| 多宿主 | 不支持 | 不支持 | 支持 |
| 多流 | 不支持 | 不支持 | 支持 |
| 抗攻击 | 弱(易受 SYN Flood) | 无连接 | 强(4 次握手) |
2.5应用层
应用层是 TCP/IP 模型的最顶层,直接面向用户与应用软件;把数据交给下层传输,为各类网络应用提供接口、规则与服务,是用户能直接感知、使用的一层。
物理层、链路层、网络层、传输层都是底层干活;应用层是给人看、给软件用的最后一层。
核心作用:
- 提供各类网络服务:浏览网页、发邮件、传文件、域名解析;
- 规定应用软件之间的数据格式、交互规则;
- 把用户操作,转换成能发出去的网络数据。
应用层负责处理应用程序的逻辑。应用层:最上层,面向用户,管业务、管格式、管软件交互,所有上网功能都靠它。
2.6为什么要对网络进行分层?
- 各层功能独立:每层只负责单一职责,上层无需关心下层实现细节,下层也不依赖上层业务逻辑。
- 灵活性强:可单独替换或升级某一层的协议 / 技术,不会影响整体架构。
- 结构可分割:将复杂的网络通信拆解为多个简单模块,便于分工开发与调试。
- 易于实现与维护:分层后逻辑清晰,降低了系统开发、排查问题和迭代更新的难度。
- 促进标准化:统一的分层模型为不同厂商、设备和协议提供了通用接口规范,保障了互联互通。
三,网络应用程序通信流程
网络应用程序通信流程
步骤 1:域名解析(DNS 解析)
客户端输入域名(如www.baidu.com),不知道服务器 IP:
- 客户端向DNS 服务器发送请求:查域名对应的 IP
- DNS 递归查询 / 迭代查询,返回服务器真实公网 IP
- 客户端缓存 IP,后续通信直接使用
简化记:域名 → 翻译成 IP 地址
步骤 2:建立 TCP 连接(三次握手,可靠传输)
基于传输层 TCP 协议(APP、网页大多用 TCP):
- 客户端→服务端:SYN(请求连接)
- 服务端→客户端:SYN+ACK(同意连接,确认收到)
- 客户端→服务端:ACK(确认收到同意,连接建立)
端口打通(如服务端 80/443、后端 8080),数据通道就绪
UDP 通信(直播、游戏)无三次握手,直接发数据,快但不可靠


步骤 3:HTTPS 加密握手(可选,现在主流)
如果是 HTTPS:
- 客户端获取服务器SSL/TLS 证书
- 验证证书合法性(防伪造)
- 双方协商加密算法、生成会话密钥
- 后续所有应用数据加密传输,防窃听、篡改
步骤 4:应用层数据请求(客户端发业务数据)
客户端按应用层协议封装请求:
- HTTP:请求方法 (GET/POST)、URL、请求头、Cookie、参数、Body
- 自定义 TCP 应用:私有协议报文(头 + 体 + 校验位)
数据经下层封装(加 TCP 头、IP 头),通过路由转发到服务器
步骤 5:服务端接收 & 处理业务逻辑
- 服务器网卡接收数据包,逐层解包:剥 IP 头→剥 TCP 头→拿到应用数据
- 后端程序(Java/C++/Python)监听端口,拿到请求
- 执行业务逻辑:查数据库 (MySQL)、操作文件、调用接口、计算数据
- 组装响应数据(JSON/HTML/ 二进制报文)
步骤 6:服务端返回响应数据
- 响应数据再次封装 TCP/IP 报文
- 路由转发回客户端
- 客户端解包,拿到业务数据
步骤 7:断开 TCP 连接(四次挥手)
数据传输完毕,释放连接(节省资源):
- 客户端发 FIN:我不发数据了
- 服务端回 ACK:收到,我还有数据发完
- 服务端发 FIN:我也发完了
- 客户端回 ACK:确认,连接彻底断开

总结:
域名 DNS 转 IP → TCP 三次握手建连接 → HTTPS 加密 → 客户端发请求 → 服务端处理 + 查库 → 返回数据 → 四次挥手断连接
思考:
1.三次握手为什么不能两次?
防止失效的连接请求报文突然传到服务端,导致服务端建立无效连接、浪费资源。两次握手只保证单向可靠,三次才能双向确认。
2.HTTP 和 TCP 区别?
TCP 是传输层,负责建连接、可靠传数据;HTTP 是应用层,定义业务数据格式(请求 / 响应规则),HTTP 基于 TCP。
3.为什么四次挥手?
TCP 是全双工,两边都要单独关闭发送通道;服务端可能还有数据要回发,不能直接一步断连,需要分步确认。
四,tcp服务器客户端编程流程
TCP 是面向连接、可靠传输;服务端:被动等待连接;客户端:主动发起连接。
4.1服务端流程
(1)socket () 创建套接字
申请一个网络通信文件描述符,指定 IPv4 + TCP 流式通信。
(2)bind () 绑定 IP + 端口
把当前程序固定在某个 IP 和端口上,客户端才能精准连进来。
(3)listen () 开启监听
设置等待连接队列,正式变成 “等待别人连我的服务器”。
(4)accept () 阻塞等待客户端接入
没客户端来时卡住;有人连接,就返回新的通信套接字,专门和这个客户端收发数据。
(内核自动完成三次握手)
(5)recv () /send () 收发数据
用新套接字读客户端消息、回发响应。
(6)close () 关闭套接字
通信结束,释放文件描述符、释放端口资源。
服务端口诀:创 socket→绑端口→监听→接连接→收发→关闭
4.2客户端流程
(1)socket () 创建套接字
和服务端一样,先拿到通信入口。
(2)connect () 主动连接服务器
填服务器 IP + 端口,内核自动发起TCP 三次握手,建立通路。
(3)send () /recv () 收发数据
发请求、收服务器回复。
(4)close () 关闭连接
结束通信,断开链路。
客户端口诀:创 socket→连服务→收发→关闭
服务端:socket → bind → listen → accept (阻塞) → 读写 → close
客户端:socket → connect → 读写 → close
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)