网络子系统85_inet协议族-l3向上
// ip数据报向本地传递 // 调用路径:ip_rcv->dst_input->...->ip_local_deliver 1.1 int ip_local_deliver(struct sk_buff *skb) { //如果ip数据报被分片,则重组 if (ip_is_fra...
网络子系统79_inet协议族
// inet协议族默认支持的协议类型 // 在inet_init中,通过inet_register_protosw注册到inetsw邻接表 1.1 static struct inet_protosw inetsw_array[] = { //流类型 { .type = SOCK_STREAM, ...
网络子系统55_ip协议分片重组_加入ipq
//ip分片加入到正确的ipq结构 //调用路径:ip_defrag->ip_frag_queue // 处理过程: // 1.正在被释放的ipq,不处理新加入的分片(ipq正在被释放由last_in设置COMPLETE指出) // 2.处理分片的合法性 // 2.1当该封包为最后一个分片时 ...
网络子系统54_ip协议分片重组_定位ipq
// 为分片确定正确的ipq结构 // 通过5元组定位ipq,成功后,递增ipq引用计数,返回ipq // 定位5元组 // 1.<id, 源ip, 目的ip, l4协议> 可通过ip报文获取 // 2.user 通过ip_defrag给出,指出重组是由谁发起的,最常见的时IP_DEFR...
网络子系统53_ip协议分片重组_内存阈值
//调用路径:ip_defrag->ip_evictor // 分片重组时,可使用内存上下限: // 1.sysctl_ipfrag_high_thresh 可用内存上限 // 2.sysctl_ipfrag_low_thresh 内存超过上限后,需要释放内存到此限 1.1 static vo...
网络子系统51_ip协议报文分片
//ip分片 // 快速路径的条件: // 1.skb // 1.skb的数据长度(主缓存区+frags缓存区)小于输出路径的mtu // 2.skb的数据长度对齐到8字节的边界 // 3.skb没有被分片 // 4.skb没有被共享 // 2.skb->frag_list // 1.长度小于...
网络子系统50_ip协议选项填充
//调用路径ip_queue_xmit->ip_options_build //函数主要任务: // 1.非分片ip报文,向ip报头填充ip选项,ip选项在创建socket时设置 // 2.分片ip报文,将record route选项,time stamp选项设置为NOP // daddr,i...
网络子系统49_ip协议报头id选取
//more = skb_shinfo(skb)->tso_segs,由tcp传递 1.1 static inline void ip_select_ident_more(struct iphdr *iph, struct dst_entry *dst, struct sock *sk, in...
网络子系统48_ip协议数据帧的发送
//ip协议与l4协议接口,l4通过此接口向下l3传递数据帧 //函数主要任务: // 1.通过路由子系统路由封包 // 2.填充l3报头 // 3.ip分片 // 4.计算校验和 // 5.衔接邻居子系统,向下层传送封包。 1.1 int ip_queue_xmit(struct sk_buff ...
网络子系统46_ip协议数据帧的转发
// ip协议数据转发 // ip_forward以回调函数的形式,保存在skb->dst->input,skb->dst在ip_route_input路由封包时被设置 // 调用路径:ip_rcv->ip_rcv_finish->dst_input->(skb-...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。