上篇文章 一个有关tcp的非常有意思的问题 中我们讲到,在tcp建立连接后,如果一端关闭了连接,另一端的第一次write还是可以写成功的,文章中也分析了造成这种现象的具体原因。
Linux下的tcp编程中,第一步就是要创建socket,本文将从源码角度看下socket是如何被创建的。
周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?
本来是在研究epoll的另一个问题的,结果发现这个问题,所以这篇文章就先写这个问题吧。
** 若TIME_WAIT事件设置过短, 会导致错误后果 TIME_WAIT结束过早, 导致之前迷失的第三次握手突然到达, 新连接突然成功
在上篇《IPv6技术详解:基本概念、应用现状、技术实践(上篇)》,我们讲解了IPV6的基本概念。
在《Netfilter & iptables 原理》一文中,我们介绍了 Netfilter 和 iptables 的原理,而本文主要通过源码分析来介绍一下 Netfilter 与 iptables 的实现过程。
本文作者:robintang,腾讯 WXG 后台开发工程师。转载自「 云加社区」。 就在昨天,2019 年 11 月 26 日,全球 43 亿个 IPv4 地址正式耗尽,很多人表示忧虑。不过不用担心,IPv4 的下一代 IP 协议 IPv6 将会从根本上解决 IPv4 地址耗尽的问题。 下面通过一篇长文来了解下什么是 IPv6。 主要内容包括: IPv6 的基本概念 IPv6 在 Linux 操作系统下的实现 IPv6 的实验 IPv6 的过渡技术介绍 IPv6 在 Linux 平台下 socket
在《深入解析常见三次握手异常》 这一文中,我们讨论到如果发生连接队列溢出而丢包的话,会导致连接耗时会上涨很多。那如何判断一台服务器当前是否有半/全连接队列溢出丢包发生呢?
在tcp建立连接后,先主动关闭其服务端,之后再在客户端下对其socket进行写操作,正常思维都会认为,这个写操作肯定会返回错误吧?
在使用同步IO的情况下,调用gethostbyname()或者gethostbyname_r()就可以根据域名查询到对应的IP地址,。
普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下,所谓的普及还是遥遥无期。但不可否认的是,IPV6肯定是未来趋势,做为网络通信领域的程序员来说,详细学习和了解IPV6是很有必要的,所谓厚积薄发,谁知道哪天IPV6真的普及了呢?那么,我们开始看正文吧。
kubernetes作为云原生不可或缺的重要组件,在编排调度系统中一统天下,成为事实上的标准,如果kubernetes出现问题,那将是灾难性的。而我们在容器化推进的过程中,就遇到了很多有意思的故障,今天我们就来分析一个“雪崩”的案例。
大家对于 TCP 的三次握手应该都比较熟悉了,对于服务端,收到 SYN 包后该怎么处理,收到 Establish 之后又该怎么处理,或者说这些连接放在哪里,其实这也是之前面试问过的问题
在上篇文章,把AAStore.ProductCatalog.Api部署到docker中运行,输入地址访问报错如下图,说明外部无法访问这个url。(当然本地开发环境测试是可以访问的)。后来修改此处options.ListenLocalhost(8081)的代码改成options.ListenAnyIP(8081),可以访问了。那这两种写法有什么区别呢?
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优。光TCP的调优参数就有50多个。在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数。在此分享出来,希望对大家有所帮助。
转载自: http://blog.sina.com.cn/s/blog_781b0c850100znjd.html
Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。
在网络开发模型中,有一种非常易于开发同学使用的方式,那就是同步阻塞的网络 IO(在 Java 中习惯叫 BIO)。
和外部联调一直是令人困扰的问题,尤其是一些基础环境配置导致的问题。笔者在一次偶然情况下解决了一个调用外网服务概率性失败的问题。在此将排查过程发出来,希望读者遇到此问题的时候,能够知道如何入手。
在《21天精通IPv4 to IPv6》的第一周综合回顾中,我,猫头虎博主,将总结本周的学习内容,重点回顾关键知识点。本文将为你提供一份详尽的周回顾,涵盖从IPv4到IPv6的基础知识、配置方法,到安全实践。这篇技术博客包含丰富的关键词,如IPv6迁移、网络升级策略、IPv6配置,旨在帮助读者全面掌握IPv4到IPv6的迁移知识。
本篇介绍IP地址与子网划分的一些基础知识,在嵌入式开发,使用网络功能时,需要了解网络的一些基础知识。
atbus是我按之前的思路写得服务器消息通信中间件,目标是简化服务器通信的流程,能够自动选择最优路线,自动的断线重连和通信通道维护。能够跨平台并且高效。
这篇文章是回答 小方说服务器知识星球 一位大一计算器同学小 Q 的回头,断断续续写了三天。总体来说小方说服务器知识星球为球友提供如下帮助: 1. 优问优答 2. 不定期的技术直播和录像 3. 优质源码分享和指导 4. 不限次数的职业解惑、模拟面试和简历 review(实时语音一对一辅导) 5. 大厂内推和面试辅导 6. 11 个技术球友专项技术系列专栏。 星球开通以来已帮助几百位同学提高技术和进入大厂,现在加入与 1000+ 球友一起进步。 国庆快到了,星球做一波优惠活动,扫描下面的优惠码加入星球可以优惠
半年前我以源码的方式描述了网络包的接收过程。之后不断有粉丝提醒我还没聊发送过程呢。好,安排!
在《21天精通IPv4 to IPv6》系列的第五天,我,猫头虎博主,将深入讨论IPv4与IPv6的共存策略。本文内容将涵盖双栈网络、转换技术如NAT64和隧道技术,以及在不同操作系统中实现共存的方法。本文注重易读性和准确性,适合各级读者,涉及词条包括IPv4与IPv6共存、网络转换技术、操作系统网络配置等。
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。
传统数据库软件开发中,主键自动生成技术是基本需求。而各大数据库对于该需求也提供了相应的支持,比如MySQL的自增键。 对于MySQL而言,分库分表之后,不同表生成全局唯一的Id是非常棘手的问题。因为同一个逻辑表内的不同实际表之间的自增键是无法互相感知的, 这样会造成重复Id的生成。我们当然可以通过约束表生成键的规则来达到数据的不重复,但是这需要引入额外的运维力量来解决重复性问题,并使框架缺乏扩展性。
刚才下班回家路上,无意中听到大街上放的歌,歌词有这么一句:“毡房外又有驼铃声声响起,我知道那一定不是你”。这一句我似乎听懂了歌者的魂牵梦绕和绝望,如果在十年前我大概只能感受出悠扬的声调里溢出的悲凉吧。
对于 Golang 的 net.Listen() 函数,如果你不强行指定 IPv4 或 IPv6 的话,在双栈系统上默认只会监听 IPv6 地址。比如,用 Golang 实现一个 HTTP 服务非常简单:
接着上文的介绍,我们最后讨论了网络IO的几种实现模型,接下来我们有了理论基础,就可以分析一款实现reactor模型的网络框架,目前实现reactor的框架比较经典有netty、gnet。本文将重点分析gnet的网络实现。
Pip3line是一款针对RawBytes数据的安全工具,该工具不仅允许广大研究人员轻松查看和修改RawBytes数据,而且还可以对数据执行各种转换、快速源码搜索和网络代理拦截等。
一直被困扰的一个问题,服务器运行秒开,本地环境却要好几秒,之前用的xmapp和现在的PHP工具箱都纯在着这个问题;
容器是一种新的虚拟化技术,每一个容器都是一个逻辑上独立的网络环境。Linux 上提供了软件虚拟出来的二层交换机 Bridge 可以解决同一个宿主机上多个容器之间互连的问题,但这是不够的。二层交换无法解决容器和宿主机外部网络的互通。
接下来cillianplatform项目的更新频率保持一周一次,等稳定了到公开测试版本,会告知大家。
大家可能也在 nginx、redis 等 server 的配置文件中见过 bind 的时候不用真实的 IP,而使用 0.0.0.0 的情况。
在Docker架构中有很多重要的概念,如:graph,graphdriver,execdriver,networkdriver,volumes,Docker containers等。Docker在实现过程中,需要将以上实体进行统一化管理,而Docker Daemon中的daemon实例就是设计用来完成这一任务的实体。
执行主动关闭的那端经历了这个状态,并停留MSL(最长分节生命期)的2倍,即2MSL。
1.地址空间不同,IPv4中规定IP地址长度为32,而IPv6中IP地址的长度为128
经常在后台收到读者的交流,Linux 源码那么庞大,飞哥你是如何读的呢?由于问这个问题的太多,我想有必要专门写一篇文章聊一聊。
Pcap DNSProxy 是一个基于 WinPcap/LibPcap 用于过滤 DNS 投毒污染的工具,提供便捷和强大的包含正则表达式的修改 Hosts 的方法,以及对 DNSCurve/DNSCrypt 协议、并行和 TCP 协议请求的支持。多服务器并行请求功能,更可提高在恶劣网络环境下域名解析的可靠性。
这是系列的第二篇 这是这个系列文章的第二篇,要是没有看第一篇的还是建议看看第一篇,以为这个是接着第一篇梳理的 先大概的总结一下在上篇的文章中说的些内容: 1、 整理了一下做IM我们有那些途径,以及我们怎样选择最适合自己的 2、在做IM的时候协议你又该怎样选择,以及这些协议之间一些的对比等等 3、接下来梳理了一下Socket的我们该怎样理解,它的心跳,pingpong,重连机制等等 4、利用demo整理出来了原生Socket的简单的连接以及接收/发送消息。 这篇我们梳理那些 1、 对CocoaAsyncSoc
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
首先看下促使我学习bcc的这篇文章中的程序traceicmpsoftirq.py,使用该程序的本意是找出对ping响应的进程位于哪个CPU core上,然后使用perf扫描该core,找出造成网络延迟的原因。源码如下:
领取专属 10元无门槛券
手把手带您无忧上云