Http数据包结构

超文本传输协议及HTTP包

HTTP协议用于在Internet上发送和接收消息。HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包。HTTP协议使用可靠的TCP连接,默认端口是80。HTTP的第一个版本是HTTP/0.9,后来发展到了HTTP/1.0,现在最新的版本是HTTP/1.1。HTTP/1.1由RFC 2616 定义。

在HTTP中,Client/Server之间的会话总是由客户端通过建立连接和发送HTTP请求包初始化,服务器不会主动联系客户端或要求与客户端建立连接。浏览器和服务器都可以随时中断连接,例如,在浏览网页时你可以随时点击"停止"按钮中断当前的文件下载过程,关闭与Web服务器的HTTP连接。 

1、HTTP请求包

HTTP请求包(GET、POST等请求方法)由三个部分构成,分别是:方法-URI-协议/版本,请求头,请求正文。下面是一个HTTP请求包(GET)的例子: 

GET /index.jsp HTTP/1.1

Accept-Language: zh-cn

Connection: Keep-Alive 

Host: 192.168.0.106

Content-Length: 37 

userName=new_andy&password=new_andy

请求包的第一行是方法-URI-协议/版本:

GET就是请求方法,根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP 1.1支持七种请求方法:GET、POST、HEAD、OPTIONS、PUT、delete和TRACE等,常用的为请求方法是GET和POST。

/index.jsp表示URI。URI指定了要访问的网络资源。

HTTP/1.1是协议和协议的版本。

最后一行userName=new_andy&password=new_andy为正文,正文与HTTP头部有一个空行(\r\n)分隔。这里需要说明的一点,其中Content-Length说明正文的长度,有的正文长度没有在头部说明,只是标明Transfer-Encoding: chunked。关于chunked类型的长度计算方法,见RFC 1626。

请求包的头部还会包含许多有关客户端环境和请求正文的有用信息,这里不再描述。

2、HTTP应答包

和HTTP请求包相似,由三个部分构成,分别是:协议-状态代码-描述,应答头,应答正文。下面是一个HTTP应答的例子: 

HTTP/1.1 200 OK

Server: Microsoft-IIS/4.0

Date: Mon, 3 Jan 2005 13:13:33 GMT

Content-Type: text/html

Last-Modified: Mon, 11 Jan 2004 13:23:42 GMT

Content-Length: 90

<html>

<head>

<title>解读HTTP包示例</title></head><body>

Hello WORLD!

</body>

</html>

HTTP应答包的第一行类似于HTTP请求的第一行,表示所用的协议是HTTP 1.1,服务器处理请求的状态码200。 

应答头也和请求头一样包含许多有用的信息,例如服务器类型、日期时间、内容类型和长度等。应答的正文就是服务器返回的HTML页面。应答头和正文之间也用CRLF分隔。 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 2,801评论 0 6
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,256评论 0 7
  • (原话)谈谈对HTTP协议的理解:超文本传输协议,应用于OSI网络模型中的应用层,是用于服务器传输超文本到本地浏览...
    24_yu阅读 933评论 0 1
  • 我今天可是想着复制的,但是巴特微博的文章没有办法全选复制,明天我先写在便签里,再粘贴到微博和简书上吧。也只能这样了...
    cherryharder阅读 239评论 0 2
  • 小时候我被外公外婆带大到8岁回到父母身边,打从记事起父亲就是疏远、不亲近的。印象中他最大的爱好是看书,兴致...
    小毛的前世今生阅读 645评论 0 2