tnblog
首页
登录

HTTP协议

197人阅读 2021/6/24 10:40 总访问:1908 评论:0 手机 收藏
分类: 前端

  前  言

HTTP

 HTTP协议简介:
超文本传输协议(英文全称:HyperText Transfer Protocol,缩写:HTTP),是一种用于分布式、协作式和超媒体信息系统的应用层协议。


什么是HTTP协议?

        超文本传输协议,用于从万维网服务器传输超文本到本地浏览器的传送协议,是万维网数据通信的基础, 用于客户端和服务器之间的通信。
HTTP协议基于TCP/IP通信协议来传递数据。

HTTP协议的优点

1:HTTP使用的是可靠的数据传输协议,底层是TCP协议,确保了内容的正确性,完整性,顺序性。能确保数据在传输的过程中不会被损坏或者产生混乱。

2:简单快速。客户向服务器请求服务时,只需传输请求方法和路径(常用的请求方法有:POST,GET,DELETE,PUT),HTTP服务器的程序规模小,所以通信速度快。

3:灵活性。HTTP允许传输任意类型的数据对象。

4:无状态。HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存,对发送过的请求和响应都不做持久化处理(不做任何保存)。
注意:HTTP是无状态的,那么服务器如何区别特定的客户端?答案是cookie和session。

5:无连接。限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。


HTTP~URL
        HTTP使用统一资源标识符(Uniform Resource Identifiers)来传输数据和建立连接。URL(Uniform Resource Locator)是一种特殊类型的URI,是一种具体的URI。
URL的组成:

1、协议部分:代表网页使用的协议。在Internet中可以使用多种协议。


2、域名部分:一个URL中,也可以使用IP地址作为域名使用。


3、端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口80。


4、虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录不是一个URL必须的部分。


5、文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名部分不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。


6、锚部分:从“#”开始到最后,都是锚部分。锚部分不是一个URL必须的部分


7、参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。


URN:

        URN(Uniform Resource Name),统一资源命名,是通过名字来标识资源。

URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即URN,它命名资源但不指定如何定位资源。

HTTP的方法

        HTTP支持几种不同的请求命令,这些命令被称为方法(HTTP method),每条HTTP的请求都包含一个方法。

        GET与POST的区别:
1:GET的重点是从服务器上获取资源,POST重点是向服务器发送数据。
2:GET也能发送数据,通过URL请求,问号传参,发送数据,这个过程用户是可见的,而POST传输数据是将字段与对应值封存在请求实体中发送给服务器,用户是不可见的。
3:因为收到URL的长度限制,所以GET的传输量小,但是效率高,而POST可以传输大量数据。
4:因为GET是通过URL传输数据的,而URL是可见的,所以安全性没有POST高。
5:GET方式只支持ASCII字符,向服务器传递中文字符可能会出现乱码,而POST支持标准字符集,可以传递中文字符。

传输区别:

对于GET方式的请求,浏览器会把header和data一并发送出去,服务器响应200,返回数据

而对于POST,浏览器先发送header,服务器响应100,continue,浏览器再发送data,服务器响应200,返回数据。
(注:并不是所有浏览器都会在POST中发送两次包


状态码

        每条HTTP响应返回时都会携带一个状态码。
状态码是一个三位数数字的代码,告知客户是否请求成功,或者是否需要进行其他动作。
每个数字的状态码都会伴随一条解释性的原因短语。



一个完整的HTTP请求

完整的HTTP请求主要有六个步骤:

1:输入URL后,将URL发送给DNS,域名解析(DNS服务),根据域名找到服务器的ip地址,和端口号。
2:发起TCP的3次握手。
3:建立TCP连接后发起HTTP请求,发送header,body等信息
4:服务器端响应HTTP请求,将资源封装成响应包返回,关闭连接,浏览器得到html代码
5:浏览器解析html代码,并请求html代码中的资源,浏览器拿到返回包做解析,然后再次发送HTTP请求,拿到这些数据,最终显示出这些内容。
6:浏览器对页面进行渲染呈现给用户。


评价
我们太有限了。
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2020TNBLOG.NET
技术交流:群号677373950
欢迎加群交流技术