【网络基础必看】计算机网络 Web与HTTP详解:中科大郑烇老师笔记 (三)

请添加图片描述

0 引言

📜闲聊:由于项目紧张,是师兄帮我用QT写好了一个HTTP Server,我学习了其中的原理,维护后续的功能。发现也就两个关键函数,一个函数是获取请求的类型,另一个就是更具不同的请求类型做出对应的响应。例如,解析JSON格式的请求体。

1 基本概念

  • Web页:由一些对象组成
  • 对象可以使HTML文件JPEG图像Java小程序声音剪辑文件
  • Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)
  • URL:统一资源定位符(Uniform Resource Locator)
  • 通过URL对每个对象进行引用(图像可以使用新标签打开,也就是使用URL打开了一个图像)
  • URL格式:协议名,用户名:口令,主机名,路径名,端口等
    例子:https://blog.csdn.net/hhw_hhw?spm=1011.2124.3001.5343
    解析:https(协议名,还有http,ftp等协议),blog.csdn.net(主机名),/hhw_hhw(路径),spm=1011.2124.3001.5343(参数)
    在这里插入图片描述

2 HTTP

2.1 HTTP概况

HTTP(Hypertext Transfer Protocol):是一种用于在网络上传输超文本的协议。它是一种客户端-服务器协议,用于从Web服务器请求资源,并将服务器响应的资源传输回客户端。HTTP是基于请求-响应模型的,客户端发送HTTP请求给服务器,服务器根据请求返回相应的资源。

2.1.1 HTTP的主要特点

  • 无状态性(Stateless):HTTP是一种无状态协议,这意味着服务器不会保留之前的请求信息。每个请求都被视为独立的事务,服务器仅在每个请求中处理所需的数据。
  • 请求方法(Request Methods):HTTP定义了几种请求方法,常见的包括GETPOSTPUTDELETE等。这些方法指定了客户端希望服务器执行的操作类型。
  • 状态码(Status Codes):HTTP使用状态码来表示请求的处理结果。常见的状态码包括200(OK,请求成功)、404(Not Found,请求的资源不存在)、500(Internal Server Error,服务器内部错误)等。
  • 报文格式(Message Format):HTTP请求和响应以文本格式进行传输请求消息包含请求行、请求头和请求体,响应消息包含响应行、响应头和响应体。
  • URL(Uniform Resource Locator):HTTP使用URL来标识和定位网络资源。URL由协议类型、主机名、端口号和资源路径组成。(HTTP默认80端口)
  • 持久连接(Persistent Connection):HTTP支持持久连接,即在单个TCP连接上可以发送多个HTTP请求和响应,减少了连接建立和关闭的开销。
  • 缓存(Caching):HTTP通过使用缓存机制来提高性能和减少网络流量。客户端和服务器可以使用缓存来存储先前请求和响应的副本,以便在将来的请求中重用。
    在这里插入图片描述

HTTP协议是基于TCP协议实现的
在这里插入图片描述

2.1.2 持久HTTP和非持久HTTP

非持久HTTP(HTTP/1.0)

  • 最多只有一个对象在TCP连接上发送
  • 下载多个对象需要多个TCP连接
    在这里插入图片描述
    在这里插入图片描述
  • 缺点:①每个对象要2个RTT;②操作系统必须为每个TCP连接分配资源;③但浏览器通常打开并行TCP连接,以获取引用对象。

持久HTTP(HTTP/1.1)

  • 多个对象可以在一个(客户端和服务器之间的)TCP连接上传输
  • 服务器在发送响应后,仍保持TCP连接
  • 客户端在遇到一个引用对象的时候,就可以尽快发送该对象的请求

两种持久HTTP方式:流水线、非流水线

2.1.3 HTTP请求报文

  • 两种类型的HTTP报文:请求、响应
    HTTP请求报文
    在这里插入图片描述
    在这里插入图片描述
    cr cf 表示 回车 换行
    在这里插入图片描述
  • HTTP请求方法类型
    在这里插入图片描述

2.1.4 HTTP响应报文

  • 报文形式:状态行(协议版本、状态码、相应的状态信息)+ 首部行 + 空白行 + 数据(HTML文件)
  • HTTP响应状态码

2.2 用户-服务器状态:Cookies

Cookies是一种在Web浏览器服务器之间传递的小型文本文件。当用户访问一个网站时,网站会将一些数据存储在用户的浏览器中,并在用户下次访问该网站时将这些数据发送回服务器。这些数据通常包含关于用户的偏好、会话信息和其他与网站交互相关的数据。
所以Cookies可以将HTTP从无状态的协议变成有状态的协议

Cookies具有以下特点:

  • 持久性:某些cookies可以在用户关闭浏览器后仍然保留,以便在用户下次访问网站时使用。这些被称为持久性cookies。其他cookies只在当前会话期间有效,称为会话cookies。
  • 安全性:由于cookies存储在用户的浏览器中,因此它们可以被用户或恶意软件访问和修改。为了增加安全性,可以使用安全cookies,只在通过HTTPS连接时传输,从而加密了数据传输。
  • 隐私性:尽管cookies通常用于存储用户偏好和会话信息等有用的数据,但它们也可以被用于跟踪用户的浏览行为。为了保护用户隐私,现代浏览器通常提供了对cookies的控制选项,允许用户选择接受、拒绝或删除cookies。

Cookies在Web应用程序中有多种用途,包括但不限于以下几个方面:

  • 会话管理:通过在cookies中存储会话ID或其他标识符,Web应用程序可以跟踪用户的会话状态,例如登录状态、购物车内容等。
  • 个性化:Web应用程序可以使用cookies来存储用户的偏好设置,例如语言选择、主题设置等,以提供个性化的用户体验。
  • 跟踪和分析:广告商和网站分析工具可以使用cookies来跟踪用户的浏览行为、广告点击等信息,从而提供个性化广告和分析用户行为。
  • 跨站点请求伪造(CSRF)防护:通过在cookies中包含CSRF令牌,Web应用程序可以防止CSRF攻击,提高安全性。

需要注意的是,使用cookies也存在一些隐私和安全的风险,因此网站通常需要遵循隐私政策,并尽可能减少对敏感信息的存储和使用。用户也可以通过浏览器设置控制cookies的接受和使用。

2.3 请求-响应模型

HTTP协议是基于请求-响应模型,所以接下来就介绍一下请求-响应模型

HTTP请求-响应模型是HTTP协议的基本工作原理,它描述了客户端和服务器之间的通信过程。根据该模型,HTTP通信包括以下步骤

  1. 客户端发起请求:客户端(例如Web浏览器)向服务器发送HTTP请求,请求特定的资源或执行特定的操作。请求由请求行、请求头和请求体组成。请求行包含请求方法(如GET、POST)、URL和HTTP协议版本。请求头包含关于请求的附加信息,如用户代理、Cookie等。请求体包含可选的请求数据,如表单数据或上传的文件。
  2. 服务器处理请求:服务器接收到客户端的请求后,根据请求的信息进行处理。服务器会解析请求行和请求头,确定请求的目标资源和要执行的操作。
  3. 服务器生成响应:服务器根据请求的处理结果生成HTTP响应。响应由响应行、响应头和响应体组成。响应行包含状态码(如200、404、500),描述请求处理结果的信息。响应头包含关于响应的附加信息,如内容类型、日期等。响应体包含实际的响应数据,如HTML文档、图像或其他资源。
  4. 服务器发送响应:服务器将生成的HTTP响应发送回客户端。响应通过网络传输到客户端的HTTP接收器。
  5. 客户端接收响应:客户端接收到服务器发送的HTTP响应。客户端的HTTP接收器解析响应,提取响应行、响应头和响应体中的数据。
  6. 客户端处理响应:客户端根据响应的内容进行处理。例如,Web浏览器会根据响应的内容渲染网页,显示在用户界面上。

HTTP请求-响应模型的工作方式使得客户端和服务器可以通过HTTP协议进行可靠的通信。客户端发送请求并等待服务器的响应,服务器处理请求并生成响应,然后将响应发送回客户端。这种模型的灵活性使得HTTP在Web开发和网络通信中得到广泛应用。

2.4 Web缓存(代理服务器)

  • Web缓存是一种用于存储和提供Web页面、图像、脚本和其他网络资源的临时存储机制。它位于Web浏览器和服务器之间,可以减少网络传输延迟、降低带宽消耗,并提高用户访问网页的速度和性能。
  • 当用户首次访问一个网页时,浏览器会向服务器发送请求,并将服务器返回的响应保存在本地的缓存中。下次用户再次访问相同的网页时,浏览器会首先检查本地缓存,如果有匹配的缓存副本并且尚未过期,浏览器将直接从缓存中加载资源,而不必再次向服务器发起请求。这样可以减少网络传输的次数,提高页面加载速度。
  • Web缓存不仅仅是存储在本地,还存储在服务器上,因为有时候访问一个资源的之后并不是直接就访问,中间可能需要经过其他的服务器(代理服务器)。
    在这里插入图片描述

Web缓存带来了以下好处

  • 提高用户体验:通过减少网络传输和页面加载时间,用户可以更快地获取所需的网页内容,提高了用户的访问体验。
  • 减轻服务器负载:由于缓存服务器可以直接提供资源,减少了对原始服务器的请求,从而降低了服务器的负载。
  • 节省带宽消耗:由于缓存可以重用已经下载的资源,可以节省网络带宽的使用,尤其对于重复访问相同资源的用户来说效果更为显著。
  • 降低网络延迟:由于缓存通常位于用户与服务器之间的较近位置,可以减少网络传输的距离和延迟。

在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值