HTTP(超文本传输协议)

HTTP介绍:

HTPP(超文本传输协议)是一种请求/响应式协议,客户端与服务器建立连接后,客户端向服务器发送请求,称为HTTP请求,服务端接收请求后作出响应称为HTTP响应。客户端与服务器在HTTP下的交互过程如图所示:

HTTP(超文本传输协议)_第1张图片

HTTP协议的特点:

1.支持客户端/服务器模式

2.简单快速:客户端向服务器请求服务时,只需传送请求方式和路径。常用的请求方式有GET、POST等,每种方式规定了客户端与服务器联系的类型不同。

3.灵活:HTTP允许传输任意类型的数据,正在传输的数据类型由content-type加以标记。

4.无状态:HTTP是无状态协议,无状态是指协议对事务处理没有记忆能力,如果后续需要用到前面的信息,则它必须重传。这样可能导致每次连接传送的数据量增大。

HTTP1.0和HTTP1.1的区别:

HTTP1.0:每次客户端与服务器建立连接后,服务器每次只能处理1个HTTP请求,而这样对于客户端的多次请求每次都要建立连接,导致客户端与服务器的交互耗时影响网页响应速度。

HTTP1.1:针对HTTP1.0做了改进,在客户端与服务器建立连接的基础上,每次可以处理多个HTTP请求和响应,减少了建立和关闭连接的消耗和延时。HTTP1.1的交互过程如图:

HTTP(超文本传输协议)_第2张图片

HTTP1.1不仅继承了HTTP1.0的优点而且解决了HTTP1.0的性能问题,显著的减少客户端与服务器交互所需要的时间。

HTTP消息:HTTP消息分为HTTP请求消息和HTTP响应消息。

HTTP请求头消息:

HTTP(超文本传输协议)_第3张图片

第一行为请求行,请求行后面的为请求头消息,空行代表请求头的结束。

HTPP请求行位于请求消息的第一行,它包含三个部分,分别是:请求方式  资源路径   HTTP协议版本。图中GET是请求方式,VerifyCode.aspx是请求资源路径,HTTP/1.1是通信使用的协议版本。(需要注意的是请求行中每个部分需要用空格分隔,最后以回车结束。)常用的HTTP请求方式有有GET、POST、PUT(修改)、PATCH(批量修改)、DELETE,其中最常用的是GET(请求获取请求行的URL所标识的资源)和POST(向指定资源提交数据,请求服务器进行处理,例如提交表单或者上传文件)方法。

 

HTTP响应头消息:

HTTP(超文本传输协议)_第4张图片

第一行为响应状态行,响应行后面的为响应消息头,空行代表响应消息头的结束。

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码:

HTTP工作流程:

一个完整HTTP建立连接到关闭连接应包含如下步骤:

1.客户端通过TCP三次握手与服务器建立连接。

2.TCP建立连接成功后,向服务器发送HTTP请求。

3.服务器接收客户端的HTTP请求后,将返回应答,并向客户端发送数据

4.客户端通过TCP四次断开,与服务器断开TCP连接。

三次握手:

四次挥手:

实际抓包中很多只有三次挥手。对于四次挥手的理解是:

1)Client:我所有东西都说完了

2)Server:我已经全部听到了,但是等等我,我还没说完

3)Server:好了,我已经说完了

4)Client:好的,那我们的通信结束l

使用node创建一个HTTP服务器:


const http=require('http') //引入http模块

//创建服务器
let server=http.createServer(function(req,res){
    res.writeHead('200',{'content-type':'text/html;charset=UTF-8'}) //协议头: 状态码  数据类型 字符集

    res.write('

HTTTP 服务器创建成功!

')//这里可以写多个 res.end('Welcome!')//必须写end 否则服务器会一直等待 }) server.listen('3334','localhost') //服务器监听的端口和ip 可以写成对象的方式

在本地主机的3334端口创建了一个HTTP服务,用浏览器打开验证:

HTTP(超文本传输协议)_第5张图片

 

你可能感兴趣的:(Web)