原文:维基百科 Ps. 基本忠实于原文,追求知识正确传递的原则。欢迎大家纠错或有好的翻译方式也可提出!
Internet 协议族是 Internet 和类似网络的通信协议集合,通常情况下是广域网的最流行的协议栈。作为 TCP/IP 而广为人知,正是因为其最重要的协议:传输控制协议(TCP)和因特网协议(IP),这些协议是此标准定义的第一组网络协议。有时也被称为 DoD 模型(译者注:Department Of Defense Model 美国国防部模型),因为受到了70年代 ARPANET 的影响(由 DARPA实施,一个美国国防部的机构)。
TCP/IP 提供了端到端连接,指定数据在目的地如何被格式化,寻址,传输,路由和接收。有四个抽象层,每一个尤其自己的协议。从最底层到最高层,如下:
- 链路层(通常是以太网)包括本地网络的通信技术。
- 网络层(IP)连接本地网络,因此建立起了互联网络。
- 传输层(TCP)处理主机到主机的通信。
- 应用层(例如 HTTP)包括所有在进程与进程层间特定数据的通信服务的协议(例如一个网页浏览器和一个网页服务器通信)
网络协议 |
应用层 DHCP、DHCPv6、DNS、FTP、HTTP、 IMAP、IRC、LDAP、MGCP、NNTP、NTP、 POP、RPC、RTP、RTSP、RIP、SIP、SMTP、 SNMP、SOCKS、SSH、Telnet、TLS/SSL、 XMPP、... |
传输层 TCP、UDP、DCCP、SCTP、RSVP、... |
网络层 IP(IPv4、IPv6)、ICMP、ICMPv6、OSPF、 BGP、ECN、IGMP、IPsec、... |
链路层 ARP/InARP、NDP、Tunnels (L2TP)、PPP、 Media access control (Ethernet、DSL、 ISDN、FDDI)、... |
TCP/IP 模型和相关协议由 IETF 或 Internet工程任务组(Internet Engineering Task Force)维护。
目录
|
1. 历史
1.1 早期研究
网络协议族源自20世纪70年代初美国国防部高级研究计划局(DARPA)的研究和开发。在1969年率先启动ARPANET后,DARPA开始在其它数据传输技术上做一些工作。在1972年,Robet E. Kahn加入了DARPA信息处理技术办公室,在这里他既处理卫星数据包网络,又处理地面的无线电数据包网络,并且认识到了两者之间互通的价值。在1973年的春天,ARPANET 网络控制程序(NCP)协议的开发者Vinton Cerf加入了Kahn来处理开放式互联模型,目标是为ARPANET设计下一代协议。
到1973年春天,Kahn和Cerf制定出了一个基本的拟定方案,通过公用网络互联协议隐藏了网络协议间的区别,而且,ARPANET中网络的的可靠性由网络负责的方式被修改了,取而代之的是网络的可靠性由主机负责。Cerf将之归功于Hubert Zimmerman和CYCLADES网络的设计者Louis Pouzin,认为对此设计有着重要影响。
网络设计包括识别它应该提供的功能,有效传输,在端节点之间路由,其它内容应该被放置在网络的边缘,端节点上。使用这一简单的设计,连接几乎所有网络到ARPANET变得可能了,而不用关心它们的局部特征,因此解决了Kahn的最初的问题。一种常见的表达是TCP/IP,Cerf和Kahn的工作的最后产品,将会碾过“两个锡罐和一个字符串”。作为一个笑话, IP over Avian Carriers正式协议规范被创建了,并且被成功测试。
一个被称之为路由器的计算机用来给每个网络提供接口。来回转发数据包。最初,路由器被称之为网关,但形式也被变成了用网关的其它类型来避免冲突。
1.2 规范
从1973年到1974年,在斯坦福,Cerf的网络研究组实现了想法的细节,致使产生了第一个TCP规范。一个重要的技术影响是在Xerox PARC上的早期网络,产生了PARC Universal Packet协议族,大多数都在那个时代存在。
然后,DARPA和BBN技术,斯坦福大学和伦敦大学学院签约来开发不同硬件平台上协议的运营版本。开发了四个版本:TCP v1, TCP v2, TCP v3, 和TCP/IP v4。最后一个版本今天仍然在使用。
在1975年,一个双网TCP/IP通信测试在斯坦福大学和伦敦大学学院进行。在1977年11月,三网TCP/IP测试在美国,英国和挪威进行。在1978年和1983年中间,多个研究中心开发了一些其他TCP/IP原型。ARPANET到TCP/IP的融合在1983年1月1日正式完成,从那时起,新的协议被永久启用。
1.3 采纳
在1982年3月,美国国防部宣布,所有军用计算机网络都是用TCP/IP作为标准。在1985年,互联网架构委员会举办了一个为期三天的关于计算机工业TCP/IP的研讨会,250个厂商代表参加,推动协议发展并引导增加商用。
在1985年,举办了第一届Interop会议,重点关注通过进一步采用TCP/IP网络实现互联互通。该会议是由一个早期互联网活动家Dan Lynch发起。从开始起,就有大公司参加,如IBM和DEC。Interop会议从那时起就一直在举办,每年一次。从1985年到1993年,与会者数目翻了三倍。
IBM,ATT和DEC是第一批采用TCP/IP的公司,尽管与内部协议(SNA,XNS,等等)竞争,但他们还是采用了。 在IBM,从1984年,Barry Appelman的组做了TCP/IP开发。(Appelman后来去了AOL,成了所有开发工作的负责人。)他们引导公司政策来对各种IBM系统获得一个TCP/IP产品的流,包括MVS,VM和OS/2。与此同时,一些小公司开始为DOS和MS Windows提供TCP/IP栈,例如FTP软件公司,和Wollongong Group公司。第一个VM/CMS TCP/IP栈来自于美国威斯康星大学。
当时,这些TCP/IP栈的大多数是由一些优秀的程序员单独写成的。例如,FTP软件公司的John Romkey是MIT PC/IP包的作者。John Romkey的PC/IP实现是第一个IBM PC TCP/IP栈。IBM研究院的Jay Elinsky和Oleg Vishnepolsky分别为VM/CMS和OS/2写了TCP/IP栈。
在1989年6月,当AT&T同意将对UNIX开发的TCP/IP代码投入公共领域时,TCP/IP的传播进一步被推动。各种提供商,包括IBM将这一代码囊括到了自己的TCP/IP栈中。许多公司给Windows出售TCP/IP栈,直到微软在Windows 95中发布了自己的TCP/IP协议栈。这一事件在互联网的发展中有点晚,但它巩固了TCP/IP的统治地位,而有些协议就消失了。这些协议包括IBM的SNA,OSI,微软的本地NetBIOS,和Xerox的XNS。
2. 关键架构原则
一份早期架构文档,RFC1122,强调了通过层的架构原则。
- 端到端原则:这个原则随着时间的推移这一原则已演变。最初的表达给予状态支持和在边上的智能,并且假定连到边上的不会保存状态,重点强调速度和简单性。真实世界需要防火墙,网络地址转换器,网页内容缓存和其它与此类似对此协议产生改变的部分。
- 鲁棒性原则:“通常,实现方式一定要在发送部分上保守一点,在接受部分自由一点。也就是,一定要小心发送良好的数据包,但一定要接受任何可以解析的数据包(例如:不反对意义清晰的技术错误)。原则的第二部分也同样重要:在其它主机上的软件可能包含一些缺陷,这些缺陷使得其开发合法但会遮掩协议的一些特点。
3. 网络协议族中的层
网络协议使用封装来提供协议和服务的抽象。封装通常被认为是将协议组分成有一般功能的层。通常,一个应用(模型的高层)使用一系列协议来将数据往下发送,在每个层进一步被封装。
协议组中接近高层的“层”逻辑上也与应用层更加接近,那些接近底层的逻辑上与数据传输的物理层更接近。将层看作提供或使用服务是一种用来从位传输细节隔离高层协议的方法,例如以太网和冲突检测,底层应该避免知道每个应用和它的协议细节。
尽管当层被检查的时候,各种架构文档——没有单个架构模型如ISO 7498,开放系统互连(OSI)模型那样有更少快速定义的层,提供更快适应现实世界的协议。实际上,一个常被引用的文档,RFC 1958, 并没有包含层的栈。对层方面强调重点不同是IETF和OSI方法重要的区别。它仅仅指的是互联网络层的存在和一般是“上层”;这个文档被认为是1996年的一个建构“快照”:“因特网和其架构从平常的开始到逐渐繁荣,其实并不是一个宏伟的计划。尽管这一变化过程是技术成功的主要原因之一,它并还是意味着就成功记录了网络架构的当前快照。”
RFC 1122, 叫做主机要求,用分段来指明层,但文档引用了许多其它不强调层的架构原则。松散地地故意了四层模型,层有层名,不是编号,如下:
- 应用层(进程到进程):
- 传输层(主机到主机):
- 网络层(网络互联):
- 链路层:
两个网络主机通过路由器连接,在每个节点间使用相应的层。在每个主机上的应用执行读写操作就像直接通过数据管道链接了两个进程一样。每个其它详细的通信细节被每个进程隐藏了。计算机间底层数据传输机制位于下面的协议层。 | 在RFC 1122 中描述的应用数据通过层一步步往下。 |
4. 实现
5. 参见