今天給大家介紹Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議棧 。
我們先看一下抽象的網(wǎng)絡(luò)協(xié)議棧模型
再按分層思想看Linux內(nèi)核協(xié)議棧實(shí)現(xiàn)框架
1. socket layer
socket對(duì)象層次結(jié)構(gòu)
socket系統(tǒng)調(diào)用(socket,bind,listen,accept,send,recv等)
協(xié)議棧sock抽象適配層
tcp/udp/icmp/raw/packet/netlink/。。. socket管理
socket選項(xiàng)
2. tcp/udp layer
TCP報(bào)文收發(fā)
TCP Socket連接管理
TCP協(xié)議狀態(tài)機(jī),定時(shí)器處理
TCP滑動(dòng)窗口,擁塞控制框架
1. IP handle
報(bào)文分片和重組
IP協(xié)議字段處理,IP選項(xiàng),Qos,TTL,校驗(yàn)等處理
報(bào)文接收(解封裝)和發(fā)送(IP協(xié)議封裝,提供給上層接口)
組播,ICMP協(xié)議處理等
2. netlfilter框架
5個(gè)HOOK點(diǎn):
PREROUTING:數(shù)據(jù)包進(jìn)入路由表之前
INPUT:通過(guò)路由表后目的地為本機(jī)
FORWARD:通過(guò)路由表后,目的地不為本機(jī)
OUTPUT:由本機(jī)產(chǎn)生,向外發(fā)送
POSTROUTIONG:發(fā)送到網(wǎng)卡接口之前。
每個(gè)HOOK點(diǎn)都會(huì)執(zhí)行一些函數(shù),大致分為下面幾個(gè)表:
NAT表: 用于實(shí)現(xiàn)nat功能,端口映射,地址映射等
mangle表: 用來(lái)修改報(bào)文,例如更改IP標(biāo)頭的TOS / DSCP / ECN位
filter表:用來(lái)過(guò)濾報(bào)文
raw表:用來(lái)提前標(biāo)記報(bào)文不走一些流程(比如不需要建會(huì)話)
conntrack表:連接跟蹤表,跟蹤連接會(huì)話,用來(lái)實(shí)現(xiàn)狀態(tài)防火墻,NAT功能的基礎(chǔ),可擴(kuò)展更多功能。
主要功能
無(wú)狀態(tài)數(shù)據(jù)包過(guò)濾(IPv4和IPv6)
有狀態(tài)的數(shù)據(jù)包過(guò)濾(IPv4和IPv6)
各種網(wǎng)絡(luò)地址和端口轉(zhuǎn)換,例如NAT / NAPT(IPv4和IPv6)
靈活可擴(kuò)展的基礎(chǔ)架構(gòu)
第三方擴(kuò)展的API
3. 路由系統(tǒng)
FIB(The Forwarding Information Base )
策略路由 Policies
路由匹配HASH,LC-tries等
主要功能
三層路由轉(zhuǎn)發(fā)
4. 鄰居系統(tǒng)
ARP協(xié)議(IPV4),NDP協(xié)議(IPV6)
鄰居表新建,更新,老化機(jī)制,狀態(tài)轉(zhuǎn)化等
API接口
主要功能
獲取mac地址
1. Link layer
FDB(macforwarding database)管理
port,bridge對(duì)象管理和報(bào)文接收,轉(zhuǎn)發(fā)
STP,vlan協(xié)議相關(guān)處理
主要功能
實(shí)現(xiàn)二層mac轉(zhuǎn)發(fā)
鏈路協(xié)議
IEEE 802協(xié)議族(STP,VLAN,以太網(wǎng),無(wú)線wifi,令牌環(huán)等)
Packt Type
Protocol handler
Packet_type list
主要功能
鏈路層報(bào)文協(xié)議分發(fā)
Traffic control
qdisc :通過(guò)隊(duì)列將數(shù)據(jù)包緩存起來(lái),用來(lái)控制網(wǎng)絡(luò)收發(fā)的速度
class :用來(lái)表示控制策略
filter :用來(lái)將數(shù)據(jù)包劃分到具體的控制策略主要功能
提供的流量限速、整形和策略控制機(jī)制(Qos)
2. hardware driver layer
網(wǎng)絡(luò)設(shè)備管理
RPS,RFS,XPS,GRO,GSO,TSO等優(yōu)化特性
網(wǎng)卡軟中斷收發(fā),NAPI,DMA
支持各種網(wǎng)卡驅(qū)動(dòng)實(shí)現(xiàn)
協(xié)議棧文件系統(tǒng)
Proc FileSystem
/proc/net
/proc/sys/net
ipv4
core
Sys FileSystem
/sys/class/net/ethx
主要功能
提供協(xié)議棧相關(guān)配置查詢和設(shè)置
編輯:jq
-
IPv6
+關(guān)注
關(guān)注
6文章
726瀏覽量
62307 -
ARP協(xié)議
+關(guān)注
關(guān)注
0文章
10瀏覽量
7109 -
NDP
+關(guān)注
關(guān)注
0文章
7瀏覽量
1629
原文標(biāo)題:Linux 網(wǎng)絡(luò)硬核系列:TCP/IP 協(xié)議棧
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
飛凌嵌入式ElfBoard-Linux系統(tǒng)基礎(chǔ)入門-網(wǎng)絡(luò)相關(guān)shell命令之網(wǎng)絡(luò)基礎(chǔ)知識(shí)
rtthread網(wǎng)絡(luò)接口設(shè)備 輕量級(jí)tcp/ip 堆棧 這兩個(gè)沖突嗎?
GraniStudio : TCP/IP(Socket)協(xié)議深度剖析
什么是Modbus TCP協(xié)議
Linux網(wǎng)絡(luò)管理的關(guān)鍵技術(shù)和最佳實(shí)踐
CC\\-Link IE轉(zhuǎn)Modbus TCP:風(fēng)電設(shè)備通信的“雙語(yǔ)模式”
RDMA簡(jiǎn)介2之A技術(shù)優(yōu)勢(shì)分析
51+單片機(jī)TCP-IP+協(xié)議棧ZLIP源碼
Modbus TCP轉(zhuǎn)Profibus DP主站網(wǎng)關(guān):跨協(xié)議集成的核心樞紐
RT-Thread Ethernet/IP 協(xié)議技術(shù)實(shí)踐|技術(shù)集結(jié)
Linux ip命令常用操作
EtherNet/IP轉(zhuǎn)Modbus TCP:新能源風(fēng)電監(jiān)控與分析實(shí)用案例
EtherNet/IP轉(zhuǎn)Modbus TCP在新能源風(fēng)力發(fā)電場(chǎng)遠(yuǎn)程監(jiān)控與數(shù)據(jù)分析的配置案例

Linux網(wǎng)絡(luò)技術(shù)中最核心的部分--TCP/IP協(xié)議棧
評(píng)論