前端知识-网络

news/2025/1/20 10:41:05/文章来源:https://www.cnblogs.com/khrushchefox/p/18680896

网络

DNS

通过DNS服务器将域名转换成IP地址, 从而实现正确的网络连接. DNS服务器不仅部署在互联网的各个角落, 每一台终端设备都会内置本地DNS服务器.

  • DNS查询

DNS查询时, 会依次经过应用程序的缓存, 本地hosts, 本地DNS服务器, 根服务器, 顶级域名服务器, 权威服务器, 最后得到真正的IP地址

  • 购买域名

从域名服务商购买顶级域名, 同时提供域名解析服务

DNS记录的类型: A ( 保存最终要返回的IP地址 ), AAAA, CNAME ( 将子域名映射到另一个域名, 可以指向相同主域名或其他主域名 ), TXT, MX

  • 分布式部署

在A记录上直接填写固定IP地址的方式只适用于简单的单机部署网站.

在大型应用中, 应用服务器以分布式方式部署, IP地址动态变化, 因此会采用动态解析IP地址的方式, 将同一个域名根据不同网络运营商, 不同地区, 解析到不同IP的服务器上.

这些服务器不是最终的应用服务器(不会暴露于公网环境), 而是具备反向代理能力的负载均衡(LB)服务器, WEB应用防火墙(WAF) 等等.

DNS服务器还会提供安全插件(DNSSEC), DNS分析, 边缘网络加速解析, DDoS防护等功能.

  • 加速DNS解析

DNS解析加速: 高性能DNS服务器, 配置DNS缓存, 增加DNS记录的缓存时间(TTL).

前端通过浏览器提供的DNS预取功能来指定需要提前解析的域名, 可以让浏览器在解析完该标签后立即进行DNS查询

<link rel="dns-prefetch" href="//cdn.example.com">

  • 跨域问题

利用DNS的查询原理, 通过修改本地hosts的方式来给项目配置一个域名, 而不是直接使用localhost, 这能有效解决与服务器联调时cookie无法跨域传输的问题

如果项目依赖中硬编码线上域名, 通过修改本地DNS记录, 可以在不改变代码的情况下, 将线上域名映射到本地或者联调环境, 方便问题验证和多环境联调

  • CDN-内容分发网络

当不同地区的用户访问前端静态资源时, 会从不同的CDN节点下载数据, 这归功于DNS系统的CNAME记录. DNS服务器会根据用户所在地区, 返回不同的CNAME域名(CDN加速域名).

HTTP协议

工作在TCP/IP协议栈的应用层, 底层的数据传输由TCP或UDP负责.

常用版本: HTTP/1.1, HTTP/2(多路复用, 二进制帧层, 头部压缩等特性, 提升传输性能), HTTP/3(基于QUIC协议使用UDP作为传输层, 进一步降低连接延迟和提升传输性能)

HTTPS: 加盖了一层SSL/TLS来实现加密传输

  • 请求与响应

HTTP协议大体上是一种问答形式, 客户端发出请求, 服务器处理请求, 然后再给出响应.

服务器根据不同场景返回不同的响应码, 2表示成功, 3表示重定向, 4表示客户端错误, 5表示服务端错误.

在请求和响应报文中, 除了请求方法和响应码外, 最值得关注的就是请求头响应头:

  • 用于请求上下文的Host, Referer, User-Agent

  • 用于响应上下文的Allow, Server

  • 用于缓存的Cache-Control, Last-Modified/Last-Modified-Since, ETag/If-NoneMatch

  • 用于Cookie的Cookie和Set-Cookie

  • 用于安全的X-Frame-Options, Strict-Transport-Security(HSTS)

  • 用于跨域控制(CORS)的Origin和Access-Control-* 一套

  • Web API

浏览器加载资源会使用HTTP协议, 前端与服务端的异步请求通常也通过HTTP协议完成

最早使用XMLHttpRequest(XHR)在浏览器中发起一个异步请求, 基于XHR的有jQuery, ajax, superagent和axios

后来的Fetch API标准在不同环境下有不同的实现, 比如Node.js环境下基于Undici, 边缘运行时(Edge Runtime)中, Fetch API也会依据平台有所不同.

  • 测试

在针对API测试的场景下, 可以通过Postman等自动化工具来批量测试; 调试移动设备内的HTTPS则需要安装信任证书以及通过网络代理工具来实现; 对于远程或是生产环境, 通过抓包和分析服务端日志来完成

  • 扩展

大型客户端应用中, 为了更高效和安全的传输数据, 同时兼容HTTP协议(原始HTTP协议在更复杂的高并发场景下, 会不够高效稳定), 大型技术基建通常会设计一层无线网关(Gateway), 并对HTTP进行定制, 增加登录验证, 请求跟踪, 监控, 限流等功能. 而前端代码通过远程过程调用(RPC)的方式, 而非直接使用原始HTTP.

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

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

相关文章

vue复盘-slot插槽

1.slot 插槽 子组件里定义,父组件引用,slot是个占位符,父组件可以自定义传递文本==》子组件【可复用性】【灵活度】 一般用于组件封装,插件封装2.slot类型【默认slot、具名slot、作用域slot】 2.1 默认 slot2.2 具名slot 可以指定作用域里显示 2.3 作用域slot (允许子组件…

vue指令v-cloak,v-text,v-html,v-pre

1.v-cloak 配合css使用,用于解决加载过慢(复杂逻辑处理闪烁问题)编译时元素会自动加上属性v-cloak,编译结束后会自动消失 csscss[v-cloak]{display: none }html<div v-cloak> xxx</div> 2.v-html & v-text & v-pre 引用https://blog.csdn.net/weixin_5…

IDEA如何将代码进行注释

前言 大家好,我是小徐啊。我们在使用IDEA开发Java应用的时候,一般都是需要写注释的,这些注释帮助我们和别人更好的理解代码的含义,可以说是必不可少的。在使用IDEA开发时,其实是可以快捷的进行代码注释的,而不用手动去注释,那么IDEA该如何进行代码注释呢? 如何进行代码…

完整的 c 语言用到的基础知识总结

作者: baron 博客: baron-z.cn用于记录 c 语言基础知识,如果没有特别说明本文的所有代码编译环境为 gcc 编译器编译,学习资料来自狄泰软件学院可在淘宝购买学习一、基本数据类型 1、数据类型含义 固定内存大小的别名作用 创建变量c语言数据类型表Type Storage size Valu…

seqtk 生信工具的安装与使用

001、安装git clone https://github.com/lh3/seqtk.git cd seqtk/ make ./seqtk | head -n 3 002、

[Tools] SWC Intro

SWC SWC 英文全称为 Speedy Web Compiler,翻译成中文为“快速网页编译器”。 官网地址:https://swc.rs/来看一下官方的介绍:SWC is an extensible Rust-based platform for the next generation of fast developer tools. Its used by tools like Next.js, Parcel, and Deno…

数据迁移丨借助 AI 从 PostgreSQL 到 GreatSQL

数据迁移丨借助 AI 从 PostgreSQL 到 GreatSQL本文将介绍如何从 PostgreSQL 到 GreatSQL 的数据迁移,并运用 AI 协助迁移更加方便。迁移的方式有很多,例如:pg_dump:导出SQL文件,修改后导入 GreatSQL 数据库。 COPY:导出txt文本文件,导入 GreatSQL 数据库。 pg2mysql:从…

圆方树学习笔记

元方树。 下文除特殊强调外,所有图皆为无向图。 引入割点:在图中,删除某个点后,导致图不再连通的点。 点双连通:在一张图中,取两个点 \(u\)、\(v\),无论删去哪个点(除 \(u\)、\(v\) 自身外),\(u\)、\(v\) 都能连通,我们就说 \(u\) 和 \(v\) 点双连通。 点双连通分量…

WordPress产品导入后内容出现乱码,以及附属一些别的功能

效果图如下 该插件附带了一个可以把产品描述里面的超链接给去掉,以及有的产品图片点击会在地址栏上面显示图片的路径,在该插件可以进行关闭,并且替换成一个模态窗,还有对产品邮费展示进行了处理,到金额到达包邮的时候,别的邮费进行隐藏 下面是该插件源码目录结构duola …

如何利用甘特图进行高效管理?——附应用工具

通过快速创建甘特图并合理利用其进行项目管理,可以显著提升项目管理的效率和质量。同时,不断优化甘特图和项目管理流程也是实现持续改进的关键。甘特图通过横轴表示时间,纵轴表示任务,每个任务的开始和结束时间通过横向条形表示。甘特图可以帮助管理者对项目中的各个任务进…