第一章 概述_TCP-IP

第一章 概述

[TCP/IP 详解]

1.1体系结构原则

Internet 体系结构在几个目标的指导下建立的。在 [C88] 中,描述的首要目标是 “发展一种重复利用已有的互联网络的技术” ,基于这个目标,Clark 提供了一下的二级目标列表:

  • Internet 通信在网络或网关失效时必须能够持续。
  • Internet 必须支持多种类型的通信服务。
  • Internet 体系结构必须兼容多种网络。
  • Internet 体系结构必须允许对其资源的分布式管理。
  • Internet 体系结构必须是有经济效益的。
  • Internet 体系结构必须允许低能力主机的连接。
  • Internet 中使用的资源必须是可统计的。

1.1.1 分组、连接和数据报

消息边界/记录标记:底层协议不保留消息边界,而应用程序需要它的时候,需要程序自己提供这个功能。

1.1.2 端到端论点和命运共享

关于端到端的论点:它认为只有涉及了应用程序或最终用户,其正确性和完整性才可能得到实现。这个原则认为重要的功能(例如差错控制、加密、交付确认)通常不会在大型系统的底层实现。但是,底层可以提供方便端系统工作的功能,并最终可能改善性能。这种观点表明底层不应该以完美为目标,因为对应用程序做出完美推测是不可能的。

命运共享:建议将所有必要的状态放在通信端点,这些状态用于维护一个互动的通信关联(例如虚拟连接)。由于这个原因,导致通信失效的情况也会导致一个或更多端点失效,这样显然会导致整个通信的失败。命运共享是一种通过虚拟连接(例如,由TCP实现的连接)维持活动的设计理念,即便网络在一段时间内失效。命运共享也支持一种“带智能终端主机的哑网络”模型。

1.1.3 差错控制和流量控制

差错控制:在网络中存在数据损坏或丢失的情况。这可能出于各种原因,例如硬件问题、数据传输中被修改、在无线网络中超出范围,以及其他因素。对这种错误的处理称为差错控制,它可以在构成网络基础设施的系统、连接到网络的系统或其他组合中实现。显然,端到端论点和命运共享建议在应用程序附近或内部实现差错控制。

流量控制:如果尽力而为的交付成功,发送方能以超过接收方处理能力的速度生成信息。在尽力而为的IP网络中,降低发送方的发送速度可通过流量控制机制实现,它在网络外部或通信系统高层中运行。注意,TCP会处理这种问题,我们将在第15章和第16章中详细讨论。这与端到端论点一致:TCP在端主机中实现速率控制。它也与命运共享一致:这种方案在网络基础设施中有些单元失效的情况下,不会影响网络设备的通信能力(只要有些通信路径仍然可用)。

1.2 设计和实现

一篇有影响力的论文描述的 “THE” 多编程系统,主张使用一种层次结构的处理方式,以检查一个大型软件实现逻辑的稳健性和正确性。最终,这个思想促成了网络协议的分层设计理念的形成。

1.2.1 分层

OSI模型共分七层:从上至下依次是

  • 应用层 指网络操作系统和具体的应用程序,对应WWW服务器、FTP服务器等应用软件
  • 表示层 数据语法的转换、数据的传送等
  • 会话层 建立起两端之间的会话关系,并负责数据的传送
  • 传输层 负责错误的检查与修复,以确保传送的质量,是TCP工作的地方。(报文)
  • 网络层 提供了编址方案,IP协议工作的地方(数据包)
  • 数据链路层 将由物理层传来的未经处理的位数据包装成数据帧
  • 物理层 对应网线、网卡、接口等物理设备(位)

在层次结构中,我们对网络层或互联网络层最感兴趣。对于分组网络(例如TCP/IP),它提供了一种可交互操作的分组格式,可通过不同类型的数据链路层链接。本层也包括针对主机的地址方案和用于决定将分组从一台主机发送到另一台主机的路由算法。

1.2.2 分层实现中的复用、分解和封装

分层体系结的一个主要优点是具有协议复用的能力。这种复用形式允许多种协议共存于同一基础设施中。它也允许多种相同协议对象的多个实例同时存在,并且不会混淆。而且复用可以发生在不同层,并且每层都有不同类型的标识符,用于确定信息属于那个协议或信息流。

封装通常与分层一起使用。单纯的封装涉及获得某层的PDU,并在底层将它作为不透明(无须解释)的数据来处理。封装发生在发送方,拆封(还原操作)发生在接收方。多数协议在封装过程中使用头部,少数协议也使用尾部。

1.3 TCP/IP 协议族结构和协议

1.3.1 ARPANET 参考模型

编号名称描述
主机7应用层实际上是Internet兼容的任何应用,包括网页(HTTP)、DNS、DHCP
4传输层提供在抽象的、由应用管理的“端口”之间的数据交换,可能包含差错控制和流量控制。例如TCP、UDP、SCTO、DCCP
所有网络设备3.5网络层(辅助)协助完成网络层设置、管理和安全的非正式的“层”。例如:ICMP、IGMP、IPsec
3网络层定义抽象的数据报和提供路由。例如IPv4和IPv6
2.5链路层(辅助)用于网络层到基于多接入链路层网络的链路层的地址映射的非正式的“层”,例如:ARP

由底部沿着协议栈上移

2.5 层 一个最古老和重要的协议是 地址解析协议(ARP) 。它是 IPv4 的专用协议,只用于多接入链路层协议(例如以太网和Wi-Fi),完成 IP 层使用的地址和链路层使用的地址之间的转换。我们将在第 4 章讨论这个协议。IPv6 的地址映射功能作为 ICMPv6 的一部分,我们将在第 8 章讨论。

3 层中看到的 IP,它是 TCP/IP 中最重要的网络层协议。我们将在第 5 章讨论它的细节。IP 发给链路层协议的 PDU 称为 IP 数据报,它的大小是 64KB(IPv6 将它扩大为4GB)。在很多情况下,当前使用的上下文是清晰的,我们将会使用简化的术语 “分组” 来表示 IP 数据报。大的分组放入数据链路层 PDU(称为帧)时需要进行缩小处理,这个过程为分片,它通常由 IP 主机和某些路由器在必要时执行。在分片的过程中,大数据报的一部分被放入多个称为分片的小数据报中,并在到达目的地后组合(称为重组)。我们将在第 10 章中讨论分片。

在讨论体系结构时,我们很少关注 IPv4 和IPv6 的版本细节。当我们讨论寻址和配置的工作原理(第 2 章和第 6 章)时,这些细节将变得更重要。

每一个 IP 分组都是一个数据报,都包含发送方和接收方的第三层地址,这些地址称为 IP 地址(32 位的 IPv4 或 128 位的 IPv6)。每个数据报的目的地址用于决定将该数据报发送到哪里,而做出决定和发送数据报到下一跳的过程叫做转发。路由器和主机都能进行转发,但是更多的是路由器实现转发。这里有 3 种类型的 IP 地址,地址的类型决定如何进行转发:

单播:目的地址是一台主机。

广播:目的地址是一个指定网络中的所有主机。

组播:目的地址是属于一个组播组中的一组主机。

Internet 控制消息协议(ICMP) 是 IP 的一个辅助协议,我们将它标注为 3.5 层协议。IP 层使用它与其它主机或路由器的 IP层之间交换差错消息和其他重要信息。ICMP 有两个版本:IPv4 使用的是 ICMPv4,IPv6 使用的是 ICMPv6。ICMPv6 是相当复杂的,包括地址自动配置和邻居发现等功能,它们在 IPv4 网络中由其他协议(例如 ARP)处理。虽然 ICMP主要由 IP 使用,但是它也能被其它应用使用。事实上,两个流行的诊断工具(ping 和 traceroute)都是用 ICMP。ICMP 的消息被封装在 IP 数据报中,采用与传输层 PDU 相同的封装方式。

Internet组管理协议(IGMP) 是 IPv4 的另一个辅助协议。它采用组播寻址和交付来管理作为组播组成员的主机(一组接收方接收一个特定目的地址的组播流量)。我们在这里只描述广播和组播的一般特点,在第 9 章介绍 IGMP 和 组播监听发现(MLD,用于 IPv6)协议。

在第 4 层中,常见的两种 Internet 传输协议有很大区别。广泛使用的 传输控制协议(TCP) 会处理数据包丢失、重复和重新排序等 IP 层不处理的问题。它采用面向连接(VC)的方式,并且不保留消息边界。相反,用户数据报协议(UDP) 仅提供比 IP 协议稍多的功能。UDP 允许应用发送数据报并保留消息边界,但是不强制实现速率控制或差错控制。

TCP 在两台主机之间提供可靠的数据流传输,UDP 为应用层提供不可靠的数据传送。

这里还有两个较新的传输层协议。首先是 数据报拥塞控制协议(DCCP) ,它在 [RFC4340] 中定义。它提供了一种介于 TCP 和 UDP 之间的服务类型:面向连接、不可靠的数据报交换、但具有拥塞控制功能。拥塞控制功能包括发送方控制发送速率的多种技术,以免流量阻塞整个网络。我们将在 16 章中结合 TCP 详细介绍拥塞控制。另一种是 流量控制传输协议(SCTP) ,它在 [RFC4960] 中定义,是用于某些特定系统的传输协议。SCTP 提供类似 TCP 的可靠交付,但不严格要求数据的顺序。它还允许多个数据流逻辑上在同一个连接上传输,并提供一个消息抽象,这是它与 TCP 的主要区别。SCTP 用于在 IP 网络上携带信令消息,这类似于某些电话网络中的用途。

在传输层之上,应用层负责处理特定应用的细节。应用层与应用的细节有关,但是与网络中的数据传输无关。较低的三层恰恰相反,它们对具体应用一无所知,但是需要处理所有的通信细节。

1.3.2 TCP/IP 中的复用、分解和封装

协议的每一层都会有一个标识符,允许接收方决定那些协议或者数据流可复用在一起。每层通常也有地址信息,它用于保证一个 PDU 被交付到正确的地方。如果接收到的帧包含一个 IP 数据报,以太网头部和尾部信息将被清除,并将剩余字节(包含帧的有效载荷)交给 IP 来处理。IP 检测一系列字段,包括数据报中的目的 IP 地址。如果目的地址与自己的一个 IP 地址匹配,并且数据报报头没有错误(IP 不检测有效载荷),则检测 8 位 IPv4 协议字段(在 IPv6 中称为下一个头部字段),以决定用哪个协议来处理。

常见值包括:1(ICMP)、2(IGMP)、4(IPv4)、6(TCP)和 17(UDP)。数值 4(和 41 ,表示 IPv6)的含义是有趣的,因为它表示一个 IP 数据报可能出现在另一个数据报的有效载荷中。它违反了分层和封装的原有概念,但是作为 隧道技术 的基础,我们将在第 3 章进行更多讨论。

如果网络层(IPv4 或 IPv6)认为传入的数据报有效,并且已确定正确的传输层协议,则将数据报(必要时由分片重组而成)交给传输层处理。在传输层中,大部分协议(包括 TCP 和 UDP)通过端口号将复用分解到适当的应用。

1.3.3 端口号

端口号 是 16 位的非负整数(范围 0~65535)。这些数字是抽象的,在物理上没有指任何东西。相反,每个 IP 地址有 65536 个可用的端口号,每个传输协议可使用这些端口号(在大多数情况下),它们被用于确定正确的接收数据的具体服务。对于客户机/服务器应用(见 1.5.1 节),一台服务器首先 ”绑定“ 到一个端口号,然后一个或多个客户机可使用某种特定的传输协议与一台服务器上的端口号建立连接。

标准的端口号由 Internet 号码分配机构(IANA)分配。这组数字被划为特定范围,包括熟知端口号(01023)、注册端口号(102449151)和动态/私有端口号(49152~65535)。

熟知端口用于识别很多众所周知的服务,例如:安全外壳协议(SSH,端口 22)、FTP(端口 20 和 21)、Telnet 远程终端协议(端口 23)、电子邮件/简单邮件传输协议(SMTP,端口 25)、域名系统(DNS,端口 53)、超文本传输协议或 Web(HTTP 和 HTTPS,端口 80 和 443)、交互式邮件访问协议(IMAP 和 IMAPS,端口 143 和 993)、简单网络管理协议(SNMP,端口 161 和 162)、轻量级目录访问协议(LDAP,端口 389),以及其它几种服务。拥有多个端口的协议(HTTP 和 HTTPS)通常使用不同端口号,这取决于是否将传输层安全(TLS)与基础的应用层协议共同使用。

1.3.4 名称、地址 和 DNS

在 TCP/IP 环境中,DNS 是一个分布式数据库,提供主机名和 IP 地址之间的映射(反之亦然)。域名建立是有层次的,以 .com .org .gov .in .uk.edu 结尾。DNS 是一个应用层协议,因此它的运行依赖于其它协议。 虽然大多数 TCP/IP 协议不必关心域名,但是用户通常会频繁使用域名,因此如果 DNS 不能正常工作,正常的 Internet 访问也难以使用。第 11 章将详细介绍 DNS。

1.4 Internet 、内联网 和 外联网

小写字母开头的 internet 表示使用常用协议族互联的多个网络。大写字母开头的 Internet 表示可使用 TCP/IP 通信的世界范围内的主机集合。Internet 是一个 internet,反过来说是错误的。

Internet 构想和它支持的协议使不同网络互联成为可能。最容易的方式是构造一个由路由器连接两个或多个网络的互联网络。路由器通常是连接网络的一台专用设备,其优点是提供多种不同物理网络的连接,如以太网、Wi-Fi 、点到点链路、DSL 、电缆 Internet 服务等。

注意 这些设备又被称为 IP 路由器,但是我们将使用路由器这个术语。这些设备在历史上曾经被称为网关,这个术语被用在很多比较旧的文献中。当前的网关术语用于表示应用层网关(ALG),它位一个特定应用(通常是电子邮件或文件传输)连接两个不同协议族(TCP/IP 和 IBM 的 SNA)。

内联网 是一个用于描述专用互联网的术语。用户可以使用 虚拟专用网络(VPN) 连接到内联网。

1.5 设计应用

网络应用的典型结构基于少数几种模式。最常见的模式是 客户机/服务器模式对等模式

1.5.1 C/S 模式

大多数网络应用被设计成一端是客户机,另一端是服务器。服务器为客户机提供某类服务,例如访问服务器主机中的文件。我们可以将服务器分为两类: 迭代并发

迭代服务器经过以下步骤

I1.等待客户机请求到达。

I2.处理客户机请求。

I3.将响应发送给请求的客户机。

I4.回到步骤 I1。

迭代服务器的问题是 I2 步骤需要经过较长时间。在此期间,无法为其他客户机服务。

并发服务器经过以下步骤:

C1.等待客户机请求到达。

C2.启动一个新服务器实例来处理客户机请求。这可能涉及创建一个新的进程、任务或线程,它依赖于底层操作系统的支持。这个新的服务器处理一个客户机的全部请求。当请求完成后,这个新服务器终止。同时原有的服务器实例继续执行 C3.

C3.回到步骤 C1。

大多数服务器都是并发的。

1.5.2 对等

有些应用以更分布式的形式设计,其中没有专门的服务器。相反,每个应用既是客户机,又是服务器,有时同时是两者,并能转发请求。这种应用称为 对等P2P 应用。并发的 P2P 应用接收到传入的请求,确定它是否能够响应这个请求,如果不能,就将这个请求转发给其它对等方。因此一组 P2P 应用共同形成一个应用网络,也称为 覆盖网络

P2P 网络的一个主要问题就是发现服务。也就是说,一个对等方如何在一个网络中发现提供它需要的数据或服务的其它对等方,以及可能进行交互的那些对等方的位置?这通常是由一个引导程序来处理,以便每个客户机在最初配置中使用它需要的对等方的地址和端口号。一旦连接成功,新的参与者向其它活跃的对等方发出请求,并根据协议获取对方提供的数据或服务。

1.5.3 应用程序编程接口

无论哪种模型都需要描述其所需的网络操作(例如建立一个连接、写入或读取数据)这通常由主机操作系统使用一个网络 应用程序编程接口(API) 来实现。最流行的 API 被称为 套接字 或 Berkeley 套接字,它最初由 [LJFK93] 开发。

1.6 标准化进程

Internet 工程任务组(IETF)[RFC4677] 这个组织每年在世界不同地点举行 3 次会议,以便开发、讨论和通过 Internet 的 ”核心“ 协议标准。这个 ”核心“ 是有争议的,但是常见的协议(例如 IPv4 、IPv6 、TCP 、UDP 、和 DNS)显然属于此列。IETF 会议对所有人开放,但它不是免费的。

IETF 是一个论坛,它选举出称为 Internet 架构委员会(IAB)和 Internet 工程指导组(IESG)的领导组织。IAB 负责提供 IETF 活动指导和执行其它任务,例如任命其它 标准制定组织(SDO) 的联络员。IESG 具有决策权力,可以修改现有的标准,以及建立和审批新的标准。 ”繁重“ 或细致的工作通常由 IETF 工作组执行,工作组主席负责协调执行此任务的志愿者。

除了 IETF 还有另外两个重要组织与 IETF 合作密切。Internet 研究任务组(IRTF) 讨论那些没有成熟到足以形成标准的协议、体系结构和程序。IRTF 的主席是 IAB 的列席成员。IAB 和 Internet 协会(ISOC)共同影响和促进世界范围内有关 Internet 技术和使用的政策和培训。

1.6.1 RFC

Internet 社会中的每个官方标准都以一个 RFC(征求意见)的形式发布。RFC 可以通过多种方式创建,RFC 发发布者对一个已经发布的 RFC 创建多个文件。当前文件(在 2010 年)包括 IETF 、IAB 、IRTF 和独立提交的文件。在被接受并作为 RFC 发布前,文件将作为临时的 Internet 草案存在,在编辑和审查过程中将接收意见和公布进展。

不是所有的 RFC 都是标准。只有 标准跟踪 类别的 RFC 被认为是官方标准。其它类别包括 当前最佳实践(BCP)、信息、实验和历史 。重要的是,一个文件成为 RFC,并不意味着 IETF 已采纳它作为标准。事实上,针对现有的 RFC 有明显的分歧。

许多 RFC 具有特殊意义,它们总结、澄清或解释其它一些特殊标准。

1.6.2 其它标准

1.7 实现和软件分发

1.8 与 Internet 体系结构相关的攻击

Internet 体系结构交付 IP 数据报是基于目的 IP 地址。因此,生产的数据报被交付到目的地,但难以确定它的真实来源。也就是说,很难或者不能确定从 Internet 中接收的数据来源。

欺骗可以与 Internet 中出现的各种攻击相结合。拒绝服务(DoS) 攻击通常涉及消耗大量重要资源,以导致合法用户被拒绝服务。

未授权访问 攻击涉及以未授权方式访问信息或资源。它可以采用多种技术来实现,例如利用协议实现上的错误来控制一个系统(称为占有这个系统,并将它变为一个僵尸)。

关于 Internet 体系结构,值得注意的是,最初的 Internet 协议没有进行任何加密,加密可用于支持认证、完整性或保密。安全性不是 Internet 体系结构的主要设计目标。早期的 Internet 协议难以保护敏感信息的隐私,但是这些协议中的大多数当前已过时,其现代版本通常采用加密方式成为主机之间通信提供保护和认证。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值