HTTP协议

一、Http协议过程

1、Url输入地址

2、DNS解析

指将对应的域名解析为指定的IP地址,IP地址是面向主机的,而域名则是面向用户的
1、DNS服务器分类
在这里插入图片描述
2、解析过程

  • 浏览器查找IP地址
  • 系统缓存查找IP地址(Hostswenjain)
  • 路由器缓存查找IP地址
  • ISP DNS 缓存查找IP地址
  • 递归搜索IP地址

迭代查询:本地域名服务器向根域名服务器查询通常采用递归查询(不动原则)
1、主机向本地域名服务器进行递归查询,本地域名服务器采用迭代查询,首先查询根域名服务器,告诉下一次应查询的顶级域名服务器
2、本地域名服务器向顶级域名服务器查询,告诉下一次需要查询的权限域名服务器
3、本地域名服务器向权限域名服务器查询,将查询的IP地址告诉本地域名服务器
4、本地域名服务器将IP地址告诉主机
递归查询:主机向本地域名服务器查询一般是采用递归查询(层层查询后返回)
1、主机向本地域名服务器询问域名对应IP地址,服务器不知道该域名对的IP地址的时候,该服务器就以DNS客户的身份向其他根域名服务器继续发送查询请求报文返回结果要么查找到IP地址,要么返回错误

3、request请求

请求行、请求头、空行、请求正文

1、请求行

1、请求方法:post、get、put、options、delete、head、trace

post:更新资源,向服务器发送数据
get:获取与查询资源
put:向服务器发送数据,put指定了资源的存放路径
options:获取当前URL支持的方法
delete:删除服务器的资源
head:与Get本质相同,返回服务器资源,但是不呈现数据,判断资源是否存在
trace:用于测试与诊断

2、请求头部

包含相关字段(Host/User-Agent/Connection/Accept-Charset/Accept-Encoding/Accept_language)

3、空行+请求正文(Get无请求正文)

4、response请求

状态行、响应头、空行、响应正文

1、状态行:协议版本、状态码、状态描述

2、响应头

包含相关字段:server/content-type(图片还是二进制)/Content-length/Content-Charset/Content-Encoding/Content-Language

3、空行+响应正文(HTML网页)

5、获取HTML对应的资源(JS、css、图片)

6、浏览器对网页进行渲染并显示

二、长连接与短连接

1、短连接

在Client与Server之间建立一次连接,当传输数据结束之后断开连接,下次客户端请求数据,需要重新建立数据连接

优势: 1、通过开启与关闭更少的TCP连接,节省CPU时间和内存 2、减少TCP开启和关闭引起的包的数目,降低网络阻塞
缺点:维护一个长连接增加开销

2、长连接

在Client与Server之间建立一次连接,当传输数据结束之后不会主动关闭,一个长连接可以处理多个http服务请求,这样就会一直存在连接,如果给定的连接长时间没有动作,服务器就会向客户端发送探测报文段
1、客户主机依然正常运行,并从服务器可达。
2、客户主机已经崩溃,并且关闭或者正在重新启动。如果服务器没有收到一个响应,它就认为客户主机已经关闭并终止连接。
3、客户主机崩溃并已经重新启动。服务器将收到一个对其保活探测的响应,这个响应是一个复位,使得服务器终止这个连接。
4、客户机正常运行,但是服务器不可达,断开当前连接

优点:不用为每个客户连接分配大量的内存来记忆大量的状态,也不用在客户端失去连接的时候去清理内存,节省服务器资源,更加高效的去处理业务
缺点:建立与关闭连接浪费时间和资源

1、短连接可以转化为长连接,通过Connection:Keep-Alive来设置,Connection:closed来关闭
2、Http协议的长连接短连接实际上是TCP协议的长连接短连接

三、带流水与不带流水

1、不带流水

仅当前面的响应已经收到,客户机发出新的请求

2、带流水

流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文,但是服务器按照接收到客户端请求的先后顺序依次回送响应结果,保证客户端能够区分每次响应的内容

四、状态码

1XX:接收的请求正在处理 ,100 continue,post请求之前询问服务器是否接受数据
2XX:请求正常处理完毕
200 OK :正常处理
204 NoContent :没有新文档,浏览器继续显示原来的文档
206 Partial Content:客户端进行了范围请求,进行断点传输
3XX:需要进行附加操作以完成请求 (重定向)
301 Moved Permanenetly :永久重定向,为了面对搜多引擎排名,使得不同域名指向同一网站
302 :临时重定向,请求的网页临时移动到新位置

301表明原来地址改变之后会直接指向新地址
302首先会将原来地址的服务器信息返回给客户机,之后客户机才会请求新连接的数据

使用搜索引擎搜索“网易”,需要在地址栏输入www.163.net,那么以后即使www.163.net的地址改变了,输入www.163.com服务器会自动链接到新地址www.wangyi.com,那么这时候使用301的话,就等于直接登陆www.wangyi.com,彻底忘记www.163.net的存在。如果是302的话,会先www.163.net,然后www.163.net的服务器返回信息给客户机,你真实需要去的是www.wangyi.com,然后客户机再去跟www.wangyi.com产生链接。

303 See Other :临时重定向,但是明确客户端应使用Get请求
304Not Modified ;未修改,自从上次请求之后未修改
307 Temporary Redirect :临时重定向,307就是在重定向中依旧保持原有的数据。(301与302数据丢失)
4XX:服务器无法处理请求
400 Bad Request :请求语法错误
401Unauthorized :未经授权
403 Forbidden :收到了请求但是服务器拒绝请求
404 Not Found :服务器上不存在请求的资源
5XX:服务器处理请求出错
500 InternalServer Error :服务器内部错误
503 Service Unavailable:当前不能处理客户端请求,一段时间后恢复正常

五、辨析

1、Get与Post区别

GET与POST区别
1、Get浏览器回退是无害的,post会重新提交请求
2、get可以被浏览器收藏、主动cache、参数保存在浏览记录中,post不能被保存
3、HTTP对于Get URl 长度没有限制,但是浏览器会存在限制,长度为2kb,服务器接收URL=64k,post无限制
4、参数的数据类型,GET只接受ASCII字符,而POST没有限制。
5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
6、GET参数通过URL传递,POST放在Request body中。
7、对于服务器资源,Get是幂等的(同样路径获取资源相同)和安全的,post是非幂等的和不安全的
8、Get发送一次tcp/ip数据包,Get发送二次tcp/ip数据包(火狐发送一次),对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),100 continue用来询问服务器是否愿意接受数据
9、当然也能够在get时候在request body中包含数据,同样在post时候在URL中添加参数,但是不同的服务器处理方式会不同

2、Http/1.0 与Http/1.1区别

1、缓存处理:1.0只有last_midify和Expire(缓存服务器时间,时间内从浏览器缓存请求数据),1.1添加了Etag(针对内容)和Cache-Control(秒级相对时间,在此日期之间都认为是有效的)
2、分块传输数据:1.0需要制定实体长度Content-Length,要求缓存整个响应,延长了响应用户时间。1.1通过分块,将消息实体分割为任意大小的组块,单独发送他们,避免服务段占用大量的缓存(Transfer-Encoding:chunked),允许只请求资源的某个部分
3、错误通知机制:新增24个错误响应码,409(COnfilict):请求资源当前资源状态冲突,410(Gone)某个资源永久删除
4、Host请求:1.1必须添加Host请求,否则会认为语法错误400
5、1.1默认采用长连接、流水线的方式发送请求

3、Http的特点

1、支持客户端/服务端通信模式
2、简单方便快捷,客户端请求,服务端响应
3、灵活:可以传输任意数据类型
4、短连接:大大节省传输时间
5、无状态:对于请求的处理没有记忆功能,当需要再次处理先前的信息的时候,先前信息必须重传,导致数据量传输增加,但是可以通过Session会话来解决,但是当先前信息不使用的时候,服务器纯属特别快

4、Http 与Https区别

由于http存在窃听风险、冒充风险和篡改风险,才会考虑使用https,https是运行在SSL/TLS之上的Http协议,https使用非对称加密算法来加密秘钥,使用对称加密算法来加密数据,通过散列算法来验证数据的完整性

1、https协议需要到ca申请证书,一般免费证书很少,需要交费。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的
5、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
要比http协议安全

5、Http/1.x 与Http/2.x 区别

HTTP1.0、HTTP1.1 和 HTTP2.0 的区别:https://www.cnblogs.com/heluan/p/8620312.html

1、新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
2、多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面HTTP/2 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升。

1.0短连接,1.1采用若干个请求排队串行化单线程处理,2.0多路复用,同时在一个连接上并发执行

3、header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
4、服务端推送(server push),网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了。

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值