<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LinuxTechNote的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LinuxTechNote</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LinuxTechNote]]></copyright><item><title><![CDATA[05. 详解 connect 系统调用，告别三次握手疑难故障]]></title><link>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164630377</link><guid>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164630377</guid><author>LinuxTechNote</author><pubDate>Tue, 08 Sep 2026 19:50:08 +0800</pubDate><description><![CDATA[TCP客户端想通信要先connect一下，但我们大多数人只停留在“成功建连、失败报错”的表层认知，connect阻塞和非阻塞怎么实现的？连接队列是怎么工作的？排查网络故障时只会抓包，却不知道对应内核的哪种行为，导致排查效率极低。三次握手过程涉及到网络包的收发，本文暂时忽略收发过程，后续文章会详细分享。服务端首先调用listen打开监听，初始化连接队列客户端调用connect，sock状态设置为，选择本地端口，构造并发送第一个 syn 包，同时启动重传定时器。至此，三次握手正式启动。]]></description><category></category></item><item><title><![CDATA[深入Linux网络子系统04：accept如何从全连接队列取出TCP连接]]></title><link>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164302378</link><guid>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164302378</guid><author>LinuxTechNote</author><pubDate>Wed, 02 Sep 2026 19:39:56 +0800</pubDate><description><![CDATA[从监听套接字的全连接队列中取出一个已完成三次握手的连接，返回其对应的套接字；监听 socket 和 accept 返回的新 socket 有什么区别？阻塞与非阻塞模式下 accept 行为有什么差异？accept 参与三次握手吗？accept 不参与三次握手，只是消费全连接队列中内核已经握手完成的连接；返回全新的已连接套接字 fd，监听 socket 本身不受影响，继续接收新连接；阻塞模式队列为空会睡眠等待；非阻塞模式直接返回 EAGAIN。]]></description><category></category></item><item><title><![CDATA[深入Linux网络子系统03：调用 listen 之后，内核发生了哪些事？]]></title><link>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164193951</link><guid>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164193951</guid><author>LinuxTechNote</author><pubDate>Sun, 30 Aug 2026 22:49:17 +0800</pubDate><description><![CDATA[socket()创建套接字、bind()绑定 IP 与端口。完成 bind 之后，socket 还只是处于CLOSED状态，并不能接收客户端连接，想要对外提供服务，必须调用listen()。listen在内核中完成了哪些工作？backlog参数限制的哪一个队列？半连接、全连接队列什么区别？listen()将 socket 从连接创建状态（TCP_CLOSE）切换为监听状态TCP_LISTEN），使其能够接收客户端连接请求，初始化全连接队列，TCP三次握手过程由内核自动完成。]]></description><category></category></item><item><title><![CDATA[深入Linux网络子系统02：bind()到底做了什么？]]></title><link>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164046047</link><guid>https://blog.youkuaiyun.com/LinuxTechNote/article/details/164046047</guid><author>LinuxTechNote</author><pubDate>Tue, 25 Aug 2026 10:45:05 +0800</pubDate><description><![CDATA[上一篇文章我们讲了socket()系统调用：它仅仅在内核创建一个空的套接字对象，分配 fd、初始化sock结构体等等，但是没有 IP、没有端口，没有任何地址信息，内核不知道要从哪个网卡、哪个端口收发数据。bind到底干了什么？为什么客户端通常不需要 bind？内核端口绑定原理？socket()创建空白套接字；bind()为套接字分配本地 IP + 端口，在内核建立地址映射bind 内核流程：状态校验→拷贝地址→端口冲突检查→填充 socket 地址→注册bhash。]]></description><category></category></item><item><title><![CDATA[深入Linux网络子系统01：socket() 到底做了什么？]]></title><link>https://blog.youkuaiyun.com/LinuxTechNote/article/details/162738638</link><guid>https://blog.youkuaiyun.com/LinuxTechNote/article/details/162738638</guid><author>LinuxTechNote</author><pubDate>Sat, 11 Jul 2026 16:10:37 +0800</pubDate><description><![CDATA[Linux网络编程：socket()函数内核实现解析 本文通过分析socket()函数的内核实现过程，揭示Linux网络子系统的核心工作机制。当用户调用socket()创建TCP套接字时，内核主要完成以下操作： 结构体初始化：通过sock_alloc()分配socket结构体，sk_alloc()分配sock结构体，形成socket（用户层接口）与sock（内核协议栈实体）的对应关系。 协议栈注册：根据协议族（如AF_INET）找到注册的inet_family_ops操作集，调用其create方法（inet]]></description><category></category></item></channel></rss>