web基础+HTTP+HTML+apache
目录
一.web基础
1.1web是什么
1.2HTTP
1.2.1HTTP的定义
1.2.2 HTTP请求过程
1.2.3 HTTP报文
1 请求报文
2 响应报文
1.2.4 HTTP协议状态码
1.2.5 HTTP方法
1.2.6 HTTP协议版本
二.HTML CSS和JavaScript
2.1HTML
2.1.1HTML的概述
2.1.2 HTML中的部分基本标签(了解)
2.1.3 HTML的文件结构(了解)
2.2 CSS
2.3 JavaScript
2.4 总结三者的关系
三.URI 和 URL
3.1定义
3.2区别
3.3 URL的组成
三.Apache的工作模式
3.1apache是什么
3.2apache的三种工作模式
1. Prefork
2. Worker
3. Event
一.web基础
1.1web是什么
Web,全称为World Wide Web(万维网),是一种基于互联网的信息系统,允许用户通过浏览器访问和共享超文本(如网页、图片、视频等)。
1.2HTTP
1.2.1HTTP的定义
HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于在Web上传输数据的应用层协议。它是Web的基础协议之一,定义了客户端(如浏览器)和服务器之间如何通信以请求和传输资源(如网页、图片、视频等)。
1.2.2 HTTP请求过程
-
建立连接
-
接收请求
-
处理请求
-
访问资源
-
构建响应报文
-
发送响应报文
-
记录日志
1.2.3 HTTP报文
1 请求报文
HTTP 请求报文通常包括以下四个部分:请求行(Request Line)
请求头(Request Headers)
空行(Empty Line)
请求体(Request Body,可选)1. 请求行(Request Line)
请求行是请求报文的第一行,包含以下三个部分:请求方法(HTTP Method):表示客户端希望执行的操作,如 GET、POST、PUT、DELETE 等。
请求目标(Request Target):通常是 URL 的路径部分,如 /index.html。
HTTP 版本(HTTP Version):表示客户端使用的 HTTP 协议版本,如 HTTP/1.1 或 HTTP/2。2. 请求头(Request Headers)
请求头是键值对的形式,用于传递附加信息,如客户端信息、请求内容类型、缓存控制等。每个请求头占一行,格式为 <字段名>: <值>。
常见请求头:
Host:目标服务器的主机名和端口号(如 Host: example.com)。
User-Agent:客户端信息(如 User-Agent: Mozilla/5.0)。
Accept:客户端可以接受的响应内容类型(如 Accept: text/html)。3. 空行(Empty Line)
请求头和请求体之间必须有一个空行,用于分隔两部分。4. 请求体(Request Body,可选)
请求体用于传递客户端发送给服务器的数据,通常用于 POST、PUT 等请求方法。请求体的格式由 Content-Type 请求头指定。
完整的 HTTP 请求报文示例
GET 请求GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
2 响应报文
HTTP 响应报文的组成
HTTP 响应报文通常包括以下四个部分:状态行(Status Line)
响应头(Response Headers)
空行(Empty Line)
响应体(Response Body,可选)1. 状态行(Status Line)
状态行是响应报文的第一行,包含以下三个部分:
HTTP 版本(HTTP Version):表示服务器使用的 HTTP 协议版本,如 HTTP/1.1 或 HTTP/2。
状态码(Status Code):表示请求处理结果的三位数字代码,如 200、404、500 等。
状态信息(Status Message):对状态码的简短描述,如 OK、Not Found、Internal Server Error 等2. 响应头(Response Headers)
响应头是键值对的形式,用于传递附加信息,如服务器信息、响应内容类型、缓存控制等。每个响应头占一行,格式为 <字段名>: <值>。
常见响应头:
Server:服务器信息(如 Server: Apache/2.4.41)。
Content-Type:响应体的媒体类型(如 Content-Type: text/html)。3. 空行(Empty Line)
响应头和响应体之间必须有一个空行,用于分隔两部分。4. 响应体(Response Body,可选)
响应体是服务器返回给客户端的数据,通常是 HTML、JSON、XML 等格式。响应体的格式由 Content-Type 响应头指定。
完整的 HTTP 请求报文示例#响应状态行
< HTTP/1.1 403 Forbidden
#表示请求被拒绝,状态码403表示禁止访问#头部字段
< Date: Mon, 21 Aug 2023 11:00:34 GMT
#表示响应的日期和时间< Server: Apache/2.4.6 (CentOS)
#表示服务器正在使用的软件名称和版本< Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
#表示所请求资源的最后修改日期和时间< ETag: "1321-5058a1e728280"
#表示所请求资源的实体标签< Accept-Ranges: bytes
#服务器是否支持断点续传。< Content-Length: 4897
#响应实体主体的长度。< Content-Type: text/html; charset=UTF-8
#实体主体的类型和字符编码,表示响应内容是以UTF-8编码的HTML文本。
1.2.4 HTTP协议状态码
HTTP 状态码分类
状态码范围 | 类别 | 描述 |
---|---|---|
1xx | 信息性状态码(Informational) | 表示请求已被接收,继续处理。 |
2xx | 成功状态码(Success) | 表示请求已成功被服务器接收、理解并处理。 |
3xx | 重定向状态码(Redirection) | 表示需要客户端进一步操作以完成请求。 |
4xx | 客户端错误状态码(Client Error) | 表示客户端发送的请求有错误,服务器无法处理。 |
5xx | 服务器错误状态码(Server Error) | 表示服务器在处理请求时发生错误 |
HTTP协议常用的状态码
200 | OK | 请求成功,响应体中包含请求的结果。 |
301 | Moved Permanently | 请求的资源已永久移动到新位置,客户端应使用新的 URL。 |
302 | Found | 请求的资源临时移动到新位置,客户端应使用新的 URL。 |
307 | Temporary Redirect | 请求的资源临时移动到新位置,客户端应使用原始请求方法访问。 |
401 | Unauthorized | 请求需要身份验证,客户端未提供有效的凭证。 |
403 | Forbidden | 服务器拒绝执行请求,客户端没有访问权限。 |
404 | Not Found | 请求的资源在服务器上未找到。 |
414 | URI Too Long | 请求URL头部过长 |
500 | Internal Server Error | 服务器在处理请求时发生未知错误。 |
502 | Bad Gateway | 服务器作为网关或代理时,从上游服务器收到无效响应。 |
503 | Service Unavailable | 服务器暂时无法处理请求,通常是由于过载或维护。 |
504 | Gateway Timeout | 服务器作为网关或代理时,未能及时从上游服务器收到响应。 |
1.2.5 HTTP方法
HTTP(超文本传输协议)定义了一组请求方法(也称为 HTTP 方法或 HTTP 动词),用于指定客户端对服务器上资源的操作方式。
HTTP 方法 | 典型场景 |
---|---|
GET | 获取资源(如网页、图片、用户信息)。 |
POST | 创建新资源(如提交表单、上传文件)。 |
PUT | 更新或替换资源(如更新用户信息)。 |
DELETE | 删除资源(如删除用户、删除文件)。 |
PATCH | 部分更新资源(如修改用户的某个字段)。 |
HEAD | 检查资源是否存在或获取资源的元信息。 |
OPTIONS | 获取服务器支持的 HTTP 方法或进行跨域请求预检。 |
TRACE | 诊断请求,用于调试。 |
CONNECT | 建立隧道连接,通常用于 HTTPS 代理。 |
1.2.6 HTTP协议版本
HTTP/0.9:极其简单,仅支持 GET 方法
HTTP/1.0:支持 多种方法,如 GET
、POST
、HEAD
HTTP/1.1: 支持长连接
二.HTML CSS和JavaScript
HTML、CSS 和 JavaScript 是构建现代网页和 Web 应用的三大核心技术。
2.1HTML
2.1.1HTML的概述
定义:Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构
特点:使用标签(如<h1>
、<p>
、<div>
)组织内容。
2.1.2 HTML中的部分基本标签(了解)
标签 | 描述 | 示例 |
---|---|---|
<html> | HTML文档的根元素,包含整个网页内容。 | <html lang="zh-CN">...</html> |
<head> | 包含网页的元数据,如标题、字符编码等。 | <head><title>网页标题</title></head> |
<title> | 定义网页的标题,显示在浏览器标签页上。 | <title>我的网页</title> |
<body> | 包含网页的实际内容,用户可以看到的部分。 | <body><h1>欢迎</h1></body> |
<h1> 到 <h6> | 定义标题,<h1> 是最高级标题,<h6> 是最低级标题。 | <h1>一级标题</h1> |
<p> | 定义段落。 | <p>这是一个段落。</p> |
<a> | 定义超链接。 | <a href="https://www.example.com">访问示例网站</a> |
<img> | 插入图片。 | <img src="image.jpg" alt="图片描述"> |
<ul> | 定义无序列表。 | <ul><li>项目1</li><li>项目2</li></ul> |
<ol> | 定义有序列表。 | <ol><li>第一项</li><li>第二项</li></ol> |
<li> | 定义列表项。 | <li>列表项</li> |
<table> | 定义表格。 | <table><tr><th>表头</th></tr><tr><td>数据</td></tr></table> |
<tr> | 定义表格中的行。 | <tr><td>数据</td></tr> |
<th> | 定义表格中的表头单元格。 | <th>表头</th> |
<td> | 定义表格中的标准单元格。 | <td>数据</td> |
<form> | 定义表单,用于收集用户输入。 | <form action="/submit" method="post"><input type="text"></form> |
<div> | 通用的容器标签,用于分组和组织页面中的内容 | |
<input> | 定义输入字段,用于表单中。 | <input type="text" placeholder="请输入"> |
<button> | 定义按钮。 | <button type="submit">提交</button> |
<br> | 定义换行。 | <p>第一行<br>第二行</p> |
<hr> | 定义水平分隔线。 | <hr> |
<!-- --> | 定义注释,注释内容不会显示在页面上。 | <!-- 这是一个注释 --> |
2.1.3 HTML的文件结构(了解)
<html><head><title>网页标题</title></head><body><div><h1>标题</h1><p>段落内容</p></div></body>
</html>
2.2 CSS
- 作用:控制网页的样式和布局。
- 特点:
-
使用选择器(如
h1
、.class
、#id
)选择元素。 -
通过属性和值(如
color: red;
)定义样式。 -
支持响应式设计(如媒体查询)。
-
2.3 JavaScript
- 作用:实现网页的交互功能和动态行为。
- 特点:
- 是一种脚本语言,运行在浏览器中。
- 可以操作DOM(文档对象模型)动态修改网页内容。
- 支持事件处理(如点击、输入)。
- 通过AJAX与服务器异步通信
2.4 总结三者的关系
技术 | 作用 | 协作方式 |
---|---|---|
HTML | 定义网页的结构和内容。 | 提供网页的基本框架,CSS 和 JavaScript 在此基础上进行样式和交互的增强。 |
CSS | 控制网页的样式和布局。 | 通过选择器选择 HTML 元素并应用样式,使网页更美观。 |
JavaScript | 实现网页的交互功能和动态行为。 | 操作 DOM 修改 HTML 内容,监听事件响应用户操作,动态更新网页。 |
三者协助:HTML 提供基础,CSS 美化页面,JavaScript 增强交互,共同构建现代 Web 应用。
三.URI 和 URL
3.1定义
URI(Uniform Resource Identifier):统一资源标识,它包含两个子集:URL(Uniform Resource Locator):定位资源的位置。URN(Uniform Resource Name):标识资源的名称。
URL(Uniform Resorce Locator):统一资源定位符,用于描述某服务器某特定资源位置,通过 URL 可以访问资源(如网页、图片、文件等)。
3.2区别
特性 | URL | URN |
---|---|---|
目的 | 定位资源的位置。 | 标识资源的名称。 |
与位置关系 | 与资源的位置相关。 | 与资源的位置无关。 |
持久性 | 资源位置变化时,URL 失效。 | 资源位置变化时,URN 仍然有效。 |
3.3 URL的组成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
1. <scheme>
(协议)
-
作用:定义访问资源所使用的协议。
-
常见协议:
-
http
:超文本传输协议(未加密)。 -
https
:安全的超文本传输协议(加密)。 -
ftp
:文件传输协议。
-
https://
2. <user>:<password>
(用户名和密码)
-
作用:用于访问需要身份验证的资源(如 FTP 服务器)。
-
格式:
用户名:密码
。
user:password@
3. <host>
(主机名)
-
作用:标识资源所在的服务器。
-
格式:可以是域名(如
www.example.com
)或 IP 地址(如192.168.1.1
)。
www.example.com
4. <port>
(端口)
-
作用:指定服务器上用于访问资源的端口号。
-
默认端口:
-
http
默认端口为80
。 -
https
默认端口为443
。
-
:8080
5. <path>
(路径)
-
作用:指定资源在服务器上的具体位置。
-
格式:通常以
/
开头,表示目录层级。
/path/to/resource
6. <params>
(参数)
-
作用:为路径中的特定部分提供附加参数(较少使用)。
-
格式:以
;
分隔。
;param1=value1;param2=value2
7. <query>
(查询参数)
-
作用:向服务器传递额外的信息,通常用于过滤或搜索。
-
格式:以
?
开头,多个参数用&
分隔。
?key1=value1&key2=value2
8. <frag>
(片段)
-
作用:定位页面内的特定部分(如锚点)。
-
格式:以
#
开头。
#section1
三.Apache的工作模式
3.1apache是什么
Apache 是一个广泛使用的开源 Web 服务器软件,正式名称为 Apache HTTP Server。它由 Apache 软件基金会(Apache Software Foundation, ASF)开发和维护,是互联网上最流行的 Web 服务器之一。
3.2apache的三种工作模式
Apache HTTP Server(通常称为Apache)支持三种主要的工作模式,这些模式决定了Apache如何处理并发请求和与操作系统的交互。
1. Prefork
- 特点:
-
每个请求由一个独立的子进程处理。
-
每个子进程是单线程的,只能处理一个请求。
-
适用于需要与某些非线程安全的库(如某些PHP模块)兼容的情况。
-
- 优点:
-
稳定性高,因为每个请求都在独立的进程中运行,一个进程崩溃不会影响其他进程。
-
兼容性好,适合与不支持线程的模块一起使用。
-
- 缺点:
-
内存消耗较大,因为每个请求都需要一个独立的进程。
-
并发处理能力有限,不适合高并发场景。
-
2. Worker
- 特点:
-
使用多进程和多线程的混合模型。
-
每个进程可以创建多个线程,每个线程处理一个请求。
-
适合高并发的场景。
-
- 优点:
-
内存消耗相对较小,因为多个线程共享同一个进程的内存空间。
-
并发处理能力较强,适合处理大量并发请求。
-
- 缺点:
-
在某些情况下,工作节点可能会因为任务分配不均或任务数量不足而处于空闲状态,导致资源浪费。
-
相比Prefork模式,稳定性稍差,因为一个线程崩溃可能会影响整个进程。
-
3. Event
- 特点:
-
基于Worker,但引入了异步事件处理机制。
-
使用单独的线程来处理连接,而请求处理则由其他线程完成。
-
特别适合处理大量长连接(如Keep-Alive连接)。
-
- 优点:
-
在高并发和长连接场景下性能优异。
-
内存消耗较低,适合处理大量并发连接。
-
- 缺点:
-
对某些非线程安全的模块可能存在兼容性问题。
-
配置和调优相对复杂。
-