参考文献:《深入理解linux网络技术内幕》 《精通linux内核网络》 代码内核版本:3.1.68 ............................................................................................... 1. ...
分类:
Web程序 时间:
2020-02-02 11:54:53
阅读次数:
118
路由表基本概念 1、路由是由多个不同的数据结构的组合来描述的,每个数据结构代表路由信息的不同部分。例如,一个fib_node对应一个单独的子网,一个fib_alias对应一条路由。这样做的原因是只需通过部分字段可以区分多条路由。路由子系统不是维护一个庞大而臃肿的结构而是将路由分散为多个片段,这样更容 ...
分类:
系统相关 时间:
2017-07-05 15:24:31
阅读次数:
265
一、Linux内核中路由相关的主要数据结构 每个单独的子网对应一个fib_node实例,用变量fn_key识别,它的值就表示该子网。例如,对于子网10.1.1.0/24,fn_key为10.1.1。目的子网相同的不同路由(即fn_key相同)共享同一个fib_node。每条路由有自己的fib_ali ...
分类:
系统相关 时间:
2017-04-25 16:40:30
阅读次数:
169
书单 《TCP/IP详解卷一》 《TCP/IP详解卷二》 《TCP/IP协议族》 《Wireshark 数据包分析实战》 《TCP/IP协议原理与应用》 《深入理解linux网络技术内幕》 《linux网络编程》 数据包分析工具 tcpdump http://www.pcapr.net :pcapr ...
分类:
其他好文 时间:
2016-12-30 10:52:18
阅读次数:
175
本文讨论IPv4的路由子系统。(IPv6对路由的处理不同)。
基本概念
路由子系统工作在三层,用来转发入口流量。
路由子系统主要设计 路由器、路由、路由表等概念。
路由器: 配备多个网络接口卡(NIC),并且能利用自身网络信息进行入口流量转发的设备。
路由: 流量转发,决定目的地的过程
路由表:转发信息库,该库中储存路由需要本地接收还是转发的信息, 以及转发流量时所需要的信息。(即...
分类:
系统相关 时间:
2015-06-11 16:53:33
阅读次数:
208
我们简单了解下L4层协议和Raw IP是如何与IP层进行交互的。
L4层协议
L4层协议可以通过静态编译和模块配置两种方式加入内核。
比较重要的协议如TCP、UDP、ICMP通常是静态编译至内核。
一些不常用的或者比较特殊的协议,则是通过内核配置加入内核。如IGMP,SCTP,IPIP等等。
L4层协议的注册
L4层协议有net_protocol结构定义:
/* This is us...
分类:
系统相关 时间:
2015-05-18 14:43:46
阅读次数:
485
封包的分段和重组是IP协议最重要的工作之一。
IPv4报头中有一个len字段(用于表示报文的总长度,单位:字节)占16bit,因此,封包的最大尺寸定义为64K,(2^16/1024=64)。
但是,在实际网络传输中,没有几个网络接口能够传输64K这么大的封包,而是有一个MTU表示其最大传输单元。这样,当要传输的封包大于MTU时,就需要对封包进行分段。 这里需要说明,我们指的MTU,不仅...
分类:
系统相关 时间:
2015-05-18 12:59:18
阅读次数:
243
IP选项介绍
IP首部中有4bit用于表示首部长度,其单位是4个字节,所以,IP首部的最大长度是15*4=60字节(4bit最大可以表示到15),而IP固定首部的长度是20字节,所以一个IP首部最大允许有40字节长度的选项。
IP选项有两种格式 单字节和多字节
对于多字节选项,其长度有length字段标识,另外其Optiondata并不是从32bit的边界开始的。
Length...
分类:
系统相关 时间:
2015-05-14 18:48:24
阅读次数:
283
报文传输,指的是报文离开本机,发往其他系统的过程。
传输可以由L4层协议发起,也可以由报文转发发起。
在深入理解Linux网络技术内幕——IPv4 报文的接收(转发与本地传递)一文中,我们可以看到,报文转发最后会调用dst_output与邻居子系统进行交互,然后传给设备驱动程序。 这里,我们从L4层协议发起的传输,最后也会经历这一过程(调用dst_output)。本文讨论的是L4层协议发起的传...
分类:
系统相关 时间:
2015-05-14 16:35:34
阅读次数:
511
我们知道,报文经过网卡驱动处理后,调用net_receive_skb传递给具体的协议处理函数,对于IPv4报文来说,其协议处理函数就是ip_rcv了,ip_rcv在进行一些健康检查等操作后,会调用ip_rcv_finish来处理报文。这也是IPv4协议对报文接收处理的开始。
我们先看下ip_rcv_finish源代码:
本地传递
转发
报文转发有下面几个步骤完成:
1. 处理IP选项
2. 确定封包可以被转发
3.递减封包头部的TTL字段,如果TTL字段为0,则丢弃该封包
4.根据路径相关MTU,在必要...
分类:
系统相关 时间:
2015-05-14 10:03:41
阅读次数:
222