• web基础与http协议


    目录

    一、web概念

    二、DNS解析

            2.1、/etc/hosts

            2.2、/etc/resolv.conf

            2.3、/etc/sysconfig/network-scripts/ifcfg-ens33

            2.4、生效顺序

    三、web1.0和web2.0区别

           3.1、web1.0

            3.2、web2.0

    四、动态和静态页面区别

            4.1、静态页面

            4.1.1、静态页面特点

            4.2、动态页面

            4.2.1、动态页面特点

    五、http协议概述

    六、http各个版本之间的区别

            6.1、http1.0和http1.1之间的区别

            6.1、http1.1和http2.0之间的区别

    七、HTTP状态码

    八、生产环境常见的HTTP状态码

    8.1、403状态码

    可能导致403错误的

    8.2、404状态码

    可能导致404的原因

    8.3、500状态码

    500出错的可能性:

    8.4、502、504错误

    一般解决思路


    一、web概念

            网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机是,均采用一种唯一、通用的地址格式,即每一个与网络相连接的计算机都被指派一个独一无二的地址。

    二、DNS解析

            2.1、/etc/hosts

            linux系统中负责快速解析的文件,包含了IP和主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成映射,实现快速访问。

            2.2、/etc/resolv.conf

            DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含了主机域名的搜索顺序等等,这个文件有域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。

            2.3、/etc/sysconfig/network-scripts/ifcfg-ens33

            也可以在网卡配置文件中定义DNS1= DNS2=

            2.4、生效顺序

            hosts文件  --->   网卡配置文件  ---->  /etc/resolv.conf

    三、web1.0和web2.0区别

           3.1、web1.0

            以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容。

            这个过程是网站到用户的单向行为

            3.2、web2.0

            更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者,加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与。

    四、动态和静态页面区别

            4.1、静态页面

            1、静态网页是标准的html文件

            2、扩展名是.htm、.html

            3、是网站建设的基础,早起网站一般都由静态网页制作

            4、没有后台数据库、不含程序和不可交互的网页

            5、相对更新起来比较麻烦,适合用于一般更新较少的展示型网站

            4.1.1、静态页面特点

            1、每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含?

            2、网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的

            3、静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。

            4、静态网页的交互性较差,在功能方面有较大的限制

            5、页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面

            4.2、动态页面

            1、网页URL不固定,能通过后台与用户交互

            2、在动态网页网址中有一个标志性的符号——"?"

            3、常用的语言有PHP、JSP、Python、Ruby

            4.2.1、动态页面特点

            1、交互性:网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这是当前使用的web类型。

            2、自动更新:无需手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量

            3、因时因人而变:当不同的时间,不同的人访问同一个网址会产生不同的页面

    五、http协议概述

            1、HTTP协议简介、版本:HTTP(超文本传输协议)协议是互联网应用最为广泛的一种网络协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

            HTTP是应用层上的协议,简历在传输层TCP之上,客户端通过与服务端进行TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。

            HTTP是一种无状态协议,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理,这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务,提高效率。

            然而,在许多应用场景中,我们需要保持用户登陆的状态或记录用户购物车中的商品,由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。

    六、http各个版本之间的区别

            6.1、http1.0和http1.1之间的区别

    1 长连接(Persistent Connection)
           HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

    2 节约带宽
           HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。

    3 HOST域
           在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。

    4缓存处理
           在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

    5错误通知的管理
           在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

            6.1、http1.1和http2.0之间的区别

    1、多路复用

            HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的,使用HTTP2.0来的更为高效。

    2、头部数据压缩

            在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主题三部分组成。一般而言,消息主题都经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,由器是每次传输UserAgent,Cookie这类不会频繁变动的内容,完全是一种浪费。

            HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就更快了。

    3、服务器推送

            服务器推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这时一个很慢的过程。浏览器从获取HTML开始,然后把在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器的每一个请求,网络基础是空闲的和为充分使用的。

            为了改善延迟,HTTP2.0引入server push,它允许服务端推送资源给浏览器,在浏览器明确的请求之前,免得客户端再次创建连接发送请求到服务端获取,这样客户端可以直接从本地加载这些资源,不再通过网络。

    七、HTTP状态码

    状态码首位已定义范围

    分类

    1xx100-101信息提示
    2xx200-206成功
    3xx300-305重定向
    4xx400-415客户端错误
    5xx500-505服务端错误

    八、生产环境常见的HTTP状态码

    消息描述
    200OK请求成功
    301Moved Permanently请求的永久页面跳转
    403Foebidden禁止当问该页面
    404NOT Found服务器无法找到被请求的页面
    500Internal Server Error内部服务器错误
    502Bad Gateway无效网关
    503Service Unavailable当前服务不可用
    504Gateway Timeout网关请求超时

    8.1、403状态码

            403 Forbidden是HTTP协议中的一个状态码。可以简单的理解为没有权限访问此站。该状态标识服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是“HEAD”,并且服务器想让客户端知道为什么没有权限的情况下,服务器一个在返回的信息中描述拒绝的理由。在服务器不想提高任何反馈信息的情况下,服务器可以用404 Not Found代替403 Forbidden。

    可能导致403错误的

    1、你的IP被列入了黑名单

    2、你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了。

    3、网站域名解析到了空间,但空间未绑定此域名。

    4、你的网页脚本文件在当前目录下没有执行权限。

    5、在不允许写/创建文件的目录中执行了创建/写文件操作。

    6、以http方式访问需要ssl连接的网址。

    7、浏览器不支持SSL 128时访问SSL 128的连接。

    8、在身份验证的过程中输入了错误的密码。

    9、DNS解析错误,手动更改DNS服务器地址。

    10、连接的用户过多,可以过后再试。

    11、服务器繁忙,同一IP地址发送请求过多,遭到服务器智能屏蔽。
     

    8.2、404状态码

            (未找到) 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。

    可能导致404的原因

            404是我们在访问网页时也经常能碰到的报错,比如我们要访问的是test.html这个文件,但是我的网站中没有这个文件,那么就会报404错

    8.3、500状态码

            500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。

    500出错的可能性:

    a、编程语言语法错误,web脚本错误

    b、并发高时,因为系统资源限制,而不能打开过多的文件

    3、一般解决思路:

    a、查看php的错误日志文件,从而看出端倪

    b、如果是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了

    c、如果是脚本的问题,则需要修复脚本错误,优化代码

    8.4、502、504错误

    1、502 Bad Gateway错误、504 Bad Gateway timeout 网关超时

    2、502、504出现的可能性

    web服务器故障、程序进程不够

    一般解决思路

    a、使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504错误。

    b、502 是指请求的php-fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm进程终止。一般来说,与php-fpm.conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加 php-cgi的进程数。具体就是修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。这个数据要依据你的服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。

     /usr/local/php/sbin/php-fpm reload 然后重启一下.
    

    c、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。与nginx.conf的配置也有关系。

  • 相关阅读:
    【数据结构】&&【C++】平衡搜索二叉树的模拟实现(AVL树)
    424-计算机网络(14-17)
    如何开通腾讯云Redis云数据库并创建连接?
    苏州德创机器视觉工程师工作怎么样?
    Oracle 服务器迁移的一些经验
    在阿里云的函数计算上部署
    化合物应用 | 动物实验溶剂选择
    【计算广告学习笔记】1. 广告的计价方式和常用缩写
    瀑布型项目管理最常用的10个小工具,可以自由搭建使用
    NLP之基于Seq2Seq和注意力机制的句子翻译
  • 原文地址:https://blog.csdn.net/qq_57377057/article/details/126468079