第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七层模型:

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表示层
  7. 应用层

TCP/IP四层:

  1. 链路层(对应OSI 1-2层)
  2. 网络层(对应OSI 3层)
  3. 传输层(对应OSI 4层)
  4. 应用层(对应OSI 5-7层)

TCP/IP更简洁,OSI更详细。


1.2 分层的好处

分层的优点

分层的优点:

  1. 模块化

    • 每层独立
    • 可以单独修改
    • 不影响其他层
  2. 抽象

    • 上层不用关心下层细节
    • 只要知道接口就行
    • 简化设计
  3. 可替换

    • 一层可以换成不同实现
    • 比如以太网换WiFi
    • 上层不用改
  4. 易于理解和学习

    • 分层学习
    • 每层一个概念

分层简化了设计和学习。


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):

  • 服务器:提供服务的程序
  • 客户端:请求服务的程序
  • 客户端主动发起请求
  • 服务器被动等待请求

客户-服务器是最常见的网络应用模型。


服务器的类型

两种类型的服务器:

  1. 重复型服务器(Iterative)

    • 一次处理一个请求
    • 处理完再处理下一个
    • 简单,但并发差
  2. 并发型服务器(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是制定标准的组织。


标准化的阶段

标准的成熟度:

  1. 提议标准(Proposed Standard)

    • 提议阶段
    • 还在讨论
  2. 草案标准(Draft Standard)

    • 至少两个独立实现
    • 比较成熟
  3. 标准(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分层

  1. 四层模型

    • 应用层
    • 传输层
    • 网络层
    • 链路层
  2. 分层的好处

    • 模块化
    • 抽象
    • 可替换
    • 易于学习

封装与分用

  1. 封装

    • 每层加首部
    • 像洋葱一样
  2. 分用

    • 每层去首部
    • 交给上层
  3. 分用依据

    • 链路层:帧类型
    • 网络层:协议字段
    • 传输层:端口号

客户-服务器模型

  1. 基本概念

    • 客户端主动
    • 服务器被动
  2. 服务器类型

    • 重复型
    • 并发型
  3. 端口号

    • 标识应用
    • 知名端口、注册端口、动态端口

标准化

  1. RFC

    • 标准文档
    • 公开可获取
  2. IETF

    • 标准组织
    • 志愿者
  3. 标准阶段

    • 提议标准
    • 草案标准
    • 标准

关键概念

  1. 分层

    • 四层结构
    • 每层职责
  2. 封装分用

    • 发送封装
    • 接收分用
  3. 客户-服务器

    • 基本模型
    • 端口号
  4. RFC

    • 标准文档
    • 标准化过程

概述