应用层之HTTP
应用层
解决通过应用进程的交互来实现特定网络应用的问题。
这个定义完全不知所云。所以直接讲应用,拿我们正常的上网来说:
看一下这个博客网址的组成,这就是万维网WWW应用,其相关应用层协议为超文本传送协议HTTP。
HTTP的基本概念
HTTP超文本传输协议,英文全称:Hyper Text Transfer Protocol
其实该协议可以拆分成三个部分:
- 超文本
- 传输
- 协议
协议
什么是协议?
协,代表是多个参与者;仪,说明这是一种行为规范。
HTTP协议就相当于计算机世界里进行各个计算机之间进行沟通的行为准则。
传输
传输,有来有回,所以HTTP是一个双向协议。
超文本
简单来说,就是超越了普通文本的文本,包罗了文字、图片、音频、视频等,最关键的是有超链接,可以实现超文本之间的跳转。
HTTP的请求响应过程
看图:
其实也没怎么懂是啥意思。
持久性连接与非持久性连接
HTTP就是典型的非持久性连接。
因为每次TCP在传递完报文之后,都会断开,每个TCP连接之传输一个请求报文和响应报文。
缺点:
- 必须为每一个请求对象都建立和维护一个全新的连接
- 因为要为TCP分配缓冲区,这就给服务器造成了很大的负担
其实细心的话你就会发现:
http后面有一个s,这是为什么呢?
原来HTTP协议,属于明文协议,不安全,后来就加入了新的安全协议SSL/TLS。
HTTP报文格式
由三大部分组成:
- 起始行 start line:描述请求和响应的基本信息
- 头部字段 header:使用key-value形式更详细的说明报文
- 消息正文 entity:实际传输的数据,文字,图片、视频等二进制数据
请求报文:
响应报文:
两者只有请求头是不一样的。
HTTP特点
- 简单,报文格式:header+bady,,头部:key+value
- 灵活易于扩展
- 应用广泛、跨平台