此部分的作者名:yjy

TCP/IP的三次握手和四次挥手

首先简单介绍一下HTTP工作流程

  1. DNS 解析 客户端将域名(如 www.baidu.com)解析为 IP 地址。
  2. TCP 三次握手 建立连接(SYN → SYN-ACK → ACK)
  3. 发送 HTTP 请求 & 接收响应 客户端发送请求报文,服务器返回响应报文
  4. TCP 四次挥手断开连接

TCP三次握手

建立一个 TCP 连接需要“三次握手”,缺一不可:

  1. 第一次握手 (SYN): 客户端向服务端发送一个 SYN(Synchronize Sequence Numbers)报文段,其中包含一个由客户端随机生成的初始序列号(Initial Sequence Number, ISN),例如 seq=x。发送后,客户端进入 SYN_SEND 状态,等待服务端的确认。
  2. 第二次握手 (SYN+ACK) : 服务端收到 SYN 报文段后,如果同意建立连接,会向客户端回复一个确认报文段。该报文段包含两个关键信息:
  • SYN:服务端也需要同步自己的初始序列号,因此报文段中也包含一个由服务端随机生成的初始序列号,例如 seq=y。
  • ACK (Acknowledgement):用于确认收到了客户端的请求。其确认号被设置为客户端初始序列号加一,即 ack=x+1。
  • 发送该报文段后,服务端进入 SYN_RECV 状态。

(注意:TCP第二次挥手会占用少量内存,在该状态下若黑客伪造海量虚假客户端发送FIN报文,但不发送第三次挥手,将会耗尽服务器端口、内存资源,导致正常连接无法建立)

3.第三次握手 (ACK): 客户端收到服务端的 SYN+ACK 报文段后,会向服务端发送一个最终的确认报文段。该报文段包含确认号 ack=y+1。发送后,客户端进入 ESTABLISHED 状态。服务端收到这个 ACK 报文段后,也进入 ESTABLISHED 状态。

至此,双方都确认了连接的建立,TCP 连接成功创建,可以开始进行双向数据传输。

TCP四次挥手

断开一个 TCP 连接则需要“四次挥手”,缺一不可:

  1. 第一次挥手 (FIN):当客户端(或任何一方)决定关闭连接时,它会向服务端发送一个 FIN(Finish)标志的报文段,表示自己已经没有数据要发送了。该报文段包含一个序列号 seq=u。发送后,客户端进入 FIN-WAIT-1 状态。
  2. 第二次挥手 (ACK):服务端收到 FIN 报文段后,会立即回复一个 ACK 确认报文段。其确认号为 ack=u+1。发送后,服务端进入 CLOSE-WAIT 状态。客户端收到这个 ACK 后,进入 FIN-WAIT-2 状态。此时,TCP 连接处于半关闭(Half-Close)状态:客户端到服务端的发送通道已关闭,但服务端到客户端的发送通道仍然可以传输数据。
  3. 第三次挥手 (FIN):当服务端确认所有待发送的数据都已发送完毕后,它也会向客户端发送一个 FIN 报文段,表示自己也准备关闭连接。该报文段同样包含一个序列号 seq=y。发送后,服务端进入 LAST-ACK 状态,等待客户端的最终确认。
  4. 第四次挥手:客户端收到服务端的 FIN 报文段后,会回复一个最终的 ACK 确认报文段,确认号为 ack=y+1。发送后,客户端进入 TIME-WAIT 状态。服务端在收到这个 ACK 后,立即进入 CLOSED 状态,完成连接关闭。客户端则会在 TIME-WAIT 状态下等待 2MSL(Maximum Segment Lifetime,报文段最大生存时间)后,才最终进入 CLOSED 状态。

只要四次挥手没有结束,客户端和服务端就可以继续传输数据!

URL和URI

URL

一、URL 的核心结构

一个标准的 URL 通常由8 个部分组成(部分场景下某些组件可省略),各部分用特定符号分隔,功能明确。以示例 https://www.example.com:8080/path/file.html?name=test&age=20#section1 为例,结构拆解如下:

组件名称示例内容功能说明
协议(Scheme)https规定浏览器与服务器的通信规则(如传输方式、数据加密等),常见协议见下文。
分隔符://固定分隔符,用于区分 “协议” 和后续内容。
子域名(Subdomain)www域名的细分,通常用于指定服务类型(如www代表网页服务,mail代表邮箱)。
主域名(Domain)example资源所属网站的核心标识,需通过域名注册商申请(如baidugoogle)。
顶级域名(TLD).com域名的最高层级,代表网站类型或所属地区(如.com商业、.org非营利、.cn中国)。
端口(Port):8080服务器上用于接收特定服务的 “通道号”,默认端口可省略(如 HTTP 默认 80,HTTPS 默认 443)。
路径(Path)/path/file.html资源在服务器中的具体存储位置(类似电脑中的 “文件夹 / 文件名”)。
查询参数(Query)?name=test&age=20向服务器传递额外信息(如搜索关键词、表单数据),格式为 “参数名 = 值”,多参数用&分隔。
锚点(Fragment)#section1定位网页内的具体位置(如某段落、标题),仅在浏览器端生效,不发送给服务器。

二、常见的 URL 协议(Scheme)

不同协议对应不同的资源类型和交互规则,常见类型如下:

  • http:超文本传输协议(HyperText Transfer Protocol),早期网页常用,数据传输不加密,安全性较低,现在逐渐被 HTTPS 替代。
  • https:HTTP 的加密版本(HTTP Secure),通过 SSL/TLS 协议加密数据,能防止传输过程中被窃取或篡改,常用于支付、登录等敏感场景(浏览器地址栏会显示 “小锁” 图标)。
  • ftp/ftps:文件传输协议(File Transfer Protocol),用于在本地与服务器间传输文件,ftps是加密版本。
  • file:用于访问本地计算机中的文件(非网络资源),示例:file:///C:/Users/Documents/test.txt(Windows)或 file:///Users/xxx/Documents/test.txt(Mac)。
  • mailto:点击后直接调用本地邮件客户端发送邮件,示例:mailto:example@xxx.com?subject=测试邮件subject指定邮件主题)。
  • tel:在移动端点击后直接触发拨号,示例:tel:10086

三、URL 的关键特性

  1. 唯一性:每个资源的 URL 在网络中是唯一的(理论上),确保不会定位到错误资源。
  2. 可读性:域名部分(如www.baidu.com)设计为人类可记忆的形式,避免直接使用 IP 地址(如180.101.49.11)。
  3. 编码需求:URL 中不能包含空格、中文、特殊符号(如&#),需通过 “URL 编码” 转换为合法字符(如空格→%20,中文 “测试”→%E6%B5%8B%E8%AF%95),浏览器会自动处理部分编码,但手动构造 URL 时需注意。

URI

URI(Uniform Resource Identifier,统一资源标识符)是用于唯一标识互联网或本地系统中资源的字符串格式,其核心作用是 “识别资源”,不强制要求 “如何获取资源”。它是一个更宽泛的概念,URL(统一资源定位符)本质上是 URI 的一种具体实现(即能定位资源的 URI)。

一、URI 的核心定义与分类

URI 的核心是 “标识”—— 无论资源是网页、文件、数据库记录还是邮件地址,只要通过一个字符串能唯一区分它,这个字符串就是 URI。根据是否能 “定位资源”(即提供获取资源的路径 / 方法),URI 主要分为两大类别:

类别全称核心功能关系说明示例
URLUniform Resource Locator不仅标识资源,还提供获取资源的具体地址和协议(即 “定位 + 标识”)URI 的子集(可定位的 URI)https://www.baidu.com(网页)、ftp://ftp.example.com/file.zip(文件)
URNUniform Resource Name永久标识资源,不提供获取路径(即 “纯标识,不定位”)URI 的子集(不可定位的 URI)urn:isbn:9787115546926(ISBN 书号,标识某本书,但不告诉在哪下载 / 购买)、urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8(通用唯一识别码,标识某一实体)

简单来说:所有 URL 都是 URI,但并非所有 URI 都是 URL——URN 是 URI 中仅用于 “标识” 而不 “定位” 的类型。

二、URI 的通用结构

URI 的结构遵循 RFC 3986(互联网标准文档)的规范,核心由5 个可选组件构成(不同类型的 URI 会省略部分组件),通用格式如下:

[scheme]:[scheme-specific-part][#fragment]

各组件的含义与约束如下:

组件名称功能说明约束与示例
方案(Scheme)定义资源的类型或标识规则,必须以字母开头,后续可包含字母、数字、+-.不同 Scheme 对应不同的资源类型,如:- http/https(网络资源)- urn(永久标识资源)- mailto(邮件地址)- file(本地文件)
方案特定部分(Scheme-Specific Part)由 Scheme 决定格式,是 URI 的核心内容,用于具体标识资源例如:- http的 Scheme 特定部分是//www.baidu.com/index.html(包含域名、路径)- urn的 Scheme 特定部分是isbn:9787115546926(包含标识类型和具体编码)- mailto的 Scheme 特定部分是example@xxx.com(邮件地址)
片段(Fragment)用于标识资源内部的子部分(如网页中的某段落、文档中的某章节),仅在客户端生效,不传递给服务器#开头,例如https://example.com/docs#chapter2(标识文档的 “第 2 章”)、urn:isbn:9787115546926#page10(标识书的 “第 100 页”)

三、URI 与 URL 的核心区别!!!

很多人会混淆 URI 和 URL,两者的核心差异在于 “功能范围”,可通过下表清晰区分:

对比维度URI(统一资源标识符)URL(统一资源定位符)
核心功能标识资源(唯一区分资源,不关心如何获取)标识 + 定位资源(不仅区分资源,还告诉如何获取)
范围更宽泛,包含 URL 和 URN更具体,是 URI 的子集
是否依赖 “位置”不依赖(如 URN 通过 ISBN 标识书,与书的存储位置无关)依赖(必须包含资源的存储地址,如域名、路径)
示例urn:isbn:9787115546926(仅标识书)、mailto:example@xxx.com(仅标识邮件地址)https://www.baidu.com(标识并定位网页)、ftp://ftp.example.com/file.zip(标识并定位文件)

一句话总结:URI 是 “资源的身份证”,URL 是 “资源的身份证 + 住址”

四、常见的 URI 类型(除 URL 外)

除了大家熟悉的 URL,日常场景中还有不少非 URL 的 URI(即 URN 或其他标识型 URI),常见类型如下:

  1. URN(永久标识资源)
    • urn:isbn:9787302599989:通过 ISBN 书号标识《Python 编程:从入门到实践》这本书,无论这本书的电子版存储在哪个服务器,这个 URN 始终不变。
    • urn:ietf:rfc:3986:标识互联网标准文档 RFC 3986(即定义 URI 的文档),与文档的下载地址无关。
  2. mailto URI
    • mailto:support@example.com?subject=问题反馈:标识 “发送邮件给 support@example.com” 这一资源,仅说明 “要发给谁”,不强制 “用哪个邮件客户端发送”(属于 “标识行为资源” 的 URI,非 URL)。
  3. tel URI
    • tel:+8610123456789:标识 “拨打 + 8610123456789 这个号码” 的资源,仅说明 “要拨哪个号”,不强制 “用哪个设备拨号”(移动端点击后会触发拨号,本质是 URI 的应用,非严格意义上的 URL)。

五、URI 的关键特性

  1. 唯一性:同一资源在同一语境下的 URI 必须唯一(如一本书的 ISBN URN 全球唯一,一个网页的 URL 在网络中唯一)。
  2. 独立性:非 URL 类型的 URI(如 URN)不依赖资源的存储位置 —— 即使资源的存储地址变化(如一本书的电子版从 A 服务器迁移到 B 服务器),其 URN 仍不变。
  3. 灵活性:Scheme 可扩展,除了常见的httpurn,还可自定义 Scheme(如企业内部系统用company:user:123标识员工 ID 为 123 的用户)。

六、常见误区

  • 混淆 “URI” 与 “URL”:认为两者是 “并列关系”,实际是 “包含关系”(URL⊂URI)。
  • 忽略 URN 的存在:日常场景中 URL 更常用(如浏览器输入的都是 URL),但 URN 在需要 “永久标识资源” 的场景(如图书、标准文档)中至关重要。
  • 误解 “URI 必须联网”:URI 可标识本地资源(如file:///C:/Users/test.txt是本地文件的 URI,同时也是 URL),并非仅限互联网资源。

公网和内网

打一个很形象的比方:

  • 公网 (Internet / Public Network)​ 就像覆盖全球的公共道路交通系统(高速公路、国道、城市道路)。它四通八达,任何一个有合法“地址”(公网IP)的设备都可以通过它访问世界各地的其他设备。
  • 内网 (Intranet / Private Network)​ 就像你家的私人住宅或小区。在你家里(内网),每个房间(电脑、手机、智能电视)都有自己内部的门牌号(内网IP,如192.168.x.x),它们之间可以方便地互相访问。但整个家对外只有一个公共地址(公网IP),这个地址是市政统一分配的。

一、公网 (Public Network)

  1. 定义: 公网就是互联网,是全球性的、开放的计算机网络系统。它由全球无数个网络相互连接而成,任何人都可以按照规则接入和使用。
  2. 核心特点
    • 全球唯一性:公网上的每个设备都有一个全球唯一的身份标识,即公网IP地址(如 120.244.66.123)。就像世界上没有两个完全相同的邮寄地址一样。
    • 公开可访问:只要你知道一个服务器的公网IP和端口,理论上可以从世界任何地方访问它(除非有防火墙等安全限制)。
    • 规模巨大:由无数网络设备(路由器、交换机、光缆等)组成,覆盖全球。
    • 资源丰富:我们日常使用的所有互联网服务(如百度、淘宝、微信、Netflix、Google)都位于公网上。
  3. 管理:由专门的机构(如ICANN、各地的ISP互联网服务提供商)统一管理和分配IP地址等。

二、内网 (Private Network)

  1. 定义: 内网是一个私有的、局部的网络,通常属于某个组织、家庭或个人。它不与公网直接混杂,而是通过一个或多个网关(通常是路由器)与公网连接。
  2. 核心特点
    • 地址可重用:内网使用的IP地址段是专门保留的私有IP地址段。这些地址在任何内网中都可以重复使用,但无法在公网上被直接路由。
      • 常用私有地址段
        • 10.0.0.0- 10.255.255.255(大型企业)
        • 172.16.0.0- 172.31.255.255(中型企业)
        • 192.168.0.0- 192.168.255.255(家庭和小型办公室最常见,如 192.168.1.101)
    • 私有性和安全性:外部公网的用户无法直接访问内网中的设备,这提供了一个天然的安全屏障(即网络地址转换NAT带来的安全效应)。
    • 高速低成本:内网内的设备通信速度极快(如局域网传文件),且不消耗公网流量。
  3. 典型场景
    • 家庭网络:你的手机、电脑、打印机都通过Wi-Fi连接到家里的路由器,组成了一个内网。
    • 公司/校园网:公司内部的所有电脑和服务器组成一个大的内网,方便内部数据共享和通信。

三、核心区别与联系(含NAT技术)

特性公网 (Internet)内网 (Intranet)
范围全球性局部性(家庭、公司、学校)
IP地址公网IP,全球唯一私有IP,可重复使用
访问性公开,可被任何联网设备访问私有,外部无法直接访问
管理方ICANN, ISP等机构个人或组织自行管理
成本需要向ISP支付费用内部通信免费
主要目的全球范围内的信息交换内部资源共享和通信

它们是如何联系的?—— 关键:NAT(网络地址转换) 由于公网IP地址是稀缺资源,不可能给每个手机、电脑都分配一个。因此,我们使用路由器作为中介。

  1. 运营商给你的家庭或公司只分配一个公网IP地址。
  2. 路由器连接公网,拥有这个公网IP。同时,它创建一个内网,并给内网中的每个设备(你的电脑、手机)分配一个私有IP(如 192.168.1.101)。
  3. 当你的电脑(192.168.1.101)想要访问百度(一个公网IP)时:
    • 数据包从你的电脑发出,目标地址是百度的公网IP,源地址是你的内网IP 192.168.1.101
    • 数据包经过路由器时,路由器会执行 NAT​ 操作:将数据包的源IP地址,从你的内网IP(192.168.1.101)修改为路由器自己的公网IP,并记录下这个连接(方便回传数据)。
    • 百度服务器收到请求后,以为是与你的路由器公网IP在通信,于是将响应数据发回给你的路由器公网IP。
    • 路由器收到响应后,根据之前记录的连接信息,准确地将数据包转发给你的电脑(192.168.1.101)。

这个过程使得内网的多台设备可以“共享”一个公网IP上网,既节约了IP地址,又隐藏了内网结构,增强了安全性。

端口

如果说 IP 地址像是房子的具体地址(例如:上海市浦东新区张江高科某某路100号),它负责把数据包准确地送到目标设备所在的“建筑”,那么 端口​ 就是这栋建筑里的具体房间号(例如:100号建筑的301房间、808房间)。


一、端口是什么?

  1. 官方定义: 端口是网络通信中设备内部的一个抽象的“通道”或“门牌号”。它在逻辑上代表一个网络服务或应用程序的入口点。
  2. 通俗理解: 一台电脑(服务器)可能同时提供多种网络服务,比如网页服务、文件传输服务、电子邮件服务。当外部的数据包通过IP地址找到这台电脑后,电脑需要知道这个数据包是发给哪个“服务程序”的。端口就是用来做这件事的“分流器”
  3. 关键点
    • 范围:端口号是一个 16 位的整数,范围是 0 ~ 65535
    • 格式:端口号与IP地址共同工作,格式为 IP地址:端口号,例如 192.168.1.1:80

二、为什么需要端口?

想象一下公司的前台:

  • IP 地址​ = 公司大楼地址
  • 端口​ = 公司内部各个部门的分机号(如:销售部请按 1,技术支持请按 2,财务部请按 3...)

如果没有端口(分机号),数据包到了目标设备(公司大楼)就不知道应该交给哪个应用程序(部门)处理,会导致通信混乱。端口实现了一台设备上的多个网络应用程序可以同时独立工作,互不干扰


三、端口的分类

端口号分为三大类,这个分类非常重要:

1. 知名端口 (Well-Known Ports)

  • 范围:0 - 1023
  • 作用:这些端口号固定分配给最常用、最重要的网络服务。通常由系统级进程或管理员权限的程序使用。
  • 示例
    • 80: HTTP(网页服务)
    • 443: HTTPS(加密的网页服务)
    • 21: FTP(文件传输)
    • 22: SSH(安全远程登录)
    • 25: SMTP(发送邮件)
    • 53: DNS(域名解析)

2. 注册端口 (Registered Ports)

  • 范围:1024 - 49151
  • 作用:分配给一些非系统核心的、但比较常见的应用程序或服务。许多软件厂商会为自己产品注册一个端口。
  • 示例
    • 1433: Microsoft SQL Server 数据库
    • 1521: Oracle 数据库
    • 3306: MySQL 数据库
    • 3389: Windows 远程桌面 (RDP)
    • 5432: PostgreSQL 数据库
    • 6379: Redis 数据库

3. 动态/私有端口 (Dynamic/Private Ports)

  • 范围:49152 - 65535
  • 作用客户端使用的端口。当你的电脑(客户端)访问一个网站(如百度)时,你的操作系统会随机从这段端口号中选取一个作为本次连接的“源端口”。这个端口是临时的,连接结束后就会被释放。
    • 简单记:服务端用“固定小号”,客户端用“随机大号”。

四、端口的工作流程:一个完整例子

让我们结合之前学的 IP 地址​ 和 NAT,看一个完整的网页访问流程,理解端口如何工作:

  1. 你在浏览器输入 www.baidu.com并回车。
  2. DNS解析:你的电脑先将域名解析成百度的IP地址,例如 110.242.68.4
  3. 创建请求:你的浏览器准备发送一个HTTP请求。目标地址是 110.242.68.4,目标端口是 80(因为HTTP服务默认在80端口)。
  4. 分配源端口:你的操作系统为这个连接随机分配一个源端口,例如 55000(从动态端口中选)。所以完整的请求信息是:
    • [你的内网IP]:55000(如 192.168.1.101:55000
    • 目标[百度IP]:80(如 110.242.68.4:80
  5. 经过路由器(NAT):数据包到达你的路由器。路由器不仅进行IP地址转换(NAT),还会进行端口转换(NAPT/PAT)。它可能会将你的内网端口 55000映射到路由器自己的一个随机公网端口上,例如 62001
    • 转换后,数据包变为:
    • [你的公网IP]:62001(如 120.244.66.123:62001
    • 目标110.242.68.4:80
  6. 百度响应:百度服务器收到请求后,会向 120.244.66.123:62001发送响应。
  7. 路由器转发:你的路由器收到响应,查看自己的NAT转换表,发现公网端口 62001对应内网设备 192.168.1.101的端口 55000。于是它将数据包转发给你的电脑。
  8. 浏览器接收:你的电脑收到数据包,操作系统根据目标端口 55000确定这个数据包是属于你刚才发起的那个浏览器标签页的,于是将数据交给浏览器处理。
  9. 网页显示:浏览器解析数据,网页内容就显示出来了。

五、端口与安全

端口是计算机与外界通信的通道,因此也是网络攻击的主要入口。端口扫描​ 是黑客的常用手段,目的是探测目标机器上打开了哪些端口,从而判断运行了哪些服务,并寻找漏洞。因此,网络安全的一个重要原则是:“最小权限原则”,即只开放必要的端口,关闭所有不需要的端口。这就是防火墙​ 的主要工作之一——控制哪些端口的流量可以进出。

总结

概念比喻作用
IP 地址大楼地址定位网络中的设备(哪台电脑)
端口房间号/分机号定位设备上的应用程序/服务(哪个程序)
端口号范围0-65535其中 0-1023 是著名服务端口,1024-49151 是注册端口,49152-65535 是客户端临时端口。

简单来说,IP 地址负责网络层的寻址(找到设备),而端口负责传输层的寻址(找到设备上的正确程序)。两者结合,才能完成一次精准的网络通信。

OSI七层参考模型

这个模型是理解网络通信如何一步步实现的“地图”。它将一个复杂的网络通信过程分解成七个独立的、各司其职的层次,每一层都为上一层提供服务,并使用下一层的服务。


一、什么是OSI模型?

  • 定义:OSI模型是一个由国际标准化组织提出的概念性框架,它使用分层结构将网络通信的工作划分为七个更小、更易于管理的部分。
  • 核心思想分层封装。发送方数据从最高层(应用层)向下传递,每经过一层都会被“打包”一次,添加本层的头部信息(封装);接收方则从最低层(物理层)向上传递,逐层“拆包”(解封装),最终还原为原始数据。

为了帮助记忆,可以背这个口诀:All People Seem To Need Data Processing(所有人似乎都需要数据处理)。

  • A - Application (应用层)
  • P - Presentation (表示层)
  • S - Session (会话层)
  • T - Transport (传输层)
  • N - Network (网络层)
  • D - Data Link (数据链路层)
  • P - Physical (物理层)

二、七层结构详解(从下到上)

第1层:物理层

  • 功能:定义物理标准,负责在物理介质上传输原始的比特流(就是0和1的信号)。它关心的是电压、线缆规格、接口类型、信号时序等。
  • 关键设备:网线、光纤、集线器、中继器。
  • 数据单位比特
  • 比喻公路和卡车。物理层就是负责运输的“公路”和“卡车”本身,它只关心能不能把货物(比特流)从一个地方 physically 运到另一个地方,不关心货物是什么。

第2层:数据链路层

  • 功能:负责在同一个局域网内的节点到节点(如交换机到电脑)的数据传输。它将物理层的比特流封装成“”,并进行差错校验。最重要的子层是 MAC 子层,管理MAC地址(设备的物理地址)。
  • 关键设备交换机(通过MAC地址转发数据)。
  • 数据单位
  • 比喻顺丰在上海的集散中心。它负责把要寄出的多个包裹(数据帧)打上标签(源/目标MAC地址),并检查从卡车上卸下的包裹(数据帧)是否完好(差错控制)。它只关心上海市内的运输。

第3层:网络层

  • 功能:负责在不同网络之间(即从上海到北京)进行逻辑寻址和路径选择(路由)。它的核心任务是将数据包从源主机跨网络送达目标主机
  • 关键协议IP协议
  • 关键设备路由器
  • 数据单位包/分组
  • 比喻顺丰的全国路由规划系统。它关心的是这封信应该走哪条路线(路由选择)才能从上海送到北京。它给包裹贴上“全国通用”的地址标签(IP地址)。这是实现“网际互连”的关键一层。

第4层:传输层

  • 功能:负责端到端的通信,即进程到进程的通信。它解决了数据如何可靠、有序、无差错地送达目标主机的具体应用程序
  • 关键协议
    • TCP:面向连接、可靠传输(如打电话,需要确认对方收到)。速度慢,但可靠。
    • UDP:无连接、不可靠传输(如发广播、发短信)。速度快,但可能丢失。
  • 数据单位
  • 比喻区分收件人公司的不同部门。网络层把包裹送到了公司大楼(目标IP地址),传输层则根据包裹上的“部门代码”(端口号,如80端口是给网页服务部的,25端口是给邮件服务部的)把包裹分发给正确的部门(应用程序)。TCP负责确保包裹完好无损地送到(可靠传输),UDP则可能直接扔过去不管。

【下三层 vs 上四层】

  • 下三层(物理、数据链路、网络):关心的是“数据如何通过网络传输”,是网络工程师关注的重点。
  • 上四层(传输、会话、表示、应用):关心的是“数据如何被应用程序理解和使用的”,是软件开发人员关注的重点。

第5层:会话层

  • 功能:负责建立、管理和终止两个应用进程之间的会话(Session)。比如在通信过程中进行认证、权限管理,以及决定使用全双工还是半双工通信。
  • 比喻一次完整的电话通话。会话层负责拨号(建立连接)、通话(维持连接)、以及说再见后挂断电话(终止连接)。它管理的是“一次完整的通信过程”。

第6层:表示层

  • 功能:负责数据的表示格式。比如数据加密/解密、压缩/解压缩、以及格式转换(如将GBK编码转换为UTF-8编码),确保一个系统应用层发出的信息能被另一个系统的应用层读懂。
  • 比喻翻译官和密码员。你的朋友只懂英文,而你写了中文信。表示层就像翻译官,负责把中文翻译成英文(格式转换)。或者,它把信件内容加密(加密),防止别人偷看。

第7层:应用层

  • 功能:最靠近用户的一层,为应用程序提供网络服务接口。我们日常使用的网络应用都基于这一层的协议。
  • 关键协议HTTP(网页)、HTTPS(安全网页)、FTP(文件传输)、SMTP/POP3(电子邮件)、DNS(域名解析)。
  • 比喻你写的信的内容本身。应用层就是你所使用的具体服务,比如你写这封信(使用HTTP协议访问网页),或者你通过微信发送消息(使用另一种应用层协议)。这一层是用户真正能“看到”和“用到”的。

三、数据封装与解封装流程

这是理解OSI模型如何工作的关键:发送方(封装过程):“打包”

  1. 用户在应用层(第7层)产生数据(如一封邮件)。
  2. 数据向下传递到表示层(第6层),被加密或压缩。
  3. 继续向下到会话层(第5层),建立会话信息。
  4. 到达传输层(第4层),数据被加上TCP或UDP头部,包含端口号,变成数据段
  5. 到达网络层(第3层),被加上IP头部,包含源/目标IP地址,变成数据包
  6. 到达数据链路层(第2层),被加上帧头部和尾部,包含MAC地址,变成数据帧
  7. 到达物理层(第1层),数据帧被转换为0和1的比特流,通过网线/光纤等发送出去。

接收方(解封装过程):“拆包”过程完全相反,从物理层开始,逐层向上,每一层拆掉对应的头部,最终将原始数据交给目标应用程序。


四、现实世界:TCP/IP模型

需要注意的是,OSI是一个理论模型,而现实中广泛使用的是更简洁的 TCP/IP 四层模型。它们的对应关系如下:

OSI 七层模型TCP/IP 四层模型协议示例数据单位
应用层、表示层、会话层应用层HTTP, FTP, DNS, SMTP数据流
传输层传输层TCP, UDP数据段
网络层网络层IP, ICMP数据包
数据链路层、物理层网络接口层Ethernet, WiFi帧/比特流

总结

OSI模型的价值在于它提供了一个标准化的思考框架,帮助我们:

  • 理解网络通信:将复杂过程模块化,便于学习和排查故障。
  • 开发网络产品:不同厂商可以基于统一标准开发兼容的设备和服务。
  • 解决网络问题:当网络出现故障时,可以逐层排查,快速定位问题所在(是物理线路坏了?还是IP配置错了?或是防火墙端口没开?)。

记住这个核心:OSI模型的核心思想是分层、封装与解封装。

此部分作者:szy

主机IP地址获取(DNS域名解析过程)


HTTP中常见的包头,以及状态码,独自抓包分析


整合流程,搜索框输入一个url,从输入到解析完成展示,网络、服务端、客户端都顺序发生了什么

What is mind?No matter. What is matter?Never mind
最后更新于 2025-12-06