[网络]http/https的简单认识

文章目录

  • [一. 什么是http](#一. 什么是http)
  • [二. http协议工作过程](#二. http协议工作过程)
  • [三. http协议格式](#三. http协议格式)
    • [1. 抓包工具fiddler](#1. 抓包工具fiddler)
    • [2. http请求报文](#2. http请求报文)
    • [3. http响应报文](#3. http响应报文)

一. 什么是http

HTTP (全称为 "超⽂本传输协议") 是⼀种应⽤⾮常⼴泛的 应⽤层协议

HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议

HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于UDP 实现)

⽬前我们主要使⽤的还是 HTTP1.1 和 HTTP2.0 . 借来的讲的 HTTP 以 1.1 版本为主

我们平时打开⼀个⽹站, 就是通过 HTTP 协议来传输数据的.

当我们在浏览器中输⼊⼀个 搜狗搜索的 "⽹址" (URL) 时, 浏览器就给搜狗的服务器发送了⼀个 HTTP请求, 搜狗的服务器返回了⼀个 HTTP 响应.

这个响应结果被浏览器解析之后, 就展⽰成我们看到的⻚⾯内容. (这个过程中浏览器可能会给服务器发送多个 HTTP 请求, 服务器会对应返回多个响应, 这些响应⾥就包含了⻚⾯ HTML, CSS, JavaScript, 图⽚, 字体等信息).

所谓 "超⽂本" 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据

二. http协议工作过程

当我们在浏览器中输⼊⼀个 "⽹址", 此时浏览器就会给对应的服务器发送⼀个 HTTP 请求. 对⽅服务器收到这个请求之后, 经过计算处理, 就会返回⼀个 HTTP 响应.

http应用场景:

  1. 网页 -> 服务器 之间的交互
  2. 手机app -> 服务器 之间的交互
    但是在实际开发中, 不一定是真正直接使用http, 而是使用https, 本质上还是http, 但是引入了额外的加密层

三. http协议格式

1. 抓包工具fiddler

想要看到http请求或响应的, 可以通过''抓包工具'', 我们使用Fiddler来抓包

原理:

找到Fiddler的官网:

安装好后, 需要手动开启抓取https的功能


全部勾选上

打开就是这样的效果:

将左侧全选delete, 打开一个bing, 就可以看到左边:

这些结果都是浏览器打开bing网页的时候, 给bing发送的http/https的请求数据

浏览器http访问服务器, 往往不只发送一个请求, 很可能是发送了多个请求

我们需要关注的是蓝色的, 并且body这一列数据比较大的

蓝色的, 服务器返回的是html数据

黑色的, 返回的是普通的数据

还会有其他不同的颜色, 区分css, js, 图片

右上方, 是请求的详情, 选择Raw, 是http请求的原始数据

右下方, 是响应的详情, 选择Raw, 是http响应的原始数据

http是个文本协议, 但是如果需要返回的响应比较大, 就可能会需要把响应的数据压缩再返回

经过压缩, 相当于是用cpu资源, 置换带宽资源, 压缩以后的数据到达客户端, 再让客户端解压缩, 对于浏览器来说, 解压缩是自动完成的, 但是使用fiddler就需要手动的解压缩

点击即可

2. http请求报文

点击可用记事本打开请求

分成4个部分

(下面只是简单熟悉, 下一篇会详细介绍)

  1. 首行

    首行包含三个部分, 用空格来区分

    a) 请求的方法

    GET 就是要从服务器中获取某个数据

    b) 请求的URL

    c) 版本号

  2. 请求头header

    header中是"键值对"结构, 每一行是一个键值对, 键和值之间, 使用 : 分割

  3. 空行

    最后一个header后面, 存在一个空行, 类似链表, 使用null作为结尾

  4. 正文body

    正文是可选的, 有些情况下有正文, 有些情况没有正文

3. http响应报文

同样分成4个部分

  1. 首行
    首行分成3个部分
    a) 版本号

    b) 状态码

    c) 状态码描述

    这是一个成功的响应
  2. 响应的报头header
  3. 空行
    最后一个header后面, 存在一个空行, 类似链表, 使用null作为结尾
  4. 正文

相关推荐
游戏开发爱好者81 小时前
iOS重构期调试实战:架构升级中的性能与数据保障策略
websocket·网络协议·tcp/ip·http·网络安全·https·udp
(:满天星:)5 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
野蛮人6号6 小时前
虚拟机网络编译器还原默认设置后VMnet8和VMnet1消失了
网络·vmware·虚拟机网络编译器·vmnet8消失
scuter_yu7 小时前
主流零信任安全产品深度介绍
运维·网络·安全
江苏思维驱动智能研究院有限公司7 小时前
Sophos 网络安全:全球领先的自适应安全解决方案提供商
网络·安全·web安全
面朝大海,春不暖,花不开7 小时前
Java网络编程:TCP/UDP套接字通信详解
java·网络·tcp/ip
ChicagoTypewriter7 小时前
计算机网络中的常用表项梳理
网络·计算机网络·智能路由器
Bruce_Liuxiaowei10 小时前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
tmacfrank11 小时前
Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
android·网络·https
liulilittle11 小时前
深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
开发语言·网络·c++·tcp/ip·智能路由器·tcp·通信