《分布式系统:概念与设计》一3.4.2 IP协议

简介: 本节书摘来华章计算机《分布式系统:概念与设计》一书中的第3章 ,第3.4节,(英) George Coulouris Jean DollimoreTim Kindberg Gordon Blair 著 金蓓弘 马应龙 等译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4.2 IP协议

IP协议将数据报从一个主机传到另一个主机,如果需要的话还会经过中间路由器。完整的IP数据包格式是相当复杂的,图3-17给出了其主要组成部分。有一些头部域没有显示在图中,它们是用于传输和路由算法的。
image

IP提供的传输服务被描述成有不可靠或尽力而为这样的传输语义,因为没有传输上的保证。数据包可能会丢失、重复、延迟或顺序错误,但这些错误只在底层网络失败或目的地缓冲区满的时候才会发生。IP中唯一的校验和是头部的校验和,其计算代价不高,还能确保检测到任何寻址和数据包管理数据中发生的错误。它没有提供数据的校验和,这避免了经过路由器时的开销,而是让更高层的协议(TCP和UDP)来提供它们自己的校验和——这是端对端争论中的一个实际例子(参见2.3.3节)。
IP层将IP数据报放入适合底层网络(例如以太网)传输的网络数据包中。当IP数据报的长度大于底层网络的MTU时,就在发送端将IP数据报分割成多个小的数据包,然后在目的地重新组装。数据包还可以进一步分割以适合从源地址到目的地址的路径中所经过的网络(每个数据包都有一个片断标识符,使得打乱顺序的各个段能够重新组合起来)。
IP层还必须在底层网络中插入消息目的地的“物理”网络地址。该地址可以从互联网网络接口层的地址解析模块获得(见下一小节的介绍)。
地址解析 地址解析模块负责将互联网地址转为特定底层网络所使用的网络地址(有时称为物理地址)。例如,如果底层网络是以太网,那么地址解析模块将把32比特的互联网地址转换成48比特的以太网地址。111
这种转换是与网络技术相关的:

  • 有一些主机直接与互联网数据包交换机相连,IP数据包可以不需要地址翻译就路由到它们。
  • 一些局域网允许动态地将网络地址分配给主机,这样就可以方便地选择地址以匹配互联网地址中的主机标识符部分——翻译就是从IP地址中抽取主机标识符。
  • 对于以太网和其他局域网,每个计算机的网络地址都是和它的网络硬件接口固定的,和互联网地址没有直接的关系——翻译取决于主机的IP地址和以太网地址间的对应关系,其具体实现是通过地址解析协议(ARP)完成的。

现在我们概述一下以太网中ARP的实现。为了能在计算机加入局域网时让IP数据包在以太网上传输,使用了动态询问并利用缓存来减少询问消息。先考虑同一个以太网中一个主机用IP向另一个主机传送消息的情况。发送方的IP软件模块在发送数据包前,必须将IP数据包中的接收方的互联网地址翻译成以太网地址。它调用发送方的ARP模块来完成这一任务。
每个主机上的ARP模块都维护一个缓存,保存它以前获得的(IP地址,以太网地址)对。如果需要的IP地址位于这个缓存中,请求就会立刻被应答。如果没有需要的IP地址,ARP模块会在本地的以太网上发出一个以太网广播数据包(ARP请求数据包),数据包中包括了所需的IP地址。本地以太网中的每个计算机都收到这个ARP请求数据包,并用自己的IP地址和数据包中的IP地址进行匹配。如果匹配,就给ARP请求的发出方发送一个ARP应答,应答中包括自己的以太网地址;如果不匹配,就忽略该数据包。发出方的ARP模块在自己的本地(IP地址,以太网地址)缓存中加入新的IP地址到以太网地址的映射表,这样将来如果响应类似的ARP请求就不需要再广播了。一段时间之后,每个计算机上的ARP缓存中都包含了所有计算机的(IP地址,以太网地址)对。这时只有在有新计算机加入到本地以太网时才需要ARP广播。
IP伪冒 我们已经看到,IP数据包中包括一个源地址——发送方计算机的IP地址。它与封装在数据域中的端口地址(对于TCP和UDP数据包)一起,经常被服务器用来生成一个返回地址。遗憾的是,并不能保证给定的源地址就是真正的发送方的地址。心怀叵测的发送者可以轻易地使用别的地址来代替它。这个漏洞已成为多起著名攻击的源头,包括1.5.3节提到的2000年2月出现的分布式拒绝服务攻击[Farrow 2000]。所使用的方法就是在几个站点向大量的计算机发出ping请求(ping是一个简单的服务,用于检查主机的可用性)。这些恶意的ping请求在它们的发送方地址域中都填上了目标计算机的IP地址,因此ping的应答就指向目标计算机,112造成它们的输入缓冲溢出,造成合法的IP数据包无法通过。这种攻击将在第11章中进一步讨论。

相关文章
|
4月前
|
存储 安全 JavaScript
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
在传统的客户端-服务器身份验证模式中,客户端请求服务器上访问受限的资源(受保护的资源)时,需要使用资源所有者的凭据在服务器上进行身份验证。资源所有者为了给第三方应用提供受限资源的访问权限,需要与第三方共享它的凭据。这就导致一些问题和局限:
378 2
【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)
|
2天前
|
传感器 存储 SQL
LabVIEW使用ModbusTCP协议构建分布式测量系统
LabVIEW使用ModbusTCP协议构建分布式测量系统
11 4
|
2月前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
75 1
|
2月前
|
存储 算法 前端开发
作者推荐 | 分布式协议之巅 — 揭秘基础Paxos与Raft协议如何实现分布式系统达成一致性(非变种Paxos协议)
作者推荐 | 分布式协议之巅 — 揭秘基础Paxos与Raft协议如何实现分布式系统达成一致性(非变种Paxos协议)
49 0
|
2月前
|
算法 安全
金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(Paxos篇)
金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(Paxos篇)
59 1
金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(Paxos篇)
|
2月前
|
算法 调度
金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)
金石原创 |【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)
64 1
|
4月前
|
存储 Unix Linux
分布式文件系统协议:NFS(Network File System)网络文件系统
NFS(Network File System)网络文件系统是一种分布式文件系统协议,最初由Sun Microsystems开发,并在1984年首次发布。 NFS允许不同计算机通过网络共享资源,特别是文件和目录,就像它们是本地存储的一部分一样。使用NFS的客户端可以挂载远程服务器上的文件系统,使得用户能够以透明的方式访问远程数据,实现跨多个系统的文件共享。
174 0
|
7月前
|
存储 缓存 中间件
Nacos架构与原理 - 自研 Distro 协议 (AP分布式协议)
Nacos架构与原理 - 自研 Distro 协议 (AP分布式协议)
130 0
|
7月前
|
Dubbo Java 应用服务中间件
如何在Spring Boot项目中集成Dubbo并启用gRPC协议,来实现高效的分布式服务通信?
如何在Spring Boot项目中集成Dubbo并启用gRPC协议,来实现高效的分布式服务通信?
118 0
如何在Spring Boot项目中集成Dubbo并启用gRPC协议,来实现高效的分布式服务通信?
|
9月前
|
算法
奇葩论文:分布式一致性协议-Paxos
奇葩论文:分布式一致性协议-Paxos
奇葩论文:分布式一致性协议-Paxos