网络协议-HTTP入门和基础工具链

news2025/3/1 11:46:04

Http协议介绍

发明者:蒂姆·伯纳斯-李

英国计算机科学家(1955-)

万维网(1990HTTP协议)

世界第一个浏览器

第一个服务端程序

创办MIT人工智能实验室

 

HTTP协议

  • 超文本传输协议(Hyper Text Trabsfer Protocol)
  • 处理客户端和服务端之间的通信
  • http请求/http返回
  • 网页/json/xml/提交表单......

 

 

纯文本+无状态(Stateless)

  • 应用层协议(下面可以是TCP/IP)
  • 信息纯文本传输
  • 无状态(每次请求独立)(请求间互不影响)
  • 浏览器提供了手段维护状态(Cookie,Session,*Storage等)

HTTP历史

  • 1991 HTTP 0.9
  • 1996 HTTP 1.0
  • 1999 HTTP 1.1
  • 2015 HTTP 2.0

设计的基础因素

带宽:基础网络(线路、设备等)

延迟:浏览器、DNS查询、建立连接(TCP三次握手)

设计考虑因素——缓存与带宽优化

缓存

  • (http1.0)提供缓存机制如IF-Modified-Since等基础缓存控制策略
  • (http1.1)提供E-Tag等高级缓存策略

带宽优化

  • (http1.1)利用range头获取文件的某个部分
  • (http1.1)利用长连接让多个请求在一个TCP连接上排队
  • (http2.0)利用多路复用技术同时传输多个请求

设计考虑因素——压缩/安全性

压缩

  • 主流web服务器如nginx/express等都提供gzip压缩功能
  • (http2.0)采用二进制传输,头部使用HPACK算法压缩

HTTPS

  • 安全超文本传输协议(Hyper Text Trabsfer Protocol Secure)
  • 数据加密传输(防止各种攻击手段(信息泄露、篡改等))
  • SSL/TSL(Sevure Socket Layer/Transport Layer Secure)

SSL-安全套接层

TSL-传输层安全性协议

需要在客户端安装证书

  • 在HTTP和TCP/IP之间增加TSL/SSL层
  • 数据传输加密(非对称+对称加密)

HTTP(应用层协议)

TSL/SSL(2选一,加密服务)

TCP(传输层协议)/IP(网络层协议)

Node.js实战http请求

Header和Body(实战)

  • Http协议是一个文本传输协议,传输内容是人类可读的文本,大体分成两部分:

请求头(Header)/返回头

消息体(Body)

  • server:观察node实现http的基础协议

// node.js中
const net = require('net')
// const response = `HELLO WORLD`
const response = 
`HTTP/1.1 200 OK// response header
Data: Tue, 30 Jun 2020 01:00:00 GMT
Content-Type: text/plain
Connection: Closed

Hello world // 空一行写返回值
`
const server = net.createServer(socket => {// socket插座
    socket.end(response)
})
server.listen(80, ()=>{
    
})

chrome/curl/postman/whistle工具初探

Chrome

  • Google开发的免费浏览器
  • Chrome开发者工具拥有强大的调试能力

cURL

  • 传输一个URL(和服务器交互的工具)
  • url:网址(Uniform Resource Locator)
  • 支持多种协议(HTTP/HTTPS/FTP/FTPS/SCP/SFTP/DICT/TELNET......)

cmd中 curl 百度一下,你就知道 (返回页面信息)

curl -I 百度一下,你就知道 (返回头部信息)

它是一个命令行工具

用到的场景

  • 我的浏览器连着代理
  • 给网页发请求带一些特别的参数(返回头部信息指令,直接拷贝给同事)

fetch

fetch('/')
  • 在网络上获取数据的标准接口
  • 提供对请求/返回对象(标准Promise接口)
  • 提供自定义Header能力
  • 提供跨域能力

postman

协作的API开发工具

后端人员配好请求参数+header信息等分享给前端

Whistle

跨平台网络调试工具

  • 需要SwitchOmega插件
  • node.js开发
  • 支持抓包、重放、替换、修改等

CMD

安装: npm install whistle -g

跑:whistle start

localhost:8899/#network

总结

  • 简单比效率更重要(Java/HTTP等)
  • 跟上时代,掌握更多的工具

 

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

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

相关文章

一文带你搞清 ChatGPT 与 Azure OpenAI 的区别

这两周是我从2017年开始全职涉入 NLP 领域后最忙的两周,无数的同事和客户都在向我提出一个询问:ChatGPT 可以帮到我们什么? 特别是在2023年3月31日我做了一场微软 Azure OpenAI [布局助力企业]拥抱新智能时代的演讲之后,这几天我…

信号系统中使用的继电器

继电器是什么 继电器是一种电气开关,它使用电磁力来控制一个或多个电气电路的操作。继电器通常由电磁铁、触点和弹簧等部件组成。当电磁铁被激活时,它会产生磁场,吸引或释放触点,从而打开或关闭电路。 继电器的分类 继电器分为…

CSS学习(5) - 布局

文章首发于我的个人博客:欢迎大佬们前来逛逛 文章目录 CSS布局display属性width和max-widthposition 属性溢出浮动和清除floatclear 布局案例 CSS布局 display属性 display 属性是CSS布局的最重要的属性。 display属性规定是否/如何显示元素。 display元素通常与…

Python词云

词云图wordcloud 1.安装第三方库 j i e b a 库、 m a t p l o t l i b 、 w o r d c l o u d 库 jieba库、matplotlib、wordcloud库 jieba库、matplotlib、wordcloud库 2.过程 1.使用 j i e b a jieba jieba 库对数据进行分词整理,转为 t x t txt txt文件&#…

AI和ML:数据中心的新前沿创新和优化

数据中心现在正在将人工智能(AI)和机器学习(ML)技术集成到其基础架构中,以保持竞争力。通过在传统数据中心架构中实施人工智能驱动层,企业可以创建自主数据中心,无需人工干预即可优化和执行通用数据工程任务。 随着对数据处理和存储的需求持续…

【行为型模式】策略模式

文章目录 1、简介2、结构3、实现方式3.1、案例引入3.2、结构分析3.3、具体实现 4、对比模板方法模式5、策略模式优缺点6、应用场景 1、简介 策略模式(Strategy)是一种设计模式,它允许在运行时根据需要选择算法的行为。这个模式将每个算法封装到一个类中&#xff0c…

Oracle VM VirtualBox安装开放麒麟桌面版本操作

1.环境 Oracle VM VirtualBox版本6.1.18 开放麒麟桌面版本openkylin 0.0.5 https://mirror.lzu.edu.cn/openkylin-cdimage/yangtze/openkylin-0.9.5-x86_64.iso 1.创建新虚拟电脑 ql 并将ios导入 然后点击启动 注意: vm box如果鼠标设置不当的话 基本上不可能完成…

PEIS源码 体检源码 医院体检系统源码

PEIS体检管理系统源码 PEIS源码 体检源码 医院体检系统源码 本套PEIS医院体检管理系统源码,采用C#语言开发,C/S架构,前台开发工具为Vs2012,后台数据库采用oracle大型数据库。有演示。 文末获取联系 PEIS体检管理系统适用于大中型…

鹅厂狂招工程师,国产自研芯片“沧海”斩获8项世界第一

前言 4月17日,腾讯云官方披露,在由莫斯科国立大学举办的最新一届MSU硬件视频编码比赛中,腾讯自研的编解码芯片“沧海”,经过数月的严格测试,获得了所参加的两个赛道8项评分的全部第一。 MSU为视频压缩领域最具影响力…

TensorFlow-GPU【易安装】(全网最全、通俗易懂、小白友好)

写在前面:CSDN的小伙伴们,很长时间没有发文了,自从靠运气侥幸考上研究生,就一直在苦苦寻找自己的研究方向。在跟风“随大流”之后,选择了深度学习这一领域,也是一场噩梦的开始! 为了更好的学习吴…

MySQL数据恢复-亲测有效版

MySQL数据恢复-亲测有效版 1.日志恢复的前提:1.1.登录远程MySQL服务器:1.2.查看binlog是否开启: 2.查看binlog存放日志文件目录:3.找到mysqlbinlog命令4.设置mysqlbinlog命令为全局可见5.使用mysqlbinlog解析binlog日志6.数据恢复…

信号频谱分析举例

以IQ解调不加滤波器的信号频谱进行分析 系统结构 IQ解调不加滤波器的系统结构框图为: 最后输出的基带复信号时域表达式为: s b b ( t ) s i ( t ) j s q ( t ) s ( t ) c o s ( ω c t ϕ ) − j s ( t ) s i n ( ω c t ϕ ) s_{bb}(t) s_i(t…

UDP报文结构解析

文章目录 UDP报文结构的讲解以及注意事项源端口和目的端口报文长度校验和 UDP报文结构的讲解以及注意事项 想要学习一个协议,我们就需要认识一下这个协议的报文格式,认识这个协议具体是如何组织数据的: 我们常见的UDP报文的格式图都是这样画…

体验编写Vue框架项目实例的详细步骤(包括git仓库使用)

一、查看项目设计图 二、确定项目开发技术栈 vue-cli3 element-ui axios vuex 三、页面布局 四、查看接口文档 五、开始开发 (五).搭建项目结构 1.创建项目 vue create godlike 创建项目的文章在:Vue自主搭建项目:Man…

Unity插件XCharts 图表

参考网址:Unity插件XCharts_xcharts unity_Raki_0的博客-CSDN博客 XCharts 下载地址 :Unity插件XCharts资源-CSDN文库 github 地址:Releases XCharts-Team/XCharts GitHub 一.导入教程 1.直接放入XCharts源码到项目 下载好XCharts源码…

Linux -- Web服务器 快速搭建静态网站,替换默认网页目录

快速搭建静态网站 : 先简单写个 页面 [rootserver ~]# echo " This is my first simple-Web " > /var/www/html/index.html 我们给网页写了一行内容 作为 静态网页的内容 ( 当然了,写的相当简单,您先理解着看&a…

【排序算法 上】带你手撕常见排序 (插入,希尔,选择,堆排序) (动图详解)

欢迎来到 Claffic 的博客 💞💞💞 “东风随春归,发我枝上花。” 前言: 排序是日常生活中极其常见的一种算法,它的功能很简单,就是将数字按照升序/降序排列,最终形成一组有序的数字&a…

Blender3.5 面的操作(一)

目录 1. 面操作1.1 细分面 Subdivide1.2 删除面1.3 挤出面 Extrude1.4 挤出流形1.5 内插面 Inset1.5.1 内插之后选择外侧1.5.2 选择多个面,同时内插操作1.5.3 选择多个面,同时内插选择外侧 1.6 外插1.7 尖分面 Poke Faces1.8 面三角化 Triangulate Faces…

【案例教程】R语言在气象、水文中数据处理及结果分析、绘图实践技术

语言是一门由统计学家开发的用于统计计算和作图的语言(a Statistic Language developed for Statistic by Statistician),由S语言发展而来,以统计分析功能见长。R软件是一款集成了数据操作、统计和可视化功能的优秀的开源软件。来…

分布式对象存储服务minio安装和部署

一、服务器安装minio 1.进行下载 下载地址: https://dl.min.io/server/minio/release/linux-amd64/minio2.新建minio安装目录,执行如下命令 mkdir -p /home/minio/data 把二进制文件上传到安装目录后,执行: chmod x minio //…