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