Linux TCP IP 協議棧資料傳送流程

2021-08-06 03:54:05 字數 2152 閱讀 4669

一.linux核心網路棧**的準備知識

1. linux核心ipv4網路部分分層結構

bsd socket層:這一部分處理bsd socket相關操作,每個socket在核心中以struct socket結構體現。這一部分的檔案主要有:/net/socket.c /net/protocols.c etc 

inet socket層:bsd socket是個可以用於各種網路協議的介面,而當用於tcp/ip,即建立了af_inet形式的socket時,還需要保留些額外的引數,於是就有了struct sock結構。檔案主要

有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc 

tcp/udp層:處理傳輸層的操作,傳輸層用struct inet_protocol和struct proto兩個結構表示。檔案主要有:

/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c /net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c /net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c

etc   

ip層:處理網路層的操作,網路層用struct packet_type結構表示。檔案主要有:/net/ipv4/ip_forward.c  ip_fragment.c ip_input.c ip_output.c etc. 

資料鏈路層和驅動程式:每個網路裝置以struct net_device表示,通用的處理在dev.c中,驅動程式都在/driver/net目錄下。

4.2資料傳送流程圖

4.3 資料接收流程圖

1.1 核心源**的組織

表1是本文要使用的linux net/4網路源**的,其中大部分位於目錄/usr/src/linux-2.2.x/net,列表如下,

插口層 

bsd socket 

/net/socket.c 

/net/protocols.c 

inet socket 

/ipv4/protocol.c 

/ipv4/af_inet.c 

/net/ipv4/core/sock.c 

協議層 

tcp/udp 

/net/ipv4/udp.c 

/net/ipv4/datagram.c 

/net/ipv4/tcp_input.c 

/net/ipv4//tcp_output.c 

/net/ipv4/tcp.c 

/net/ipv4/tcp_minisocks.c 

/net/ipv4/tcp_timer.c etc... 

ip /net/ipv4/ip_forward.c 

/net/ipv4/ip_fragment.c 

/net/ipv4/ip_input.c 

/net/ipv4/ip_output.c 

介面層 

ethernet 

......

1.2  linux中tcp/ip網路層次結構與實現 

linux通過一組相鄰的軟體層實現了tcp/ip模型,它由bsd socket層、inet socket層、傳輸層、網路層,和鏈路層構成。應用程式使用系統呼叫向核心函式傳遞引數和資料從而進入核心空間,由核心中註冊的核心函式對相應的資料結構進行處理。

linux的tcp/ip層次結構和實現方式如圖 1 所示。

linux TCP IP協議埠分配規則與分類

簡述 tcp ip 協議中的埠在報頭中佔2個位元組即16位,範圍是從0 65535。埠號用來表示和區別網路中的不同應用程式 埠分類 1 公認埠 well known ports 0 1023之間的埠號,也叫well known ports。這些埠由 iana 分配管理。iana 把這些埠分配給最重要...

TCP IP 協議 協議棧

tcp ip協議棧 整個協議棧被分為了四層,每一層協議負責不同的功能 鏈路層 負責處理物理介面的細節,接受傳送的都是位元流,鏈路層主要有三個目的 1.為ip模組傳送和接收i p資料報 2.為arp模組傳送arp請求和接收arp應答 3.為rarp傳送rarp請求和接收rarp應答 網路層 用來處理網...

TCP IP協議棧(協議族)

思考乙個問題 為什麼不同廠家 不同型號的計算機能相互通訊?原因在這裡,tcp ip 協議族 實現了這一目標。使得不同廠家 不同型號的計算機能相互通訊!網際網路協議 internet協議 平時我們所說的tcp ip是乙個協議族,也叫協議棧。換句話說,internet協議是乙個多種協議組合在一起的一種叫...