一文了解HTTP与HTTPS

本文详细介绍了HTTP与HTTPS协议,包括HTTP的特点、请求过程、报文格式,以及TCP的三次握手和四次挥手。进一步探讨了HTTPS的原理,解释了为何需要使用HTTPS以及中间人攻击问题。通过对SSL/TLS协议的理解,展示了HTTPS的四次握手过程,加深了对网络安全传输的理解。
摘要由CSDN通过智能技术生成

目录

HTTP

HTTP是什么

Http有哪些特点

一次HTTP请求过程

Http报文格式

请求行

请求头 

请求体 

Http版本演进

http1.0

http1.1

http2.0

TCP报文格式

TCP 三次握手

三次握手可以改为两次吗

TCP四次挥手

 为什么关闭连接需要四次挥手

Https

https是什么

SSL/TLS是什么

为什么要使用https

对称加密

非对称加密

中间人攻击 

https四次握手

第一次握手

第二次握手

​编辑

第三次握手

​编辑

第四次握手

​编辑


HTTP

HTTP是什么

        HTTP(Hyper Text Transfer Protocol)是超文本传输协议。它设计的初衷就是为了传输HTML(超文本标记语言)页面。

Http有哪些特点

  1. 支持客户端/服务器模式
  2. 简单快速
  3. 灵活
  4. 无链接
  5. 无状态

一次HTTP请求过程

        在Chrome浏览器输入URL后的过程如下:

  1. 浏览器判断当前输入是否是URL,如果不是URL就执行搜索
  2. 如果是URL,浏览器首先看是否有域名解析数据缓存,如果没有浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  3. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  4. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  5. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  6. 释放 TCP连接;
  7. 浏览器渲染HTML页面

Http报文格式

 http请求由三部分组成,分别是请求行,请求头和请求体,一般我们会将请求行和请求头统称为Request Headers。下面我们以百度搜索为例看一下具体内容

请求行

 请求行包含了请求方法(POST),URL地址(/mcp/pc/pcsearch)以及协议名称和版本号( HTTP/1.1)

POST /mcp/pc/pcsearch HTTP/1.1

请求头 

  常见的请求头有:

  1. Accept: 客户端可接受的MIME类型
  2. Accept-Encoding:客户端能够解码的数据编码格式
  3. Accept-Charset:客户端能够接受的字符集
  4. Accept-Language:客户端希望的语言类型
  5. Content-Length:请求正文长度
  6. Content-Type:请求正文的MIME类型
  7. Cookie:
  8. Host:域名
  9. Referer:请求来源
  10. User-Agent:请求客户端信息
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 56
Content-Type: application/json
Cookie: ; H_PS_PSSID=36427_36544_36503_36454_31254_34813_36166_36073_36520_26350_36468
Host: ug.baidu.com
Origin: https://www.baidu.com
Referer: https://www.baidu.com/s?wd=test&rsv_spt=1&rsv_iqid=0xa180517b00067a4f&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&rsv_dl=tb&rsv_sug3=9&rsv_sug1=10&rsv_sug7=100&rsv_btype=i&prefixsug=test&rsp=3&inputT=4022&rsv_sug4=5183
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"

请求体 

{"invoke_info":{"pos_1":[{}],"pos_2":[{}],"pos_3":[{}]}}

请求方法

请求方法 说明
GET        请求参数在拼在连接上,用来获取服务器上的某一资源
HEAD HEAD和GET类似,区别是HEAD响应不包含呈现数据仅响应HTTP头部信息
POST 向服务器提交数据
PUT POST和PUT相似,PUT指定资源存储位置
DELETE 删除某一个资源
TRACE 用于诊断
OPTIONS 用户获取当前URL支持的方法

 

Http版本演进

http1.0

1996年发布Http1.0, 无链接(服务器处理完TCP请求后立即断开链接),无状态(服务器不跟踪每个客户端也不记录过去的请求)

http1.1

http1.1是1997年推出的第二个正式版本,也是目前被广泛使用的版本。Http1.1版本相对于http1.0最大变化就是引入长链接避免建立和释放链接的开销

http2.0

http2.0是2015年发布的第三个版本,引入了二进制数据帧和流概念,其中帧对数据进行顺序标识;因为有了序列,服务器可以并行传输数据。

TCP报文格式</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈脩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值