导航菜单

传输层基础概念

传输层概述

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


1. 传输层的核心作用

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

端到端进程通信

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

为什么需要进程通信?

类比大楼通信

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

实际场景

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

更形象的类比

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

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

进程通信的实现

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

发送方:
- 你的电脑 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) → 传输层 → 网络层 → 网络
(三个应用共享传输层服务)

接收方(分用):
网络 → 网络层 → 传输层 → 浏览器(端口54321)
网络 → 网络层 → 传输层 → 邮件客户端(端口54322)
网络 → 网路层 → 传输层 → 聊天软件(端口54323)
(根据端口号分发数据)

复用分用的实现机制

传输层如何实现分用

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

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

具体例子

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

请求1:
- 源IP:192.168.1.10,源端口:54321
- 目的IP:服务器IP,目的端口:80
- 内容:网页请求

请求2:
- 源IP:192.168.1.11,源端口:54322
- 目的IP:服务器IP,目的端口:25
- 内容:邮件发送

分用过程:
- 端口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) → TCP → 网络层 → 发送
邮件客户端(端口54322) → TCP → 网络层 → 发送
聊天软件(端口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)

练习 2

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

参考答案

端口的定义: 端口是传输层用于标识进程的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)

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

类比

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

练习 3

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

参考答案

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

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

实现机制

发送方(复用):

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

接收方(分用):

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

实例说明

发送方:

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

接收方(服务器):

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

类比

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

练习 4

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

参考答案

主要区别

  1. 连接方式

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

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

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

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

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

适用场景

TCP适用场景

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

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

UDP适用场景

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

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

选择依据

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

总结

传输层的核心职责

职责类比实现方式
进程通信找到房间端口号寻址
数据复用分用电话转接端口分发
可靠性保证快递保证TCP协议
快速传输快速投递UDP协议

学习要点

  1. 理解传输层的作用:在网络层基础上提供进程间通信
  2. 掌握端口号概念:端口的作用、分类和分配
  3. 理解复用分用:多个应用如何共享传输层服务
  4. 区分TCP和UDP:两种协议的特点和适用场景
  5. 认识传输层与网络层的关系:分工协作实现通信

关键概念记忆

  • 端口号:标识进程的16位数字
  • 熟知端口:0-1023,分配给常用服务
  • TCP:面向连接,可靠传输
  • UDP:无连接,快速传输
  • 复用:多个应用共享传输层
  • 分用:传输层分发数据给应用

传输层是网络通信的”最后一公里”,确保数据准确到达具体应用进程!

搜索