[TOC]

0x01 Web协议基础

问:什么是协议?

答:双方通信交互通讯时候,遵守一种规范和规则;

(1)http协议

  • 针对于B/S架构,在客户端指向http请求的时候遵循一种规范,再服务器响应后也会按照一中规则返回数据包;
  • 该协议有两个版本:
    • 1.0版本:请求数据,服务器返回数据后会断开连接:
    • 1.1版本:请求数据,服务器返回数据后连接还会保持着,但是一般设置有生存时间超过这个值或者B/S关闭掉都会断开连接请求;

HTTP Rquest(请求):包含三部分内容即请求行、请求头、请求体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- 请求行 -->
<请求方法> <请求路径> <协议版本>
POST /examples/servlets/servlet/RequestParamExample HTTP/1.1

<!-- 请求头 -->
<> : <>
Host: 127.0.0.1:8080 <!-- 请求的主机和端口 -->
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0 <!--用户代理即Client浏览器信息-->
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 <!--客户端向服务器表示自己支持什么类型的数据 -->
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 <!--支持的语言格式 -->
Accept-Encoding: gzip, deflate <!--压缩算法 -->
Content-Type: application/x-www-form-urlencoded <!-- 提交的数据类型经过urlencoding编码的form表单的数据 -->
Content-Length: 29
Origin: http://127.0.0.1:8080 <!--站点起源地址 即验证内网、外网访问-->
Connection: keep-alive <!--连接方式:保持连接-->
Referer: http://127.0.0.1:8080/examples/servlets/servlet/RequestParamExample <!--来源地址即请求该资源的页面地址-->
Upgrade-Insecure-Requests: 1 <!--升级不安全要求-->

<!-- 请求体:发送给服务器后端处理的数据 -->
firstname=Weiyi&lastname=Geek


HTTP Response(响应):响应行、响应头、响应体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--响应行-->
协议版本 状态码 状态值
HTTP/1.1 200 OK

<!--响应头-->
Server: Apache-Coyote/1.1 <!--服务器提供服务名称类型 -->
Content-Type: text/html;charset=UTF-8 <!--返回数据类型以及编码-->
Content-Length: 678 <!--返回响应体的长度-->
Date: Sun, 16 Feb 2020 12:52:22 GMT <!--响应的时间-->

<!--响应体-->
<html>
.......
</html>

参考来源:

  • HTTP1.1规范pdf.pdf;
  • 如果在多线程下载的时候还会遇到状态码为416的错误;


(2)https协议

  • HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

Web访问顺序:web浏览器->web服务器(狭义)->web容器->应用服务器->数据库服务器

理解浏览器解析,解码顺序

WeiyiGeek.

WeiyiGeek.

描述:在Http/Https协议中,规定了请求和响应双方,客户端和服务器端与Web相关的资源;
它有两种分类静态资源和动态资源

  • 前者:HTML / JS / CSS
  • 动态资源: Servlet / jsp