为什么会有TCP/IP协议
在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。
但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。
TCP/IP协议分层
提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。如图所示 :
一些基本的常识
在学习协议之前,我们应该具备一些基本知识。
-
互联网地址(ip地址)
网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。
-
域名系统
域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务,为主机名和IP地址之间提供动态的映射
-
RFC
RFC(Request for Comment)是什么?RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。
-
端口号(port)
端口号用来标识互相通信的应用程序;
-
注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已;
-
服务器:通过知名端口号来识别,服务器主要开着就保持不变(1~1023)
-
客户端:临时端口号识别,只需要保证该端口号在本机上是唯一的就可以了,因为只有用户运行该客户程序的时候才存在
-
应用编程接口
现在常用的编程接口有socket和TLI(Transposrt Layer Interface)。而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。