zl程序教程

您现在的位置是:首页 >  其他

当前栏目

web基础与http协议

2023-09-11 14:17:00 时间

目录

一、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的配置也有关系。