logo资料库

tcpip详解-卷一.pdf

第1页 / 共440页
第2页 / 共440页
第3页 / 共440页
第4页 / 共440页
第5页 / 共440页
第6页 / 共440页
第7页 / 共440页
第8页 / 共440页
资料共440页,剩余部分请下载后查看
TCP-IP详解卷1:协议
目录
内容简介
第1 章概述
1.1 引言
1.2 分层
1.3 TCP/IP 的分层
1.4 互联网的地址
1.5 域名系统
1.6 封装
1.7 分用
1.8 客户-服务器模型
1.9 端口号
1.10 标准化过程
1.11 RFC
1.12 标准的简单服务
1.13 互联网
1.14 实现
1.15 应用编程接口
1.16 测试网络
1.17 小结
第2 章链路层
2.1 引言
2.2 以太网和IEEE 802 封装
2.3 尾部封装
2.4 SLIP :串行线路IP
2.5 压缩的SLIP
2.6 PPP :点对点协议
2.7 环回接口
2.8 最大传输单元MTU
2.9 路径MTU
2.10 串行线路吞吐量计算
2.11 小结
第3 章IP :网际协议
3.1 引言
3.2 IP 首部
3.3 IP 路由选择
3.4 子网寻址
3.5 子网掩码
3.6 特殊情况的IP 地址
3.7 一个子网的例子
3.8 ifconfig 命令
3.9 netstat 命令
3.10 IP 的未来
3.11 小结
第4 章ARP :地址解析协议
4.1 引言
4.2 一个例子
4.3 ARP 高速缓存
4.4 ARP 的分组格式
4.5 ARP 举例
4.5.1 一般的例子
4.5.2 对不存在主机的ARP 请求
4.5.3 ARP 高速缓存超时设置
4.6 ARP 代理
4.7 免费ARP
4.8 arp 命令
4.9 小结
第5 章RARP :逆地址解析协议
5.1 引言
5.2 RARP 的分组格式
5.3 RARP 举例
5.4 RARP 服务器的设计
5.4.1 作为用户进程的RARP 服务器
5.4.2 每个网络有多个RARP 服务器
5.5 小结
第6 章ICMP :Internet 控制报文协议
6.1 引言
6.2 ICMP 报文的类型
6.3 ICMP 地址掩码请求与应答
6.4 ICMP 时间戳请求与应答
6.4.1 举例
6.4.2 另一种方法
6.5 ICMP 端口不可达差错
6.6 ICMP 报文的4.4BSD 处理
6.7 小结
第7 章Ping 程序
7.1 引言
7.2 Ping 程序
7.2.1 LAN 输出
7.2.2 WAN 输出
7.2.3 线路SLIP 链接
7.2.4 拨号SLIP 链路
7.3 IP 记录路由选项
7.3.1 通常的例子
7.3.2 异常的输出
7.4 IP 时间戳选项
7.5 小结
第8 章Traceroute 程序
8.1 引言
8.2 Traceroute 程序的操作
8.3 局域网输出
8.4 广域网输出
8.5 IP 源站选路选项
8.5.1 宽松的源站选路的t r a c e r o u t e 程序示例
8.5.2 严格的源站选路的t r a c e r o u t eL밀
8.5.3 宽松的源站选路t r a c e r o u t e 程序的往返路由
8.6 小结
第9 章IP 选路
9.1 引言
9.2 选路的原理
9.2.1 简单路由表
9.2.2 初始化路由表
9.2.3 较复杂的路由表
9.2.4 没有到达目的地的路由
9.3 ICMP 主机与网络不可达差错
9.4 转发或不转发
9.5 ICMP 重定向差错
9.5.1 一个例子
9.5.2 更多的细节
9.6 ICMP 路由器发现报文
9.6.1 路由器操作
9.6.2 主机操作
9.6.3 实现
9.7 小结
第10 章动态选路协议
10.1 引言
10.2 动态选路
10.3 Unix 选路守护程序
10.4 RIP :选路信息协议
10.4.1 报文格式
10.4.2 正常运行 命令
10.4.3 度量
10.4.4 问题
10.4.5 举例
10.4.6 另一个例子
10.5 RIP 版本2
10.6 OSPF :开放最短路径优先
10.7 BGP :边界网关协议
10.8 CIDR :无类型域间选路
10.9 小结
第11 章UDP :用户数据报协议
11.1 引言
11.2 UDP 首部
11.3 UDP 检验和
11.3.1 tcpdump 输出
11.3.2 一些统计结果
11.4 一个简单的例子
11.5 IP 分片
11.6 ICMP 不可达差错(需要分片)
11.7 用Traceroute 确定路径MTU
11.8 采用UDP 的路径MTU 发现
11.9 UDP 和ARP 之间的交互作用
11.10 最大UDP 数据报长度
11.11 ICMP 源站抑制差错
11.12 UDP 服务器的设计
11.12.1 客户IP 地址及端口号
11.12.2 目的IP 地址
11.12.3 UDP 输入队列
11.12.4 限制本地IP 地址
11.12.5 限制远端IP 地址
11.12.6 每个端口有多个接收者
11.13 小结
第12 章广播和多播
12.1 引言
12.2 广播
12.2.1 受限的广播
12.2.2 指向网络的广播
12.2.3 指向子网的广播
12.2.4 指向所有子网的广播
12.3 广播的例子
12.4 多播
12.4.1 多播组地址
12.4.2 多播组地址到以太网地址的转换
12.4.3 FDDI 和令牌环网络中的多播
12.5 小结
第13 章IGMP :Internet 组管理协议
13.1 引言
13.2 IGMP 报文
13.3 IGMP 协议
13.3.1 加入一个多播组
13.3.2 IGMP 报告和查询
13.3.3 实现细节
13.3.4 生存时间字段
13.3.5 所有主机组
13.4 一个例子
13.5 小结
第14 章DNS :域名系统
14.1 引言
14.2 DNS 基础
14.3 DNS 的报文格式
14.3.1 DNS 查询报文中的问题部分
14.3.2 DNS 响应报文中的资源记录部分
14.4 一个简单的例子
14.5 指针查询
14.5.1 举例
14.5.2 主机名检查
14.6 资源记录
14.7 高速缓存
14.8 用UDP 还是用TCP
14.9 另一个例子
14.10 小结
第15 章TFTP :简单文件传送协议
15.1 引言
15.2 协议
15.3 一个例子
15.4 安全性
15.5 小结
第16 章BOOTP :引导程序协议
16.1 引言
16.2 BOOTP 的分组格式
16.3 一个例子
16.4 BOOTP 服务器的设计
16.5 BOOTP 穿越路由器
16.6 特定厂商信息
16.7 小结
第17 章TCP :传输控制协议
17.1 引言
17.2 TCP 的服务
17.3 TCP 的首部
17.4 小结
第18 章TCP 连接的建立与终止
18.1 引言
18.2 连接的建立与终止
18.2.1 t c p d u m p 的输出
18.2.2 时间系列
18.2.3 建立连接协议
18.2.4 连接终止协议
18.2.5 正常的t c p d u m p 输出
18.3 连接建立的超时
18.3.1 第一次超时时间
18.3.2 服务类型字段
18.4 最大报文段长度
18.5 TCP 的半关闭
18.6 TCP 的状态变迁图
18.6.1 2MSL 等待状态
18.6.2 平静时间的概念
18.6.3 FIN_WAIT_2 状态
18.7 复位报文段
18.7.1 到不存在的端口的连接请求
18.7.2 异常终止一个连接
18.7.3 检测半打开连接
18.8 同时打开
18.9 同时关闭
18.10 TCP 选项
18.11 TCP 服务器的设计
18.11.1 TCP 服务器端口号
18.11.2 限定的本地IP 地址
18.11.3 限定的远端IP 地址
18.11.4 呼入连接请求队列
18.12 小结
第19 章TCP 的交互数据流
19.1 引言
19.2 交互式输入
19.3 经受时延的确认
19.4 Nagle 算法
19.4.1 关闭Nagle 算法
19.4.2 一个例子
19.5 窗口大小通告
19.6 小结
第20 章TCP 的成块数据流
20.1 引言
20.2 正常数据流
20.3 滑动窗口
20.4 窗口大小
20.5 PUSH 标志
20.6 慢启动
20.7 成块数据的吞吐量
20.7.1 带宽时延乘积
20.7.2 拥塞
20.8 紧急方式
20.9 小结
第21 章TCP 的超时与重传
21.1 引言
21.2 超时与重传的简单例子
21.3 往返时间测量
21.4 往返时间RTT 的例子
21.4.1 往返时间RTT 的测量
21.4.2 RTT 估计器的计算
21.4.3 慢启动
21.5 拥塞举例
21.6 拥塞避免算法
21.7 快速重传与快速恢复算法
21.8 拥塞举例(续)
21.9 按每条路由进行度量
21.10 ICMP 的差错
21.11 重新分组
21.12 小结
第22 章TCP 的坚持定时器
22.1 引言
22.2 一个例子
22.3 糊涂窗口综合症
22.4 小结
第23 章TCP 的保活定时器
23.1 引言
23.2 描述
23.3 保活举例
23.3.1 另一端崩溃
23.3.2 另一端崩溃并重新启动
23.3.3 另一端不可达
23.4 小结
第24 章TCP 的未来和性能
24.1 引言
24.2 路径MTU 发现
24.2.1 一个例子
24.2.2 大分组还是小分组
24.3 长肥管道
24.4 窗口扩大选项
24.5 时间戳选项
24.6 PAWS :防止回绕的序号
24.7 T/TCP :为事务用的TCP 扩展
24.8 TCP 的性能
24.9 小结
第25 章SNMP: 简单网络管理协议
25.1 引言
25.2 协议
25.3 管理信息结构
25.4 对象标识符
25.5 管理信息库介绍
25.6 实例标识
25.6.1 简单变量
25.6.2 表格
25.6.3 字典式排序
25.7 一些简单的例子
25.7.1 简单变量
25.7.2 get-next 操作
25.7.3 表格的访问
25.8 管理信息库(续)
25.8.1 s y s t e m 组
25.8.2 interface 组
25.8.3 a t 组
25.8.4 i p 组
25.8.5 i c m p 组
25.8.6 t c p 组
25.9 其他一些例子
25.9.1 接口MTU
25.9.2 路由表
25.10 Trap
25.11 ASN.1 和BER
25.12 SNMPv2
25.13 小结
第26 章Telnet 和Rlogin :远程登录
26.1 引言
26.2 Rlogin 协议
26.2.1 应用进程的启动
26.2.2 流量控制
26.2.3 客户的中断键
26.2.4 窗口大小的改变
26.2.5 服务器到客户的命令
26.2.6 客户到服务器的命令
26.2.7 客户的转义符
26.3 Rlogin 的例子
26.3.1 初始的客户-服务器协议
26.3.2 客户中断键
26.4 Telnet 协议
26.4.1 NVT ASCII
26.4.2 Telnet 命令
26.4.3 选项协商
26.4.4 子选项协商
26.4.5 半双工、一次一字符、一次一行或行方式
26.4.6 同步信号
26.4.7 客户的转义符
26.5 Telnet 举例
26.5.1 单字符方式
26.5.2 行方式
26.5.3 一次一行方式(准行方式)
26.5.4 行方式:客户中断键
26.6 小结
第27 章FTP :文件传送协议
27.1 引言
27.2 FTP 协议
27.2.1 数据表示
27.2.2 FTP 命令
27.2.3 FTP 应答
27.2.4 连接管理
27.3 FTP 的例子
27.3.1 连接管理:临时数据端口
27.3.2 连接管理:默认数据端口
27.3.3 文本文件传输:NVT ASCII 表示还是图像表示
27.3.4 异常中止一个文件的传输:Telnet 同步信号
27.3.5 匿名FTP
27.3.6 来自一个未知IP 地址的匿名FTP
27.4 小结
第28 章SMTP: 简单邮件传送协议
28.1 引言
28.2 SMTP 协议
28.2.1 简单例子
28.2.2 SMTP 命令
28.2.3 信封、首部和正文
28.2.4 中继代理
28.2.5 NVT ASCII
28.2.6 重试间隔
28.3 SMTP 的例子
28.3.1 MX 记录:主机非直接连到Internet
28.3.2 MX 记录:主机出故障
28.3.3 VRFY 和EXPN 命令
28.4 SMTP 的未来
28.4.1 信封的变化:扩充的SMTP
28.4.2 首部变化:非ASCII 字符
28.4.3 正文变化:通用Internet 邮件扩充
28.5 小结
第29 章网络文件系统
29.1 引言
29.2 Sun 远程过程调用
29.3 XDR: 外部数据表示
29.4 端口映射器
29.5 NFS 协议
29.5.1 文件句柄
29.5.2 安装协议
29.5.3 NFS 过程
29.5.4 UDP 还是TCP
29.5.5 TCP 上的NFS
29.6 NFS 实例
29.6.1 简单的例子:读一个文件
29.6.2 简单的例子:创建一个目录
29.6.3 无状态
29.6.4 例子:服务器崩溃
29.6.5 等幂过程
29.7 第3 版的NFS
29.8 小结
第30 章其他的TCP/IP 应用程序
30.1 引言
30.2 Finger 协议
30.3 Whois 协议
30.4 Archie 、WAIS 、Gopher 、Veronica 和WWW
30.4.1 Archie
30.4.2 WAIS
30.4.3 Gopher
30.4.4 Veronica
30.4.5 万维网WWW
30.5 X 窗口系统
30.5.1 Xscope 程序
30.5.2 LBX :低带宽X
30.6 小结
附录A tcpdump 程序
A.1 BSD 分组过滤器
A.2 SunOS 的网络接口分接头
A.3 SVR4 数据链路提供者接口
A.4 tcpdump 的输出
A.5 安全性考虑
A.6 插口排错选项
附录B 计算机时钟
附录C sock 程序
附录D 部分习题的解答
第1 章
第3 章
第4 章
第5 章
第6 章
第7 章
第8 章
第9 章
第10 章
第11 章
第12 章
第13 章
第14 章
第15 章
第16 章
第17 章
第18 章
第19 章
第20 章
第21 章
第22 章
第23 章
第24 章
第25 章
第26 章
第27 章
第28 章
第29 章
第30 章
附录E 配置选项
E.1 BSD/386 版本1.0
E.2 SunOS 4.1.3
E.3 SRV4
E.4 Solaris 2.2
E.5 AIX 3.2.2
E.6 4.4BSD
附录F 可以免费获得的源代码
参考文献
缩略语
下载 1.1 引言 第1章 概 述 很多不同的厂家生产各种型号的计算机,它们运行完全不同的操作系统,但 T C P / I P协议 族允许它们互相进行通信。这一点很让人感到吃惊,因为它的作用已远远超出了起初的设想。 T C P / I P起源于 6 0年代末美国政府资助的一个分组交换网络研究项目,到 9 0年代已发展成为计 算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现 可以不用花钱或花很少的钱就可以公开地得到。它成为被称作“全球互联网”或“因特网 ( I n t e r n e t )”的基础,该广域网( WA N)已包含超过1 0 0万台遍布世界各地的计算机。 本章主要对 T C P / I P协议族进行概述,其目的是为本书其余章节提供充分的背景知识。如 果读者要从历史的角度了解有关 T C P / I P的早期发展情况,请参考文献 [ Lynch 1993]。 1.2 分层 网络协议通常分不同层次进行开发,每一层分别 负责不同的通信功能。一个协议族,比如 T C P / I P,是 一组不同层次上的多个协议的组合。 T C P / I P通常被认 为是一个四层协议系统,如图 1 - 1所示。 每一层负责不同的功能: 1) 链路层,有时也称作数据链路层或网络接口层, 通常包括操作系统中的设备驱动程序和计算机 应用层 运输层 网络层 Telnet、FTP和e-mail等 TCP和UDP IP、ICMP和IGMP 链路层 设备驱动程序及接口卡 图1-1 TCP/IP协议族的四个层次 中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在 T C P / I P协议族中,网络层协议包括 I P协议(网际协议),I C M P协议(I n t e r n e t互联网控 制报文协议),以及I G M P协议(I n t e r n e t组管理协议)。 3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在 T C P / I P协议族中,有两个 互不相同的传输协议: T C P(传输控制协议)和 U D P(用户数据报协议)。 T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分 成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟 等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。 而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组 从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠 性必须由应用层来提供。 这两种运输层协议分别在不同的应用程序中有不同的用途,这一点将在后面看到。 4 ) 应用层负责处理特定的应用程序细节。几乎各种不同的 T C P / I P实现都会提供下面这些 通用的应用程序:
2使用TCP/IP详解,卷1:协议 • Telnet 远程登录。 • FTP 文件传输协议。 • SMTP 简单邮件传送协议。 • SNMP 简单网络管理协议。 下载 另外还有许多其他应用,在后面章节中将介绍其中的一部分。 假设在一个局域网( L A N)如以太网中有两台主机,二者都运行 F T P协议,图 1 - 2列出了 该过程所涉及到的所有协议。 应用层 FTP 客户 运输层 网络层 FTP 服务器 用户进程 处理应用 程序细节 内核 处理通信细节 FTP协议 TCP协议 IP协议 链路层 以太网驱 动程序 以太网协议 以太网 以太网驱 动程序 图1-2 局域网上运行FTP的两台主机 这里,我们列举了一个 F T P客户程序和另一个 F T P服务器程序。大多数的网络应用程序都 被设计成客户—服务器模式。服务器为客户提供某种服务,在本例中就是访问服务器所在主 机上的文件。在远程登录应用程序 Te l n e t中,为客户提供的服务是登录到服务器主机上。 在同一层上,双方都有对应的一个或多个协议进行通信。例如,某个协议允许 T C P层进 行通信,而另一个协议则允许两个 I P层进行通信。 在图1 - 2的右边,我们注意到应用程序通常是一个用户进程,而下三层则一般在(操作系 统)内核中执行。尽管这不是必需的,但通常都是这样处理的,例如 U N I X操作系统。 在图1 - 2中,顶层与下三层之间还有另一个关键的不同之处。应用层关心的是应用程序的 细节,而不是数据在网络中的传输活动。下三层对应用程序一无所知,但它们要处理所有的 通信细节。 在图1 - 2中列举了四种不同层次上的协议。 F T P是一种应用层协议, T C P是一种运输层协 议,I P是一种网络层协议,而以太网协议则应用于链路层上。 T C P / I P协议族是一组不同的协 议组合在一起构成的协议族。尽管通常称该协议族为 T C P / I P,但T C P和I P只是其中的两种协 议而已(该协议族的另一个名字是 I n t e r n e t协议族(Internet Protocol Suite))。 网络接口层和应用层的目的是很显然的—前者处理有关通信媒介的细节(以太网、令牌 环网等),而后者处理某个特定的用户应用程序( F T P、Te l n e t等)。但是,从表面上看,网络 层和运输层之间的区别不那么明显。为什么要把它们划分成两个不同的层次呢?为了理解这 一点,我们必须把视野从单个网络扩展到一组网络。
下载 第1章 概 述使用3 在8 0年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成的“孤 岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发展,到了 9 0 年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义。 于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连网 ( i n t e r n e t )。一个互连 网就是一组通过相同协议族互连在一起的网络。 构造互连网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用 于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、 点对点的链接和F D D I(光纤分布式数据接口)等等。 这些盒子也称作I P路由器(IP Router),但我们这里使用路由器 ( R o u t e r )这个术语。 从历史上说,这些盒子称作网关( g a t e w a y),在很多 T C P / I P文献中都使用这个术语。 现在网关这个术语只用来表示应用层网关:一个连接两种不同协议族的进程(例如, TCP/IP和IBM的SNA),它为某个特定的应用程序服务(常常是电子邮件或文件传输)。 图1 - 3是一个包含两个网络的互连网:一个以太网和一个令牌环网,通过一个路由器互相 连接。尽管这里是两台主机通过路由器进行通信,实际上以太网中的任何主机都可以与令牌 环网中的任何主机进行通信。 在图 1 - 3中,我们可以划分出端系统( End system )(两边的两台主机)和中间系统 (Intermediate system)(中间的路由器)。应用层和运输层使用端到端( En d - t o - e n d)协议。在 图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳( Ho p - b y - h o p)协议,两 个端系统和每个中间系统都要使用它。 FTP 客户 FTP 服务器 FTP协议 TCP协议 路由器 IP协议 I P协议 以太网驱 动程序 以太网协议 以太网驱 动程序 令牌环驱 动程序 令牌环协议 令牌环驱 动程序 以 太 网 令 牌 环 图1-3 通过路由器连接的两个网络 在T C P / I P协议族中,网络层 I P提供的是一种不可靠的服务。也就是说,它只是尽可能快 地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面, T C P在不可 靠的I P层上提供了一个可靠的运输层。为了提供这种可靠的服务, T C P采用了超时重传、发 送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。 从定义上看,一个路由器具有两个或多个网络接口层(因为它连接了两个或多个网络)。
4使用TCP/IP详解,卷1:协议 下载 任何具有多个接口的系统,英文都称作是多接口的 ( m u l t i h o m e d )。一个主机也可以有多个接口, 但一般不称作路由器 , 除非它的功能只是单纯地把分组从一个接口传送到另一个接口。同样, 路由器并不一定指那种在互联网中用来转发分组的特殊硬件盒。大多数的 T C P / I P实现也允许 一个多接口主机来担当路由器的功能,但是主机为此必须进行特殊的配置。在这种情况下, 我们既可以称该系统为主机(当它运行某一应用程序时,如 F T P或Te l n e t),也可以称之为路 由器(当它把分组从一个网络转发到另一个网络时)。在不同的场合下使用不同的术语。 互联网的目的之一是在应用程序中隐藏所有的物理细节。虽然这一点在图 1 - 3由两个网络 组成的互联网中并不很明显,但是应用层不能关心(也不关心)一台主机是在以太网上,而 另一台主机是在令牌环网上,它们通过路由器进行互连。随着增加不同类型的物理网络,可 能会有 2 0个路由器,但应用层仍然是一样的。物理细节的隐藏使得互联网功能非常强大,也 非常有用。 连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是 在网络层上对网络进行互连。网桥使得多个局域网( L A N)组合在一起,这样对上层来说就 好像是一个局域网。 TCP /IP 倾向于使用路由器而不是网桥来连接网络,因此我们将着重介绍路由器。文献 [Perlman 1992]的第1 2章对路由器和网桥进行了比较。 1.3 TCP/IP的分层 在T C P / I P协议族中,有很多种协议。图 1 - 4给出了本书将要讨论的其他协议。 用户 进程 用户 进程 用户 进程 用户 进程 应用层 运输层 网络层 链路层 硬件 接口 媒体 图1-4 TCP/IP协议族中不同层次的协议
下载 第1章 概 述使用5 T C P和U D P是两种最为著名的运输层协议,二者都使用 I P作为网络层协议。 虽然T C P使用不可靠的 I P服务,但它却提供一种可靠的运输层服务。本书第 1 7~2 2章将 详细讨论 T C P的内部操作细节。然后,我们将介绍一些 T C P的应用,如第 2 6章中的 Te l n e t和 R l o g i n、第2 7章中的F T P以及第2 8章中的S M T P等。这些应用通常都是用户进程。 U D P为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息 单元(例如,发送方指定的一定字节数的信息)。但是与 T C P不同的是, U D P是不可靠的,它 不能保证数据报能安全无误地到达最终目的。本书第 11章将讨论 U D P,然后在第 1 4章(D N S : 域名系统),第 1 5章( T F T P:简单文件传送协议),以及第 1 6章( BO OT P:引导程序协议) 介绍使用U D P的应用程序。 S N M P也使用了U D P协议,但是由于它还要处理许多其他的协议, 因此本书把它留到第 2 5章再进行讨论。 I P是网络层上的主要协议,同时被 T C P和U D P使用。T C P和U D P的每组数据都通过端系统 和每个中间路由器中的I P层在互联网中进行传输。在图1 - 4中,我们给出了一个直接访问 I P的应 用程序。这是很少见的,但也是可能的(一些较老的选路协议就是以这种方式来实现的。当然 新的运输层协议也有可能使用这种方式)。第3章主要讨论I P协议,但是为了使内容更加有针对 性,一些细节将留在后面的章节中进行讨论。第 9章和第1 0章讨论I P如何进行选路。 I C M P是I P协议的附属协议。I P层用它来与其他主机或路由器交换错误报文和其他重要信息。 第6章对I C M P的有关细节进行讨论。尽管I C M P主要被I P使用,但应用程序也有可能访问它。我 们将分析两个流行的诊断工具,P i n g和Tr a c e r o u t e(第7章和第8章),它们都使用了I C M P。 I G M P是I n t e r n e t组管理协议。它用来把一个 U D P数据报多播到多个主机。我们在第 1 2章中 描述广播(把一个 U D P数据报发送到某个指定网络上的所有主机)和多播的一般特性,然后 在第1 3章中对I G M P协议本身进行描述。 A R P(地址解析协议)和 R A R P(逆地址解析协议)是某些网络接口(如以太网和令牌环 网)使用的特殊协议,用来转换 I P层和网络接口层使用的地址。我们分别在第 4章和第 5章对 这两种协议进行分析和介绍。 1.4 互联网的地址 互联网上的每个接口必须有一个唯一的 I n t e r n e t地址(也称作 I P地址)。I P地址长 32 bit 。 I n t e r n e t地址并不采用平面形式的地址空间,如 1、2、3等。I P地址具有一定的结构,五类不同 的互联网地址格式如图 1 - 5所示。 7位 A类 网 络 号 B类 C类 D类 E类 24位 主 机 号 16位 主 机 号 14位 网 络 号 21位 网 络 号 8位 主 机 号 28位 多 播 组 号 27位 (留 待 后 用) 图1-5 五类互联网地址
6使用TCP/IP详解,卷1:协议 下载 这些3 2位的地址通常写成四个十进制的数,其中 每个整数对应一个字节。这种表示方法称作“点分十 进制表示法( Dotted decimal notation)”。例如,作者 的系统就是一个B类地址,它表示为:1 4 0 . 2 5 2 . 1 3 . 3 3。 区分各类地址的最简单方法是看它的第一个十进 制整数。图 1 - 6列出了各类地址的起止范围,其中第 一个十进制整数用加黑字体表示。 类型 范 围 到 到 到 到 到 图1-6 各类IP地址的范围 需要再次指出的是,多接口主机具有多个 I P地址,其中每个接口都对应一个 I P地址。 由于互联网上的每个接口必须有一个唯一的 I P地址,因此必须要有一个管理机构为接入互 联网的网络分配 I P地址。这个管理机构就是互联网络信息中心( Internet Network Information C e n t r e),称作I n t e r N I C。I n t e r N I C只分配网络号。主机号的分配由系统管理员来负责。 I n t e r n e t注册服务( I P地址和D N S域名)过去由N I C来负责,其网络地址是n i c . d d n . m i l。 1 9 9 3年4月1日,I n t e r N I C成立。现在,N I C只负责处理国防数据网的注册请求,所有其他 的I n t e r n e t用户注册请求均由I n t e r N I C负责处理,其网址是:r s . i n t e r n i c . n e t。 事实上I n t e r N I C由三部分组成:注册服务(r s . i n t e r n i c . n e t),目录和数据库服 务(d s . i n t e r n i c . n e t),以及信息服务(i s . i n t e r n i c . n e t)。有关I n t e r N I C的其他 信息参见习题1 . 8。 有三类I P地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主 机)以及多播地址(目的端为同一组内的所有主机)。第1 2章和第1 3章将分别讨论广播和多播 的更多细节。 在3 . 4节中,我们在介绍 I P选路以后将进一步介绍子网的概念。图 3 - 9给出了几个特殊的 I P 地址:主机号和网络号为全 0或全1。 1.5 域名系统 尽管通过 I P地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还 是主机名。在 T C P / I P领域中,域名系统( D N S)是一个分布的数据库,由它来提供 I P地址和 主机名之间的映射信息。我们在第 1 4章将详细讨论D N S。 现在,我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机 的I P地址。类似地,系统还提供一个逆函数—给定主机的I P地址,查看它所对应的主机名。 大多数使用主机名作为参数的应用程序也可以把 I P地址作为参数。例如,在第 4章中当我 们用Te l n e t进行远程登录时,既可以指定一个主机名,也可以指定一个 I P地址。 1.6 封装 当应用程序用 T C P传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作 一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部 信息),该过程如图 1 - 7所示。 T C P传给 I P的数据单元称作 T C P报文段或简称为 T C P段(T C P s e g m e n t)。I P传给网络接口层的数据单元称作 I P数据报(IP datagram)。通过以太网传输的比特 流称作帧(Fr a m e )。
下载 第1章 概 述使用7 图1 - 7中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。在后面的章节中 我们将详细讨论这些帧头的具体含义。 以太网数据帧的物理特性是其长度必须在 4 6~1 5 0 0字节之间。我们将在 4 . 5节遇到最小长 度的数据帧,在2 . 8节中遇到最大长度的数据帧。 所有的I n t e r n e t标准和大多数有关 T C P / I P的书都使用o c t e t这个术语来表示字节。使 用这个过分雕琢的术语是有历史原因的,因为T C P / I P的很多工作都是在D E C - 1 0系统上 进行的,但是它并不使用8 bit的字节。由于现在几乎所有的计算机系统都采用8 bit的字 节,因此我们在本书中使用字节(byte)这个术语。 更准确地说,图1 - 7中I P和网络接口层之间传送的数据单元应该是分组( p a c k e t)。 分组既可以是一个I P数据报,也可以是I P数据报的一个片(f r a g m e n t)。我们将在11 . 5节 讨论IP数据报分片的详细情况。 用户数据 A p p l 首部 用户数据 TCP首部 应用数据 TCP段 IP首部 TCP首部 应用数据 IP数据报 以太网 首部 IP首部 TCP首部 应用数据 以太网 尾部 以太网帧 46~1500字节 图1-7 数据进入协议栈时的封装过程 应用程序 以太网 驱动程序 以太网 U D P数据与 T C P数据基本一致。唯一的不同是 U D P传给 I P 的信息单元称作 U D P数据报 (UDP datagram),而且U D P的首部长为 8字节。 回想1 . 3节中的图1 - 4,由于T C P、U D P、I C M P和I G M P都要向I P传送数据,因此 I P必须在 生成的 I P首部中加入某种标识,以表明数据属于哪一层。为此, I P在首部中存入一个长度为 8 b i t的数值,称作协议域。 1表示为 I C M P协议, 2表示为 I G M P协议, 6表示为 T C P协议, 1 7表 示为U D P协议。 类似地,许多应用程序都可以使用 T C P或U D P来传送数据。运输层协议在生成报文首部 时要存入一个应用程序的标识符。 T C P和U D P都用一个 1 6 b i t的端口号来表示不同的应用程序。 T C P和U D P把源端口号和目的端口号分别存入报文首部中。 网络接口分别要发送和接收 I P、A R P和R A R P数据,因此也必须在以太网的帧首部中加入
8使用TCP/IP详解,卷1:协议 下载 某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的帧 类型域。 1.7 分用 当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各 层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的 上层协议。这个过程称作分用( D e m u l t i p l e x i n g),图1 - 8显示了该过程是如何发生的。 应用程序 应用程序 应用程序 应用程序 根据 T C P或U D P首 部中的端口号进行 分用 根据 I P首部中的协 议值进行分用 根据以太网首部中 的帧类型进行分用 以太网 驱动程序 进入的帧 图1-8 以太网数据帧的分用过程 为协议I C M P和I G M P定位一直是一件很棘手的事情。在图 1 - 4中,把它们与I P放在 同一层上,那是因为事实上它们是I P的附属协议。但是在这里,我们又把它们放在I P层 的上面,这是因为ICMP和IGMP报文都被封装在IP数据报中。 对于A R P和R A R P,我们也遇到类似的难题。在这里把它们放在以太网设备驱动程 序的上方,这是因为它们和I P数据报一样,都有各自的以太网数据帧类型。但在图 2 - 4 中,我们又把A R P作为以太网设备驱动程序的一部分,放在 I P层的下面,其原因在逻 辑上是合理的。 这些分层协议盒并不都是完美的。 当进一步描述T C P的细节时,我们将看到协议确实是通过目的端口号、源 I P地址和源端口 号进行解包的。 1.8 客户-服务器模型 大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服 务器为客户提供一些特定的服务。 可以将这种服务分为两种类型:重复型或并发型。重复型服务器通过以下步骤进行交互:
分享到:
收藏