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

news2024/11/24 22:41:04

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。

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

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

相关文章

leetcode-518. 零钱兑换 II

1. 题目 链接: 零钱兑换II 2. 解决方案1 #include <stdio.h> #include <stdlib.h>int change(int amount, int* coins, int coinsSize){int dp[amount1];//确定dp大小memset(dp, 0, sizeof(int) * (amount1));dp[0] 1;//初始化为0for(int i 0 ; i < coins…

LED电子屏幕可以通过什么方式进行人屏互动

传统的LED大屏幕以单向传播的形式面向观众&#xff0c;不仅被动&#xff0c;而且逐渐缺乏动感和创新。随着LED显示技术的蓬勃发展&#xff0c;现在观众与LED电子大屏幕的方式越来越多。那么现阶段实现LED显示屏人屏互动的主要方式都有哪些呢&#xff1f;带你8分钟了解LED互动地…

KASan介绍

目录 概括介绍 配置说明 单独关闭读或写检查 操作使用 影响及注意事项 结果解读 使用注意 实现原理简介 KASAN原理 malloc原理 内容参考 概括介绍 KernelAddressSANitizer &#xff08;KASAN&#xff09; 是一个动态内存错误检测器。它提供了一个快速而全面的解决方…

D课堂 | 如何设置域名解析?解析记录类型选哪个?

上回&#xff0c;D妹和各位小伙伴们介绍了DNS的作用和原理——《什么是DNS&#xff1f;DNS是怎么运作的&#xff1f;》&#xff0c;相信大家对DNS已经有了一定的认识。 DNS是互联网不可或缺的基础服务&#xff0c;核心作用是将域名翻译成计算机可读取的IP地址&#xff0c;也就是…

VMware搭载linux出现的bugs

---------后续在实际Linux项目复盘过程中有遇到问题(解决办法)会不定时更新.......----------- ques: Linux自带的media目录用于挂载或可移动存储设备已满&#xff08;造成这一原因是由于我多次创建新的虚拟机并在同一虚拟目录下挂载同一镜象导致有些残存文件没有删除干净&…

【OpenCv光流法进行运动目标检测】

opencv系列文章目录 文章目录 opencv系列文章目录前言一、光流法是什么&#xff1f;二、光流法实例1.C的2.C版本3.python版本 总结 前言 随着计算机视觉技术的迅猛发展&#xff0c;运动目标检测在图像处理领域中扮演着至关重要的角色。在现实世界中&#xff0c;我们常常需要追…

JDK21要来了,协程对Java带来什么

目录 前言 协程是什么 多线程有什么问题&#xff1f; 协程的线程模型 Reactor模型 使用协程后 RPC并发 IO阻塞 网络IO 磁盘IO epoll为什么不支持磁盘io&#xff1f; Kotlin与Go的协程 Go 使用 Go的协程调度(GPM模型) Kotlin 使用 Kotlin协程调度 阿里Wisp协程…

Linux程序调试工具使用整理

Linux程序调试工具使用整理 GDB调试入门 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许&#xff0c;各位比较喜欢那种图形界面方式的&#xff0c;像VC、BCB等IDE的调试&#xff0c;但如果你是在 UNIX平台下做软件&#xff0c;你会发现GDB这个调试工具有比VC、…

万界星空科技可视化数字大屏应用场景及作用

一、MES系统大屏显示&#xff1a;实时监控生产数据的关键 随着制造业的发展&#xff0c;现代企业越来越依赖于高效的生产管理系统来保证生产效率和质量。其中&#xff0c;MES系统数据大屏显示成为了监控生产数据的关键工具。通过实时监控和显示生产数据&#xff0c;企业能够及…

智能网关在校园能耗监测系统中的应用介绍

安科瑞 崔丽洁 摘要&#xff1a;国家提出了全社会节能减排的战略举措&#xff0c;节约型校园的建设是实现这一举措的重要内容。为了对校园能耗实行量化管理、实时监测&#xff0c;需要建立一个完善的监管体系校园节能监管体系。而节能监管体系的核心是能耗监测平台&#xff0c;…

解决react集成typescript报错:找不到名称“div“之类的错误

现象&#xff1a; 原因&#xff1a;Typescript 不希望在 Typescript 文件中看到 JSX元素。 解决此问题的最简单方法是将文件后缀从 .ts 重命名为 .tsx 。

【学习笔记】DTM分布式事务

分布式事务是什么 本文的分布式事务指的是DTM下的分布式事务。 分布式事务有两类&#xff0c;这里指的是跨数据库、跨服务的分布式事务。 分布式事务指事务的发起者、资源及资源管理器和事务协调者分别位于分布式系统的不同节点之上。 CAP理论 C&#xff08;一致性&#x…

【UVM 验证平台打印时间单位控制】

UVM 验证平台打印时间单位控制 UVM 具有丰富的打印功能&#xff0c;打印信息会包含时间/打印位置等信息&#xff0c;根据打印时间可以方便的在波形上找到错误点。默认打印时间单位时fs&#xff0c;由于单位太小会导致打印信息上的时间信息比较长&#xff0c;不方便查看与查找。…

实现Element Select选择器滚动加载

<template><el-selectpopper-class"more-tag-data"v-model"tagId"filterableplaceholder"请选择"focus"focusTag"><el-optionv-for"(item, index) in taskTagLists":key"index":label"item.n…

软件开发无人天车智能控制系统智能库存管理单元解决方案

天车&#xff08;行吊 起重机&#xff09;智控系统在自动控制的基础上&#xff0c;添加了基于智能控制、数据分析存储等尖端技术研发出的各类算法&#xff0c;赋予天车更“聪明”的任务执行及决策制定能力。智控系统能够根据获取的数据和预设的任务需求&#xff0c;通过智能决策…

ftp发布服务器

ftp工具 发布测试 第一步&#xff1a;下载FileZilla 第二部建立站点 连接成功之后可以看到文件了 项目打包后上传 远程站点里的文件删除 左边本地站点上传。over

淘天集团大模型应用十大挑战命题发布

以AI人工智能为代表的新技术正在成为全球商业发展的新动能。淘天集团从去年开始&#xff0c;就已经在AI重点领域&#xff0c;展开和高校的一系列深入合作。 近期&#xff0c;淘天集团集合基础模型和电商应用场景的具体问题&#xff0c;面向高校师生和全社会发布大模型应用十大挑…

【算法-贪心】分数背包问题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载

redis图形化界面的压缩包&#xff0c;直接解压缩即可&#xff0c;双击 rdm.exe 即可运行 打开后是这样子&#xff1a; 我已经连接过本地的redis数据库&#xff0c;所以左边有个localhost&#xff0c;你的可能是空白的&#xff0c;正常&#xff01; 1、连接本地Redis服务器 这…

uniapp-vue3-标签选择器wo-tag

采用uniapp-vue3实现, 是一款支持高度自定义的标签选择器组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id14960 使用示例 <template>&…