计算机网络————(一)HTTP讲解

news2025/2/24 21:54:28

基础内容分类

从TCP/IP协议栈为依托,由上至下、从应用层到基础设施介绍协议。
1.应用层:
HTTP/1.1
Websocket
HTTP/2.0
2.应用层的安全基础设施
LTS/SSL
3.传输层
TCP
4.网络层及数据链路层
IP层和以太网

HTTP协议

网络页面形成基本

流程:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中当在浏览器上面的网址搜索界面点击搜索的时候如果出现了一些记录就相当于图片中右边蓝色的“浏览器引擎”去搜索数据存储,然后找到发现一些存储在浏览器中的数据。
详细操作:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

定义

一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式、与基于网络的超文本信息系统灵活的互动

基于ABNF(元语言)语法的HTTP格式:
1." “字符:用来分隔定义中的各个元素
2.”/“选择:表示多个规则都是可供选择的规则
3.”%c##-###“:表示从字符 ##到 ###
4.”()"序列组合:将规则组合起来,视为单个元素
5."mn"不定量重复:
表示零个或更多元素
1
表示1个或更多元素
2
4表示两个或者至多4个元素
6.[]可选序列:包体是可选的,可有可无的
操作符为:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据上面的规则来分析格式
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

HTTP-message:表示http消息
start-line:起始行
request-line/status-line:表示请求行或者响应行构成起始行
request-line=method SP request-target SP HTTP-version CRLF:请求行有 方法 空格 请求路径 空格 HTTP版本 换行
status-line=HTTP-version SP status-code SP reason-phrase CRLF :响应行由 HTTP版本 空格 响应码(三位数字) 空格 字符串形式描述的原因 换行

详细分析请求头

method——常见的方法有:
GET:主要的获取信息方法
HEAD:类似GET方法,但服务器不发送BODY,用以获取HEAD元数据,幂等方法
POST:常用于提交HTML FROM表单、新增资源等
PUT:更新资源、带条件时是幂等方法
DELETE:删除资源、幂等方法
CONNECT:建立tunnel隧道
OPTION:显示服务器对访问资源支持的方法,幂等方法————跨域
TRACE:回显服务器手到的请求,用于定位问题。
Linux中使用: curl static.taohui.tech -X OPTIONS 可以查看允许使用的方法
用于文档管理的
PROPFIND:从Web资源中检索以XML格式存储的属性——查看目录
PROPPATCH:在单个原子性动作中更改和删除资源的多个属性
MKCOL:创建集合或者目录
COPY:将资源从一个URI复制到另一个URI
MOVE:将资源从一个URI移动到另一个URI
LOCK:锁定一个资源
UNLOCK:接触资源的锁定

详细分析响应行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

响应码的规范:
1XX:表示请求已经被服务器接收到了,需要进一步处理才能完成更进一步的操作
100 Continue:上传大文件前使用
101 Switch Protocols:协议升级使用
102 Proccessing:表示服务器已经收到了请求但是这个响应需要很长的时间处理,放置客户端超市。

2XX:成功处理请求
200 OK :成功返回响应
201 Created: 有新资源在服务器端杯成功创建
202 Accepted:服务器接收并开始处理请求,请求并没有处理完成。异步、需要很长时间处理的任务
203 Non-Authoritative Information:当代理服务器修改了origin server 的原始响应包体时。
204 NO Content:成功执行了请求且不携带响应包体,并暗示客户端无需更新当前的页面视图。
205 Reset Contern:成功执行了请求切不携带响应包体,同时指明客户端需要更新当前页面视图。
206 Partial Content:使用range协议时返回部分响应内容时的响应码,多线程下载
207 Multi-Status:在WEBDAV协议汇
208 Already Reported:为了解决WEb协议

3XX:重定向
300 Multiple Choices:允许客户端主动的显示
301 Moved Permanently:表示资源永久的重定向
302 Found:表示资源临时的重定向。
303 See Other:重定向到其他资源
304 Not Modified:客户端可复用的缓存
307 Temporary Redirect:明确重定向后请求方法必须与原请求方法相同
308 Permanent Redirect:类似301

4XX:客户端出现错误
400 Bad Request:服务器认为客户端出现了错误,但不能明确判断那种错误
401 Unauthorized: 用户认证信息缺失
407 Proxy Authentication Required :对需要经有代理的请求,认证信息为通过代理服务器的验证
403 Forbidden: 服务器理解请求的含义,但没有权限执行此请求
404 Not Found: 服务器没有找到相对应的资源
410 Gone :服务器没有找到对应的资源,且明确的知道该位置永久性找不到资源————对404补充
405 Method Not Allowed:服务器不支持请求行中的method方法
406 Not Acceptable:对客户端指定的资源表述不存在————语言不兼容
408 Request Timeout:服务器接收请求超时
409 Conflict:资源冲突
411 Length Required:请求中未携带Content-Length头部
412 Precondition Failed:条件类请求不满足时候返回
413 Payload Too Large/Request Entity Too Large:请求的包体超出服务器能处理的最大限度
414 URI Too Long:请求的URI超出服务器的最大长度
415 Unsupported Media Type:上传的文件类型不支持
416 Range Not Satisfiable: 无法提供Range请求中指定的那段包体
417 Expectation Failed: 对于Expect 请求头部期待的情况无法满足
421 Misdirected Request: 服务器认为该请求不该发给它
426 Upgrade Required:服务器拒绝基于当前HTTP协议提供服务,必须要Upgrade告知客户端升级
428 Precondition Required:用户请求中缺少条件类头部
429 Too Many Requests:客户端发送请求的速率太快
431 Request Header Fields Too Large:请求的头部大小超过限额
451 Unavailable For Legal Reasons :由于法律原因资源不可访问

5XX:表示服务端出现错误
500 Internal Server Error :服务器内部错误
501 Not Implemented: 服务器不支持实现请求所需要的功能
502 Bad Gateway:代理服务器无法获取到合法响应
503 Service Unavailable :服务器资源尚未准备好处理当前请求
504 GateWay Timeout:代理服务器无法及时的从上游获得响应
505 HTTP version Not Supported: 请求的HTTP协议版本不支持
507 Insufficient Storage:服务器没有足够的空间处理请求————存在安全错误
508 Loop Detected:访问资源是检测到循环
511 Network Authentication Required:代理服务器发现客户端需要进行身份验证才能获取网络访问权限

*(header-field CRLF):表示0个或多个以CRFL为结尾的http头部
header-field = field-name":"OWS field-value OWS 表示由一个头部名称 中间分隔符号为:和头部的值构成
OWS = *(SP / HTAB ) : 表示由零个或者多个空格或者横向制表符构成
field-name = token
field-value = *(field-content/obs-fold)
后续介绍field-name/value

CRLF:空行
[message-body]:表示后面可以有消息体,但他与头部必须中间隔了一个CRLF。
message-body: 表示由二进制的包传递的

利用telnet 工具查看

telnet www.taohui.pub 80
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对比上面发现发现
请求构成
GET SP request-target SP HTTP/1.1 CRLF 符合请求头的格式
Host : www.xxx.com 表示的就是header-field : field-value

响应构成
上面一大串就是status-line
分隔开的单独的CRLF(空行,表示从这里开始这一行就没有了)
最后的那一段就是message-body

网络为什么要分层

OSI 概念模型
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应用层:解决业务问题–七层设备nginx等
表示层:把网络中的消息转化成为应用层的东西(TLS/LLS加密)
会话层:建立关系连接/握手————概念层
传输层:解决进程与进程的关系,TCP协议等–四层设备
网络层:确保在广域网中从一个ip发送到另一个ip上–三层设备
数据链路层:利用mac地址连接到局域网的交换机的–二层设备
物理层:物理介质

分层的好处是:每一层只需要关注自己这一层的东西(封装)不需要关心其他层做了什么。这样技术迭代的时候就不用担心兼容问题。
坏处:因为分层之间需要数据处理,就需要更长的时间影响了效率。

每一层的详细处理:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

架构风格

1.数据流风格

优点:简单性、可进化性、可扩展性、可配置性、可重用性
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

管道与过滤器:每个Filter都有输入端和输出,只能从输入端读取数据,处理后再从输出端输出数据
统一接口的管道与过滤器:在PF上增加了统一接口的约束,所有的Filter过滤器必须具有同样的接口

2.复制风格

优点:用户可察觉的性能、可伸缩性、网络效率、可靠性
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

复制仓库(RR):多个进程提供相同的服务,通过反向代理对外提供集中服务
缓存:RR的变体,通过复制请求的结果,为后续请求服用

3.分层风格

优点:简单性、可进化性、可伸缩性
客户端服务器(CS):由客户端触发请求,服务端监听到请求后响应,客户端一直等待收到响应后,会话结束
分层系统(LS):每一层为其上的层服务,并使用在其下的层所提供的服务,如:TCP/IP
分层客户端服务器(LCS):LS+CS,如正向代理/反向代理,从空间上分为外部层与内部层
无状态、客户端服务器(CSS):基于CS、服务器不允许有session state会话状态
缓存、无状态、客户端服务器(C$SS):提升性能

4.移动代码风格

优点:可扩展性、网络效率
虚拟机(VM):分离指令与实现
远程求值(REV):基于CS的VM,将代码发送至服务器执行
按需代码(COD):服务器在响应发回处理代码,在客户端执行

5.点对点风格

优点:可进化性、可重用性、可拓展性、可配置性
EBI:基于事件集成系统

使用Chrome抓包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

控制器:控制面板的外观与功能。
过滤器:过滤请求列表中显示的资源
概览:显示HTTP请求、响应的时间轴
请求列表:默认时间排序,可选择显示列
概要:请求总数、总数据量、总花费时间等

浏览器的加载过程

1.解析HTML结构
2.加载外部脚本和样式表文件
3.解析并执行脚本代码//部分脚本会阻塞页面的加载
4.DOM树构建完成//DOMContentLoaded事件
5.加载图片等外部文件
6.页面加载完毕//load事件

请求时间详细分布:
Queueing:浏览器在排队
Stalled:请求可能会因Queueing中描述的任何原因停止
DNS Lookup:浏览器正在解析请求的IP地址
Proxy Negotiation:浏览器正在与代理服务器协商请求
Request sent :正在发送请求
ServiceWorker Preparation:浏览器正在启动Service Worker
Request to ServiceWork:正在将请求发送到Service Workder
Waiting(TTFB):将浏览器正在等待响应的第一个字节
Content Download:浏览器正在接受响应
Receiving Push:浏览器正在通过HTTP/2服务器推送接受此响应数据
Reading Push:浏览器正在读取之前的本地数据

URI

定义:
Uniform Resource Identifier 统一资源标识符
组成:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

scheme, user information, host, port(HTTP默认43), path, query,fragment(分段)
用元语表示URI:
URI= scheme “:” hire-pary[“?“query][”#“fragment]
解释:
scheme=ALPHA*(ALPHA/DIGIT/”+”/“-”/“.”)
如:https,http,ftp,mailto,file,telnet等
ALPHA表示字母
DIGIT表示数字

hire-pary=“//” authority path-abempty / path-absolute /path-rootless /path-empty
authority=[ userinfo"@“]host[”:" port]————用户信息@域名:端口
userinfo=*(unreserved /pct-encoded /sub-delims/“:”)
host=IP-literal/ipv4address/reg-name
port=*DIGIT

query=*(pchar/“//”?“)————以”?"开头的可选项

fragment=*(pchar/“/”/“?”)————以"#"开头的可选项

相对URI:去除绝对路径只留下/html/rfc7231?test=1#page-7

学习来源:极客时间

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

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

相关文章

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

数据结构之二叉树的定义及实现

1. 树的概念 主要的定义: 节点的度:一个节点含有的子树的个数称为该节点的度;如上图:A的为6 叶节点或终端节点:度为0的节点称为叶节点;如上图:B,C,H,I等节点…

Rust语言基础知识详解【一】

1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境,以下为安装的两种方式: 1. x86_64-pc-windows-msvc(官方推荐) 先安装 Microsoft C Build Tools,勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…

SQLMesh 系列教程9- 宏变量及内置宏变量

SQLMesh 的宏变量是一个强大的工具,能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量,可以实现动态时间范围、多环境配置、参数化查询等功能,从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…

【Deepseek】Linux 本地部署 Deepseek

前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程,因此即使是小白也可以轻松完成体验,话不多说立马着手去干。 [注]:笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…

git,bash - 从一个远端git库只下载一个文件的方法

文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库&#xf…

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识,华夏,芊熠这三种车牌识别相机解密我都试过了,可以正常解密成功,其它品牌我暂时没有测试。超级简单,免费的,白嫖无敌! 流程: ①:先导出配置文件,例如我以…

网络安全与措施

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 # 网络安全问题概述 1) 数据安全 访问(授权访问);存储(容灾、备份或异地备份等) 2) 应用程序 不能…

前后端分离系统架构:基于Spring Boot的最佳实践

前后端分离系统架构图描绘了一个基于Springboot的前端后台分离的系统架构。它强调了前端(客户端)与远程(服务器)的解耦,通过API接口进行交互,分别独立开发和部署。 前后端分离系统架构图 从上到下&#xff…

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中,员工与外部协作伙伴(如钉钉用户)的文件传输面临以下挑战: 安全性风险:内外网直连可能导致病毒传播、数据泄露。 操作繁琐:传统方式需频繁切换网络环境&…

抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报

抖音试水AI分身,字节旗下AI智能体平台扣子已与抖音打通,相关功能内测中 2月19日消息,钛媒体App独家获悉,字节旗下AI智能体开发平台扣子(Coze)已与抖音打通,抖音创作者可在扣子智能体平台打造AI分…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件,用于定义 Linux 系统安装过程中的各种参数,如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面,方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

安装PHPStudy 并搭建DVWA靶场

目录 一、PHPStudy 简介 二、DVWA 简介 三、安装 PHPStudy 四:安装 DVWA 一、PHPStudy 简介 phpstudy傻瓜式的一键启动,支持WAMP、WNMP、LAMP、LNMP,一键切换环境(nginxapahce),一键切换PHP版本(5.1-7…

SQL写法技巧

目录 1.批量插入,查询,删除数据 缺点 实现方法 1.批量插入数据 2.批量查询数据 3.批量删除数据 4.批量修改数据 解释 2.树型表查询 方法一:递归(适用于多级的情况) 方法二:表的自连接 方法三:MySQL递归&am…

Ryu:轻量开源,开启 SDN 新程

1. Ryu 控制器概述 定位:轻量级、开源的SDN控制器,专为开发者和研究人员设计,基于Python实现。开发者:由日本NTT实验室主导开发,遵循Apache 2.0开源协议。核心理念:简化SDN应用开发,提供友好的…

【核心算法篇十四】《深度解密DeepSeek量子机器学习:VQE算法加速的黑科技与工程实践》

在经典计算机逼近物理极限的今天,量子计算正以指数级加速潜力颠覆传统计算范式。想象一下,一个需要超级计算机运算千年的化学分子模拟问题,用量子计算机可能只需几分钟——这就是DeepSeek团队在VQE(Variational Quantum Eigensolver)算法加速实践中创造的奇迹。根据,VQE作…

“国补”带火手机换新,出售旧手机应如何保护个人信息安全

在“国补”政策的推动下,手机换新热潮正席卷而来。“国补”以其诱人的补贴力度,成功激发了消费者更换手机的热情。无论是渴望体验最新技术的科技爱好者,还是对旧手机性能不满的普通用户,都纷纷投身到这场手机换新的浪潮之中。 随着大量消费者参与手机换新,二手手机市场迎来…

数据结构:基数排序(c++实现)

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 基数排序的定义和基本原理基本原理具体步骤 基数排序的优缺点:代码实现总结 基数排序的定义和基本原理 基数排序(Radix Sort)是一…

eNSP下载安装(eNsp、WinPcap、Wireshark、VirtualBox下载安装)

一、下载 下载网址:https://cloud.grbj.cn/softlink/eNSP%20V100R003C00SPC100%20Setup.exe 备用临时网址:https://linshi.grbj.cn/abdpana/softlink 二、准备工作 系统要求 关闭防火墙 三、安装 3.1安装WinPcap 基本都是下一步,双击&…

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解

【Linux系统】—— 冯诺依曼体系结构与操作系统初理解 1 冯诺依曼体系结构1.1 基本概念理解1.2 CPU只和内存打交道1.3 为什么冯诺依曼是这种结构1.4 理解数据流动 2 操作系统2.1 什么是操作系统2.2 设计OS的目的2.3 操作系统小知识点2.4 如何理解"管理"2.5 系统调用和…