• web基础和http协议


    dns于域名:

    网络上的通信都是基于IP,通信模式:TCP/IP
    tcp建立连接和断开连接,都是要双方进行确认的
    建立连接:三次握手断开连接:四次挥手
    通信时端到端端口进行通信(进程或者服务都是有指定的端口号。)
    http 80  nginx 80  ssh 22  mysql 3306
    ip地址:端口号  ip地址是主机在互联网上的唯一标识。

    ip是确定身份  端口:确定访问对象。
    公网ip地址已经没了,现在这个唯一标识(ip地址)需要nat地址转换。
    ip地址是一个点分十进制组成的192.168.233.10
    192.168.233:网络位10:主机位

    dns解析:
    网站都是域名,dns解析的作用是把域名解析成ip地址
    迭代:从根域名到二级域
    返回用户的过程:递归----运营商-----本地hosts----用户
    三种方式:
    1./etc/hosts本地解析,速度最快,缺点:如果需要配置的解析地址多,工作量比较大
    格式
    192.168.233.10 www.kgc.com
    访问域名就是在访问ip地址

    2.DNS服务器来进行解析
    运营商:运营商提供一个DNS解析的ip地址。
    /etc/resolv.conf
    格式:
    nameserver 218.2.135.1

    3.网卡配置:ifcfg-ens33

    生效的顺序:
    hosts文件的优先级最高…- ----网卡配置--------dns服务器(resolv.conf)

    分布式和集群

    分布式:把计算机系统或者应用程序分布在多台独立的计算机或者服务器上。通过网络通信以及协作,共同完成特定的任务或者服务。工作负载分散到多个节点上,提高性能和可靠性。
    分布式前端的nginx分布式数据库。分布式分件系统

    集群:多台计算机或者服务器连接在一块,形成一个单一的计算资源池。计算机通过网络互相连接,共享任务,集群都是由相同类型的计算机组成。运行的程序也是相同的。
    作用:通过增加计算机节点,扩展系统,然后提高整体的处理能力和容量。

    LNMP架构:
    部署L linux
    n:nginx提供网页访问 nginx1 nginx2
    M:MYSQL数据库,保存用户名和密码
    p:PHP,处理动态页面。

    html:超文本标记语言,也是我们最常见的网页格式。是一种规范,也是一种标准。也是一个文本文件。
    xxx.html
    xxx.htm

    网页:纯文本格式的文件  语言HTML。浏览器来翻译html语言形成网页
    网站:是由多个网页组成,网页的结合体。打开网站之后出现的第一个页面就是我们说的网站首页或者主页。
    域名:域名需要注册,访问网站时输入的网址就是我们说的域名
    传输方式:http/https
    http:超文本传输协议,https:加密的超文本传输协议。靠ssl证书进行认证。网页的传输通信协议URL:万维网的寻址系统(唯一标识。)

    uRI:www.baidu.com/test/index.html
    /test后面的内容URI 匹配网站不同分支的内容
    超链接:超链接把网站当中的不同内容连接起来。

    web:world wide web全球广域网 也就是万维网
    一种分布式的图形信息系统。
    web1.0:看网页。
    web2.0看,交互作用。用户不仅仅是看,还可以是网页内容的制造者。网站和用户可以双向交流。

    静态页面和动态页面:

    静态页面只是文本文件,可以修改,一般以.html.htm保存的文本文件。网站的基础。静态页面和后台数据库没有任何交互,不包含请求程序。
    更新起来比较复杂。一般适用于更新比较少的展示型的网站,一般都是网站的主页。
    静态页面的URL是固定的

    动态页面:
    1、url不是固定的,能通过后台和用户交互
    2、动态页面的URL当中一般有个?号
    3、动态页面:PHP,jsp python node.js
    4、动态页面可以自动更新
    5、访问的时间,访问的内容会发生变化。

    http协议:

    http协议:0.9淘汰
    http1.0:基本淘汰
    http1.1:目前最常用的https http 
    http1.1主要服务于https,端口443,
    1.1的特点就是提供了加密和安全传输的端口的一种http.
    http2.0:新一代的加密协议,传输速度比http1.1的速度更快。

    http协议:超文本传输协议,基于tcp协议的应用层传输协议。简单来说就是客户端和服务端之间进行数据传输的一种规则。
    http是应用层上的协议。建立连接:三次握手,断开:四次挥手.建立连接之后,客户端于服务端之间请求和接受,响应都是通过socket接口来调用tcp协议实现。
    端口到端口的通信。

    http:是一种无状态协议,http协议本身不会对发送的请求和响应进行任何处理。http协议能够处理大量的事务,提高效率。http本身无状态,存在会话保持和缓存的问题。

    http1.0是没有会话保持这个功能,http1.1,长连接加入到了http协议当中。

    缓存:cookie记录用户状态,跟踪统计用户访问该网站的习惯,识别用户身份,保存客户信息。可以驻留在我们的计算机上。是一个很小的文件。保存特定的客户端和网站之间的信息数据。
    时效性:30天保存的信息就会失效。
    客户端的ip地址验证:安全验证。

    http的工作流程。

    客户端-服务端通信过程
    请求…-响应的模型。
    建立连接:tcp/ip协议与服务器建立连接(三次握手),客户端向服务器的80端口发送连接请求。
    发送请求:一旦连接建立之后,客户端向服务端发送http请求。http请求:由一个请求行和多个头部字段组成。请求方式:get post
    服务端处理请求:根据请求的方式和内容进行处理。服务端会读取请求头的字段,解析参数,处理数据等等。

    服务端返回响应:形成一个http响应,响应由一个响应行,包含多个字段。响应内容包含重要的内容状态码,用于表示服务端对于请求的处理结果。

    http的状态码:

    1xx 信息提示
        100-101无实际作用。
    2xx 成功    请求处理结果成功
       200
    3xx 重定向
        304表示请求的是缓存。
    4xx 客户端错误
        403 404 请求的页面不存在或者没有权限访问。
        403:请求的页面禁止访问
         404:服务器无法请求的页面。
    5xx:服务端错误
        500内部服务器错误。500检查防火墙,检查进程也就是服务状态,检查端口。检查配置 
        文件。
        502无效网关
        503请求的服务器不可用,可能下线了。
        504网关请求超时。

    生产当中常见的状态码:

    200  ok请求成功
    301  永久重定向
    302  临时重定向
    304  访问的是本地缓存
    403 Forbidden 禁止客户端访问该页面
    404 NOTFOUND服务器无法找到被请求的页面
    500 inetnal server error 内部服务器错误。
    502 BAD geteway 网关失效。(服务端的网关失效)
    503 server Unavailable 服务器不可用(网站维护。)
    504 GATEWAY timeout网关请求超时(服务端处于维护或者路由器故障)

    传输数据:一旦服务器生成了http响应,会通过之前建立的连接将响应返回给客户端。响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般是自定义)

    关闭连接:响应发送完成,服务端就会进入连接关闭,http1.1 time_wait。双方还在建立连接,双方之间不再有数据传输。一旦有新的请求,连接可以继续使用。160秒会话保持或者长连接。
    http1.1会一次性获取页面的全部资源,然后发起四次挥手。只是不再传输数据。连接并没有断开。

    客户端解析和现实响应:客户端收到http响应之后,解析响应内容,包括页面解析,显示图片,播放视频。主要靠的就是浏览器。

    客户端也可以继续发送请求,或者打开新的连接,请求其他资源。

    http的请求方式:

    get
    get向服务器发起请求的数据,依照http协议来进行,get就是请求。

    请求行:
    请求体:
    Accept:客户端可以接受的数据类型
    Accept-Encoding:客户端可以接受的编码格式。以及数据是否需要压缩。
    Accept-Language:客户端可以接受的语言类型
    Cache-Control:数据在本地缓存的时间
    Connection:连接的处理方式,一般都是会话保持。
    Host:表示请求的ip和端口号,也可以请求的主机名。
    User-Agent:客户端请求使用的浏览器信息。

    post
    post向服务端发送数据,按照http协议进行,服务器添加数据,post的请求方式会修改服务器上的数据。

    get和post的区别:
    get的请求可以缓存
    get的请求还可以保存在浏览器的cookie中
    get的请求长度有限制
    get 就是获取数据

    postpost的请求不能被缓存,
    也不会保存在浏览器的cookie中
    post请求没有长度限制。
    请求的字符串不会显示,比较安全。

    telnet可以测试服务器的指定端口是否正常。telnet 192.168.233.20 80

    nginx网站服务:

    高性能,轻量级的web服务软件
    高性能:对http并发连接的处理能很高,单台物理服务器可支持30000-50000个并发请求。(在实际操作中,为了维持服务器的稳定,一般设置在20000个左右)
    轻量级:nginx软件很小,安装所需的空间也很小工
    稳定性:强对系统资源消耗低

    nginx的主要功能:
    1、处理静态网页:html htm图像
    2、支持反向代理(负载均衡)。负载均衡靠算法实现。
    3、处理动态内容
    4、虚拟主机:nginx配置多个虚拟主机,每一个虚拟主机都可以作为一个域名和站点。每个虚拟主机都可以拥有独立的配置和资源。
    5、URL重定向:可以对URL的请求进行修改和重定向。
    6、缓存机制,可以缓存静态文件和动态内容。
    7 日志记录:服务日志,访问日志和报错日志。控制日志还是在/var/log/messages中。
    8、代理服务器,通过代理可以访问其他的后端服务器。

    安装:
    ./configure -prefix=/usr/local/nginx\#指定安装目录
    --user=nginx\指定运行用户
    --group=nginx\指定运行组
    -with-http_ssl_module\#开启对http的ssl加密支持
    ---with-http_v2_module\#支持http2.0协议
    --with-http_realip_module\允许nginx获取客户端的真实ip
    --with-http_stub_status_module\启动了stud_status模块,获取nginx的访问和状态信息的方法
    --with-http_gzip_static_module\支持压缩文件内容图片
    -with-pcre\ 动态库
    --with-stream \开启tcp/udp代理模块支持 支持四层转发
    --with-stream_ssl_module\支持四层转发的ssl加密
    --with-stream_realip_module nginx可以从四层转发的头部信息中获取客户端的真实ip.

    conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件。
    html:保存nginx的web文件,.html结尾的文件,图片。
    50x是nginx默认的报错提示页面
    logs:保存日志的目录,路径可以改。
    access.log记录的是访问日志记录
    error.log 记录报错日志,403.400 500 
    sbin:nginx的二进制的启动脚本
    nginx-t:检测nginx配置文件以及配置文件语法是否正确。
    nginx-v:只查看版本
    nginx-V:查看版本和nginx支持的配置模块
    nginx -s stop restart reload给nginx主程序发送信号,不能开启nginx服务。

    nginx的配置文件内容:

    http块:配置代理缓存日志虚拟主机和第三方模块
    server:配置虚拟主机的设备。在http的模块中可以有多个server。
    location块:location模块只能配置在server模块当中,匹配uri.一个server模块当中可以有多个location.
    www.baidu.com/test4


    nginx的功能模块:

    proxy:代理功能,核心功能模块之一,配置反向的功能
    proxy_pass 指定
    定义在location当中。
    headers功能模块:处理请求和头部的响应信息。获取客户端的真实ip

    upstream模块:
    七层反向代理模块,只能配置在http模块中,或者stream模块中。
    stream:
    四层反向代理模块,只能写在配置当中。
    root 指定访问页面的根目录是拼接
    /var/www/html/test

    统计nginx的访问状态。

    Active connections: 2
    server accepts handled requests
    2 2 1
    Reading: 0 Writing: 1 Waiting: 1
    Active connections: 2表示当前活动连接数
    server accepts 已经处理的连接处
    handled 成功的tcp握手次数
    requests 已经处理的请求数
    Reading: 0服务端正在从客户端读取数据,正在读取客户端请求的连接数
    Writing: 1服务器正在将响应数据发送给客户端
    Waiting: 1表示有连接处于空闲状态,当前等待客户端请求的连接数。time_wait.

    Inmp:

    linux平台,操作系统是另外三个组件的运行平台
    nnginx提供前端页面
    mysql数据库开源关系型的数据库主要用来保存用户的账号信息。
    php:开发动态页面的编程语言,解析动态页面,起到中间件的作用,即在nginx和数据库的中间沟通nginx和数据库,以请求数据库上的信息。

    cmake\
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
    设置它的进程的监听套接字文件,提供端口3306
    -DSYSCONFDIR=/etc \
    mysql配置文件的路径
    -DSYSTEMD_PID_DIR=/usr/local/mysql \
    #进程文件
    -DDEFAULT_CHARSET=utf8 \#
    默认编码

    -DDEFAULT_COLLATION=utf8_general_ci \
    字符集的校验规则
    -DWITH_EXTRA_CHARSETS=all\-DWITH_INNOBASE_STORAGE_ENGINE=1\
    安装INNOBASE存储引擎
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1\
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    #数据库文件的存储路径

    -DWITH BOOST=boost\
    -DWITH_SYSTEMD=1 
    #可以直接生成用于systemctl的管理文件。

    [client]
    port = 3306
    socket=/usr/local/mysql/mysql.sock
    服务端配置:默认端口
    指定套接字的文件
    [mysqld]
    服务配置
    user=mysql #指定运行用户
    basedir=/usr/local/mysql #mysql的安装目录
    datadir=/usr/local/mysql/data #数据文件的保存路径
    port=3306#服务端口
    3306character-set-server=utf8 默认字符编码 utf-8
    pid-file=/usr/local/mysql/mysqld.pid #PID文件
    socket=/usr/local/mysql/mysql.sock #套接字文件
    bind-address=0.0.0.0#监听端口
    skip-name-resolve #禁用DNS反向解析。提高性能
    max_connections=2048最大连接数,同时可以连接数据的主机数,默认151.
    default-storage-engine=INNODB #默认的存储引擎
    max_allowed_packet=16M #数据库服务器可以接受的最大数据包,默认4MB、
    server-id=1#MYSQL服务器的唯一ld,主从复制会用到。

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    数据库的运行的模版。
    STRICT_TRANS_TABLES:如果以个值不能插入到一个事物表中,会中断操作。NO_AUTO_CREATE_USER:静止GRANT创建密码为空的用户

    ./configure \
    --prefix=/usr/local/php \#指定安全目录
    -with-mysql-sock=/usr/local/mysql/mysql.sock \#为了和数据库建立联系
    --with-mysqli \启用mysqli的扩展应用,支持mysql的数据库类型
    --with-zlib \#压缩和解压数据
    --with-curl \支持URL操作,下载文件等等
    --with-gd \GD库,处理图片

    --with-jpeg-dir \
    jpeg的图片库--with-png-dir\
    png的图片库
    --with-freetype-dir \
    --with-openssl \
    支持ssl加密HTTPS协议
    --enable-fpm \
    打开fpm模块,提高PHPj进程管理和请求处理的响应速度
    --enable-mbstring \
    --enable-xml \
    支持处理XML格式的文档和数据
    --enable-session \
    开启会话保持功能
    --enable-ftp \
    --enable-pdo \
    --enable-tokenizer \
    --enable-zip

    PHP的三个配置文件:
    php-fpm.conf #PHP的主配置文件(进程服务)
    php.ini#PHP的主配置文件(对全局生效)
    www.conf#PHP的扩展配置文件
    fastcgi_pass 127.0.0.1:9000
    fastcgi:只一种用于连接web服务器(nginx httpd)与应用程序之间的通信协议提供一种高效,可靠,灵活的方式处理动态页面的内容请求
    web服务程序和动态应用程序之间进行交互
    fastcgi_pass 127.0.0.1:9000设置FASTCGI的服务器的地址和端口。
    也就是PHP的监听地址和端口
    fastcgi_index index.php:指定请求目录时默认访问的文件名
    .php就是动态页面的结尾.jsp动态页面。.html

  • 相关阅读:
    MyISAM 与 InnoDB 的区别是什么?
    2、图机器学习——Graph Embedding
    我们为什么要做亚马逊测评?
    IDEA XML文件里写SQL比较大小条件
    原码,反码,补码以及计算
    050:mapboxGL加载geojson数据,同时包含点、多边形的处理示例
    Python正则表达式一点通
    CSS字体属性
    订单管理是客户关系管理的有效延伸,那么订单管理系统对于企业的作用有哪些呢?
    2022数学建模国赛A题思路建模/2022全国大学生数学建模A题思路建模/2022建模国赛A题思路模型/波浪能最大输出功率设计
  • 原文地址:https://blog.csdn.net/abc13245821907/article/details/133697219