系统相关
首页 > 系统相关> > Linux Kernel TCP/IP Stack|Linux网络硬核系列

Linux Kernel TCP/IP Stack|Linux网络硬核系列

作者:互联网

 

 介绍Linux网络技术中最核心的部分--TCP/IP协议栈 。

我们先看一下抽象的网络协议栈模型

 

 再按分层思想看Linux内核协议栈实现框架

 

 1. socket layer

 

 socket框架

 

 

2. tcp/udp layer

 

 

L3 IP layer

 

 1. IP handle

 

 

2. netlfilter框架

 

 

5个HOOK点:

PREROUTING:数据包进入路由表之前

INPUT:通过路由表后目的地为本机

FORWARD:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外发送

POSTROUTIONG:发送到网卡接口之前。

 

每个HOOK点都会执行一些函数,大致分为下面几个表:

NAT表: 用于实现nat功能,端口映射,地址映射等

mangle表: 用来修改报文,例如更改IP标头的TOS / DSCP / ECN位

filter表:用来过滤报文

raw表:用来提前标记报文不走一些流程(比如不需要建会话)

conntrack表:连接跟踪表,跟踪连接会话,用来实现状态防火墙,NAT功能的基础,可扩展更多功能。

核心处理流程

 

 

主要功能

3. 路由系统

协议栈处理位置

 

 路由子系统架构

 

 

主要功能

4. 邻居系统

 

 

主要功能

L2 link layer(driver)

 

 

1. Link layer

Bridge

 

 

主要功能

链路协议

 

 Packt Type

 

 

主要功能

 

Traffic control

 

 

主要功能

 

2. hardware driver layer

 

 

协议栈文件系统

Proc FileSystem

          core

Sys FileSystem

主要功能

最后

整体架构图

 

标签:协议,layer,socket,Kernel,IP,报文,TCP,Linux,硬核
来源: https://www.cnblogs.com/windyrainy/p/16663141.html