HTTP相关知识点

目录

一、HTTP协议的特点

二、一次完整的HTTP请求所经历的7个步骤

三、HTTP请求报文与响应报文格式

四、常见的HTTP相应状态码

五、常见HTTP首部字段

六、HTTP请求方法

七、GET和POST的区别

八、Cookie和Session的区别及使用

九、HTTP和HTTPS

十、HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

十一、HTTP中的缓存机制

十二、基于Token的WEB后台认证机制

十三、对称加密和非对称加密

十四、静态页面和动态页面

十五、HTTPS抓包原理

十六、transfer-encoding:chunked的含义

十七、HTTP无状态、TCP有状态

十八、HTTP中的pipeline(管线化)

十九、http状态码301和302详解及区别

一、HTTP协议的特点

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。

1.HTTP协议是无状态的

就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。

2.多次HTTP请求

在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提高了效率。

3.基于TCP协议

HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。现在使用的版本当中是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。

二、一次完整的HTTP请求所经历的7个步骤

HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 

1. 建立TCP连接

在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建 Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则, 只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

2. Web浏览器向Web服务器发送请求行

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET /sample/hello.jsp HTTP/1.1。

3. Web浏览器发送请求头

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。 

4. Web服务器应答 

客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

5. Web服务器发送应答头

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。 

6. Web服务器向浏览器发送数据 

Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

7. Web服务器关闭TCP连接 

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:

Connection:keep-alive 

TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

建立TCP连接->发送请求行->发送请求头->(到达服务器)发送状态行->发送响应头->发送响应数据->断开TCP连接

三、HTTP请求报文与响应报文格式

url的组成:

统一资源定位符URL是用来表示从互联网上得到的资源位置。

URL的一般形式由以下四个部分组成:<协议>://<主机>:<端口>/<路径>  

使用HTTP的URL:http:///<主机>:<端口>/<路径>   HTTP的默认端口号是80,通常可省略。若再省略<路径>项,则URL就指到互联网上的某个主页。

请求报文包含三部分:

a、请求行:包含请求方法、URI、HTTP版本信息
b、请求首部字段
c、请求内容实体

                        

                      

GET /wxisme HTTP/1.1  
Host: www.cnblogs.com 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0  
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5  
Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3  
Accept-Encoding: gzip,deflate  
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7  
Keep-Alive: 300  
Proxy-Connection: keep-alive  
Cookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45
Cache-Control: max-age=0

简单来说请求报文就是由请求行、请求头、内容实体组成的,注意,每一行的末尾都有回车和换行,在内容实体和请求头之间另有一个空行。其中请求行指定的是请求方法、请求URL、协议版本;请求头是键值对的形式存在的,就是字段名:值;内容实体就是要传输的数据。

响应报文包含三部分:

a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应首部字段
c、响应内容实体

                    

                         

HTTP/1.1 200 OK
Date: Tue, 12 Jul 2016 21:36:12 GMT
Content-Length: 563
Content-Type: text/html

<html>
    <body>
    Hello http!
    </body>
</html>

简单来说响应报文由状态行、响应首部字段(响应头)、响应实体组成,其中第一行是状态行,依次包含HTTP版本,状态码和状态短语组成;在一个回车换行之后是响应头,也是键值对的形式,字段名:值;然后会有一个空行也包含回车换行,之后是响应实体,就是要传输的数据。在上面的例子当中就是一个非常简单的HTML页面。 

四、常见的HTTP相应状态码

1XX临时响应   2XX成功   3XX重定向 4XX客户端错误 5XX服务端错误

  • 100:(继续)请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分 
  • 101:(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。
  • 200:请求被正常处理
  • 204:请求被受理但没有资源可以返回
  • 206:客户端只是请求资源的一部分,服务器成功处理了部分 GET 请求,响应报文中通过Content-Range指定范围  的资源。
  • 301:永久性重定向
  • 302:临时重定向
  • 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
  • 304:发送附带条件的请求时,条件不满足时返回,与重定向无关
  • 307:临时重定向,与302类似,只是强制要求使用POST方法
  • 400:请求报文语法有误,服务器无法识别
  • 401:发送的请求需要有通过HTTP认证的认证信息。另外,若之前已进行过1次请求,则表示用户认证失败
  • 403:请求的对应资源禁止被访问
  • 404:服务器无法找到对应资源
  • 500:服务器内部错误,比如web应用存在bug或者某些临时的故障
  • 502:错误网关,服务器作为网关或代理,从上游服务器收到无效响应
  • 503:服务器正忙,原因可能是服务器暂时处于超负载或正在进行停机维护
  • 504:Gateway Time-out(一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。 

204状态码表示的是服务器接收的请求已经成功处理,但在返回的响应报文中不含实体的主体部分。比如:当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。

304状态码客户端发送附带条件的请求时,服务端允许访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified(表示服务端资源未改变,可直接使用客户端未过期的缓冲)。附带条件的请求是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部。

五、常见HTTP首部字段

a、通用首部字段(请求报文与响应报文都会使用的首部字段)

Date:创建报文时间

Connection:连接的管理  1.控制不在转发给代理的首部字段;2管理持久连接

Cache-Control:缓存的控制

Transfer-Encoding:报文主体的传输编码方式

b、请求首部字段(请求报文会使用的首部字段)

Host:请求资源所在服务器

Accept:可处理的媒体类型,比如文本文件、图片文件、视频文件等等

Accept-Charset:可接收的字符集

Accept-Encoding:可接受的内容编码

Accept-Language:可接受的自然语言

If-Match:服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。

If-Modified-Since:如果请求的资源在指定的日期之后更新过&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值