Http协议

超文本传输协议(HTTP)是Web上数据交换的基础,是一种client-server协议。请求通常由浏览器发起,包括GET和POST等方法。响应报文包括状态行、响应头和响应正文。HTTP通过TCP或TLS发送,用于传输HTML、图片、视频等多种资源。请求-响应过程涉及DNS解析、TCP连接、请求报文和响应报文的交互。
摘要由CSDN通过智能技术生成
  • 超文本传输协议
  • 一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)
  • 是在 Web 上进行数据交换的基础,是一种 client-server 协议
  • 请求通常是由像浏览器这样的接受方发起的
  • 是一种可扩展的协议
  • 是应用层的协议,通过TCP,或者是TLS-加密的TCP连接来发送,理论上任何可靠的传输协议都可以使用
  • 它不仅被用来传输超文本文档,还用来传输图片、视频或者向服务器发送如HTML表单这样的信息。HTTP还可以根据网页需求,仅获取部分Web文档内容更新网页。

请求-响应

        1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址

        2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接

        3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器

        4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;

        5. 释放 TCP连接;

        6. 浏览器解析该 html 文本并显示内容;  

HTTP报文

        1.请求报文:

                1.1. 客户端向服务端发送请求的信号

                1.2. 组成:

                        请求行

                                组成:空格分隔,回车和换行符结尾

                                   (1)请求方法:get、post、head、put、delete、options、trace、connect

                                                get

                                                        1. 通常用于当客户端要从服务器中读取文档时

                                                        2. 请求参数和对应的值是跟在URL后面,比较不安全、不保密

                                                                通过问号(“?”)和and连接符(“&”)以及“=”号连接

                                                        3. 要求服务器将URL定位的资源放在响应报文的数据部分,

                                                                回送给客户端

                                                        4. get方法http报文没有请求体

                                                        5. 浏览器对地址的字符长度有限制,各自标准不同,一般

                                                                不超过1024个字符,传输的数据量比较大时不宜使用GET

                                                        5. 如 /index.php?id=100&slec=yes

                                                post

                                                        传输的数据封装在报文的请求体,对传输的数据大小没有限制

                                                         可以传大量的数据,比较私密和安全。

                                   (2)URL

                                   (3)HTTP协议版本

                       如  GET /index.php HTTP/1.1

                        GET是请求方法,/index.php是URL,HTTP/1.1表示HTTP版本为1.1

                        请求头

                                告知服务器所有有关于客户端请求的信息

                                组成:键值对(key : value)

                             常用

                                 Accept:客户端可识别的内容类型列

                                               text/html,application/xhtml+xml,application/xml

                                Accept-Encoding:客户端可接受的编码压缩格式 gzip, deflate, br

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

                                               zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;

                                Connection:连接方式

                                        close(完成连接后断开)、keep-alive(和服务器连接持续有效,

                                        如有后续请求可直接http正文传输,避免建立或重新建立连接)

                                Cookie:存储客户端扩展字段,向同一域名服务端发送该域的cookie 

                                        PSTM=1490844191;                                                                                                         BIDUPSID=2145FF54639208435F60E1E165379255;

                                Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

                                User-Agent:用户电脑信息、浏览器信息等

                                               Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0)                                                Gecko/20100101 Firefox/93.0

                        空体

                                用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头

                        请求体

                                包含请求数据,使用GET方法时,没有请求体

        2.响应报文:

                2.1 服务端响应处理后回传给客户端的信号

                2.2 组成:

                        状态行

                                格式为:HTTP-Version Status-Code Reason-Phrase CRLF

                                HTTP-Version表示服务器HTTP协议的版本

                                Status-Code表示服务器发回的响应状态代码

                                Reason-Phrase表示状态代码的文本描述

                                状态代码由三位数字组成,第一个数字定义响应的类别,有五种可能取值

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

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

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

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

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

                        各类型常见状态代码、状态描述的说明如下:

                                200 OK:客户端请求成功。

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

                                401 Unauthorized:请求未经授权,这个状态代码必须和WWW-

                                                                Authenticate报头域一起使用。

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

                                404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

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

                                503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间

                                                        后可能恢复正常,如:HTTP/1.1 200 OK(CRLF)

                        响应头

                                响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器

                                的信息和Request-URI进一步的信息

                                Server:包含处理请求的原始服务器的软件信息;

                                Date:服务器日期;

                                Content-Type:返回的资源类型 (MIME);

                                Connection:连接方式

                                        close:连接已经关闭;

                                        keep-alive:连接已保持,在等待本次连接的后续请求;

                                        Cache-Control:缓存控制;

                                Expires:设置过期时间;

                                Set-Cookie:设置 Cookie 信息。

                        空行

                                内容分割,表示以下不再是响应头的内容

                        响应正文

                                服务器返回给浏览器的响应信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值