
tcp/ip
菜鸟别浪
联系方式:hzj_smile@126.com
展开
-
网络收包流程-报文从网卡驱动到网络层(或者网桥)的流程(非NAPI、NAPI)(一)
1.上图(网上的没我这个详细,哈哈):2.具体说明NAPI和非NAPI的区别:(1) 支持NAPI的网卡驱动必须提供轮询方法poll()。(2) 非NAPI的内核接口为netif_rx(),NAPI的内核接口为napi_schedule()。(3) 非NAPI使用共享的CPU队列softnet_data->input_pkt_queue,NAPI使用设备内存(或者设备驱动程序的...原创 2019-08-26 20:23:05 · 1664 阅读 · 0 评论 -
网络收包流程-软中断中process_backlog和poll方式处理流程(二)
在硬中断中触发了软中断后,最终会调用软中断处理函数 net_rx_action,注意:硬中断流程触发软中断后退出中断上下文,但是并不会立刻进入软中断,具体的实现需要了解软中断处理流程。1.软中断处理函数net_rx_action具体实现详解:static void net_rx_action(struct softirq_action *h){ struct ...原创 2019-09-10 18:51:24 · 2703 阅读 · 0 评论 -
网络收包流程-网络层处理流程ip_rcv(五)
报文提交给内核协议栈处理后,最终会调用到__netif_receive_skb_core函数,如果报文没有被网桥处理函数rx_handler消费掉,最终会交给ptype_base中注册的协议处理,包括内核注册的协议,也包括raw socket等创建的协议处理。本文将分析普通ipv4 报文的处理过程,处理入口函数为ip_rcv函数。主要调用流程:ip_rcv-->ip_...原创 2020-03-18 18:25:54 · 3789 阅读 · 1 评论 -
网络丢包排查思路
网络丢包排查思路1.防火墙确认:看防火墙是否配置了DROP特定端口范围的可能性方法:查看iptables filter表,确认是否有相应规则会导致此丢包行为,命令:sudoiptables-save-tfilter2.连接跟踪表溢出除了防火墙本身配置DROP规则外,与防火墙有关的还有连接跟踪表nf_conntrack,Linux为每个经过内核网络栈的数据包,生成一个新的连接记录项,...原创 2020-03-18 18:28:56 · 7551 阅读 · 1 评论 -
网路收包流程-网桥的处理流程(br网桥)(四)
目录1.网桥收发报文模型2.网桥的初始化和相关数据结构关系 1)通过br_init函数注册和初始化网桥功能 2) 添加一个桥设备-br_add_bridge 3)给网桥添加端口-br_add_if 4)数据结构3.网桥收包处理流程-br_handle_frame函数1)br_handle_frame函数2)br_han...原创 2020-02-15 15:07:33 · 6024 阅读 · 0 评论 -
网络收包流程-收包函数__netif_receive_skb的核心函数__netif_receive_skb_core(三)
调用关系:netif_receive_skb-->netif_receive_skb-->netif_receive_skb_internal(->__netif_receive_skb)-->__netif_receive_skb_core1.netif_receive_skb_internal的实现static int netif_receive_skb_int...原创 2020-02-15 14:39:57 · 6278 阅读 · 1 评论 -
mac头和ip头部详解
报文封装整体结构mac帧头定义 /*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6]; //目的mac地址 char m_cSrcMacAddress[6]; //源mac地址 short m_cType; //上一层协议类型,如0x0...原创 2019-08-18 14:26:03 · 9652 阅读 · 0 评论 -
sk_buff详解
sk_buff 整理笔记(一、数据结构)sk_buff整理笔记(二、操作函数)sk_buff整理笔记(三、内存申请和释放)sk_buff整理笔记(四、克隆与复制)sk_buff整理笔记(五、队列管理函数)from:https://blog.youkuaiyun.com/YuZhiHui_No1...原创 2019-09-08 10:38:45 · 7326 阅读 · 1 评论 -
TCP/IP源码分析
struct s_mbuf与struct sk_buffstruct sk_buff与socket内核中的UDP socket流程(1)内核中的UDP socket流程(2)——API “sys_socket”内核中的UDP socket流程(3)——sock_create内核中的UDP socket流程(4)——sock_create内核中的UDP socket流程(...原创 2019-08-25 15:42:14 · 2113 阅读 · 0 评论 -
tcp传输控制协议-报文格式
tcp传输控制协议linux网络协议基础支持 参考:https://www.cnblogs.com/zxouxuewei/p/5380601.html1.TCP的首部 T C P数据被封装在一个I P数据报中: T C P首部的数据格式。如果不计任选字段,它通常是 2 0个字节。/*TCP头定义,共20个字节*/typedef struct _TCP_H...原创 2018-08-09 19:26:41 · 605 阅读 · 0 评论 -
TCP连接的建立与终止
TCP连接的建立与终止1.tcpdump的输出T C P报文段的tcpdump输出:对于T C P段,每个输出行开始按如下格式显示: 源 > 目的: 标志这里的标志代表 TCP首部中6个标志比特中的 4个: 看到了 S、 F和句点“.”标志符。其他的两个标志(R和P)。TCP首部中的其他两个标志比特—ACK 和 URG—tcpdump...原创 2018-08-09 19:23:43 · 365 阅读 · 0 评论 -
tcp/ip发送接收总体框架
tcp/ip发送接收总体框架 对于接收到的报文,如果不被丢弃、不被网桥转发,会调用netif_receive_skb()提交给IP层;而对于IP层向外发送的报文,则通过调用dev_queue_xmit()...原创 2018-08-09 19:09:48 · 753 阅读 · 0 评论