TCPDUMP

DPDK(二):准备知识9 --- Linux内核收报流程

不问归期 提交于 2020-11-16 05:26:03
原文:https://segmentfault.com/a/1190000008836467 原文讲的很好,描述了大体的流程。 第一步:网卡到内存 网卡需要有驱动才能工作,驱动是加载到内核中的模块,负责衔接网卡和内核的网络模块,驱动在加载的时候将自己注册进网络模块,当相应的网卡收到数据包时,网络模块会调用相应的驱动程序处理数据。 1: 数据包从外面的网络进入物理网卡。如果目的地址不是该网卡,且该网卡没有开启混杂模式(是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它,混杂模式是为网络分析而提供的),该包会被网卡丢弃。 2: 网卡将数据包通过DMA的方式写入到指定的内存地址,该地址由网卡驱动分配并初始化。注: 老的网卡可能不支持DMA,不过新的网卡一般都支持。 3: 网卡通过硬件中断(IRQ)通知CPU,告诉它有数据来了。 4:CPU根据中断表,调用已经注册的中断函数,这个中断函数会调到驱动程序(NIC Driver)中相应的函数。 5: 驱动先禁用网卡的中断,表示驱动程序已经知道内存中有数据了,告诉网卡下次再收到数据包直接写内存就可以了,不要再通知CPU了,这样可以提高效率,避免CPU不停的被中断。 6: 启动软中断。这步结束后,硬件中断处理函数就结束返回了。由于硬中断处理程序执行的过程中不能被中断,所以如果它执行时间过长,会导致CPU没法响应其它硬件的中断

kafka协议抓包分析

只愿长相守 提交于 2020-11-16 00:10:49
抓心跳包: sudo tcpdump tcp -i lo0 -A -x dst port 9092 and greater 90 and less 100 53-56字节0000 0028 四个字节代表数据包长度,这里抓取的是心跳包协议,其长度为40(即0x0028) 57-58字节000c位置的2个字节代表协议类型,这里是12号协议心跳协议。 59-60两字节代表api版本类型,这里代表version 1 来源: oschina 链接: https://my.oschina.net/u/3690589/blog/3051465

如何在SSH连接Linux系统的环境下使用wireshark抓包?

久未见 提交于 2020-11-11 20:21:40
TSINGSEE青犀视频云边端架构EasyNVR、EasyDSS、EasyGBS等都是有两种操作系统的版本,一种是linux,一种是windows。而大多数开发者用户都会使用linux版本进行安装。 对于安装部署出现的问题,TSINGSEE青犀视频团队研发的经常为客户远程调试,通常都会通过抓取网络包的方式进行排查。当我们在使用SSH连接远程客户服务器的时候可以有两种方式进行抓包,分别是: 通过tcpdump进行抓包,对于tcpdump抓包,保存到服务器,在拷贝到本地进行分析。 通过wireshark进行抓包,对于ssh连接后,如何使用wireshark? 本文我们就简单介绍一下如何在SSH连接linux的情况,使用wireshark进行抓包。 1、首先确认安装服务器是否已经安装wireshark,如果没有安装,需要先安装 yum install wireshark 2、安装完成后,执行wireshark 3、查询wireshark需要的依赖 yum search wireshark 4、安装gnome yum install wireshark-gnome.x86_64 此时wireshark命令可以找到执行,但是无法显示。这里可以在windows上安装xMing来解决。 5、下载xming https://xming.en.softonic.com/download

Linux Tcp 内核协议栈学习三种武器 之 Packet Drill

99封情书 提交于 2020-11-11 19:45:52
作者简介 作者Liam,海外老码农,对应用密码学、CPU微架构、高速网络通信等领域都有所涉猎。 Linux阅码场原创文章 Linux TCP 内核协议栈是一个非常复杂的实现, 不但沉淀了过去20多年的设计与实现,同时还在不停的更新。相关的RFC与优化工作一直还在进行中。如何研究和学习Linux TCP内核协议栈这样一块硬骨头就成了一大难题。 当然最重要也是最基本的还是要阅读相关的RFC和内核中的代码实现。这个是最最基本的要求。想要驯服TCP 内核协议栈这样的monster 仅仅浏览和静态分析代码是完全不够的。因为整个实现中充斥着各种边界条件和异常的处理(这里有部分原因是因为TCP协议本身设计造成的),尤其是TCP是有状态的协议, 很多边界条件的触发需要一系列的报文来构成,同时还需要满足时延等其它条件。 幸运的是Google在2013年替大家解决了这个难题。Google 在2013 年发布了TCP 内核协议栈 测试工具 Packet Drill。这个工具是名副其实,大大的简化了学习和测试TCP 内核协议栈的难度。基本可以随心所欲的触摸TCP 内核协议栈的每个细节。Google的这件工具真是造福了人类。PacketDrill GitHub link: https://github.com/google/packetdrill/ 使用Packet Drill,

查漏补缺:166个最常用的Linux命令,哪些你还不知道?

狂风中的少年 提交于 2020-11-07 19:33:07
作为一个程序员,恐怕从你刚踏入工作岗位之后,服务器这个东西就和你形影不离,这也就导致你从此就开始和Linux相依为伴。 linux命令是对Linux系统进行管理得命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。 ps:吹个牛逼,有的朋友会跟我说,图形化界面用着多舒服啊,和windows一样多方便,但是我从开始接触Linux就一直只是用命令行操作,说实话,抛开mini版本和DVD版本对pc端内存占用情况不说,单纯的命令行也加深了我对于文件系统的不少认知,并且操作命令总感觉有一种大神的感觉,不需要鼠标,直接手指在键盘上飞舞,多帅气,就是时间长了会很累 另外,给大家说一个我一直坚持的习惯,整理思维导图,就像Linux命令,我在学习的时候觉得自己学的挺不错的,但是后来工作了,发现好多东西都忘了,在重新学习之后,我就整理了一套思维导图,虽然挺费劲的,并且后期很多知识点都烂熟于心了,但是,当真的有事情的时候,这样一张思维导图会帮你解决不少问题 好了,话归整体,对于常用Linux命令,我们来看看吧,有不足的,欢迎大家评论区讨论 个人公众号:Java架构师联盟,每日更新技术好文 线上查询及帮助命令(2个) man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help

Keepalived+LVS实现高可用负载均衡Web集群

…衆ロ難τιáo~ 提交于 2020-11-06 02:27:58
一 、原理及简介: 1.1 Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案。Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。 后来Keepalived又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,实现高可用性,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能,下面介绍一下VRRP协议实现的过程。 上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)和内核空间(kernel space)。 内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。 用户空间: WatchDog

Linux工具

若如初见. 提交于 2020-10-28 13:18:03
Linux工具 Linux下还是有很多超棒的开发工具的。 在Linux日常使用中,最常用的命令自然是sudo, ls, cp, mv, cat等,但作为后台开发者,上述命令远远不够。从我的理解来看,合格的C/C++开发者至少需要从开发及调试工具、文件处理、性能分析、网络工具四个方面针对性使用一些开发工具。这里我罗列了一些,大部分都是开发中经常需要使用的命令,有些功能比较简单的命令我会给出一些基本用法,有些本身自带体系(比如vim, gdb等)的命令只能附上链接了。 开发及调试工具介绍了从“编辑 -> 编译 -> 分析目标文件 -> 追踪调用过程”的全套命令,文件处理部分介绍了查找、统计、替换等基本文本操作命令,性能分析介绍了查看进程信息、CPU负载、I/O负载、内存使用情况等基本命令,网络工具介绍了可以查看“链路层 -> 网络层 -> 传输层 -> 应用层”信息的工具。除此以外,其他命令中也列出了开发者经常会用到的一些命令,基本可以满足日常开发需要。 目录 Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 开发及调试 文件处理 性能分析 网络工具 其他 开发及调试 编辑器:vim 编译器:gcc/g++ 调试工具:gdb 查看依赖库:ldd 二进制文件分析:objdump ELF文件格式分析:readelf 跟踪进程中系统调用

计算机网络1

社会主义新天地 提交于 2020-10-27 08:37:50
计算机网络 重点在TCP/IP协议和HTTP协议。 目录 Chapter 1 Chapter 2 Chapter 3 网络层(IP) 传输层(TCP/UDP) 应用层(HTTP) 内容 网络层(IP) 待补充 传输层(TCP/UDP) ISO七层模型中表示层和会话层功能是什么? 表示层:图像、视频编码解,数据加密。 会话层:建立会话,如session认证、断点续传。 描述TCP头部? 序号(32bit):传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A -> B且ISN = 1024,第一段数据512字节已经到B,则第二段数据发送时序号为1024 + 512。用于解决网络包乱序问题。 确认号(32bit):接收方对发送方TCP报文段的响应,其值是收到的序号值 + 1。 首部长(4bit):标识首部有多少个4字节 * 首部长,最大为15,即60字节。 标志位(6bit): URG:标志紧急指针是否有效。 ACK:标志确认号是否有效(确认报文段)。用于解决丢包问题。 PSH:提示接收端立即从缓冲读走数据。 RST:表示要求对方重新建立连接(复位报文段)。 SYN:表示请求建立一个连接(连接报文段)。 FIN:表示关闭连接(断开报文段)。 窗口(16bit):接收窗口。用于告知对方

Linux常用命令

限于喜欢 提交于 2020-10-27 08:37:03
参考 linw7的github 《鸟哥的Linux私房菜》 一.文件管理 1.文件查找:find 2.文件拷贝:cp 3.打包解包:tar 二.文本处理 1.(显示行号)查看文件:nl 2.文本查找:grep 3.排序:sort 4.转换:tr 5.切分文本:cut 6.拼接文本:paste 7.统计:wc 8.数据处理:sed 9.数据处理:awk 三.性能分析 1.进程查询:ps 2.进程监控:top 3.打开文件查询:lsof 4.内存使用量:free 5.shell进程的资源限制:ulimit 四.网络工具 1.网卡配置:ifconfig 2.查看当前网络连接:netstat 3.查看路由表:route 4.检查网络连通性:ping 5.转发路径:traceroute 6.网络Debug分析:nc 7.命令行抓包:tcpdump 8.域名解析工具:dig 9.网络请求:curl 五.开发及调试 1.编辑器:vim 2.编译器:gcc和g++ 3.调试工具:gdb 4.查看依赖库:ldd 5.二进制文件分析:objdump 6.ELF文件格式分析:readelf 7.跟踪进程中系统调用:strace 8.跟踪进程栈:pstack 9.进程内存映射:pmap 六.其他 1.终止进程:kill 2.修改文件权限:chmod 3.创建链接:ln 4.显示文件尾:tail 5

Linux最常用150个命令汇总

余生长醉 提交于 2020-10-26 04:11:46
Linux最常用150个命令汇总 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp 全拼copy,其功能为复制文件或目录。 find 查找的意思,用于查找目录及目录下的文件。 mkdir 全拼make directories,其功能是创建目录。 mv 全拼move,其功能是移动或重命名文件。 pwd 全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename 用于重命名文件。 rm 全拼remove,其功能是删除一个或多个文件或目录。 rmdir 全拼remove empty directories,功能是删除空目录。 touch 创建新的空文件,改变已有文件的时间戳属性。 tree 功能是以树形结构显示目录下的内容。 basename 显示文件名或目录名。 dirname 显示文件或目录路径。 chattr 改变文件的扩展属性。 lsattr 查看文件扩展属性。 file 显示文件的类型。 md5sum 计算和校验文件的MD5值。