六、应用层(五)万维网(www)

news2025/1/11 1:41:18

目录

5.1  WWW的概念与组成结构 

5.2  超文本传输协议(HTTP)

5.2.1   HTTP的操作过程

5.2.2   HTTP的特点

5.2.3   HTTP的报文结构


5.1  WWW的概念与组成结构 

万维WWW(World Wide Web)简称web并非某种特殊的计算机网络。它是一个大规模分布式、联机式信息存储空间。

万维网利用网页之间的超链接(也称链接,就是鼠标箭头变为一只手的地方将不同网站的网页链接成一张逻辑上的信息网。

在这个空间中:一个有用的事物可称为一个“资源”,并由一个全域“统一资源定位符”(URL)标识。这些资源通过超文本传输协议(HTTP)传送给使用者,而使用者通过单击链接来获取资源。

浏览器最重要的部分是渲染引擎,也就是浏览器内核。负责对网页内容进行解析和显示。同一网页在不同内核的浏览器的显示效果可能不同。

万维网的内核部分由以下三个标准构成

  1. 统一资源定位符(URL)。负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
  2. 超文本传输协议(HTTP)。一个应用层协议,它使用TCP连接,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
  3. 超文本标记语言(HTML)。一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。

URL相当于一个文件名在网络范围的扩展 

  • “:端口”通常已省略
  • 若将URL中的路径省略,则URL就指明互联网上的某个主页
  • 协议和主机名部分的字母不区分大小写,但路径一般区分。

 万维网的文档

  • 超文本标记语言HTML使用多种“标签”来描述网页的结构和内容。
  • 层叠样式表CSS从审美的角度来描述网页的样式。
  • JavaScript一种脚本语言,控制网页的行为。

Web是一个分布式的超媒体系统,是超文本系统的扩充。 

5.2  超文本传输协议(HTTP)

HTTP定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。

从层次的角度看,HTTP是面向事务应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等多媒体文件)的重要基础。

5.2.1  HTTP的操作过程

在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。因此HTTP有两类报文请求报文(从Web客户端向Web服务器发送服务请求)和响应报文(从Web服务器堆Web客户端请求的回答)

 用户鼠标单击链接后发送的事件按顺序如下(以访问清华大学的网站为例):

  1. 浏览器分析链接指向页面的URL(http://www.tsinghua.edu.cn/news.htm)
  2. 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。
  3. DNS解析出清华大学服务器的IP地址。
  4. 浏览器与该服务器建立TCP连接(默认端口号为80)。
  5. 浏览器发出HTTP请求:GET/news.htm。
  6. 服务器通过HTTP响应把文件news.htm发送给浏览器。
  7. 释放TCP连接。
  8. 浏览器解释文件news.htm,并将Web页显示给用户。

注:

  • 在请求行使用了相对URL(即省略了主机的域名);
  • 后缀htm(html)表示这是一个用超文本标记语言HTML写出的文件。
  • 可以看出若DNS缓冲中没有存储相应域名的IP地址,访问Web网站就要用到UDP。

5.2.2   HTTP的特点

HTTP在传输层使用了TCP协议,保证了数据的可靠传输。但在应用层HTTP本身是无连接的。换句话说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

 HTTP/1.0采用非持续连接方式

在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接。

  • 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间。
  • 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务大量客户的请求,这会使其负担很重。

HTTP/1.0读取一个包含100个图片对象的Web页面,需要打开和关闭101次TCP连接(1个基本的html文件和100个图片对象) 。

HTTP/1.1采用持续连接方式

在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行。

为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的速度。

HTTP是无状态的

同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

在实际应用中,通常使用Cookie加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。

Cookie是一种对无状态的HTTP进行状态化的技术。 

Cookie的工作原理:当用户浏览某个使用Cookie的网站时,该万维网服务器就为用户产生一个唯一的识别码,如“12345678”,接着在给用户的响应报文中添加一个Set-cookie的首部行“Set-cookie:12345678”。用户收到响应后,就在它管理的特定Cookie文件中添加这个服务器的主机名和Cookie识别码,当用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的Cookie首部行“Cookie:12345678”。服务器根据请求报文中的Cookie识别码就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户的历史浏览记录向其推荐新产品等。

5.2.3   HTTP的报文结构

HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。

开始行:这两种报文格式的区别就是开始行不同。在请求报文中为请求行,在响应报文中为状态行。开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”。

 

首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有数行,但也可以不使用。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。


常见应用层协议小节

应用程序FTP控制连接FTP数据连接

SMPT

(推)

POP3(拉)HTTP

TELNET

远程终端协议

DNS

TFTP

简单文件传输

SNMP

简单网络管理

使用协议TCPTCPTCPTCPTCPTCPUDPUDPUDP
熟知端口号21202511080235369161

我要控制爱你,非要说一个数据的话是20年,有个250推了我,我拉着他打了110,最长的这个233。

后面的三个都是UDP,可联想记忆为:Uzi,我369依恋你。(53,69,161)

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

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

相关文章

商城管理系统

商城管理系统 文章目录商城管理系统要求:项目结构图AddProductServlet添加商品:AddToCart将商品添加至购物车ClearCart清空购物车DeleteProductServlet删除商品EditProductServlet修改商品FindProductServlet查找商品LoginServlet登录ProductControl商品…

初级C语言之【数组】

🦖作者:学写代码的恐龙 🦖博客主页:学写代码的恐龙博客主页 🦖专栏:【初级c语言】 🦖语录:❀未来的你,一定会感谢现在努力奋斗的自己❀ 初级C语言之【数组】一&#xff…

Swagger在线API文档

Swagger 解决的问题 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。前端和后端的唯一联系,变成了 API 接口,所以 API 文档变成…

C++进阶---C++11

本篇主要是介绍C11中新添加的一些特性。 文章目录 1.C11简介2.列表初始化3.变量类型推导4.新增容器---静态数组array5.右值引用6.lambda表达式7.包装器8.新的类功能9.可变参数模板一、C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字…

Python高阶函数装饰器

“ 从CANoe vTESTstudio版本7开始,支持使用python编辑器编写python脚本。其中CANoe提供了许多API接口给python使用,大大扩展了python的可用性。在python中使用装饰器定义capl中的事件处理程序(on key/on timer等)。对此我们有必要…

C语言—宏定义

宏定义的作用是替换&#xff0c;再复杂也只能替换&#xff0c;不能用做计算&#xff1b; 一个源文件将另一个源文件的全部内容包含进来&#xff1b; 条件编译&#xff1b; 不带参数的宏定义&#xff1a; #include <stdio.h> #define PI 3.14int main() {printf("…

聊聊Redis消息队列-实现异步秒杀

一、前言 消息队列&#xff08;Message Queue&#xff09;, 字面意思就是存放消息的队列&#xff0c;最简单的消息队列模型包括3个角色&#xff1a; 消息队列&#xff1a;存储和管理消息&#xff0c;也被称为消息代理&#xff08;Message Broker&#xff09;;生产者&#xff…

Shell编程补充

Shell编程补充shell的变量定义变量的单双引号的不同输出变量父子shellshell子串BASHshell子串的用法shell统计变量长度输出程序运行时间结论:shell扩展变量用于处理变量值的创建子shell(进程列表)查看是否开启子shell在运行内置命令,外置命令shell编程总结shell的变量 定义变量…

小黑实习debug中遇到了函数式编程的混乱,特此进行的日常积累:python函数积累1

函数参数中有默认值&#xff0c;在函数内部会创建一块区域并维护这个默认值 # 在函数内存中会维护一块区域存储 [1,2,666,666,666] 100010001 def func(a1,a2[]):a2.append(666)print(a1,a2)func(100) func(1000)100 [666] 1000 [666, 666] def func(a1,a2[]):a2.append(666…

【nowcoder】笔试强训Day7

目录 一、选择题 二、编程题 2.1Fibonacci数列 2.2合法括号序列判断 一、选择题 1.JAVA属于&#xff08; &#xff09;。 A 操作系统 B 办公软件 C 数据库系统 D 计算机语言 计算机软件主要分为系统软件与应用软件两大类。系统软件主要包括操作系统、语言处理系统、数…

three.js之形状缓冲几何体

文章目录简介例子解释其他圆弧矩形专栏目录请点击 简介 Shape用来定义一个二维形状平面 官网常常与ShapeGeometry(形状缓冲几何体)搭配使用 官网&#xff0c;我们可以下运行下面的例子 例子 <!DOCTYPE html> <html lang"en"><head><meta cha…

玩转GPT--在线文本生成项目[可入坑~科普系列]

文章目录前言效果页面说明文字个数top_KTop_Ptemperature聊天上下文关联记忆项目部署获取项目获取模型运行彩蛋总结前言 没办法&#xff0c;最近ChatGPT杀疯了&#xff0c;没忍住&#xff0c;还是想look&#xff0c;look。没办法&#xff0c;哪个帅小伙能够忍受的了一个可以和…

数学知识---数论(质数和约数)

文章目录 1.质数1.1质数的判定---试除法1.2分解质因数---试除法1.3筛质数2.约数2.1试除法求约数2.2约数个数2.3约数之和2.4最大公约数---欧几里得算法(辗转相除法)1.质数 质数是针对所有大于1的自然数定义的,在大于1的整数中,如果只包含1和本身这两个约数,就被定义成为质…

【SpringCloud Alibaba】 初始化Sentinel

Sentinel 概念 特征 主要特征 开源生态​ 开启控制台 初始化工程 Sentinel 概念 分布式系统的流量防卫兵。随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点&#xff0c;从流量控制、流量路由、熔断降级、系统自适应过载保护…

Biotin-PEG-NH2,Biotin-PEG-amine,生物素-PEG-氨基材料改性用化学试剂

英文名称&#xff1a;Biotin-PEG-NH2&#xff0c;Biotin-PEG-amine 中文名称&#xff1a;生物素-聚乙二醇-氨基 Biotin-PEG-NH2是氨基化PEG中的一种&#xff0c;他可以用于材料改性&#xff1b;氨基和很多基团可以反应&#xff0c;如&#xff1a;羧基&#xff0c;活性酯&…

JavaScript:封装单向链表10种常见的操作方法

链表的优势 1.要存储多个元素的时候&#xff0c;除了数组还可以选择链表。 2.与之数组不同的是&#xff0c;链表中的元素在内存中不必是连续的空间。 3.链表中的每个元素由一个存储元素本身的节点和一个指向下一个节点的引用(指针或者连接)组成。 相比于数组&#xff0c;链表有…

QGIS基础:根据字段属性值或基于规则进行分类符号化显示

以下操作是对数据进行分类符号化&#xff0c;下面是原始操作数据&#xff1a; 基于分类符号化的字段是如下所示&#xff08;ZDTZM&#xff09;: A B C D 找到数据图层&#xff0c;右键属性&#xff0c;找到【符号化】&#xff0c;点击如下所示的分类&#xff1a; 在【valu…

mysql数据库完整实例-“汽车维修”

mysql数据库创建&#xff0c;编写&#xff0c;查询&#xff0c;自定义函数实战案例 创建汽车修理数据库&#xff0c;并完成数据库编写&#xff1a; 本文分三个部分&#xff0c;第一部分为数据库的创建编写和基础查询&#xff0c;第二部分为关联查询等复杂查询方法&#xff0c…

实验四:完整性实验

【实验目的】 掌握实体完整性、参照完整性和用户自定义完整性的定义的维护方法 【实验内容】 要实现这样一个功能&#xff1a;医生根据药品价表选择处方药品&#xff0c;录入数量和使用天数&#xff0c;系统根据医生选择的药品和录入的信息自动生成处方主表和处方明细表。功能…

Flink-按键分区状态-算子状态-广播状态

文章目录1. 按键分区状态&#xff08;Keyed State&#xff09;1.2基本概念和特点1.3 支持的结构类型1.4 代码实现1.5 状态生存时间&#xff08;TTL&#xff09;2 算子状态&#xff08;Operator State&#xff09;2.1 基本概念和特点2.2 状态类型2.3 代码实现3. 广播状态&#x…