信安学习之路

web(world wide web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的,全球性的,动态交互式的,跨平台的分布式图形信息系统。是建立在internet上的一种网络服务,为浏览者在internet上查找和浏览信息提供了图形化的,易于访问的直观界面,其中的文档及超级链接internet上的信息节点组织成一个互为关联的网状结构。简单来说,web是web页面的载体,我们通过浏览器上网都是web。
http请求类型
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request—URI 指定的资源的不同操作方式,以下为常用的6种:
.OPTIONS: 返回服务器所支持的HTTP请求方法。
.HEAD: 与GET请求相一致的响应,但只返回头部信息,响应体将不会被返回。
.GET: 向特定的资源发出请求。 (url回车)
.POST: 向指定资源位置上传其最新内容。
.PUT: 向指定资源位置上传其最新内容。
.DELETE: 请求服务器删除指定资源。
Get 与 Post 区别
url可见性
.Get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,get把请求的数据在URL后通过?连接,通过&进行参数分割。
.Post传参方式参数URL不可见,post将从参数存放在HTTP的包体内。
传输数据大小
.Get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字节。
.Post没有长度限制。
后退页面
.Get后退不会有影响,Post后退会重新进行提交
Get与 Post 的区别
缓存
. Get请求可以被缓存,请求的记录会留在历史记录中。
.post不可以被缓存,请求不会留在历史记录。
编码方式
.Get请求只URL编码。
.Post支持多种编码方式。
字符类型
.Get只支持ASCII字符。
.Post没有字符类型限制。
三、http 请求/响应包介绍
1.域名解析
浏览器会解析域名(主机名)得到对应的IP地址,那怎么解析到对应的IP地址?

浏览器自身的DNS缓存(时间短,一分钟,1000条缓存)如果有该域名对应的条目且没有过期则解析到此结束;
没有找到对应的条目,浏览器会搜索操作系统自身的DNS缓存,如果有该域名对应的条目且没有过期则解析到此结束;
没有找到对应的条目,尝试读取hosts文件(位于C:\Windows\System32\drivers\etc),如果有该域名对应的条目且没有过期则解析成功;
在hosts文件中没有找到对应的条目,浏览器发起一个DNS的系统调用,就会向本地配置的首选DNS服务器(运营商提供,也可以使用像Google提供的DNS服务器)发起域名解析请求(通过的是UDP协议向DNS的53端口发起请求,递归请求,运营商的DNS服务器必须得提供给我们该域名的IP地址),运营商的DNS服务器首先查找自身的缓存,找到对应的条目,且没有过期,则解析成功。没有找到对应的条目,则有运营商的DNS代我们浏览器发起迭代DNS解析请求,它首先是会找根域的DNS的IP地址(这个DNS服务器都内置13台根域的DNS的IP地址),然后进一步请求;
正常情况下通过这四步基本就能解析域名获得IP了。
2.发起TCP3次握手
拿到域名对应的IP地址之后,User-Agent(指浏览器)会以一个随机的端口(1024<端口<65535)向服务器的WEB程序的80端口发起TCP连接请求。连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后(通过各种路由设备,局域网内除外),进入到网卡,然后进入内核的TCP/IP协议(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB层

3.建立TCP连接后发起HTTP请求
经过TCP3次握手之后,浏览器发起了http的请求

4.服务器端响应http请求,浏览器得到html代码
服务器端WEB程序接收到http请求以后,就开始处理该请求,处理之后就返回给浏览器html文件

5.浏览器解析html代码,并请求html代码中的资源
解析html代码,遇到 js/css/image 等静态资源,就向服务器端去请求下载(多线程下载,浏览器的线程数不一样),利用 keep—alive特性,建立一次HTTP连接,可以请求多个资源,所以请求成功显示的顺序并不一定是代码里面的顺序。
浏览器在请求静态资源的时(未过期情况下),向服务器端发起一个http请求(询问自从上一次修改时间到现在有没有对资源进行修改),如果服务器端返回304状态码(告诉浏览器服务器端没有修改),浏览器会直接读取本地的该资源的缓存文件。

6.浏览器对以页面进行渲染呈现给用户
浏览器利用自己内部的工作机制,把请求到的静态资源和html代码进行渲染,渲染之后呈现给用户
请求/响应正文

  1. 组成
    一个HTTP请求报文由四个部分组成:请求行,请求头部,空行,请求数据。

  2. 服务器端响应http请求,浏览器得到html代码
    请求行由请求方法字段,URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如GET/data/info.html HTTP/1.1
    方法字段就是HTTP使用的请求方法,比如常见的GET/POST
    其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别:
    HTTP1.0对于每一个连接都只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

  3. 空行
    它的作用是通过一个空行,告诉服务器请求头部到此为止。

  4. 请求数据
    若方法字段是GET,则此项为空,没有数据
    若方法字段是POST,则通常来说此处放置的就是要提交的数据
    比如要使用的POST方面提交一个表单,其中有user字段中数据为“admin”,passwor字段为123456,那吗这里的请求数据就是 user=admin&password=123456,使用&来连接各个字段。

5.HTTP响应报文
响应行
响应行一般由协议版本,状态码及其描述组成 比如 HTTP/1.1 200 OK
其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,ok则是它的描述
响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。
设置HTTP响应头往往和状态码结合起来。例如,有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WWW-Authenticate头。然而,即使在没有设置特殊含义的状态代码时,指定应答头也是很有用的。应答头可以用来完成:设置Cookie,指定修改日期,指示浏览器按照指定的间隔刷新页面,声明文档的长度以便利用持久HTTP连接,…等等许多其他任务
响应体
响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。
响应报文格式在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值