一个棘手的内核协议栈问题,请大师进来指引

最近遇到一个tcp协议栈问题,发送端像是把ack忽略了一样,继续重传已经ack过的包,直至连接超时。wireshark是可以抓到ack包的,不清楚内核哪里把包给丢了,checksum是没问题的。业务机器上流量很低。搜索发现dropwatch可以用来排查,但生产环境机器都没开启这项。请问大神有什么手段可以继续查,本人对协议栈不熟悉,谢谢。(PS:传输逻辑上有tcp大包分小包封隧道逻辑)
抓包情况
图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个棘手的内核tcp协议栈问题,请大师进来指引
最近遇到一个tcp协议栈问题,发送端像是把ack忽略了一样,继续重传已经ack过的包,直至连接超时。tcpdump是可以抓到ack包的,不清楚内核哪里把包给丢了,checksum是没问题的。业务机器上流量很低。搜索发现dropwatch可以用来排查,但生产环境机器都没开启这项。请问大神有什么手段可以继续查,本人对协议栈不熟悉,谢谢。(PS:传输逻辑上有tcp大包分小包封隧道逻辑)rn抓包情况rn图片说明rn[img=https://img-bbs.csdn.net/upload/201903/12/1552379719_312056.png][/img]
工作中的十大棘手难题
最近一两年的时候,写代码的时间逐渐减少,除了负责几个小系统之外,更多的时间用在解决客户问题上。接触的问题多了,发现真的是什么样的问题都有可能发现在客户环境上,当然,这不能一味地说系统的问题。系统确实存在不足的地方,但是,有时候环境、客户人为操作等很多因素,都会带来或小或大的问题。下面列举一下接触客户问题以来,碰到的十大棘手问题。呵呵,说是棘手,也不一定很棘手的,但不少问题要解决起来肯定是有些麻烦的。
前端一些棘手的问题
问题1在掘金上看到一个关于CSS定位很有趣求助问题,目前没有找到解决方法,先记录一下。问题描述: 给一个元素设置position:fixed,如果给他的祖先元素加上transform属性,将会导致fixed失效,变成absolute的效果。<!DOCTYPE html> <html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compa
vue实战时遇见棘手问题
1. vue页面刷新 store中状态还原问题 //app.vue created() { sessionStorage.getItem(&amp;quot;componentState&amp;quot;) &amp;amp;amp;&amp;amp;amp; this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(sessionStorage.getItem(&amp;quot;com...
如何回答十个最棘手的面试问题(下)
如何回答十个最棘手的面试问题(下)   6.你以前的经验和我们现在的工作有哪些联系? 分析:这个提问要求你在与其它求职者进行比较时,你要克服
学习中遇到的几个棘手的问题,很关键
1.android 与js的交互,webview中调用网页,js中使用android中的数据,可以通过以下方法来实现: 第一,使能js   可以通过getSettings()获得WebSettings,然后用setJavaScriptEnabled()使能JavaScript: WebView myWebView = (WebView) findViewById(R.id.w
【Linux 内核网络协议栈源码剖析】数据包接收(含TCP协议状态变换)
接前文connect 函数剖析(一) 接收数据包函数,release_sock 函数是在 sock.c中,该函数是在 inet socket 层,其内部的数据结构为 sock 结构 该函数被 tcp_connect 函数最后调用,用于接收数据包 //如果对应的套接字正忙或被中断,则将数据包暂存到sock结构back_log队列中,这不能算被接收 //数据包要插入receive_queue
学习Linux-4.12内核网路协议栈(0)——前言
当决定开始写这个系列文章的时候,就意识到这可能会是个漫长的过程,也可能是个短暂的过程(如果自己中途放弃的话)。 最近一段时间零零散散在了解内核网路协议栈相关的东西,有时候觉得好难,有时候觉得也就那么回事,这种感觉反反复复持续了一段时间,直到现在可以较为平静的面对这些问题的时候,决定对网络协议栈的学习做个梳理和记录,下面是阅读到的一些书籍: TCP IP详解卷1:协议 原书第2版
linux 内核网络协议栈
Linux网络协议栈之数据包处理过程  1前言 本来是想翻译《The journey of a packet through the linux 2.4 network stack》这篇文章的。但在查阅相关的资料时,发现需要补充一些技术细节,才使得我这种菜鸟理解更加深刻,所以综合了上面两篇文档,在加上自己的裁减和罗嗦,就有了下面的文字。我不知道这是否侵犯了作者权益。如果有的话
Linux内核-协议栈-初始化流程分析
本文主要针对Linux-3.19.3版本的内核简单分析内核协议栈初始化涉及到的主要步骤和关键函数,不针对协议的解析以及数据包的处理流程做具体分析,后续有机会再详细分析(主要是作者目前这块才涉及…)1.准备 Linux内核协议栈本身构建在虚拟文件系统之上,所以对Linux VFS不太了解的可以参考内核源码根目录下Documentation/filesystems/vfs.txt,另外,socket接口
TCP/IP协议栈到底是内核态的好还是用户态的好?
“TCP/IP协议栈到底是内核态的好还是用户态的好?”这根本就是一个错误的问题,问题的根源在于,干嘛非要这么刻意地去区分什么内核态和用户态。 引子 为了不让本人成为干巴巴的说教,在文章开头,我以一个实例分析开始。 最近一段时间,我几乎每天深夜都在做一件事,对比mtcp,Linux内核协议栈的收包处理和TCP新建连接的性能,同时还了解了一下腾讯的F-Stack。这里指明,我的mtcp使...
如何旁路内核协议栈
此文转自:http://blog.csdn.net/wwh578867817/article/details/50139819在前两篇文章中,我们讨论了如何每秒接收 1M UDP 数据包 以及 如何减少往返时间 。我们在 Linux 上做试验,因为它是一个性能非常好的通用操作系统。不幸的是,对于一些更加专业的工作,Vanilla Linux(译者注:Linux 的内核版本,代号“香草”) 内核的网
linux内核网络协议栈架构分析,全流程分析-干货
内核协议栈架构分析,全流程分析,干货
《Linux内核TCP/IP 实现》:协议栈源码总纲一
一.linux内核网络栈代码的准备知识 1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有: /net/socket.c /net/protocols.c INET socket层:BSD socket是个可以用于各种网络协议的接口,而当...
Linux内核协议栈的详解完整版
详解Linux协议栈的数据流向,SOCKET的操作流程,unicast multicast等等的区别。
Linux 网络协议栈开发(一)—— 网络协议栈内核分析
1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从层次上来说,它位于应用层,是操作系
linux网络协议栈内核分析
1. Linux 网络路径 1.1 发送端 1.1.1 应用层 (1) Socket 应用层的各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的。Linux Socket 是从 BSD Socket 发展而来的,它是 Linux 操作系统的重要组成部分之一,它是网络应用程序的基础。从层次上来说,它位于应用层,是操作系统为应用程序
linux内核协议栈分析
详细描述了linux内核协议栈的实现原理及相关数据结构,为linux内核协议栈分析人员提供了重要参考。
内核网络协议栈传输层协议框架
  Linux内核支持的传输层协议包括传统的TCP,UDP,以及IPIP、GRE等隧道协议。内核协议栈使用net_protocol结构体表示其所支持的传输层协议,系统初始化或者相应协议模块加载时,具体的协议将根据协议号将其实现的net_protocol结构体注册到协议栈中,即以协议号为索引添加到全局结构体指针数组inet_protos[]中。inet_protos数据大小为MAX_INET_PR...
项目工作过程中遇到棘手问题是埋头钻研?还是及时向领导汇报情况?
在项目中,作为项目组成员难免会遇到问题。遇到问题时,有些人就会想:“领导挺忙的,就不进行汇报了”,“还是不汇报了吧,领导也许会因为我解决不了这个问题而低看我吧”,“再等等,我再努力努力也许就找到解决方案了”等等。 实际上,这种“瞒着不说”的心态很可能会最终拖累项目进度。你瞒着不说,即耽误了项目进度,又错失了同事经验的协助和指导,或者其它的替代解决方案。等你埋头花费大量时间钻研,最终不能钻研出来,
【Linux 内核网络协议栈源码剖析】数据包发送
release_sock 函数是在 sock.c中 //如果对应的套接字正忙或被中断,则将数据包暂存到sock结构back_log队列中,这不能算被接收 //数据包要插入receive_queue中才能算真正完成接收 //release_sock函数则是从back_log中取数据包重新调用tcp_rcv函数对数据包进行接收 void release_sock(struct sock *sk)
架构决定可扩展性--聊聊用户态协议栈的意义
嗯,很多人都是DPDK粉,所以不能得罪。就像我只要一写编程者怎么怎么地就会得到一堆踩一样,我不得罪群体。
学习Linux-4.12内核网路协议栈(1.8)——网络设备驱动模块的加载
1.了解PCI总线 说到网络设备驱动,就不得不说PCI总线,但是这个话题可深可浅,而且网上的资料也是一大堆(比如),但是对于我们来说,目前并不需要掌握很深,下面是网上找的两张最基本的PCI工作结构图,虽然PCI总线上可以挂接不同种类的设备,但我们这里只要了解网络设备就够了,所以我更偏好第二张图,它够简单,也够直观。        关于PCI总线,这里主要介绍两个结构体,一个是
学习Linux-4.12内核网路协议栈(1.2)——协议栈的初始化(sk_buff)
sk_buff 是网络数据包的承载,是最关键的结构体之一 /** * struct sk_buff - socket buffer * @next: Next buffer in list * @prev: Previous buffer in list * @tstamp: Time we arrived/left * @rb
Linux内核网络协议栈代码分析
一.linux内核网络栈代码的准备知识   1. linux内核ipv4网络部分分层结构:   BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件   主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以
【Linux 内核网络协议栈源码剖析】socket 函数剖析
深度剖析网络协议栈中的 socket 函数,可以说是把前面介绍的串联起来,将网络协议栈各层关联起来。
Zigbee协议栈内核分析 – 串口分析
Zigbee协议栈内核分析– 串口分析 在 Z-Stack里面,USART有两种配置方式,一种是DMA模式,另一种是ISR模式。那么首先让我们先来看看 DMA模式是什么样子的吧。 想要了解Z-Stack的USART DMA传输模式,首先我们得先知道裸机是怎么配置USART用DMA模式传输的。 为了了解USART是怎么用DMA模式传输数据的,我们来做一个简单的实验: 用USART0接收电脑发
Linux内核协议栈IP报文的上送转发及下发
这里主要分析在网络功能简单配置,且报文正常的情况下,报文的处理过程。 网卡接收到IP报文,经过一些执行路径后,最终进入ip_rcv做处理。  ip_rcv在网络功能简单配置,且报文正常的情况下,就是简单的通过ip_rcv_finish完成后续的全部处理工作。 ip_rcv_finish通过查找路由,为此报文找到一个dst_entry,然后即由skb_dst(skb)->input(skb);
万彩影像大师教程 |万彩影像大师用户指引
一 、万彩影像大师是什么? 万彩影像大师是一款免费的相册视频制作软件,内置上百种动画特效,可轻松做出精美的照片视频、MV、婚礼视频等。 二、 制作步骤 一共有九步,这里罗列了制作过程中需要注意的问题以及解决方法。 1. 图片与背景音乐(MP3格式) 事先准备一堆图片(横的竖的都可以,清晰就行)。再找一个背景音乐,音乐时长最好是相册时长。 2. 挑选一个模板,可以通过分类浏览或输入关键词搜索想要的...
协议栈(TCP被动连接三次握手)
协议栈和标准TCP协议的TCP状态转换略有不同: 第三次握手时,在tcp_v4_syn_recv_sock() -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; tcp_create_openreq_child() -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; inet_csk_clone()中设置state为TCP_SYN_RECV,在tcp_child_process() -&amp;amp;amp
Linux网络协议栈之套接字缓冲区
作者:bullbat         Linux网络协议栈是内核中最大的组件之一,由于网络部分应用的范围很广,也相对较热,该部分现有的资料很多,学起来也比较容易。首先,我们看看贯穿网络协议栈各层的一个最关键数据结构——套接字缓冲区(sk_buff结构)。         一个封包就存储在这个数据结构中。所有网络分层都会使用这个结构来存储其报头、有关数据的信息,以及用来协调工作的其他内部信息。在
理解TCP/IP协议栈(1)
翻译自: https://www.cubrid.org/blog/understanding-tcp-ip-network-stack目前我们的internet服务都是基于TCP/IP来开发的, 无法想像没有TCP/IP的Internet会是什么样子. 因此无论是在逻辑调整, 故障排除,还是发现新技术方面, 理解网络中数据的传输原理会帮助我们多方面提高服务性能表现. 本文会介绍基于Linux系统及
Linux 内核网络协议栈 ------ tcp_ack 函数处理接收到的ACK包之后
注意 tcp_ack 是来处理接收到的ACK的,那么到底怎么去做呢?看下面: 先还上把tcp_sock的结构放在这里,下面一些数据的分析需要用到: struct tcp_sock { /* inet_connection_sock has to be the first member of tcp_sock */ struct inet_conn
tcp/ip协议栈 -- linux内核
一.linux内核网络栈代码的准备知识   1. linux内核ipv4网络部分分层结构:   BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件   主要有:/net/socket.c /net/protocols.c etc INET socket层:BS
VPP和Linux内核协议栈通信的方法
背景介绍     基于VPP开发一款网络设备,除使用VPP框架实现端口数据报文转发外,还需要对设备进行配置和管理,比较常用的是要实现ssh、web等相关服务,另外,由于VPP并未实现dhcp server的功能,控制面可能还需移植isc-dhcp类似的dhcp server。相关的用户态程序是基于Linux内核的socket来收发包的,因此,需要实现VPP和Linux内核协议栈通信的方法,可以将...
Linux协议栈(8)——传输层实现
Linux协议栈(8)——传输层实现ip_local_deliver负责分发IP分组传输的数据内容。基于IP的主要传输协议分别是UDP和TCP。处理函数分别是udp_rcv和tcp_rcv。1.1.1.1  接收1.1.1.1.1          tcp接收函数tcp_v4_rcv()定义在net/ipv4/tcp_ipv4.c中负责接收来自网络层的TCP数据包。相比UDP,TCP在内核中实现要...
BZOJ2865 字符串识别
传送门 题意: XX在进行字符串研究的时候,遇到了一个十分棘手的问题。 在这个问题中,给定一个字符串S,与一个整数K,定义S的子串T=S(i, j)是关于第K位的识别子串,满足以下两个条件: 1、i≤K≤j。 2、子串T只在S中出现过一次。 例如,S=“banana”,K=5,则关于第K位的识别子串有&quot;nana&quot;,“anan”,“anana”,“nan”,“banan&quot;和&quot;banana”。 现在,...
Linux 内核网络协议栈 ----- Linux 内核路由机制(一) (2.6.25)
内核的路由部分是是网络中重要部分,目前在Linux内核中默认的路由查找算法使用的是Hash查找,所以你会看到很多的数据结构是XXX_hash什么之类(例如fn_hash)。Linux内核从2.1开始就支持基于策略的路由,那么什么是基于策略的路由呢?我们一般的最基本的路由转发是考虑IP包的目的地址,但是有些时候不仅仅是这些,还有例如IP协议,传输端口等之类的考虑因素,所以采用所谓基于策略的路由。
LINUX网络协议栈--UDP
开场白 传输层常见的两大协议TCP和UDP,TCP太复杂,涉及到拥塞控制的很多内容,在《Linux内核源码剖析-TCP/IP实现》下册中也花费了大量的笔墨来讲述。 咋们先来看看一个简单的UDP。 定位 每篇文章肯定有一个定位,不可能面面俱到,如果这篇的定位是你需要的,祝你能够学到一些新的知识 (1)UDP数据发送和接收的简要流程 (2)不涉及太多细节。 (3)力求了解UDP在
软件测试的三个棘手问题
    我們都知道,「測試」是產品的真正試煉場;即使對一項軟體開發工程投注了龐大的心血,如果測試不合格還是枉然,因為客戶要的是「合格產品」,而不是你的「努力過程」。所以測試的重要性應該不必贅述。只不過,「知道」跟「做得到」是兩回事,就如同我們都知道應該多吃青菜水果,然而還是有許多人每餐都是大魚大肉。     許多人談到測試,總是有滿腹牢騷,因為它似乎是一件「知易行難」的麻煩工作。為何測試總是做
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据学习指引 围棋赛事请一个人工智能费用

相似问题

0
一个棘手的内核协议栈问题,请大师进来指引
1
arcmap 一个图斑如何在属性表中对应多条字段,或者在点击图斑时显示多个信息,并且能统计计算信息数据
0
有关霍夫变换的问题,被导师问了后不理解
5
一个关于字符串函数问题
0
linux 创建消息队列问题:每次 msgget IPC_PRIVATE获取到的id差32769
2
opencv批量处理图片出现的一个警告
4
求助,求助 问一下大佬们为什么C语言中加了一个 stdlib.h 头文件反而错误运行不了
3
为什么要用&,是什么意思(complex是一个结构体类型)
3
【c语言】:一个简单递归算法的调用:1020个西瓜几天后能卖完
2
如何解决数组的空间不足的问题
1
Linux下select函数关于集合和返回值的问题
1
C#创建一个公共类,但是为什么只能引用其中的static方法,而不能调用public方法?
4
请教一下51单片机电热丝的问题
0
如何使用raw_socket处理tcp包,并且不被内核协议栈干扰
1
Visual studio 2017 不知道为什么C++编译任意一段代码都调试不了,出现一个弹窗不知道啥原因。
0
我的这个修改函就是把文件的信息改成一堆乱码,文件的信息存infor txt ,需要自己建立一个 ?
1
最近在做一个项目,然后发现了一个奇怪的问题,让我百思不得其解,看来我对C++的理解还是太年轻了
1
这个怎么怎么都插不进去,哪里有问题?
4
问一个很愚蠢的基础问题,p=p->next链表循环里,为什么这样不会覆盖掉链表的值啊
2
如何将一个数组中的元素按规则赋值给其他数组