簡單說一下 TCP打洞和UDP打洞

2022-03-12 04:36:10 字數 1163 閱讀 4451

1, tcp協議通訊:

現在有兩台電腦a和b。在

假設a的位址為 192.168.0.100

假設b的位址為 192.168.0.102

a想給b傳送乙個字串hello,  如果a,b之間採用tcp協議,那麼b收到hello的過程是怎樣的呢?

首先建立連線(3次握手成功之後,a和b的鏈結才算成功),然後a在給b傳送資料。

如果a,b不在乙個區域網內,a,b通訊就需要打洞了。

假設a通過路由器s1上網。b通過路由器s2上網。

s1的外網ip:114.66.5.211          本地ip:192.168.0.1

s2的外網ip:14.153.27.47          本地ip:192.168.1.1

先暫時不說a和b的通訊。我們來說一下a訪問www.baidu.com

傳送的源位址就是192.168.0.100  ,目標位址就是61.135.169.105(www.baidu.com經過dns解析之後的位址)。 

由於a的網內沒有這個61.135.169.105位址,所以會把資料發給預設閘道器。這裡的預設閘道器位址就是192.168.0.1(路由器s1的本地位址)

路由器s1拿到資料之後,會做什麼事情呢?

他會做nat對映,然後把之前的源位址192.168.0.100換成外網ip:114.66.5.211.

它是怎麼對映的呢?

他會把192.168.0.1:22124轉換成乙個外網埠號。假設轉換的埠號為1481。

22124為a電腦從哪個埠發出去的。1481為路由器計算出來的值,具體計算方法不需要知道,只需要知道這個值在nat表中,是唯一的。

如下表:

最終資料會傳到路由器s1. 傳到路由器之後,它開始根據埠號查nat表。如果這個埠號在表中存在,那麼就把src的值取出,並把資料中的目標位址

根據這個思路,可以得出,a,b要想通訊,路由器s1必須知道,b在路由器s2中的對映。同樣的,路由器s2必須知道a在s1中的對映。

平常做法是需要借助一台伺服器t,a和b都去訪問伺服器t,那麼t會得到a和b在各自路由器中的對映,然後把b在路由器s2中的對映發給s1。

把a在路由器s1中的對映發給s2.這樣a和b就可以直接通訊了。

簡單說一下Lut

lut的全稱是顯示查詢表 look up table 對應著一種對映關係。在影象調色中用到很多。使用lut可以輕鬆得到變換之後的顏色 trans color luttrans color 但是乙個完整的色域資訊是256 256 256就算是乙個資訊只有1位元組,這個資訊也有16mb的大小,對於工程來...

簡單說一下 http 和 https

http 超文字傳輸協議,他是網際網路中應用最廣泛的網路通訊協議,是完成 客戶端 和 服務端,請求 和 答應 等一系列行為的標準 https 以安全為目的的http通道 http ssl 進行加密後的 傳輸協議 具備 加密傳輸 和 身份驗證的功能 傳輸 證書 埠號 狀態 1,客戶端使用 https ...

簡單說一下《TCP IP協議》

tcp ip的通訊協議 這部分簡要介紹一下tcp ip的內部結構,為討論與網際網路有關的安全問題打下基礎。tcp ip協議組之所以流行,部分原因是因為它可以用在各種各樣的通道和底層協議 例如t1和 x.25 乙太網以及 rs 232 序列介面 之上。確切地說,tcp ip協議是一組包括tcp協議和i...