什么是协议
一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/接收一条报文或其他事件所采取的动作
关键点:内容组织方式、交互次序、响应
HTTP 协议概述
由于互联网的各个端系统需要通信,那么就需要通信协议,以保证通信能够正常运行
HTTP 协议中,端系统的角色有种,分别是 客户端 和 服务端
客户端向服务端发起请求,服务端响应客户端的请求
客户端必须按规定的格式向服务端发起请求,服务端才能准确识别该请求信息,作出响应
同理,服务端也要按规定的格式响应请求
客户端发起请求的格式:
请求行:明确请求类型
请求头:客户端向服务端提供一些客户端本身的信息,或者告诉客户端自己希望接收到什么样(类型、
编码等)的响应消息
请求正文:请求的其他信息
服务端响应请求的格式:
状态行:表示响应的类别(成功、失败、重定向等等)
消息报头:服务端向客户端提供一些服务端本身的信息,或者对应于状态行的其他附加信息
响应正文:客户端请求的资源
分组交换和电路交换
分组交换,即,将要发送的报文切割成一个个的小组,独立发送
电路交换,在两个端系统之间要通信之前,会建立好专门的通信通道
他们两个最大的区别就是,分组交换中,资源不预留,电路交换是预留资源的
其中,更有效率的是分组交换,因为,电路交换因为预留了资源,而且在通信结束之前,这些资源不会被释放给其他通信使用,而现实情况中,在通信期间,用户一般不会长时间地充分使用分配的资源(充分使用资源的时间比率通常很小,可能低于 10%),这就造成了资源的浪费,对并发量的影响非常大
举个简单的例子:
一个 10M 的宽带,在特定的 30s 内被某人独享,但是这个人只在某 5s 中传输了数据,那么就有 25s 的传输时间被浪费了,在这 30s 内,就少传输了 25s*10M 的数据
而分组交换不存在这样的问题
网络分层
网络分层就是将传输数据所需要做的事情,按功能划分,分为几个模块(层),使整个结构更清晰,也更利于维护和扩展
网络分层中,数据封装的形式如下:
数据发送端:将上一层传输过来的所有数据当成信息内容本身,然后本层在上一层的基础上,加上这一层完成任务所需要的数据(头部信息),然后传给下一层
数据接收端:将下一层传输过来的数据分为两部分,头部和信息本身,拿出头部(对应于数据发送端的该层添加的头部信息)进行解析,然后将传给上一层