第1章 概述
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章是TCP/IP协议族的概述,介绍分层结构、封装分用、客户-服务器模型等基本概念。
1.1 引言
TCP/IP协议族
TCP/IP协议族:
- 互联网的基础协议
- 一组协议的总称
- 不仅仅是TCP和IP
- 包含很多协议
TCP/IP是互联网的基础。
TCP/IP的分层
TCP/IP的四层模型:
| 层级 | 说明 | 主要协议 |
|---|---|---|
| 应用层 | 处理特定应用细节 | HTTP、FTP、SMTP、DNS等 |
| 传输层 | 端到端的通信 | TCP、UDP |
| 网络层 | 分组的选路和转发 | IP、ICMP、IGMP |
| 链路层 | 设备驱动和网络接口 | 以太网、PPP、SLIP等 |
四层结构,每层有不同的职责。
OSI七层模型 vs TCP/IP四层
OSI七层模型:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
TCP/IP四层:
- 链路层(对应OSI 1-2层)
- 网络层(对应OSI 3层)
- 传输层(对应OSI 4层)
- 应用层(对应OSI 5-7层)
TCP/IP更简洁,OSI更详细。
1.2 分层的好处
分层的优点
分层的优点:
-
模块化
- 每层独立
- 可以单独修改
- 不影响其他层
-
抽象
- 上层不用关心下层细节
- 只要知道接口就行
- 简化设计
-
可替换
- 一层可以换成不同实现
- 比如以太网换WiFi
- 上层不用改
-
易于理解和学习
- 分层学习
- 每层一个概念
分层简化了设计和学习。
1.3 封装与分用
封装
封装(Encapsulation):
- 每层给数据加自己的首部
- 应用数据 → 加TCP首部 → 加IP首部 → 加以太网首部
- 像洋葱一样,一层包一层
封装的过程:
应用数据
|
v
+--------+-----------+
| TCP首部 | 应用数据 |
+--------+-----------+
|
v
+--------+--------+-----------+
| IP首部 | TCP首部 | 应用数据 |
+--------+--------+-----------+
|
v
+----------+--------+--------+-----------+
| 以太网首部 | IP首部 | TCP首部 | 应用数据 |
+----------+--------+--------+-----------+
每层都加自己的首部。
分用
分用(Demultiplexing):
- 接收时的相反过程
- 每层去掉自己的首部
- 把数据交给上层
- 根据首部字段判断交给谁
分用的过程:
+----------+--------+--------+-----------+
| 以太网首部 | IP首部 | TCP首部 | 应用数据 |
+----------+--------+--------+-----------+
|
v 去掉以太网首部
|
+--------+--------+-----------+
| IP首部 | TCP首部 | 应用数据 |
+--------+--------+-----------+
|
v 去掉IP首部
|
+--------+-----------+
| TCP首部 | 应用数据 |
+--------+-----------+
|
v 去掉TCP首部
|
应用数据
分用是封装的逆过程。
分用的依据
每层怎么知道交给谁:
| 层 | 依据 | 例子 |
|---|---|---|
| 链路层 | 帧类型字段 | 0x0800=IP, 0x0806=ARP |
| 网络层 | IP首部的协议字段 | 1=ICMP, 6=TCP, 17=UDP |
| 传输层 | TCP/UDP的端口号 | 80=HTTP, 53=DNS |
| 应用层 | 应用自己处理 | 应用协议 |
每层都有字段标识上层协议。
1.4 客户-服务器模型
什么是客户-服务器模型
客户-服务器模型(Client-Server):
- 服务器:提供服务的程序
- 客户端:请求服务的程序
- 客户端主动发起请求
- 服务器被动等待请求
客户-服务器是最常见的网络应用模型。
服务器的类型
两种类型的服务器:
-
重复型服务器(Iterative)
- 一次处理一个请求
- 处理完再处理下一个
- 简单,但并发差
-
并发型服务器(Concurrent)
- 同时处理多个请求
- 每个请求一个进程/线程
- 复杂,但并发好
两种服务器模型各有优缺点。
端口号
端口号(Port Number):
- 标识不同的应用
- 16位,0-65535
- 服务器监听特定端口
- 客户端连接到服务器的端口
端口分类:
- 知名端口(0-1023):固定分配,如80=HTTP
- 注册端口(1024-49151):注册使用
- 动态/私有端口(49152-65535):临时使用
端口号标识应用程序。
1.5 标准化过程
RFC
RFC(Request For Comments):
- TCP/IP协议的标准文档
- 一系列的编号文档
- 公开可获取
- 互联网的标准
RFC是TCP/IP的标准文档。
IETF
IETF(Internet Engineering Task Force):
- 互联网工程任务组
- 负责制定互联网标准
- 志愿者组织
- 工作组形式
IETF是制定标准的组织。
标准化的阶段
标准的成熟度:
-
提议标准(Proposed Standard)
- 提议阶段
- 还在讨论
-
草案标准(Draft Standard)
- 至少两个独立实现
- 比较成熟
-
标准(Standard)
- 正式标准
- 广泛使用
标准有不同的成熟度级别。
1.6 互联网和互联网
互联网(internet)
互联网(internet,小写i):
- 通用术语
- 多个网络互联
- 任何网络的集合
互联网是网络的集合。
Internet
Internet(大写I):
- 特指全球的那个互联网
- 专有名词
- 用TCP/IP协议
- 全世界的网络连在一起
Internet是特指全球互联网。
1.7 实现:4.4BSD-Lite
本书使用的实现
本书使用的实现:
- 4.4BSD-Lite
- 加州大学伯克利分校的BSD系统
- TCP/IP的经典实现
- 很多系统都基于它
为什么用BSD:
- 代码公开
- 经典实现
- 很多系统的基础
- 容易理解
本书以4.4BSD-Lite为参考实现。
1.8 小结
TCP/IP分层
-
四层模型
- 应用层
- 传输层
- 网络层
- 链路层
-
分层的好处
- 模块化
- 抽象
- 可替换
- 易于学习
封装与分用
-
封装
- 每层加首部
- 像洋葱一样
-
分用
- 每层去首部
- 交给上层
-
分用依据
- 链路层:帧类型
- 网络层:协议字段
- 传输层:端口号
客户-服务器模型
-
基本概念
- 客户端主动
- 服务器被动
-
服务器类型
- 重复型
- 并发型
-
端口号
- 标识应用
- 知名端口、注册端口、动态端口
标准化
-
RFC
- 标准文档
- 公开可获取
-
IETF
- 标准组织
- 志愿者
-
标准阶段
- 提议标准
- 草案标准
- 标准
关键概念
-
分层
- 四层结构
- 每层职责
-
封装分用
- 发送封装
- 接收分用
-
客户-服务器
- 基本模型
- 端口号
-
RFC
- 标准文档
- 标准化过程