HTTP协议分为8大部分
1.HTTP协议简介
HTTP协议(Hyper Text Transfer Potocol)是用于客户端与服务器端数据传输超文本的传输协议。基于TCP/IP通信来传输数据。HTTP协议作用于客户端-服务器架构,客户端通过URL发送请求到服务器,服务器响应请求并返回响应内容。
2.HTTP协议的原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
HTTP请求响应步骤
1.客户端与服务端建立连接
2.客户端发送请求
发送请求报文(请求行 请求头部 空行 请求数据)
3.服务器端接受并响应请求
返回客户端一个回应报文(状态行 消息报头 空行 响应正文)
4.释放tcp连接
如果connection是close就会关闭连接如果connection是keepalive连接就会保持一段时间在此期间可以相互传输数据。
5.客户端浏览器解析HTML页面
客户端会首先解析状态行然后解析响应头,读取相应数据并根据响应头的信息来渲染页面
在浏览器地址栏键入URL,按下回车之后会经历以下流程:
输入网址按下回车到显示页面的过程
- 域名解析
- TCP三次握手建立连接
- 发送请求
- 得到响应
- 浏览器根据代码来渲染页面
- 连接关闭
3.HTTP协议的特点
- 简单快速 客服端向服务器发送请求只发送请求方法以及路径所以简单,这样相应的HTTP服务器规模不大所以通信比较快。
- 灵活 可以传输任意类型的数据对象用Content-Type来标记传输数据的类型
- 无状态 每次连接只处理一个请求,处理完毕并受到用户应答就会关闭连接。这种方式可以节省传输时间。
- 无连接 HTTP是无状态的应用层连接,无连接是指协议没有对事务处理没有记忆能力,如果后续处理需要前面的信息就必须重传,这样会导致每一次传输的数据量增大反过来的好处就是服务器处理速度快。
- 支持B/S C/S模式
4.HTTP协议之request
分为 请求行 请求头部 空行 请求数据
请求行:包括了请求的方法,要访问的资源 以及http的版本
请求头部:就是要发送给服务器要用的额外信息比如请求网址啦,内容的编码方式啦等等。由浏览器自己定义每一发送请求都会自动发送。
空行: 必须要有,不管后面有没有数据
请求数据:你要请求的数据
5.HTTP协议之reponse
分为状态行 消息报头 空行 响应正文
状态行:包含http版本号 状态码 以及状态信息
消息报头:包括客服端需要的一些信息
空行:还是一如既往的作用
响应正文:服务器返回给客户的文本信息。
状态码
1xx 提示信息表示服务器接受请求,继续处理
2xx 服务器成功接受请求并理解
3xx 重定向 就是请求需要进一步的处理
4xx 客服端出现问题
5xx 服务器端出现问题
200 请求成功
400 客户端有语法错误不能被服务器所理解
401 请求未经授权不能访问就是用户不能登录管理员的页面是有权限的
403 服务器接受请求但拒绝提供服务
500 服务器出现未知错误
504 服务器当前不处理这个请求但是过一会可能就处理这个请求了
404 找不到资源地址,资源不存在
6.HTTP协议的请求方法
http1.0 post get head
post:主要用于修改服务器上的资源理论没有大小限制但是实际不同的服务器会限制
get:主要用于获取资源信息,URL有限制长度
head:与get作用相似只是返回的响应没有相应内容常用于获取报头
http1.1 option delete put trace connect
option 容许客服端查看服务器的性能
delete: 删除服务器上的指定页面
put:传输的数据替换指定的文档的内容
trace:回显服务器端的页面请求常用于测试和诊断
7.HTTP协议的GET与POST的不同
- 一个是获取数据一个是修改数据
- 一个传输长度有限制一个理论没限制
- GET对用户是可见的而POST是包含在http包的包体中对用户是不可见得安全。
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
8.HTTP协议之URL
URL是URI(Uniform Resource Identity 统一资源标识符)的一种具体实现,URI用于唯一标识资源。
URI由三部分组成
1.访问资源的命名机制
2.存放资源的主机名
3.资源自身的名称,由路径表示,着重强调于资源。
URL有三部分组成
1.协议http协议或者https协议
2.主机IP地址
3.资源的具体地址如目录文件名等
下面我们来说一下http与https的优缺点吧
HTTP相对于HTTPS的缺点有以下几个方面
- 安全性方面 HTTPS采用HTTP上又加了一层处理加密信息的模块就是HTTP + SSL / TLS(这两个是网络通信来提够安全和数据完整的协议,TLS与SSL在传输层对网络连接进行加密。),所以 HTTPS比HTTP更安全,但他的安全范围是有限的如果遭到黑客攻击以及服务器劫持就over了我也没有见识过这种情况只是理论知识。
HTTPS的缺点:
1.成本高
2.会减慢浏览器的加载速度,增加耗电
3.SSL证书的信用链也不安全,总体就是它也不是绝对安全是在一定范围内
具体的原理我也不是太懂,等我看的多懂了我会添加修改的,这只是基础知识,如果有哪一点错了,写的不好,大家可以提出来,我会改正的,技术就是要相互讨论,分享彼此的技术,共同进步,作为一个小白,我会努力坚持写下去!
原文地址:https://www.cnblogs.com/ranyonsue/p/5984001.html