当前位置: 首页 > news >正文

计算机网络第2章-HTTP和Web协议(2)

Web和HTTP

一个新型应用即万维网(World Wide Web)Web。

HTTP概况

Web的应用层协议是超文本传输协议(HTPP),它是Web的核心

HTTP由两个程序实现:一个用户程序和一个服务器程序。

Web页面(Web Page)(也叫文档)是由对象组成的。

一个对象只是一个文件,诸如一个HTML文件、一个JPG图形等等。

并且它们可以通过一个URL地址寻址。

多数Web页面含有一个HTML基本文件以及几个引用对象。

每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。

例如,URL地址:http://www.someSchool.edu/someDepartment/picture.gif,其中的www.someSchool.edu就是主机名,/somDepartment/picture.gif就是路径名。

因为Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务器端,用于存储Web对象。

HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户发送Web页面的方式。

HTTP使用TCP作为它的支撑运输协议(而不是在UDP上运行)。

客户端的套接字接口是客户进程与TCP连接之间的门,在服务器端的套接字接口则是服务器进程与TCP连接之间的门。

客户向它的套接字接口发送HTTP请求报文并从套接字接口接受HTTP响应报文。

服务器也同理。

因此HTTP协议不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序故障中恢复的细节,那是TCP的工作。

HTTP也是一个无状态协议,因为HTTP服务器并不保存关于客户的任何信息,因此某个客户短短几秒内两次请求同一个对象,服务器不会因为刚刚为客户端提供了一次对象就不做出反应了,而是重新发送对象。

非持续连接和持续连接

持续连接非所有的请求/响应对是经过一个相同的、单独的TCP连接发送。

持续连接每个请求/响应对分别有一个不同于其它的、单独的TCP连接发送,并且在完成一次请求/响应后,会关闭该TCP连接。

HTTP默认方式下使用持续连接,但是也可以配置成为非持续连接。

采用非持续链接的HTTP

1.HTTP客户进程在端口号80发起一个到服务器www.someSchool.edu的TCP连接。

该端口号是HTTP的默认端口。

2.HTTP客户经它的套接字向该服务器发送一个HTTP请求报文。(报文中包含了路径名/someDepartment/home.index)

3.HTTP服务器进程经它的套接字接受请求报文,并从存储器(RAM或磁盘)中检索出对象(home.index),随后在一个HTTP响应报文中封装对象,并通过其套接字向客户端发送响应报文。

4.HTTP服务器进程通知TCP断开该TCP连接,但是实际到客户端接收到响应报文后,该TCP连接才会关闭。

5.HTTP客户接受响应报文,TCP连接关闭。

6.对每个引用的JPEG图形对象重复前四个步骤。

往返时间的定义(RTT):

该时间是指一个短分组从客户端到服务器端再到客户端的时间。

RTT包括:分组传播时延、分组在中间路由器和交换机上的排队时延、处理时延。

采用持续连接的HTTP

在持续连接下,服务器在发送响应报文后保持TCP连接的打开。

在后续相同的客户与服务器之间,后续的请求和响应报文可以继续在该TCP连接中进行。

如果一条连接经过一定时间间隔仍未被使用,HTTP服务器会被关闭该TCP连接。

HTTP报文格式

HTTP报文有两种:

请求报文响应报文

HTTP请求报文

HTTP请求报文的第一行叫请求行,其后继的所有行都被称为首部行。

请求行有三个字段:方法字段、URL字段、HTTP协议版本字段。

方法字段可以取不同的值,包括GET、POST、HEAD、PUT、DELETE

绝大部分的HTTP请求报文使用GET方法。

意思是请求一个对象。

下面是一个请求报文的通用格式:

此处的实体体(entity body)在POST方法时会用到该实体,在GET中用不到。

当用户提交表单时,HTTP客户常常使用POST方法

当然,用户提交表单的时候也可以不用POST方法,转用GET方法,此时的表单字段中所请求的URL中包括了输入的数据。

例如:一个表单使用GET方法,它有两个字段:“monkeys”和“bananas”这样,该URL结构为:

www.somsites.com/animalsearch? monkey&bananas

HEAD方法类似于GET方法,使用HEAD方法,服务器仅仅返回一个HTTP报文进行响应,并不返回请求对象,因此常常被程序开发者用来测试跟踪。

PUT方法常常与Web发行工具联合使用,它允许用户上传对象到指定的Web服务器上的指定目录。

DELETE方法允许用户删除Web服务器指定对象。

HTTP响应报文

下面是一个典型的HTTP响应报文。

它包含了三个部分:

初始状态行、首部行、实体体。

实体体在响应报文中是主要组成部分,即它包含了所请求的对象本身。

Connetction : clost代表发送报文后将关闭TCP连接。

下面是一个HTTP响应报文的通用格式。

下面是常见的状态码和短语。

用户与服务器的交互:cookie

cookie用来让web服务器识别到用户身份。

cookie技术有四个组件:

1.在HTTP响应报文中的一个cookie首部行。

2.在HTTP请求报文中的一个cookie首部行。

3.在用户端系统中保留一个cookie文件,由浏览器管理。

4.位于Web站点的一个后端数据库中。

下图是一个cookie工作过程。

Web缓存

Web缓存器也叫代理服务器。

Web缓存器有自己的磁盘存储空间。

在请求对象经过Web缓存器一般是以下情况:

1.浏览器创建一个到Web缓存器的TCP连接,并且向该Web缓存器发送一个HTTP请求。

2.Web缓存器进行检查,如果有浏览器所请求的对象,那么直接返回,否则Web缓存器建立一个到Web服务器的TCP连接,并且向Web服务器发送一个HTTP请求。

3.Web服务器接收到HTTP请求,向Web缓存器发送响应报文,并且关闭TCP连接。

4.Web缓存器接收到响应报文,并把其中的对象保存到本地磁盘中,随后将对象发送给浏览器,并且关闭TCP连接。

值得注意的是,Web缓存器既是客户又是服务器。

下面我们通过一个例子来加深对于Web缓存器设立的必要性,以及好处

我们假设对象的平均长度为1Mb,浏览器每秒发送15个请求,在因特哇那个接入链路一侧的路由器转发HTTP请求报文开始,到它接收响应报文我们硬性规定为2s。

此时局域网上的流量强度为:

接入链路上的流量强度为:

流量强度接近1,链路上的时延就会变得非常大并且无穷大的增长。

为此有两个解决方法:

1.更换更快的接入链路,但是成本非常昂贵。

2.使用Web缓存器,我们下面讨论使用Web缓存器。

假设缓存器满足请求的比率为0.4。

则40%的请求会立即被缓存器返回,只剩下60%的请求会经过15Mbps接入链路。

流量强度为:

1 × 0.6 = 0.6

则平均时延为:

约等于1.2秒。

可以看到使用缓存器的时延大大降低,并且成本相较于换链路非常低!

条件GET方法

存放在缓存器中的对象副本可能是陈旧,为此HTTP有一种机制,允许缓存器证实它的对象是最新的。

这种机制就是条件GET方法。

下面是一个简单的请求报文:

这是一个返回的响应报文:

此时条件方法报文:

If-modified-since用来确定在Web缓存器修改对象的最后时间是否与Web服务器修改对象的最后时间是否一致,如果一致则Web缓存器直接返回对象。否则,Web缓存器先从Web服务器接收最新的对象,再返回给Web浏览器。

因特网中的电子邮件

因特网电子邮件系统主要有三个组成部分:

用户代理、邮件服务器、简单邮件传输协议(SMTP)

SMTP协议

SMTP是电子邮件在应用层的协议,它依靠于TCP进行传输。

因此可以说:

SMTP一般不使用中间邮件服务器发送邮件,即使这两个邮件服务器位于地球的两端也是这样。

TCP连接可以是跨越很大的地理位置,并且建立TCP连接。

特别,如果Bob的邮件服务器没有开机,该报文会保留在Alice的邮件服务器上等待并进行新的尝试,这意味着邮件并不在中间的某个邮件服务器存留。

与HTTP的对比

HTTP主要是一个拉协议(pull protocol)

即主要是从服务器拉取信息

SMTP主要是一个推协议(push protocol)

即主要是向服务器推送信息

邮件访问协议

SMTP并不能使Bob从邮件服务器中拉取信息,因为SMTP是一个推协议。

因此人们发明了邮件访问协议,目前比较流行的访问协议:

1.第三版的邮局协议(POP3)

2.因特网的邮件访问协议(IMAP)

3.HTTP

POP3

POP3是一个极为简单的邮件访问协议,功能相当有限。

主要有三个阶段进行工作:

特许、事务处理以及更新

IMAP

基于Web的电子邮件

在这种服务中,用户代理就是普通的浏览器,用户和他远程邮箱之间的通信则通过HTTP进行。

当发件人(Alice)要发送一封电子邮件报文时,该电子邮件报文从Alice的浏览器发送到她的邮件服务器,使用的是HTTP而不是SMTP。

然后Alice的邮件服务器在与其他的邮件服务器之间发送和接收时,仍然使用的是SMTP。

相关文章:

计算机网络第2章-HTTP和Web协议(2)

Web和HTTP 一个新型应用即万维网(World Wide Web)Web。 HTTP概况 Web的应用层协议是超文本传输协议(HTPP),它是Web的核心。 HTTP由两个程序实现:一个用户程序和一个服务器程序。 Web页面(W…...

css3 table表格

使用CSS3来美化HTML表格(table)可以提高表格的外观和可读性 表格样式: table { width: 100%; border-collapse: collapse; } width: 100%; 使表格宽度充满其容器。border-collapse: collapse; 合并相邻的表格边框,使表格看起来更整…...

【【萌新的SOC学习之AXI DMA环路测试介绍】】

萌新的SOC学习之AXI DMA环路测试介绍 AXI DMA环路测试 DMA(Direct Memory Access,直接存储器访问)是计算机科学中的一种内存访问技术。它允许某些计算机内部的硬件子系统可以独立地直接读写系统内存,而不需中央处理器(CPU)介入处…...

07 | @Entity 之间的关联关系注解如何正确使用?

实体与实体之间的关联关系一共分为四种,分别为 OneToOne、OneToMany、ManyToOne 和 ManyToMany;而实体之间的关联关系又分为双向的和单向的。实体之间的关联关系是在 JPA 使用中最容易发生问题的地方,接下来我将一一揭晓并解释。我们先看一下…...

深入理解AQS之ReentrantLock源码分析

开题:如何自己生成一把独占锁? 1. 管程 — Java同步的设计思想 管程:指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。 互斥:同一时刻只允许一个线程访问共享资源; 同步:线程之间…...

微软宣布延长Azure支持Apache Cassandra 3.11时间到2024年

近日微软表示为缓解管理员不适应升级节奏,将Azure托管实例对Apache Cassandra 3.11 的支持延长1年,从而时间将持续到2024年年底。 Multiable万达宝汽车ERP(www.multiable.com.cn/solutions_qc)支持自定义栏位,实时生产排产,提高生产效率 此…...

cv_bridge和opencv 记录

过程记录 背景 实验室笔记本上想跑一下vins-fusion。但是因为是有毕业师兄的代码,不敢随意破坏环境。 电脑环境: ubuntu 20.04 opencv 3.3.1 和 4.2.0 Error: vins-fusion中修改CMakeLists.txt,find_package(OpenCV 3.3.1 REQUIRED)&…...

关于OWL-carousel插件在ajax调用后需要重新实例化问题(页面无轮播效果)

维护公司老项目&#xff0c;发现问题&#xff0c;记录一下~ 1.产生原因 owl 已经实例已经存在,在ajax请求成功后并更改完页面数据后, 但是没有销毁之前实例,并重新生成新的实例,导致没有owl插件没有轮播效果. 2.解决方案 html&#xff1a; <div class"owl-slider …...

day4作业

1&#xff0c;判断一个整数是奇数还是偶数&#xff0c;至少有两种方式实现 #1&#xff0c;判断一个整数是奇数还是偶数&#xff0c;至少有两种方式实现 #1) number int(input("请输入一个数:"))if number % 2 0:print("偶数") else:print("奇数&qu…...

SSMS中的SQL sever代理

目录 一、用途&#xff1a; 二、用法 SQL Server代理&#xff08;SQL Server Agent&#xff09;是SQL Server Management Studio (SSMS) 2008中的一个功能模块&#xff0c;它用于执行和调度自动化任务、作业和脚本&#xff0c;如作业和警报。SQL Server代理允许在指定的时间间…...

估算总体标准差的极差均值估计法sigma = R/d2

总体标准差的估算值可以通过将平均极差除以合适的常数因子d2来计算。这个估算方法是用于估算总体标准差的一种常见方法&#xff0c;尤其在质量控制和过程监控中经常使用。 总体标准差的估算值 (平均极差) / d2 其中&#xff1a; "总体标准差的估算值" 表示用极差…...

JavaScript之正则表达式

详见MDN 正则表达式(RegExp) 正则表达式不是JS独有的内容&#xff0c;大部分语言都支持正则表达式 JS中正则表达式使用得不是那么多&#xff0c;我们可以尽量避免使用正则表达式 在JS中&#xff0c;正则表达式就是RegExp对象&#xff0c;RegExp 对象用于将文本与一个模式匹配 正…...

Spring实战 | Spring AOP核心功能分析之葵花宝典

国庆中秋特辑系列文章&#xff1a; 国庆中秋特辑&#xff08;八&#xff09;Spring Boot项目如何使用JPA 国庆中秋特辑&#xff08;七&#xff09;Java软件工程师常见20道编程面试题 国庆中秋特辑&#xff08;六&#xff09;大学生常见30道宝藏编程面试题 国庆中秋特辑&…...

linux之/etc/skel目录

/etc/skel目录是在使用useradd添加用户时&#xff0c;一个需要用到的目录&#xff0c;该目录用来存放新建用户时需要拷贝到新建用户家目录下的文件。即&#xff1a;当我们新建新用户时&#xff0c;这个目录下的所有文件会自动被复制到新建用户的家目录下&#xff0c;默认情况下…...

文件介绍---C语言编程

0 Preface/Foreword 1 C文件概述 文件&#xff08;File&#xff09;是程序设计中的一个重要的概念。所谓“文件”一般指存储在外部介质上数据的集合。一批数据是以文件的形式存放在外部介质&#xff08;如磁盘&#xff09;上。操作系统是以文件为单位对数据进行管理&#xff0c…...

软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA(6)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA&#xff08;5&#xff09; 所属章节&#xff1a; 第7章. 系统架构设计基础知识 第5节. 特定领域软件体系结构 相关试题 3. 特定领域软件架构&#xff08;Domain Specific Software Archite…...

TensorFlow入门(二十三、退化学习率)

学习率 学习率,控制着模型的学习进度。模型训练过程中,如果学习率的值设置得比较大,训练速度会提升,但训练结果的精度不够,损失值容易爆炸;如果学习率的值设置得比较小,精度得到了提升,但训练过程会耗费太多的时间,收敛速度慢,同时也容易出现过拟合的情况。 退化学习率 退化学…...

登录中获取验证码的节流

一. 验证码框 <el-input placeholder"请输入验证码" prefix-icon"el-icon-lock" v-model"ruleForm.code"><el-button slot"suffix" :disabled"disabled" type"text" size"mini" click"ch…...

spring boot 实现Minio分片上传

应用场景 分片上传&#xff0c;就是将所要上传的文件&#xff0c;按照一定的大小&#xff0c;将整个文件分隔成多个数据块&#xff08;我们称之为Part&#xff09;来进行分别上传&#xff0c;上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。 分片上传的场景…...

2023年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 Python编程&#xff08;1~6级&#xff09;全部真题・点这里 第1题&#xff1a;生日相同 在一个有180人的大班级中&#xff0c;存在两个人生日相同的概率非常大&#xff0c;现给出每个学生的名字&#xff0c;出生月日。试…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...