传输层基础概念
传输层概述
传输层是 OSI 参考模型中的第四层,主要负责在端到端之间提供可靠的数据传输服务。
1. 传输层功能
端到端进程通信
- 进程标识:为应用层进程提供通信服务
- 逻辑连接:在源主机和目标主机之间建立逻辑连接
- 数据传递:将数据从源进程传递到目标进程
- 服务质量:提供不同级别的服务质量保证
传输层寻址(端口号)
- 端口号:16 位整数,用于标识主机内的进程
- 源端口:发送方进程的端口号
- 目的端口:接收方进程的端口号
- 端口分配:
- 熟知端口:0-1023,分配给常用服务
- 注册端口:1024-49151,分配给应用程序
- 动态端口:49152-65535,临时分配
复用与分用
- 复用:多个应用层进程共享传输层服务
- 分用:传输层将接收到的数据分发给相应的应用层进程
- 多路复用:在单一连接上传输多个数据流
差错检测与可靠性
- 差错检测:检测数据传输过程中的错误
- 可靠性保证:确保数据完整、有序、无重复传输
- 重传机制:丢失或错误的数据包重传
- 流量控制:防止发送方过快导致接收方缓冲区溢出
2. 传输层寻址与端口
端口号的作用
- 进程标识:唯一标识主机内的进程
- 服务区分:区分不同的网络服务
- 连接标识:在 TCP 中标识连接
- 数据分发:将数据分发给正确的应用进程
端口号分类
熟知端口(0-1023):
- 分配给常用网络服务
- 由 IANA 统一管理
- 常见端口:
- 20/21:FTP(文件传输协议)
- 22:SSH(安全外壳协议)
- 23:Telnet(远程登录)
- 25:SMTP(简单邮件传输协议)
- 53:DNS(域名系统)
- 80:HTTP(超文本传输协议)
- 110:POP3(邮局协议)
- 143:IMAP(互联网消息访问协议)
- 443:HTTPS(安全超文本传输协议)
注册端口(1024-49151):
- 分配给应用程序
- 需要向 IANA 注册
- 常见端口:
- 1433:Microsoft SQL Server
- 1521:Oracle 数据库
- 3306:MySQL 数据库
- 5432:PostgreSQL 数据库
- 6379:Redis
- 8080:HTTP 代理
动态端口(49152-65535):
- 临时分配给客户端进程
- 由操作系统动态分配
- 客户端发起连接时使用
端口号管理
- 端口分配:操作系统负责端口号分配
- 端口冲突:避免多个进程使用同一端口
- 端口扫描:检测主机开放的端口
- 防火墙:控制端口访问权限
3. 传输层服务类型
无连接服务
- 特点:不需要预先建立连接
- 协议:UDP(用户数据报协议)
- 可靠性:不保证可靠传输
- 适用场景:实时应用、简单查询
面向连接服务
- 特点:需要预先建立连接
- 协议:TCP(传输控制协议)
- 可靠性:保证可靠传输
- 适用场景:文件传输、Web 浏览
服务选择
选择 UDP 的情况:
- 实时性要求高
- 数据量小
- 允许少量数据丢失
- 简单查询服务
选择 TCP 的情况:
- 可靠性要求高
- 数据量大
- 不允许数据丢失
- 文件传输服务
4. 传输层与网络层的关系
层次关系
- 网络层:提供主机到主机的通信
- 传输层:提供进程到进程的通信
- 抽象层次:传输层在网络层基础上提供更高层次的服务
功能分工
网络层功能:
- 路由选择
- 分组转发
- 网络互联
传输层功能:
- 进程通信
- 可靠性保证
- 流量控制
协议栈
- 应用层:HTTP、FTP、SMTP 等
- 传输层:TCP、UDP
- 网络层:IP
- 数据链路层:以太网、WiFi 等
- 物理层:双绞线、光纤等
练习题
练习 1
简述传输层的主要功能。
参考答案
传输层的主要功能包括:
-
端到端进程通信:
- 为应用层进程提供通信服务
- 在源主机和目标主机之间建立逻辑连接
- 将数据从源进程传递到目标进程
-
传输层寻址:
- 使用端口号标识主机内的进程
- 实现进程间的通信
- 支持多路复用
-
复用与分用:
- 多个应用层进程共享传输层服务
- 将接收到的数据分发给相应的应用层进程
- 实现多路复用
-
差错检测与可靠性:
- 检测数据传输过程中的错误
- 确保数据完整、有序、无重复传输
- 提供重传机制
-
流量控制:
- 防止发送方过快导致接收方缓冲区溢出
- 控制数据传输速率
- 保证网络稳定性
练习 2
端口号的作用是什么?举例常见端口。
参考答案
端口号的作用:
- 进程标识:唯一标识主机内的进程
- 服务区分:区分不同的网络服务
- 连接标识:在 TCP 中标识连接
- 数据分发:将数据分发给正确的应用进程
常见端口举例:
熟知端口(0-1023):
- 20/21:FTP(文件传输协议)
- 22:SSH(安全外壳协议)
- 23:Telnet(远程登录)
- 25:SMTP(简单邮件传输协议)
- 53:DNS(域名系统)
- 80:HTTP(超文本传输协议)
- 110:POP3(邮局协议)
- 143:IMAP(互联网消息访问协议)
- 443:HTTPS(安全超文本传输协议)
注册端口(1024-49151):
- 1433:Microsoft SQL Server
- 1521:Oracle 数据库
- 3306:MySQL 数据库
- 5432:PostgreSQL 数据库
- 6379:Redis
- 8080:HTTP 代理