TCP IP NAT知識梳理

2022-02-23 15:45:37 字數 1093 閱讀 9249

首先,網際網路上的每台主機都有乙個唯一的ip位址標識,計算機在通訊時需要向網路中的dhcp(動態主機配置協議)伺服器申請乙個ip位址,但開始主機並不知道哪台機器是dhcp伺服器(不知道對方的mac位址),所以這個請求(dhcp discovery)必須廣播出去,使網路中的每台支援tcp/ip協議棧的主機都能接收到,所以計算機需要發出類似這樣一條報文:

源位址為0.0.0.0

目標位址為255.255.255.255

報文內容:i need an ip address!!

接下來,這條訊息會通過udp傳送出去,接下來dhcp伺服器會將空閒的ip位址分配乙個返回給計算機,區域網內可能存在多個dhcp伺服器,空閒的ip位址可能會返回多個,我們的主機選擇其中乙個,然後將選擇的那條廣播出去,dhcp收到後會將閘道器位址,dns位址返回計算機,儲存在記憶體中。

然後,本機通過arp請求廣播網關位址,以獲取閘道器mac位址(區域網內通過mac位址通訊),獲取後儲存在arp快取中。接下來就可以發起dns查詢了。

那麼,為什麼每個網際網路中的計算機需要經過如此複雜的步驟連線網際網路呢?每台主機直接連到網際網路上不好麼,要閘道器做什麼?這就涉及到了網路位址轉換技術,它使有限的ipv4位址空間進一步增加。nat直觀上理解很簡單,如下圖所示,它在傳送資料時,將資料報中的源ip由內部網路ip位址替換為出口的公網ip。比如公司中可能有很多電腦,但對外的出口ip可能只有乙個(這裡其實比較複雜,具體可以檢視這篇文章這個過程傳送方和接收方(**)均無感知(但事實上上層協議如tcp,http等通常還是會攜帶客戶端本地ip位址)。

為了做到這一點,nat閘道器,需要維護一張關聯表,把會話的資訊儲存下來,但由於nat閘道器能夠儲存的關聯資訊有限,所以nat閘道器需要**資源,通常通過跟蹤報文資訊或超時機制

建立乙個tcp連線總共需要客戶端和伺服器端一共傳送3個包,如下圖所示

來自即時通訊網

知識梳理計畫

知識的學習一般來說有兩個過程,第乙個是摳細節,理解知識,另乙個是將知識點進行總結歸納融入到自己的知識體系中。如果工作學習過程中需要用到該知識點的時候可以很快的提取出來。在這幾年的學習以及研究生活中,我也陸陸續續的鑽研過一些演算法,但是很多東西,都是當時懂了,但是過了一段時間,可能就忘記了,等到需要使...

Hive 知識梳理

1 order by,sort by,distribute by,cluster by 背景表結構 在講解中我們需要貫串乙個 例子,所以需要設計乙個情景,對應 還要有乙個表結構和填充資料。如下 有 3 個字段,分別為 personid 標識某乙個人,company 標識一家公司名稱,money 標識...

music 知識梳理

專案架構 vue init webpack vue music專案目錄介紹及其圖示字型,公共樣式等資源準備 src api common fonts image js stylus components router store main.js 修改package.json檔案 stylus 0.5...