IPv6系列教程之:什么是互联网协议?

ZDNET网络频道时间2008-12-01作者:ZDNet网络频道 | ZDNet网络频道
本文关键词:TCP/IP 协议 IPv4 IPV6

ZDNet网络频道原创翻译 转载请注明作者以及出处

很多网友都表示,对于互联网协议原理的深入了解,是掌握互联网技术的一个很好的入门方式。因此IPV6专题系列的第二课,将会介绍互联网协议(IP)的基础知识。
--------------------------------------------------------------------------------------------

互联网协议(IP)是互联网协议群(Internet Protocol Suite ,IPS)中众多通信协议中的一个,也是其中最重要的一个。专家们一般将IPS解释为一个协议堆栈,它可以将应用程序的信息(比如电子邮件或者网页传输的内容)转换为网络可以传输的数据包。

尤其是IP协议,主要负责通过网络连接在数据源主机和目的主机间传送数据包。在 RFC 791 中对于 IP协议是这样定义的:

“互联网协议(IP)特指为实现在一个相互连接的网络系统上从一个源到一个目的地传输比特数据包(互联网数据包)所提供必要功能的协议。其中并没有增加端到端数据可靠性机制、流量控制机制、排序机制或者其它在端到端协议常见的功能机制。互联网协议可在其支持的网络上提供相应服务,实现多种类型和品质的服务。”

数据包(packets)和数据报(datagrams)有什么不同?

当讨论IP协议时,很多人(包括我在内)都会混淆packet 和 datagram 这两个术语,因为这两者的定义非常类似(有些人认为二者完全相同)。RFC 1594 对于数据包和数据报的共同定义如下:

“一个独立的数据实体,携带从数据源主机到目的主机所需的足够信息,而不依赖于源主机和目的主机之前建立的网络连接或者交换。”

既然定义是一样的,为什么还有这两个术语是否相同的讨论呢?实际上是一些专家对于packets和 datagrams有不同的定义,从而导致了疑问的产生。这些专家在讨论有关可靠数据传输协议,比如TCP/IP时,会使用packet数据包这个术语,而在讨论UDP 这样的最大努力交付协议时,会使用datagram数据报 这个术语。 在我们讨论IP时,使用哪个术语都是可以的,但是我倾向于使用数据报 (稍后你们会知道为什么我要这样)。

IP 属性

IP通过多种属性来定义数据是如何被传输的,而这些属性对于我们将要讨论的IPv4IPV6话题来说至关重要。因此我们要详细了解一下相关属性:

· Host addressing主机寻址: IP 协议为网络上每个主机定义了寻址方案,通过主机地址使得数据包得以传递。

· Protocol independence协议独立性: IP协议被设计为可以通过协议栈技术与其它网络协议联合使用。

· Connectionless delivery无连接交付: IP协议不承担在数据源主机和目的主机间建立连接的责任。只负责从数据源主机建立数据报并发送出去的工作。

· Best-effort delivery最大努力交付: IP协议会尽量确保目标主机能够获得发送给它的数据报,但是并不是绝对保证。

· No provision for delivery acknowledgments无需交付确认: 目标主机收到数据报后不需要向发送源主机提交确认信息。
 
也许有人会问,既然后三个属性没有实现一个良好的数据传输环境,IP 协议数据报是如何知道自己该被发送到哪里?为什么协议没有其它更多功能?答案很简单,为了更好的数据传输性能。使用确立连接,错误校验,确认交付等功能,都需要额外的处理器资源以及额外的网络带宽。因此如果被传输的数据报不需要这些功能,那么就最好不要。另外,开发IP协议的人员也不是傻子,可以通过协议堆栈更有效的实现上述功能。

协议或TCP/IP 堆栈

前文中我提到了一个叫做 协议栈(protocol stack)的东西(官方叫法是TCP/IP) 。如果所传输的数据类型 (比如电子邮件)需要交付担保,接收确认,或者正式的连接握手,这些信息会在数据报建立前附加在数据前方,这种方式也叫做 “堆栈步进”。这是一种很好的解决方案,尤其对于节约网络资源。

在做本系列文章撰写的准备工作时,有人问我,既然是要讨论IP协议,为何要加入TCP/IP堆栈的信息。唯一的原因是,我们很难将TCP和IP分割开来,尤其是目前大部分IP协议数据报都包含有TCP协议信息。

在TCP/IP指南 中明确解释了什么是TCP/IP stack 以及它是如何工作的。 封装 (这也是我为何要介绍TCP/IP堆栈的原因)的过程也是在TCP/IP堆栈中进行的。封装是指堆栈中的下一个协议将所需的额外信息加入数据报,以便这个数据包可以成功发送到目标主机的过程。下面这个图例(摘自TCP/IP 指南) 详细描绘了封装过程:

IPv6系列教程之:什么是互联网协议?

IP 数据报格式

为了更好的理解数据报中都包括什么(包括数据) ,我们需要了解数据报的格式。下面的数据报图例(摘自 TCP/IP 指南)展示了一个 IPv4数据报中的全部数据变量区域。如果想了解每个变量区域更详细的信息,请参阅TCP/IP 指南。

IPv6系列教程之:什么是互联网协议?

作为比较,我们可以再看看下图 (摘自TCP/IP 指南),这是一个标准的IPV6数据报格式。如果想了解更详细的信息,请参阅TCP/IP指南。

IPv6系列教程之:什么是互联网协议?

可见IPV6的格式是固定的,而且所表达的意义更多。比如将原先IPv4 中的TTL区域改成了hop limit。

下期预告

在本文中,我试图向大家说明 IPv4IPV6的共同点,除了数据报格式有所差别。再接下来的文章中,我们会主要针对IPV6,介绍它和IPv4的不同点,以及为什么IPv4 将被IPV6取代。另外,在后续文章中会包含Mr. Joe Klein的播客内容,他是Command Information的高级安全研究员,也是N北美IPV6项目组 成员,他将在播客中讨论为何IPv4已经穷途末路。

总结

首先我要感谢各位读者对本系列第一篇文章《IPV6: 从何处起步》的支持和建议。本文就是听从了读者的建议而编写的。正因为有了大家的意见和建议,IPV6系列文章才拥有了一个良好的开始。接下来我们将进步一讨论IPV6 和相关问题。

另外我还要再提一下 TCP/IP 指南 这个网站(英文)。它是由 Mr. Charles M. Kozierok 编写和维护的。在我看来,是学习TCP/IP技术的网友最好的资源。

用户评论
用户名
评论内容
发表时间
- 发表评论 -
匿名
注册用户

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134