HTTP协议

HTTP

HTTP协议是什么

1,Hyper Text Transfer Protocol (超文本传输协议)
实际上这个协议传输的数据是用超链接组成的,可以传输的不仅仅有文本,音频图片也行

2,用于从万维网(即www.)服务器传输超文本到本地浏览器的传送协议
(服务器简单理解就是一台电脑)

3,HTTP协议是基于TCP的应用层协议,他不关心数据传输的细节,主要是用来 规定客户端和服务器端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口号是 80

4,特点:HTTP是基于请求与响应模式的、无状态的、应用层的协议

工作原理

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:
1,客户与服务器建立连接;
2,客户向服务器提出请求;
3,服务器接受请求,并根据请求返回相应的文件作为应答;
4,客户与服务器关闭连接。

客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。这种一次性连接主要考虑到WWW服务器面向的是Internet中成千上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。

HTTP支持持久连接,在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中,引入了保持活动机制,其中连接可以重用于多个请求。这样的持久性连接可以明显减少请求延迟,因为在发送第一个请求之后,客户端不需要重新协商TCP 3-Way-Handshake连接。另一个积极的副作用是,通常,由于TCP的缓慢启动机制,连接随着时间的推移而变得更快。

该协议的1.1版还对HTTP / 1.0进行了带宽优化改进。例如,HTTP / 1.1引入了分块传输编码,以允许流传输而不是缓冲持久连接上的内容。HTTP流水线进一步减少了延迟时间,允许客户端在等待每个响应之前发送多个请求。协议的另一项附加功能是字节服务,即服务器仅传输客户端明确请求的资源部分。

从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

HTTP规范定义了9种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

HTTP的报文格式

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。

(完整版:)

请求报文格式如下:
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以CRLF结尾。SP是分隔符。除了在最后的CRLF序列中CF和LF是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。

应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。

HTTP请求报文

(入门版:)
HTTP请求报文主要是由请求行、请求头部、空一行、请求正文(请求体)4部分组成
注:在这里插入图片描述注:get没有请求体。 请求体是一个参数,get请求把这个参数放在了url里
在这里插入图片描述
请求行

请求方法
在这里插入图片描述connect
写的不全,常用get和post

URL
Uniform Resource Locator:统一资源定位符
可以理解为描述网上资源的位置、路径
url格式:
protocol://hostname[:port]/website/path/ [file][?query-string][#fragment]
协议名://主机名:端口号/网站名称/目录/文件名?查询参数#信息片段

protocol:协议名称,比如http、ftp、file、gopher、https、mailto、news
hostname:主机名称,通常为机器名+域名+域树+域林(域名或者IP地址)
port:端口号,http的通常默认为8080,telnet默认为23,ftp默认为21,smtp默认为25,pop3默认为110,dns默认为53
website:网站名称,可以是web应用程序上下文、虚拟目录名、网站根目录、
path/file:目录/文件
?query-string:查询参数,可以是1和2
#fragment:信息片段,是一种网页描点

个人常见是 protocol://host[ :port# ]/path/…/[?query-string]
如:
https://search.bilibili.com/all?keyword=%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95&from_source=webtop_search&spm_id_from=333.1007

请求头:
以键值对出现

请求头描述
Host主机ip地址或域名
User-Agent客户端相关信息,如操作系统、浏览器信息
Accept指定客户端 接收信息类型,如:image/jpg,application/json, text/plain,text/html
Accept-Charset客户端可接受的字符集,如:gb2312
Accept-Encoding可接受的内容编码,如:gzip
Accept-Language接受的语言,如:Accept-Language:zh-cn
Authorization客户端提供给服务端,进行权限验证的信息(即授权,这是服务器给我们的一个令牌token,它发送给服务端之后,进行校验,合法的才会给客户端发送信息,返回响应)
Cookie携带的Cookie信息,里面可能会藏着会话id(session id)。它保存在客户端(如:浏览器)当中,然后请求再携带Cookie发送到服务器,和Authorization一样做一个接口的权限鉴定,从而确定此接口有无资格来请求对应的资源(里面可能会藏着会话id)
Referer当前文档的url,即从哪个链接过来的。(防盗链)
Content-Type请求体内容类型
Content-Length数据长度
Cache-Control缓存机制,如:Cache-Control:no-cache
Pragma防止页面被缓存,和Cache-Control:no-cache作用一样

HTTP响应报文

HTTP响应报文
(入门版:)
HTTP响应报文主要是由状态行、消息报头、空一行、响应正文(响应体)4部分组成
在这里插入图片描述响应体有可能没有
在这里插入图片描述
状态行:
状态码:
用以表示网页服务器HTTP响应状态的3位数字码
(简略版)
在这里插入图片描述
响应头:

响应头描述
ServerHTTP服务器的软件信息
Date响应报文的时间
Expires指定缓存过期时间
Set-Cookie种缓存(就是存Cookie,后续过程中接口要用)
Last-Modified资源最后修改时间
Content-Type响应的类型和字符集,如:application/x-javascript,charset=UTF-8
Content-length内容长度
Connection如:keep-alive,表示保持tcp连接不关闭(保留三次握手,避免网络资源浪费),不会永久保持连接,服务器可重置
Location指向重定向的位置,新的URL地址,如304的情况

状态消息:
(详细版)
1xx:信息

消息描述
100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。

2xx:成功

消息描述
200 OK请求成功(其后是对GET和POST请求的应答文档。)
201 Created请求被创建完成,同时新的资源被创建。
202 Accepted供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它。

3xx:重定向

消息描述
300 Multiple Choices多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently所请求的页面已经转移至新的url。
302 Found所请求的页面已经临时转移至新的url。
303 See Other所请求的页面可在别的url下被找到。
304 Not Modified未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取。
306 Unused此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 Temporary Redirect被请求的页面已经临时移至新的url。

4xx:客户端错误

消息描述
400 Bad Request服务器未能理解请求。
401 Unauthorized被请求的页面需要用户名和密码。
401.1登录失败。
401.2服务器配置导致登录失败。
401.3由于ACL对资源的限制而未获得授权。
401.4筛选器授权失败
401.5ISAPI/CGI应用程序授权失败。
401.7访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS 6.0所专用。
402 Payment Required此代码尚无法使用。
403 Forbidden对被请求页面的访问被禁止。
403.1执行访问被禁止。
403.2读访问被禁止。
403.3写访问被禁止。
403.4要求SSL。
403.5要求SSL 128。
403.6IP地址被拒绝。
403.7要求客户端证书。
403.8站点访问被拒绝
403.9用户数过多。
403.10配置无效。
403.11密码更改。
403.12拒绝访问映射表。
403.13客户端证书被吊销。
403.14拒绝目录列表。
403.15超出客户端访问许可。
403.16客户端证书不受信任或无效。
403.17客户端证书已过期或尚未生效。
403.18在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS 6.0所专用。
403.19不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS 6.0所专用。
403.20Passport登录失败。这个错误代码为IIS 6.0所专用。
404 Not Found服务器无法找到被请求的页面。
404.0(无)–没有找到文件或目录。
404.1无法在所请求的端口上访问Web站点。
404.2Web服务扩展锁定策略阻止本请求。
404.3MIME映射策略阻止本请求。
405 Method Not Allowed请求中指定的方法不被允许。
406 Not Acceptable服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout请求超出了服务器的等待时间。
409 Conflict由于冲突,请求无法被完成。
410 Gone被请求的页面不可用。
411 Length Required"Content-Length"未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type由于媒介类型不被支持,服务器不会接受请求。
416 Requested Range Not Satisfiable服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed执行失败。
423锁定的错误。

5xx:服务器错误

消息描述
500 Internal Server Error请求未完成。服务器遇到不可预知的情况。
500.12应用程序正忙于在Web服务器上重新启动。
500.13Web服务器太忙。
500.15不允许直接请求Global.asa。
500.16UNC授权凭据不正确。这个错误代码为IIS 6.0所专用。
500.18URL授权存储不能打开。这个错误代码为IIS 6.0所专用。
500.100内部ASP错误。
501 Not Implemented请求未完成。服务器不支持所请求的功能。
502 Bad Gateway请求未完成。服务器从上游服务器收到一个无效的响应。
502.1CGI应用程序超时。
502.2CGI应用程序出错。
503 Service Unavailable请求未完成。服务器临时过载或宕机。
504 Gateway Timeout网关超时。
505 HTTP Version Not Supported服务器不支持请求中指明的HTTP版本。

本文参考了教学录频,百度百科,csdn
本文不盈利,也禁止以盈利为目的的使用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值