网络协议
静谧之心
专业摩的佬
业余吉他手
退役喷子
展开
-
Linux 虚拟网络三大基石:Namespace、Veth pair 与 Bridge
Namespace提供了隔离的环境,Veth连接了不同的命名空间,而Bridge则扩展了网络的连接范围,三者缺一不可。在Namespace中,每个进程仿佛拥有自己的全局资源实例,而这些资源的变更仅在同一Namespace内部的进程间可见,对外部进程则完全透明。通过对Bridge的配置,我们可以实现在同一个Namespace内部或跨越Namespace的多节点互联,甚至可以连接物理网络,实现虚拟网络与现实网络的互通有无。有了Namespace的隔离机制,接下来的问题是如何在这些隔离的环境中建立通信。原创 2024-09-04 11:22:25 · 510 阅读 · 0 评论 -
VXLAN 为何采用UDP
VXLAN是一种网络虚拟化技术,它通过在UDP数据包中封装MAC地址和IP信息,使得二层网络(如以太网)能够跨越三层网络(如IP网络)进行扩展。这种封装方式不仅支持TCP流量的传输,还能有效处理大规模数据中心中的网络隔离和扩展问题。VXLAN的主要优势在于其灵活性和扩展能力。通过采用UDP封装,VXLAN避免了TCP连接建立的复杂性,减少了数据传输的开销。同时,由于VXLAN是在内核中实现的,相比用户态实现的隧道技术,它在性能上更加高效。原创 2024-09-04 10:16:29 · 574 阅读 · 0 评论 -
每期一个小窍门: 聊聊 pause 容器
综上所述,pause容器在Kubernetes Pod中起到了关键的基础设施作用,不仅保证了网络和进程的隔离性,还维护了Pod的生命周期和稳定性。这些特点使得pause容器成为Kubernetes中不可或缺的一部分,对于理解Pod的工作原理至关重要。pause容器在Kubernetes中的作用非常重要,它负责维护。,确保Pod内部不同容器间的。原创 2024-09-03 21:17:44 · 441 阅读 · 0 评论 -
mysql8.0 Innodb cluster 日常运维: 集群搭建, 异常节点回归, 数据备份/恢复
innodb cluster 部署架构图生成mysqlrouter的配置文件mysqlrouter --bootstrap root@mysql-122:3306 --directory=/etc/mysqlrouter --user=root --conf-use-sockets --force备份数据(可用于恢复集群数据)注意: 数据量过大时, 推荐挂载磁盘mysqldump -uroot -p -q --single-transaction --master-data=2 mpt_cr原创 2022-05-15 17:31:36 · 6285 阅读 · 1 评论 -
最接地气的版本 30个字讲透 四层负载均衡 七层负载均衡
首先放一张图, 相比很多人都看过无数遍了, osi七层网络模型:所谓七层负载均衡, 我建议大家理解为 第七层负载均衡, 也就是在osi这个七层网络模型中的第七层进行的负载均衡, 比如nginx的域名正则匹配就是很好的例子, 并不是七层的每一层都做了负载均衡, 七层负载的意思.四层负载均衡, 想必大家看到这里也应该明白了, 同理, 也就是在osi这个七层网络模型中的第四层进行的负载均衡, 第四层是什么? 传输层, 说白了就是端口+ip的模式, 同样也不是四层负载的意思.那四层负载的“四层”是指传输原创 2021-10-09 16:49:37 · 153 阅读 · 0 评论 -
FQDN:(Fully Qualified Domain Name)全限定域名
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)例如:主机名是host01,域名是mycompany.com,那么FQDN就是host01.mycompany.com。全限定域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全限定域名中包含的信息可以看出主机在域名树中的位置。DNS解析流程:首先查找本机HOSTS表,有的直接使用表中定义,没有查找网络连接中设置的DNS 服务器由他来原创 2021-10-09 15:30:10 · 2066 阅读 · 0 评论 -
DNS 是怎样同时使用TCP, UDP的
DNS同时占用UDP和TCP端口53, 比较奇怪DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议, DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。为什么既使用TCP又使用UDP?TC原创 2021-04-09 15:36:14 · 1545 阅读 · 2 评论 -
k8s服务发现 headless svc和 普通svc 区别
首先我们把 svc 本身看做为首, svc的endpoints对应的pods看作是尾普通 svc我们可以看作是有头svc, 表示svc本身也有一个地址(cluster ip), dns查询时只会返回Service的地址, 具体client访问的是哪个Real Server,是由iptables来决定的headless svcheadless 无头, 无头表示这个svc的负载均衡是没有clusterip的, dns查询会如实的返回2个真实的endpointheadless优点第一种:自原创 2021-04-07 17:42:55 · 3350 阅读 · 2 评论 -
SpringCloudGateway 实现微服务名称隐藏, url保护, token鉴权
在微服务中我们最好是要讲微服务名字隐藏起来, 这个demo中我使用了url转发实现,yml 和 过滤器代码如下.server: port: 8888spring: application: name: pns-gateway cloud: nacos: discovery: server-addr: localhost:8848 # register-enabled: true gateway: disc原创 2020-11-26 13:58:40 · 2123 阅读 · 1 评论 -
压测工具 wrk 和 jmeter对比
适用场景:Jmeter适合一些企业级的应用,逻辑复杂,但对并发的要求不是很高。多线程模型,支持集群。碰到了不少bug, 有点坑.wrk, 轻量级, 可以在服务器部署, 不占资源, 很少的性能能够占用可以大量并发, 适合一些互联网型的业务,高并发、高可用、逻辑相对简单的业务,合微服务、api等。多路io复用模型。 还不错正在使用.工具单机性能并发能力运行平台扩展能力上下文能力其他jmeter弱所有平台js/beanshell/插件/jar强报表、监控wrk原创 2020-11-12 09:48:54 · 1646 阅读 · 3 评论 -
Docker for mac 网络模式踩坑
在使用Docker时,要注意平台之间实现的差异性如Docker For Mac的实现和标准Docker规范有区别,Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,因此Docker For Mac没有docker0网桥,不能实现host网络模式,host模式会使Container复用Daemon的网络栈(在xhyve虚拟机中),而不是与Host主机网络栈,这样虽然其它容器仍然可通过xhyve网络栈进行交互,但却不是用的原创 2020-10-27 09:44:51 · 3413 阅读 · 5 评论 -
OKHTTP 回收资源的坑
最近使用OKHTTP发现不能重复读取返回体数据看了大佬的博客 https://blog.csdn.net/my_truelove/article/details/80133556总结一下:当我们第一次调用 response.body().string() 时,OkHttp 将响应体的缓冲资源返回的同时,调用 closeQuietly() 方法默默释放了资源。在实际开发中,响应主体 RessponseBody 持有的资源可能会很大,所以 OkHttp并不会将其直接保存到内存中,只是持有数据流连接。原创 2020-10-15 10:15:58 · 3342 阅读 · 0 评论 -
多级反向代理的情况下, 如何获取client真实ip
获取客户端的IP地址的方法是:request.getRemoteAddr()这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。原创 2020-10-12 17:17:08 · 9410 阅读 · 2 评论 -
深入理解JWT的使用场景和优劣
编码,签名,加密这些基础知识简单地介绍下,千万别搞混了三个概念。在 jwt 中恰好同时涉及了这三个概念,笔者用大白话来做下通俗的讲解(非严谨定义,供个人理解)编码(encode)和解码(decode)一般是编码解码是为了方便以字节的方式表示数据,便于存储和网络传输。整个 jwt 串会被置于 http 的 Header 或者 url 中,为了不出现乱码解析错误等意外,编码是有必要的。在 jwt...原创 2020-02-29 09:31:42 · 799 阅读 · 2 评论 -
理解 OAuth 2.0
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自...转载 2020-02-22 12:01:01 · 543 阅读 · 0 评论 -
RPC、REST API深入理解
RPC、REST API深入理解一:RPCRPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式.RPC是分布式架构的核心,按响应方式分如下两种:同步调用:客户端调用服务方方法,等待直到服务方...原创 2019-12-12 09:59:23 · 929 阅读 · 0 评论