前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

计算机网络|HTTP协议(计算机网络|http协议有哪些)

qiguaw 2024-10-07 12:56:23 资源文章 24 ℃ 0 评论

HTTP协议概述

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准;HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。简单说他就是Web应用的应用层协议,定义浏览器如何向Web服务器发送请求,以及Web服务器如何进行响应。

HTTP是请求与响应的模式,HTTP协议永远都是客户端发起请求,服务器回送响应。无法实现在客户端没有发起请求的时候,服务器主动将消息推送给客户端。

HTTP协议的工作流程

每个万维网的网点都有一个服务器进程,它不断地监听TCP端口80(默认),以便发现是否有客户端(浏览器)向它发出连接请求。一次HTTP操作称为一个事务,其工作过程可分为四步:

  • 首先客户机与服务器需要建立连接。
  • 建立连接后,客户机发送一个请求给服务器。
  • 服务器接到请求后,给予相应的响应信息。
  • 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

HTTP连接模式的分类

目前主要使用的是HTTP/1.0和HTTP/1.1,尤其以HTTP/1.1为主流。我们根据HTTP底层TCP连接策略的不同将HTTP的连接分为两类:

  • 持久链接:HTTP/1.1默认使用持久连接
  • 非持久链接:客户端与服务器建立TCP连接后,通过该连接发送HTTP请求报文,接收HTTP响应报文,然后断开TCP连接。HTTP/1.0使用非持久连接

RTT(Round Trip Time):是一个时间单位,用于表示从客户发送请求,到收到服务器的相应信息,该过程的用时我们称为一个RTT。

假如我们要浏览一个网页,该网页引用了3个JPEG小图片。现在我们来分别计算HTTP使用不同的链接模式所消耗的时间。

1、非持久单连接:只有一条TCP连接

  • 第一步客户端与服务器建立TCP链接,该过程需要一个RTT。
  • 第二步客户端请求浏览该页面,并得到服务器的响应,该过程需要一个RTT。
  • 第三步浏览器加载某个JPEG小图片,并得到服务器的响应, 但是在加载每个图片之前都需要再建立TCP链接。因此加载一个图片需要两个RTT。这里有三个图片需要加载,所以共需要六个RTT。

由此我们可知使用该模式完成该任务总共需要八个RTT。

2、非持久多连接:通过建立多条并行TCP连接,并行发送HTTP请求和并行接收HTTP响应。

  • 第一步客户端与服务器建立TCP链接,该过程需要一个RTT。
  • 第二步客户端请求浏览该页面,并得到服务器的响应,该过程需要一个RTT。
  • 第三步同时建立三条TCP链接,然后同时请求服务器获取这三张图片。因为是并行的所以这里只需要两个RTT

由此我们可知使用该模式完成该任务总共需要四个RTT。

3、非流水方式持久连接:也称非管道方式持久连接。客户端收到响应报文后,不断开TCP连接,继续请求接下来需要的内容。

  • 第一步客户端与服务器建立TCP链接,该过程需要一个RTT。
  • 第二步客户端请求浏览该页面,并得到服务器的响应,该过程需要一个RTT。
  • 第三步浏览器加载某个JPEG小图片,并得到服务器的响应,由于该模式TCP没有断开,所以直接请求图片,因此加载一个图片需要一个RTT。这里有三个图片需要加载,所以共需要三个RTT。

由此我们可知使用该模式完成该任务总共需要五个RTT。

4、流水方式持久连接:也称管道方式持久连接,客户端在通过持久连接收到前一个响应报文后不断开连接,继续并行请求之后的资源。

由此我们可知使用该模式完成该任务总共需要三个RTT。

HTTP报文格式

1、请求报文之请求行:请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有:

  • GET:请求读取由URL所标识癿信息,是最常见癿方法
  • HEAD:请求读取由URL所标识癿信息癿首部
  • POST:给服务器添加信息
  • OPTION:请求一些选顷癿信息
  • PUT:在指明癿URL下存储一个文档

2、HTTP响应报文:HTTP响应由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行:由3部分组成,分别为协议版本、状态码、状态码描述,之间由空格分隔(HTTP/1.1 200 OK)。

HTTP状态码:3位十进制数,利用第一位十进制数字区分5类状态码。

Cookie

Cookie也称为“小型文本文件”,由于HTTP服务器不保存客户的任何信息,被称为无状态协议,因此引入Cookie机制,用于用户跟踪。Cookie就是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 。

Cookie的属性:

  • NAME=VALUE:键值对,可以设置要保存Key/Value,注意这里的 NAME 不能和其他属性项的名字一样
  • Expires:过期时间,在设置的某个时间点后该 Cookie 就会失效
  • Domain:生成该 Cookie 的域名,如 domain="www.baidu.com"
  • Path 该:Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/
  • Secure:如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie
  • HTTPOnly属性:用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。

cookie的工作机制:当用户第一次访问并登陆一个网站的时候,cookie的设置以及发送会经历以下4个步骤

  1. 客户端发送一个请求到服务器
  2. 服务器发送一个HttpResponse响应到客户端,其中包含Set-Cookie的头部。网站在后台数据库中存储、维护Cookie信息包括分配用户ID、每个ID用户在本网站的访问特征等
  3. 用户浏览器在本地存储、维护和管理Cookie文件,之后向服务器发送请求时,HttpRequest请求中会包含一个Cookie的头部
  4. 服务器返回响应数据

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表