• 欢迎光临~

计算机网络原理(TCP/IP协议一):概述

开发技术 开发技术 2022-10-07 次浏览
  • 体系结构原则
  • 设计和实现
  • TCP/IP协议族结构和协议
  • Internet/内联网/外联网
  • 设计应用
  • 标准话进程
  • 与Internet体系结构相关的攻击

有效沟通取决于使用共同的语言。这一观点对于人类、动物及计算机而言都是适应的。当一种语言用于一组行为时,需要使用一种协议。我们每天执行很多协议:询问和回答问题、谈判商业交易、协同工作等。

一系列相关协议的集合称为一个协议族,指定一个协议族中的各种协议之间的相互关系并划分需要完成的任务设计,称为协议族的体系结构或参考模型。

TCP/IP 是一个实现Internet体系结构的协议族,它来源于ARPANET参考模型(ARM)[RFC0871]。ARM受早期分组交换工作的影响,这些工作 包括美国的Paul Baran[B64]和Leonard Kleinrock[K64]、英国的Donald Davies [DBSW66]、法国的Louis Pouzin[P73]。

虽然数年之后定制了其他协议体系结构(例如,ISO协议体系结构[Z80]、Xerox的XNS[X85]、IBM的SNA[I96]),但TCP/IP已成为最流行的协议族。

TCP/IP 体系结构源于实际工作,用于满足多种不同的分组交换计算机网络的互联需求[CK74]。由一组网关(后来称为路由器)来实现,网关可以在互不兼容的网络之 间提供翻译功能。随着越来越多的提供各种服务的节点投入使用,由此产生的“串联”网络或多类型网络(catenet)——后来称为互联网络 (internetwork)。

注:这一章内容非常重要,是后面很多技术实现的低层逻辑,一开接触会感觉很简单,但越往后学习越觉得不简单,以后需要反复阅读和理解,所以这部分内容几乎很多是原文照抄,稍微做了一些笔记结构和标记。

 一、体系结构原则

体系结构(协议和物理)是一组设计决策,涉及支持哪些特点和在哪里实现这些特点。网络体系结构的主体在Day[D08]中被广泛讨论,Internet体系结构和TCP/IP协议族是其中一种。

TCP/IP 协议族允许计算机、智能手机、嵌入式设备之间通信,它们可以采用各种尺寸,来自不同计算机生产商和运行各种软件。TCP/IP确实是一个开放系统,协议族 定义和很多实现是公开的,收费很少或根本不收费,它够成全球因特网(Internet)的基础。很多人认为因特网和万维网是可互换的术语,但我们通常认为 因特网在计算机之间提供了通信能力,而万维网是一种使用因特网来通信的具体应用。

Internet体系结构在几个目标的指导下建立。在 [C88]中Clark描述首要目标是“发展一种重复利用的互联网络的技术”。这句话的本质是Internet体系结构将多种网络互联起来,并在互联的网 络上同时运行多个应用。基于这个首要目标,Clark提供了以下的二级目标列表:

1.Internet通信在网络或网关失效时必须能持续;
2.Internet必须支持多类型的通信服务;
3.Internet体系结构必须兼容多种网络;
4.Internet体系结构必须允许对其资源进行分布式管理;
5.Internet体系结构必须是经济有效的;
6.Internet体系结构必须允许低能力主机的连接;
7.Internet中使用的资源必须是可统计的;

上面列出的很多目标将被最终的设计决策所采纳,但在制定这些体系结构原则时,这些原则也影响着设计者所做的选择,最后少数几种设计方案脱颖而出。

1.1分组、连接、数据报

分组交换与多路复用:20 世纪60年代出现一个重要的概念(如[B64]中)是分组交换思想。在分组交换中包含一定字节数的数字信息“块”(分组)独立通过网络。来自不同源或发送 方的块可以组合,而且以后可以分解,这称为“(多路)复用”。这些块在到达目的地的过程中,需要在交换设备之间传输,并且路径可以改变。这样做有两个优 点:网络更有弹性(设计者不用当心网络受到攻击),基于统计复用可以更好的利用网络链路和交换设备。

统计复用: 即统计时分多路复用,又称为“异步时分多路复用”。它利用公共信道“时隙”的方法与传统的时分复用方法不同,传统的时分复用接入的每个终端都固定分配了一 个公共信道的时隙,因为终端和时隙是“对号入座”的,所以它们是“同步”的。而异步时分复用或统计时分复用是把公共信道的时隙始行按需分配,即只对那些需 要传送新的或正在工作的终端才分配给时隙。这样就使所有的时隙都能饱满地得到使用,可以使服务的终端数大于时隙的个数,提高媒质的利用率,从而起到“复 用”的作用。

关于时分复用以及相关内容可以参考:计算机网络原理(一):计算机网络和因特网的2.2节的内容。

统计复用的优点和缺点: 优点是当一台分组交换器接收到分组,可以基于缓存和队列实现先到达先服务(FCFS),这种调度方式称为先进先出(FIFO);也可以缓冲区和按需调度实 现统计复用,这是Internet用来处理不同来源的混合流量的组要方法。缺点是当网络中某个点出现瓶颈或阻塞的可预测性差,任何一点出现流量收缩都可能 造成整个网络道路繁忙。

统计复用的替代性技术: 例如时分复用(TDM)、静态复用,通常可以保证每个连接上为数据保留一定量的时间或其他资源。虽然这种技术可能具有更好的预测性,可以用于支持恒定比特 率的电话功能,但它可能无法充分利用网络带宽,这是由于保留带宽可能未使用。这是因为通过TDM技术实现时,虚电路(VC)会表现出很多电路行为,但不依 赖物理的电路交换机,而是通过顶层的面向连接的分组来实现。流行的X.25协议就是基于TDM,后来在20世纪90年代初才开始被帧中继取代,并最终被数 字用户线(DSL)技术和Internet连接的电缆调制解调器取代。(在后面的链路层相关博客中会详细的介绍)

面向连接: 对于虚电路抽象和面向连接的分组网络(例如X.25),需要在每个交换机中为每个连接存储一些信息或状态。原因是每个分组只携带少量的额外信息,以提供到 某个状态表的索引。例如X.25中,12位的逻辑信道标识符(LCI)或逻辑信号(LCN)被用于这个目的。在每台交换机中,LCI或LCN和交换机中的 每个流状态相结合,决定分组交换路径中的下一台交换机。在使用信令协议在一条虚电路上交换数据之前,每个流状态已经建立,该协议支持连接建立、清除和状态 信息。因此,这种网络称为面向连接的。

无论是建立在线路上的连接上,还是建立在分组交换上的联网方式,在20世纪60年代后期,数据报作为另一种可选方案而得到发展。

数据报: 数据报源于CYCLADES[P73]系统,他是一个特定的分组,有关来源和最终目的地的所有识别信息都位于分组中(而不是分组交换机中)。这虽然通常需 要较大的数据报,但不需要在交换机中维护连接状态,它可用于建立一个无连接的网络,并且没必要使用复杂的信令协议。数据报很快被早期的Internet设 计者所接受,这个决定对协议族其他部分有深远的音响。

消息边界或记录标记: 当一个应用将多个信息块发送到网络中,这些信息块可能被通信协议保留,也可能不被通信协议保留。大多数数据报协议保存消息边界,这样设计很自然的,因为数 据报本身有一个开始和结束。但是,在电路交换或虚电路网络中,一个应用程序可能需要发送几块数据,接收程序将所有数据作为一个块或多个块来读取。这些类型 的协议不保留消息边界。在底层协议不保留消息边界,而应用程序需要它的情况下,应用程序必须自己来提供这个功能。(比如粘包就是这个底层因素导致的)

1.2端到端论点和命运共享

当我们设计一个大的系统(例如操作系统或协议族)时,随之而来的问题通常是在什么位置实现这些功能,影响TCP/IP协议族设计的一个重要原则称为端到端论点[SRC84]:

端到端:只有在通信系统端角度的应用知识的帮助下,才能完全正确地实现问题中提到的功能。因此,作为通信自身的一个特点,不可能提供有疑问的功能。(有时,通信系统提供的一个功能不完整的版本可能用于提高性能)

只有涉及通信系统的应用程序或最终用户,其正确性和完整性才可能得到实现,这个原则认为重要的功能(差错控制、加密、交付确认)通常不会在大型系统的低层实现(在后面的分层设计中就会体现出来)。但低层可以提供方便端系统工作的功能,并最终可能改善性能。这种观点表明低层功能不应以完美为目标,这是因为应用程序需求做出完美推出是不可能的。

命运共享:将所有必要的状态放在通信端点,这些状态用于维护一个活动的通信关联(例如虚拟连接),这个原则被称为命运共享原则[C88]。

命运共享是通过虚拟连接维持活动的设计理念(如TCP的实现),即便网络连接在一段时间内失效,命运共享也支持一种“带智能终端主机的哑网络”模型。

1.3差错控制与流量控制

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

各种不同情况及网络结构中的错误控制

1.只有在少数位出错的情况下,当数据已被接收或正在传输过程中,有些数学代码可以用于检测和修复这种位差错[LC04],这种处理通常在网络中执行;

2.当更多严重损坏发生在分组网络时,整个分组通过重新发送或重新传输。在线路交换或虚电路交换网络[X.25]中,重新传输通常在网络内部,这对于那些顺序要求严格和无差错交付的应用是有用的。

流量控制: 在部分应用中并不希望为数据可靠交付付出代价、有时候一个可靠的文件传输也不关心顺序差错,最终只需要将所有块无差错的交付并按原来的顺序组合即可。针对 网络中可靠、按时序的开销,帧中继和Internet协议采用一种称为尽力而为交付服务。在尽力而为的IP网络中,降低发送方的发送速度可以通过流量控制 机制实现。

 二、设计实现

虽然建议用一个特定方法实现一个协议体系结构,但是这通常不是强制的。因此需要对协议体系结构和实现体系结构加以区分,实现体系结构定义了协议体系结构中的概念如何用于软件形式的实现中。

很 多负责实现ARPANET协议的人员都熟悉操作系统的软件结构,一篇有影响力的论文描述的“THE”多编程系统[D68],主张用一种层次结构的处理方 式,以检查一个大型软件实现逻辑的稳健性和确认性。最终,这有助于形成一种网络协议的设计理念,它涉及实现(和设计)的多个层次。这种方案现在称为分层, 它是实现协议族的常用方案。

2.1分层

分层这一概念基于一个称为开放系统互联标准 (OSI)的模型[Z80],该模型是由国际标准化组织(ISO)定义的。尽管OSI模型建议的7个逻辑层在协议体系结构的模块化实现中是可取的,但是通 常认为TCP/IP体系结构包含5层。尽管很多关于OSI模型和ARPANET模型那个更优有所争论,但事实TCP/IP取得了“胜利”,但来自ISO协 议族(由ISO遵循OSI模型进行标准化)的一些思想,甚至整个协议已被用于TCP/IP中(例如IS-IS[RFC3787])。

分层结构中,每层都有不同的任务,自下而上(每一层要达到的目标)

物理层定义了一种通过某种通信介质传输数字信息的方法,以太网和无限局域网标准的一部分也在这一层。

链路层或数据链路层包含为共享相同介质的邻居建立连接的协议或方法。有些链路层只有两个邻居,当超过一个邻居可以访问共享网络时,这个网络称为多接入网络。

网络层是指通过不同类型的链路层网络来连接,为分组网络提供一种可互操作的分组格式。本层包括针对主机的地址方案和用于解决将分组从一台主机发送到另一台主机的路由算法。

传输层提供了一个会话之间的数据流,。

会话层表示运行的应用之间的交互,会话层协议可提供如连接初识化和重新启动、增加检查点等功能。

表示层负责信息的格式转换和标准化编码。

应用层负责用户的初识化任务的方法。

ISO分层结构与实现的描述(基于每一层目标的实现)

总体描述:应用层、表示层、会话层、传输层都是在端系统的主机中实现,网络层、链路层、物理层时在网络设备上实现。

应用层:指定完成某些用户初识化任务的方法,应用协议通常由应用开发者设计和实现。例如FTP、Skypec等。

表示层:指定针对应用的数据表示格式和转换规则的方法,典型的例子由从EBCDIC转换成ASCII码,加密有时也与本层相关。

会话层:指定有多个连接组成一个通信会话的方法。它可能包括关闭连接、重启连接、检查点进程。ISO X.225是一个会话层协议。

传输层:指定运行在相同计算系统中的多个程序的连接或关联的方法。如果其他地方没有实现,本层可能实现可靠投递(如TCP、ISO TP4)。

网络层:指定经过潜在不同类型链路层网络的多跳通信方法。对于分组网络、它描述了抽象的分组格式和标准的编址结构(IP数据报、X.25PLP、ISO CLNP)。

链路层:指定经过单一链路通信的方法,包括多个系统共享一介质时的“介质访问”控制协议。本层通常包括差错检测和链路层地址格式(以太网、WiFi、ISO 13239/HDLC)。

物理层:指定连接器、数据速率和如何在某些介质上进行位编码。本层也描述也描述低层的差错检测和纠正、频率分配。包括V.92、以太网1000BASE-T、SONET/SDH。

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

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

当 某层的一个称为协议数据单元(PDU)的对象(分组、消息等)被低层携带时,这个过程叫做相邻层的封装(作为不透明的数据)。因此第N层的多个对象可以通 过第N-1层的封装而复用。第N-1层的标识符在第N层的分解过程中用于决定正确的接收协议或程序。简单的来说,封装就是低层在高层传输过来的PDU上添 加头部或者尾部,而分解就是接收方的高层在低层传输过来的PDU中从基于当前层和协议标识符分解出上一层的PDU。

计算机网络原理(TCP/IP协议一):概述

分层的特点

在单纯的分层中,并不是所有网络设备都需要实现所有层;

有 些理想化的小型互联网包括两个端系统,及交换机和路由器,每个设备实现协议栈的子集。所以互联网络是理想化的,当前交换机和路由器通常要实现多个协议,已 经超出单纯实现数据转发的需要。在这种情况下,路由器和交换机等设备有时需要充当主机,并支持远程登入这类服务,为了实现这一点它们需要实现传输层和应用 层协议。

通常情况下都是两台主机之间通信,但是链路层和物理层可能连接多台主机,以实现任意两台相应高层协议的系统之间通信。

针对特定的协议族,可以区分为端系统(两边的主机)和中间系统(中间的路由器)。网络层之上的各层使用端到端协议,网络层提供了一种逐跳协议,它用于两个端系统和中间系统。

通常情况下不认为交换机或网桥是一个中间系统,这是由于它们没有使用互联网协议的地址格式来编址,并在很大程度上以透明于网络层协议的方式运行。从路由器和端系统的角度来说,交换机或网桥实际是不可见的。

路由器有两个或更多的网络接口,有多个接口的系统称为多宿主。一台主机也可以是多宿主,除非它专门将分组从一个接口转发到另一个接口,否则不能把他称为路由器。

互 联网络的目标之一是对应用隐藏有关于物理布局(拓扑)和低层协议的以后行的细节。由于两个网络组成的互联网络中并不明显,但应用层并不关心以下事实:尽管 连接的网络中的主机都采用链路层协议D,但主机之间由采用链路层协议G的路由器和交换隔开。主机之间可能有20个路由器,它们可采用其他类型的物理连接, 应用程序无须修改运行。

 三、TCP/IP协议族结构和协议

虽然TCP/IP协议族已经称为Internet使用的协议,同时也是Internet的既定术语。但在TCP和IP之外的协议也被包含在Internet使用的协议集或协议族中。Internet协议分层基础是ARPAnet参考模型,下面将从对比OSI参考模型的区别来了解。

3.1ARPANET参考模型

计算机网络原理(TCP/IP协议一):概述

基于ARM或TCP/IP的协议分层被用于Internet。这里没有正式的会话层或表示层。另外,这里有几个不适合归入标准的“附属”或辅助协议,它们为其他协议的运行提供重要的功能。其中有些协议没有被IPv6使用(例如IGMP和ARP)。

3.2逐层解析ARPANET参考模型

ARPANET参考模型2.5:链路层(辅助)协议,这是一个“非正式”的层,这层的协议是用来实现多接入链路层网络地址解析和映射。地址解析协议ARP是IPv4的专用协议,用来实现IP层使用的地址和链路层使用的地址之间的转换;而IPv6的地址映射功能作为ICMPv6的一部分。

ARPANET参考模型3:网络层协议,这一层主要实现数据报分片和转发。IP是TCP/IP中最重要的网络协议,IP发送给链路层的PDU称为IP数据报,它的大小是64KB(IPv6将它扩大到4GB),但在很多情况下会使用简化的术语“分组”来表示IP数据报。大部分分组放入链路层PDU(称为帧)时需要进行缩小处理,这个过程叫做分片,它通常由IP主机和某些路由器在必要时执行。在分片过程中,大数据报的一部分被分成多个称为分片的小数据报中,并在到达目的地后组合(称为重组)。

这里暂时不区分IPv4和IPv6,只需要知道每个IP分组都是一个数据报,所以都包含发送方和接收方的第3层地址。每个目的地址用于决定该数据报发送到哪里,而做出此决定和发送数据报到下一跳的过程称为转发。路由器和主机都能进行转发,但更多是路由器实行转发。这里有三种类型的IP地址,地址类型决定如何进行转发:单播(目的地是一台主机)、广播(目的地是一个指定网络中的所以有主机)、组播(目的地是属于一个组播中的一组主机)。

ARPANET参考模型3.5:网络层(辅助)协议,这一层主要实现IP层与其他主机或路由器的IP之间交换差错信息和其他重要信息的协议,以及网络管理协议。

ICMP有两个版本(ICMPv4、ICMPv6)分别来实现IPv4和IPv6的差错控制,ICMPv6相对要复杂,包括地址自动配置和邻居发现功能,这在IPv4中是由链路层(辅助)中的ARP实现。事实上两个流行的诊断工具ping和traceroute都使用ICMP来实现,ICMP消息被封装在IP数据报中,采用传输层PDU相同的封装方式。

Internet组管理协议(IGMP)是IPv4的另一个辅助协议,它采用组播寻址和交付来管理作为组播组成员的主机(一组接受方接收一个特定目的地址的组播流量)。

ARPANET参考模型4:这一层就是实现数据传输层的传输协议,广泛使用的传输控制协议(TCP)实现了处理丢包、重复、重新排序等功能,它采用面向连接(VC)的方式,并不保留消息边界。相反,用户数据报协议(UDP)仅提供比IP协议稍多的功能,它同样不保留消息边界,并且还不实现速率控制和差错控制。详细可以参考:计算机原理(三):运输层。

ARPANET参考模型7:应用层在这个系列中并不会怎么关注,只是后面会介绍到与IP/TCP相关的DNS和DHCP协议。

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

关于复用、分解、封装在前面已经有很详细的解析了,下面通过TCP/IP协议栈地址的分解模型图来了解协议之间的结构关系:

计算机网络原理(TCP/IP协议一):概述

基于TCP/IP协议栈地址信息和协议分解标识符,以决定一个数据报是否被正确接收,以及哪个实体将会处理该数据。有几层还会将测数值(例如验证和),以保证内容在传输中没有损坏。

虽然上面示图不是TCP/IP协议族的全部真实部分,而是以太网的协议分解模型,但能自底向上的说明从链路层开始如何进行分解。在后面链路层相关博客中会介绍其链路层协议,这一层主要是链路层或介质访问控制(MAC)地址与IPv4及IPv6的地址转换,其中涉及它们之间的封装、分解、校验差错等处理。

如果接收到帧包含一个IP数据报,以太网头部和尾部信息将被清除,并将剩余字节(包含帧的有效载荷/负载)交给IP来处理。IP检测一系列的字段,重点是数据报中的目的IP地址与子集的IP地址是否匹配,并且数据报头部没有错误,则检测8位IPv4协议字段(在IPv6中称为下一个头部字段),以决定调用那个协议来处理。常见的值包含1(ICMP)、2(IGMP)、4(IPv4)、6(TCP)、17(UDP)。数值4(和41标识IPv6)的含义有些特别,它表示一个IP数据报可能出现另一个IP数据报的有效载荷,它违反了分层和封装的原有概念,但作为隧道技术的基础,这部分也会在链路层相关博客中解析。

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

3.4端口号

端口号是16位的非负整数(范围是0~65535)。这些数字是抽象的,在物理上没有指任何东西,实际上就是端系统上的进程ID。每个IP地址有65536个可用端口号,每个传输协议都可以使用这些端口号(大多数情况下),它们被用于确定正确的接收数据的具体服务。对于客户机/服务器(即C/S模式)应用,一台服务器先绑定到一个端口号,然后一个或多个客户机可以使用某种特定的传输协议与服务器上的端口建立连接,端口号将相当于电话号码的扩展,差别是它们通常由某个标准来分配。

标准的端口号由Internet号码分配机构(IANA)分配,这组数字被划分为特定范围,包括熟知端口号(0~1023)、注册端口号(1024~49151)和动态/私有端口号(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)。还有其他的熟知端口号,这在操作系统进程相关内容中同样会涉及。

3.5名称、地址、DNS

在TCP/IP中,每台计算机(包括路由器)的每个链路层接口至少有一个IP地址。IP地址足以识别主机,但它们不方便人们记忆或操作(尤其是更长的IPv6地址)。在TCP/IP环境中,DNS是一个分布式的数据库,提供主机名和IP地址之间的映射。域名建立是有层次的,以.com、.org、.gov、.in、.uk、.edu等域结尾。DNS是一个应用层协议,因此它的运行依赖于其他协议。关于DNS在计算机网络原理(二):应用层的4.0中有初步的原理概念介绍,严格来说DNS属于应用层,会有DNS协议及DNS服务搭建的具体内容相关博客,这里先不过多解释了。

 四、Internet、内联网、外联网

4.1Internet

如前所述,Internet(因特网)已发展成为由很多网络互联起来的网络集合,小写字母开头的internet表示使用常见协议族互联的多个网络。大写字母开头的Internet表示可使用TCP/IP通信的世界范围的主机集合。Internet是一个internet,但反过来就是错误的。

组网在20世纪80年代得到快速发展的原因就是很多相互隔离的单机系统组合起来后作用并不明显。几个独立的系统连接起来组成一个网络,虽然向前迈进一步,但在20世纪90年代意识到,不能互操作的独立网络不如一个更大的网络有价值。这个概念是Metcalfe定律的基础,计算机网络价值大致与连接的端系统数量成正比。Internet构想和它支持的协议使不同网络互联成为可能。

实现不同网络互联最容易的方式是构造一个路由器连接两个或多个网络的互联网,路由器通常是连接网络的一台专用设备,其优点是提供很多不同物理网络的连接,例如以太网、Wi-Fi、点到点链路、DSL、电缆Internet服务等。

4.2内联网

内联网是一个用于描述专用互联网络的术语,它通常由一个商业机构或其他企业来运行。大多数情况下,内联网提供的访问资源只供特定企业的成员使用。用于可以使用虚拟专用网(VPN)连接到内联网。VPN有助于保证内联网中潜在的敏感资源只供授权用户访问,它通常使用前面提到的隧道概念。

4.3外联网

一个企业或商业机构可能系统建立一个网络,其中包含可供合作伙伴或其他相关公司通过Internet访问的服务,这涉及VPN的网络通常被称为外联网,由连接在提供服务的企业防火墙之外的计算机组成。

 五、设计应用

 到目前为止,前面已经介绍了网络概念提供的一个简单的服务模型[RFC6250]:在运行于不同(或相同)计算机上的程序之间传输数据。网络应用的典型结构基于少数几种模式,最常见的模式就是客户机/服务器模式和对等模式。

5.1客户机/服务器模式(C/S)

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

迭代服务器实现提供服务的步骤:

1.等待客户机请求到达;
2.处理客户机请求;
3.将响应发送给请求的客户机;
4.回到步骤1;

并发服务器实现提供服务的步骤:

1.等待客户机请求到达;
2.启动一个新服务器实例来处理客户机请求,这可能涉及创建一个新的进程、任务或线程,它依赖于低层操作系统的支持。这个新的服务器处理一个客户机的全部请求。当请求任务完成后,这个新的服务器终止;
3.回到步骤1;

5.2对等

有些应用以分布式的形式设计,其中没有专门的服务器。相反,每个应用既是客户机,又是服务器。又是同时是两者,并能转发请求。有些很流行的应用Skype[SKYPE]、BitTorrent[BT]采用这种形式。这种应用称为对等或P2P应用。关于这部分的一些详细概念和简单解析可以参考计算机网络原理(二):应用层的5.0。

5.3应用程序的编程接口

无论是P2P或C/S,都需要表述其所需的网络操作(例如建立一个连接、写入或读出数据)。这通常有主机操作系统使用一个网络应用程序编程接口(API)来实现,最流行的API被称为套接字或Berkeley套接字,它最初由[LJFK93]开发。关于套接字编程原理可以参考:计算机网络原理(二):应用层的7.0。

 六、标准化进程

刚接触TCP/IP协议族时不了解各种协议的制定和标准,以及它们如何运作。显然它们不是天然的产物,而是由组织化的团体和机构负责实现的。我们最长关注的组织是Internet工程任务组(IETF)[RFC4677]。这个组织每年在世界不同地点举行3次会议,以便开发、讨论和通过Internet的“核心”协议标准。IETF会议对所有人开放,但它不是免费的。

IETF是一个论坛,它选举出称为Internet架构委员会(IAB)和Internet工程指导组(IESG)的领导组织。IAB负责提供IETF活动指导和执行其他任务,例如任命其他标准制定组织(SDO)的联络员。IESG具有决策权力,工作主席负责协调执行此任务组(IRTF)讨论那些没有成熟到足以形成标准的协议、体系结构和程序。IRTF主席是IAB的列席成员。IAB和Internet协会(ISOC)共同影响和促进世界范围的有关Iternet技术和使用的政策和培训。

6.1RFC

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

不是所有RFC都是标准,只有标准跟踪类别的RFC被认为是官方标准。其他类别包括当前最佳实践(BCP)、信息、实验和历史。RFC的大小不等,从几页到几百页。每个RFC由一个数字来标识,它们可以从一些站点免费获得,包括:http://www.rfceditor.org。

6.2其他标准

虽然IETF负责我们讨论的大部协议标准化,但其他SDO负责定义的协议同样值得关注。这些包括重要的组织包括电气和电子工程师学会(IEEE)、万维网联盟(W3C)以及国际电信联盟(ITU)。

 七、与Internet体系结构相关的攻击

7.1IP地址欺骗

Ineternet体系结构交付IP数据报是基于目的IP地址,因此,恶意用户能在自己发送的每个IP数据报的源地址字段插入任何IP地址,这种行为称为欺骗。生成的数据报被交付到目的地,但难以确定它的真实来源。也就是说,很难或不能确定从Internet中接收的数据报来源。

欺骗可以与Internet中出现的各种攻击相结合。拒绝服务(Dos)攻击通常涉及消耗大量的重要资源,以导致合法用户被拒绝服务。例如,向一台服务器发送大量IP数据报,使它花费所有时间处理接收的分组和执行其他无用的工作,这是一种类型的Dos攻击。有些DoS攻击可能涉及以很多流量堵塞网络,导致其无法发送其他分组。这通常需要使用很多计算来发送,并形成一个分布式DoS(DDoS)攻击。

1.2未授权访问

未授权访问攻击涉及以未授权的方式访问信息或资源。它可以采用多种技术实现,例如利用协议实现上的错误来控制一个系统(称为占用有这个系统,并将它变成一个僵尸)。它可以涉及各种形式的伪装,例如攻击者的代理冒充一个合法用户(例如运行用户证书)。有些更恶毒的攻击涉及使用恶意软件(malware)控制很多远程系统,并以一种协同、分布式的方式(称为僵尸网络(botnets))使用它们。那些处于(非法)获利或其他恶意目的的而有意开发恶意软件和利用系统的程序员通常称为黑帽。所谓白帽也在利用同样的技术做这方面的事情,但他们只是通知系统存在漏洞而不是利用它们。

1.3窃听攻击

最初Internet协议没有进行任何加密,加密可用于支持认证、完整性或保密。因此,恶意用户仅通过分析网络中的分组,通常就可以获得私人信息。如果具有修改传输中的分组的能力,他就可以冒充用户或更改消息内容。虽然通过加密协议可以减少这类问题,但旧的或设计不当的协议有时在简单的窃听攻击面前仍很脆弱。由于无线网络的流行,“嗅探”其他人发送的分组比较容易,因此应避免使用旧的或不安全的协议。

程序员灯塔
转载请注明原文链接:计算机网络原理(TCP/IP协议一):概述
喜欢 (0)