【2】web安全入门篇-了解web

1.什么是web

百度百科会解是得很清楚,我在这里就不赘述了
https://baike.baidu.com/item/Web/150564
web运行结构
在这里插入图片描述

2.一次完整的网页请求

在这里插入图片描述
图示大致流程为
1.浏览器输入url如www.baiduc.om
2.域名解析获得该域名IP地址(DNS解析原理
3.与该域名建立TCP连接通过三次握手(三次握手原理)
4.封装HTTP请求,向服务器发起HTTP请求(request)
5.服务器获取HTTP请求中相应资源
6.资源获取完成后web服务器做出应答(response),浏览器获得服务器返回html(什么是html)
7.断开TCP连接通过四次握手(四次握手原理)
8.浏览器渲染呈现给用户
了解了一次完整的web请求后便可继续深入了解HTTP协议
如果对DNS解析,TCP三次握手,TCP四次握手原理已经了解,便可继续往下看,深入学习http协议,如果不是建议先了解下这三个原理再继续往下看

3.HTTP协议

HTTP协议既超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。它是一个客户端和服务器端请求和应答的标准(TCP)。
详细介绍
HTTP协议是基于TCP协议的应用层协议
学过计算机网络的PY因该都知道在网络世界中,数据是通过网络传输协议传送的,下面大致说一下TCP/IP协议架构
在这里插入图片描述
这里列举出了一个树状图,TCP/IP协议分为4层分别是链路层,网络层,传输层,应用层

Network interfacae为链路层:传输方式数据帧
ARP,IP,RARP等为网络层:传输方式数据包
TCP,UDP,ICMP等为传输层:传输方式数据段
HTTP,FTP,SNMP等为应用层:传输方式数据流

传输过程的结构组成大致如图
在这里插入图片描述
这里大概介绍了计算机网络的基本知识,了解这些以后对HTTP应用层协议理解会更有帮助
下面我们就详细介绍下HTTP协议,HTTP报文有两种,一种是HTTP请求报文,一种是HTTP响应报文

3.1 HTTP请求报文

报文结构
在这里插入图片描述
请求例子
在这里插入图片描述
第一部分:第一行POST为请求方法 /test为请求文件 HTTP/1.1为版本号
请求方法:GET,POST,HEAD,PUT,DELETE,OPTIONS,TRACE,CONNECT

GET: 向特定资源发出请求(请求指定页面信息,并返回实体主体)
POST:向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT:从客户端向服务器传送的数据取代指定的文档的内容
DELETE:请求服务器删除指定的页面
OPTIONS:允许客户端查看服务器的性能
TRACE:回显服务器收到的请求,主要用于测试或诊断
CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

GET和POST如果想学web安全个人认为知道这一个区别就行了
1.GET请求时参数可以在URL中获取如GET /test.php?id=1&username=xxx,而POST请求传输过程中数据是在data域,在URL中无法获取
其他区别对于我们来说都不重要,如果想知道可自行百度

第二部分请求头

Host:请求的服务器域名地址或IP地址
User-Agent:向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识
Accept:表示浏览器端可以接受的媒体类型
Accept-Language:浏览器申明自己接收的语言
Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)
Referer:代表请求来自哪个页面
Content-Type:代表客户端发送的实体数据的数据类型(如:text/html : HTML格式等)更多类型
Content-Length:发送给HTTP服务器数据的长度
Cookie:最重要的header, 将cookie的值发送给HTTP 服务器
Connection:keep-alive 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接

还有一些请求头参数,这里就不一一例举后面遇到了再给大家介绍
第三部分,data区域POST向服务器传送的数据

3.2 HTTP响应报文

在这里插入图片描述
响应例子
在这里插入图片描述
第一部分,响应行 HTTP/1.1为版本 200为状态码 OK为状态消息
状态码由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:

1xx:表示服务器已接收了客户端请求,客户端可继续发送请求;
2xx:表示服务器已成功接收到请求并进行处理;
3xx:表示服务器要求客户端重定向;
4xx:表示客户端的请求有非法内容;
5xx:表示服务器未能正常处理客户端的请求而出现意外错误;

常用的状态码和状态消息

 200 OK #客户端请求成功 
    400 Bad Request #客户端请求有语法错误,不能被服务器所理解 
    401 Unauthorized #请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 
    403 Forbidden #服务器收到请求,但是拒绝提供服务 
    404 Not Found #请求资源不存在 
    500 Internal Server Error #服务器发生不可预期的错误 
    503 Server Unavailable #服务器当前不能处理客户端的请求,一段时间后可能恢复正常

更多状态码
第二部分响应头
Cache-Control:指定了请求和响应遵循的缓存机制
更多Cache-Control
Content-Type:服务器向客户端返回内容类型,类型与请求头相同
Vary:告诉缓存服务器使用什么判断一个请求的资源是fresh还是stale的
具体解释该博客上解释得比较清楚(大致意思为,请求资源的依据Vary值)
Server:服务器处理请求的软件版本
X-AspNet-Version:这个是服务器使用的.NET版本信息
Set-Cookie:服务器设置客户端的cookie值
X-Powered-By:网站是用何种语言或框架编写的,这里是ASP.NET
Date:时间
Connection:连接状态与请求报文相同
Content-Length:长度
第三部分,响应数据
例子中数据为HTML代码

到这里web基础知识基本完毕
如有错误或不足欢迎私信
邮箱:[email protected]
github:https://github.com/Gr3enh4nd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章