《计算机网络——自顶向下方法》精炼——2.2.3-2.2.5

news2024/11/18 13:40:46

文章目录

  • 引言
  • 正文
    • HTTP报文
      • 请求行
      • 首部行
      • 实体体
      • 其他方法
    • HTTP响应报文
      • 实体体和初始状态行
      • 首部行
    • cookie
    • cookie的运行过程
    • Web缓存
      • 条件GET方法

引言

计算机网络在这一学科中的重要性毋庸置疑,而黑皮书又是这一学科的教科书级经典,因此本书是计算机从业者的必读书之一。笔者用一个专栏来精炼这本书的知识,帮助想了解这方面知识的同学快速打下基础。
在该专栏中,笔者不会严格按照章节的顺序来讲述,而是会直接列出知识点并进行介绍,以帮助大家理解。
1.1-1.3节
1.4-1.7节
2.1-2,2节

正文

HTTP报文

一个典型的HTTP请求报文格式如下:
在这里插入图片描述
第一行称为请求行,余下的行称为首部行。

请求行

请求行包括方法字段,URL字段,HTTP版本字段

  1. 方法字段:这个报文采取的动作,包括GET、POST、HEAD、DELETE、PUT,根据英文应该也能大概猜出这些单词代表的动作。GET代表请求。
  2. URL字段:这个字段里的东西是方法字段的宾语。举例来说,当方法是GET时,URL字段中的就是请求的对象。
  3. HTTP版本字段:使用的HTTP是何版本。

首部行

  1. 第一行指明了所请求的对象所在的主机
  2. 第二行说明这条连接是一个非持续连接,即对象送到后就关闭这条连接
  3. 第三行指明用户代理,即向服务器发生这条报文的浏览器的类型
  4. 第四行指明希望服务器返回这个对象的法语版本(如果有这个版本),默认版本是英语版本

实体体

在首部行之后还可以加上一个实体体字段,如图所示:
在这里插入图片描述
实体体字段一般用于POST方法,存储给服务器的数据。

其他方法

HEAD方法:单纯发送一个请求报文,让服务器进行响应但不返回请求对象,常用于开发时调试跟踪
PUT方法:向服务器上传对象。
DELETE方法:删除服务器上的对象

HTTP响应报文

请添加图片描述
请添加图片描述
这个报文包括一个初始状态行,6个首部行和实体体。

实体体和初始状态行

实体体包含的是所请求的对象。
初始状态行包括协议版本字段、状态码、相应状态信息。
常见的状态码:

  1. 200 OK:一切正常
  2. 301 Moved Permanently:请求对象不在原来的URL地址,新的URL在响应报文的Location首部行中
  3. 400 Bad Request:出错了,该报文不能被服务器理解
  4. 404 Not Found:请求的对象没找到
  5. 505 HTTP Version Not Supported:顾名思义,服务器不支持报文的HTTP协议版本

首部行

我们解释请求报文中没有被提到过的部分:

  1. Date:服务器发送报文的时间
  2. Server:发送的服务器
  3. Last-Modified:所请求的对象最后更改的时间
  4. Content-Length:所请求对象的字节数
  5. Content-Type:所请求对象的类型

cookie

cookie技术用来服务器确定曾经访问过的客户。cookie技术包括四个部分:

  1. HTTP响应报文中的cookie首部行
  2. HTTP请求报文中的cookie首部行
  3. 端系统中的一个cookie文件,用来保存这个客户访问过的所有服务器为这个客户设置的cookie
  4. Web站点的后端数据库,用来保存所有客户的cookie

cookie的运行过程

在这里插入图片描述

  1. 客户初次访问服务器
  2. 服务器创建1678的ID作为这个客户的cookie
  3. 服务器将这个新的cookie和这个客户的信息一起存放在Web站点的后端数据库中
  4. 客户把接收到的cookie放在他的cookie文件中
  5. 客户再一次访问同一个站点时,会将这个站点为它设置的cookie附带在首部行中,由此服务器知道这是上次访问过的一个客户,可以在数据库中调用它的信息

Web缓存

Web缓存器(代理服务器)用一种巧妙的方式减少了网络时延和成本。我们用例子来说明:
在这里插入图片描述
有一台缓存器时,客户请求对象的步骤如下:

  1. 客户向缓存器请求对象
  2. 缓存器寻找有没有这个对象。如果有,那么用下面即将讲到的条件GET方法向服务器确认这个对象是否是最近版本并选择性修改;如果没有,那么直接向服务器请求
  3. 缓存器向客户发送该对象,同时如果是被修改或新增的对象,那么缓存器存储一个该对象的副本以便下次发送

条件GET方法

缓存器为了确认存储的对象是否是最近版本,会向服务器发送一个条件GET方法请求报文进行确认。这个报文中包含一个Last-Modified首部行:
在这里插入图片描述
这个首部行包含的是在缓存器中这个对象最后一次被修改的时间。服务器收到这个报文后:

  1. 服务器用这个时间和这个对象在服务器中最新被修改的时间进行比对。
  2. 如果发现缓存器中的对象已经是最新版本了,那么它返回一个不带对象的HTTP响应报文;如果不是最新版本,那么服务器将最新版本的对象存储在HTTP响应报文的实体体字段中进行发送。

用这样的方式,缓存器可以保证发送的是最新版本的对象。

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

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

相关文章

微服务学习之面试知识相关总结(Redis)

文章目录 前言Redis常见面试知识1 Redis与Memcache的区别2 Redis的单线程问题3 Redis的持久化方案3.1 基础知识3.2 面试话术 4 Redis的集群方式4 Redis的常用数据类型5 Redis事务机制6 Redis的Key过期策略6.1 过期删除策略6.2 内存淘汰策略6.3 面试话术: 7 Redis在项…

SpringBoot(7)消息处理

消息处理 消息Java处理消息的标准规范JMSAMQPMQTTkafka 案例准备整合ActiveMQ整合RabbitMQ整合RocketMQ整合Kafka 消息 对于消息的生产者与消费者的工作模式,还可以将消息划分成两种模式,同步消费与异步消息。 同步消息就是生产者发送完消息&#xff0…

SpringCloud入门实战(七)-Hystrix服务降级入门案例

📝 学技术、更要掌握学习的方法,一起学习,让进步发生 👩🏻 作者:一只IT攻城狮 。 💐学习建议:1、养成习惯,学习java的任何一个技术,都可以先去官网先看看&…

广州华锐互动:AR远程协作系统为电力设备状态监测提供有力支持

电力设备是电网运行的重要组成部分,对电网的安全稳定运行具有至关重要的作用。在电力设备状态监测中,如何快速、准确地诊断和解决设备故障,是电力企业和电力设备维护人员需要面对的重要问题。 广州华锐互动将AR增强现实技术运用到电力设备维…

美颜sdk是什么?探索美颜sdk的技术内幕

目前,美颜sdk作为美颜功能的实现方式,已经成为了各大应用开发者的热门选择之一。那么,美颜sdk到底是什么?它的技术内幕又是怎样的呢?本文将会为您揭开它的神秘面纱。 一、美颜sdk简述 美颜sdk顾名思义,就…

瑞萨开发环境搭建

使用keil环境,开发瑞萨renase A4M2 下载MDK 下载MDK,5.37 其它版本 最好使用5.30以上 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k3XGSK5-1682182139410)(https://secure2.wostatic.cn/static/reEunrWa2vsfrcpVZC1nbo…

关于存储那些事1-----基础篇

目录 一、SSD1、简介1.1 分类1.1.1 易失性存储器1.1.2 非易失性存储器 2、SSD接口2.1 SATA接口2.2 SATA Express接口2.3 SAS接口2.4 U.2接口2.5 mSATA接口2.6 M.2接口2.7 PCI-E接口 二、闪存(Flash memory)1、简介1.1 NOR Flash1.2 NAND Falsh1.3 NOR Fl…

二维码图片生成工具C#winform源码

二维码图片生成工具C#winform源码 源码描述: 一、源码特点 采用winform进行开发,生成二维码并保存,欢迎下载 二、功能介绍 本源码是一个可以自动生成二维码图片的小模块,可以添加自己的logo图片,可以保存在自己想要保存的地方 …

ubuntu20.04+x86_64+virtualbox6.7 环境下编译xenomai内核和实时性测试[详解]

下面是针对实时系统Xenomai使用的一些记录,实时系统在工业自动化,机器人等智能行业是必需会用到的。 简述 xenomai是众多inux实时性解决方案中的一种,通过在linux的基础上添加一个RTOS内核cobalt,来提高linux的实时性。实时内核cobalt与非实时内核linux相结合,既能提供工…

C/C++笔记-写一个Makefile并链接QtCore库使用QString,QDebug

如下cpp代码&#xff0c;调用QDebug打印程序&#xff1a; #include <QDebug> #include <QString>int main(int argc, char *argv[]){QString testStr "hello";qDebug() << testStr;return 0; } 如下makefile&#xff1a; test: main.cppg -c -…

‘gulp‘ 不是内部或外部命令,也不是可运行的程序

出现问题&#xff1a; D:\git\renwey-web-mobile>gulp default gulp 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 两种原因 原因一&#xff1a;环境变量没有设置 原因二&#xff1a;没有安装全局的gulp&#xff0c;只安装了本地gulp&#xff0c;…

CTFShow-Web篇详细wp

CTFShow-Web篇详细wp web签到题web2web3web4web5web6web7web8 CTFShow 平台&#xff1a;https://ctf.show/ web签到题 直接F12然后Base64解码 ctfshow{19bdf375-f974-481e-8c62-0f4c3d170fb4} web2 考点&#xff1a;联合查询 先尝试使用万能密码登入 ‘ or 11# 登入成功&am…

NFS共享服务

文章目录 1.NFS1.1 NFS简介1.2 RPC简介1.3 NFS网络文件系统1.4 NFS应用场景1.5 NFS通讯原理 2.NFS配置 1.NFS 1.1 NFS简介 NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;是FreeBSD支持的文件系统中的一种&#xff0c;它允许网络中的计算机之间通…

产品的技术加油站

作为产品经理的你&#xff0c;每次被喷不懂技术的时候&#xff0c;是否也曾想过暗暗发力&#xff0c;恶补一波技术&#xff0c;然后惊艳所有人&#xff1f;但冷静之后&#xff0c;又觉得无从下手&#xff1f; 是不是还想过要不要学习一下编程&#xff1f;然后被人推荐了什么py…

【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

Gnuplot绘图入门2——根据多列文本数据绘制图形

Gnuplot绘图入门2——根据多列文本数据绘制图形 Gnuplot绘图入门1以绘制sin(x)的函数图形为例&#xff0c;对Gnuplot进行了简要介绍。这个教程将介绍如何使用Gnuplot对保存在文本文件&#xff08;.txt、.dat文件&#xff09;中的数据进行可视化。 将下面的数据复制下了&#…

Python高光谱遥感数据处理与机器学习实践技术

目录 第一章 高光谱基础 第二章 高光谱开发基础&#xff08;Python&#xff09; 第三章 高光谱机器学习技术&#xff08;python&#xff09; 第四章 典型案例操作实践 总结了高光谱遥感技术领域的基础原理与核心概念&#xff0c;采用编程语言复现经典数据处理和应用方法&am…

OpenHarmony应用开发-ArkUI方舟开发框架简析

方舟开发框架&#xff08;简称ArkUI&#xff09;为OpenHarmony应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff08;组件、布局、动画以及交互事件&#xff09;&#xff0c;以及实时界面预览工具等&#xff0c;可以支持开发者进行可视化界…

ChatGPT会被人工智能干掉吗?

01 ChatGPT火爆全球 ChatGPT是美国“开放人工智能研究中心”2022年11月30日发布的聊天机器人程序&#xff0c;它是人工智能技术驱动的自然语言处理工具&#xff0c;能通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样…

pcl中MomentOfInertiaEstimation计算有向包围盒

pcl::MomentOfInertiaEstimation 是 Point Cloud Library (PCL) 中的一个类&#xff0c;用于计算点云中物体的矩。它可以提供点云物体的三个主轴及其长度&#xff0c;以及物体的惯性矩阵等信息。通过使用 pcl::MomentOfInertiaEstimation 类&#xff0c;可以实现物体形状分析、…