传输层基础概念

传输层概述

传输层是 OSI 参考模型中的第四层,主要负责在端到端之间提供可靠的数据传输服务。


1. 传输层的核心作用

1.1 端到端进程通信:网络通信的”最终环节”

端到端进程通信

端到端进程通信是指传输层在两台主机上的具体进程之间建立通信,就像打电话时找到具体的接听人。

为什么需要进程通信?

类比大楼通信:

层次类比网络层次
找到大楼找到大楼地址网络层:找到主机(IP地址)
找到房间找到具体房间号传输层:找到进程(端口号)
找到人找到具体的人应用层:找到具体服务

实际场景:

  • 网络层:找到你的电脑(192.168.1.10)
  • 传输层:找到你的浏览器(端口80)
  • 应用层:获取网页内容(HTTP服务)

更形象的类比:

网络层就像快递员找到你家地址,传输层就像快递员敲开你的门,把快递交给你本人。

层次类比实际内容
应用层交给张三进程:浏览器
传输层3号楼5单元602室端口:80
网络层北京朝阳区XX街道XX号IP 地址:202.108.22.5

进程通信的实现

传输层通过端口号标识进程:

发送方:

  • 你的电脑 IP:192.168.1.10
  • 浏览器进程端口:随机端口(如 54321)
  • 目标服务器 IP:202.108.22.5
  • 目标服务端口:80(HTTP 服务)

传输层确保:数据从 192.168.1.10 的 54321 端口,到达 202.108.22.5 的 80 端口,实现端到端通信。


1.2 传输层寻址:端口号的”世界”

端口号(Port)

端口号是传输层用于标识进程的16位数字(0-65535),就像房间号标识大楼里的具体房间。

端口号的作用

类比大楼的房间号:

大楼类比网络类比
大楼地址IP地址(主机)
房间号端口号(进程)
房间主人具体进程
房间功能服务类型

端口号的功能:

  1. 标识进程:告诉数据该交给哪个进程
  2. 区分服务:区分不同的网络服务(HTTP、FTP等)
  3. 连接管理:在TCP中标识不同的连接
  4. 数据分发:将数据分发给正确的应用程序

端口号的分类

1. 熟知端口(Well-known Ports):0-1023

类比:大楼的公共服务区(前台、电梯、消防通道)

这些端口由 IANA 统一分配,用于常见服务:

端口服务说明类比
20/21FTP文件传输文件收发室
22SSH安全远程登录VIP通道
23Telnet远程登录普通通道
25SMTP发送邮件邮件投递箱
53DNS域名解析地址查询处
80HTTP网页服务信息服务台
110POP3接收邮件邮件取件箱
143IMAP邮件访问邮件阅览室
443HTTPS安全网页VIP服务台

2. 注册端口(Registered Ports):1024-49151

类比:大楼的办公区(公司办公室)

这些端口分配给特定应用程序:

端口服务说明
1433MS SQL ServerMicrosoft数据库
1521OracleOracle数据库
3306MySQLMySQL数据库
5432PostgreSQLPostgreSQL数据库
6379RedisRedis缓存
8080HTTP ProxyHTTP代理服务

3. 动态端口(Dynamic Ports):49152-65535

类比:大楼的临时活动室(临时使用)

这些端口由操作系统动态分配,用于客户端临时连接:

例如:打开浏览器访问网站时,操作系统为浏览器分配临时端口 54321;连接结束后端口释放,可供其他程序使用。

端口号的分配和管理

操作系统如何分配端口:

服务器端:

  • 知名服务使用固定端口(如 HTTP 用 80)
  • 启动时绑定到指定端口
  • 等待客户端连接

客户端:

  • 发起连接时,操作系统动态分配端口
  • 通常使用动态端口范围(49152-65535)
  • 连接结束后自动释放

端口冲突问题:

问题:两个程序都想使用 80 端口。

解决:

  1. 先启动的程序占用端口
  2. 后启动的程序报错:“端口已被占用”
  3. 需要更换端口或关闭占用端口的程序

1.3 复用与分用:数据传输的”调度中心”

复用(Multiplexing)

复用是指多个应用进程共享同一个传输层服务,就像多个人共用一部电话打电话。

分用(Demultiplexing)

分用是指传输层将接收到的数据分发给相应的应用进程,就像电话交换机把来电转接给具体的人。

复用和分用的过程

类比电话交换机:

复用(多人打电话):张三、李四、王五 → 电话机 → 电话线 → 交换局(三个人共用同一部电话机打电话)

分用(来电转接):交换局 → 电话线 → 电话机 → 张三/李四/王五(根据来电显示转接给具体的人)

网络中的复用和分用:

发送方(复用):三个应用(浏览器 54321、邮件客户端 54322、聊天软件 54323)共享传输层服务,统一交给网络层发送。

接收方(分用):网络 → 网络层 → 传输层,根据端口号分发数据到对应的应用进程。

复用分用的实现机制

传输层如何实现分用:

接收数据包:IP 数据包 → TCP/UDP 段 → 提取端口号。

分用过程:

  1. 检查目的端口:80(HTTP 服务)
  2. 查询端口对应进程:Web 服务器进程
  3. 将数据交给该进程
  4. 进程处理数据

具体例子:

场景:服务器收到多个请求。

请求源 IP源端口目的端口内容
请求 1192.168.1.105432180网页请求
请求 2192.168.1.115432225邮件发送

分用过程:端口 80 的数据 → Web 服务器;端口 25 的数据 → 邮件服务器。


1.4 差错检测与可靠性:数据传输的”质量保证”

差错检测

差错检测是传输层检测数据传输过程中错误的能力,就像快递员检查包裹是否完好。

可靠性保证

可靠性保证是传输层确保数据完整、有序、无重复传输的能力,就像快递保证包裹完整送达。

差错检测机制

传输层的差错检测:

发送方:

  1. 数据分段
  2. 添加校验和(Checksum)
  3. 发送数据段

接收方:

  1. 接收数据段
  2. 计算校验和
  3. 对比发送方的校验和
  4. 如果不匹配,丢弃数据段
  5. 如果匹配,接受数据段

校验和的作用:

类比快递检查:快递员检查包裹外观(校验和),包裹破损则拒收(丢弃数据),包裹完好则接收(接受数据)。

可靠性保证机制

TCP 的可靠性保证:

  1. 序号机制:每个字节有序号,保证数据顺序
  2. 确认机制:接收方确认收到数据,发送方知道数据已送达
  3. 重传机制:未收到确认的数据重传,保证数据完整
  4. 流量控制:控制发送速率,防止接收方过载
  5. 拥塞控制:控制网络拥塞,保证网络稳定

UDP 的简单性:

UDP 不提供可靠性保证:不使用序号、不使用确认、不使用重传、不使用流量控制,只提供基本差错检测。


2. 传输层与网络层的区别

2.1 功能层次对比

对比项网络层传输层
通信范围主机到主机进程到进程
寻址方式IP地址端口号
可靠性不保证(尽力而为)可以保证(TCP)
流量控制无有(TCP)
连接方式无连接(IP)无连接(UDP)/面向连接(TCP)
服务对象主机进程
类比找到大楼找到房间

2.2 作用关系

网络层是基础,传输层是延伸:

网络层:负责主机间通信,提供 IP 寻址和路由,数据从一台主机到另一台主机。

传输层:在网络层基础上提供进程间通信,提供端口号寻址,数据从一个进程到另一个进程。

类比大楼通信:

网络层:找到大楼地址(IP 地址),把信件送到大楼门口。

传输层:找到具体房间号(端口号),把信件送到房间门口,并确保信件完好无损(可靠性)。


3. 传输层的两大协议

3.1 TCP:可靠的传输

TCP(Transmission Control Protocol)

TCP是传输层的面向连接协议,提供可靠、有序、无差错的数据传输服务。就像打电话:先拨号建立连接,通话过程中保证语音连续,最后挂断连接。

TCP 的特点

面向连接:

  • 需要预先建立连接(三次握手)
  • 通信过程中维护连接状态
  • 结束后释放连接(四次挥手)

可靠性保证:

  • 数据完整:通过校验和检测错误
  • 数据有序:通过序号保证顺序
  • 无差错:通过重传纠正错误
  • 无丢失:通过确认保证送达

流量控制:

  • 滑动窗口机制
  • 防止发送方过快
  • 接收方控制发送速率

拥塞控制:

  • 慢启动、拥塞避免
  • 快重传、快恢复
  • 防止网络拥塞

TCP 适用场景

场景特点为什么用TCP
文件传输数据完整重要不能丢失任何字节
网页浏览页面完整重要不能丢失部分页面
邮件传输邮件内容重要不能丢失邮件内容
数据库同步数据准确重要不能有任何错误

3.2 UDP:快速的传输

UDP(User Datagram Protocol)

UDP是传输层的无连接协议,提供简单、快速的数据传输服务,不保证可靠性。就像发短信:直接发送,不确认对方是否收到,速度快但可能丢失。

UDP 的特点

无连接:

  • 不需要建立连接
  • 直接发送数据
  • 没有连接状态维护

简单高效:

  • 协议开销小
  • 处理速度快
  • 实现简单

不保证可靠性:

  • 可能丢失数据
  • 可能乱序到达
  • 不进行重传

实时性好:

  • 延迟小
  • 无连接建立延迟
  • 适合实时应用

UDP 适用场景

场景特点为什么用UDP
语音通话实时性强少量丢包不影响通话
视频直播实时性强少量丢帧不影响观看
在线游戏实时性强速度快比可靠性重要
DNS查询简单快速一次请求一次响应

3.3 TCP vs UDP对比

特性TCPUDP
连接方式面向连接无连接
可靠性保证可靠不保证可靠
顺序保证保证有序不保证有序
流量控制有无
拥塞控制有无
传输效率较低高
延迟较高低
开销大小
适用场景文件传输、网页实时应用、简单查询

选择建议:

什么时候用 TCP?

  • 数据完整性重要、不允许丢失数据、数据量大、对实时性要求不高

什么时候用 UDP?

  • 实时性要求高、数据量小、允许少量丢失、对可靠性要求不高

4. 实际应用举例

例子1:访问网站的过程

让我们看看访问网站时传输层的作用:

场景:用浏览器访问 www.baidu.com。

  1. 应用层:浏览器发起 HTTP 请求
  2. 传输层(TCP):
    • 选择端口:客户端(浏览器)临时端口 54321,服务器(百度)HTTP 端口 80
    • 建立连接:三次握手
    • 传输数据:发送 HTTP 请求
  3. 网络层:
    • IP 地址:客户端 192.168.1.10 → 服务器 202.108.22.5
    • 路由转发:逐步到达服务器
  4. 服务器接收:
    • 网络层:接收 IP 数据包
    • 传输层:提取目的端口 80,交给 Web 服务器
    • 应用层:Web 服务器处理 HTTP 请求
  5. 返回响应:
    • 传输层:服务器端口 80 → 客户端端口 54321
    • 网络层:服务器 IP → 客户端 IP
    • 应用层:浏览器显示网页

例子2:多应用同时运行

你的电脑上同时运行多个网络应用,传输层如何处理?

场景:浏览器访问网站、邮件客户端收邮件、聊天软件发消息同时进行。

传输层的复用:浏览器(54321)、邮件客户端(54322)、聊天软件(54323)都通过 TCP → 网络层发送。

网络层的统一处理:所有数据使用同一 IP 地址(192.168.1.10),由传输层用不同端口区分不同应用。

接收数据时的分用:网络 → 网络层 → TCP,根据端口分发:54321 → 浏览器,54322 → 邮件客户端,54323 → 聊天软件。

例子3:DNS查询过程

DNS查询使用UDP协议:

场景:浏览器查询 www.baidu.com 的 IP 地址。

  1. 应用层:浏览器需要解析域名
  2. 传输层(UDP):
    • 客户端端口:49152(临时端口)
    • DNS 服务器端口:53
    • 发送 DNS 查询请求(UDP 数据报)
  3. 网络层:客户端 IP → DNS 服务器 IP
  4. DNS 服务器:
    • 收到 UDP 数据报
    • 查询域名对应的 IP
    • 返回 IP 地址(UDP 数据报)
  5. 客户端:
    • 收到 UDP 响应,得到 IP 地址:202.108.22.5
    • 浏览器使用该 IP 访问网站

特点:UDP 简单快速、一次请求一次响应、不需要建立连接、响应速度快。


练习题

练习 1

传输层和网络层有什么区别?它们如何协作?

传输层网络层端口号进程通信

解题思路:

沿寻址对象、提供的保证和交接方式三个轴线区分两层,再用一个端到端例子说明分工。

详细步骤:

主要区别:

  1. 通信范围:

    • 网络层:主机到主机(找到IP地址)
    • 传输层:进程到进程(找到端口号)
  2. 寻址方式:

    • 网络层:IP地址(32位或128位)
    • 传输层:端口号(16位)
  3. 可靠性:

    • 网络层:不保证,尽力而为
    • 传输层:TCP保证,UDP不保证
  4. 流量控制:

    • 网络层:无
    • 传输层:TCP有流量控制

协作方式:

网络层和传输层分工协作:

  • 网络层负责找到目标主机(IP地址)
  • 传输层负责找到目标进程(端口号)

就像快递:

  • 网络层:找到大楼地址
  • 传输层:找到房间号
  • 协作:把快递送到具体房间

实例: 访问网站时:

  • 网络层:把数据送到服务器主机(IP地址)
  • 传输层:把数据交给Web服务器进程(端口80)

最终答案:

网络层用 IP 地址找到目标主机,传输层用端口号找到主机上的目标进程,两层协作完成端到端交付。

练习 2

什么是端口?端口有什么作用?端口如何分类?

端口号知名端口进程标识端口分类

解题思路:

先定义端口,再列出它的几项作用,最后按 IANA 的三段范围分类并各举一例。

详细步骤:

端口的定义: 端口是传输层用于标识进程的16位数字(0-65535),就像房间号标识大楼里的具体房间。

端口的作用:

  1. 标识进程:唯一标识主机内的进程
  2. 区分服务:区分不同的网络服务
  3. 数据分发:将数据分发给正确的应用进程
  4. 连接管理:在TCP中标识不同的连接

端口分类:

  1. 熟知端口(0-1023):

    • 分配给常用服务
    • 由IANA统一管理
    • 例:HTTP(80)、FTP(21)、SSH(22)
  2. 注册端口(1024-49151):

    • 分配给应用程序
    • 需要注册
    • 例:MySQL(3306)、Oracle(1521)
  3. 动态端口(49152-65535):

    • 临时分配给客户端
    • 由操作系统动态分配
    • 连接结束后释放

类比:

  • 知名端口:大楼公共服务区(前台、电梯)
  • 注册端口:办公区(公司办公室)
  • 动态端口:临时活动室(临时使用)

最终答案:

端口是 16 位的进程标识符,按知名端口、注册端口和动态端口三段范围划分。

练习 3

什么是复用和分用?举例说明传输层如何实现复用和分用。

多路复用分用端口号进程通信

解题思路:

先用类比定义复用与分用,再分别描述发送方的复用路径和接收方的分用路径。

详细步骤:

复用的定义: 复用是指多个应用进程共享同一个传输层服务,就像多人共用一部电话打电话。

分用的定义: 分用是指传输层将接收到的数据分发给相应的应用进程,就像电话交换机把来电转接给具体的人。

实现机制:

发送方(复用):

  • 多个应用进程使用不同端口
  • 传输层统一处理
  • 通过网络层发送

接收方(分用):

  • 网络层接收数据
  • 传输层提取目的端口
  • 根据端口分发数据给对应进程

实例说明:

发送方:

  • 浏览器(端口54321)发送网页请求
  • 邮件客户端(端口54322)发送邮件
  • 聊天软件(端口54323)发送消息
  • 都通过传输层发送

接收方(服务器):

  • 收到多个数据包
  • 端口80的数据 → Web服务器
  • 端口25的数据 → 邮件服务器
  • 端口8080的数据 → 聊天服务器

类比:

  • 复用:多个人通过同一部电话打电话
  • 分用:来电根据号码转接给具体的人

最终答案:

复用让多个应用进程共享同一传输层服务,分用则按端口号把数据交还给对应的应用进程。

练习 4

TCP和UDP有什么区别?它们各自适用于什么场景?

TCPUDP协议选择可靠性

解题思路:

在实践中最要紧的几个维度上对比两种协议,再各自对号入座并给出选择规则。

详细步骤:

主要区别:

  1. 连接方式:

    • TCP:面向连接,需建立连接
    • UDP:无连接,直接发送
  2. 可靠性:

    • TCP:保证可靠传输
    • UDP:不保证可靠性
  3. 顺序保证:

    • TCP:保证有序到达
    • UDP:不保证顺序
  4. 流量控制:

    • TCP:有流量控制
    • UDP:无流量控制
  5. 开销和延迟:

    • TCP:开销大,延迟高
    • UDP:开销小,延迟低

适用场景:

TCP适用场景:

  • 文件传输:数据完整性重要
  • 网页浏览:页面完整重要
  • 那件传输:邮件内容重要
  • 数据库同步:数据准确重要

特点:数据完整性和准确性比速度更重要

UDP适用场景:

  • 语音通话:实时性强
  • 视频直播:实时性强
  • 在线游戏:速度优先
  • DNS查询:简单快速

特点:实时性和速度比可靠性更重要

选择依据:

  • 如果数据不能丢失 → 用TCP
  • 如果实时性重要 → 用UDP
  • 如果数据量大 → 用TCP
  • 如果数据量小 → 用UDP

最终答案:

TCP 可靠但开销大,UDP 快而轻;数据不能丢或量大选 TCP,实时性优先或数据量小选 UDP。


发现内容有问题?

告诉我们哪里需要改进。