![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络协议
文章平均质量分 79
Mrpre
??
展开
-
ipvs 导致syn 重传问题
(本篇讲的是IPVS自身到指的syn重传,和RS的PAWS没关系)sysctl_conn_reuse_mode 为0 时,如果当前IPVS的session是TIME_WAIT或者其他状态,任何进来的packet都会根据当前的session进行转发。这就造成一个问题,如果客户端请求都是短连接,那么IPVS的session都是TIME_WAIT状态,如果客户端来了一个SYN包,那么SYN包也会将当前的session变成SYN_RECV,然后不会重新调度RS。特别是,如果我们将RS权重为0,此时一个SYN过来原创 2022-05-23 17:50:43 · 840 阅读 · 0 评论 -
ip_forward 如何影响IPVS转发流程
先理清几个概念/proc/sys/net/ipv4/ip_forward 等价于下面的 /proc/sys/net/conf/all/forwarding/proc/sys/net/ipv4/conf/xx/forwarding 针对指定的dev xx进行设置/proc/sys/net/ipv4/conf/all/forwarding 需要对当前所有device进行设置,当然不同的属性,all 的逻辑不一样,需要one by one的的看/proc/sys/net/ipv4/conf/defa原创 2022-05-19 14:18:50 · 775 阅读 · 0 评论 -
flannel 原理 之 TUN模式
flannel 原理 之 TUN模式首先,TUN模式 原理详见 https://wonderful.blog.csdn.net/article/details/113105456 ,通常用来两个私网通过公网穿越。总的来说要熟悉掌握TUN设备的特性,被路由到TUN设备发出去的数据,都会被Open TUN的socket读到,做到拦截;write到TUN的数据,都会被TUN重放到协议栈,模拟了TUN设备所在的机器收包操作。流程假设当前 2台node node1为11.238.116.75 node2的物理I原创 2021-03-24 16:32:13 · 1615 阅读 · 0 评论 -
flannel 原理 之 子网划分
flannel 原理 之 子网划分Docker通常情况下, 2台物理机上分别安装Docker,Docker分别在2台物理机上,docker0的网桥,其IP地址属于私网网段,例如物理机地址是10.x.x.x,docker0地址通常是192.x.x.x。 任何在物理机上启动的container,其分配的eth0地址都是 192.x.x.x。 但是2台独立的物理机上的container之间是无法通信的,因为物理网络里是没有192.x.x.x网段的信息,无法对其进行路由,更何况物理网络作为基础设施,也不可能动态原创 2021-03-24 16:26:17 · 1068 阅读 · 0 评论 -
TUN 设备原理
TUN 设备原理本文要解决的就是 sslvpn 的运行机制。例如如何使用tun设备,是的连个独立的私网ip能够跨公网访问simpletun首先玩一下简单的例子 https://github.com/gregnietsky/simpletun.git 然后有个直观的感受我们找2台机器 分别使用make命令编译上述代码,生成 二进制 simpletunA物理ip 11.238.116.73B物理ip 11.238.116.75在B机器上执行sudo ./simpletun -i tun90 -原创 2021-01-25 10:58:27 · 4442 阅读 · 0 评论 -
raw socket 使用 BPF 过滤报文
raw socket 使用 BPF 过滤报文抓包使用 raw socket 进行网络底层抓包,想必大家都清楚(仔细想想tcpdump原理)。这里不赘述,网上许多资料。注意,网卡需要开启混杂模式、其次程序需要管理员权限。#include <stdlib.h>#include <stdio.h>#include <sys/socket.h>#inclu...原创 2019-05-07 11:04:05 · 3427 阅读 · 0 评论 -
MQTT v5 (MQTT 5.0) 新特性介绍
MQTT v5 (MQTT 5.0) 的新功能项目中逐步完成了 MQTT 5.0的开发,这里介绍下MQTT 5.0 的一些新特性MQTT 5.0 规范见:http://docs.oasis-open.org/mqtt/mqtt/v5.0/cos01/mqtt-v5.0-cos01.html#_Toc514847900格式首先,协议上,增加了一个 Property字段,正是这个字段,使得 M...原创 2019-02-14 13:21:02 · 12941 阅读 · 5 评论 -
MQTT协议 几个重要的属性
MQTT 特性MQTT协议其实还是挺简单的,从为数不多的项目中,简单的总结了下MQTT协议某些字段的特性 1:will(遗言)包括 Will topic 、will message 、 will Qos、will retain。 一个Client异常断开连接的时候或者Server处理失败的时候,Server会把Client的will信息,当做Publish处理,Publish的to...原创 2018-09-08 18:21:36 · 6606 阅读 · 0 评论 -
MQTT 3.1.1 规范
http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html2 MQTT Control Packet format1.2 Structure of an MQTT Control PacketMQTT协议靠交换不用的控制帧来工作,这节描述了这些帧的格式。 一个MQTT控制帧总是有3部分组成,如图2.1 ...翻译 2018-09-08 18:00:33 · 1355 阅读 · 0 评论 -
TLS 1.3 协议详解
TLS 1.3 握手流程详解需要的背景知识: (1):对 TLS 1.2 协议有一定程度的了解,包括秘钥交换、会话复用等。第一节 TLS 1.3 的握手概述协议分析的第一步就是看报文。TLS 1.3的报文,有个特点,就是通过抓包发现,只能看到明文的Client Hello和Server Hello,其余的握手报文均被加密。1-RTT如图: 图1 条件:无条...原创 2018-08-09 10:46:08 · 36401 阅读 · 23 评论 -
SSL_write 发生了什么
SSL_write 发生了什么以前在设计协议栈的时候,非常随意,因为包括下层的TCP到上层的应用处理,都是自己设计的,怎么样不麻烦这么约定。然而,如果将自己的协议栈放在通用平台,那么问题就显得比较微妙了,不是因为协议栈本身自己的实现的难度,而是使用协议栈的方式多样化导致接口设计需要变得非常复杂。一个简单的SSL_write流程,其实核心内容很简单: 1:分段(如果必要的话) 2:每段算...原创 2018-07-16 09:26:24 · 11565 阅读 · 3 评论 -
流式校验UTF8格式
由于某个工程需要校验数据是否是utf8格式的,然后翻了翻RFC,确实挺简单的编码格式,所以直接写了,但是越写越感觉不对,字节不够时真的需要cache吗?想肯定还有非常简单的方法,果不其然,找到了这篇paper: http://bjoern.hoehrmann.de/utf-8/decoder/dfa/流式校验 utf8 源码:static unsigned char TYPES[] = ...原创 2018-07-05 20:28:55 · 554 阅读 · 0 评论 -
编写wireshark lua插件 解析私有协议
wireshark 解析私有协议1:本文很多写法并不合理,因为我不知道wireshark框架,也从来没写过lua。。纯属瞎捉摸出的结果。 2:文本以解析websocket协议为例。准备lua文件我的wireshark安装目录在:C:\Program Files (x86)\Wireshark\ ,所以我在plugins\2.6目录下,创建了一个websocket.lua文件。lu...原创 2018-07-05 11:18:40 · 4209 阅读 · 3 评论 -
关于UDP接收icmp端口不可达(port unreachable)
本篇分为3部分1:报文格式2:产生的原因3:linux协议栈如何处理4:应用层如何获取1:报文如下,10.30.13.1往10.30.16.10的80端口发送了一个UDP报文,80端口其实监听的是TCP。服务器回复了一个类型为端口不可达的ICMP,ICMP数据部分就是请求UDP ip层及其以上的数据。2:原因 首先原因就是接收udp报文...原创 2015-02-03 17:18:34 · 118440 阅读 · 13 评论