TCP/IP 是在编程中遇到网络问题时,经常听到的一个词语,那么该如何准确理解 TCP/IP 呢?TCP/IP 是两个词 TCP 和 IP 的组合,是处于不同网络层级的概念。首先看一下网络分层。
ISO ( International Organization for Standardization)是“国际标准化组织”的英文简称,成立于 1947 年 2 月 23 日,是世界上最大的国际化标准组织。网络分层是 ISO 提出的关于网络通信的概念模型,称为 OSI (Open System Interconnection Model)开放系统连接模型。ISO 的初衷是提供一个使各种不同的的计算机和网络在世界范围内实现互联的标准框架。
下面是 OSI 七层模型的详细规定:
从图中可以很明显的看出 7 层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。以我们经常使用的 QQ 为例,完成一次 QQ 聊天,需要经历如下步骤:
1 QQ 软件运行在应用层;
2 当发送信息时,需要将输入的汉语、图片等信息,进行转换翻译成计算机理解的语言,需要遵循表示层协议;
3 不同的计算机建立会话,处于会话层;
4 然后建立端到端的通信,不同计算机上 QQ 进程的端口号建立链接,对信息进行分组,使用 TCP 协议(安全通信),或者 UDP 协议(非安全通信);
5 将分组好的信息,通过路由寻址,进过不同的网路,传递到目的地,遵循网络层协议;
6 对路由地址,进行物理地址转换,处于链路层;
7 电子、光纤上的比特流传送,处于物理层;
比特流到达目的计算机后,在依次进行物理层->链路层->网络层->传输层->会话层->表示层->应用层数据的解析,然后就能看到用户发送的 QQ 信息。
TCP 协议处于传输层,负责对数据进行分组,并且保证数据有效到达对方。其常常和 UDP 对照理解:
项目 | TCP | UDP |
---|---|---|
连接 | 端到端连接 | 不连接 |
安全 | 安全传递 | 不安全 |
使用 | 一对一 | 一对多、多对多、多对一 |
效率 | 报文头长,效率低 | 报文头端,效率高 |
IP 处于网络层,用于定位不同计算机地址,目前使用的有 IPv4 和 IPv6 两种, IPv4 采用 32 位来定义不同地址,由于计算机数量的超预期发展,IPv4 地址处于枯竭的边缘,因此 ISO 提出了 IPv6 的概念,使用 128 位来定义不同的计算机地址,已经远远多于计算机的个数,目前使用范围不断扩大。
TCP/IP 统称为 Socket (套接字) ,基于 TCP/IP 能够实现两个计算机间数据的安全通信,是网络协议中非常重要的一组概念。基于 TCP/IP ,上层定义的有 HTTP、SOCKET、FTP 等协议,从底层来看,这几个协议没有区别。如果将网络看成一个高速公路,TCP/IP 协议可以看成 ISO 定义的最通用的一条公路,HTTP/SOCKET/FTP 就相当于不同的车型,比如专用于拉货的大货车、拉人的客车和个人开的小轿车等。不同的车型用于不同的场景,TCP/IP 之上选择何种协议,也要取决于实现的目的。
准确理解 TCP/IP ,需要基于对 OSI 七层协议的整体认识,以上对二者进行了简要的介绍,更详细深入的理解,还需要参考 ISO 国际标准组织的手册。