http – 超文本传输协议

发布于 2022-09-22  1171 次阅读


一、简介

1.HTTP是Hyper Text Transfer Protocol的缩写(超文本传输协议),是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。

2.是基于TCP/IP通信协议来传递数据的(HTML文件,图片文件,查询结果等)。

3.HTTP基于C/S架构模型(客户端/服务端),通过一个可靠的链接来交换信息。浏览器作为HTTP客户端向WEB服务器发送所有的请求,WEB服务器收到请求以后,向HTTP客户端发送响应消息。

二、特点

1.灵活迅速:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type标记。除常见的DELETE、POST、PUT、GET四类请求外,可自由添加其他请求类型

2.无连接:无连接的意思不是UDP/IP通信协议的无连接,而是每次连接只会处理一个请求,每个请求只会有一个响应,完成客户端请求和服务器响应两个步骤之后就会断开连接的意思。

3.无状态:由于无连接,自然而然导致了无状态的特点,也就是指协议对事务处理没有记忆能力。缺少状态意味后续无法处理需要前面的信息,所以衍生了cookie技术。

三、请求

请求由客户端发至服务端,一个请求其实就是一段由TCP/IP通信协议发送出的文本数据,文本数据中记录了本次请求的各类参数。

其结构如下:

请求分为三部分,第一行为第一部分,请求头为第二部分,请求体为第三部分

第一部分记录了
    1.请求方法
    2.请求(此域名下的)地址
    3.HTTP协议版本
第二部分较重要的是
    1.Content-Type 数据类型
    2.Host 请求的域名(可以是ip地址)和端口
    3.Cookie 缓存信息
    4.Accept 告诉服务器,客户端只能接受此类型的响应
第三部分记录了请求的地址所需要的参数
    1.一种是图片所示结构 par1=val1&par2=val2&...     对应Content-Type:application/text
    2.一种是json结构 {"par1":val1,"par2":val2,...}  对应Content-Type:application/json
    ......

四、响应

响应是由服务端回复客户端,与请求相同,响应也是一段由TCP/IP通信协议发送出的文本数据,文本数据中记录了本次请求的各类参数。

结构如下:

响应同样分为三部分,第一行为第一部分,响应头为第二部分,响应体为第三部分

第一部分记录了
    1.请求方法
    2.状态码
    3.状态描述
第二部分属性,含义同请求
    1.Content-Type 数据类型
    2.Cookie 缓存信息
    3.Location 页面重定向,设置Location的属性值(地址)跳转到该地址
第三部分记录了响应发回的文本信息
    1.一种是图片所示结构 par1=val1&par2=val2&...     对应Content-Type:application/text
    2.一种是json结构 {"par1":val1,"par2":val2,...}  对应Content-Type:application/json
    ......

五、错误码

分类
    1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
    2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
    3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
    4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,未授权,禁止访问等。
    5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
常见错误码
   200: 找到了该资源,并且一切正常。
   302/307: 临时重定向,此文档的新的url在location响应头中给出
   304: 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
   401: 客户端无权访问该资源。需要用户输入用户名和密码,以登录到服务器。
   403: 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
   404: 在指定的位置不存在所申请的资源。
   500: 服务端异常!

六、HTTPS

1、https与http协议的不同在于

1.https需要到ca申请证书;http不需要。

2.https 是具有安全性的ssl加密传输协议;http是超文本传输协议,信息是明文传输。

3.https和http使用的是完全不同的连接方式,用的端口也不一样,一般情况下前者是80,后者是443。

4.https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议;http的连接很简单,是无状态的。

2、实现原理

1.服务端会到ca申请证书,有证书后,将证书存于服务器端(证书有两种,公钥和私钥)

2.客户端验证证书的合法性,包括可信性,是否吊销,过期时间和域名(拿到公钥)

3.客户端使用公钥(证书)对对称密匙(锁,一般是个随机数)加密,发送给服务端。

4.服务器用私钥(证书)解密,拿到对称加密的密匙(锁)。

5.开始http过程

客户端请求数据

服务端使用锁加密响应

客户端使用私钥解密数据

七、参考

1.HTTP请求,响应体报文(行,头,体) http://t.csdn.cn/P5j4E

2.HTTPS-搜狗百科 https://baike.sogou.com/v26543.htm?fromTitle=HTTPS&ch=frombaikevr

3.HTTP响应(作用,格式,响应码的组成和分类,常见响应状态码) http://t.csdn.cn/bLXKk

————20220922星辉