简介
- 阅读TCP/IP详解卷一:协议的学习笔记
第一章 概述
- 当一种语言用于一组行为时,需要使用一种协议。一系列相关协议的集合称为一个协议族。指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务的设计,称为协议族的体系结构或参考模型。
- TCP/IP是一个实现Internet体系结构的协议族,它来源于ARPANET参考模型(ARM)。
1.1 体系结构原则
- TCP/IP是一个开放的系统,协议族定义和很多实现是公开的,收费很少或者根本不收费。它构成全球因特网(Internet)的基础。尽管很多人认为因特网和万维网是可互换的术语,但我们通常认为因特网在计算机之间提供了消息通信能力,而万维网是一种使用因特网来通信的具体应用。
1.1.1 分组,连接和数据报
- 20世纪60年代出现的一个重要概念是分组交换思想。在分组交换中包含一定字节数的数字信息“块”(分组)独立通过网络。来自不同来源或发送方的块可以组合,而且以后可以分解,这称为“多路复用”。
- 在使用信令协议在一条虚电路上交换数据之前,每个流状态已经建立,该协议支持连接建立,清楚和状态信息。因此,这种网络称为面向连接的。
- 无论是建立在线路还是交换的基础上,面向连接的网络是多年来最流行的联网方式。
- 在20世纪60年代后期,数据报作为另一种可选方案而得到发展。数据包起源于CYCLADES系统,它是一个特定类型的分组,有关来源和最终目的的所有识别信息都位于分组中(而不是分组交换机中)。虽然这通常需要较大的数据包,但不需要再交换机中维护连接状态,它可用于建立一个无连接的网络,并且没必要使用复杂的信令协议。
1.1.3 差错控制和流量控制
- 在网络中存在数据损坏或丢失的情况。这可能出于各种原因,例如硬件问题,数据传输中被修改,在无线网络中超出范围,以及其他因素。对这种错误的处理称为差错控制,它可以在构成网络基础设施的系统,连接到网络的系统或其他组合中实现。
- 针对网络中可靠,按顺序交付的实现开销,帧中继和Internet协议采用一种称为尽力而为交付的服务。
1.2 设计和实现
- 我们对协议体系结构和实现体系结构加以区分,实现体系结构定义了协议体系结构中的概念如何用于软件形式的实现中。
1.2.1 分层
通过分层,每层只负责通信的一个方面。采用多层是有益的,这是因为分层设计允许开发人员分别实现系统的不同部分,他们通常由在不同领域的专业人员完成。最常提到的协议分层概念基于一个称为开发系统互联标准(OSI)的模型。
尽管OSI模型建议的7个逻辑层在协议体系结构的模块化实现中是可取的,但是通常认为TCP/IP体系结构包含5层。
如图1-2的简要介绍,每层都有不同的任务。自上而下
- 物理层定义了一种通过某种通信介质传输数字信息的方法。以太网和无线局域网标准的一部分也在这层。
- 链路层或数据链路层包含为共享相同介质的邻居建立连接的协议或方法。有些链路层网络只连接两个邻居。当超过一个邻居可以访问共享网络时,这个网络称为多接入网络。WiFi和以太网是这种多接入链路层网络的例子,特定协议用于协调多个站在任何时间访问共享介质。
在层次结构中,我们对网络层或互联网络层最有兴趣。
传输层提供了一个会话之间的数据流,而且可能相当复杂,这取决于它提供的服务类型。
会话标识运行中的应用之间的交互,会话层协议可提供例如连接初始化和重新启动,增加检查点等功能
表示层负责信息的格式转换和标准化编码。
正如我们看到的,Internet协议不包括正式的会话层和表示层,如果需要的话,这些功能由应用程序来实现。
最高层是应用层。各种应用通常会实现自己的应用层协议,他们对用户来说是最容易看到的。目前已存在大量的应用层协议,并且程序员仍在不断开发新协议。因此,应用层是创新最多,以及新功能开发和部署的地方。
1.2.2 分层实现中的复用,分解和封装
- 分层体系结构的一个主要优点是具有协议复用的能力。这种复用形式允许多种协议共存于同一基础设施中。它也允许相同协议对象(例如连接)的多个实例同时存在,并且不会被混淆。
- 复用可以发生在不同层,并在每层都有不同类型的标识符,用于确定信息属于哪个协议或信息流。
- 当某层的一个称为协议数据单元(PDU)的对象(分组,消息等)被低层携带时,这个过程称为在相邻低层的封装(作为不透明数据)。因此,第N层的多个对象可以通过第N-1层的封装而复用。
- 封装通常与分层一起使用。单纯的封装涉及获得某层的PDU,并在底层将它作为不透明(无需解释)的数据来处理。封装发生在发送方,拆封(还原操作)发生在接收方。多数协议在封装过程中使用头部,少数协议也使用尾部。
- 在上图中,每层都有自己的消息对象(PDU)的概念,对应于负责创建它的哪个特定层。例如,如果第四层(传输层)协议生成一个分组,将它称为第四层PDU或传输层PDU更准确。这是封装的本质,每层都将来自上层的数据看成不透明,无需解释的信息。
1.3 TCP/IP协议族结构和协议
- 到目前为止,我们已讨论了体系结构,协议,协议族和抽象的实现技术。
ARPANET 参考模型
- 从图1-5底部沿着协议栈上移,我们首先看到的层次是2.5,这是一个 “非正式”的层,有几个协议工作在这层,一个最古老和最重要的协议是地址解析协议(ARP)。它是IPv4的专用协议,只用于多接入链路层协议(例如以太网和Wi-Fi),未完成IP层使用的地址和链路层使用的地址之间的转换。
- 编号为3的层中看到IP,它是TCP/IP中最重要的网络层协议。IP发送给链路层协议的PDU称为IP数据报,它的大小是64KB(IPv6将它扩大为4GB)。在很多情况下,当使用的上下文是清晰的,我们将会使用简化的术语 “分组” 来表示IP数据报。 大的分组放入链路层PDU(称为帧)时需要进行缩小处理,这个过程称为分片,它通常由IP主机和某些路由器在必要时执行。在分片的过程中,大数据报的一部分被放入多个称为分片的小鼠举报中,并在到达目的地后组合(称为重组)。
- 由于每个IP分组都是一个数据报,所以都包含发送方和接收方的第三层地址。这些地址称为IP地址,即32位的IPv4地址或128位的IPv6地址;IP地址长度不同是IPv4和IPv6之间的最大差别。每个数据报的目的地址用于决定将该数据报发送到哪里,而做出此决定和发送数据报到下一跳的过程称为转发。路由器和主机都能进行转发,但更多的是路由器实现转发。这里有3中类型的IP地址,地址类型决定如何进行转发:单播(目的地是一台主机),广播(目的地是一个指定网络中的所有主机)和组播(目的地是属于一个组播组中的一组主机)。
- Internet控制消息协议(ICMP)是IP的一个辅助协议,我们将它标注为3.5层协议。IP层使用它与其他主机或路由器的IP层之间交换差错消息和其他重要信息。ICPM有两个版本:IPv4使用的ICMPv4,IPv6使用的ICMPv6.ICMPv6是相当复杂的,包括地址自动配置和邻居发现等功能,他们在IPv4网络中由其他协议处理。虽然ICMP主要由IP使用,但它也能被其他应用使用。事实上两个主流的诊断工具(ping, traceroute)都使用ICMP。ICMP消息被封装在IP数据报中,采用与传输层PDU相同的封装方式。
- Internet组管理协议(IGMP)是IPv4的另一个辅助协议。它采用组播寻址和交付来管理作为组播组成员的主机(一组接收方接收一个特定目的地址的组播流量)。
- 在第四层中,常见的两种Internet传输协议有很大区别。广泛使用的传输控制协议(TCP)会处理数据包丢失,重复和重新排序等IP层不处理的问题。它采用面向连接(VC)的方式,并且不保留消息便捷。相反,用户数据包协议(UDP)仅提供比IP协议稍多的功能。UDP允许应用发送数据包并保留消息边界,但不强制实现速率控制或差错控制。
- TCP在两台主机之间提供可靠的数据流传输。TCP涉及很多工作,例如将来自应用的数据分解在网络层中传输的适当尺寸的块,确认接收到的分组和设置超时,以便对方能够确认自己发送的分组。由于传输层提供这种可靠的数据流,所以应用层可以忽略这些细节。TCP发送到IP的PDU称为TCP段
- 另一方面,UDP为应用层提供一种更简单的服务。它允许将数据报从一台主机发送到另一台主机,但不保证