Linux学习第一周
Linux学习第一周
一.安装VMware
1.下载安装
官网下载https://www.vmware.com/products/desktop-hypervisor/workstation-and-fusion
下载完成后,双击安装包文件开始安装。
如果系统提示权限请求,选择“是”或“允许”以继续安装。
进入安装向导后,点击“下一步”继续。
选择VMware Workstation的安装目录。默认位置通常在C盘,但建议更改到其他磁盘以节省C盘空间。 点击“更改”按钮,选择新的安装位置,然后点击“确定”。
点击“安装”按钮开始安装
输入密钥,去互联网检索即可
2.虚拟机网络环境:确保以下服务为开启状态
3.Ubuntu安装
官网地址:https://cn.ubuntu.com/,https://ubuntu.com
镜像地址:https://cn.ubuntu.com/download, https://ubuntu.com/download
下载镜像
点击 新建虚拟机
选择我们之前下载好的Ubuntu 24.04系统镜像
输入用户名和密码,虚拟机命名
定制虚拟机的磁盘容量(默认20G,该值越大越好),然后可以进行硬件的基本配置
注意:
磁盘容量是虚拟的,不受宿主机物理磁盘空间限制。
尽量不要勾选创建后开启次虚拟机
点击 自定义硬件
点击内存,调整内容容量为 4G
点击cpu,不勾选cpu性能计数器
硬件配置完毕后,直接点击 关闭,查看创建的虚拟机效果
点击 开启此虚拟机
稍等一下,出现文字界面后,
- 鼠标点击 黑色终端页面 【注意:此时是看不到任何鼠标痕迹的,如果想要退出终端,Ctrl +
Alt】
- 上下箭头 调整到 Try or install Ubuntu
- 直接按 键盘Enter
黑屏稍微等待一下,1min,会进行系统的基本信息启动配置,持续2min左右,而后再次转入黑屏,持续2min。
进入安装界面后先断开网络连接(联网的话安装速度慢)
语言和键盘设置中文
以下选项点击下一步
账户设置
时区选上海
点击安装
立即重启
手动配置IP地址
安装vmtools
sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop -y
reboot
3.ssh远程登陆
ubuntu安装openssh
sudo apt install openssh-server
打开ssh的配置文件 /etc/ssh/sshd_config,修改PermitRootLogin保存
重启ssh服务
sudo systemctl restart ssh.service
查看22端口是否开放
ss -tnulp
使用MobaXterm软件远程连接
连接失败可重新设置root密码后再尝试
sudo passwd root
连接成功
二.什么是shell,以及常见的各类shell
Shell 是一种命令行解释器,它提供了用户与操作系统内核之间的接口。用户通过在 Shell 中输入命令,Shell 将这些命令解释并传递给操作系统内核执行,然后将执行结果返回给用户。此外,Shell 还具有编程功能,可将一系列命令组合成脚本,实现自动化任务处理。
以下是shell在不同的操作系统上的分类:
图形界面shell
图形界面shell就是我们常说的桌面
命令行式shell
windows系统: cmd.exe 命令提示字符
linux系统: sh / csh / ksh / bash(默认) / ...
每一个终端都有一个 shell来承载命令的执行
三.linux常用基本命令用法,以及查看帮助文档的方法
查看当前用户 `whoami`
id 于查看当前登录用户的全面信息,包括归属的用户管理组信息
root@stu22-VMware-Virtual-Platform:~# id
uid=0(root) gid=0(root) 组=0(root)
root@stu22-VMware-Virtual-Platform:~#
命令 su 可以切换当前用户身份到另外一个用户
命令 exit 可以回退到刚才的那个用户身份
root@stu22-VMware-Virtual-Platform:~# su stu22
stu22@stu22-VMware-Virtual-Platform:/root$ exit
exit
root@stu22-VMware-Virtual-Platform:~#
w显示当前系统的登录用户及其活动状态
root@stu22-VMware-Virtual-Platform:~# w
10:53:40 up 4:24, 3 users, load average: 1.17, 0.88, 0.44
USER TTY 来自 LOGIN@ IDLE JCPU PCPU WHAT
stu22 tty2 - 三16 18:39m 0.02s 0.02s /usr/libexec/gnome-session-binary --session=ubuntu
root 10.0.0.1 三17 17:58m 0.00s 0.15s sshd: root@pts/1
root 10.0.0.1 10:53 17:58m 0.00s 0.12s sshd: root@pts/3
root@stu22-VMware-Virtual-Platform:~#
pwd查看我在哪
ls查看当前目录文件
ls -l 查看文件详细信息=ll
tree查看目录树形结构
cd切换目录
cp复制文件
使用方式 cp [options] 源文件 目标文件
直接拷贝目录 要加上参数-r
参数-a,实现完美的复制,拷贝前后文件内容完全一样
mv移动文件
mv 源文件或目录 目标文件或目录
注意:
如果源文件和目标文件在同一目录,表明该操作是 改名
如果源文件和目标文件不在同一目录,表明该操作是 转移
mkdir创建目录
mkdir [-p] 目录位置
touch创建文件
touch 文件名称
rm删除文件
rm -f 普通文件
rm -rf 目录文件
env查看系统默认的变量
lscpu查看cpu信息
free查看内存信息
uname -r查看内核信息
ps aux显示所有所有进程,并列出属主
ps -ef显示所有所有进程,并列出属主
ps -eFH详细格式显示所有进程
命令行切换
Ctrl + A 光标迅速回到行首
Ctrl + E 光标迅速回到行尾
Ctrl + k 删除光标到行尾内容
Ctrl + u 删除光标到行首内容
Ctrl + y 粘贴删除的内容
Ctrl + c 临时终止命令行命令
文件管理:
cat 查看文本内容
命令格式
cat [OPTION]... [FILE]...
常见选项
-n|--number #显示行号
一般选项
-E|--show-ends #显示行结束符$
-A|--show-all #显示所有控制符
-b|--number-nonblank #非空行编号
-s|--squeeze-blank #压缩连续的空行成一行
向文件中写入内容
cat > /etc/nginx/conf.d/vhost.conf <<-eof
......
eof
grep 负责从数据源中检索对应的字符串,行过滤
命令格式
grep [options] 'keys' [filename]
常见选项:
-i: 不区分大小写
-n: 显示行号
-r: 逐层遍历目录查找
-v: 查找不包含指定内容的行,反向选择
-E:使用扩展正则匹配
^key:以关键字开头
key$:以关键字结尾
^$:匹配空行
一般选项:
-A: 显示匹配行及后面多少行
-B: 显示匹配行及前面多少行
-C: 显示匹配行前后多少行
--color=auto :可以将找到的关键词部分加上颜色的显示
more 可以实现分页查看文件
命令格式
more [OPTIONS...] FILE...
常用选项
-d #在底部显示提示
-s #压缩连续空行
常用动作
空格键 #翻页
回车键 #下一行
q #退出
nano编辑器
编辑文件
nano [文件名]
编辑操作
Ctrl + O:保存文件。
Ctrl + X:退出编辑器。 *****
Ctrl + G:获取帮助。
Ctrl + W:搜索文本。
Alt + M:切换鼠标支持(如果可用)。
vim编辑器
编辑文件
vi | vim [文件名]
编辑操作
a | i | o : 进入编辑文件模式。
Esc : 退出编辑模式。
:wq : 保存文件。
:q : 撤销保存文件。
echo输出
OPTIONS:
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
转义字符
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\0nnn 打印nnn(八进制)所代表的ASCII字符; 备注:数字0 不要理解成字母o
\xNN 打印NN(十六进制)所代表的ASCII字符;
-–help 显示帮助
-–version显示版本信息
echo查看变量
echo $变量名
四.linux文件系统目录结构和目录的功能
Linux 文件系统采用树形目录结构,根目录(/)位于树的顶端,下面包含多个子目录,每个子目录都有其特定的功能。以下是一些主要目录及其功能:
/bin:存放二进制可执行文件,如常用的命令ls、cd、mkdir等,这些命令是系统正常运行所必需的,普通用户和系统管理员都可以使用。
/sbin:主要存放系统管理员使用的二进制可执行文件,例如ifconfig、reboot、shutdown等命令,这些命令通常用于系统管理和维护,需要管理员权限才能执行。
/etc:用于存放系统的配置文件,例如网络配置文件、用户账户信息、系统服务配置等。几乎所有系统服务和应用程序的配置文件都在这里,对系统的正常运行起着关键作用。
/home:普通用户的主目录所在位置,每个用户都有一个以自己用户名命名的子目录,用于存放个人文件和配置。例如,用户user1的主目录就是/home/user1。
/root:系统管理员(root 用户)的主目录,与普通用户的/home目录类似,但具有更高的权限,用于存放 root 用户的个人文件和配置。
/var:用于存放可变数据,如日志文件、邮件文件、缓存文件等。随着系统的运行,这些文件会不断变化和增长。例如,系统日志文件通常存放在/var/log目录下。
/tmp:临时文件目录,用于存放系统和应用程序运行过程中产生的临时文件。系统在重启时会自动清理该目录,所以不适合长期保存重要文件。
/usr:包含了系统的共享资源和应用程序,类似于 Windows 系统中的Program Files目录。它下面有多个子目录,如/usr/bin存放用户可执行的二进制文件,/usr/lib存放共享库文件,/usr/share存放共享数据,如文档、图标、字体等。
/opt:用于安装可选的软件包,通常是一些第三方软件或企业级应用程序。这些软件可以装在/opt目录下的独立子目录中,以便与系统自带的软件区分开来。
/dev:该目录包含了系统中的设备文件,如硬盘、光驱、串口、并口等设备都在这个目录中有对应的文件。通过这些设备文件,用户和应用程序可以访问和控制硬件设备。
/proc:这是一个虚拟文件系统,它提供了系统内核和进程的相关信息。例如,/proc/cpuinfo文件包含了 CPU 的信息,/proc/meminfo文件包含了内存的信息。用户和应用程序可以通过读取这些文件来获取系统的运行状态。
/sys:也是一个虚拟文件系统,用于提供系统硬件设备的相关信息和控制接口。它主要用于内核和用户空间之间的交互,让用户可以通过文件系统的方式访问和管理硬件设备的属性和状态。
六.总结文件元数据相关的知识点,包含硬链接和软连接的区别等知识
文件元数据包含内容
-
基本信息:文件的大小,即文件实际占用磁盘空间的字节数;文件的创建时间,标记文件首次被创建的时刻;修改时间,记录文件内容最后一次被修改的时间;访问时间,指文件最后一次被访问(读取或执行)的时间 。
-
权限信息:规定了文件所有者、所属组以及其他用户对文件的读、写、执行权限,决定了不同用户对文件的操作能力。例如,rwxr-xr-x 表示所有者有读、写、执行权限,所属组和其他用户只有读和执行权限。
-
所有者和所属组:明确文件归属于哪个用户以及哪个用户组,方便进行用户权限管理和文件共享设置 。
-
文件类型:标识文件是普通文件、目录、设备文件、符号链接文件等,不同类型文件在操作系统中有不同的处理方式 。
硬链接与软连接(符号链接)区别
-
本质:硬链接本质上是同一个文件的多个别名,它们共享同一个 inode(索引节点,包含文件元数据信息)和文件数据块 ,即多个硬链接指向磁盘上同一个物理存储位置。软连接则是一个特殊的文件,它有自己独立的 inode,其内容是指向目标文件的路径,类似于 Windows 系统中的快捷方式 。
-
文件 inode:硬链接和源文件具有相同的 inode 编号,这使得它们在文件系统中被视为同一个文件 。软连接有自己独特的 inode 编号,与目标文件的 inode 不同 。
-
文件删除影响:删除源文件时,只要还有硬链接存在,文件的数据块就不会被真正删除,因为 inode 的链接计数不为 0 。而删除软连接的目标文件后,软连接文件依然存在,但成为了无效链接,访问时会提示文件不存在 。
-
跨文件系统:硬链接不能跨越不同的文件系统创建,因为不同文件系统的 inode 编号不通用 。软连接可以跨越文件系统,只要目标文件路径正确,就可以在不同文件系统之间创建软连接 。
-
文件大小:硬链接的文件大小与源文件相同,因为它们共享数据 。软连接文件大小通常是目标文件路径的长度,因为它只是存储了一个路径指向 。
七.总结开放系统互联OSI模型,每层作用及对应的协议
物理层
-
作用:在物理介质上传输原始的比特流,定义了网络设备的电气、机械、功能和规程特性,确保不同设备之间的物理连接和信号传输。
-
对应协议:EIA/TIA-232、EIA/TIA-449、V.35、RJ45 等,这些协议规定了诸如网线接口标准、信号电平、传输速率等物理层面的规范。
数据链路层
-
作用:负责将物理层接收到的比特流组装成数据帧,并进行错误检测和纠正,通过 MAC 地址实现相邻节点间的数据传输,还提供介质访问控制功能,解决多节点争用链路的问题。
-
对应协议:以太网协议(IEEE 802.3)、PPP 协议(Point - to - Point Protocol)、HDLC 协议(High - Level Data Link Control)等。以太网协议定义了局域网中数据帧的格式和传输规则;PPP 协议常用于广域网中,实现点对点链路的建立、配置和测试;HDLC 协议则是一种面向比特的数据链路层协议,广泛应用于同步通信链路。
网络层
-
作用:负责将数据从源节点传输到目的节点,通过 IP 地址进行逻辑寻址,选择最佳路径转发数据包,实现不同网络之间的互联和路由功能,处理拥塞控制和网络互联问题。
-
对应协议:IP 协议(Internet Protocol)、ICMP 协议(Internet Control Message Protocol)、IGMP 协议(Internet Group Management Protocol)等。IP 协议是网络层的核心协议,定义了 IP 地址和数据包格式;ICMP 协议用于在 IP 网络中传递控制信息,如差错报告、网络可达性测试等;IGMP 协议用于管理 IP 组播,实现主机与路由器之间的组成员关系管理。
传输层
-
作用:为应用层提供端到端的可靠或不可靠的数据传输服务,负责分割和重组数据,建立、维护和拆除端到端的连接,通过端口号标识不同的应用进程,实现多路复用和分用功能,提供流量控制和拥塞控制机制。
-
对应协议:TCP 协议(Transmission Control Protocol)和 UDP 协议(User Datagram Protocol)。TCP 协议提供可靠的面向连接的数据传输服务,通过三次握手建立连接,采用确认、重传、流量控制和拥塞控制等机制确保数据的可靠传输;UDP 协议提供不可靠的无连接的数据传输服务,具有简单、高效的特点,常用于对实时性要求较高但对数据可靠性要求较低的应用,如视频流、音频流传输等。
会话层
-
作用:负责建立、管理和终止会话,协调不同主机上各种进程之间的通信,提供会话同步和活动管理功能,允许在会话期间进行数据的分段和同步点设置,以便在发生故障时能够从同步点重新开始会话。
-
对应协议:NetBIOS(Network Basic Input/Output System)、SQL(Structured Query Language,在会话管理方面有相关功能)等。NetBIOS 用于在局域网中实现计算机之间的通信和资源共享,提供了会话层的功能支持;SQL 在数据库应用中,会话层相关功能用于管理数据库连接会话,确保数据操作的正确执行和事务的一致性。
表示层
-
作用:负责处理数据的表示和转换,包括数据的加密和解密、压缩和解压缩、字符编码转换等,确保不同系统之间能够正确理解和处理数据,解决应用层数据格式的差异问题。
-
对应协议:SSL/TLS 协议(Secure Sockets Layer/Transport Layer Security)、MIME 协议(Multipurpose Internet Mail Extensions)等。SSL/TLS 协议用于在网络通信中实现数据的加密传输,保证数据的保密性和完整性;MIME 协议扩展了电子邮件的格式,使其能够支持多种类型的数据,如图片、音频、视频等,解决了不同邮件系统之间的数据表示差异问题。
应用层
-
作用:直接为用户应用程序提供服务,是用户与网络的接口,负责处理特定的应用程序逻辑,如文件传输、电子邮件发送、远程登录等。
-
对应协议:HTTP 协议(Hyper - Text Transfer Protocol)、FTP 协议(File Transfer Protocol)、SMTP 协议(Simple Mail Transfer Protocol)、POP3 协议(Post Office Protocol - Version 3)、Telnet 协议等。HTTP 协议用于在 Web 浏览器和 Web 服务器之间传输超文本信息,是互联网上应用最广泛的协议之一;FTP 协议用于实现文件的上传和下载;SMTP 协议用于发送电子邮件;POP3 协议用于接收电子邮件;Telnet 协议用于远程登录到其他计算机,实现远程管理和操作。
八.总结TCP包头结构,TCP三次握手,4次挥手
九.主机到主机的包传递过程
-
应用层数据封装:应用程序产生的数据首先到达应用层,应用层会在数据上添加相应的首部信息,如 HTTP、SMTP 等协议的首部,将其封装成应用层报文。
-
传输层分段与封装:传输层(如 TCP 或 UDP)接收应用层报文,将其分割成适合网络传输的段,并添加传输层首部。TCP 首部包含源端口、目的端口、序列号、确认号等信息,UDP 首部包含源端口、目的端口等。
-
网络层封装:网络层将传输层的段封装成数据包,添加网络层首部,包含源 IP 地址、目的 IP 地址等。网络层根据目的 IP 地址进行路由选择,确定数据包要经过的路径。
-
数据链路层封装:数据链路层将网络层数据包封装成帧,添加数据链路层首部和尾部,包含源 MAC 地址、目的 MAC 地址等。在局域网中,通过 MAC 地址进行数据帧的传输。
-
物理层传输:物理层将数据链路层的帧转换为比特流,通过物理介质(如网线、光纤、无线信号等)进行传输。
-
中间设备转发:数据包在传输过程中可能会经过路由器、交换机等中间设备。路由器根据网络层的目的 IP 地址进行路由转发,交换机根据数据链路层的 MAC 地址进行帧转发。
-
目的主机接收与解封:目的主机的物理层接收到比特流后,依次向上经过数据链路层、网络层、传输层和应用层。每一层根据相应的首部信息进行解封装,去除本层的首部,将数据传递给上一层,最终将原始数据交付给目的应用程序。
十.总结IP地址 A, B, C, D 类,并解析IP地址的组成
IP 地址是互联网协议地址,用于在网络中标识设备的位置。以下是对 A、B、C、D 类 IP 地址的总结以及 IP 地址组成的解析:
IP 地址的分类
A 类地址
-
范围:1.0.0.0 - 126.255.255.255。
-
特点:首位为 0,网络号占 8 位,主机号占 24 位。A 类地址允许有 126 个网络,每个网络大约有 1600 万个主机地址,适用于大型网络。
B 类地址
-
范围:128.0.0.0 - 191.255.255.255。
-
特点:前两位为 10,网络号占 16 位,主机号占 16 位。B 类地址允许有 16384 个网络,每个网络有 65534 个主机地址,适用于中等规模网络。
C 类地址
-
范围:192.0.0.0 - 223.255.255.255。
-
特点:前三位为 110,网络号占 24 位,主机号占 8 位。C 类地址允许有 2097152 个网络,每个网络有 254 个主机地址,常用于小型网络。
D 类地址
-
范围:224.0.0.0 - 239.255.255.255。
-
特点:前四位为 1110,D 类地址用于组播,没有网络号和主机号的区分,它标识的是一组主机,当数据发送到组播地址时,会被该组内的所有主机接收。
IP 地址的组成
IP 地址由网络号和主机号两部分组成。
-
网络号:用于标识设备所在的网络,同一网络中的设备具有相同的网络号。路由器等网络设备根据网络号来转发数据包,以确定数据要发送到哪个网络。
-
主机号:用于在一个网络中唯一标识每台设备。在同一个网络内,不同设备的主机号是不同的。
通过这种分层结构,IP 地址既能够标识设备所在的网络,又能标识网络中的具体设备,从而实现了在互联网中准确地路由和传输数据。
十.201.222.200.111/18计算主机数?子网掩码?说明计算方法
201.222.200.111/18表示IP地址二进制前18位是网络号,后14位是主机号
子网掩码前18位为1,后14位是0
11111111.11111111.11000000.00000000转换为十进制是255.255.192.0
主机数=2^14-2=16382,因为主机数全0表示网络地址,全1表示广播地址
十二.当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
A 的网络地址是 10.0.0.0,B 的网络地址是 10.0.2.0,二者网络地址不同,判断出二者不在同一网段,A 和 B 不能直接通信,需要借助路由器等设备实现通信。
十三.如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数
子网划分思路
-
10.0.0.0/8表示网络前缀为 8 位,即子网掩码为255.0.0.0,剩余的32 - 8 = 24位为主机位。
-
要划分成 32 个子网,因为(2^n = 32)((n)为借用的主机位位数),所以(n = 5),即需要从原来的 24 位主机位中借用 5 位来作为子网位。
每个子网的掩码计算
-
原来的网络前缀是 8 位,借用 5 位后,新的网络前缀变为(8 + 5 = 13)位。
-
那么子网掩码的前 13 位为 1,后(32 - 13 = 19)位为 0。
-
二进制表示的子网掩码为11111111.11100000.00000000.00000000,转换为十进制就是255.224.0.0 。
每个子网的主机数计算
-
每个子网剩余的主机位为(24 - 5 = 19)位。
-
根据主机数计算公式(2^m - 2)((m)为主机位位数),可得每个子网的主机数为(2^{19} - 2 = 524288 - 2 = 524286) 。其中减去 2 是因为主机位全为 0 的地址是子网网络地址,主机位全为 1 的地址是子网广播地址,这两个地址不能分配给主机使用。
综上,将10.0.0.0/8划分成 32 个子网时,每个子网的掩码是255.224.0.0,每个子网的主机数是 524286。
十四.完成hexo博客页面的部署
十五.总结http协议常见的状态码和一次http请求的完整流程(面试常问)
1xx 信息性状态码:表示请求已被接收,继续处理。例如 100 Continue,客户端应继续其请求,常用于 POST 请求中,当客户端发送大文件或需要多次请求头时,服务器先返回 100 Continue,告知客户端可以继续发送请求体。
2xx 成功状态码:表示请求已成功被服务器接收、理解、并接受 。
200 OK 最为常见,代表一切正常,请求成功,服务器已成功处理请求并返回相应数据;
201 Created 表示请求成功并且服务器创建了新的资源;
204 No Content 表示服务器成功处理了请求,但没有返回任何内容,常用于 DELETE 请求成功删除资源后。
3xx 重定向状态码:表示需要客户端采取进一步的操作才能完成请求。
301 Moved Permanently 表示资源已被永久移动到新的 URL,搜索引擎会根据这个状态码更新索引;302 Found 和 307 Temporary Redirect 类似,都表示资源临时移动到新的 URL,客户端应使用原 URL 继续访问;
304 Not Modified 用于缓存控制,客户端发送附带条件的请求时(如 If - Modified - Since 等),如果服务器认为资源未被修改,返回此状态码,客户端可以直接使用本地缓存。
4xx 客户端错误状态码:表示客户端可能存在错误,妨碍了服务器的处理。
400 Bad Request 表示客户端请求有语法错误,服务器无法理解;
401 Unauthorized 表示请求要求用户的身份认证,常用于需要登录的场景;
403 Forbidden 表示服务器理解请求,但拒绝执行,通常是因为权限不足;
404 Not Found 表示服务器无法找到请求的资源。
5xx 服务器错误状态码:表示服务器在处理请求的过程中发生了错误。
500 Internal Server Error 是最常见的服务器错误,代表服务器遇到了意外情况,无法完成请求;
502 Bad Gateway 表示作为网关或代理的服务器,从上游服务器接收到无效的响应;
503 Service Unavailable 表示服务器目前无法使用,可能是服务器维护或过载等原因。
一次 HTTP 请求的完整流程
建立 TCP 连接:HTTP 是基于 TCP 协议的应用层协议,在发送 HTTP 请求前,客户端(如浏览器)首先要与服务器建立 TCP 连接。这通过 TCP 的三次握手来实现:客户端发送 SYN 包到服务器,服务器收到后返回 SYN + ACK 包,客户端再发送 ACK 包,至此 TCP 连接建立成功 。
发送 HTTP 请求:TCP 连接建立后,客户端向服务器发送 HTTP 请求报文。请求报文包含请求行(如 GET /index.html HTTP/1.1,其中 GET 是请求方法,/index.html 是请求资源路径,HTTP/1.1 是 HTTP 协议版本)、请求头(如 User - Agent 用于标识客户端类型,Accept 用于表示客户端接受的数据类型等)、空行和请求体(GET 请求一般没有请求体,POST 请求会在请求体中携带数据)。
服务器处理请求:服务器接收到 HTTP 请求后,根据请求方法和请求资源路径,找到对应的处理程序。例如,对于一个动态网页请求,服务器可能会调用后端的脚本语言(如 PHP、Python 的 Flask 框架等)来处理,查询数据库获取数据,进行业务逻辑处理等。
服务器返回 HTTP 响应:服务器处理完请求后,向客户端返回 HTTP 响应报文。响应报文包含状态行(如 HTTP/1.1 200 OK,其中 HTTP/1.1 是协议版本,200 是状态码,OK 是状态描述)、响应头(如 Content - Type 用于指定响应数据的类型,Content - Length 用于指定响应数据的长度等)、空行和响应体(包含实际返回给客户端的数据,如 HTML 页面、JSON 数据等)。
关闭 TCP 连接:客户端收到 HTTP 响应后,读取响应数据进行解析和展示。如果客户端和服务器没有后续的交互,或者满足了 TCP 连接关闭的条件(如客户端或服务器主动发起关闭请求),就会通过 TCP 的四次挥手来关闭连接。客户端发送 FIN 包,服务器返回 ACK 包,服务器再发送 FIN 包,客户端最后返回 ACK 包,完成连接关闭 。