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

news2024/11/16 21:52:02

目录

  • 0 引言
  • 1 基本概念
  • 2 HTTP
    • 2.1 HTTP概况
      • 2.1.1 HTTP的主要特点
      • 2.1.2 持久HTTP和非持久HTTP
      • 2.1.3 HTTP请求报文
      • 2.1.4 HTTP响应报文
    • 2.2 用户-服务器状态:Cookies
    • 2.3 请求-响应模型
    • 2.4 Web缓存(代理服务器)

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:计算机四大基础专栏
  • 📜 其他章节:网络快速入门系列、计算机网络(一)、计算机网络(二)
  • 💥 标题:【网络基础必看】计算机网络 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缓存带来了以下好处

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring:详解控制反转IOC和AOP

文章目录 IOC工厂模式实例基于xml管理Bean基于注解管理Bean常用注解:用于创建对象的常用注解:用于注入数据的常用注解:和生命周期相关的(了解)常用注解:新注解 IOC IOC (Inversion of Control)是Spring的核心概念之一。它是指控制…

【SoC FPGA】HPS启动过程

SoC HPS启动流程 Boot ROMPreloaderBoot Loader HPS的启动是一个多阶段的过程,每一个阶段都会完成对应的工作并且将下一个阶段的执行代码引导起来。每个阶段均负责加载下一个阶段。第一个软件阶段是引导 ROM,引导 ROM 代码查找并且执行称为预加载器的第 …

TCP协议总结

一、TCP协议概念。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它主要用于在计算机网络中,通过建立可靠的通信连接来进行数据传输。 TCP协议的特点如下: 可靠性&#xf…

【Linux C】Linux如何执行一个程序(程序存储空间、系统调用、内核调用)

文章目录 一、程序存储空间1.1 C语言程序存储空间1.2 用户空间和内核空间1.3 用户模式和内核模式 二、内核调用-系统调用-C语言库函数2.1 系统调用和内核调用2.2 C语言库函数 三、Linux如何执行一个程序 一、程序存储空间 本节说的空间主要是指内存空间,即程序如何分…

【STM32 中断】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32中断 前言一、STM32的中断如何?如何管理这么复杂的中断?实际优先级如下怎么使用呢? 二、使用步骤1.引入库函数先分组,怎么…

Gin 文件上传操作(单/多文件操作)

参考地址: 单文件 | Gin Web Framework (gin-gonic.com)https://gin-gonic.com/zh-cn/docs/examples/upload-file/single-file/ 单文件 官方案例: func main() {router := gin.Default()// 为 multipart forms 设置较低的内存限制 (默认是 32 MiB)router.MaxMultipartMem…

IP协议总结

一、定义。 IP全称为Internet Protocol,是TCP/IP协议族中的一员,负责实现数据在网络上的传输。它是一种无连接、不可靠的数据报协议。 IP协议常用于Internet网络和局域网中,它通过将数据包进行分组并进行逐跳转发来实现数据在网络中的传输。…

Android App备案获取公钥、签名MD5值

1.生成签名文件 keytool -genkey -alias 别名XXX -keypass 密码XXX -keyalg RSA -keysize 2048 -validity 36500 -keystore D:\XXX.keystore -storepass 密码XXX2.查看签名MD5值 keytool -list -v -keystore D:\XXX.keystore3.查看公钥 导出证书XXX.cer keytool -export -a…

小程序分销商城有哪些功能?

越来越多的企业,开始打造商城小程序,想要利用商城小程序功能来进行转型升级,那么商城小程序功能有哪些,[可R]下面就来分享一下商城小程序功能有哪些?常用小程序商城功能介绍; 1.产品展示功能:产…

DataGrip导出和导入文件

导出文件后用excel打开 发现乱码。解决办法: DataGrip导出CSV文件中文乱码 | 一个博客 (imguan.com) 再次导入进行测试

java - 设计模式 - 状态模式

文章目录 前言java - 设计模式 - 状态模式1. 概述2. 作用3. 示例 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话&#xf…

CDGA数据治理工程师考试心得

2023年8月初,准备备考CDGA。当时也是很迷茫,啥时候考试都不知道,也不知道该怎么做。写这篇文章的目的也只是记录一下。 1.什么是CDGA? CDGA就是数据治理工程师(Certified Data Governance Associate),“D…

【安鸾靶场】cmseasy内网渗透 (500分)

文章目录 题目一、渗透开始后台执行rce漏洞内网横向 题目 一、渗透开始 上burp后没有报漏洞&#xff1a; /admin存在后台&#xff1a; 爆破一下&#xff1a; admin admin123 后台执行rce漏洞 POC&#xff1a; 1111111111";}<?php phpinfo()?> 触发漏洞&#xf…

公众号运营重要策略-公众号排名优化

排名优化一直以来都是公众号运营的重要策略之一。公众号作为连接用户和商家的桥梁&#xff0c;其排名的高低直接影响着曝光量和用户关注度&#xff0c;因此公众号排名优化是每个运营者必须掌握的技能之一。本文将从以下几个方面&#xff0c;为大家深入剖析公众号排名优化的技术…

CCF CSP认证 历年题目自练Day27

题目一 试题编号&#xff1a; 202104-1 试题名称&#xff1a; 灰度直方图 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 样例输入 7 11 8 0 7 0 0 0 7 0 0 7 7 0 7 0 7 0 7 0 7 0 7 0 7 7 0 0 0 7 0 0 0 7 0 7 7 0 0 0 0 7 0 0 7 7 0 7 0 0 0 0 0 7 0 7 0 0 7 0 …

MySQL对日期计算

mysql日期计算 前言使用场景一 日期作减法操作二 获取前一天或后一天的日期三 获取前一个月或后一个月的日期四 获取前一年或后一年的日期五 查询一个月内的申请记录 总结 前言 在MySQL中&#xff0c;日期计算是非常常见的操作。其中&#xff0c;日期减法操作可以用来计算两个…

PTE DESCRIBE IMAGE做题方法 (一)

目录 界面切换来判断 到了哪一种题目 说废话 还是会给流利度加分 回答问题的时候想想哪些不说 必定是不行的呢 事先会预计学生会说些什么 鱼池理论 1st:Ttle.Unit,Legends.非说不可2nd:X-axis.Y-axis. 多多益善3 rd:Extra information(implications&development)不…

滚雪球学Java(45):探秘Java Runtime类:深入了解JVM运行时环境

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

《深入理解计算机系统》(2):虚拟内存

虚拟内存是一种对主存的抽象概念。 &#xff08;1&#xff09;将主存看作一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保存活动区域&#xff0c;并根据需要在磁盘和主存之间来回传送数据&#xff0c;通过这种方式高效地使用内存 &#xff08;2&#xff09;为每…

30天入门Python(基础篇)——第4天:Python中的【输入】+【数据类型】的认识(万字建议点赞收藏)

文章目录 专栏导读上节课回顾Python中的输入Python中的数据类型1、可变数据类型2、不可变数据类型 如何查看一个变量(数据)的变量类型字符串&#xff08;str不可变&#xff09;整数&#xff08;int不可变&#xff09;浮点数&#xff08;float不可变&#xff09;列表&#xff08…