【计算机网络-应用层】万维网

news2025/2/26 14:55:45

文章目录

  • 1 统一资源定位符 URL
  • 2 万维网文档
    • 2.1 超文本标记语言 HTML
    • 2.2 层叠样式表 CSS
    • 2.3 JavaScript
  • 3 超文本传输协议 HTTP
    • 3.1 HTTP 报文格式
      • 3.1.1 HTTP 请求报文
      • 3.1.2 HTTP 响应报文
    • 3.2 HTTP 的工作过程
      • 3.2.1 HTTP/1.0
      • 3.2.2 HTTP/1.1
      • 3.2.3 相关例题
  • 4 Cookie

1 统一资源定位符 URL

统一资源定位符(Uniform Resource Locator,URL)

格式:<协议>://<主机>:<端口>/<路径>(端口和路径有时可省略,URL 不区分大小写)

例如:

  • 使用 HTTP 协议访问 Web 服务器:http://www.abc.com:80/dir/file1.htm
  • 使用 FTP 协议下载和上传文件:ftp://ftp.abc.com:21/dir/file1.htm
  • 读取计算机本地文件:file://localhost/d:/mydir/file1.zip

省略文件名的情况:

  • http://www.abc.com/dir/:服务器会预先设置好文件名省略时要访问的默认文件。该 URL 实质是访问了/dir/index.html/dir/default.htm
  • http://www.abc.com/:该 URL 实质是访问了/index.html/default.htm
  • http://www.abc.com:该 URL 实质也是访问了/index.html/default.htm

2 万维网文档

万维网文档分为三种:

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

2.1 超文本标记语言 HTML

demo.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>最简单的网页</title>
    </head>
    <body>
        <p>Hello world</p >
    </body>
</html>

2.2 层叠样式表 CSS

demo.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>最简单的网页</title>
        <link rel="stylesheet" type="text/css" href="demo.css" />
    </head>
    <body>
        <p class="pink">Hello world</p>
    </body>
</html>

demo.css:

.pink {
    color: deeppink;
    font-size: 36px;
}

2.3 JavaScript

demo.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>最简单的网页</title>
        <link rel="stylesheet" type="text/css" href="demo.css" />
        <script type="text/javascript" src="demo.js"></script>
    </head>
    <body>
        <p class="pink" id="myId">Hello world</p >
        <button type="button" onclick="myFunction()">点个赞吧</button>
    </body>
</html>

demo.js:

function myFunction() {
    document.getElementById("myId").innerHTML="谢谢你的赞”;
}

3 超文本传输协议 HTTP

超文本传输协议(HyperText Transfer Protocol,HTTP):定义浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器。它基于 TCP 协议,端口号为 80。

3.1 HTTP 报文格式

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

统一资源定位符(Uniform Resource Identifier):一个存放网页数据的文件名或一个 CGI 程序的文件名,例如/dir1/file1.html/dir1/program1.cgi

3.1.1 HTTP 请求报文

  • 请求报文格式:
<方法><空格><URI><空格><HTTP版本>   // 请求行:可大致了解请求的内容
<首部字段名>:<字段值>               // 消息头:请求的附加消息
...
...
<首部字段名>:<字段值>
<消息主体>                          // 消息体:包含客户端向服务端发送的数据,请求报文不一定存在该字段

【注】每条请求消息只能写 1 个 URI,所以每次只能获取 1 个文件,如果需要多次获取文件,必须对每个文件单独发送 1 条请求。比如 1 个网页包含 3 张图片,那么获取网页加上获取图片,一共需要向服务器发送 4 次请求。

  • HTTP 的主要方法
方法含义
GET请求 URI 指定的信息。如果 URI 指定的是文件,则返回文件的内容;如果指定的是 CGI 程序,则返回该程序输出的数据
POST从客户端向服务器发送数据。一般用于发送表单中填写数据等情况
HEAD只返回 HTTP 的消息头,并不返回数据内容。用于获取文件最后更新时间等属性信息
CONNECT用于代理服务器

3.1.2 HTTP 响应报文

  • 响应报文格式:
<HTTP版本><空格><状态码><空格><响应短语>    // 状态行
<首部字段名>:<字段值>                       // 消息头
...
...
<首部字段名>:<字段值>
<消息主体>                                  // 消息体:包含服务端向客户端发送的数据,响应报文不一定存在该字段
  • HTTP 状态码
状态码(共 33 种)含义
1xx告知请求的处理进度和情况
2xx表示成功,如接受或表示知道了
3xx重定向,表示需要进一步操作
4xx客户端错误,如请求中有错误的语法
5xx服务器错误,如服务器失效无法完成请求

3.2 HTTP 的工作过程

3.2.1 HTTP/1.0

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

在这里插入图片描述

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

3.2.2 HTTP/1.1

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

在这里插入图片描述

持续连接方式还分为两种:

  • 非流水线(即上图):客户端在收到前一个响应后才能发出下一个请求。
  • 流水线:HTTP/1.1 的默认方式。客户端可以连续发送多个请求而不必等待响应。

以下例子说明持续连接方式的工作过程(图片源自《网络是怎样连接的》)。

在这里插入图片描述

在双方进行 TCP 连接后,进行如下通讯过程:

  • 浏览器向 Web 服务器发送请求报文,用于获取 /sample.htm 文件:
GET /sample1.htm HTTP/1.1   // 表示向服务器发送的请求内容的请求行
Accept: */*
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible;【右侧省略】
Host: www.lab.glasscom.com
Connection: Keep-Alive      // 持续连接方式
  • 服务器将 /sample.htm 的内容返回给客户端,使用响应报文:
HTTP/1.1 200 OK         // 状态行,200表示请求成功完成
Date: Wed, 21 Feb 2007 09:19:14 GMT
Server: Apache          // 服务程序类型
Last-Modified: Mon, 19 Feb 2007 12:24:51 GMT
ETag: "5a9da-279-3c726b61"
Accept-Ranges: bytes
Content-Length: 632     // 数据长度
Connection: close       // 连接关闭
Content-Type: text/html     // 以MIME规格表示的数据格式。text/html表示HTML文档。如果是JPEG格式的图片,这里应该是image/jpeg

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>网络探索之旅</title>
</head>

<body>
<h1 align="center">网络探索之旅</h1>
<img border="1" src="picture.jpg" align="right" width="200" height="150">

这张网页解释了WWW的工作原理。网页中的文本数据和其中嵌入的图片数据是分别
保存在不同文件中的,它们合在一起就组成了一张网页。由于读取文件的操作是对各
个文件分别执行的,因此文本和图片是相互独立的文件,这就意味着读取它们的操作
也是相互独立执行的。

</body>
</html>
  • 浏览器向 Web 服务器发送请求报文,用于获取 /picture.jpg 文件:
GET /picture.jpg HTTP/1.1
Accept: */*
Referer: http://www.lab.glasscom.com/sample1.htm
Accept-Language: zh
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible;【右侧省略】
Host: www.lab.glasscom.com
Connection: Keep-Alive      // 持续连接方式
  • 服务器继续将 /picture.jpg 的内容返回给客户端,使用响应报文:
HTTP/1.1 200 OK
Date: Wed, 21 Feb 2007 09:19:14 GMT
Server: Apache
Last-Modified: Mon, 19 Feb 2007 13:50:32 GMT
ETag: "5a9d1-1913-3aefa236"
Accept-Ranges: bytes
Content-Length: 6419
Connection: close   // 连接关闭
Content-Type: image/jpeg

【下面就是图片数据,因为这些数据都是二进制的,所以我们在此省略】

3.2.3 相关例题

【例 1】假设 HTTP1.1 协议以持续的非流水线方式工作,一次请求-响应的时间为 RTT,rfc.html 页面引用了 2 个 JPEG 小图像,则浏览器从开始建立 TCP 连接到收到全部内容为止,需要(4)个 RTT。

在这里插入图片描述

【例 2】假设主机中的浏览器使用 HTTP/1.1 协议以持续的非流水线方式工作,向 Web 服务器请求包含有 3 个 JPEG 小图像的 demo.html 页面,一次请求-响应时间为 RTT,则从发起第一个 Web 请求开始到收到全部内容为止,经过 RTT 的数量为(4)。

4 Cookie

  • 早期的万维网应用非常简单,仅仅是用户查看存放在不同服务器上的各种静态的文档。因此 HTTP 被设计为一种无状态的协议。这样可以简化服务器的设计。
  • Cookie 提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就是说,Cookie 是一种对无状态的 HTTP 进行状态化的技术
  • Cookie 的工作原理如下:

在这里插入图片描述

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

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

相关文章

如何从根本上防止服务器被攻击

随着互联网的发展&#xff0c;服务器成为了企业和个人网络应用的重要基础设施。但是&#xff0c;随之而来的网络安全威胁也在不断增加&#xff0c;服务器安全问题也成为了影响企业信息安全的重要因素。针对这种情况&#xff0c;服务器安全防御变得尤为重要。   服务器安全防御…

6.Swagger的实战使用

六.Swagger的实战使用 1.什么是swagger 2.swagger的基本使用 3.swagger实战使用 六.Swagger的实战使用 1.什么是swagger swagger是后端接口文档的生成并且提供ui界面进行测试过去用postman测试 缺点&#xff1a;需要自己写地址&#xff0c;如果项目变了需要自己更改 2.sw…

CF区间DP作业题解

1. Recovering BST 由于互质关系不是传递的&#xff0c;所以尽量挂在树的最下面&#xff0c;刚好构成二叉树 f[i][j][0]f[i][j][0]f[i][j][0] 表示区间 [i,j][i,j][i,j] 以 iii 为根&#xff0c;是否可以构成一棵树。 f[i][j][1]f[i][j][1]f[i][j][1] 表示区间 [i,j][i,j][i,j…

Spring理论学习

1、什么是IOC IoC&#xff08;Inversion of Control:控制反转&#xff09; 是一种设计思想&#xff0c;而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权&#xff0c;交由 Spring 框架来管理。不过&#xff0c; IoC 并非 Spring 特有&#xff0c;…

阿里通义千问、ChatGPT和文心一言有何区别,在哪里能使用?

目前&#xff0c;聊天机器人技术在人工智能领域的发展越来越成熟了。现在已经有几款备受关注的聊天机器人产品问世&#xff0c;例如ChatGPT、阿里的通义千问和百度的文心一言。它们有什么区别&#xff0c;怎么使用呢&#xff1f; 其实&#xff0c;我也挺好奇的&#xff0c;毕竟…

人人拥有ChatGPT的时代来临了,这次微软很大方!

技术迭代的在一段时间内是均匀发展甚至止步不前的&#xff0c;但在某段时间内会指数级别的爆发。 ChatGPT背后的GPT 3.5训练据说花了几百万美金外加几个月的时间&#xff0c;参数大概有1700多亿。 这对于绝大多数的个人或企业来说绝对是太过昂贵的。 然而&#xff0c;微软&am…

月薪过 3w 的 软件测试工程师 都是怎么做到的?

对任何职业而言&#xff0c;薪资始终都会是众多追求的重要部分。前几年的软件测试行业还是一个风口&#xff0c;随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业&#xff0c;目前软件测试行业“缺口”已经基本饱和。 当然&#xff0c;我说的是最基础的功能测试的岗…

如何使用双轴XY平台绘制正弦曲线

1. 功能说明 本文示例将实现双轴XY平台绘制正弦曲线的功能。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩展板 Bigfish2.1扩展板 SH-ST步进电机扩展板 电池11.1V动…

跟着原子学I2C

I2C通讯 1、IIC总线介绍 集成电路总线&#xff0c;是一种同步串行半双工通信总线。 总线or协议&#xff1f;&#xff01; 总线是数据传输通道&#xff0c;协议是数据传输规则。 1、1介绍 a、由时钟线SCL和数据线SDA组成&#xff0c;并且都接上拉电阻&#xff0c;确保总线空…

UDP套接字

大家好,又见面了,&#x1f389;&#x1f389;&#x1f389;&#x1f338;&#x1f338;&#x1f338; 今天为大家带来UDP套接字的相关知识 文章目录认识socketUDP和TCP认识UDPAPI有关方法基于UDP实现回显服务器UDP的方法基于UDP实现回显程序认识socket UDP和TCP 认识UDPAPI有…

【数据结构】二叉树的概念及结构

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; 初阶数据结构 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是…

Linux内核设备驱动设备树概念与使用

一、设备树概念以及作用 1.1设备树概念 设备树(Device Tree)&#xff0c;将这个词分开就是“设备”和“树”&#xff0c;描述设备树的文件叫做 DTS(DeviceTree Source)&#xff0c;这个 DTS 文件采用树形结构描述板级设备&#xff0c;也就是开发板上的设备信息&#xff0c;比…

prometheus基本介绍

001 基本介绍 1.主要功能 多维数据模型&#xff08;时序由metric名字和k/v的labels构成&#xff09;灵活的查询语句无依赖存储&#xff0c;支持local和remote不同的模型采用http协议&#xff0c;使用pull模式&#xff0c;拉取数据&#xff0c;简单易懂监控目标&#xff0c;可…

session,zookeeper,mq-rabbitmq,kafka,websocket

spring-boot-demo-session pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

INSERT INTO IF NOT EXISTS问题

情景说明&#xff1a;工作上遇到一个树形结构的数据&#xff0c;如有文件夹和子文件夹这样的数据。由于后端逻辑问题&#xff0c;导致在前端页面操作了删除功能后&#xff0c;数据库中仅部分数据被删除&#xff0c;比如只把根节点或是父节点删除了&#xff0c;没有级联删除所有…

九龙证券|什么是庄家洗盘和出货?各有什么特征?

在股市独占的是庄家&#xff0c;在市场上独占的是商人。庄家的存在便是为了把资金投入市场变成本钱&#xff0c;使用本钱获取最大赢利。庄家的各类方法也是为了不惜一切代价获取最大赢利。今天我们来了解什么是庄家洗盘和出货&#xff1f;各有什么特征&#xff1f;下面就为大家…

所有知识付费都可以用 ChatGPT 再割一次?

伴随春天一起到来的&#xff0c;还有如雨后春笋般冒出的 ChatGPT / AI 相关的付费社群、课程训练营、知识星球等。 ChatGPT 吹来的这股 AI 热潮&#xff0c;这几个月想必大家多多少少都能感受到。 ▲ 图片来源&#xff1a;网络 这两张图是最近在圈子里看到的。 一张是国内各…

SpringBoot —— 日志基本操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ SpringBoot —— 日志基本操作一、日志的作用二…

Adobe全家桶功能介绍

Adobe全家桶是一套由Adobe公司开发的创意设计软件集合&#xff0c;包含了许多功能强大的软件&#xff0c;可以帮助用户完成各种创意设计任务。 以下是Adobe全家桶中一些主要软件的功能介绍&#xff1a; Photoshop&#xff1a;用于图像处理和编辑&#xff0c;可以进行图像裁剪…

Gradio介绍

Gradio App 就是给 AI 算法工程师训练的模型赋予分享给大众的能力。 从技术侧拆分&#xff0c;由三个部分组成&#xff1a; 前端页面 后端接口 AI算法模型推理 Gradio 做了一件事情&#xff0c;就是将这三个部分封装到一个 python 接口里&#xff0c;用户通过实现其封装的…