首页 > 编程知识 正文

http协议请求报文,tcp报文分析

时间:2023-05-04 17:06:27 阅读:136695 作者:274

HTTP报文:这是在http APP应用程序之间发送的数据块。 这些数据块以文本格式的元信息开头,用于说明消息的内容和含义,后跟可选的数据部分。 这些消息在客户端、服务器和代理之间流动。

HTTP报文的流动方向:次的HTTP请求中,HTTP消息从“客户端”流向“代理”,然后流向“服务器”,服务器运行完成后,从“服务器”流向“代理”

报文的语法:所有HTTP消息可以分为两种类型,与请求报文和响应报文请求消息的基本消息结构基本相同,但只有第一行的语法不同。

3358 www.Sina.com /向web服务器请求操作

请求消息格式:

开始行: methodrequest-URLversion

头部:头

主体: entity-body

请求报文:向客户端返回请求的结果。

响应消息格式:

开始行: versionstatusreason-phrase

头部:头

主体: entity-body

响应报文:

1、方式(method ) :客户端希望服务器对资源执行的动作是GET、POST、HEAD等个别语言

2、请求URL(request-URL ) :为了直接与服务器交互,请求URL可以是资源的绝对路径,服务器可以假设其为URL的主机/端口

3、版本:用于消息的HTTP版本。 其格式: HTTP/主版本号.次版本号

4、状态代码(status-code ) :状态代码是3位数字,描述请求中发生的情况。 每个状态代码的第一位用于描述状态的一般类别。 例如,“成功”、“错误”

5 .原因短语(reason-phrase )数字状态码的可读版本,包括行结束序列之前的所有文本。 因为原因短语只对人类有意义,所以在应答行HTTP/1.0200NOTOK和HTTP/1.0200OK中,尽管原因短语的含义不同,但同样作为成功指示来处理

6、头部(header ) )可以有零个以上的头部,每个头部跟一个名字,冒号(: ),可选的空格、值,最后以空行(CRLF )结束,表示头部列表的结束和主体部分的开始

7 .实体的主体部分实体的主体部分包括一个由任意数据组成的块,并且并非所有消息都包括实体的主体部分,并且可能以一个CRLF结束。

下面是对各部分的简要描述:

HTTP消息的组成部分:描述消息的展示一些假想的请求和响应报文:、包含属性的起始行、以及可选地包含数据的头部块

1、主体部分所有HTTP消息从一个开头行开始。 消息的第一行说明了要做什么。 响应消息的第一行指示发生了什么。

请求消息的第一行:该行包含方法和请求的URL以及HTTP的版本。

回应消息的第一行:该行包含回应消息中使用的HTTP版本、数字状态代码和原因短语。

2、起始行:HTTP报头字段在请求和响应消息中添加了一些附加信息。 本质上,这些只是名称/值对的列表。 标头和协议协同工作,以确定客户端和服务器可以做什么。

头部分类:

头部:既出现在请求消息中也出现在响应消息中,提供有关消息的最基本信息

Connection :允许客户端和服务器为连接请求/响应指定选项

Date :提供日期和时间标志,指示何时创建消息

MIME-Version :指示发送方要使用的MIME版本

Trailer :消息采用块传送编码方式时,可以用此标题列举消息连接部分的标题集合

Transfer-Encoding :为了保证消息的可靠传输,告知接收方消息采用了什么样的编码方式

Update :表示发送方可能希望“升级”使用的新版本或协议

Via:显示了报文经过的中间节点(代理、网关)

Cache-Control:用于随报文传送缓存指示

 

请求头部:请求头部是只在请求报文中有意义的头部。用于说明是谁或什么在发送请求、请求源自何处,或者客户端的喜好及能力

Client-IP:提供了运行客户端的机器的IP地址

From:提供了客户端用户的E-mail地址

Host:给出了接收请求的服务器的主机名和端口号

Referer:提供了包含当前请求URI的文档的URL

UA-Color:提供了与客户端显示器的显示颜色有关的信息

UA-CPU:给出了客户端CPU的类型或制造商

UA-OS:给出了运行在客户端机器上的操作系统名称及版本

UA-Pixels:提供了客户端显示器的像素信息

User-Agent:将发起请求的应用程序名称告知服务器       

Accept:告诉服务器能够发送哪些媒体类型

Accept-Charset:告诉服务器能够发送哪些字符集

Accept-Encoding:告诉服务器能够发送哪些编码方式

Accept-Language:告诉服务器能够发送哪些语言

TE:告诉服务器可以使用那些扩展传输编码

Expect:允许客户端列出某请求所要求的服务器行为

Range:如果服务器支持范围请求,就请求资源的指定范围

If-Match:如果实体标记与文档当前的实体标记相匹配,就获取这份文档

If-Modified-Sinec:除非在某个指定的日期之后资源被修改过,否则就限制这个请求

If-None-Match:如果提供的实体标记与当前文档的实体标记不相符,就获取文档

If-Range:允许对文档的某个范围进行条件请求

If-Unmodified-Since:除非在某个指定日期之后资源没有被修改过,否则就限制这个请求

Authorization:包含了客户端提供给服务器,以便对其自身进行认证的数据

Cookie:客户端用它向服务器传送数据

Cookie2:用来说明请求端支持的cookie版本

Max-Forward:在通往源端服务器的路径上,将请求转发给其他代理或网关的最大次数

Proxy-Authorization:这个首部在与代理进行认证时使用的

Proxy-Connection:这个首部是在与代理建立连接时使用的

 

响应头部:响应头部为客户端提供了一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特殊指令

Age:(从最初创建开始)响应持续时间

Public:服务器为其资源支持的请求方法列表

Retry-After:如果资源不可用的话,在此日期或时间重试

Server:服务器应用程序软件的名称和版本

Title:对HTML文档来说,就是HTML文档的源端给出的标题

Warning:比原因短语更详细一些的警告报文

Accept-Ranges:对此资源来说,服务器可接受的范围类型

Vary:服务器会根据这些首部的内容挑选出最适合的资源版本发送给客户端

Proxy-Authenticate:来自代理的对客户端的质询列表

Set-Cookie:在客户端设置数据,以便服务器对客户端进行标识

Set-Cookie2:与Set-Cookie类似

WWW-Authenticate:来自服务器的对客户端的质询列表

 

实体首部:描述主体的长度和内容,或者资源自身

Allow:列出了可以对此实体执行的请求方法

Location:告知客户端实体实际上位于何处,用于将接收端定向到资源的位置(URL)上去

Content-Base:解析主体中的相对URL时使用的基础URL

Content-Encoding:对主体执行的任意编码方式

Content-Language:理解主体时最适宜使用的自然语言

Content-Length:主体的长度

Content-Location:资源实际所处的位置

Content-MD5:主体的MD5校验和

Content-Range:在整个资源中此实体表示的字节范围

Content-Type:这个主体的对象类型

ETag:与此实体相关的实体标记

Expires:实体不再有效,要从原始的源端再次获取实体的日期和时间

Last-Modified:这个实体最后一次被修改的日期和时间

 

扩展首部:规范中没有定义的新首部,开发者可以自定义一个首部的值/对

 

3、实体的主体部分:该部分其实就是HTTP要传输的内容,是可选的。HTTP报文可以承载很多类型的数字数据,比如,图片、视频、HTML文档电子邮件、软件应用程序等等。

 

HTTP方法:并不是每个服务器都实现了所有的方法。即使服务器实现了所有这些方法,这些方法的使用很可能也是受限的。例如,支持DELETE方法或PUT方法的服务器可能并不希望任何人都能够删除或存储资源,这些限制通常都是在服务器的配置中进行设置的。

常用的HTTP方法:

GET方法:通常用于请求服务器发送某个资源。不包含主体

HEAD方法:与GET方法类似,但服务器在响应中只返回首部,使用HEAD方法可以,在不获取资源的情况下了解资源的情况(比如,判断其类型);通过查看响应中的状态码,看看某个对象是否存在;通过查看首部,测试资源是否被修改了;不包含主体

POST方法:该方法是用来向服务器发送数据的,常用于HTML表单,包含主体

PUT方法:该方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,如果那个URL已经存在的话,就用这个主体来替代它。包含主体

TRACE方法:主要用于验证请求是否如愿穿过了请求/响应链,不包含主体

OPTIONS方法:决定可以在服务器上执行那些方法,不包含主体

DELETE方法:该方法就是请服务器删除请求URL所指定的资源,但是客户端应用程序无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通知客户端的情况下撤销请求,不包含主体

扩展方法:指的是没有在HTTP/1.1规范中定义的方法,这些方法为开发者提供了一种扩展这些HTTP服务能力的手段。

 

状态码:HTTP状态码被分成了五大类。状态码为客户端提供了一种理解事务处理结果的便捷方式。

1、100~199(信息性状态码):HTTP/1.1向协议中引入了信息性状态码

2、200~299(成功状态码):客户端发起请求时,这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求

3、300~399(重定向状态码):重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容

4、400~499(客户端错误状态码):有时客户端会发送一些服务器无法处理的东西。浏览网页时,我们都看到过臭名昭著的404 Not Found错误码,这只是服务器在告诉我们,它对我们请求的资源一无所知

5、500~599(服务器错误状态码):有时客户端发送了一条有效请求,服务器自身却出错了,这些会返回5xx状态码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。