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. 你每次登录淘宝网, 再打开一页面,网站又提示你需要登录
。。

这是网站为了解决无状态实现的技术

。。。



后续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
posted @ 2025-04-04 22:45  国家一级冲浪yzk  阅读(14)  评论(0)    收藏  举报