web页面流程

域名解析DNS

域名解析:把域名指向网络空间IP,让人们通过简单的域名访问Web网站的服务。

DNS:域名系统

DNS服务器:记录着域名及其对应的IP地址

解析域名:

​ 浏览器中输入目标网站的域名,浏览器会生成一个域名IP的请求

​ 请求第一时间会查询本地主机的DNS缓存表ipconfig/displaydns,若本地DNS缓存表有对应的IP地址则返回浏览器进行访问,如果没有则会向DNS域名服务器发出查询请求(上一级的DNS服务器)

​ 本地DNS服务器接收到查询请求,按照第二步查询本地已经缓存的DNS表对应的IP地址,查询不到本地的则会向根DNS域名服务器发送查询

​ 根域服务器接收到查询请求,则会把把顶级域的IP地址发送给本地DNS服务器,本地DNS服务器向收到的顶级域服务器发送请求,顶级域服务器则会找到管理该域名的域服务器并返回对应的IP地址给本地DNS服务器

​ 浏览器根据本地DNS服务器返回的IP地址,连接服务器并进行TCP连接和HTTP请求

域名记录

域名和IP地址有某种对应的关系

A记录:返回域名对应的IP地址

NS域名服务器记录:保存下一级域名信息的服务器地址

MX邮件记录:接收电子邮件的服务器地址

CNAME规范记录:返回另一个域名(当前查询的域名的另一个域名的跳转地址)

PTR逆向查询记录:用于IP地址查询域名

AAAA记录:IPv6主机记录

配置DNS

域名申请成功之后首先需要做域名解析。点DNS解析管理,然后增加IP,增加别名以及邮件MX记录。先增加IP。如想要实现去掉3W的顶级域名亦可访问网站,除了要在空间里绑定不加3W的域名外,还要解析,主机名为空。

修改DNS

​ 条件:要更改为的主、辅DNS服务器都必须是注册过的、合法的DNS服务器名称,否则修改会失败。

​ 如果要查询DNS是否为合法的DNS,可以点击:国际域名DNS查询界面、国内域名DNS查询界面通用顶级域名DNS查询界面使用方法:输入DNS服务器的名称,选中第三个选项Nameserver,查询如果查询出有DNS注册的信息,如注册商,名称对应的IP地址,则这个DNS是合法的。国内域名DNS查询界面使用方法: 在“主机”一栏中输入DNS服务器的名称,点击查询,如果查询出有DNS注册的信息,如注册商,名称对应的IP地址,则这个DNS是合法的

​ 修改方法:通过相应域名注册公司进行域名变更DNS操作。

​ 解析生效时间

​ 通用顶级域名解析是2小时内生效,国家顶级域名解析24小时内生效。

​ 是否解析成功

​ 因为域名解析需要同步到DNS根服务器,而DNS根服务器会不定时刷,只有DNS根服务器刷新后域名才能正常访问,新增解析一般会在10分钟左右生效,最长不会超过24小时,修改解析时间会稍微延长。可以用ping命令来查看域名是否生效。点击开始菜单>运行>输入"CMD">敲回车键,进入 命令提示符窗口,输入"ping 您的域名",如果红线部分为您主机的IP即解析成功。

web页面请求(Nginx)

请求过程

  1. 主机向DHCP(动态主机配置协议)服务器获取一个IP地址
  2. 浏览器确定目标域名/服务器IP
  3. DNS向浏览器返回目标域名的IP地址
  4. 浏览器接收DNS返回的IP地址并向目标发送TCP连接请求(TCP三次握手)
  5. TCP建立成功,浏览器向目标发送HTTP/服务协议请求,服务器响应浏览器的请求
  6. 浏览器对服务器返回的响应数据包进行渲染并输出到浏览器中

Nginx的过程

POST_READ 读取HTTP头部,读取并解析内容

server-rewrite在URL与location匹配之前修改请求的URL(重定向),在server块中的请求地址重写

find-config配置查找阶段,根据请求的URL匹配location表达式;不支持nginx模块注册处理程序,而是由ngx_http_core_module模块来完成当前请求与location配置之间的匹配

rewritelocation块追踪的请求地址重写阶段,当rewrite指令用于location中则运行;ngx_lua模块中的set_by_lua指令和rewrite_by_lua指令也在这里

post-rewrite请求地址重写提交阶段,防止递归修改URL造成死循环;由ngx_http_core_module模块实现

preaccess访问权限检查准备阶段,http模块进入处理阶段,ngx_limit_req(访问控制的频率)和ngx_limit_zone(访问的并发率控制)也会运行

access访问权限检查执行阶段,ngx_access和nginx_auth_request,ngx_lua的access-by_lua执行在这个阶段,配置指令多是执行访问控制性质的任务,比如检查用户的访问权限,检查用户的IP地址合法性

post-access访问权限检查提交阶段,如果请求不被允许访问Nginx服务器,该阶段用于返回错误的响应

try-files配置项try-files处理阶段,如果http访问的静态文件try-files配置项可以使这个请求顺序地访问多个静态文件,直至符合条件

content内容产生阶段,大部分HTTP模块会执行,所有请求处理阶段中的重要阶段这个阶段的指令通常用来生成HTTP响应的内容

log日志模块处理阶段,记录日志

HTTP协议

HTTP请求/响应:

统一资源定位符,是一种互联网的标准地址规范

协议://服务器IP:端口/路径/?属性=value

计算机主要通过浏览器的URL进行HTTP请求发送,在linux中可以使用curl命令发送HTTP请求:(linux实现curl访问baidu)

curl http://www.baidu.com #访问HTTP响应数据

curl http://www.baidu.com -I #回显HTTP响应头部数据

curl命令的结果,可以认为浏览器的作用是渲染HTTP响应信息包

HTTP是一种无状态协议,与WEB浏览器之间不会建立永久连接;当服务器返回响应后,就会关闭与服务器之间的连接,只有在重新发起请求的时候才会重新建立连接(服务器不主动连接,连接由客户端发起)

HTTP是请求和响应为核心:客户端发起请求,服务端返回响应

HTTP请求包含:请求行、请求头、请求正文

GET /login.php HTTP/1.1  //请求行
HOST:192.168.2.172
User-Agent:Mozilla/5.0 (Windows NT 10.0;Win64 X64;rv:66.0) Gecko/20100101 Firefox/66.0
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Languge: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
DNT:1
Connection: keep-alive
Cookie: security=impossible; hibext_instdsigdipv2=1; PHPSESSID=d19t3v9obo76br07i58qrl88p5
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache

HTTP请求方法:

GET方法:

用于获取请求页面的指定资源,没有完整的请求内容(请求的参数实际是存在URL中)

GET /index.php HTTP/1.1
POST方法:

用于向指定的URL页面请求资源或提交内容资源

我们登录login.php,利用POST方法将请求主体上传提交

HEAD方法:

用于只要求服务器响应返回HTTP信息(返回除消息主体外的信息);常用来测试链接的有效性,测试页面是否可以正常访问常用这个请求方法访问

PUT/DELETE方法:

PUT用于向服务器请求存储指定的实体信息在指定的HOST中;DELETE用于向服务器请求删除指定URL位置的资源;非常危险的两个请求方法哦~常常被禁止使用

TRACE方法:

TRACE用于激发服务端的请求消息回路,回显服务器接收的请求,常用于诊断

HTTP响应状态码

1XX:信息提示

表示消息成功接收

2XX:成功

表示服务器成功的处理了消息

200:客户端请求成功

3XX:重定向

访问的资源被转移,告知客户端访问新的指向URL

302:重定向

4XX:错误

请求资源错误

404:请求的资源不存在

400:请求语法错误,服务端无法解析

401:请求未获得权限

403:服务端拒绝客户端请求

5XX:服务端错误

服务端拒绝或无法正常的处理请求

500:服务端错误

503:服务不可用(超载或停机维护)

HTTP消息:

HTTP消息等同于HTTP头部(HTTP heard);由请求头、响应头、普通头和实体信息

请求头:

起始行:请求方法 + 请求URL + HTTP协议及版本

GET /index.php HTTP/1.1

HOST指定资源的URL

User-Agent客户端浏览器的信息

Referer当前URL的上一级URL

Range请求实体的部分内容

x-forward-forXXF头,请求端的IP,多个IP使用逗号隔开

Accept指定服务端接收的MIME类型信息

Accept-Charset指定客户端接收的字符集

响应头:

响应头是服务器依据请求向客户端发送的HTTP头,

Server服务器所使用Web服务器的名称

Set-Cookie向客户端设置Cookie

Last-Modified告诉客户端该资源最后的修改时间

Location302重定向的新的URL页面

Refersh告诉浏览器客户端定时刷新

普通头:
实体头:

Content-Type向接收端说明实体的介质类型

Content-Encoding媒体类型的修饰符(采用编码/解码的机制)

Content-Lengthvalue代表实体正文的长度(字节)

Last-Modified资源的最后修改时间

页面解析中的安全

DNS域名劫持

攻击者通过对域名解析服务器的攻击或伪造,吧目标网站的域名解析到错误(黑客准备)的页面,从而达到攻击者的某种目的

原理上通俗的解释:

黑客改变了DNS服务器中原本正确的网址解析的IP并变更为自己准备的IP服务器中。

Web页面解析过程(浅)的更多相关文章

  1. Python的Web编程[0] -> Web客户端[1] -> Web 页面解析

     Web页面解析 / Web page parsing 1 HTMLParser解析 下面介绍一种基本的Web页面HTML解析的方式,主要是利用Python自带的html.parser模块进行解析.其 ...

  2. web页面的优化

    众所周知,一个web页面通常会包括HTML(XHTML.XML).CSS.Javascript,而其中HTML(XHTML.XML)为结构化语言,用于构建页面结构和相关数据:CSS则负责页面的样式,即 ...

  3. 一个Web页面的问题分析

    几个月之前我接到一个新的开发任务,要在一个旧的Web页面上面增添一些新的功能.在开发的过程中发现旧的代码中有很多常见的不合适的写法,结合这些问题,如何写出更好的,更规范的,更可维护的代码,就是这篇文章 ...

  4. web页面加载、解析、渲染过程

    仅做学习参考,侵权删 原文链接:风吹De麦浪   https://www.cnblogs.com/CandyManPing/p/6635008.html 一.浏览器 浏览器的主要功能是将用户选择的we ...

  5. web 安全之页面解析的流程学习

    0x00 任务内容: 理解域名解析的整个过程 理解 web 页面请求的整个流程,绘制流程图(nginx 处理的 11 个过程) 学习 http 协议中的字段及含义 学习 http 请求方法以及返回状态 ...

  6. 从插上网线到web页面请求,究竟发生了哪些过程?(计算机网络篇)

    一.说在前头 好久没有更新博客了,汗颜,最近忙于各种实验与报告,但是还是要抽时间总结一下学的东西.欢迎转载,但是要注明出处哦(=^ ^=). 最近学了计算机网络,正好总结一下.本篇博客的大部分是跟计算 ...

  7. Spring源码解析-Web容器启动过程

    Web容器启动过程,主要讲解Servlet和Spring容器结合的内容. 流程图如下: Web容器启动的Root Context是有ContextLoaderListener,一般使用spring,都 ...

  8. web页面的加载顺序

    1.页面顺序 一个典型的web页面由于三个部分组成:html.css和JS.执行的顺序是: 在构造完HTML的dom结构时.触发DOMContentLoaded事件. 整个执行过程安装html的顺序来 ...

  9. 转:Web页面通过URL地址传递参数常见问题及检测方法

    Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述 ...

随机推荐

  1. 【Offer】[56-2] 【数组中唯一只出现一次的数字】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 在一个数组中除一个数字只出现一次之外,其他数字都出现了三次.请找出那个只出现一次的数字 [牛客网刷题地址]无 思路分析 如果一个数字出现 ...

  2. Go从入门到放弃

    Go语言介绍 为什么你应该学习Go语言? 开发环境准备 从零开始搭建Go语言开发环境 VS Code配置Go语言开发环境 Go语言基础 Go语言基础之变量和常量 Go语言基础之基本数据类型 Go语言基 ...

  3. 在一个升序数组中添加最少的数字,使得从1--n之间所有的数都能用数组中几个数的和表示

    一个Java的笔试题上面遇到的题,当时没有做出来. 拆分: 序列升序 1--n所有的数都要能表示 用数组中数字的和表示 添加最少的数字 思路:这个要先从小的数开始表示,因为大的数可以用小数表示. 1- ...

  4. Winform中在FastReport的PreviewControl预览控件中对report控件模板中控件值进行修改

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  5. windows安装mingw和LuaJIT

    1,安装mingw64 先下载mingw64压缩包(不建议下载exe安装包,在线安装太慢),地址如下: https://nchc.dl.sourceforge.net/project/mingw-w6 ...

  6. Laravel 5.4 快速开发简书:

    Laravel 5.4 快速开发简书第1章 课程介绍 介绍课程的大体脉络和课程安排 第2章 Laravel 5.4介绍 本节课会带领大家介绍laravel的各个版本历史以及讨论php框架的未来发展趋势 ...

  7. 使用gcc不同选项来编译查看中间生成文件

    gcc编译C程序的总体流程如下图 用到的命令如下: .c---> .i gcc -E hello.c .c--->.s gcc -S hello.c .c--->.o gcc -c ...

  8. Beescms_v4.0 sql注入漏洞分析

    Beescms_v4.0 sql注入漏洞分析 一.漏洞描述 Beescms v4.0由于后台登录验证码设计缺陷以及代码防护缺陷导致存在bypass全局防护的SQL注入. 二.漏洞环境搭建 1.官方下载 ...

  9. 【Jsp】利用iframe实现action不跳转

    <form role="form" target="id_frame" action="dk" method="post&q ...

  10. sql server 建表,主键与外键约束

    主键: 能唯一区分表中每一行 外键:为某表的一列,是另一个表的主键,外键定义了两表之间的联系 商品类别表 use eshopgocreate table category( name varchar( ...