两台电脑之间的通信,必须依赖着协议
,就是人与人之间的交流需要依赖语言一样。早期的计算机通信,各家的厂商都指定自己的协议标准,如果你有一个 HP
电脑,和一台 IBM
电脑,那么这两台电脑之间是无法通信的,因为双方的协议不同,交流一起就像一个讲中文,一个讲英文,互相不理解。协议之争在上个世纪80年代延续了几年,最后 TCP/IP
这个协议胜出,成为了通信的标准。今天整个互联网的通信依赖的都是 TCP/IP
协议。
TCP/IP
指的并不是 TCP
协议,或是 IP
协议,而是整个计算机网络通信协议
的总称。
TCP/IP
协议把整个通信的模型分为5层
- 物理层
、数据链路层
、网络层
、传输层
、应用层
,这个分层的模型,称为 OSI
。
物理层
:主要是物理通信的媒介,比如 光纤
、电缆
、电磁波
等...
数据链路层
:把电脑通过物理介质(光纤,WiFi ...)串联起来,组成 局域网
,也是我们常说的内网
。【局域网的通信通过 MAC 地址】
网络层
:这一层的主要设备是 路由
,路由的工作是把无数的局域网组合起来,成为 互联网
。到这里,我们就能上网了。【互联网的通信通过IP】
传输层
:通过网络层,两台电脑能交流了,但是两台电脑的交流通常是两个软件之间的交流
,传输层负责的,就是把信息转发到对应的软件上。【每个软件都有特定的端口,传输层的通信通过端口】
应用层
:应用层还可以在拆分三层 会话层
、表示层
、应用层
,但是整体一样,我们就统一称呼。这一层主要是对 传输层
的封装,用于解决一些特定的领域,例如 HTTP协议
、DNS协议
等... 都是应用层协议。
我们编写软件,跟协议打交道,是从第三层 传输层
开始的,这一层主要是两个协议 TCP
和 UDP
。如果是 web
领域,其实做的就是 HTTP协议
的应用。下面几章,我们会讲清楚这几层协议的关系和应用。