小迪安全系列笔记01-数据包扩展

本文详细解析了HTTP协议的基本概念、请求和响应数据格式,以及1XX至5XX状态码的含义。同时深入探讨了HTTPS的加密原理和与HTTP的区别,涵盖SSL/TLS协议在数据传输中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. HTTP协议

HTTP协议,超文本传输协议。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

1.1 相关特点:

无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。

1.2 Request 请求数据包数据格式:        

  1. 请求行:包括请求方法、URL、协议/版本,例如:GET /index.html HTTP/1.1
HTTP 规划定义了 8 种可能的请求方法:
GET:检索 URL 中标识资源的一个简单请求
HEAD:与 GET 方法相同,服务器只返回状态行和头标,并不返回请求文档
POST:服务器接受被写入客户端输出流中的数据的请求
PUT:服务器保存请求数据作为指定 URL 新内容的请求
DELETE:服务器删除 URL 中命令的资源的请求
OPTIONS:关于服务器支持的请求方法信息的请求
TRACE:web 服务器反馈 Http 请求和其头标的请求
CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理
  1. 请求头(Request Header)
HOST: 主机或域名地址。
Accept:指浏览器或其他客户可以接受的 MIME 文件格式。Servlet 可以根据它判断并返回适当的文件格式。
User-Agent:是客户浏览器名称。
Host:对应网址 URL 中的 Web 名称和端口号。
Accept-Langeuage:指出浏览器可以接受的语言种类,如 en 或 en-us,指英语。
connection:用来告诉服务器是否可以维持固定的 HTTP 连接。http 是无连接的,HTTP/1.1 使用 Keep-Alive为默认值,这样当浏览器需要多个文件时(比如一个 HTML 文件和相关的图形文件),不需要每次都建立连接。
cache-control:缓存控制开关,指定所有缓存机制在整个请求/响应链中必须服从的指令。当值为max-age=xxx表示缓存的内容将在 xxx 秒后失效。
Upgrade-Insecure-Requests:请求头向服务器发送一个客户端对HTTPS加密和认证响应良好,并且可以成功处理的信号,可以请求所属网站所有的HTTPS资源。当值为“1”时,服务器收到请求后会返回 “Content-Security-Policy: upgrade-insecure-requests” 头,告诉浏览器,可以把所属本站的所有 http 连接升级为 https 连接。
Referer :表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页
/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪 Web 请求是从什么网站来的。
X-Forwarded-For:XFF头,代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
Content-Type:用来表名 request 的内容类型。可以用 HttpServletRequest 的 getContentType()方法取得。
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是 ISO-8859-1.
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加
速文件传递速度。浏览器在接收到 Web 响应之后先解码,然后再检查文件格式。
Cookie:浏览器用这个属性向服务器发送 Cookie。Cookie 是在浏览器中寄存的小型数据体,它可以记载
和服务器相关的用户信息,也可以用来实现会话功能。
  1. 空行:最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。

  2. 请求正文

1.3 Response 返回数据包数据格式:

   一个响应由四个部分组成;状态行、响应头标、空行、响应数据。
1. 状态行:协议版本、状态代码、状态描述,元素之间以空格分隔
2. 响应头标:包含服务器类型、日期、长度、内容类型等

ETag是URL的tag,用来标示URL对象是否改变。这样可以应用于客户端的缓存:服务器产生ETag,并在HTTP响应头中将其传送到客户端,服务器用它来判断页面是否被修改过,如果未修改返回304,无需传输整个对象。


3. 空行:响应头与响应体之间用空行隔开
4. 响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面

1.4 状态码:

访问一个网页时,浏览器会向web服务器发出请求。此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。
状态码分类:
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,请求成功收到,理解并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器在处理请求的过程中发生了错误。

常见状态码:

200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

 2.HTTPS

HTTPS:HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

SSL:SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持

HTTPS数据传输流程:

1. 首先客户端通过URL访问服务器建立SSL连接。
2. 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
3. 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
5. 服务器利用自己的私钥解密出会话密钥。
6. 服务器利用会话密钥加密与客户端之间的通信。

总结HTTPS和HTTP的区别

  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值