HTTP协议

作者: LaBaby_ | 来源:发表于2017-07-13 22:09 被阅读0次

    一. HTTP简介

    HTTP(Hypertext transfer protocol)超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相同行,通过互联网传文档的数据传送协议.

    HTTP可以使浏览器更加高效,使网络传输减少,他不仅保证了计算机正确快速的传输文档,还确定传输文档中的那一部分,以及那部分内容首先显示等.

    HTTP协议是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型,HTTP协议是一个无状态的协议.

    HTTP默认的端口号是80,HTTPS的端口号是443.

    二. URL和URI

    (一)URI:统一资源标识符

    Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的,URI一般由三部组成:

    访问资源的命名机制

    存放资源的主机名

    资源自身的名称,由路径表示,着重强调于资源。

    (二)URL:统一资源定位符

    URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:

    协议(或称为服务方式)

    存有该资源的主机IP地址(有时也包括端口号)

    主机资源的具体地址。如目录和文件名等

    三. HTTP请求

    HTTP的请求报文由3部分组成,分别是:请求行,请求头,请求正文

    1. GET方法

    //请求行 格式:请求方式 请求地址  协议名称/版本

    GET /http/userLogin.php?username=wanlum&password=123456 HTTP/1.1

    //请求头

    Host: localhost

    Connection: keep-alive

    Upgrade-Insecure-Requests: 1

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    Referer: http://localhost/day02-http&ajax/4-code/02-http/userLogin.html

    Accept-Encoding: gzip, deflate, br

    Accept-Language: zh-CN,zh;q=0.8

    //请求正文

    username=json&password=123456

    2. POST方法

    //请求行 格式:请求方式 请求地址  协议名称/版本

    POST /http/userLogin.php HTTP/1.1

    //请求头

    代表主机名称

    Host: localhost

    代表是否开启长链接

    Connection: keep-alive

    代表请求内容的长度(中文一个占三个字节)

    Content-Length: 31

    是否开启缓存    开启缓存 但是立即删除

    Cache-Control: max-age=0

    域名的源

    Origin: http://localhost

    安全请求

    Upgrade-Insecure-Requests: 1

    用户代理

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36

    告诉服务器请求内容是表单的url的编码

    Content-Type: application/x-www-form-urlencoded

    浏览器告诉服务器我能接受的内容的类型

    image/png image/jpg  audio/mp3  我们把这样的格式  大类型/具体类型  叫做MIME类型

    作用是告诉对方用什么样的方式去解析内容

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9, image/webp,image/apng,*/*;q=0.8

    当前的页面是从那个页面跳转过来的()

    Referer: http://localhost/http/userLogin.html

    浏览器告诉服务器能接受的内容的压缩格式

    Accept-Encoding: gzip, deflate,

    浏览器告诉服务器我所能接受的语言

    Accept-Language: zh-CN,zh;q=0.8

    //请求正文

    username=json&password=123456

    四. HTTP响应

    HTTP的请求报文由3部分组成,分别是:请求行,请求头,请求正文

    //响应行 格式:协议/版本号 状态码  状态码描述

    HTTP/1.1 200 OK

    //响应头

    Date: Fri, 07 Jul 2017 06:44:11 GMT

    Server: Apache/2.2.21 (Win32) PHP/5.3.10

    网站用什么技术开发的

    X-Powered-By: PHP/5.3.10

    响应内容的长度

    Content-Length: 60

    长连接的时间  5s以后算超时  超时之后 开始尝试链接 尝试一次max-1  直到100被减完了 就不再尝试了

    Keep-Alive: timeout=5, max=100

    Connection: Keep-Alive

    服务器告诉浏览器我给你的内容的格式

    Content-Type: text/html

    //响应正文

    Array ( [username] => json[password] => 123456 )

    五. 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        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

    六. HTTP请求方法

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

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

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

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

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

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

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

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

    七. 关于HTTP协议的面试题

    1. 请简要描述在客户端浏览器中输入域名之后,到用户看到页面的整个过程.

    (1) 将域名发送到DNS服务器,DNS服务器解析域名,DNS服务器将域名解析成IP地址

    (2) DNS服务器将IP地址传入到浏览器中.

    (3) 浏览器通过收到的IP地址,给Web服务器发送请求.

    (4) Web服务器解析收到的请求信息,将响应信息传递回浏览器

    2. HTTP的三次握手.

    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

    3. GET方法和POST方法的区别.

    GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,而POST方法会把数据放在请求正文中.

    GET提交的数据大小有限制,最多只有1024个字节,而POST方法体检的数据没有限制.

    GET方法提交数据,因为通过URL传递关系,所以不能传递例如用户密码和用户名等涉及用户隐私的信息. 相对的,POST方法比GET方法安全.

    相关文章

      网友评论

        本文标题:HTTP协议

        本文链接:https://www.haomeiwen.com/subject/xdvghxtx.html