web工作机制
一、web工作机制
用户在客户端使用浏览器进行上网,输入网址以后,客户端首先检查本地缓存和host是否存在解析,如果没有解析,再访问LDNS寻找,找不到再进行跟节点解析。得到目标IP地址,然后发送ARP请求获取目标地址的MAC地址,然后发送请求,穿过防火墙,通过网关路由器,到达对方主机,访问80,443端口,进行三次握手,建立连接。然后解析HTTP数据包,进行响应,如果是HTML文件,直接响应。如果是PHP,java等文件,先解析,访问数据库,获取数据,进行返回!
1.1web容器
Web容器,也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务。
常见的Web容器有: Apache/ IIS/Nginx等。
1.2静态的网页
静态的网页都是一些.html文件,纯文本文件,其中都是HTML代码,HTML超文本标记语言,在浏览器中解释运行
1.3中间件服务器
以上这种,只能单向地给用户展示信息。随着Web的发展,信息要双向流动,产生了交互的需求,也就是动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。
脚本的使用让Web服务模式有了“双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理, 如编辑文件、利息计算、提交表单等,Web架构的适用面大大扩展。这些脚本可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在Web
服务器的目录里,如.asp、.php、 jsp文件等。这样功能性的脚本越来越多形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器。它实际上是Web服务器外理能力的扩展。
1.4数据库
静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据生成“完整"页面,最后送给用户。
二、HTTP协议
HTTP (HyperText Transfer Protocol, 超文本传输协议)是浏览器与Web服务器之间的通信协议,是传递消息的规范和要求。
2.1 概述
1990年提出的,当前版本1.1。
HTTP是用来将html文档从Web服务器传输到Web浏览器。
是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。HTTP 使用可靠的TCP连接,默认端口80。
2.2 特点
支持浏览器/服务器模式。
简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径。
灵活: HTTP运行传输任意类型的数据对象
2.3 URL
统一资源定位符(网址)用来告诉Web容器,浏览器所请求资源(文件) 的路径。例如:
http: L /Localhost/ Cms/ show. php?id=32
2.4URL编码
URL中允许出现的字符是有限制的,URL中path开始允许直接出现A- -Za-z0-9半角减号(-) 、下划线句点(.)、波浪号(~)。其他字符均会被百分号编码
如下:
“#” %23 “ ” %20
%+ASCII码十六进制表示
三、Http报文分析
报文分析工具:F12、wireshark、Fiddler、buitsuit
3.1 http请求报文
HTTP请求由请求行、请求头、请求正文三部分组成
请求行:方法、资源路径,协议版本
请求头:从请求报文第二行开始到第一个空行为止之间的内容
请求行 | GET /php/test/get. php HTTP/1.1
| 主要用来指定被请求的Internet主机和端口号Host: 172.16.132.161
| 浏览器指纹User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
| Accept : text/html, app lication/ xhtml+xml, application/xml;q=0.9,*/*;q=0.8
请求头 | Accept-Language : zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
| Accept-Encoding: gzip, deflate
| 当前URL的上一个URLReferer: http:/ /172.16.132.161/php/test/
| Connection: close
| Upgrade-Insecure -Requests: 1
| 记录请求者身份信息 Cookie
| 用于向接收方指示实体的介质类型Content_Type:
| Content-length:
| Cache-Control: max-age=0
请求正文 | get方式没有请求正文,post有正文
get是最常用的方法,通常用于请求服务器发送的某个资源
post方法可以向服务器提交参数及表单,包括文件流等
head方法与get方法类似,但是在服务器响应中只返回首部
put方法与get方法从服务器读取文档相反,put方法会向服务器写入文档
trace回显浏览器的请求
options方法请求web服务器告知其支持的各种功能
delete方法请求服务器删除请求URL所指定的资源
3.2 响应报文
响应报文由状态行(响应行)、响应头、响应正文
1.状态行:协议/版本,状态代码,描述短语
2.响应头:从第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段
3.响应正文:服务器返回资源的内容,即浏览器接收到的HTML代码
状态码:
100-199信息性状态码
200-299成功状态码
300-399重定向状态码
400-499客户端错误状态码
500-599服务器错误状态码
主要字段:
server:服务器指纹
set-Cookie:向浏览器端设置cookie
last-Modified:服务器通过这个头信息告诉浏览器,资源的最后修改时间
content-length:请求正文的长度
location:重定向目标页面
refresh:服务器通过refresh头告诉浏览器定时刷新浏览器
四、cookie与session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
web应用程序是使用http协议传输数据的,http协议是无状态的协议。一般数据交换完毕,客户端与浏览器的连接就会关闭,再次交换数据,需要重新建立新的连接,这就意味着服务器无法从连接上跟踪会话。因此通过给客户端颁发通信证,也就是cookie,客户端使用带有cookie的请求访问,进行数据交换,服务器就能通过cookie确定客户端身份。
五、同源策略
同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以A域名下的js脚本采用ajax读取B域名里面的文件数据是会被拒绝的。同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制
【千锋教育】网络安全工程师 (共311集培训班全套)