
网络
yldfree
有技术就是一切
展开
-
深入浅出TCP之半关闭与CLOSE_WAIT
转自:https://www.2cto.com/net/201309/243585.html(相关链接)深入浅出TCP之半关闭与CLOSE_WAIT 终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发...转载 2018-07-20 09:28:52 · 2756 阅读 · 0 评论 -
内核函数之fib_add_ifaddr()
在通过ifconfig eth0 xxx 修改ip地址的时候内核流程为:fib_inetaddr_notifier{}:fib_inetaddr_event->fib_add_ifaddr()在此我们已ifconfig eth0 192.168.11.103为例子看一下fib_add_ifaddr的执行过程//ifconfig eth0 192.168.11.103void ...原创 2018-09-30 16:37:53 · 2733 阅读 · 0 评论 -
ip分片重组函数-ip_frag_queue
在讲解此函数前 有个概念需要再次说明一下,即分片重叠的问题 比如在没有接收到新来的分片时候 分片队列的分布如下:当在接收到一个分片的时候,遍历链表(已经升序排序好)后找到插入位置后根据重叠与非重叠 有如下情况:(1)不发生重叠的正常情况:比如新分片的offset=300 len=99则插入情况如下:(2)发生前重叠比如新分片的offset=280 len=119则插...原创 2018-09-20 19:28:11 · 4412 阅读 · 0 评论 -
MTU 取值1500
假设网速100Mbps即每秒100M(100*1024*1024)比特位,注意不是字节是比特位,1字节=8比特位那么MTU为1500(字节)传输所需要的时间为:(公式:总比特位/每秒比特位 *1000=传输时间(ms))(1500*8)/100*1024*1024 *1000 约等于 0.114(ms)传输效率为:以太网头部+尾部大小是固定的(14+4=18)1500/(1500+18...原创 2018-09-20 10:18:26 · 7136 阅读 · 0 评论 -
SuperKing proc 文件系统调节参数介绍
转发自https://www.cnblogs.com/super-king/p/3296333.html/proc/net/*snmp文件Ip: ip项Forwarding : 是否开启ip_forward,1开启,2关闭DefaultTTL : IP默认ttl.InReceives : IP协议处理的数据包.InHdr...转载 2018-09-11 10:41:56 · 1830 阅读 · 0 评论 -
通用netlink的基本使用(3) NETLINK_GENERIC
消息的接收和发送内核代码#include <net/genetlink.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>enum { CTRL_ATTR_UNDE, CTRL_ATTR_ID, ...原创 2018-09-07 17:46:21 · 3540 阅读 · 1 评论 -
通用netlink的基本使用(2) NETLINK_GENERIC
根据family name 动态获得family id内核代码#include <net/genetlink.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>//接收消息后的回调函数int test_ctl_function(s...原创 2018-09-07 16:28:18 · 2449 阅读 · 0 评论 -
通用netlink的基本使用(1) NETLINK_GENERIC
内核部分#include <net/genetlink.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>int ctl_test_function(struct sk_buff *skb, struct genl_info *info...原创 2018-09-06 17:41:00 · 2562 阅读 · 0 评论 -
2.6.32 socket创建流程如下
先看总的函数调用流程 应用层 | socket层 | inet层 socket------->sys_socket---->sock_create->__sock_create--->inet_create int socket(int domain, int type, int pr...原创 2018-08-29 17:00:28 · 1935 阅读 · 0 评论 -
网络协议栈流程图 2.6.32内核
数据接收流程图 数据发送流程图netlink创建流程图网络初始化流程图socket创建流程图 Netfilter 钩子位置图 UDPv4发送数据 应用传输层 UDPv4传输层接收 来自网络层 e1000网卡驱动到网络层的流程 路由表fib 数据传输路线图 接收流程图 ...原创 2018-08-31 18:23:13 · 2418 阅读 · 0 评论 -
2.6.32系统调用accept内核执行流程(3)传输层 inet_csk_accept
在前文的inet_accept()分析中我们知道inet_accept会通过如下方式调用传输层的accpetint inet_accept(struct socket *sock, struct socket *newsock, int flags){ ... struct sock *sk2 = sk1->sk_prot->accept(sk1, fl...原创 2018-08-23 11:33:19 · 2350 阅读 · 0 评论 -
2.6.32系统调用accept内核执行流程(2)->inet层
accept在inet层执行inet_accept(1)调用传输层的接口获得sock{}结构变量(2)将sock{}与socket{}进行绑定(3)设置socket{}状态为SS_CONNECTEDint inet_accept(struct socket *sock, struct socket *newsock, int flags){ struct sock *sk1...原创 2018-08-09 20:07:00 · 1605 阅读 · 0 评论 -
2.6.32系统调用accept内核执行流程(1)
先看总体的流程可以看到在系统调用中可以看到两个 一个accept一个accept4两个的原型如下:int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen);int accept4(int sockfd, struct sockaddr *addr,socklen_t *addrlen, int flags)...原创 2018-08-09 19:31:10 · 2064 阅读 · 0 评论 -
linkwatch_fire_event()流程
void linkwatch_fire_event(struct net_device *dev){ /* 判断是否是紧急处理的事件 */ bool urgent = linkwatch_urgent_event(dev); /* 设置待处理事件标记 */ if (!test_and_set_bit(__LINK_STATE_LINKWATCH_PENDING, ...原创 2018-12-07 14:40:16 · 2225 阅读 · 0 评论