摘要: Linux网桥工作原理与实现 Linux 的 网桥 是一种虚拟设备(使用软件实现),可以将 Linux 内部多个网络接口连接起来,如下图所示: 而将网络接口连接起来的结果就是,一个网络接口接收到网络数据包后,会复制到其他网络接口中,如下图所示: 如上图所示,当网络接口A接收到数据包后,网桥 会将数据 阅读全文
posted @ 2021-06-25 18:20 Smah 阅读(6302) 评论(0) 推荐(2) 编辑
摘要: TCP源码分析 - 三次握手之 connect 过程 本文主要分析 TCP 协议的实现,但由于 TCP 协议比较复杂,所以分几篇文章进行分析,这篇主要介绍 TCP 协议建立连接时的三次握手过程。 TCP 协议应该是 TCP/IP 协议栈中最为复杂的一个协议(没有之一),TCP 协议的复杂性来源于其面 阅读全文
posted @ 2021-06-25 18:18 Smah 阅读(1191) 评论(0) 推荐(0) 编辑
摘要: ARP协议与邻居子系统剖析 学习过 TCP/IP 协议的同学都应该了解过 TCP/IP 五层网络模型,如下图: 从上图可以看出,ARP协议 位于 TCP/IP 五层网络模型的 网络层。那么,ARP协议 的用途是什么呢? ARP协议介绍 在局域网中(同一个路由器内),主机与主机之间需要通过 MAC 地 阅读全文
posted @ 2021-06-25 18:17 Smah 阅读(1235) 评论(0) 推荐(1) 编辑
摘要: LVS原理与实现 - 实现篇 在上一篇文章中,我们主要介绍了 LVS 的原理,接下来我们将会介绍 LVS 的代码实现。 本文使用的内核版本是:2.4.23,而 LVS 的代码在路径:/src/net/ipv4/ipvs 中。 Netfilter 在介绍 LVS 的实现前,我们需要了解以下 Netfi 阅读全文
posted @ 2021-06-25 18:16 Smah 阅读(709) 评论(0) 推荐(0) 编辑
摘要: LVS原理与实现 - 原理篇 LVS,全称 Linux Virtual Server,是章文嵩博士发起的一个开源项目。在社区具有很大的热度,是一个基于四层、性能极高的反向代理服务器。至于什么是反向代理,这里就不作详细介绍了,如果不了解可以先去阅读反向代理相关的资料。 LVS工作原理 下面先介绍一下 阅读全文
posted @ 2021-06-25 18:15 Smah 阅读(411) 评论(0) 推荐(0) 编辑
摘要: UDP协议源码分析 UDP协议 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,位于 TCP/IP协议 模 阅读全文
posted @ 2021-06-25 16:59 Smah 阅读(1101) 评论(0) 推荐(0) 编辑
摘要: Unix Domain Sockets使用 上一章介绍了Socket接口层的实现,接下来我们将会介绍具体的协议层实现,这一章将会介绍用于进程间通信的 Unix Doamin Sockets 的实现。要使用 Unix Domain Sockets 需要在创建socket时为 family 参数传入 A 阅读全文
posted @ 2021-06-25 16:57 Smah 阅读(588) 评论(0) 推荐(0) 编辑
摘要: Socket接口的分层 Socket的英文原本意思是 孔 或 插座。但在计算机科学中通常被称作为 套接字,主要用于相同机器的不同进程间或者不同机器间的通信。Socket的使用很多网络编程的书籍都有介绍,所以本文不打算介绍Socket的使用,只讨论Socket的具体实现,所以如果对Socket不太了解 阅读全文
posted @ 2021-06-25 16:56 Smah 阅读(828) 评论(0) 推荐(0) 编辑
摘要: IP协议源码分析 IP协议 是网络的最重要部分,毫不夸张地说,正是因为有 IP协议 才有了互联网。而 IP协议 最重要的是 IP地址,IP地址 就好像我们的家庭住址一样,用于其他人方便找到我们的位置。 当然,这篇文章并不是介绍 IP协议 的原理,有关 IP协议 的原理可以参考经典的书籍《TCP/IP 阅读全文
posted @ 2021-06-25 16:51 Smah 阅读(1217) 评论(0) 推荐(0) 编辑
摘要: 源码分析 int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) { /*套接字的网络层表示转换成INET套接字的表示*/ struct inet_sock *inet = inet_sk(sk); /*套接字的网络层表示转换 阅读全文
posted @ 2021-06-25 10:47 Smah 阅读(1055) 评论(0) 推荐(0) 编辑