linux高性能服务器编程学习笔记四:HTTP协议相关格式

来源:互联网 发布:淘宝客服有在家做的吗 编辑:程序博客网 时间:2024/05/18 00:34

1HTTP请求

GET http://www.baidu.com/index.htmlHTTP/1.0(请求行)

User-Agent: Wget/1.12 (linux-gnu)(头部字段)

Host:www.baidu.com(头部字段)

Connection:close(头部字段)

1GET为请求方法,表示客户端以只读的方式申请服务器的资源。常见的方法见下表


其中,HEADGETOPTIONSTRACE被视为安全的方法,因为它们只申请获取资源而不对服务器进行任何的修改;

另一方面,HEADGETOPTIONSTRACEPUTDELETE等请求方法被认为是等幂的,也就是多次连续的、重复的请求和只发送一次该请求具有完全相同的效果。而POST则不同,连续多次发送同样一个请求可能进一步影响服务器上的资源。

方法后面的网址是目标资源的URL。其中index.html指定资源文件的名称。

2User-Agent:Wget/1.12(linux-gnu)表示客户端使用的程序是wget

3HOST字段表示目标的主机名,主机名是www.baidu.com。注意:HTTP协议规定HTTP请求必须有HOST字段。

4Connection字段表示连接的类型,假如为close,表示处理完这个HTTP请求之后就关闭连接。假如为keep-alive,表示为长连接(可用netstat命令查看和web服务器的连接是否为长连接)。长连接就是一个TCP连接能够处理多个HTTP请求,而期间不用关闭连接再建立连接,因此减少了建立TCP连接导致的负荷。

注意,在所有头部字段之后必须有一个空行,空行标志者头部字段的结束。

5)头部字段之后就为可选的消息体,如果消息体非空,则HTTP请求的头部字段必须有Content-Length字段,描述消息体的长度。

2HTTP应答

HHTP/1.0 200 OK

ServerBWS/1.0

Content-Length:8024

Content-Type:text/html;charset = gbk

Set-Cookie:

Via:1.0 localhost (squid/3.0 STABLE18)

1)第一行是状态行。HTTP/1.0表示http协议的版本号。 200 OK是状态码和状态信息,200表示请求成功,常见的状态码和状态信息如下:

an lang=EN-US>Connection:close(头部字段)

1GET为请求方法,表示客户端以只读的方式申请服务器的资源。常见的方法见下表


(2)第2-7行是应答的头部字段。Server字段表示目标web服务器程序的名字为BWS(baidu web server)。Content-Length字段表示目标文档的长度为8024字节。Content-Type表示目标文档的字符编码等信息。Set-Cookie表示目标服务器使用cookie,传送一个cookie给客户端。Cookie的作用使得服务器能够识别不同的用户。http协议是一种无状态的协议,也就是说,每个HTTP请求之间没有任何的上下文关系。如果服务器处理后续的HTTP请求时需要用到前面的HTTP请求的相关信息,客户端还需要重传这些信息。这就导致HTTP请求必须传输更多的数据,而使用的cookie之后,客户端每次向服务器发送请求都需要带上服务器在Set-Cookie字段的给客户端的特殊信息(客户端发送利用Cookie字段)。这样服务器就能区分不同的客户,这对于交互式web应用程序尤其重要(通常需要承上启下)。Via字段表明HTTP应答在返回途中经历过的所有代理器服务器的地址和名称。类似于IP协议的记录路由功能。同样最后需要一个空行表示头部字段的终结。

(3)而空行之后就是申请的index.html资源的内容。
阅读全文
0 0
原创粉丝点击