web基础与http协议
目录
一、eb概念
二、DNS解析
2.1、/etc/hosts
2.2、/etc/resolv.conf
2.3、/etc/sysconfig/ork-scripts/ifcfg-ens33
2.4、生效顺序
三、eb1.0和eb2.0区别
3.1、eb1.0
3.2、eb2.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错误
一般解决思路
一、eb概念
网络是基于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/ork-scripts/ifcfg-ens33
也可以在网卡配置文件中定义DNS1= DNS2=
2.4、生效顺序
hosts文件 ---> 网卡配置文件 ----> /etc/resolv.conf
三、eb1.0和eb2.0区别
3.1、eb1.0
以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容。
这个过程是网站到用户的单向行为
3.2、eb2.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、交互性网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这是当前使用的eb类型。
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 Gateay无效网关503Service Unavailable当前服务不可用504Gateay 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、编程语言语法错误,eb脚本错误
b、并发高时,因为系统资源限制,而不能打开过多的文件
3、一般解决思路
a、查看php的错误日志文件,从而看出端倪
b、如果是too many open files,修改nginx的orker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
c、如果是脚本的问题,则需要修复脚本错误,优化代码
8.4、502、504错误
1、502 Bad Gateay错误、504 Bad Gateay timeout 网关超时
2、502、504出现的可能性
eb服务器故障、程序进程不够
一般解决思路
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的配置也有关系。