【计算机网络基础系列】02- TCP/IP 概述
最近复习计算机网络相关知识,重温《图解TCP/IP》
关于 TCP/IP 的具体含义
- 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 与 IP 两种协议。实际生活中有时也确实就是指这两种协议。
- 然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。
- 具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及HTTP等都属于 TCP/IP 的协议。
- 它们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。
- TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议族。
网际协议族(Internet Protocol Suite): 组成网际协议的一组协议。
TCP/IP 发展历史与重要事件
20世纪60年代,以美国国防部(DoD,The Department of Defense)为中心的组织着力研究新的通信技术。
DoD 认为研发新的通信技术对于国防军事有着举足轻重的作用。
DoD 希望在通信传输的过程中,即使遭到了敌方的攻击和破坏,也可以经过迂回线路实现最终通信,保证通信不中断。
由此,出现了分布式网络、分组交换技术。
1969年,ARPANET 诞生。开发分组交换技术。
起初,只连接了UCLA(加州大学洛杉矶分校)、UCSB(加州大学圣芭芭拉分校)、SRI(斯坦福研究所)和犹他州大学这4个节点。ARPANET 是全球互联网的鼻祖。
1975年,TCP/IP诞生。
1982年,TCP/IP规范出炉。UNIX 是最早开始实现TCP/IP的协议。
1983年,ARPANET 决定正式启用 TCP/IP 为通信协议。 TCP/IP 成为 ARPANET 网络唯一指定的协议。
1989年左右,局域网上的TCP/IP应用迅速扩大。
1990年左右,不论是局域网还是广域网,都开始倾向于使用 TCP/IP。
1995年左右,互联网开始商用,互联网服务供应商的数量剧增。
1996年,IPV6规范出炉,载入RFC。后于 1998 年修订。
关于分组交换(详见《图解 TCP/IP》一书 P30):
目前网络通信方式大致分为两种——电路交换与分组交换。
电路交换技术的历史相对久远,主要用于过去的电话网。 在电路交换中,交换机主要负责数据的中转处理。如果一条电路连接了多台计算机,会出现一些问题。
因此,人们想到新方法,即 让连接到通信电路的计算机将所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。这就是分组交换。
有了分组交换,数据被细分后,所有的计算机就可以一齐收发数据,这样也就提高了通信线路的利用率。
在分组交换中,由分组交换机(路由器)连接通信线路。
分组交换也有另一个名称:蓄积交换。
TCP/IP 标准化精髓
- TCP/IP协议的标准化过程有两大特点:一是具有开放性,二是注重实用性,即被标准化的协议能否被实际运用。
- 首先,开放性是由于 TCP/IP 的协议是由 IETF 讨论制定的,而 IETF 本身就是一个允许任何人加入进行讨论的组织。
- 其次,在TCP/IP 的标准化过程中,制定某一协议的规范本身已经不再那么重要,而首要任务是实现真正能够通信的技术。
难怪有人打趣到”TCP/IP 简直就是先开发程序,后写规格标准”。 - 经过一次又一次的讨论、实验和研究,一款协议的规范才会最终诞生。
- 相比 TCP/IP,OSI 之所以未能达到普及,主要原因在于未能尽早地制定可行性较强的协议、未能提出应对技术快速革新的协议以及没有能及时进行后期改良的方案这几点。
- TCP/IP 规范中需要标准化的协议,被人们列入 RFC(Request For Comment) 文档并在互联网上公布。
- 例如 IP 协议的规范由 RFC279 制定,TCP 协议的规范由 RFC793 号文档决定。
说明:关于 IETF 与 OSI 的介绍请参考上一篇文章。
TCP/IP 协议分层模型
参考资料:维基百科- TCP/IP
https://en.jinzhao.wiki/wiki/Internet_protocol_suite
关于 OSI 参考模型中的 7层 分层,请参考上一篇文章。
从维基百科资料可知,对于TCP/IP协议分层一般有2种不同流派:一种是分为4层、一种是分为5层,区别在于是否有 硬件层(物理层)。
此外,不同的论文、书籍中,对于每层的叫法也有所区别。
这里我们把5层都做一下简单介绍,并且和OSI模型做一下简单对比。
TCP/IP 协议分层模型中,从下往上依次是:硬件层(物理层)、网络接口层(数据链路层)、互联网层(网络层)、传输层、应用层(会话层以上的分层)。
硬件层(物理层)
- TCP/IP 的最底层是负责数据传输的硬件。这种硬件就相当于以太网或电话线路等物理层的设备。
- 关于它的内容一直无法统一定义。
- 因为只要人们在物理层上所使用的的传输媒介(例如使用网线或无线),网络的带宽、可靠性、安全性、延迟等都会有所不同,而在这些方面有没有一个既定的指标。
- 总之,TCP/IP 是在网络互连的设备之间能够通信的前提下才被提出的协议。
网络接口层(数据链路层)
有时人们也将网络接口层和硬件层合并起来称作 网络通信层。
- 网络接口层利用以太网中的数据链路层进行通信,因此属于接口层。 也就是说,把它当做让 NIC 起作用的驱动程序也无妨。
- 驱动程序是在操作系统与硬件之间起到桥梁作用的软件。
互联网层(网络层)
- 互联网层使用 IP 协议,它相当于 OSI 模型中的第3层网络层。
IP 协议基于IP地址转发分包数据。
TCP/IP 分层中的互联网曾与传输层的功能通常由操作系统提供。尤其是路由器,它必须得实现通过互联网层转发分组数据包的功能。
此外,连接互联网的所有主机跟路由器都必须实现IP的功能。
其他连接互联网的网络设备(如网桥、中继器或集线器)就没必要一定实现IP或TCP的功能。
IP 是跨越网络传送数据包,使整个互联网都能收到数据的协议。
IP 协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。
IP 还隐含着数据链路层的功能。通过IP,相互通信的主机之间不论经过怎样的底层数据链路都能实现通信。
虽然IP也是分组交换的一种协议,但是它不具有重发机制。因此,属于非可靠性传输协议。
- ICMP
- IP 数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端发送一个发生异常的通知。
- ICMP 就是为这一功能而制定的。它有时也被用来诊断网络的健康状况。
- ARP:从分组数据包的IP地址中解析出物理地址(MAC 地址)的一种协议。
传输层
TCP/IP 的传输层有两个具有代表性的协议(TCP 与 UDP)。该层的功能本身与OSI参考模型中的传输层类似。
传输层最主要的功能就是能够让应用程序之间实现通信。
计算机内部,通常同一时间运行着多个程序。为此,必须分清是哪些程序与哪些程序在进行通信。
识别这些应用程序的是端口号。
TCP是一种面向有连接的传输层协议。
- TCP可以保证两端通信主机之间的通信可达。
- TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。
- 此外,TCP还能够有效利用带宽,缓解网络拥堵。
- 然而,为了建立和断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。
- 此外,为了提高网络的利用率,TCP协议中定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。
- UDP有别于TCP,它是一种面向无连接的传输层协议。
- UDP 不会关注对端是否真的收到了传送过去的数据,如果需要检查对端是否受到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。
- UDP 通常用于分组数据较少或多播、广播通信以及视频通信等多媒体领域。
应用层(会话层以上的分层)
TCP/IP 应用的架构绝大多数属于客户端/服务端模型。提供服务的程序叫服务端,接受服务的程序叫客户端。
WWW
- WWW 万维网可以说是互联网能够如此普及的一个重要原动力。
- 浏览器与服务端之间通信所用的协议是HTTP(HyperText Transter Protocol)。
- 所传输数据的主要格式是HTML(Hypertext Markup Language)。
- WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。
- 电子邮件(E-Mail)
- 发送电子邮件时用到的协议叫做 SMTP(Simple Mail Transfer Protocol)。
- 最初,人们只能发送文本格式的电子邮件。然后现在,电子邮件的格式由 MIME 协议扩展以后,就可以发送声音、图像等各式各样的信息。
- 这里提到的 MIME 属于OSI参考模型的第6层——表示层。
- 文件传输(FTP)
- 文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思。
- 该过程使用的协议叫做 FTP(File Transfer Protocol)。
- FTP很早就已经投入使用,传输过程中可以选择用二进制方式还是文本方式。
- 在FTP进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的数据连接。
- 这两种连接的控制管理属于会话层的功能。
远程登录(TELNET 与 SSH):TCP/IP 网络中远程登录常用TELNET和SSH两种协议。
网络管理(SNMP)
- 在TCP/IP中进行网络管理时,采用SNMP(Simple Network Management Protocol)协议。
- 使用SNMP管理的主机、网桥、路由器等称作SNMP代理(Agent),而进行管理的那一段叫做管理器(Manager)。
- SNMP正式这个Manager域Agent所要用到的协议。
- 在SNMP的代理端,保存着网络接口的信息、通信数据量、异常数据量以及设备温度等信息。
这些信息可以通过MIB(Management Information Base)访问。- 因此,在TCP/IP的网络管理中,SNMP属于应用协议,MIB属于表示层协议。
关于 TCP/IP 协议分层的思想
详见 《图解TCP/IP》 P123
IP 属于面向无连接型。
为了提高可靠性,上一层的TCP采用面向有连接型。
IP提供尽力服务(Best Effort),意指”为了把数据包发送到最终目标地址,尽最大努力”。然而,它并不做”最终收到与否的验证”。
IP数据包在途中可能会发生丢包、错位以及数据量翻倍等问题。
因此提高通信的可靠性很重要。TCP就提供这种功能。
如果说IP只负责将数据发送给目标主机,那么 TCP 则负责保证对端主机确实接收到数据。
为什么不让IP具有可靠传输的功能,从而把这两种协议合并到一起呢?
- 这是因为,如果要一种协议规定所有的功能和作用,那么该协议的具体实施和编程就会变得非常复杂,无法轻易实现。
- 相比之下,按照网络分层,明确定义每层协议的作用和责任以后,针对每层具体的协议进行编程会更加有利于该协议的实现。
- 网络通信中如果能进行有效分层,就可以明确TCP与IP各自协议的最终目的,也有利于后续对这些协议进行扩展和性能上的优化。
- 分层也简化了每个协议的具体实现。
- 互联网能够发展到今天,与网络通信的分层密不可分。
- 类似于计算机编程中的模块化。