为什么会有TCP/IP协议?
TCP/IP不是一个协议,而是一个协议族的统称,里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做*的交流了。
TCP/IP协议分层
协议结构如下:
应用层 |
传输层 |
网络层 |
数据链路层 |
硬件层 |
TCP/IP协议族按照层次由上到下,层层包装,依次为应用层、传输层、网络层、数据链路层和硬件层。
1、应用层:通常熟悉的HTTP、FTP等协议;
2、传输层:TCP和UDP协议;
3、网络层:IP协议,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标;
4、数据链路层:为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备;
5、硬件层:负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等。
发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。
一些基本的常识
在学习协议之前,应该具备一些基本知识
互联网地址(IP地址):
网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意的是IP地址是网络号+主机号的组合,这非常重要。
域名系统:
域名系统是一个分布的数据库,它提供将主机名(就是网址)转换成IP地址的服务。
RFC:
RFC是什么?RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。
端口号(port):
注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。
应用编程接口:
现在常用的编程接口有socket和TLI。而前面的有时候也叫做“Berkeley socket”,可见Berkeley对于网络的发展有多大的贡献。
参考文章:http://blog.csdn.net/goodboy1881/article/details/665041