什么是通信?
当我们通过浏览器访问一个网址时,一段时间后该网址会渲染出访问的内容,这个过程是怎么实现的呢?
这种通信方式是基于http协议实现的,那么什么是协议?
像一个中国人和一个外国人交流时,一个讲英语另一个讲解中文,肯定是无法正常交流。因此
两个计算机之间要实现数据通信,必须遵循同一种协议
协议的组成
组成一个协议,需要具备三个要素:
-
语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
-
语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
-
时序,就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。
http协议
http协议包含包含几个部分:
-
http请求组成
-
状态行
-
请求头
-
消息主体
-
-
http响应组成
-
状态行
-
响应头
-
响应正文
-
Http三要素分别是:
-
语法:http协议的消息体由状态、头部、内容组成。
-
语义:比如状态,200表示成功,404表示请求路径不存在等,通信双方必须遵循该语义。
-
时序:组成消息体的三部分的排列顺序,必须要有request,才会产生response。
http请求结构:
常用的网络协议
DNS协议、Http协议、SSH协议、TCP协议、FTP协议等,这些都是大家比较常用的协议类型。无论哪种协议,本质上仍然是由协议的三要素组成,只是应用场景不同。
DNS、HTTP、HTTPS 所在的层我们称为应用层。经过应用层封装后,浏览器会将应用层的包交给下一层去完成,通过 socket 编程来实现。下一层是传输层。传输层有两种协议,一种是无连接的协议 UDP,一种是面向连接的协议 TCP。对于通信可靠性要求的场景来说,往往使用 TCP 协议。所谓的面向连接就是,TCP 会保证这个包能够到达目的地。如果不能到达,就会重新发送,直至到达。
TCP/IP通信原理分析
网络模型为什么要分层呢?其实从我们现在的业务分层架构中就不难发现,任何系统一旦变得复杂,就都会采用分层设计。它的主要好处是
-
实现高内聚低耦合
-
每一层有自己单一的职责
-
提高可复用性和降低维护成本