WEB安全基础之HTTP协议【第五辑】

本文介绍了HTTP协议的起源、发展历史,以及其与TCP/IP的关系,详细解释了HTTP的工作原理,包括请求-响应机制、状态码、无状态性与cookie的使用。作者强调学习Web安全需理解Web开发逻辑。
摘要由CSDN通过智能技术生成

知己知彼,才能百战不殆


学WEB安全,就要比开发还要懂WEB的开发逻辑


一、HTTP的由来

1990年左右,当时的网络应用基本都是以文本的方式出现,缺少图形化界面和交互性。

当时CERN(欧洲核子研究组织)的一个博士就想有没有一种可以让远隔两地的人员进行方便的共享知识的工具或者技术。
当时的想法是通过多文档之间行成的超文本连成可以参阅的WWW(万维网)。

在1990 年 11 月,CERN 成功研发了世界上第一台 Web 服务器和 Web浏览器。这个过程中会涉及到很多问题,因为会涉及到交互,有浏览器应用、服务器、中间通讯的协议等等,但是当时都没有统一的标准。

HTTP正式被公布是在1996年的5月,版本被命名为HTTP1.0。
1997年1月公布了HTTP1.1版本,2015年公布了HTTP2版本,2022年公布了HTTP3版本。

HTTP被发明后主要用于解决什么问题?

最早设想是用于解决知识共享的问题,每一个都可以方便通过HTTP协议进行知识共享。
现在已经渗透到各行各业了,成为了一种基础设施,让全世界的各种新文化、新知识都方便在互联网上可以查询和分享。

二、HTTP的孪生兄弟及大家族及定义

在了解HTTP定义前,我们需要先了解HTTP的“父辈”:TCP/IP,HTTP只是TCP/IP的一个子集,现在之所以能够方便的通信、上网、聊天等,在于所有的计算机、手机都可以联网,在这个过程汇总,所有的计算机、手机、网络设备都必须使用相同的方式进行通信,就想人和人之间沟通对话,不同国家的人想要沟通交流也得使用同一种语言才能相互理解意思,这个对于通信世界来讲是一种规则。

这种规则也通常被称之为协议(protocol)。

协议中比较好的方式是进行了分层,例如TCP/IP协议中分为了4层,应用层、传输层、网络层和数据链路层。

分层的好处主要是可以各司其职,分工更加明确,处理和设计也可以更简单一些。其中应用层就有包括FTP(File Transfer Protocol,文件传输协议)、DNS(Domain Name System,域名系统),也包括HTPP协议。

传输层有两个不同性质的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。
在这里插入图片描述

使用TCP/IP协议进行网络通信时,会通过分层的顺序与对方进行通信,发送端从应用层往下走,接收端则往上走。

在这里插入图片描述

那么过程中如何将信息准确无误的送达到对方那里?

每一层就需要把相关的信息进行封装起来,下一层再把自己封装给到下一层,这样就像我们打包快递,封装好了之后再发到目的地,收件人再拆包装。

了解了TCP/IP协议还需要了解IP、TCP和DNS,这三个协议和HTTP也是密不可分的。IP协议,这个协议处于网络层,几乎所有用到网络的系统都会用到IP协议。IP协议的作用主要是把各种数据包传送给对方。
其中两个非常重要的条件是IP地址和MAC地址(Media Access Control Address)。

IP地址可以和MAC地址进行配对,IP地址可以变换,但是MAC地址基本上不会变。

所以IP地址的通信是依赖MAC地址的,那么这两个如何关联起来呢?这个时候会采用ARP协议(Address Resolution Protocol),ARP是一种用于解析地址的协议,根据通信方的IP地址就可以反查对应的MAC地址。

在每一次通信过程中,会经过很多道计算机和路由器,但是每一个计算器和路由器只知道一部分传输路线,这种传输路线一般称之为路由,这种就更像送快递了,你人在广东某宝上买一个东西,卖家包装好后先送到他附近的菜鸟驿站,然后菜鸟驿站再选择下一个集散中心,集散中心知道下一站发往哪里。

在这里插入图片描述

TCP协议位于传输层,是为了提供更可靠的字节流服务。
字节流服务(Byte Stream Service)是为了更方便传输,将大块的数据分割成以报文段为单位的数据包进行管理。

其中TCP为了准确无误的将数据送达,采用了三次握手机制(Three way handshaking),将数据包送出去后,就会向对方确认是否成功送达,握手的时候会使用TCP的标志(flag),SYN(synchronize)和ACK(acknowledgement)。

发送端先发送一个带有SYN标志的数据包给对方,对方收到后回一个带有SYN/ACK标志的数据包表示收到确认信息,发送端再回传一个ACK标志的数据包,代表握手结束。

在这里插入图片描述

最后一个是DNS服务,DNS和HTTP一样处于应用层,提供域名到IP地址之间的解析服务。

计算机除了可以设置IP地址,也可以设置主机名和域名,例如www.hacker.com,用户也可以使用主机名和域名来访问对方的计算机,而不是通过IP地址来访问,而且主机名和域名更好让人记忆。

所以DNS服务主要就是解决该问题,通过域名可以查找IP地址,或者逆向从IP地址找到域名。

在这里插入图片描述

学完了这些可以梳理下HTTP协议和他们之间的关系了。

在这里插入图片描述

我们在浏览器上输入一个网站域名,首先客户端会去找DNS服务尝试解析,这个域名是什么IP?

然后按照HTTP的协议格式进行封装,TCP再进行封装给到IP,最后通过TCP/IP协议给到对方。
这里还有两个需要了解的概念:URI和URL。

分别是统一资源标识符和统一资源定位符。
我们日常经常用到的,例如http://www.baidu.com就是URL(统一资源定位符)

而URI是Uniform Resource Identifier,统一资源标识符是有通用语法的,例如:

在这里插入图片描述

其中URL是URI的子集
可以详细了解下URI的格式

在这里插入图片描述

HTTP协议的定义:(Hypertext Transfer Protocol)超文本传输协议,是一个简单的请求-响应协议,通常运行再TCP之上。定义了客户端(通常是WEB浏览器)如何从WEB服务器请求WEB页面,以及服务器如何向客户端响应。


三、HTTP的部分技术原理

使用HTTP协议时是能够明确哪端是客户端,哪端是服务器端。HTTP协议规定:请求必定是由客户端发出,由服务器端回复响应。
在这里插入图片描述

其中起始开头的GET表示请求访问服务器的类型,称为方法(method)。随后的字符串/index.htm指明了请求的访问资源对象,也叫做请求URI(request-URI),最后的HTTP/1.1则是HTTP的版本好,用于提示客户端使用的HTTP协议功能。

在服务器起始开头的HTTP/1.1表示服务器对应的HTTP版本。

紧挨着200 OK表示请求处理结果的状态码(status code)和原因短语(reason-phrase),下一行显示了创建响应的日期时间。

HTTP是不保存状态的协议,即无状态(stateless)协议,HTTP协议自身不对请求和响应之间的通信状态进行保存。不做持久化处理。协议本身并不保留之前一切的请求或者响应报文的信息。为了更快的处理大量的事物。

虽然HTTP协议是无状态协议,但是为了保存状态功能,于是引入了cookie技术,为什么要保存状态?

因为一个网站有大量的页面,例如网上购物过程中,用户登录成功后跳转到其他的这个站点的其他页面进行购买物品,这个时候用户就希望不需要重新登录,能够保持之前的登录状态。
互联网上那么资源客户端如何快速定位,通过约定好的URI来进行定位访问。

在这里插入图片描述

总结

学安全先得了解做业务的逻辑

以上就是今天学习的内容,明天继续。

参考文献

HTTP权威指南 (图灵程序设计丛书)
WEB安全防护指南(基础篇)
图解HTTP (上野宣)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Docker是腊肠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值