随笔分类 -  linux tcp/ip

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要:今天调试bug时, 忘了将原始的check_sum值reset,导致发包-抓包后发现。check-sum 错误。 来看一看check-sum:简单讲就是对要计算的数据,以16bit为单元进行累加,然后取反 在内核中构造数据包的时候,我们需要关注三个校验和:分别是sk_buf中的csum,ip_sum 阅读全文
posted @ 2020-09-08 20:55 codestacklinuxer 阅读(2230) 评论(0) 推荐(0)
摘要:根据perf 工具可以看到目前引擎问题主要是: 内核协议栈以及软中断问题;细分的话 就是 自旋锁、cache-misses、cs 进程上下文切换 1、应用层目前预计只能从数据结构优化; 比如使用haproxy的ebtree经行优化。但是 我们使用了fdtable ,所以无用。ebtree(见http 阅读全文
posted @ 2020-09-02 22:07 codestacklinuxer 阅读(674) 评论(0) 推荐(0)
摘要:在餐馆吃饭时,连接无线网络后访问某网页会自动弹出一个认证页面,我想大家都经历过。。。。。 其网络拓扑如下: sta 网络设备 公网 比如sta 终端ip 是100.100.100.100 访问百度,但是按道理应该返回百度啊?那怎么返回的是 认真页面呢?这里面涉及到报文拦截 。 当sta 的报文经过网 阅读全文
posted @ 2020-08-29 00:17 codestacklinuxer 阅读(311) 评论(0) 推荐(0)
摘要:查一个问题:结果看了一下软中断以及系统 所耗cpu,心中满是伤痕啊 perf 结果一眼可以看到:主要是锁 那么这个lock 是用来干什么的呢?? A:TCP socket的使用者有两种:进程(线程)和软中断。同一时间可能会有两个进程(线程),或位于不同CPU的两个软中断,或进程(线程)与软中断访问同 阅读全文
posted @ 2020-08-27 22:32 codestacklinuxer 阅读(1131) 评论(0) 推荐(0)
摘要:skb_shinfo(head)->frag_list skb_shinfo(head)->frags[]能区分开来吗???结论就是: frags[] are for scatter-gather i/o buffers --nr_frags 和 frags 用于支持 Scatter/Gather 阅读全文
posted @ 2020-08-26 20:57 codestacklinuxer 阅读(530) 评论(0) 推荐(0)
摘要:https://cloud.tencent.com/developer/article/1150971 前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼点。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。 阅读全文
posted @ 2020-08-26 20:57 codestacklinuxer 阅读(350) 评论(0) 推荐(0)
摘要:网络设备一次能够传输的最大数据量就是MTU,即IP传递给网络设备的每一个数据包不能超过MTU个字节,IP层的分段和重组功能就是为了适配网络设备的MTU而存在的。从理论上来讲,TCP可以不关心MTU的限定,只需要按照自己的意愿随意的将数据包丢给IP,是否需要分段可以由IP透明的处理,但是由于TCP是可 阅读全文
posted @ 2020-08-07 21:06 codestacklinuxer 阅读(1377) 评论(0) 推荐(1)
摘要:http://www.cnhalo.net/2016/09/13/linux-gro/ GRO(Generic receive offload): 在napi poll里把小包封装成大包再递交给协议栈 LRO: GRO的硬件实现(通过网卡的RSC功能) http://lwn.net/Articles 阅读全文
posted @ 2020-08-07 21:05 codestacklinuxer 阅读(587) 评论(0) 推荐(0)
摘要:/* * Main IP Receive routine. */ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { const 阅读全文
posted @ 2020-08-05 20:01 codestacklinuxer 阅读(512) 评论(0) 推荐(0)
摘要:TCP核心:流量控制 拥塞控制 流量控制:滑动窗口来实现, 防止接收方能够处理过来 拥塞控制:防止过多的包被发送到网络中,避免出现网络负载过大 说一说 拥塞控制: 拥塞控制状态机的状态有五种,分别是Open,Disorder,CWR,Recovery和Loss状态 四个算法为慢启动,拥塞避免,拥塞发 阅读全文
posted @ 2020-06-05 21:38 codestacklinuxer 阅读(965) 评论(0) 推荐(1)
摘要:来自:http://abcdxyzk.github.io/blog/2013/09/06/kernel-net-sack/ RFC文档rfc2883 rfc2018 tcp_ack中对sack的处理 if (TCP_SKB_CB(skb)->sacked)//SACK相关处理 flag |= tcp 阅读全文
posted @ 2020-05-17 17:08 codestacklinuxer 阅读(342) 评论(0) 推荐(0)
摘要:抓包的时候,发现 tcp 三次握手中一般会有几个options 一个是mss 一个是ws 一个sack perm 这次主要是来说一说 sack 这个选项: 1. 只重传超时的数据包,比较实用与后面的数据包都能够正常接收的状况,只重传超时的数据包,但是如果比较坏的情况下,丢失了很多封包呢? 那就需要一 阅读全文
posted @ 2020-05-17 15:34 codestacklinuxer 阅读(537) 评论(0) 推荐(0)
摘要:} /* * 延时ACK"定时器在TCP收到必须被确认但无需马上发出 * 确认的段时设定,TCP在200ms后发送确认响应。如果在 * 这200ms内,有数据要在该连接上发送,延时ACK响应就 * 可随数据一起发送回对端,称为捎带确认。 */ static void tcp_delack_timer 阅读全文
posted @ 2020-05-10 16:56 codestacklinuxer 阅读(505) 评论(0) 推荐(0)
摘要:端口不可达: client >server 结果server回复端口不可达, 由于是icmp报文; 到达client内核协议栈后进入icmp_rcv处理: /* * Deal with incoming ICMP packets. */ int icmp_rcv(struct sk_buff *sk 阅读全文
posted @ 2020-05-10 15:48 codestacklinuxer 阅读(4207) 评论(0) 推荐(0)
摘要:/** * struct sock - network layer representation of sockets * @__sk_common: shared layout with inet_timewait_sock * @sk_shutdown: mask of %SEND_SHUTDO 阅读全文
posted @ 2020-05-10 15:34 codestacklinuxer 阅读(708) 评论(0) 推荐(0)
摘要:1、连接建立定时器: tcp 连接建立时, client 会发出syn 然后等待ack,server 收到syn 后会回复ack 同时也会带上新的syn,此时等待客户端回复ack,当时server没有收到ack,server 会超时重发几次synack,最后没有收到ack,导致连接建立将终止。 创建 阅读全文
posted @ 2020-05-10 11:37 codestacklinuxer 阅读(376) 评论(0) 推荐(0)
摘要:1、坚持定时器在接收方通告接收窗口为0,阻止发送端继续发送数据时设定。 由于连接接收端的发送窗口通告不可靠(只有数据才会确认),如果一个确认丢失了,双方就有可能因为等待对方而使连接终止: 接收放等待接收数据(因为它已经向发送方通过了一个非0窗口),而发送方在等待允许它继续发送数据的窗口更新。 为了防 阅读全文
posted @ 2020-05-02 16:41 codestacklinuxer 阅读(650) 评论(0) 推荐(0)
摘要:滑动窗口 TCP发送方的窗口可以划分成四个部分: 1、已经发送并且确认的TCP段; 2、已经发送但是没有确认的TCP段; 3、未发送但是接收方准备接收的TCP段, 4、未发送并且接收方也为准备接受的TCP段。 第3部分是可用窗口,长度为snd_una + snd_wnd - snd_nxt。 第2部 阅读全文
posted @ 2020-05-02 16:14 codestacklinuxer 阅读(402) 评论(0) 推荐(0)
摘要:tcp keepalive定时器 http server 和client端需要防止“僵死”链接过多!也就是建立了tcp链接,但是没有报文交互, 或者client 由于主机突然掉电!但是server 不知道! 所以需要有一种检测机制,检查tcp连接是否活着在也就是有报文交互!! 也就是检测:对方是否d 阅读全文
posted @ 2020-05-02 15:10 codestacklinuxer 阅读(477) 评论(0) 推荐(0)
摘要:上一篇文章写道了udp 使用reuseport 多线程编程!!! 但是有几个问题需要考虑一下: 之前hash使用sip sport dip dport为key, 很正常同一个客户端回hash到同一个socket上。。但是其中一个线程挂了呢????????????对于TCP而言,hash的不一致仅仅影 阅读全文
posted @ 2020-04-25 22:02 codestacklinuxer 阅读(255) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 下一页