一、网络传输的本质
网络传输本质上是通过各种介质传输 0 和 1。(比如电信号就有低电频和高电频对应0和1)
数据传输需要知道接受者是谁,什么时候发的这些信息,所以要以统一的格式传输,这样大家都好兼容。这就是网络协议。
二、5层协议
网络协议最初只有5层 应用层、传输层、网络层、数据链路层、物理层。(为什么分层呢?当然是为了抽象,就像是MVC,你写一个model就可以被所有的controler调用,可以复用,减少代码复杂度。分层也是这个目的,把协议分层,你实现的时候就方便复用。)
网络协议其实就是数据的格式,每个层有一套数据格式。
数据格式定好了,每个层就有很多人根据自己的需求去开发。
比如
1、有人实现以太网(Ethernet)协议,这个协议属于数据链路层,用来把文本数据转换层可以传输的信号。(比如电信号)比如我们的电脑和路由器传输数据就是用的这个协议。我们的电脑共享同一个路由器属于同一个局域网(local area network)。多个局域网也由路由器相连。多个局域网组成了一个整体,这个整体就是广域网。(wide area network)
2、有人实现了ip协议,这个协议属于网络层。用固定的格式比如 xxx.xxx.xxx.xxx(ipv4 ip协议的第四个版本) 或 xxxx::xxxx:xxxx:xxxx:xxxx%xx (ipv6 ip协议的第6个版本)去标识目的地。也唯一的给自己命名。
3、有人实现了TCP协议,这个协议属于传输层。用三握手、四次挥手的机制保证了连接的可靠性。
4、有人实现了http协议(超文本传输协议),这个协议属于应用层。如题,他其实就是为了传文本的。
5、有人实现了ftp协议(文件传输协议),这个协议属于应用层。如题,它其实就是为了传文件的。
三、7层协议
后来大家觉得应用层的协议还有可以抽象的空间,就把应用层又拆分成了三层形成七层模型。还取了个高大上的名字OSI模型(open system interconnection 开放系统互联模型) 应用层-表示层-会话层-传输层-网络层-数据链路层-物理层
表示层用来实现编码解码、压缩解压、加密解密这些 会话层用来实现连接、挂断、重连等操作
但是http、ftp等等应用层协议在 编码解码、压缩解压、加密解密、连接、挂断、重连 的实现方面都有各自的特点,没办法统一。 而且已经很好的实现了,所以表示层和会话层一致没有人去实现协议。
四、4层协议
由于物理层太底层了,我们写程序的接触不到,所以在软件行业又简化为了4层模型 应用层-传输层-网络层-数据链路层