超文本传输协议HTTP

1. 概念

    HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式和规则,它是万维网上能够可靠交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

2. HTTP的操作过程

    从协议执行过程来说,浏览器要访问WWW服务器时,首先要完成对WWW服务器的域名解析。一旦获得了服务器的IP地址,浏览器将通过TCP向服务器发送连接建立请求。

    万维网的大致工作过程如下图所示:


                                                                            图 1 万维网的工作过程

    每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立连接。TCP连接建立后,浏览器就向服务器发送请求获取某一Web页面的HTTP请求。服务器收到HTTP请求后,将构建所请求的Web页必需的信息,并通过HTTP响应返回给浏览器。浏览器再将信息进行解释,然后将Web页显示给用户。最后,TCP连接释放。

    在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则,这些格式和规则就是HTTP。因此HTTP有两类报文:

  • 请求报文:从Web客户端向Web服务器发送服务请求;
  • 响应报文:从Web服务器对Web客户端请求的回答;

当用户点击鼠标后所发生的时间顺序如下(以访问清华大学为例):

  1. 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/publish/thu2018/index.html);
  2. 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址;
  3. 域名系统DNS解析出清华大学服务器的IP地址;
  4. 浏览器与该服务器建立TCP连接(默认端口号80);
  5. 浏览器发出HTTP请求:GET /publish/thu2018/index.html
  6. 服务器通过HTTP响应把文件 index.html 发送给浏览器;
  7. TCP连接释放;
  8. 浏览器将文件 index.html 进行解释,并将Web页显示给用户;

3. 协议特点

    (1)HTTP协议是无状态的

    同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。

    (2)HTTP采用TCP作为运输层协议,保证了数据的可靠传输

    HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。

    (3)HTTP协议是无连接的

    虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

    (4)HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)

4. HTTP的报文结构

    HTTP是面向文本的(Text-Oriented),因此在报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:

  • 请求报文:从客户向服务器发送的请求报文,如图2所示;
  • 响应报文:从服务器到客户的回答,如图3所示;

                

HTTP请求报文中常用的几个方法:

  • GET:请求读取由URL所标志的信息;
  • HEAD:请求读取由URL所标志的信息的首部;
  • POST:给服务器添加信息(例如:注释);
  • CONNECT:用于代理服务器;

5. 抓包演示

    这里对以访问清华大学主页为例进行讲解,使用的是Wireshark软件,直接按 http and tcp.port == 80 and ip.addr == 166.111.4.100 条件进行查找,其中请求报文如下所示:


响应报文如下所示:


Reference :

  • 王道考研计算机网络







猜你喜欢

转载自blog.csdn.net/u011074149/article/details/80955179
今日推荐