计算机学科基础

 

HTTP 详细介绍

请求与回应

什么是URL?(统一资源定位器)

34ad66d8b90aaaa35f9536d3b152ea97

方案(scheme): 这会指导使用哪种协议访问资源,比如HTTP、HTTPS、FTP(文件传输协议)。

用户(user): 有些服务需要身份验证才能登录,你可以在URL里输入用户名和密码登录。

主持人(host/domain): 你想访问服务器的域名或IP地址。

端口(port): 你要连接的端口通常是 HTTP80,HTTPS为443,但它可以托管在1到65535之间的任意端口上。

路径(path): 你试图访问的资源的文件名或位置。

查询字符串(query string): 可以发送到请求路径的额外信息。比如,/blog?id=1 会告诉博客路径你希望接收 ID 为 1 的博客文章。

片段(fragment): 这是对实际页面上某个地点的引用。这通常用于内容较长的页面,并且可以直接链接页面的某个部分,这样用户一进入页面就能立即查看。

 

提出请求

完全可以用一行 GET / HTTP/1.1 向 Web 服务器发出请求(请求方法+HTTP版本)

09e70200e7af451077081a3ee3d3708c

示例请求:

GET / HTTP/1.1

Host: tryhackme.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://tryhackme.com/

第1行: 该请求发送的是 GET 方法(HTTP 方法任务中有更多内容),请求主页,并告知 Web 服务器我们使用 HTTP 协议版本 1.1。

第2行: 我们告诉网页服务器我们想要网站的 tryhackme.com

第3行: 我们告诉网页服务器我们使用的是Firefox 87版浏览器

第4行: 我们告诉网页服务器,推荐我们访问的网页是 https://tryhackme.com

第5行:HTTP 请求总是以空行结尾,告知 Web 服务器请求已完成。

示例回答:

HTTP/1.1 200 OK

Server: nginx/1.15.8
Date: Fri, 09 Apr 2021 13:34:03 GMT
Content-Type: text/html
Content-Length: 98


<html>
<head>
    <title>TryHackMe</title>
</head>
<body>
    Welcome To TryHackMe.com
</body>
</html>

第1行: HTTP 1.1是服务器使用的HTTP协议版本,随后跟随HTTP状态码(此例为“200 OK”),表示请求已成功完成。

第2行: 这告诉我们网页服务器的软件和版本号。

第3行: 网页服务器的当前日期、时间和时区。

第4行: Content-Type 头告诉客户端将发送哪些信息,比如 HTML、图片、视频、PDF、XML。

第5行: Content-Length 告诉客户端响应的长度,这样我们就能确认没有数据缺失。

第6行: HTTP响应包含一行空行以确认HTTP响应的结束。

第7-14行: 所请求的信息,在这里是主页。

 

HTTP 方法

GET

这用于从网络服务器获取信息。

POST 

这用于向网页服务器提交数据,并可能创建新记录

PUT

这用于向网络服务器提交数据以更新信息

DELETE

这用于从网络服务器中删除信息/记录。

 

HTTP 状态码

常见的HTTP状态码:

HTTP 状态码有很多种,这还不包括应用程序可以自定义的状态码,我们将介绍你最可能遇到的最常见的 HTTP 响应:

200 - 好的 该请求已成功完成。
201年 - 创建 已经创建了一个资源(例如新用户或新博客文章)。
301 - 永久搬迁 这会将客户的浏览器重定向到新的网页,或者告诉搜索引擎该页面已移动到其他地方,要求他们去那里查看。
302 - 发现 类似于上述永久重定向,但顾名思义,这只是暂时的变化,未来可能还会再次更改。
400 - 糟糕的请求 这告诉浏览器他们的请求中存在问题或缺失。有时如果被请求的网页服务器资源期望某个参数,而客户端未发送,这种方法有时可以使用。
401 - 未授权 目前,未经网页应用授权(通常需用户名和密码)你无法查看该资源。
403 - 禁忌 无论您是否登录,您都无权查看本资源。
405 - 不允许使用方法 资源不允许该方法请求,例如,你向资源/create-account发送GET请求,而它本应接收POST请求。
404 - 页面未找到 你请求的页面/资源不存在。
500 - 内部服务错误 服务器遇到了你的请求出现了某种错误,不知道该如何正确处理。
503 - 服务不可用

这台服务器无法处理你的请求,因为它要么过载,要么正在维护中停机。

如果你是视觉型学习者,也可以看看一个很棒的 http.cat 资源来学习状态码。

 

Headers

通用请求头

这些是客户端(通常是浏览器)发送给服务器的头部。

主持Host有些服务器托管多个网站,所以通过提供主机头,你可以告诉它你需要哪个网站,否则你只能收到服务器的默认网站。

用户代理User-Agent这是你的浏览器软件和版本号,告诉网页服务器你的浏览器软件帮助它正确格式化网站,同时 HTML、JavaScript 和 CSS 的某些元素仅在特定浏览器中可用。

内容长度Content-Length当向网页服务器(如表单)发送数据时,内容长度告诉服务器应预期网络请求中的数据量。这样服务器可以确保没有遗漏任何数据。

接受编码Accept-Encoding告诉网页服务器浏览器支持哪些类型的压缩方法,以便通过互联网传输时数据更小。

饼干Cookie发送到服务器的数据以帮助记忆您的信息(详情请参见 cookies 任务)。

 

通用响应头

这些是服务器在请求后返回给客户端的头部。

套装饼干Set-Cookie存储信息,每次请求都会返回到网络服务器(更多信息请参见 cookies 任务)。

缓存控制Cache-Control在浏览器缓存中存储响应内容多久后,才会再次请求。

内容类型Content-Type这告诉客户返回的是哪种类型的数据,比如 HTML、CSS、JavaScript、图片、PDF、视频等。通过内容类型头,浏览器就能知道如何处理数据。

内容编码Content-Encoding: 通过互联网传输数据时,采用了什么方法压缩数据以使其更小?

 

COOKIE

a2117dc267fbb169e38be77c7af44027Snipaste_2026-01-04_18-37-03

 

Linux

echo  输出我们提供的任何文本

tryhackme@linux1:~$ echo "Hello Friend!"
Hello Friend!

whoami  可以用来查找我们登录的用户名

tryhackme@linux1:~$ whoami

ls  列出目录内容

tryhackme@linux1:~$ ls
'Important Files' 'My Documents' Notes Pictures

cat  查看文本文件的内容

tryhackme@linux1:~/Documents$ cat todo.txt
Here's something important for me to do later!

pwd  找这个“文档”文件夹的完整文件路径

tryhackme@linux1:~/Documents$ pwd
/home/ubuntu/Documents

find  查找文件

find -name passwords.txt  查找该特定文件

tryhackme@linux1:~$ find -name passwords.txt
./folder1/passwords.txt

find -name *.txt  搜索所有带有扩展名

tryhackme@linux1:~$ find -name *.txt
./folder1/passwords.txt
./Documents/todo.txt

 grep  允许我们搜索文件内容,寻找特定值

 举个例子,比如网页服务器的访问日志。在这种情况下,一个网络服务器的access.log有244个条目。

tryhackme@linux1:~$ wc -l access.log
244 access.log

用类似的命令在这里效果不佳。比如说,如果我们想搜索这个日志文件,看看某个用户/IP地址访问了哪些内容?在我们想要找到特定值的情况下,查看244个条目其实效率不高。cat

我们可以用它搜索该文件的全部内容,查找我们正在搜索的值的任何条目。以一个网页服务器的访问日志为例,我们希望看到IP地址“81.143.211.90”访问过的所有内容(注意这是虚构的)grep

tryhackme@linux1:~$ grep "81.143.211.90" access.log
81.143.211.90 - - [25/Mar/2021:11:17 + 0000] "GET / HTTP/1.1" 200 417 "-" "Mozilla/5.0 (Linux; Android 7.0; Moto G(4))"

 touch文件  mkdir文件夹   创建文件与文件夹

tryhackme@linux2:~$ touch note
tryhackme@linux2:~$ ls           
folder1 note
tryhackme@linux2:~$ mkdir mydirectory
tryhackme@linux2:~$ ls           
folder1 mydirectory note

rm 删除文件 -R删除文件夹

tryhackme@linux2:~$ rm note
tryhackme@linux2:~$ ls           
folder1 mydirectory
tryhackme@linux2:~$ rm -R mydirectory
tryhackme@linux2:~$ ls           
folder1

cp mv 复制和移动文件和文件夹

 cp将现有文件的全部内容复制到新文件中。在下面的截图中,我们正在将“note”复制到“note2”
tryhackme@linux2:~$ cp note note2
tryhackme@linux2:~$ ls           
folder1 note note2

移动文件需要两个参数,就像 cp 命令一样。然而,它不会复制和/或创建新文件,而是合并或修改我们作为参数的第二个文件。你不仅可以用来将文件移动到新文件夹,还可以用它重命名文件或文件夹。例如,在下面的截图中,我们将文件“note2”改名为“note3”。“Note3”现在将拥有“Note2”的内容

tryhackme@linux2:~$ mv note2 note3
tryhackme@linux2:~$ ls           
folder1 note note3

file 确定文件类型

tryhackme@linux2:~$ file note
note: ASCII text

nano 创建或编辑文件

Snipaste_2026-01-04_22-43-44

 scp  用于 Linux 之间复制文件和目录

从本地将文件传输到服务器
scp【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】
scp /Users/mac_pc/Desktop/test.png root@192.168.1.1:/root

scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】
scp root@192.168.1.1:/data/wwwroot/default/111.png /Users/mac_pc/Desktop

python3 -m  http.server

快速启动一个轻量级HTTP服务器,用于本地开发测试或临时文件共享

核心功能:监听指定端口,提供静态文件服务。
常见场景:
前端开发时本地预览页面
临时共享文件夹中的文件

目录暴露风险:服务器会暴露当前目录下所有文件

 

posted @ 2026-01-05 18:58  jiuziqing  阅读(3)  评论(0)    收藏  举报