【安全牛学习笔记】HTTP协议

来源:互联网 发布:java isinteger 编辑:程序博客网 时间:2024/06/06 00:26

http协议基础

1. HTTP概述
众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP、Archie Gopher等是建立在

TCP/IP协议之上的应用层协议,不同的协议对应着不同的应用。
HTTP(Hyper Text Transfer Protocol - 超文本传输协议)是一个属于应用层的面向对象的协议,

由于其简捷、快速的方式,适用于分布式超媒体信息系统。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果, (他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。。

1.1 HTTP协议特点
• 支持客户/服务器模式。
• 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。

由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
• 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
• 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户 的应答后,即断开连接。采用这种方式可以节省传输时间。
• 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着 如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方 面,在服务器不需要先前信息时它的应答就较快。
1.2 HTTP协议的运作方式

HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务 器,请求方式的格式为,统一资源标识符、协议版本号,后边是 MIME信息包括请求修饰符、客户 机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的 协议版本号、一个成功或错误 的代码,后边是MIME信息包括服务器信息、实体信息和可能的内 容。(以下使用Wireshark抓取)

2. HTTP请求格式(Request)当浏览器向Web服务器发出请求,它想服务器发送一个数据块,也就是请求信息.HTTP请求信息

由三部分构成 

pastedGraphic.png 

• 请求方法、资源标识符和协议版本• 请求头(Request Header)
• 请求正文(参数)

 下面根据请求百度的例子去说明

在HTTP请求中 首先从客户端到服务器的请求消息包括应用到资源的方法、资源的标识符和使用 

的协议版本。GET /HTTP/1.1

• 如果Request-URI是absoluteURI,主机是 Request-URI的一部分。 则乎略请求中的任何Host头部 域值。
• 如果Request-URI不是absoluteURI,且请求包括 Host 头部域,则主机由 Host 头部域值决定

请求头(Request Header)
在例子中hots/user-agent /accept/accept-Lanuage 等都为Header域。
请求正文(参数) 第三部分,空行(\r\n),即使不存在请求主体,这个空行也是必需的.如果使用POST就

可以看去。
3. HTTP响应格式(Response)

当Web服务器根据客户端的请求做出响应,HTTP响应信息由三部分组成: 

pastedGraphic.png

• 协议版本/响应码
• 响应头(Response Header) • 响应正文

 同样接着上次请求去抓取百度的响应。

协议版本/响应码 HTTP/1.1 200 OK
响应头(Response Header) Date/server/content-Length/connection 等
响应正文 就是\r\n CRLF(回车换行) 下面的 就是html页面当然也可能是其他形式。4. 请求头(Request Header)

这里只是简单的罗列一下Header的功能不做详细说明,将在以后的文章做进一步的研究
• Host www.baidu.com 主机域名以及端口(80缺省)
• User-Agent 用户代理信息 用于统计用途、协议侵害跟踪和自动识别用户代理 格式 User-Agent: <product>[/<version>] 例子: Mozilla/5.0 Firefox/3.6.12 FirePHP/0.5
• Accept 指定响应可接受的确认媒体类型
• Accept-Language 限制请求所选择的作为响应的自然语言集
• Accept-Encoding 限制请求所选择的作为响应的Content-Encoding types
• Accept-Charset 能够用来指出响应可接受的字符集
• Keep-Alive 使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,避免了建立或 者重新建立连接
• Connection允许发送方指定希望的连接选项 close/keep-alive
• Cookie 这个会在以后做一个详细的说明
• Referer 是可选的 用户客户端向服务端发送上一次链接,用户根据和统计 他可以用于防止CSRF (Cross-site request forgery 跨站请求伪造)以及盗链,但也不是万能的。
5. 响应头(Response Header)
• Date Fri, 10 Dec 2010 03:21:46 GMT 表示消息发生的日期和时间 以RCF 1123[8]的格式发送
• Server 服务端服务器信息 BWS/1.0 百度自己研发的或者改进的
• Content-Length 指定响应正文的长度大小
• Content-Type 指定响应正文MIME的类型以及编码 服务可以去控制 text/html text/xml text/ 

html;charset=gb2312
• Cache-Contol 用于控制HTTP缓存(在HTTP/1.0中仅仅实现了Pragma: no-cache)
• Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述 当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)

• Expries 给出相应被认为过期的日期和时间
• Content-Encoding 文档的编码方法。只有在解码之后才可以得到Content-Type头指定的内容类 型。利用gzip压缩文档能够显著地减少HTML文档的下载时间
• Connection 连接选项 close/keep-alive

6. 状态码介绍 状态码主要分为5大类

下面详细列出5类状态码 信息类

表示收到Web浏览器请求,正在进一步的处理中 表示请求成功地接收表示用户请求被正确接收,理解和处理例如:200 OK

• 1×× 信息类
• 2×× 成功类
• 3×× 重定向类
• 4×× 客户端错误类 表示客户端提交的请求有错误 例如:404 NOT Found,意味着请求中所引用 的文档不存在。
• 5×× 服务器错误类 表示服务器不能完成对请求的处理:如 500

100 继续
成功类
200 OK
202 接收
204 无内容
206 部分内容
重定向类
300 多路选择
302 暂时转移
304 未修改(Not Modified)305 使用代理

客户方错误类
400 错误请求(Bad Request)401 未认证 402 需要付费403 禁止(Forbidden)
404 未找到(Not Found)
405 方法不允许 406 不接受407 需要代理认证 408 请求超时409 冲突 410 失败

表示请求没有成功,客户必须采取进一步的动作。

101 交换协议

201 已创建
203 非认证信息

205 重置内容

301 永久转移303 参见其它

411 需要长度
413 请求实体太大
415 不支持媒体类型
服务器错误类
500 服务器内部错误
501 未实现(Not Implemented)502 网关失败
504 网关超时
505 HTTP版本不支持7. HTTP请求方法

HTTP1.1 总共定了8个公用方法 

• OPTIONS Fri, 10 Dec 2010 03:21:46 GMT 表示消息发生的日期和时间 以RCF 1123[8]的格式发送• HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不 必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息
• GET 向特定的资源发出请求

• POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体 中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
• PUT 向指定资源位置上传其最新内容。出于安全考虑,大多数服务器不支持此方法
• DELETE 请求服务器删除Request-URI所标识的资源。出于安全考虑,大多数服务器不支持此方法• TRACE 回显服务器收到的请求,主要用于测试或诊断。出于安全考虑,大多数服务器不支持此方 法

• CONNECT 回显服务器收到的请求,主要用于测试或诊断。出于安全考虑,大多数服务器不支持 此方法 

该笔记为安全牛课堂学员笔记,想看此课程或者信息安全类干货可以移步到安全牛课堂

Security+认证为什么是互联网+时代最火爆的认证?


      牛妹先给大家介绍一下Security+


        Security+ 认证是一种中立第三方认证,其发证机构为美国计算机行业协会CompTIA ;是和CISSP、ITIL 等共同包含在内的国际 IT 业 10 大热门认证之一,和CISSP偏重信息安全管理相比,Security+ 认证更偏重信息安全技术和操作。

       通过该认证证明了您具备网络安全,合规性和操作安全,威胁和漏洞,应用程序、数据和主机安全,访问控制和身份管理以及加密技术等方面的能力。因其考试难度不易,含金量较高,目前已被全球企业和安全专业人士所普遍采纳。

Security+认证如此火爆的原因?  

       原因一:在所有信息安全认证当中,偏重信息安全技术的认证是空白的, Security+认证正好可以弥补信息安全技术领域的空白 。

      目前行业内受认可的信息安全认证主要有CISP和CISSP,但是无论CISP还是CISSP都是偏重信息安全管理的,技术知识讲的宽泛且浅显,考试都是一带而过。而且CISSP要求持证人员的信息安全工作经验都要5年以上,CISP也要求大专学历4年以上工作经验,这些要求无疑把有能力且上进的年轻人的持证之路堵住。在现实社会中,无论是找工作还是升职加薪,或是投标时候报人员,认证都是必不可少的,这给年轻人带来了很多不公平。而Security+的出现可以扫清这些年轻人职业发展中的障碍,由于Security+偏重信息安全技术,所以对工作经验没有特别的要求。只要你有IT相关背景,追求进步就可以学习和考试。

       原因二: IT运维人员工作与翻身的利器。

       在银行、证券、保险、信息通讯等行业,IT运维人员非常多,IT运维涉及的工作面也非常广。是一个集网络、系统、安全、应用架构、存储为一体的综合性技术岗。虽然没有程序猿们“生当做光棍,死亦写代码”的悲壮,但也有着“锄禾日当午,不如运维苦“的感慨。天天对着电脑和机器,时间长了难免有对于职业发展的迷茫和困惑。Security+国际认证的出现可以让有追求的IT运维人员学习网络安全知识,掌握网络安全实践。职业发展朝着网络安全的方向发展,解决国内信息安全人才的匮乏问题。另外,即使不转型,要做好运维工作,学习安全知识取得安全认证也是必不可少的。

        原因三:接地气、国际范儿、考试方便、费用适中!

CompTIA作为全球ICT领域最具影响力的全球领先机构,在信息安全人才认证方面是专业、公平、公正的。Security+认证偏重操作且和一线工程师的日常工作息息相关。适合银行、证券、保险、互联网公司等IT相关人员学习。作为国际认证在全球147个国家受到广泛的认可。

        在目前的信息安全大潮之下,人才是信息安全发展的关键。而目前国内的信息安全人才是非常匮乏的,相信Security+认证一定会成为最火爆的信息安全认证。


原创粉丝点击