187J3X1
码龄7年
求更新 关注
提问 私信
  • 博客:118,605
    118,605
    总访问量
  • 54
    原创
  • 73
    粉丝
  • 25
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
加入CSDN时间: 2018-06-23
博客简介:

品学楼A107

查看详细资料
个人成就
  • 获得106次点赞
  • 内容获得15次评论
  • 获得390次收藏
  • 代码片获得187次分享
  • 博客总排名1,497,434名
创作历程
  • 28篇
    2019年
  • 28篇
    2018年
成就勋章
TA的专栏
  • 以太坊源码学习
    6篇
  • Netfilter
    5篇
  • 区块链
    10篇
  • 容器网络
    8篇
  • openvswitch
    6篇
  • TCP协议栈
    20篇

TA关注的专栏 1

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

创作活动更多

王者杯·14天创作挑战营·第2期

这是一个以写作博客为目的的创作活动,旨在鼓励码龄大于4年的博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。 注: 1、参赛者可以进入活动群进行交流、分享创作心得,互相鼓励与支持(开卷),答疑及活动群请见https://bbs.csdn.net/topics/619735097 2、文章质量分查询:https://www.csdn.net/qc 我们诚挚邀请你们参加为期14天的创作挑战赛!

66人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

Linux中TCP listen套接字的查找的变化

内核TCP在收到SYN报文时,会根据报文的目的IP和Port,在本地匹配处于LISTEN状态的套接字进行握手过程。4.17版本以前的listen套接字查找The current listener hashtable is hashed by port only. When a process is listening at many IP addresses with the same po...
原创
发布博客 2019.09.30 ·
750 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Linux内核中reuseport的演进

SO_REUSEPORT选项在Linux 3.9被引入内核,在这之前也有一个很像的选项SO_REUSEADDR。如果你不太清楚这两者的区别和联系,建议阅读How do SO_REUSEADDR and SO_REUSEPORT differ?。如果不想读,那么下面这一节算是为懒人准备的。SO_REUSEADDR 与 SO_REUSEPORT 是什么?TCP/UDP用五元组唯一标识一个连接。任...
原创
发布博客 2019.09.30 ·
1383 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

TCP Metrics--remove per-destination timestamp cache

2017年3月,内核主线将TCP Metrics表项中的时间戳缓存,补丁详见patch—tcp: remove per-destination timestamp cache struct tcp_metrics_block { struct inetpeer_addr tcpm_saddr; struct inetpeer_addr tcpm_daddr; unsigned l...
原创
发布博客 2019.09.30 ·
369 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux内核TCP Metrics框架

TCP是一个复杂的协议,这种复杂来源于对报文传输的可靠性承诺。对每条TCP连接来说,除了有独立的状态机、定时器之外,还有拥塞控制相关的一些运行变量,比如RTT、CWND、SSTHRESH等,这些运行参数同样也是每连接(Per-Connection)的Per-Connection意味着每条连接的这些参数互不影响,这是理所应当的!但是,想想这个情景:A与B之间已经建立了一条稳定的TCP连接,此时若新...
原创
发布博客 2019.09.30 ·
770 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux内核中的udp隧道框架

起源TCP虽然能保证传输的可靠性,但其繁琐的状态机以及复杂的拥塞控制机制让它难以作为隧道报文的外层封装,详见TCP-in-TCP。相对而言,UDP就没这个困扰了,丢包的事情交给应用层处理就行。因而,不少隧道协议都是将UDP作为外层报文的方案。自然而然,与网络发展联系紧密的Linux内核也开始支持这些隧道协议,较新的内核已经支持fou、l2tp、vxlan、tipc、geneve等UDP隧道协议...
原创
发布博客 2019.09.30 ·
1327 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

隧道而言, TCP-In-TCP会发生什么

上周晚上在家中,当我搭起熟悉的ss梯子时, 发现不可用了T.T。登陆到控制台查看,发现国内的IP被Block了。昨天瞎逛,看到一个开源项目:udp2raw-tunnel,他实现的是将一个IP报文伪装成TCP报文,目的是穿过网络中UDP防火墙.哈?!这难道是TCP-In-TCP? 这玩意儿不是不可用吗?很早以前就有人说过了:Why TCP Over TCP Is A Bad Idea为了...
原创
发布博客 2019.09.30 ·
692 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

XFRM -- IPsec协议的内核实现框架

IPsec协议帮助IP层建立安全可信的数据包传输通道。当前已经有了如StrongSwan、OpenSwan等比较成熟的解决方案,而它们都使用了Linux内核中的XFRM框架进行报文接收发送。XFRM的正确读音是transform(转换), 这表示内核协议栈收到的IPsec报文需要经过转换才能还原为原始报文;同样地,要发送的原始报文也需要转换为IPsec报文才能发送出去。OverviewX...
原创
发布博客 2019.09.30 ·
3571 阅读 ·
5 点赞 ·
0 评论 ·
29 收藏

IPsec与NAT Traversal(NAT-T)

背景IPsec在两个通信实体之间建立安全的数据传输通道, 但它却与网络中广泛存在的NAT设备(以及PAT)有天生的不兼容性(incompatible)。我们以一个TCP报文为例来看看在不同IPsec的不同模式(Transport和Tunnel)和协议(AH和ESP)下,这种不兼容是如何发生的。先来看Transport模式对AH协议,由于其Authenticate范围是整个IP报文,所以...
原创
发布博客 2019.09.30 ·
3247 阅读 ·
3 点赞 ·
0 评论 ·
15 收藏

TCP的重传退避与公平

TCP在发送报文后,如果没有收到对端应答,那么在重传定时器超时后会触发重传,超时时间遵循二进制退避原则,也就是**{1,2,4,8,16}这样成倍地扩大超时时间。退避是因为TCP认为丢包意味着网络有拥塞,为了不加重网络的拥塞,TCP选择等待更长的时间再进行重传。这和CSMA/CD**中的二进制退避算法如出一辙。在链接曾经提到过网络拥塞的来历,网络中的网络设备(路由器、交换机)在收到了超过队列限...
原创
发布博客 2019.09.30 ·
1649 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

Linux 路由缓存的前世今生

3.6版本一定算得上是Linux网络子系统中一个特别的版本, 这个版本(补丁patch)移除了查找FIB之前的缓存查找。本文就来谈谈路由缓存的前世今生。几个基本概念为了让本文的阅读曲线更加平缓我决定还是将本文涉及的一些术语作个说明。路由:将skb按照规则送到该去的地方,这个地方可能是本机,也可能是局域网中的其他主机,或者更远的主机。从这个角度来说,它一个动词。那么路由发生在哪个时候呢? 我...
原创
发布博客 2019.09.30 ·
581 阅读 ·
1 点赞 ·
0 评论 ·
8 收藏

inet socket 与 packet socket

[外链图片转存失败(img-jGyWSBRz-1569142979995)(https://s2.ax1x.com/2019/08/17/muuRUg.png)]调试过网络程序的人大多使用过tcpdump,但你知道tcpdump是如何工作的吗?tcpdump这类工具也被称为Sniffer,它可以在不影响应用程序正常报文的情况下,将流经网卡的报文呈现给用户。本文不分析tcpdump的具体实现,...
原创
发布博客 2019.09.22 ·
1287 阅读 ·
1 点赞 ·
0 评论 ·
15 收藏

IP地址是主机的还是网卡的 ?

读大学时,宿舍每个人都买了电脑,为了节约网费,整个宿舍又从二手市场淘了台TP-LINK路由器。这样每个人的电脑就通过路由器连接到学校网管中心,再连接到外网。从路由器后台界面可以看到,路由器为每个人的电脑分配了一个IP地址。这看上去IP是属于主机的.进入职场以后,公司的电脑都安装了两个物理网卡,通过两根网线分别接入了两个网络(10.X.X.X/8 和 192.X.X.X/24).从适配器管理...
原创
发布博客 2019.09.22 ·
9904 阅读 ·
15 点赞 ·
2 评论 ·
56 收藏

锁与无锁

当我们在编写多线程程序时,常常会涉及到多个线程对共享数据的访问。如果不对这种访问加以限制,往往会导致程序运行结果与预期不符锁编写代码时,我们以及习惯了用锁去保护数据。那么,这里的锁是什么?为什么它能满足我们的要求?它存在于哪里?让我们从一个最简单的例子出发—多个线程并发修改一个全局变量:/* 全局变量 */int g_sum = 0;/* 每个线程入口 */void *thr...
原创
发布博客 2019.09.22 ·
338 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

TAILQ 之一二事

TAILQ队列是FreeBSD内核中的一种队列数据结构,在一些著名的开源库中(如DPDK,libevent)有广泛的应用。TAILQ队列的定义TAILQ队列有HEAD和ENTRY两种基本的数据结构#define TAILQ_HEAD(name, type) \struct name { \ struct type *tqh_first; /* first e...
原创
发布博客 2019.09.22 ·
364 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Netfilter 是如何工作的(五):初识连接跟踪(connection track)

报文过滤和连接跟踪可以说是Netfilter提供的两大基本功能。前者被大多数人熟知,因为我们对防火墙的第一印象就是可以阻止有害的报文伤害计算机;而后者就没这么有名了,很多人甚至不知道Netfilter有这项功能。Why 使用连接跟踪顾名思义,连接跟踪是保存连接状态的一种机制。为什么要保存连接状态呢? 举个例子,当你通过浏览器访问一个网站(连接网站的80端口)时,预期会收到服务器发送的源端...
原创
发布博客 2019.09.22 ·
1221 阅读 ·
0 点赞 ·
0 评论 ·
9 收藏

Netfilter 是如何工作的(四):动作(target)

每一条iptables配置的规则(rule)都包含了匹配条件(match)部分和动作(target)。当报文途径HOOK点时,Netfilter会逐个遍历挂在该钩子点上的表的rule,若报文满足rule的匹配条件,内核就会执行动作(target)。上面是一条普通iptables规则,如果报文匹配前面的条件,就会执行最后的-j DROP,它就是这条规则的动作(target)普通动作 &am...
原创
发布博客 2019.09.22 ·
665 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

Netfilter是如何工作的(三) 规则的匹配(match)

每一条iptables配置的rule都包含了匹配条件(match)部分和动作(target)。当报文途径HOOK点时,Netfilter会逐个遍历挂在该钩子点上的表的rule,若报文满足rule的匹配条件,内核就会执行动作(target)。扩展match的表示而match又可以分为标准match和扩展match两部分,其中前者有且只有一个,而后者有零到多个。在Netfilter中,标准mat...
原创
发布博客 2019.09.22 ·
1086 阅读 ·
1 点赞 ·
1 评论 ·
7 收藏

Netfilter是如何工作的(二) 表(table)与规则(rule)

在(一)中说到,报文在内核协议栈中会途经5个HOOK点,在每个HOOK点上会依次执行链表上的钩子函数,那么这些钩子函数是如何与用户使用iptables下发的各个rule联系起来的呢?这些rule又是如何存储的呢? 本文详细描述这个问题。table内核使用struct xt_table这个结构来表示一个表(table)。结构中记录了这个表在哪些HOOK点有效,它的private指针保存了这个表包...
原创
发布博客 2019.09.22 ·
1214 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

Netfilter是如何工作的(一) HOOK点

写在前面本系列不是介绍How to配置iptables的文章。因为网络上已经有很多这类型的教程了,其中一些还不错(比如链接).本系列也不是一般意义上的Netfilter源码分析文章。因为大段粘贴代码也会让人心生畏惧和厌烦!本系列文章的目标是,用尽量少的文字和图片讲明白How Netfilter workNetfilter 的基本概念Netfilter是一套融入在Linux内核网络协议栈中...
原创
发布博客 2019.09.22 ·
956 阅读 ·
2 点赞 ·
0 评论 ·
8 收藏

通俗理解IP路由

日常工作环境中,我们习惯于使用ping去测试网络的连通性。如果ping不通,我们往往会去怀疑是不是路由配置错了。路由是什么我们知道,IP地址是网络世界里的门牌号。你可以通过IP地址访问远在天边的网站,那么数据是如何到达网站的呢?靠的就是路径上每个节点的路由。路由,简单的说就是指导IP报文该去哪的指示牌。一般说来,主机会在以下两个时机进行路由查询收到报文时,查询路由决定是上送本机...
原创
发布博客 2019.09.22 ·
1959 阅读 ·
4 点赞 ·
0 评论 ·
11 收藏
加载更多