版权归原作者所有,如有侵权,请联系我们

[科普中国]-互联网协议

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

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

IP定义IP协议,主要负责通过网络连接在数据源主机和目的主机间传送数据包。

在 RFC 791 中对于 IP协议是这样定义的:

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

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

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

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

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

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

**· No provision for delivery acknowledgments无需交付确认:**目标主机收到数据包后不需要向发送源主机提交确认信息。

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

IP协议规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。

广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。

习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255。

互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。

但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。

那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数"子网掩码"(subnet mask)。

所谓"子网掩码",就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。

知道"子网掩码",我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络2。

TCP协议UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了。

因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割2。

相关区别数据包和数据报的区别

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

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

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

双方的权利和义务 (一)甲方的权利和义务

1、甲方提供“阿材网”平台(以下简称平台),负责平台的建设、日常维护、版本更新以及与阿材网平台相关的其他技术服务。

2、制定平台的服务规则,对服务规则拥有最终的解释权。

3、负责平台的整体运作,推广,以及客户服务,并对平台的客户服务拥有最终的解释权。

4、对乙方进行平台的业务支持以及业务培训。

5、甲方保证乙方在合作区域内的合作产品拥有独家服务权。

(二)乙方的权利和义务

1、接受平台的业务派单,严格按照平台的服务标准和要求服务客户。

2、服务客户过程中,必须以平台的名义进行服务,未经甲方同意不得出现任何除平台以外的主体名称或者标识,不得与顾客交换非平台的联系方式,不得以任何方式暗示非平台的服务主体,否则视为乙方违约,甲方将对乙方进行违约处理。

3、接受甲方对于平台的业务指导,按甲方要求参加平台的业务培训,维护平台的客户口碑等平台名誉,如出现损害平台名誉的行为,视为乙方违约,甲方将对乙方进行违约处理。(详见本协议第三条.保证金及违约责任)。

4、乙方应具有一般纳税人资格,依法向客户开具增值税专用发票。

5、乙方应严格按照平台的业务要求保质保量提供产品服务,对所提供的产品数量和质量承担最终责任,不得以次充好,不得缺斤少两!

6、未经甲方同意乙方不得超出合作区域和合作产品承接平台派单,否则视为乙方违约,甲方将对乙方进行违约处理。

7、未经甲方同意,乙方不得将任何来源于平台的业务资源私自进行线下交易,否则视为乙方违约,甲方将对乙方进行违约处理3。

本词条内容贡献者为:

李嘉骞 - 博士 - 同济大学