进一步详细了解HTTP数据包各个字段的含义

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 [9]  消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

首先我们来抓取一个数据包

 

 GET/HTTP/1.1

请求行

请求行由三个标记组成:请求方法,请求URL和HTTP版本,它们用空格来分割

例如:

GET /index.html HTTP/1.1

(URL:在WWW上,每一信息资源都有统一的且在网上的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址。

URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。

也可认为由4部分组成:协议、主机、端口、路径

URL的一般语法格式为:protocol :// hostname[:port] / path / [:parameters][?query]#fragment

)

HTTP 规划定义了8种可能的请求方法:

GET:检索URL中标识资源的一个简单请求

HEAD: 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档

POST:服务器接受被写入客户端输出流中的数据的请求

PUT: 服务器保存请求数据作为指定URL新内容的请求

DELETE: 服务器删除URL中命令的资源的请求

OPTIONS:关于服务器支持的请求方法信息的请求

TRACE: web服务器反馈Http请求和其头标的请求

CONNECT: 已文档化,但当前未实现的一个方法,预做隧道处理

Host:www.baidu.com

客户端指定自己想访问的http的服务器的域名/IP地址和端口号

Connection:close

当客户机(client)和服务器 (server) 通信时对于长链接如何进行处理。

在http1.1中,client和server都是默认对方支持长链接的,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方 也不想支持长链接,则在response中也需要明确说明connection的值为close.

不论requesti还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接

Cache-Control:max-age=0

http缓存

no-cache: 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验。cache-control

maxage>0:直接从游览器缓存中提取

max-age<=0 :向server 发送http 请求确认 ,该资源是否有修改有的话,返回200无的话 返回304.

Upgrade-Insecure-Requests:1

告诉服务器,自己支持这种操作,也就是我能读懂你服务器发过来的这上面的这条信息,并且在以后发请求的时候不用http而用https(若是0则只能使用http协议)

另外:https与http的差异:

http的url由"http://"起始且默认使用端口80

https的url由"https://"起始且默认使用端口443

upgrade-insecure-requests:升级不安全请求

User-Agent: Mozilla/5.0 Windows NT 10.0: Win64:x64

User-Agent会告诉网站服务器,访问者是通过什么工具来请求的,如果是爬虫请求,一般都会拒绝,如果是用户浏览器,就会应答。

Accept:text/html,application/xhtml+xml,application/xml;

Accept : 浏览器接受的响应格式
text/html : HTML格式
text/plain:纯文本格式
text/xml: XML格式
image/gif : gif图片格式
image/jpeg: jpg图片格式
image/png: png图片格式
application/xhtml+xml:XHTML系列文档的类型

Accept-Encoding:gzip,deflate

普通浏览器访问页面,之所以添加Accept-Encoding:gzip,deflate,那是因为,浏览器对于服务器中返回的对应的gzip压缩的网页,会自动解压缩,所以,其request的时候,添加对应的头,表明自己接受压缩后的数据,而在没有解压缩的代码中,如果也添加此头信息,那么返回的就是压缩后的数据,没有解码,而将压缩后的数据当作普通的文本来处理,当前显示出来的内容,就是乱码了。

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

浏览器支持的语言分别是简体中文和中文,优先支持简体中文。

Accept-Language表示浏览器所支持的语言类型;

zh-cn表示简体中文;zh 表示中文

q是权重系数,范围 0< q <= 1, 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。
 

Cookie

web程序基于http协议,http协议本身是无状态的

那么你两次访问一个页面的时候
服务器怎么认识是张三还是李四呢
这时候就用到了cookie
他就像是个凭据
这也是cookie最主要的作用
其他的一些数据也可以保存在里面

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪亚波罗#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值