AI智能
改变未来

计算机网络学习笔记–应用层–初识HTTP是什么?


HTTP到底是什么?

定义

HTTP协议(HyperText Transfer Protocol 超文本传输协议),HTTP协议定义了报文的结构以及客户和服务端进行报文交换的方式,由客户程序和一个服务器程序实现这个协议,它是Web的核心。

简单说,你要从网络上获取信息或者向其他人发送信息,都要遵循一个规则,这个规则是所有人都遵循的协议,这个规则就是实现定义好的HTTP协议

需要了解的几个概念:

  • 端系统:在互联网当中,互相连接的计算设备都成为端系统或者主机
  • 报文:在网络应用之间,端系统之间交换着报文,报文包含了协议设计者先要的任何东西,例如:报文可以执行一种控制功能;也可以包含需要交换的数据
  • 分组:源系统向目的系统发送一个报文的过程中,源会将长报文划分为较小的数据块,这小的数据块称为分组
  • Web页面(文档):是由对象组成的,页面中一般都含有一个HTML基本文件以及几个应用对象
  • 对象:是一个文件,如HTML文件、一个JPEG格式的图片,一个视频片段等,对象可以通过URL地址进行寻址

HTTP协议具体做了什么?

HTTP规定了Web用户向Web服务器请求Web页面的方式,以及服务器向用户发送Web页面的方式,当用户要访问一个Web页面的时候,会经历以下过程

  1. 使用浏览器进行访问
  2. 浏览器会向服务器发出请求报文,请求报文是包含了用户想访问页面里的对象
  3. 然后打开与服务器的TCP连接(HTTP并不使用UDP作为运输协议),一旦TCP连接接通,浏览器和服务器就可以通过套接字接口访问TCP(客户端套接字接口相当于客户端与TCP连接之间的一扇门,服务器端的套接字接口则是服务器与TCP连接的另一扇门,客户端通过客户端自己的套接字接口可以做两件事:发送HTTP请求报文接收HTTP响应报文,服务器端也一样可以通过它自己套接字接口做相同的两件事)
  4. 当服务器从它的套接字接口接收到浏览器发送过来的HTTP请求报文时,就会用包含该请求页面的对象的HTTP响应报文进行响应,响应过程与请求过程类似。

    问题:为什么要用TCP连接呢?
    因为TCP可以提供可靠的数据传输服务,使用TCP连接可以确保每个HTTP报文最终都能完整地到达服务器以及回到客户端,即HTTP不用担心数据丢失,也不用担心TCP传输数据的细节,这就是分层结构的优势

HTTP有啥特点?

HTTP是“无状态”协议

HTTP是一种不保存状态的协议,HTTP协议自身不保存请求和响应之间的通信状态,即HTTP对发送过的请求和响应都不做持久化的处理。
具体过程就是:使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身不保留之前的所有关于请求报文和响应报文的信息
这样设置的目的:是为了更快地处理大量事务,确保协议的可伸缩性
缺点:
业务处理会变得非常麻烦,如当用户访问网站的时候,如果没有保存用户的状态,当用户跳转到网站的其他地方,他又要重新登录,会导致用户体验很差
为了解决这个问题,引入了Cookie技术

连接状态

非持续连接

每一个请求/响应都是经过一个单独的TCP连接(即请求和响应的TCP连接不是同一个)发送的

非持续连接的HTTP

在非连续连接的情况下,访问一个页面会经过的步骤

  1. HTTP客户进程会通过HTTP默认端口号80向服务器发起一个TCP连接,TCP连接与客户和服务器各自的套接字相关联
  2. 客户通过套接字向服务器发送一个HTTP请求报文
  3. 服务器通过套接字接收该请求报文,从服务器的存储器(RAM或磁盘)中检索对象,在一个HTTP响应报文中封装对象,并通过服务器套接字向客户发送响应报文
  4. HTTP服务器通知TCP断开该TCP连接(直到TCP确认客户已经完整地收到响应报文才会真的中断连接)
  5. HTTP客户接受响应报文,TCP连接关闭,客户从响应报文中提取出对象。

注意点

  • 每个TCP连接在服务器发送一个对象后就会关闭,并不会因为还有其他对象没有传输而持续,每个TCP连接只传输一个请求报文和一个响应报文
  • 默认情况下,大部分浏览器打开5~10个并行的TCP连接,每条连接处理一个请求和响应,最大并行连接数可以用户自行设置

非持续连接的缺点

  1. 存储上的问题,因为每个连接都是新的,需要在客户和服务器中都要分配TCP的缓冲区和保持TCP变量,这会给服务器带来存储负担,因为一台服务器可能同时服务很多客户的请求
  2. 时间上的问题,客户端获得对象的时间变长,需要经过创建新TCP连接的时间加上用于请求和接收对象的时间

持续连接

所有请求及响应都是经过相同的TCP连接发送的

持续连接的HTTP(HTTP默认模式)

在采用持续连接的情况下,服务器在发送响应后保持该TCP连接打开。在相同的客户与服务器之间的后续请求和响应报文可以通过相同的TCP连接进行传送。
好处:客户可以一个接一个地发出对对象的请求,而不必等待服务器对未通过的请求的回答
**注意点:**一般一条连接经过一定时间间隔(可以设置)还没有被使用,服务就会关闭该连接

HTTP报文

怎么查看报文

打开谷歌浏览器–>右键检查

请求报文

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的
以下是请求报文的通用格式:

引用《计算机网络 自顶向下》


下图可以观察百度的请求报文的头

以下是响应报文的通用格式:

我们可以再观察一下从baidu服务器响应回来的响应头

总结

到这里,基本了解了HTTP是什么,它能干什么,它有啥特点以及知道了HTTP协议规范的报文结构。接下来就是继续探究HTTP与其他协议的联系以及HTTP的应用。

引用

《计算机网络 自顶向下方法 原始第7版》
《图解HTTP》

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 计算机网络学习笔记–应用层–初识HTTP是什么?