首页 > 技术文章 > HTTP协议

hy-74 2020-11-30 19:31 原文

http协议与他的三次握手和四次挥手

 

http:超文本传输协议,在客户端与服务端之间传输信息,客户端发送html,css给服务器,服务器返回源码给客户端;

https:是一种更安全的传输协议,在协议上加了一层密码,不容易被黑客攻击,更加安全。多用于支付页面,政府机构页面,公安局页面,银行……;

 

当在浏览器输入url,向服务器发送请求,浏览器都做了些什么?

http事务:从浏览器传给服务器,服务器反回内容给浏览器,这一个完整的过程就叫做http的一个事务。

1、http请求阶段:

1)浏览器把url发送给DNS服务器;

2)DNS服务器会根据IP找到对应的服务器;

3)服务器接收到请求,客户端和服务器已经产生了连接;

 

2、http响应阶段:

4)服务器接收到请求后,根据路径,找到相应的项目;

5)服务器找到之后,服务器立即把一些响应信息放在响应头中,通过http发送给客户端,同时进行数据整理;

6)把整理出来的数据,通过http发送给客户端,直到客户端接收完毕;

 

3、浏览器渲染阶段:

7)浏览器拿到从服务器传输过来的数据文件;

8)先遍历HTML,形成DOM树;

9)代码从上到下解析,形成CSS树;

10)DOM树和CSS树重新组成render树;

11)浏览器进行描绘和渲染;

 

http的三次握手和四次挥手:

浏览器在给服,务器传输数据之前,有三次握手,握手成功之后,才可以传输数据

1、浏览器需要先发送SYN码,客户端请求和服务器建立连接;

2、服务器接收到SYN码,再发送给客户端SYN+ACK码,我可以建立连接;

3、客户端接收到ACK码,验证这个ACK是否正确,如果正确则客户端和服务端则建立起数据连接;双方的数据发送通道都将开启;

 

四次挥手:

1、当客户端无数据要传输了,会发送FIN码告诉服务器,我发送完毕了;

2、当服务端接收完毕后,告诉客户端ACK码,告诉客户端你可以把数据通道关闭了;

3、当服务器发送完毕之后,也会发送FIN码,告诉浏览器,数据发送完毕;

4、当客户端接收完毕 之后,同样发送ACK码,告诉服务器,数据接收完毕,你可以关闭;

 三次握手和四次挥手的好处:确保数据的安全和完整

 

响应头:服务器会告诉浏览器数据的长度,浏览器数据长度和响应头数据长度相同,说明数据已经接收完毕了。

 

http请求方式

HTTP1.0定义了三种请求方法: GET, POST HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE CONNECT 方法。

GET  请求指定的页面信息,并返回实体主体。

HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

PUT  从客户端向服务器传送的数据取代指定的文档的内容。

DELETE   请求服务器删除指定的页面。

CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

OPTIONS  允许客户端查看服务器的性能。

TRACE    回显服务器收到的请求,主要用于测试或诊断。

 HTTP之状态码

 

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

 

 

 

1xx:指示信息--表示请求已接收,继续处理

 

2xx:成功--表示请求已被成功接收、理解、接受

 

3xx:重定向--要完成请求必须进行更进一步的操作

 

4xx:客户端错误--请求有语法错误或请求无法实现

 

5xx:服务器端错误--服务器未能实现合法的请求

 

 

 

 

 

常见状态码:

 

200 OK                        //客户端请求成功

 

400 Bad Request               //客户端请求有语法错误,不能被服务器所理解

 

401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

 

403 Forbidden                 //服务器收到请求,但是拒绝提供服务

 

404 Not Found                 //请求资源不存在,eg:输入了错误的URL

 

500 Internal Server Error     //服务器发生不可预期的错误

 

503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

 

推荐阅读