网络原理(HPPT/HTTPS)

应用层(重点)

HTTP协议

HTTP 是⼀个⽂本格式的协议. 可以通过 Chrome 开发者⼯具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节.

Fiddler 抓包


左侧窗⼝显⽰了所有的 HTTP请求/响应, 可以选中某个请求查看详情.

右侧上⽅显⽰了 HTTP 请求的报⽂内容. (切换到 Raw 标签⻚可以看到详细的数据格式)

右侧下⽅显⽰了 HTTP 响应的报⽂内容. (切换到 Raw 标签⻚可以看到详细的数据格式)

请求和响应的详细数据, 可以通过右下⻆的 View in Notepad 通过记事本打开

HTTP 请求 (Request)

认识 URL

平时我们俗称的 "⽹址" 其实就是说的 URL


https : 协议⽅案名. 常⻅的有 http 和 https, 也有其他的类型. (例如访问 mysql 时⽤的
jdbc:mysql )

user:pass : 登陆信息. 现在的⽹站进⾏⾝份认证⼀般不再通过 URL 进⾏了. ⼀般都会省略

v.bitedu.vip : 服务器地址. 此处是⼀个 "域名", 域名会通过 DNS 系统解析成⼀个具体的 IP 地
址. (通过 ping 命令可以看到, v.bitedu.vip 的真实 IP 地址为 118.24.113.28 )

端⼝号: 上⾯的 URL 中端⼝号被省略了. 当端⼝号省略的时候, 浏览器会根据协议类型⾃动决定使⽤
哪个端⼝. 例如 http 协议默认使⽤ 80 端⼝, https 协议默认使⽤ 443 端⼝.

/personInf/student : 带层次的⽂件路径.
userId=10000&classId=100 : 查询字符串(query string). 本质是⼀个键值对结构. 键值对之
间使⽤ & 分隔. 键和值之间使⽤ = 分隔.

⽚段标识: 此 URL 中省略了⽚段标识. ⽚段标识主要⽤于⻚⾯内跳转.

认识 "⽅法" (method)

1. GET ⽅法

GET 是最常⽤的 HTTP ⽅法. 常⽤于 获取服务器 上的某个资源. 在浏览器中直接输⼊ URL, 此时浏览器就会发送出⼀个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求.
2.GET 请求的特点

⾸⾏的第⼀部分为 GET

URL 的 query string 可以为空, 也可以不为空.

header 部分有若⼲个键值对结构.

body 部分为空

POST ⽅法

POST ⽅法也是⼀种常⻅的⽅法. 多⽤于 提交⽤⼾输⼊的数据给服务器 (例如登陆⻚⾯).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使⽤ JavaScript 的 ajax 也可以构造 POST Z
2.POST 请求的特点
• ⾸⾏的第⼀部分为 POST
• URL 的 query string ⼀般为空 (也可以不为空)
• header 部分有若⼲个键值对结构.
。body 部分⼀般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的⻓度
由 header 中的 Content-Length 指定

GET与POST区别(经典面试问题)

其他⽅法

认识请求 "报头" (header)

header 的整体的格式也是 "键值对" 结构.
每个键值对占⼀⾏. 键和值之间使⽤分号分割.

报头的种类有很多, 此处仅介绍⼏个常⻅的:
Host :表⽰服务器主机的地址和端⼝.
Content-Length :表⽰ body 中的数据⻓度.
Content-Type :表⽰请求的 body 中的数据格式

Host

Content-Length

Content-Type

Referer :这个⻚⾯是从哪个⻚⾯跳转过来的

User-Agent:表⽰浏览器/操作系统的属性

Cookie:浏览器在本地实体化的一个机制

Cookie 中存储了⼀个字符串, 这个数据可能是客⼾端(⽹⻚)⾃⾏通过 JS 写⼊的, 也可能来⾃于服务器 (服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据).

cookie登录过程

HTTP/方法/URL/版本号(总结)

请求头(总结)

HTTP 响应

状态码

认识响应 "报头" (header)

响应报头的基本格式和请求报头的格式基本⼀致.
Content-Type , Content-Length 等属性的含义也和请求中的含义⼀致.

Content-Type/Content-Length

响应中的 Content-Type 常⻅取值有以下⼏种:

text/html : body 数据格式是 HTML

text/css : body 数据格式是 CSS

application/javascript : body 数据格式是 JavaScript

application/json : body 数据格式是 JSON

认识响应 "正⽂" (body)

正⽂的具体格式取决于 Content-Type.

通过 form 表单构造 HTTP 请求

form (表单) 是 HTML 中的⼀个常⽤标签. 可以⽤于给服务器发送 GET 或者 POST 请求.
不要把 form 拼写成 from!!

form 发送 GET 请求

form 的重要参数:

action: 构造的 HTTP 请求的 URL 是什么.

method: 构造的 HTTP 请求的 ⽅法 是 GET 还是 POST (form 只⽀持 GET 和 POST).
input 的重要参数:

type: 表⽰输⼊框的类型. text 表⽰⽂本, password 表⽰密码, submit 表⽰提交按钮.

name: 表⽰构造出的 HTTP 请求的 query string 的 key. query string 的 value 就是输⼊框的⽤⼾输
⼊的内容.

value: input 标签的值. 对于 type 为 submit 类型来说, value 就对应了按钮上显⽰的⽂本

通过 Java socket 构造 HTTP 请求

HTTPS

HTTPS 也是⼀个应⽤层协议. 是在 HTTP 协议的基础上引⼊了⼀个加密层.
HTTP 协议内容都是按照⽂本的⽅式明⽂传输的. 这就导致在传输过程中出现⼀些被篡改的情况

"加密"

加密就是把 明⽂ (要传输的信息)进⾏⼀系列变换, ⽣成 密⽂ .
解密就是把 密⽂ 再进⾏⼀系列变换, 还原成 明⽂

HTTPS 的⼯作过程

既然要保证数据安全, 就需要进⾏ "加密".
⽹络传输中不再直接传输明⽂了, ⽽是加密之后的 "密⽂".
加密的⽅式有很多, 但是整体可以分成两⼤类: 对称加密 和 ⾮对称加密

引⼊对称加密

对称加密其实就是通过同⼀个 "密钥" , 把明⽂加密成密⽂, 并且也能把密⽂解密成明⽂.

引⼊⾮对称加密

⾮对称加密要⽤到两个密钥, ⼀个叫做 "公钥", ⼀个叫做 "私钥".
公钥和私钥是配对的. 最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多.

通过公钥对明⽂加密, 变成密⽂

通过私钥对密⽂解密, 变成明⽂
也可以反着⽤

通过私钥对明⽂加密, 变成密⽂

通过公钥对密⽂解密, 变成明⽂

相关推荐
乌南竹2 分钟前
四十五:HTTP/2特性概述
网络·网络协议·http
hgdlip16 分钟前
ip地址暴露了怎么办?手机怎样改ip地址以保障安全
网络·tcp/ip·智能手机
dog2501 小时前
TCP 的文化内涵
服务器·网络·tcp/ip
不会吉他的肌肉男不是好的挨踢男1 小时前
记录解决 linux部署完web服务却只能127.0.0.1访问但不能公网ip访问
linux·前端·tcp/ip
RayLink远程控制电脑2 小时前
远程协助,打工人的数字生活私人医生
服务器·网络·生活
前端与小赵2 小时前
什么是WebSocket,有什么特点
网络·websocket·网络协议
网络安全Ash2 小时前
网络安全-态势感知
网络·安全·web安全
运维有小邓@2 小时前
U2F和FIDO2 两种安全认证技术优劣势对比
服务器·网络·安全
小翼不想投降2 小时前
nmap详解
网络·安全·web安全
黑客呀3 小时前
密码学——密码学基础、散列函数与数字签名
网络·数据库·人工智能