您的位置:首页 > 理论基础 > 计算机网络

http协议学习笔记

2011-03-26 12:15 501 查看
本文转载自:http://bbs.linuxtone.org/thread-9153-1-1.html

1.简介

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

a.所有的WWW文件都必须遵守这个标准。

b.http一般是基于tcp的,但只要能保证是可靠的传输,http可以基于其他协议。

c.目前版本是http1.1。http1.1具有持续连接的功能;http1.1允许客户端可以选择要求从服务器下载压缩内容(gzip)。

2.http请求流程

HTTP是一个客户端和服务器端请求和应答的标准,如下图所示:



2011-3-8 16:14 上传
下载附件 (20.83 KB)

a.客户端向服务端发起连接(tcp);

b.建立连接后客户端向服务端发送http请求;

c.服务器对客服端的http请求进行处理,并返回相关内容;

d.可以继续进行第2次请求、响应。(也可以连续发送请求,http持续连接功能)

f.最后服务端关闭连接。

——————————————————————————————————————————

3.http消息

http消息包括请求消息和响应消息,格式:开始行+消息报头(可选)+空行+消息正文(可选)

1)http请求消息由3部分组成:请求行、消息报头、请求正文。一个典型的请求消息如下:

GET /test.html HTTP/1.1

Accept: text/html

Cache-Control: no-cache

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)

常用请求方法:GET(浏览器输入网址就是用GET方法);POST(一般用在表单提交数据时);HEAD(与GET同,不过只请求消息报头,不会返回响应正文。通常用来测试是否可以访问,是否有更新)

2)http响应消息:状态行,消息报头、响应正文(资源内容),一个典型的响应消息如下所示:

HTTP/1.1 200 OK

Date: Sun, 12 Dec 2010 18:09:04 GMT

Server: BWS/1.0

Content-Length: 6222

Content-Type: text/html;charset=gb2312

Cache-Control: private

Expires: Sun, 12 Dec 2010 18:09:04 GMT

-

3)返回状态及常见的状态码

1xx:指示信息–表示请求已经接收,继续处理

2xx:成功–表示请求已经被成功接收、理解、接受

3xx:重定向–表示要完成请求必须更进一步的操作

4xx:客户端错误–表示请求的语法有错误或者请求无法实现

5xx:服务端错误–表示服务器未能实现合法的请求

常见的状态码:

200 OK 表示客户端请求成功。

400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解

401 Unauthorized 请求未经授权

403 Forbidden 服务器收到请求,但是拒绝提供服务,服务器通常会在相应正文中给出不提供服务的原因

404 Not Found 请求资源不存在,例如输入错误的URL

500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客服端的请求

503 Service Unavailable 服务器当前不能够处理客户端请求,在一段时间之后,服务器可能会恢复正常

-

4)消息报头

a.通用报头域:

Cache-Control头域:Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令no-

cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-

revalidate、max-age。

Date头域 :Date头域表示消息产生的日期和时间,可用于http请求和响应中,所有的响应都包含Date头域,但只有包括请求正文的请求才有Date头域。

pragma头域 :Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache

b.请求报头域:

Accept: text/html

Accept-Encoding: gzip

Accept-Charset:gb2312

Authorization:

Host: www.yunhaozou.org

User-Agent: 操作系统版本/浏览器版本/其他信息

c.响应报头:

Location: 重定向到一个新的位置

Server:包含了服务器用来处理请求的软件信息,与User-Agent对应

WWW-Authenticate:被包含在401响应消息中,与Authorization对应

d.实体报头:实体报头(实体正文的元信息)+实体正文(请求正文、响应正文)

Conten-Encoding:gzip

Content-Language:

Content-Length:

Last-Modified:

——————————————————————————————————————————

4.模拟http请求实验

打开“运行”->输入“cmd”->输入“telnet www.163.com 80”->回车->“Ctrl+]”打开本地回显->回车->输入“HEAD /index.html HTTP/1.1”->回车->输入“HOST: www.163.com”->回

车->回车

HEAD /index.html HTTP/1.1

HOST: www.163.com

-

HTTP/1.1 200 OK

Server: nginx

Content-Type: text/html; charset=GBK

Transfer-Encoding: chunked

Vary: Accept-Encoding

Expires: Sun, 12 Dec 2010 18:33:12 GMT

Cache-Control: max-age=120

X-Via: 1.1 zb71:8103 (Cdn Cache Server V2.0), 1.1 jxq205:8102 (Cdn Cache ServerV2.0)

Connection: keep-alive

Date: Sun, 12 Dec 2010 18:31:13 GMT

——————————————————————————————————————————

5.对4实验中“Cache-Control: max-age=120”的理解

Cache-Control: max-age=120表示浏览器将会把这个http请求的响应的内容写入临时目录做cache,并且保持时间为120秒。

1)浏览器第一访问http://www.163.com/index.html

a.首先查询临时文件目录发现无cache存储

b.发出http请求到163 WEB服务器

c.163 WEB服务器响应http请求(其中设定Cache-Control: max-age=120)

d.浏览器收到响应将资源呈现给用户,并在临时文件目录以”http://www.163.com/index.html”为key缓存这个响应

2)再次访问http://www.163.com/index.html

a.查询临时文件目录发现存在cache存储

b.检查保鲜期max-age

c.若还未过期,则直接读取之,响应给用户

d.若已经过期,则发请求到web server

——————————————————————————————————————————

6.从浏览器输入http://yunhaozou.org/显示网页的过程分析

(参考文档/article/4823778.html

1)浏览器输入http://yunhaozou.org/

2)浏览器查找域名对应的IP

a.从浏览器缓存查找(浏览器会缓存DNS记录一段时间,2分钟-30分钟不等)

b.从系统缓存查找(浏览器进行一个系统调用获得系统缓存中的记录,windows里是gethostbyname)

c.从路由器缓存里查找

d.从ISP DNS缓存中查找

e.递归搜索(ISP服务器从根域名进行递归搜索,直到找到域名对应的IP)

3)浏览器给WEB服务器发送一个http请求

4)服务器处理请求(生成html)

5)服务器发回一个HTML响应

6)浏览器开始显示HTML

7)浏览器发送获取嵌入在HTML中的对象(如图片/CSS/JS等)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: