计算机网络基础:4.HTTP与HTTPS

一、回顾设定

        想象你在经营一家繁忙的餐厅,顾客们通过点餐系统(网卡)下单,订单被前台(路由器)接收并分发到各个厨房区域(网络设备)。光猫像是食材供应商,通过高效的物流系统(光纤)将食材送到餐厅。厨房(交换机)处理多个订单,确保每道菜(数据包)都按顺序送达。

        在这餐厅中,OSI七层模型就像是餐厅的运营流程:

  • 物理层:餐厅的物理设施(如餐桌、椅子)传输原始比特流。
  • 数据链路层:服务员将订单从顾客传递到厨房,确保数据在物理链路上的可靠传输。
  • 网络层:前台接收订单并分发到正确的厨房区域。
  • 传输层:厨房调度员确保每道菜按顺序送达。
  • 会话层:预订系统管理顾客的预订和用餐时间。
  • 表示层:菜单将食物以吸引人的方式展示(处理数据格式、加密和压缩)。
  • 应用层:点餐应用直接接收顾客的订单。

        TCP/IP模型简化了这个流程,将应用层、表示层和会话层合并为一个应用层,直接与用户交互。每个层次协议如HTTP、FTP、TCP、IP、Ethernet和Wi-Fi分别对应不同的餐厅操作。

        IP地址就像餐桌编号,确保每个设备(桌子)都有一个唯一的编号,前台(网络层)根据IP地址将订单分发到正确的厨房区域,再由服务员(数据链路层)送到具体的餐桌。

        DNS服务器则是餐厅中的“顾客座位对照表”,将顾客的名字(域名)转换为餐桌编号(IP地址),确保每个订单准确送达。不同类型的域名可以比作餐厅中的不同类型顾客名单,比如VIP名单、普通顾客名单等。

        通过上述设定,我们可以更好地理解网络各个层次和设备的作用,以及它们如何协同工作以确保数据(订单)高效、安全地从源头(顾客)传输到目的地(目标设备)。详细介绍请看前两篇文章。

二、HTTP

        1. HTTP定义: HTTP(HyperText Transfer Protocol)就像餐厅中顾客与服务员之间的通信语言。顾客使用这种语言下单,服务员通过这种语言将订单传递到厨房。

        2. 工作原理: HTTP基于TCP/IP协议,类似于餐厅中前台(路由器)与厨房(交换机)之间的点餐和传菜系统。它是一个应用层协议,定义了顾客(客户端)和厨房(服务器)之间的请求和响应标准。

        3. 请求和响应:

  • 请求:顾客(客户端)发送的HTTP请求就像顾客向服务员下单,包含订单的各个部分。

    • 请求行:就像顾客的点单,包括点了什么菜(请求方法,如GET、POST)。
      • GET请求就是顾客查看菜单上的菜品信息。这种请求是为了获取信息,不会改变餐厅的状态。
      • POST请求就是顾客提交一个新的订单。这个请求会改变餐厅的状态,因为它代表了一个新的订单的提交。
      • 比如在HTML中常见的GET请求与POST请求的表单例子:
      • <form method="GET" action="/search"><label for="query">Search:</label><input type="text" id="query" name="query"><button type="submit">Submit</button>
        </form>
        <form method="POST" action="/order"><label for="item">Order Item:</label><input type="text" id="item" name="item"><button type="submit">Submit</button>
        </form>
    • 请求头:类似于顾客的特殊要求(如无辣、少盐),包含额外信息(如User-Agent、Accept)。
    • 空行:表示请求头的结束
    • 请求体:就像顾客详细的订单内容(如要多少份、特殊备注),特别是在POST请求中。
  • 响应:厨房(服务器)返回给顾客的HTTP响应就像服务员上菜,包含上菜的各个部分。

    • 状态行:类似于服务员告诉顾客订单状态(如菜品正在准备、已上菜),包含状态码(如200成功、404未找到)。
    • 响应头:就像服务员提供的额外信息(如菜品的配料说明),包含服务器信息、内容类型等。
    • 空行:表示响应头的结束。
    • 响应体:实际的菜品内容(如网页、数据)。

        4. HTTP方法: HTTP方法如GET、POST、PUT、DELETE等,就像不同类型的点单方式:

  • GET:像顾客查看菜单(获取资源)。
  • POST:像顾客提交订单(提交数据)。
  • PUT:像顾客修改订单(更新资源)。
  • DELETE:像顾客取消订单(删除资源)。

        5. 状态码:服务器返回的状态码就像服务员告知顾客订单状态:

  • 200:成功上菜。
  • 404:菜品未找到(点单的菜品不存在)。
  • 500:厨房出错(服务器错误)。

        6. 安全性:HTTP协议本身不加密,类似于在公开场合大声点餐,容易被他人听到。HTTPS通过SSL/TLS协议对数据加密,就像服务员悄声传递订单,确保信息安全。

        7. 持久连接:HTTP/1.1引入的持久连接,就像服务员在整个用餐过程中保持联系,而不是每次点菜都重新建立联系,减少了时间和沟通成本。

        8. HTTP/2:HTTP/2是HTTP协议的升级版,支持头部压缩和多路复用,提高了传输效率,类似于服务员同时处理多个订单,提高了服务效率。

        9. 内容类型:HTTP协议定义的内容类型如text/html、application/json等,类似于餐厅的菜单项,告诉顾客菜品的具体类型。

        10. 缓存:HTTP协议支持缓存机制,类似于餐厅提前准备一些常点的菜品,减少等待时间,提高服务速度。

三、HTTPS

        HTTPS(HyperText Transfer Protocol Secure)是HTTP的安全版。它在传统HTTP协议的基础上增加了SSL/TLS加密层,确保数据在传输过程中是加密的,保护用户隐私和数据安全。

        HTTPS协议可以比作餐厅中的保密点餐服务。在这个服务中,顾客的点单信息通过加密的方式传递给服务员,确保其他顾客或不相关人员无法窃听或篡改信息。

1. 加密数据传输

        在HTTPS协议中,数据传输是加密的,类似于顾客和服务员使用密语交流订单内容,确保只有顾客和服务员知道具体的点单信息。

  • 数据加密:所有数据在传输前都会被加密,防止中途被窃听或篡改。就像顾客和服务员使用特定的密语,外人无法理解他们的对话。
  • SSL/TLS:HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据。SSL/TLS是加密的实现方式,类似于顾客和服务员之间的密语系统。
2. 数据完整性

        HTTPS确保数据在传输过程中不被篡改,就像服务员从厨房取菜到桌上的过程中,确保菜品不会被其他人动过。

  • 消息摘要:HTTPS通过消息摘要(如SHA-256)来验证数据的完整性。这就像服务员在上菜前检查菜品是否完好无损。
3. 身份验证

        HTTPS使用数字证书验证服务器身份,确保顾客与真正的餐厅(服务器)交流,而不是与冒牌餐厅(伪装的服务器)交流。

  • 数字证书:HTTPS使用由可信的第三方(CA,证书颁发机构)颁发的数字证书来验证服务器身份,类似于顾客检查服务员的工牌或餐厅的营业执照,确保其真实性。
4. HTTPS 的工作流程

        HTTPS的工作流程可以比作顾客和服务员之间的一次加密交流过程,从身份验证到加密交流,再到订单传递。

  • 建立安全连接:顾客和服务员首先相互验证身份(使用数字证书),确保对方可信。
  • 生成加密密钥:一旦身份验证通过,顾客和服务员会共同生成一个共享的加密密钥,用于接下来的交流。
  • 加密通信:所有点单和上菜信息通过加密密钥进行加密传输,确保信息安全。
5. 代码示例

        不妨写一个Python代码来观察HTTP与HTTPS的差异,这里以百度为例:

import requests
from requests.exceptions import SSLError# URL using HTTP
http_url = "http://baidu.com"# URL using HTTPS
https_url = "https://baidu.com"def fetch_data(url):try:response = requests.get(url)return response.status_code, response.contentexcept SSLError as e:return None, str(e)def main():# Fetch data using HTTPhttp_status, http_content = fetch_data(http_url)print("HTTP Status Code:", http_status)print("HTTP Content (first 100 bytes):", http_content[:100])# Fetch data using HTTPShttps_status, https_content = fetch_data(https_url)print("\nHTTPS Status Code:", https_status)print("HTTPS Content (first 100 bytes):", https_content[:100])if __name__ == "__main__":main()

        返回结果如下:

HTTP Status Code: 200
HTTP Content (first 100 bytes): b'<html>\n<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">\n</html>\n'HTTPS Status Code: 200
HTTPS Content (first 100 bytes): b'<!DOCTYPE html>\r\n<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charse'进程已结束,退出代码0

        可以看到二者状态码都是200,表示均访问成功了。

        同时,HTTP协议返回的内容在传输过程中是以明文形式发送的,任何中间人都可以读取到这些内容。而HTTPS协议返回的通过SSL/TLS协议进行了加密,这样就无法被中间人直接读取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat部署、优化、压力测试

目录 Tomcat概念 核心组件 Web容器 Web服务器之间解析请求的区别 Apache HTTP Server Nginx Tomcat Servlet容器 JSP容器 字节码文件 Tomcat表面处理请求的过程 Tomcat底层处理请求的过程 内部结构 Tomcat部署 JRE环境配置 PATH冒号位置的区别 安装Tomcat 目…

《峡谷小狐仙-多模态角色扮演游戏助手》复现流程

YongXie66/Honor-of-Kings_RolePlay: The Role Playing Project of Honor-of-Kings Based on LnternLM2。峡谷小狐仙--王者荣耀领域的角色扮演聊天机器人&#xff0c;结合多模态技术将英雄妲己的形象带入大模型中。 (github.com) https://github.com/chg0901/Honor_of_Kings…

[Leetcode 203][Easy]移除链表元素

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题链接 二、整体思路 首先分成两种情况。第一种情况要先判断头元素是否要删除。第二种要在第一种基础上进行&#xff08;删除到头元素不是要删除的元素&#xff09;&#xff0c;然后遍历链表&#xff0c;遍历到不是…

大语言模型-GPT2-Generative Pre-Training2

一、背景信息&#xff1a; GPT2是2019年由OpenAI 提出的预训练语言模型。 GPT2提出语言模型式无监督的多任务学习 。旨在通过无监督学习也能达到和finetune一样的效果&#xff0c;并且拥有更强的泛化能能力。 即提出利用语言模型做下游任务时&#xff0c;不需要下游任务的任何…

美食地图开发

调用地图接口展示数据库录入的不同类别地址信息&#xff0c;提供导航服务&#xff0c;手机端电脑端自适应。 语音介绍使用微软的tts接口可选不同语音性别生成

在linux中,如何搭建nacos2.4.0的版本,修改nacos密码

由于最近服务器经常被攻击&#xff0c;看了一下发现是nacos版本过低&#xff0c;导致被抓了肉鸡&#xff0c;导致服务器的网端被跑满&#xff0c;选择重新搭建nacos&#xff0c;进入服务器后&#xff0c;首先确定服务器是否安装java&#xff0c;先执行java -version&#xff0c…

Hadoop、Hive、HBase、数据集成、Scala阶段测试

姓名&#xff1a; 总分&#xff1a;Hadoop、Hive、HBase、数据集成、Scala阶段测试 一、选择题&#xff08;共20道&#xff0c;每道0.5分&#xff09; 1、下面哪个程序负责HDFS数据存储&#xff08; C &#xff09; A. NameNode B. Jobtracher C. DataNode D. Sec…

vue3引入openlayers

安装ol包 OpenLayers作为 ol npm包提供&#xff0c;它提供了官方支持的API的所有模块。 官方地址&#xff1a;ol npm install ol模块和子模块约定 具有CamelCase名称的OpenLayers模块提供类作为默认导出&#xff0c;并且可能包含其他常量或函数作为命名导出&#xff1a; i…

vim gcc

vim 使用 vs filename 分屏 ctrl ww 切窗口 shift zz 快速提出vim vim配置 vim启动时自动读取当前用户的家目录的.vimrc文件 vim配置只影响本用户 其他用户观看同一文件不受影响 gcc指令 & c文件编译过程 动态库 静态库 & 链接方式 有相应库才能进行…

全面解析 SnowNLP:中文文本处理、情感分析

1 前言 SnowNLP 是一个专门用于处理中文文本的 Python库。功能包括&#xff1a; 分词情感分析关键词提取文本分类拼音转换繁体转简体词相似度计算等 snownlp0.12.3测试环境&#xff1a;Python3.10.9 2 分词 中文分词&#xff08;Character-Based Generative Model&#xf…

目标检测进阶:1.COCO数据集与VOC数据集

目录 一、COCO数据集 1.COCO数据集下载 2.COCO数据集相关介绍 Captions.json文件 instances.json文件 Person_keypoints.json文件 3.提取instances中的边界框信息 二、VOC数据集 1.VOC数据集下载 VOC2007训练集验证集百度云资源&#xff08;提取码6zg6&#xff09;htt…

【docker】Ubuntu20安装docker并拉取mongodb

文章目录 docker安装拉取mongodb其他操作配置mongodb远程连接 docker安装 // 安装 apt install docker.io // 换源 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors": ["https://ox288s4f.mirror.aliyuncs.com&q…

mac下010editor的配置文件路径

1.打开访达&#xff0c;点击前往&#xff0c;输入~/.config 2.打开这个文件夹 把里面的 010 Editor.ini 文件删除即可&#xff0c;重新安装010 Editor即可

微前端--single-spa

微前端 使用微前端的挑战&#xff1a; 子应用切换&#xff0c;应用相互隔离&#xff0c;互补干扰&#xff0c;子应用之前的通信&#xff0c;多个子应用并存&#xff0c;用户状态的存储&#xff0c;免登。 常用技术方案 路由分发式微前端 通过http服务的反向代理 http {serv…

无人机搭载无人机反制设备可行性分析

一、引言 随着无人机技术的飞速发展&#xff0c;无人机在各个领域的应用越来越广泛。然而&#xff0c;无人机的不当使用也可能带来安全隐患和隐私问题。因此&#xff0c;无人机反制设备应运而生&#xff0c;用于对非法或危险无人机进行干扰和控制。本文将对无人机搭载无人机反…

简单的git分支mergepush权限设定

简单的git分支merge&push权限设定 1. 需求 公司的分支很多&#xff0c;主要的有master分支&#xff0c;很多的业务需求分支&#xff0c;开发测试分支(uat,uat2,sit,sit2)&#xff0c;这些分支当前是谁都可以进行提交&#xff0c;但是如果在分支上直接修改&#xff0c;或者…

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…

R语言统计分析——数据管理4

参考资料&#xff1a;R语言实战【第2版】 1、数学函数 abs(x)&#xff1a;绝对值 sqrt(x)&#xff1a;平方根 ceiling(x)&#xff1a;不小于x的最小整数 floor(x)&#xff1a;不大于x的最大整数 trunc(x)&#xff1a;向0的方向截取x中的整数部分 round(x,digitsn)&#…

参加可观测性Observability Foundation认证培训,您有哪些收益?

一、可观测性认证培训的内容 作为SRE&#xff08;站点可靠性工程&#xff09;课程体系的最新发展&#xff0c;可观测性&#xff08;Observability&#xff09;认证课程介绍了一系列结合应用程序生命周期和复杂体系架构中推进可观测性的核心概念和实践。为关注全栈可观测性&…

涉及VPN、金融、健康服务等类型应用上架政策突变

大家好&#xff0c;我是牢鹅&#xff01;今天为大家分享Google Play 2024年7月17日下发的政策更新&#xff0c;此次政策更新距上次&#xff08;4月5日&#xff09;政策大更新仅过去三个月。前段时间牢鹅跟谷歌的人有聊过&#xff0c;今年他们的目标很明确&#xff0c;提高开发者…