Web服务器基础

Web服务器基础

【一】前端概述

请添加图片描述

【1】HTML

  • HTML(超文本标记语言)是用于创建网页结构的标记语言。
  • 它定义了网页的骨架,包括标题、段落、列表、链接等元素,但没有样式。
  • 可以将HTML视为网页的结构和内容的描述。

【2】CSS

  • css(层叠样式表)用于为HTML文档添加样式和布局。
  • 通过CSS,可以为HTML元素指定颜色、字体、大小、边距等样式属性,使网页变得美观和易于阅读。

【3】JavaScript

  • JavaScript是一种用于控制网页动态效果的脚本语言。
  • 它可以通过操作HTML和CSS来实现交互性和动态性,例如表单验证、页面元素的显示和隐藏、动画效果等。

【4】前端框架

  • 前端框架是一套封装了常用操作和功能的工具集,可以简化前端开发过程。
  • 其中一些常见的前端框架包括Bootstrap、jQuery和Vue。
  • 这些框架提供了预定义的样式、组件和功能,开发者只需按照固定的语法和规则调用这些框架提供的功能,就能快速构建出具有一致性和响应式设计的网页。

【二】HTTP协议

【1】什么是HTTP协议

  • HTTP协议是超文本传输协议,用于规定服务器和浏览器之间数据交互的格式。
  • 尽管可以不遵循该协议,但自己编写的服务端无法被浏览器正常识别,只能在单机环境中使用。

【2】HTTP协议的四大特性

  • 基于请求-响应模式:客户端发送请求,服务器返回响应。
  • 基于TCP/IP之上:作用于应用层之上的协议。
  • 无状态:HTTP协议本身不保存用户的信息,每个请求都是独立的。为了记录用户状态,出现了一些技术,如cookie、session和token。
  • 无/短链接:HTTP 1.0默认使用短链接,即请求-响应后立即断开连接。HTTP 1.1支持长链接,即双方建立连接后不会立即断开,如WebSocket。

【3】HTTP协议的格式

(1)请求数据格式
  • 请求首行:标识HTTP协议和当前请求方式。
  • 请求头:多组键值对,包含请求的附加信息。
  • 空行:用于分隔请求头和请求体。
  • 请求体:并非所有请求都有,主要用于存放POST请求提交的敏感数据。
(2)响应数据格式
  • 响应首行:标识HTTP协议、当前请求方式和响应状态码。
  • 响应头:多组键值对,包含响应的附加信息。
  • 空行:用于分隔响应头和响应体。
  • 响应体:返回给浏览器展示给用户的数据。
(3)请求方式
  • GET请求:用于向服务端请求数据,通过输入网址获取对应的内容。
  • POST请求:用于向服务端提交数据,常用于用户登录、提交表单等场景。

【三】网络请求方式

  • 网络请求方式(HTTP方法)是客户端与服务器之间进行通信的方式

【1】get

  • 这是最常见的网络请求方式之一,用于从服务器获取数据。
  • 客户端通过在URL后面添加查询字符串来指定需要获取的数据。这种方法通常是无状态的,这意味着每次请求都会重新计算。
  • GET请求虽然可以携带数据,但是一般只用于不重要的数据携带,并且GET请求携带数据的大小有限制,最多只能携带2KB左右。
# https://www.baidu.com/s?wd=周星驰
# https://www.baidu.com/s?wd=%E5%91%A8%E6%98%9F%E9%A9%B0

【2】post

  • 这种请求方式用于向服务器提交数据。
  • 它可以携带大量的数据,并且不会出现在URL中,而是作为请求体的一部分。
  • POST请求通常用于创建新的资源或者更新现有的资源。
  • 向服务器提交数据。可以携带大量的数据,并且不会出现在URL中,而是作为请求体的一部分。

【3】put

  • 这种请求方式用于更新服务器上的现有资源。
  • 与POST不同的是,PUT请求通常会覆盖已存在的资源,而不是创建新的资源。

【4】delete

  • 这种请求方式用于删除服务器上的资源。

【5】head

  • 这种请求方式与GET类似,但是只返回响应头,而不返回响应体。
  • 这在某些情况下非常有用,比如需要检查文件是否存在或者最后一次修改的时间。

【6】options

  • 这种请求方式用于获取服务器对某个URI的支持的选项。
  • 它可以用来发现可用的HTTP方法或者其他功能。

【四】web界面加载流程

【1】浏览器解析URL

  • URL由协议、域名(主机)和端口(默认为80)以及文件名组成。
  • 例如,http://www.example.com:80/index.html
    • 协议是HTTP
    • 域名是www.example.com
    • 端口是80(默认端口可以省略)
    • 文件名是index.html。
  • URL可以理解为在浏览器中输入的地址,其中的域名指示了要访问的服务器。

请添加图片描述

【2】DNS解析

  1. 浏览器检查DNS缓存。
    • 浏览器首先检查是否有缓存过该域名的IP地址。如果有缓存,则直接使用缓存的IP地址,跳过后续的DNS解析过程。
  2. 浏览器查找本地DNS缓存。
    • 如果在浏览器的缓存中找不到域名对应的IP地址,浏览器会查找本地计算机的DNS缓存。
    • 本地DNS缓存是操作系统或网络设备保存的最近解析过的域名和IP地址的记录。
  3. 解析本地Hosts文件。
    • 如果在本地DNS缓存中找不到域名对应的IP地址,浏览器会解析本地Hosts文件。
    • Hosts文件是一个文本文件,包含了域名和对应IP地址的映射关系。浏览器会检查Hosts文件中是否有目标域名的记录。
  4. 向递归解析服务器发送DNS查询请求。
    • 如果在本地Hosts文件中找不到域名对应的IP地址,浏览器会向递归解析服务器发送DNS查询请求。
    • 递归解析服务器是由互联网服务提供商(ISP)或其他网络服务提供商提供的DNS服务器,负责处理DNS解析请求。
  5. 逐级解析域名的IP地址。
    • 递归解析服务器会根据域名的层级结构,依次向上级DNS服务器查询域名的IP地址。
    • 这个过程从顶级域名服务器(Root DNS Server)开始,逐级向下查询,直到找到目标域名的IP地址。
  6. 解析完成,获取IP地址。
    • 经过多级DNS服务器的解析,最终获取到目标域名的IP地址
    • 例如,用户输入的URL为https://www.example.com
    • 经过DNS解析后得到IP地址为192.0.2.123

【3】建立TCP连接

  • 浏览器使用获取到的IP地址和默认的端口号(通常是80)与目标服务器建立TCP连接。
  • 这个过程涉及到TCP/IP的三次握手,确保客户端和服务器之间建立稳定可靠的连接。

【4】发送HTTP请求

  • 一旦TCP连接建立成功,浏览器会发送一个HTTP请求给目标服务器。
  • HTTP中的请求报文:
    • 请求报文:客户端(浏览器)向web服务器发送的请求报文。报文的所有字段都是ASCII码。
    • 请求报文中可以携带数据,也可以不携带数据。
    • 请求报文由请求行、请求头部、空行和请求包体 4 个部分组成。

【5】服务器处理请求并响应

  • 目标服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行相应的处理。

  • 服务器处理完请求后,会生成一个HTTP响应,该响应包括状态码、响应头、空行和响应体。

  • 常见状态码

    • 200:表示请求成功,服务器成功处理了请求并返回了相应的内容。
    • 301:表示永久重定向,请求的资源的URL已永久更改,服务器在响应中提供了新的URL,客户端应该使用新的URL进行后续请求。
    • 302:表示临时重定向,请求的资源的URL临时更改,服务器在响应中提供了新的URL,客户端应该使用新的URL进行后续请求。
    • 304:表示未修改,用于缓存控制。客户端发送了一个带有条件的请求(例如,包含If-Modified-Since头部),服务器判断资源未发生修改,返回304状态码,告诉客户端使用缓存中的内容。(未改变,和缓存里面的是一样的)
    • 404:表示未找到,请求的资源不存在于服务器上,服务器无法找到请求的URL。
    • 502:表示网关错误,通常指后端的真实服务器出现故障或无法访问,作为网关的服务器无法从真实服务器获取有效的响应。
    • 500:表示内部服务器错误,指服务器在处理请求时遇到了意外的错误,导致无法完成请求。

【6】接收和渲染页面

  • 浏览器接收到服务器返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。
  • 渲染就是将响应报文里的html文件+图片+视频等展示出来,看到效果。
  • 浏览器支持HTML语言,支持http,播放器等功能。

【7】断开TCP连接

  • 页面渲染完成后,如果没有keep-alive机制或者WebSocket等长连接技术,浏览器会发送一个关闭TCP连接的请求给服务器,进而两者断开连接。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac安装python

1、官网下载安装包: https://www.python.org/downloads/macos/ 2、运行安装包: 3、验证

【conda环境 安装 tensorflow2.2】 解决方案

1.检查anaconda安装:在cmd输入 conda --version 2.检测已经安装的环境:conda info --envs 3.新建一个python3.5的环境,tensorflow: ###conda create -n xxx python3.5 xxx为虚拟环境名 ###conda create -n xxx python3.6 xxx为虚拟…

office的excel中使用,告诉我详细的解决方案,如何变成转化为金额格式

在Office的Excel中,如果你想将名为"MEREFIELD"的公式结果转换为金额格式,你可以遵循以下详细步骤来实现: 书写MEREFIELD公式: 首先,在Excel中输入或确认你的MEREFIELD公式。例如,假设这个公式是用…

spfa的特殊用法

spfa通常用来求带有负权边的最短路问题,但是它还有两种特别的用法——求负环和求差分约束 求负环 我们回顾spfa算法,本质上是一个点的距离被更新以后再用它去更新其他的点。将被更新的点放入队列中,这样一直更新,直到没有任何点…

【git 使用】超级好用的 git reset 和 git revert 功能对比和使用方法

首先你要知道 git 区分暂存区和工作区,如果你用过 sourcetree 你就会知道 git reset 超级好用 git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交,并且可以选择性地修改工作区和暂存区的状态。git reset 命令有几种常用的用法,主要…

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源,设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

【Java EE初阶二十】关于http(一)

1. 初识http HTTP 最新的版本应该是 HTTP/3.0,目前大规模使用的版本 HTTP/1.1; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同,HTTP 的报文格式&a…

Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决 一、MySQL数据库主从集群概念 MySQL数据库主从集群是一种高可用性和读写分离的数据库架构,它基于MySQL的复制(Replication)技术来同步数据。在主…

一文读懂组态图和组态软件,最浅显的解读。

一、什么是组态图 组态图是指在工业自动化领域中,用来描述和展示控制系统中各个组件之间关系和工作流程的图形化表示方法。它是一个系统的框架图,通过图形符号和连接线,将各个组件(如传感器、执行器、控制器等)以及它…

unity 使用VS Code 开发,VS Code配置注意事项

vscode 对应的插件(unity开发) 插件:.Net Install Tool,c#,c# Dev Kit,IntelliCode For C# Dev Kit,Unity,Unity Code Snippets 本人现在是用了这些插件 unity需要安装Visual Studio Editor 1、.Net Install Tool 设置 需要在设置里面配置…

【Java】数据类型与变量

1.数据类型 在Java中数据类型主要分为两类:基本数据类型和引用数据类型。 基本数据类型有四类八种: 四类:整型、浮点型、字符型以及布尔型八种: 注意:不论是在16位系统还是32位系统,int都占用4个字节&am…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

【微服务生态】Docker

文章目录 一、基础篇1. 简介2. 下载与安装3. 常用命令3.1 帮助启动类3.2 镜像命令3.3 容器命令 4. Docker 容器数据券5. Docker 镜像5.1 commit 生成镜像5.2 Docker Registry5.3 发布镜像 6. Docker 常规安装软件 二、高级篇1. Dockerfile1.1 概述1.2 基础知识1.3 Dockerfile常…

【C++航海王:追寻罗杰的编程之路】vector

目录 1 -> vector的介绍及使用 1.1 -> vector的介绍 1.2 -> vector的使用 1.2.1 -> vector的介绍 1.2.2 -> vector iterator的使用 1.2.3 -> vector空间增长问题 1.2.4 -> vector的增删查改 1.2.5 -> vector迭代器失效问题 2 -> vector的深…

css3的var()函数

css3的var()函数 变量要以两个连字符--(横杆)(减号)为开头 变量可以在:root{}中定义, :root可以在css中创建全局样式变量。通过 :root本身写的样式,相当于 html,但优先级比后者高。 在CSS3中,var()函数是一个用于插入CSS自定义属性&#xff…

突破性进展!加州大学伯克利分校提出Causal Transformer模型,实现人形机器人通过强化学习适应真实世界人形运动

人形机器人具有模仿人类行为和形态的能力,可以胜任一些复杂、危险或单调的工作。除却在传统的工业生产线和仓储物流领域帮助解决劳动力短缺问题,在医疗、教育、家庭服务等多个领域人形机器人也具有巨大应用潜力。 然而,由于智能化水平仍有待…

第三十六天| 435. 无重叠区间、763.划分字母区间、56. 合并区间

Leetcode 435. 无重叠区间 题目链接:435 无重叠区间 题干:给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 思考:贪心法。和452 用最少数量的…

数据库的备份模式(完全备份,增量备份,差异备份)

数据库的备份 备份原因 数据的丢失 数据的删除 备份目标 数据的一致性 数据的可用性 备份技术 物理备份/冷备份 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。 常用的冷备份工具 ta…

【Java大数据期末】银行管理系统(MySQL数据库)

诚接C语言、C、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业, 标价10-20每份,如有需要请加文章最下方QQ。 本文资源:https://download.csdn.net/download/weixin_47040861/88850902https://download.csdn.net/download/weixin_4…

Jmeter实现阶梯式线程增加的压测

安装相应jmeter 插件 1:安装jmeter 管理插件: 下载地址:https://jmeter-plugins.org/install/Install/,将下载下来的jar包放到jmeter文件夹下的lib/ext路径下,然后重启jmeter。 2:接着打开 选项-Plugins Ma…