概述
Web浏览器,服务器和相关的Web应用程序都是通过HTTP进行相互通信的。HTTP是现代全球因特网中使用的公共语音。(嗯,就像全世界都学东北话。手动滑稽)。
HTTP(HyperText Transfer Protocol,超文本传输协议) 是访问万维网使用的核心协议,也是我们日常看各种网页时由浏览器向Web服务器发送的资源请求。
HTTP是使用有状态的TCP协议作为它的传输机制,但每次的请求与响应交换都是自动完成的,并且可能使用不同的TCP连接。
请求流程
他的基本流程就是像下图。当然,这过程中服务器端的身份验证以及其他过程我就不在这里继续描述了哈。
我们向服务器发送的就是HTTP请求。
URL
而我们向服务器发送的http://www.XXX.org.com/index.html 称为URL(统一资源标识符)通过URL,我们可以准确的定位连接在互联网中每一台服务器的所有公开资源的绝对位置。
这时候,问题就来了,这个/index.html我知道,是我想看的文件,但www.XXX.org.com这个网址是什么鬼东西,我们也没有呀?
事实上,我们在将服务器连接到互联网的时候,会向网络运营商申请一个IP地址。家庭用户申请的一般是动态IP,这是因为IPv4地址资源紧张,而采取的权衡之策。而想要搭建一台可以在网络上访问的服务器一般是申请一个固定的IP。比如百度的ip是:220.181.38.149。
这个时候,我们就需要到域名商那里购买未经使用的域名以及域名解析服务。在域名服务商那里,将自己所购买的域名与本机服务器的IP地址进行绑定。这样我们就可以通过访问自己购买的类似www.XXX.org.com的网址去访问自己的服务器。
请求报文
好的,我们言归正传,下面这是我拦截到的一个由浏览器向服务器发送的HTTP请求报文内容:
这里面,我们可以看见有许多不同的字段。下面我就为大家一一讲解一下这些字段的功能。
- 第一行Host字段 :
该字段表示我们使用的是HTTP协议中的哪一个方法,每一个方法都有不同的功能和特点:
常用的方法如下:
第一行www.XXX.com字段:
该字段表示我们发送请求的资源位置URL(/协议类型/协议版本号);例www.baidu.com/index.com/HTTP/1.0
2.第二行connection:close字段
该字段可以承载三种不同类型的标签:
HTTP首部字段名,列出了只与此连接有关的首部。
任意标签值,用于描述此连接的非标准选项。
值(close),表示的是TCP连接是否关闭。HTTP数据传输采用的TCP三次握手协议。
如果值为close,则该次传输数据结束关闭TCP连接。下次传输数据,要重新进行三次握手。
如果值为默认的keep-alive,则保持数据通道,下次数据传输可以直接传递,省去三次握手的过程。
一般我们只用值close来控制TCP连接状态,其他两字段理解就更好了。
3.第三行Upgrade-Insecure-Requests:1字段
该字段用于http和https格式的过渡,一般如果请求http时,服务器资源为https,或是相反,浏览器会提示或报错。而Google浏览器使用该字段向服务器表明,浏览器本身可以将http转换成https,服务器可以随意发。浏览器会自动将http://该成https://。该字段理解即可。
4.第四行 User-Agent:巴拉巴拉。。。字段
该字段表示用户Agent代理,即用户发出HTTP请求的客户端程序(例:浏览器Mozilla/5.0版本,Chrome/65.0.3314.0版本,spider爬虫,Web robot等),
5.第六行Accept:text/html 巴拉巴拉。。。字段
该字段代表客户端希望接受的文件类型。后面的q=0.9(0<q<1)代表权重系数,越大表示越期待。
6.第七行Accept-Encoding:gzip,deflate字段
该字段表示浏览器支持的编码类型。
7.第八行Accept-language:zh-CN,zh;q=0.9字段
该字段表示浏览器支持的语言为简体中文和中文,优先支持简体中文。
8.第九行Cookie字段
该字段表示服务器与客户端之间相互认证身份的信息,其中包含的内容,这里就不进行详细讲解了哈。
△未显示在报文中的部分字段:
9.Referer:[网址]
该字段为显示访问本网页时的源网页地址,例如打开百度点击百度学术对https://xueshu.baidu.com/网页访问时,可以看见,Referer为进入百度学术的前一界面:www.baidu.com
10.X_FORWARDED_FOR:[IP地址]
该字段为负载均衡的地址,服务器接收该报文字段,会自动将该报文认为由该字段IP地址进行访问的。例如X-FORWARDED-FOR:127.0.0.1,则服务器将默认任务该报文来自本地。
响应报文
这是一个正常访问百度得到的响应报文。
1.第一行HTTP/1.1 200 OK字段
该字段表示使用HTTP协议进行传输的,其中协议版本号为1.1。请求状态码为200 OK。
常见状态码如下:
2.第二行Bdpagetype:2以及第三行Bdqid: 0xe7af35f10000704c为百度服务器定义的特定值,功能不介绍了哈。
3.第四行Cache-Control: private 字段
该字段表示是否对数据进行缓存。如下:
4.第五行Content-Type: text/html;charset=utf-8字段
该字段表明传输资源的文件类型和编码类型。
5.第六行Date: Wed, 25 Mar 2020 07:13:07 GMT字段
该字段表明资源的发送时间
6.第七行Expires: Wed, 25 Mar 2020 07:13:07 GMT字段
该字段表明资源过期时间
7.第八行Server: BWS/1.1字段
该字段表示服务器的系统版本,其中BWS为百度自有服务器(Baidu Web Server)。
8.第九行至第十一行的Set-Cookie:字段
该字段为服务器与客户端验证身份的信息,该信息不做详细介绍了哈。其中path=/; domain=.baidu.com为域名判断条件,如果满足该条件,才可以向服务器发送cookie。
9.第十三行Strict-Transport-Security: max-age=172800字段
该字段表明应该使用https安全传输,防止在浏览器默认http请求和服务器https资源之间进行转换的时候,遭受中间人攻击。浏览器收到该条响应字段,会在max-age秒之内自动将http转换成https的安全访问形式,过期后会重复之前的步骤。
10.第十六行:connection:close字段
同发送报文
11.第十七行:Content-Length: 289466字段
该字段表示响应报文长度
下方为响应报文的正文部分,即我们之前请求的index.html的具体内容。
今天的文章HTTP请求方式_arp报文格式详解「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68000.html