Http协议 详解

1.Http  URL  分析  

  Http   超文本传输协议     是一个基于请求和响应模式的、无状态、应用层协议,基于TCP/IP协议
html

  Http1.1 版本是对Http1.0的改进,支持长链接。     web

   Http URL 格式以下:
        http://host[":"port][path]
        ---http  经过http协议定位网络资源    也能够是FTP 协议
        ----host  合法的Internet主机域名或者IP 
        ----port  指定的服务器端口  默认80   
        ---path  请求资源的URI地址    若是URL没有给出path,浏览器默认会为请求URL 添加上“/”


2. Http 请求分析     
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie: BDUSS=dmNjE0Sm9CUHlEUkRDNVl1elVHVXUwaEV6M1lQclZBYndGMENzdzVCWTA5VWxXQVFBQUFBJCQAAAAAAAAAAAEAAAAVQwYpYmFpYnV4aWhhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRoIlY0aCJWNj;
Http请求分为3个部分:请求行、消息报文、请求正文

     GET / HTTP/1.1  ---请求行  格式 Method     Request-URI HTTP-Version 算法

   method ---请求方法   Request-URI  请求资源定位符    HTTP-Version 请求HTTP协议版本;浏览器

   method---所有大写,包括以下方法:缓存

   GET  获取Request-URI所标识的资源;服务器

   POST   在 Request-URI所标识的资源附加新数据。实际上,一般会用它来支持HTML的表单。表单中填好的数据一般会被    发送给服务器,而后服务器将其发送到他要去的地方。网络

   HEAD  请求获取Request-URI所标识的资源的响应消息报头  app

                  HEAD方法与GET方法的行为很相似,但服务器在响应中只返回首部。不会反回实体的主体部分。这就容许             客户端在未获取实际资源的状况下,对资源的首部进行检查。做用:性能

            在不获取资源的状况下,了解资源的状况测试

            经过查看响应中的状态码,看看某个对象是否存在

            经过查看首部,测试资源是否被修改

            服务器开发者必须确保返回的首部与GET请求返回的首部彻底相同

    PUT     请求服务器存储一个资源,并用Request-URI做为其标识

    DELETE  请求服务器删除Request-URI所标识的资源
    TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断
    CONNECT 保留未来使用
    OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求


消息报文:

Connection: keep-alive  ----客户端发起长链接   keepalive 在不少状况下可以重用链接,减小资源消耗,缩短响应时间。Connection普通报头域容许发送指定链接的选项。例如指定链接是连续,或者指定“close”选项,通知服务器,在响应完成后,关闭链接Pragma: no-cache   

Cache-Control: no-cache     ---用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另外一个消息处理的缓存机制),HTTP1.0使用的相似的报头域为Pragma。    

     请求时的缓存指令包括: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、s-maxage.Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

---请求报头域用于指定客户端接受哪些类型的信息    

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 

Chrome/44.0.2403.125 Safari/537.36

-------,它是一个特殊字符串头,使得服务器可以识别客户使用的操做系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站经常经过判断 UA 来给不一样的操做系统、不一样的浏览器发送不一样的页面,所以可能形成某些页面没法在某个浏览器中正常显示,但经过假装 UA 能够绕过检测。DNT: 1   ----禁止追踪Accept-Encoding: gzip, deflate, sdch ----请求报头域相似于Accept,可是它是用于指定可接受的内容编码。若是请求消息中没有设置这个域服务器假定客户端对各类内容编码均可以接受。 gzip, deflate 内容压缩 Google最近发明的HTTP压缩算法SDCHAccept-Language: zh-CN,zh;q=0.8

---请求报头域相似于Accept,可是它是用于指定一种天然语言。若是请求消息中没有设置这个报头域,服务器假定客户端对各类语言均可以接受。Cookie:

--- 浏览器 保存当前域名的信息

Host: www.baidu.com 

----- 请求报头域主要用于指定被请求资源的Internet主机和端口号

Referer:  https://www.baidu.com/link?

---告诉服务器我是从哪一个页面连接过来的,服务器籍此能够得到一些信息用于处理。(能够用于防止盗链)

3. Http 响应  分为3部分  状态行、消息报文、响应内容      
   HTTP/1.1 200 OK    ---状态行
        Date: Tue, 08 Dec 2015 05:13:27 GMT ---- 普通报头域表示消息产生的日期和时间
    Content-Type: text/html; charset=utf-8

   ----指明发送给接收者的实体正文的媒体类

   Transfer-Encoding: chunked 

    -----表示输出的内容长度不能肯定    Expires: Tue, 08 Dec 2015 05:13:38 GMT

   ----缓存失效时间    Last-Modified: Tue, 08 Dec 2015 05:13:28 GMT

   ---请求资源服务器最后一次修改时间    X-UA-Compatible: IE=10

   ----指定浏览器 兼容模式

  Content-Length: 23330

    ---请求资源大小

相关文章
相关标签/搜索