day46 web的基础的协议
day46 正式进入网站的部署的学习
开篇前言
这是一个里程碑的学习,从小白到能够一键部署ansible的部署网站的搭建。
可以维护,一个中小型网站的运维的工作。且实现自动化的部署/
从 nfs 共享型数据库
rsync的备份的数据库
lsync自动检测服务。
nginx

web 通信的流程
总的来说分为3个部分
- 客户端 发起www.yuchaoit.cn 的请求到 DNS的权威的服务器
- 权威服务器 进行对应的ip的解析,获取到精准的IP地址 123.266.25.11 发个客户端
- 客户端的求情网页的 请求基于 tcp/ip 的规则 发给服务器web服务器服务器又基于tcp/ip的协议 发送网页的数据给到客户端。
1. 首先是部署好web服务器提供啦网站的功能。
最基本的内容的展示 html 和动态的数据 --- 图片,视频
2.浏览器,
ip先建立一个连接
在基于这个tcp的连接之上。
进行更加复杂的数据的传输
又在tcp的基础之上封装一个http制定的数据的创数的规则。
遵循规则
列如:
1.数据从哪里来。发到哪里去
2.数据从哪个端口发来的,发到哪个端口去
3.这个数据的类型是什么。
其实就好比你寄快递。


服务端和客户端的工作的流程
就好比浏览器 去访问虎牙的官网www.huya.com
# web服务端的工作的原理
1.客户端通过tcp/ip建立协议到服务端的tcp的链接
2,客户端向服务器发出http请求的包 ,请求服务器的资源的文档
3.服务端向服务端发出http的协议的回应的包。
4.客户端与服务器断开链接,tcp的链接断开结束
# 客户端请求到达服务端的流程。
1.当客户端拿到服务端的域名和对应的ip地址,浏览器会向服务端的80的端口发起tcp/ip的链接请求
2.该请求经过复杂的网络的环境到达服务器,进入服务器的对应的网,在进入到Linux 的tcp/ip的协议站最后到达nginx的程序确定tcp/ip的链接。
3.确认tcp/ip的链接后,客户端继续发起请求的访问
最后很重要的两个点
- tcp/ip
- http

tcp/ip的协议
首先这个点有点难理解我们用简单的方式
# 相当于寄快递、
我手中有一个 飞机杯 送到对方的手中
会经过N个关卡,一层一层的检测
经过N个中转站,最终送到对方的手中
最终这个快递从A 到 B经过的路线
这个技术被称为路由的技术
osi7层的模型


常见端口号
常用的熟知端口号
| 应用程序 | FTP | TFTP | TELNET | SMTP | DNS | HTTP | SSH | MYSQL |
|---|---|---|---|---|---|---|---|---|
| 熟知端口 | 21,20 | 69 | 23 | 25 | 53 | 80 | 22 | 3306 |
| 传输层协议 | TCP | UDP | TCP | TCP | UDP | TCP | TCP | TCP |
什么是socket套接字
任何,两个机器的连接,指的是tcp/ip协议的连接,本质上是两个socket的通信
socket套接字就是 ip+port的具象化
比如部署nginx服务,运行在 10.0.0.7:80 端口,这就是一个socket
通过本地去访问这个socket,浏览器随机指定的端口,发出请求
10.0.0.1:61145 这个也是一个socket
本地套接字
比如单机LNMP,应用程序在机器内部内存之间数据交互
========================================
套接字存在的意义,在于让两端进行数据交互,数据传输
php
10.0.0.7:9000
mysql(10.0.0.7:3306 这是一个ip:port形式的 socket)
mysql -uroot -p -h10.0.0.7
================================================================================
另一个形式是,也就是文件形式的本地socket
(因为本地内存文件socket形式,比网络socket传输效率更高,)
在后面高级部分,我教大家企业常用的python后端部署
socket的都是具象化证明服务的确运行了,可以对外提供访问了,可以交互了
mysql运行在 /tmp/mysql.sock
这个文件存在,则表示mysql运行
你可以通过这个/tmp/mysql.sock去登录mysql数据库
咱们暂时部署形式都是 网络socket形式,将程序部署在 ip:port的形式。。
网络套接字
部署LNMP,这是不同机器之间的远程访问,就是远程socket
比如 http协议的交互
10.0.0.1:61145 > 10.0.0.7:80
马上学习nginx反向代理,远程部署
lb-5
10.0.0.5:80
↓
web-7
10.0.0.7:9000 (php-fpm)
叫做远程的socket通信
简单说就是你部署 10.0.0.5:80 这个服务,还会和远程的另一个服务通过网络通信
10.0.0.7:9000
两端进行数据交互
HTTP协议工作原理
这些内容,都是你部署网站,后续的nginx高级知识点,必备的内容
无状态
http默认不会记住每一次连接的状态信息,下一次都会认为是一个新的客户端连接
比如你去找到禁用谷歌浏览器的cookie功能,
1.你去禁用这个功能后
2. 你每次登录淘宝网, 再打开一页面,网站又提示你需要登录
。。
这是网站为了解决无状态实现的技术
。。。
cookie
后续HTTP知识
剩下这些,就是我们后续学nginx会用到的基础知识了,大家看博客,做好学习笔记即可。
请求方法
定义client发给server的请求,是什么类型
-
get获取静态数据(查看一个图片)
-
post 发送提交一些数据 (登录表单,提交账户密码数据)
-
...一堆方法,看博客即可
请求、响应报文查看
通过F12即可查看,也可以通过抓包工具查看
。。
慢慢学,慢慢练
响应状态码
1. 当你client 发出 get请求 获取一个图片信息 ,发出requests
2. server 响应结果,nginx找到这个图片,返回给用户, response
响应信息,是有对应的状态码的。。
学习nginx会遇见的内容
- 20x系列,表示请求,响应正常解析
- 30x系列,表示本次请求,被转发到另一个服务器上了。。
- 40x系列,表示client客户端访问的url有问题,该资源不存在
- 50x系列,表示网站的服务端出错了(php-fpm)没有运行
- 。。。
听懂 扣 2 不懂 3
总结梳理,面试拿出来背即可
这些更多的理论,很重要,必须你要做好笔记,去背,记忆,否则面试一问三不知。。
1.dns篇
用户访问域名www.yuchaoit.cn
↓
浏览器跳转
↓
浏览器缓存(disk cache)
↓
Hosts文件
↓
本地DNS服务器(递归查询 > 迭代查询)
↓
client 向 server发起查询(递归查询)
server 向 server发起查询(迭代查询)
2.TCP/IP协议篇(三次握手)
client > SYN报文,请求连接
server > SYN,ACK报文 响应client
client > ACK,建立连接
3.客户端发起http请求
- 请求方法是什么、get、post、delete
- 请求主机是什么、www.yuchaoit.cn
- 请求资源是什么 、 http://yuchaoit.cn:8090/upload/2022/05/Xnip2022-05-01_16-32-30-b82235c9b62c42af8ea25e0313ca42f7.jpg
- 请求端口是什么、默认http是80、https是443
- 请求参数是什么、请求头部信息(资源类型、是否压缩、cookie、浏览器客户端等)
- 请求信息最后的换行
4.服务端响应的内容
- server信息(web服务器软件类型)
- 响应文件类型
- 响应头部信息(是否压缩,语言编码,是否保持连接等)
5.客户端发起TCP四次挥手断开连接。
client > 发起断开请求 FIN=1
server > 响应断开 FIN、ACK
server > 发起断开请求 FIN=1
client > 确认断开连接 ACK
浙公网安备 33010602011771号