【计算机网络】HTTP 与 HTTPS ( HTTPS 简介 | HTTP 通信过程 )

简介: 【计算机网络】HTTP 与 HTTPS ( HTTPS 简介 | HTTP 通信过程 )

文章目录

一、HTTPS 简介

二、HTTP 通信过程





一、HTTPS 简介


HTTPS 协议就是在 HTTP 协议的基础上 , 增加了一个 SSL 外壳 , 对 HTTP 协议进行加密 ;


HTTP 协议传输数据时 , 传输的就是 明文 , 如果抓包或者截获后 , 可以直接看到传输的数据内容 ;


HTTPS 协议在网络传输时 , 传输的内容是 加密后的内容 , 不是明文 , 更不容易被截获 ;



HTTP 特点 :


① 无状态 : 服务器 不存储客户端的状态 , 客户端每次请求服务器 , 都当做新的客户端第一次请求 ; 爬虫可以随意无限次地抓取网站信息 ;


② 无连接 : 客户端每次请求服务器端 , 数据传授完毕后 , 连接断开 ; HTTP 是基于 TCP 协议的 , 每次连接需要 3 33 次握手 , 每次断开连接需要 4 44 次挥手 , 频繁进行连接断开操作 , 繁琐 , 延迟高 , 空耗系统资源 ;


③ 安全性差 : 传输的数据是 明文 , 无法确保数据保密性 ; 客户端和服务器端不验证对方身份 , 无法确保数据完整性 ;


④ 快速 , 灵活 , 高效 ;



HTTPS 特点 :


① 安全性强 : 传输数据加密 , 中间截获 , 无法进行解密 ;


② 身份验证 : 通过 SSL 认证证书 , 确认通信的 客户端 与 服务器 双方的身份 ;


③ 数据完整性 : 加密后的数据能防止被截获修改 ;






二、HTTP 通信过程


发送 HTTP 请求 , HTTP 基于 TCP , 因此需要先建立 TCP 连接 ;


① 建立 TCP 连接 : TCP 连接的建立需要 3 33 次握手机制 ;


客户端 -> 服务器端 : 你能听到我说话吗 ?

服务器端 -> 客户端 : 我能 , 你能听到我说话吗 ?

客户端 -> 服务器端 : 我能 , 开始发送数据 ;

② 客户端浏览器向 Web 服务器发送请求报文 : 请求头命令就是下图 " 请求行 " 信息 ; 如


GET / HTTP/1.1

1

③ 客户端浏览器发送请求头信息 : 请求头信息就是下图中的 " 请求头部 " 数据 , 由若干键值对组成 ; 如下示例


Host: rucfd.ruc.edu.cn
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "b7f-5b575595fe630-gzip"
If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT



完整的请求报文信息 :


GET / HTTP/1.1
Host: rucfd.ruc.edu.cn
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
If-None-Match: "b7f-5b575595fe630-gzip"
If-Modified-Since: Wed, 02 Dec 2020 06:28:18 GMT


④ Web 服务器向客户端浏览器会送应答第一部分 : 只回送 " 响应行 " 数据 ; 如 :


HTTP/1.1 200 OK


⑤ Web 服务器向客户端浏览器回送应答第二部分 : 回送 " 响应头部 " 信息 ; 如 :


Server: none
Date: Mon, 21 Jun 2021 05:15:56 GMT
Content-Type: text/html
Content-Length: 1104
Connection: keep-alive
Last-Modified: Wed, 02 Dec 2020 06:28:18 GMT
ETag: "b7f-5b575595fe630-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip


image.png


响应报文完整示例 :


HTTP/1.1 200 OK
Server: none
Date: Mon, 21 Jun 2021 05:15:56 GMT
Content-Type: text/html
Content-Length: 1104
Connection: keep-alive
Last-Modified: Wed, 02 Dec 2020 06:28:18 GMT
ETag: "b7f-5b575595fe630-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip


⑥ Web 服务器向客户端浏览器回送应答第三部分 : 回送用户请求的实际数据 , 在之前 " 响应头部 " 中的 Content-Type 中设置有用户请求的类型 , 是 text/html 类型 , 这里会送的就是该 html 文本数据 ;


Content-Type: text/html


⑦ Web 服务器关闭 TCP 连接 : 4 44 次挥手 ;


目录
相关文章
|
4月前
|
存储 网络协议 算法
从HPACK到多路复用,揭秘HTTP/2如何终结网络拥堵
HTTP/2通过HPACK压缩头部冗余信息,提升传输效率;并利用多路复用技术,在单个TCP连接上并行处理多个请求,避免队头阻塞,显著提升性能。同时支持服务器推送和流优先级设置,优化资源加载体验。
291 7
|
7月前
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
410 61
|
7月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
8月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
240 18
|
8月前
|
运维 安全 网络安全
443端口:HTTPS通信的安全基石
作为互联网安全的基石,443端口通过加密与认证机制,保护了数十亿用户的隐私与数据完整性。无论是开发者、运维人员还是普通用户,理解其原理与作用都至关重要。在享受便利的同时,也需时刻关注安全实践,防范潜在风险。
2336 12
|
9月前
|
网络安全
网络问题解析:如何解决CondaHTTPError HTTP 000 CONNECTION FAILED错误。
以上就是斯诺普为你准备的解决Conda出现HTTP连接错误的手术室。希望这辆小车可以顺利驶出棘手的泥潭,再次在自由的大路上疾驰。一切的尝试和努力,只为更好的探索与开发。
370 17
|
Web App开发 前端开发
|
Web App开发 前端开发 算法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
基于大数据的精准营销与应用场景 2015年08月11日 大数据 大数据营销时代来临营销学领域过去半个多世纪的发展让我们见证了从“以产品为中心”到“以客户为中心”的转变。
1065 0
|
SQL Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
     如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
887 0
|
Web App开发 前端开发