没有合适的资源?快使用搜索试试~ 我知道了~
首页TCP/IP协议详解:四层架构与应用
TCP/IP协议详解:四层架构与应用
需积分: 10 1 下载量 185 浏览量
更新于2024-07-19
收藏 39.44MB PDF 举报
TCP/IP详解是一份深入解析TCP/IP协议族的资料,分为三个部分,旨在帮助读者理解这一核心网络技术。TCP/IP起源于60年代末的美国政府项目,经过几十年的发展,已成为全球互联网的基础。该协议族具有开放性,使得不同操作系统和硬件平台的计算机能够相互通信。 1.1 引言部分强调了TCP/IP的重要性,它超越了最初的设想,使得全球超过100万台计算机通过互联网连接。本章作为基础,提供了关于TCP/IP历史发展的简要回顾,并指出协议族由多个层次的协议组成,每个层次有特定的功能。 1.2 网络协议的分层设计是关键概念。TCP/IP通常分为四个层次: - 链路层,也称为数据链路层或网络接口层,负责处理硬件层面的物理连接,如设备驱动程序和网络接口卡。 - 网络层,即互联网层,负责数据包的路由选择,主要协议有IP、ICMP(用于错误检测和报告)和IGMP(多播协议)。 - 运输层,确保端到端的通信可靠性,TCP(传输控制协议)提供面向连接、可靠的服务,而UDP(用户数据报协议)提供无连接、高效但可能不可靠的服务。 通过这份资源,读者可以系统地学习TCP/IP的工作原理,理解各层如何协同工作,以及如何根据应用需求选择TCP或UDP。这对于网络工程师、开发者和任何需要了解互联网通信机制的人来说都是至关重要的知识。
资源详情
资源推荐
它后续数据的字节长度,但不包括 C R C检验码。以太网的类型字段定义了后续数据的类型。
在8 0 2 标准定义的帧格式中,类型字段则由后续的子网接入协议( Sub-network Access
P r o t o c o l ,S N A P)的首部给出。幸运的是, 8 0 2定义的有效长度值与以太网的有效类型值无一
相同,这样,就可以对两种帧格式进行区分。
在以太网帧格式中,类型字段之后就是数据;而在 8 0 2 帧格式中,跟随在后面的是 3字节
的802.2 LLC和5字节的802.2 SNAP。目的服务访问点( Destination Service Access Point,
D S A P )和源服务访问点(Source Service Access Point, SSAP)的值都设为0 x a a。Ct r l字段的
值设为3。随后的3个字节o rg code都置为0。再接下来的2个字节类型字段和以太网帧格式一样
(其他类型字段值可以参见 RFC 1340 [Reynolds and Postel 1992])。
C R C 字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为F C S 或帧检验
序列)。
8 0 2 . 3 标准定义的帧和以太网的帧都有最小长度要求。 8 0 2 . 3规定数据部分必须至少为 3 8字
节,而对于以太网,则要求最少要有 4 6字节。为了保证这一点,必须在不足的空间插入填充
(p a d )字节。在开始观察线路上的分组时将遇到这种最小长度的情况。
在本书中,我们在需要的时候将给出以太网的封装格式,因为这是最为常见的封装格式。
16使用TCP/IP详解,卷1:协议
下载
目的地址 源地址
长度
类型
数 据
数据报
38~1492
46~1500
46~1500
38~1492
请求/应答
请求/应答
46~1500字节
数 据
数据报
请求/应答
请求/应答
类型
0800
类型
0806
类型
8035
类型
0800
类型
0806
类型
8035
类型
源地址
目的地址
以太网封装
图2-1 IEEE 802.2/802.3(RFC 1042)和以太网的封装格式(RFC 894)
2.3 尾部封装
RFC 893[Leffler and Karels 1984]描述了另一种用于以太网的封装格式,称作尾部封装
(trailer encapsulation)。这是一个早期B S D 系统在DEC VA X 机上运行时的试验格式,它通过
调整I P 数据报中字段的次序来提高性能。在以太网数据帧中,开始的那部分是变长的字段
(I P 首部和T C P 首部)。把它们移到尾部(在 C R C之前),这样当把数据复制到内核时,就可以
把数据帧中的数据部分映射到一个硬件页面,节省内存到内存的复制过程。 T C P 数据报的长
度是5 1 2字节的整数倍,正好可以用内核中的页表来处理。两台主机通过协商使用 A R P 扩展协
议对数据帧进行尾部封装。这些数据帧需定义不同的以太网帧类型值。
现在,尾部封装已遭到反对,因此我们不对它举任何例子。有兴趣的读者请参阅 RFC 893
以及文献[ L e ffler et al. 1989]的11 . 8 节。
2.4 SLIP:串行线路IP
S L I P 的全称是Serial Line IP。它是一种在串行线路上对I P数据报进行封装的简单形式,在
RFC 1055[Romkey 1988]中有详细描述。S L I P适用于家庭中每台计算机几乎都有的 R S - 2 3 2 串
行端口和高速调制解调器接入 I n t e r n e t。
下面的规则描述了S L I P 协议定义的帧格式:
1) IP数据报以一个称作 E N D (0 x c 0 )的特殊字符结束。同时,为了防止数据报到来之前
的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个 E N D 字符(如果有线
路噪声,那么E N D字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个
错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
2) 如果 I P 报文中某个字符为 E N D ,那么就要连续传输两个字节 0 x d b 和0 x d c 来取代它。
0 x d b这个特殊字符被称作S L I P 的E S C 字符,但是它的值与A S C I I码的E S C字符(0 x 1 b)不同。
3) 如果I P 报文中某个字符为 S L I P的E S C 字符,那么就要连续传输两个字节 0 x d b 和0 x d d来
取代它。
图2 - 2中的例子就是含有一个 E N D 字符和一个E S C 字符的I P 报文。在这个例子中,在串行
线路上传输的总字节数是原 I P 报文长度再加4个字节。
图2-2 SLIP报文的封装
S L I P 是一种简单的帧封装方法,还有一些值得一提的缺陷:
1) 每一端必须知道对方的I P 地址。没有办法把本端的I P 地址通知给另一端。
2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于 S L I P,
那么它不能同时使用其他协议。
第2章 链 路 层使用17
下载
IP数据报
3 ) S L I P没有在数据帧中加上检验和(类似于以太网中的 C R C 字段)。如果S L I P 传输的报
文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调
器可以检测并纠正错误报文)。这样,上层协议提供某种形式的 C R C 就显得很重要。在第 3章
和第1 7章中,我们将看到 I P 首部和 T C P 首部及其数据始终都有检验和。在第 11章中,将看到
U D P 首部及其数据的检验和却是可选的。
尽管存在这些缺点,S L I P仍然是一种广泛使用的协议。
S L I P的历史要追溯到1 9 8 4年,Rick Adams第一次在4 . 2 B S D系统中实现。尽管它本
身的描述是一种非标准的协议,但是随着调制解调器的速率和可靠性的提高, S L I P 越
来越流行。现在,它的许多产品可以公开获得,而且很多厂家都支持这种协议。
2.5 压缩的SLIP
由于串行线路的速率通常较低( 19200 b/s或更低),而且通信经常是交互式的(如 Te l n e t
和R l o g i n,二者都使用T C P ),因此在S L I P线路上有许多小的T C P分组进行交换。为了传送 1个
字节的数据需要2 0 个字节的I P首部和2 0 个字节的T C P 首部,总数超过4 0个字节(1 9 . 2节描述了
R l o g i n会话过程中,当敲入一个简单命令时这些小报文传输的详细情况)。
既然承认这些性能上的缺陷,于是人们提出一个被称作 C S L I P (即压缩 S L I P)的新协议,
它在RFC 1144[Jacobson 1990a]中被详细描述。C S L I P 一般能把上面的4 0 个字节压缩到3或5个
字节。它能在C S L I P的每一端维持多达1 6 个T C P连接,并且知道其中每个连接的首部中的某些
字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这
些被压缩的首部大大地缩短了交互响应时间。
现在大多数的S L I P 产品都支持C S L I P。作者所在的子网(参见封面内页)中有两条
SLIP链路,它们均是CSLIP链路。
2.6 PPP:点对点协议
P P P,点对点协议修改了S L I P 协议中的所有缺陷。P P P包括以下三个部分:
1) 在串行链路上封装 I P 数据报的方法。 P P P 既支持数据为 8位和无奇偶检验的异步模式
(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
2) 建立、配置及测试数据链路的链路控制协议( L C P :Link Control Protocol)。它允许通
信双方进行协商,以确定不同的选项。
3) 针对不同网络层协议的网络控制协议( N C P:Network Control Protocol)体系。当前
R F C 定义的网络层有I P 、O S I网络层、D E C n e t 以及A p p l e Ta l k 。例如,IP NCP允许双方商定是
否对报文首部进行压缩,类似于 C S L I P (缩写词N C P 也可用在T C P 的前面)。
RFC 1548[Simpson 1993]描述了报文封装的方法和链路控制协议。 RFC 1332[McGregor
1 9 9 2 ]描述了针对I P的网络控制协议。
P P P 数据帧的格式看上去很像 I S O的H D L C(高层数据链路控制)标准。图 2 - 3 是P P P数据
帧的格式。
每一帧都以标志字符0 x 7 e 开始和结束。紧接着是一个地址字节,值始终是 0 x ff ,然后是一
个值为0 x 0 3的控制字节。
18使用TCP/IP详解,卷1:协议
下载
图2-3 PPP数据帧的格式
接下来是协议字段,类似于以太网中类型字段的功能。当它的值为 0 x 0 0 2 1 时,表示信息
字段是一个I P 数据报;值为 0 x c 0 2 1时,表示信息字段是链路控制数据;值为 0 x 8 0 2 1 时,表示
信息字段是网络控制数据。
C R C字段(或F C S,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是 0 x 7 e,因此当该字符出现在信息字段中时, P P P 需要对它进行转义。
在同步链路中,该过程是通过一种称作比特填充 (bit stuff i n g )的硬件技术来完成的[ Ta n e n b a u m
1 9 8 9 ] 。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 P P P数据帧中时,那么紧接
着的字符的第6个比特要取其补码,具体实现过程如下:
1) 当遇到字符0 x 7 e 时,需连续传送两个字符: 0 x 7 d 和0 x 5 e,以实现标志字符的转义。
2) 当遇到转义字符0 x 7 d 时,需连续传送两个字符: 0 x 7 d 和0 x 5 d,以实现转义字符的转义。
3 ) 默认情况下,如果字符的值小于 0 x 2 0(比如,一个A S C I I 控制字符),一般都要进行转
义。例如,遇到字符0 x 0 1 时需连续传送0 x 7 d 和0 x 2 1两个字符(这时,第 6个比特取补码后变为
1,而前面两种情况均把它变为 0)。
这样做的原因是防止它们出现在双方主机的串行接口驱动程序或调制解调器中,因为有
时它们会把这些控制字符解释成特殊的含义。另一种可能是用链路控制协议来指定是否需要
对这3 2 个字符中的某一些值进行转义。默认情况下是对所有的 3 2 个字符都进行转义。
与S L I P类似,由于P P P经常用于低速的串行链路,因此减少每一帧的字节数可以降低应用
程序的交互时延。利用链路控制协议,大多数的产品通过协商可以省略标志符和地址字段,
并且把协议字段由 2个字节减少到 1个字节。如果我们把 P P P的帧格式与前面的 S L I P的帧格式
(图2 - 2 )进行比较会发现, P P P 只增加了 3个额外的字节: 1个字节留给协议字段,另 2个给
C R C字段使用。另外,使用 I P网络控制协议,大多数的产品可以通过协商采用 Van Jacobson报
文首部压缩方法(对应于C S L I P 压缩),减小I P和T C P首部长度。
总的来说,P P P比S L I P 具有下面这些优点: (1) PPP支持在单根串行线路上运行多种协议,
不只是I P协议;(2) 每一帧都有循环冗余检验; (3) 通信双方可以进行 I P地址的动态协商(使用
I P 网络控制协议); (4) 与C S L I P 类似,对T C P 和I P 报文首部进行压缩; (5) 链路控制协议可以
对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建
立链路时要发送几帧协商数据,以及更为复杂的实现。
尽管P P P比S L I P有更多的优点,但是现在的S L I P用户仍然比P P P用户多。随着产品
越来越多,产家也开始逐渐支持PPP,因此最终PPP应该取代SLIP。
第2章 链 路 层使用19
下载
标志
地址
控制
协议
协议
协议
协议
网络控制数据
链路控制数据
IP数据报
最多1500字节
信 息
标志
2.7 环回接口
大多数的产品都支持环回接口( Loopback Interface),以允许运行在同一台主机上的客户
程序和服务器程序通过 T C P / I P进行通信。 A类网络号1 2 7 就是为环回接口预留的。根据惯例,
大多数系统把I P 地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为 l o c a l h o s t。一个传给环回接口的 I P数
据报不能在任何网络上出现。
我们想象,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所
有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当
I P数据报离开网络层时把它返回给自己。
图2 - 4是环回接口处理I P 数据报的简单过程。
图2-4 环回接口处理IP数据报的过程
图中需要指出的关键点是:
1) 传给环回地址(一般是1 2 7 . 0 . 0 . 1 )的任何数据均作为I P 输入。
2) 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。这是
因为广播传送和多播传送的定义(第 1 2 章)包含主机本身。
3 ) 任何传给该主机I P地址的数据均送到环回接口。
看上去用传输层和 I P 层的方法来处理环回数据似乎效率不高,但它简化了设计,因为环
回接口可以被看作是网络层下面的另一个链路层。网络层把一份数据报传送给环回接口,就
像传给其他链路层一样,只不过环回接口把它返回到 I P的输入队列中。
在图2 - 4中,另一个隐含的意思是送给主机本身 I P 地址的I P数据报一般不出现在相应的网
络上。例如,在一个以太网上,分组一般不被传出去然后读回来。某些 B S D 以太网的设备驱
动程序的注释说明,许多以太网接口卡不能读回它们自己发送出去的数据。由于一台主机必
20使用TCP/IP详解,卷1:协议
下载
IP输出
函数
IP输入
函数
放入IP输入
队列中
放入IP输入
队列中
是
否
是
目的IP地址是否与接
口IP地址相同?
否,用ARP获
取目的主机的
以太网地址
环回驱动程序
目的I P 地址是否与广播
地址或多播地址相同?
发送
以太网
接收
以太网驱
动程序
基于以太网帧
类型进行分用
剩余1543页未读,继续阅读
qq_27314085
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功