协议规定了双方互相沟通时遵守的规则:一方是否主动握手,鞠躬多深,谁先从门口走过,在路的哪一侧行驶,等等。虽然有些协议是法律强制规定的,比如在路的哪一边行驶,但生活中的大多数协议都不太正式。与之形成鲜明对比的是,网络协议是非常精确地进行规范的。
互联网有很多协议,其中最基础的有两个,一个是互联网协议(Internet Procotol, IP),定义了单个包的格式和传输方式,另一个是传输控制协议(Transmission Control Protocol,TCP),定义了IP包如何组合成数据流以及如何连接到服务。两者合起来起就叫TCP/IP。
网关对IP数据包进行路由,尽管每个物理网络都有自己的IP数据包传输格式。每个网关必须在数据包进出时在网络格式和IP之间进行转换。
在IP层之上,TCP确保可靠通信。这样,用户(实际上是指程序员)就不用考虑数据包的细节问题,只要当作信息流就可以了。被我们称为“互联网”的大部分服务都使用TCP。
再往上一层是支撑万维网、邮件、文件传输之类服务的应用层协议,它们大多基于TCP协议。由此可见,互联网协议分为好几层,每层都依赖下一层的服务,并为上一层提供服务。这是第6章中提到的软件分层思维的极好例子。下面这张常用的示意图(图9.4)看起来有点像多层的婚礼蛋糕。

这个就是协议层