互联网协议套件(英语:Internet Protocol Suite)是一种网络通讯模型,以及用於网络传输的协议集合,为网际网络的基础通讯架构,被应用於各种网络通信中。
它常通称为TCP/IP协议族(英语:TCP/IP Protocol Suite),简称TCP/IP。该协定家族的两个核心协定:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由於在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又称为TCP/IP协议栈(英语:TCP/IP Stack)。这些协议最早发源于美国国防部(缩写为DoD)的ARPA网项目,因此也称作DoD模型(DoD Model)。这个协定套组由互联网工程任务组负责维护。
TCP/IP提供了点对点连结的机制,将资料应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。它将软体通信过程抽象化为四个抽象层,采取协定堆叠的方式,分别实作出不同通信协定。协定套组下的各种协定,依其功能分别归属到这四个阶层之中。
TCP/IP模型通常视为简化的七层OSI模型。一般认为TCP/IP的连结层相当於OSI/RM的实体层及资料链结层。不过,思科认为此模型并不包含实体层,只能对应OSI的其中6层。
历史
研发初期
1983年1月1日,在因特网的前身(ARPA网)中通讯方式换成新的定义,TCP/IP取代旧的网络控制协议(NCP,Network Control Protocol),从而成为今天的互联网的基石。最早的TCP/IP由文顿·瑟夫和罗伯特·卡恩两位开发,慢慢地通过竞争战胜其他一些网络协议的方案,比如国际标准化组织ISO的OSI模型。TCP/IP的蓬勃发展发生在1990年代中期。当时一些重要而可靠的工具的出世,例如页面描述语言HTML和浏览器Mosaic,促成了互联网应用的飞速发展。
随着互联网的发展,目前流行的IPv4协议(网际协议版本四)已经接近它的功能上限。IPv4最致命的两个缺陷在于:
地址只有32位,IP地址空间有限;
不支持服务质量(Quality of Service,QoS),无法管理带宽和优先级,故而不能很好的支持现今越来越多实时的语音和视频应用。因此IPv6(网际协议版本六)浮出水面,用以取代IPv4。
TCP/IP成功的另一个因素在於对为数众多的低层协议的支持。这些低层协议对应OSI模型中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量支持TCP/IP,例如:以太网(Ethernet)、令牌环(Token Ring)、光纤数据分布接口(FDDI)、点对点协议(PPP)、X.25、帧中继(Frame Relay)、ATM、Sonet、SDH等通讯方法中都可以应用。
标准化
研制背景
最初想到让不同电脑之间实现连接的,是美国加州大学洛杉矶分校网络工作小组的斯蒂芬·克罗克(Stephen D. Crocker)。1970年,克罗克及其小组着手制定最初的主机对主机通信协议,它称为网络控制协议(Network Control Protocol,缩写NCP)。该协议用于阿帕网,并在局部网络条件下运行稳定,但随着阿帕网的用户增多,NCP逐渐暴露出两大缺陷:
NCP只是一台主机对另一台主机的通讯协议,并未给网络中的每台电脑设置唯一的地址,导致电脑在越来越庞大的网络中难以准确定位需要传输数据的对象。
NCP缺乏纠错功能,数据在传输过程中一旦出现错误,网络就可能停止运行,而随着出错的电脑增多,网络运行效率也将大打折扣。
开发过程
在构建阿帕网先驱之后,DARPA开始其他数据传输技术的研究。NCP诞生后两年,1972年,罗伯特·卡恩(Robert E. Kahn)受雇於DARPA的信息技术处理办公室,在那里他研究卫星数据包网络和地面无线数据包网络,并且意识到能够在它们之间沟通的价值。
在1973年春天,已有的ARPANET网络控制程序(NCP)协议的开发者文顿·瑟夫(Vinton Cerf)加入到卡恩为ARPANET设计下一代协议而开发开放互连模型的工作中。到了1973年夏天,卡恩和瑟夫很快开发出基本的改进形式,其中的网络协议之间的差异通过使用公用互联网协议而隐藏起来,且可靠性由主机保证而不是ARPANET那样由网络保证。瑟夫称赞了Hubert Zimmerman和Louis Pouzin(CYCLADES网络的设计者)在这个设计上发挥重要影响。
由于网络的作用减少到最小的程度,更有可能将任何网络连接到一起,而不用管它们不同的特点,这样能解决卡恩最初的问题。流行的说法提到瑟夫和卡恩工作的最终产品TCP/IP将在运行“两个罐子和一根弦”上,实际上它已经用在信鸽上。一个称为网关(后来改为路由器以免与网关混淆)的计算机为每个网络提供一个接口并且在它们之间来回传输数据包。这个设计思想更细的形式由瑟夫在斯坦福的网络研究组的1973年–1974年期间开发出来。处于同一时期诞生PARC通用包协议组的施乐PARC早期网络研究工作也有着重要的技术影响;人们在两者之间摇摆不定。DARPA于是与BBN、斯坦福和伦敦大学签署协议开发不同硬件平台上协议的运行版本。有四个版本开发出来——TCPv1、TCPv2、在1978年春天分成TCPv3和IPv3的版本,后来就是稳定的TCP/IPv4——目前因特网仍然使用的标准协议。
1975年,两个网络之间的TCP/IP通信在斯坦福和伦敦大学(UCL)之间进行测试。1977年11月,三个网络之间的TCP/IP测试在美国、英国和挪威之间进行。在1978年到1983年间,其他一些TCP/IP原型在多个研究中心之间开发出来。ARPANET完全转换到TCP/IP在1983年1月1日发生。1984年,美国国防部将TCP/IP作为所有计算机网络的标准。1985年,因特网架构理事会举行爲期三天有250家厂商代表参加的关于计算产业使用TCP/IP的工作会议,帮助协议的推广并且引领它日渐增长的商业应用。
2005年9月9日卡恩和瑟夫由于对美国文化的卓越贡献获总统自由勋章。
TCP/IP协议栈组成
整个通信网络的任务,可以划分成不同的功能区块,即所谓的层级(layer)。用於互联网的协议可以比照TCP/IP参考模型进行分类。TCP/IP协议栈起始於第三层协议IP(网际协议)。所有这些协议都在相应的RFC文档中讨论及标准化。重要的协议在相应的RFC文档中均标记状态:“必须”(required),“推荐”(recommended),“可选”(selective)。其他的协议还可能有“试验”(experimental)或“历史”(historic)的状态。”
必须协议
所有的TCP/IP应用都必须实现IP和ICMP。对于一个路由器(router)而言,有这两个协议就可以运作,虽然从应用的角度来看,这样一个路由器意义不大。实际的路由器一般还需要运行许多「推荐」使用的协议,以及一些其他的协议。
几乎所有连接到互联网上的电脑上都存在的IPv4协议出生在1981年,今天的版本和最早的版本并没有多少改变。升级版IPv6的工作始于1995年,目的在于取代IPv4。ICMP协议主要用于收集有关网络的信息查找错误等工作。
TCP/IP参考模型
TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都归类到4个抽象的「层」中。每一抽象层建立在低一层提供的服务上,并且为高一层提供服务。
完成一些特定的任务需要众多的协议协同工作,这些协议分布在参考模型的不同层中的,因此有时称它们为一个协议栈。TCP/IP参考模型为TCP/IP协议栈订身制作。其中IP协议只关心如何使得数据能够跨越本地网络边界的问题,而不关心如何利用传输媒体,数据如何传输。整个TCP/IP协议栈则负责解决数据如何通过许许多多个点对点通路(一个点对点通路,也称为一「跳」,1 hop)顺利传输,由此不同的网络成员能够在许多「跳」的基础上建立相互的数据通路。如想分析更普遍的网络通信问题,ISO的OSI模型也能起更好的帮助作用。
因特网协议族是一组实现支持因特网和大多数商业网络运行的协议栈的网络传输协议。它有时也称为TCP/IP协议组,这个名称来源于其中两个最重要的协议:传输控制协议(TCP)和因特网协议(IP),它们也是最先定义的两个协议。同许多其他协议一样网络传输协议也可以看作一个多层组合,每层解决数据传输中的一组问题并且向使用这些低层服务的高层提供定义好的服务。高层逻辑上与用户更为接近,所处理数据更为抽象,它们依赖于低层将数据转换成最终能够进行实体控制的形式。网络传输协议能够大致匹配到一些厂商喜欢使用的固定7层的OSI模型。然而这些层并非都能够很好地与基于IP的网络对应(根据应用的设计和支持网络的不同它们确实是涉及到不同的层)并且一些人认为试图将因特网协议组对应到OSI会带来混淆而不是有所帮助。
因特网协议栈中的层
人们已经进行一些讨论关于如何将TCP/IP参考模型映射到OSI模型。由于TCP/IP和OSI模型组不能精确地匹配,还没有一个完全正确的答案。
另外,OSI模型下层还不具备能够真正占据真正层的位置的能力;在传输层和网络层之间还需要另外一个层(网络互连层)。特定网络类型专用的一些协议应该运行在网络层上,但是却运行在基本的硬件帧交换上。类似协议的例子有ARP和STP(用来保持冗余网桥的空闲状态直到真正需要它们)。
然而,它们是本地协议并且在网络互连功能下面运行。不可否认,将两个组(更不用说它们只是运行在如ICMP等不同的互连网络协议上的逻辑上的网络层的一部分)整个放在同一层会引起混淆,但是OSI模型还没有复杂到能够做更好的工作。
下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:
通常人们认为OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够由单个的应用程序(或者那些应用程序所使用的库)增加。
与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。
应用层
该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。
应用层是大多数普通与网络相关的程序为了通过网络与其他程序通信所使用的层。这个层的处理过程是应用特有的;数据从网络相关的程序以这种应用内部使用的格式进行传送,然后编码成标准协议的格式。
一些特定的程序视爲在此层运行。它们提供服务直接支持用户应用。这些程序和它们对应的协议包括HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)、SSH(安全远程登录)、DNS(名称⇔IP地址寻找)以及许多其他协议。
一旦从应用程序来的数据编码成一个标准的应用层协议,它将传送到IP栈的下一层。
在传输层,应用程序最常用的是TCP或者UDP,并且服务器应用程序经常与一个公开的端口号相联系。服务器应用程序的端口由互联网号码分配局(IANA)正式地分配,但是现今一些新协议的开发者经常选择它们自己的端口号。由于在同一个系统上很少超过少数几个的服务器应用,端口冲突引起的问题很少。应用软件通常也允许用户强制性地指定端口号作为运行参数。
连结外部的客户端程序通常使用系统分配的一个随机端口号。监听一个端口并且通过服务器将那个端口发送到应用的另外一个副本以建立对等连结(如IRC上的dcc文件传输)的应用也可以使用一个随机端口,但是应用程序通常允许定义一个特定的端口范围的规范以允许端口能够通过实现网络地址转换(NAT)的路由器映射到内部。
每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协议之一:
面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议。
常用的应用层协议有:
运行在TCP协议上的协议:
HTTP(Hypertext Transfer Protocol,超文本传输协议),主要用于普通浏览。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。
FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。
POP3(Post Office Protocol,version 3,邮局协议),收邮件用。
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。
TELNET(Teletype over the Network,网络电传),通过一个终端(terminal)登陆到网络。
SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆用。
运行在UDP协议上的协议:
BOOTP(Boot Protocol,启动协议),应用于无盘设备。
NTP(Network Time Protocol,网络时间协议),用于网络同步。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),动态配置IP地址。
其他:
DNS(Domain Name Service,域名服务),用于完成地址查找,邮件转发等工作(运行在TCP和UDP协议上)。
ECHO(Echo Protocol,回绕协议),用于查错及测量应答时间(运行在TCP和UDP协议上)。
SNMP(Simple Network Management Protocol,简单网络管理协议),用于网络信息的收集和网络管理。
ARP(Address Resolution Protocol,地址解析协议),用于动态解析以太网硬件的地址。
资料性质:开放百科知识资料,非即时新闻。原文:https://zh.wikipedia.org/w/index.php?curid=11016&oldid=95249499;原作者:维基百科贡献者(作者名单见原文历史记录)。本文按CC BY-SA 4.0转载与整理,许可:https://creativecommons.org/licenses/by-sa/4.0/。修改内容:繁体转简体、去除网页导航、按完整段落节选并整理排版;未声称原创。
图片:Lokal_Profil;CC BY-SA 2.5;https://creativecommons.org/licenses/by-sa/2.5;来源:https://commons.wikimedia.org/wiki/File:Symbol_book_class2.svg;按网页尺寸显示。
资料来源
- 维基百科贡献者;CC BY-SA 4.0;节选、繁转简与排版整理,正文保留原文及许可URL

