首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

TCP源码分析 - 三次握手之 connect 过程

由于本文主要介绍 Linux 内核是怎么实现 TCP 协议的,如果对 TCP 协议的原理不是很清楚的话,可以参考著名的《TCP/IP协议详解》。...我们来看看 Linux 内核怎么定义 TCP 头部的结构,如下: struct tcphdr { __u16 source; // 源端口 __u16 dest; /...__u16 window; // 滑动窗口 __u16 check; // 校验和 __u16 urg_ptr; // 紧急指针 }; 从上面的定义可知,结构 tcphdr...注意:Linux 内核通过 tcp_established_hash 哈希表来保存所有的 TCP 连接 socket 对象,而哈希表的键值就是连接的 IP 和端口,所以可以通过连接的 IP 和端口从 tcp_established_hash...tcp_skb_cb *tcb = TCP_SKB_CB(skb); int tcp_header_size = tp->tcp_header_len; struct tcphdr

1.7K20

linux源码看socket的close

linux源码看socket的close 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。...do_rcv |-tcp_rcv_state_process int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, struct tcphdr...(skb, sk, th); ... } 我们再看下tcp_fin static void tcp_fin(struct sk_buff *skb, struct sock *sk, struct tcphdr...总结 linux内核源代码博大精深,阅读其代码很费周折。之前读>的时候由于有先辈引导和梳理,所以看书中所使用的BSD源码并不觉得十分费劲。...直到现在自己带着问题独立看linux源码的时候,尽管有之前的基础,仍旧被其中的各种细节所迷惑。希望笔者这篇文章能帮助到阅读linux网络协议栈代码的人。

5.2K80
领券