selectorHTTPiOS网络

HTTP协议浅析

2015-10-02  本文已影响539人  龙城九哥

� 应用范围

Web的应用层协议是Http.
Http协议并不规定浏览器如何解析HTML页面,仅仅是制定了Http客户机与Http服务器之间的数据传输规则。
用户可以通过设置浏览器来控制并行连接数。大部分浏览器默认开启5~10个连接数。每个连接处理一个请求——响应事物。

实现

Http由两部分程序实现:一个Client程序和一个Server程序
这两部分程序运行于不同的端系统中,通过交换HTTP报文进行会话。�
HTTP制定了报文的格式以及报文的交换过程。
Web浏览器实现了Http协议的客户端部分。Web服务器实现了HTTP协议的服务端部分。
流行的Web服务器有Apache 和 Microsoft IIS

Http协议的下层协议

Http的下层(传输层)支撑协议是TCP,而不是UDP。

Http是无状态协议

连接方式

RTT

从客户机请求HTML页面开始到用户端进程接收到完整的HTML页面为止的整个往返时间(Round-Trip Time)

TCP三次握手

1.客户机向服务器发送一个小的TCP报文段
2.服务器用一个小的TCP报文段作出确认和响应
3.客户机向服务器返回确认
一个RTT等于三次握手中前两部分消耗的时间。
完成三次握手的前两部分以后,客户机将三次握手第三个部分与一个Http请求报文结合起来发送到该TCP连接。
一旦请求到达TCP服务器,服务器向该TCP连接发送HTML文件。该Http请求又耗掉一个RTT.

Http报文格式

[RFC 2616]定了HTTP报文格式。
Http报文格式共有两种:

   GET /somedir/page.html HTTP/1.1
   HOST: www.someschool.edu
   connection:close
   User-agent:Mozilla/4.0
   Accept-language:fr

说明:
1.此报文格式第一行被称作请求行
2.请求行的第一个字段是方法字段 用于指定发送请求的方法,这里的方法是GET,
还有其他方法如POST HEAD PUT DELETE
3.绝大多数HTTP请求使用GET方法
4.在URL字段填写请求对象的URL
5.最后一个字段指定了浏览器实现的HTTP协议的版本,这里是1.1版本
6.第二行指定了目的主机
7.User-agent这一行用来指定用户代理,即向服务器发送请求的浏览器类型,这一行可以帮助服务器为不同类型的浏览器返回不同版本的对象。
8.最后一行指定了对象的法语版本,如果服务器中有这样的对象,否则使用服务器的默认版本
9.首部行之后是实体主体。使用GET方法时,实体主体为空,使用POST方法时实体主体才有内容。

  HTTP/1.1 200 OK  // 初始化状态行
  Connection:close // 报文发送完成之后关闭了TCP连接
  Date:Thu, 03 Jul 2003 12:00:15 GMT // 从服务器文件系统中检索到文件并加入到响应报文开始发送的时间
  Server:Apache/1.3.0 (Unix) // 服务器类型
  Last-Modified:Sun, 6 May 2007 09:23:24 GMT // 对象创建或者最后修改的时间
  Content-Length:6821 // 被发送对象的字节数
  Content-Type:text/html // 对象的类型
  (data data data) // 实体主体

示例1:
请求命令:

    telnet cis.poly.edu 80
    GET /~ross/ HTTP/1.1
    Host:cis.poly.edu

响应报文:

    HTTP/1.1 301 Moved Permanently
    Date: Thu, 01 Oct 2015 02:31:56 GMT
    Server: Apache/1.3.41 (Unix) mod_perl/1.31
    Location: http://nyu.edu/projects/keithwross/
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=iso-8859-1
    
    ef 
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <HTML><HEAD>
    <TITLE>301 Moved Permanently</TITLE>
    </HEAD><BODY>
    <H1>Moved Permanently</H1>
    The document has moved <A HREF="http://nyu.edu/projects/keithwross/">here</A>.<P>
    </BODY></HTML>
    
    0
    
    Connection closed by foreign host.

示例2:
请求命令:

    telnet cis.poly.edu 80
    HEAD /banana/ HTTP/1.1
    Host:cis.poly.edu

响应报文:

    HTTP/1.1 404 Not Found
    Date: Thu, 01 Oct 2015 02:37:03 GMT
    Server: Apache/1.3.41 (Unix) mod_perl/1.31
    Content-Type: text/html; charset=iso-8859-1
    Connection closed by foreign host.

Cookie

Web缓存

条件GET

上一篇下一篇

猜你喜欢

热点阅读