空閒資料概念 為何計算機通訊要用「虛擬」概念?

2021-10-14 16:19:25 字數 2157 閱讀 7656

tcp面向連線的特性體現在**?最近在看tcp連線這塊,有乙個疑惑,希望大家能幫忙解答一下。tcp的面向連線特性是體現在**?因為tcp的三次握手在路由器看來,好像就是**三個普通的報文,路由器也不會為這個session預留頻寬資源,那tcp的「連線」特性體現在**?

這個問題吸引我的是」tcp的三次握手在路由器看來,好像就是**三個普通的報文,路由器也不會為這個session預留頻寬資源「,能夠寫出這段文字的,距離理解tcp面向連線還有一層薄薄的窗戶紙。

曾經寫過一篇亞當夏娃扔果子的故事,在這個故事裡,亞當與夏娃分別位於兩座山峰,中間是萬丈深淵的阻隔,但是亞當卻扔果子的實際行動架起了一座友誼的橋梁,這座橋梁的一端是亞當,另外一端是夏娃。現在問問大家,真的有這座橋梁嗎?沒有的!這座橋物理上壓根不存在,既然不存在,那為何又要說橋梁呢?在這個世界上,有很多虛擬的表達,這些虛擬的表達,通常只具有邏輯上的意義,是為了輔助理解。我文章裡經常提到隧道,隧道大家在生活裡經常遇到,浙江的山區到處都是越山隧道。在計算機通訊裡往往也會用到隧道這個名詞。

誰在電腦裡或網路裝置上看到過隧道嗎?想必沒有人看到過!通訊世界裡的隧道是乙個虛擬的表達,邏輯上的概念!只要理解隧道通常有兩端,分為頭端(head)、尾端(tail)

頭端按照與尾端事先約定好的資料格式,將組織好的資料扔進隧道中行進的貨車,貨車開到隧道尾端,就停車卸貨。尾端根據資料的格式,將資料提取出來等待進一步處理。

上文的表達其實還是為了輔助理解,tcp連線也是乙個虛擬的邏輯概念!你可以把tcp想象成乙個隧道、或者虛擬連線!

tcp為了建立乙個端到端隧道,通常需要三次握手!三次握手成功之後就有了虛擬連線(隧道)

而三次握手並不是沒有意義的,是為了提前在通訊的兩端分別開闢一塊小小的記憶體,用於:

只有雙方交換三次握手,才能將以上的記憶體初始化完成。然後從應用層接收資料,放入傳送緩衝區。同時從底層網路接收報文,並根據四元組計算出tcp connection id,依據「connection id」檢索到這一塊小小記憶體的起始位址,並依據記憶體位址找到「接收緩衝區」空間,然後把資料放入「空閒的接收緩衝區」,等待著應用層使用recv()介面函式將其取走!

剛開始學習tcp的同學,如果一上來就學這些,肯定會苦不堪言,因為這***抽象了!

所以,為了使得這個學習過程容易一些,使用了tcp 連線(大管子)這個名字,就彷彿客戶端與伺服器之間真的有一根輸送位元組資料的大管子,這個大管子裡面巢狀兩根細管子一根是用於客戶端寫(傳送)資料,伺服器在管子另一頭讀取(接收)資料;另外一根是伺服器寫(傳送)資料,客戶端讀(接收)資料。這樣的表達,對初學者是非常友好的!沒有找到合適的,類似下圖的管子。

但是現實的情況是,並沒有這些五顏六色的管子,客戶端發出的資料,是以乙個又乙個ip報文做為傳輸單元,與網際網路上億萬萬個ip報文共同競爭有限的網路頻寬資源,有限的路由器硬體、軟體資源,這就是網際網路的本質,共享網路!。ip報文隨時都有小命不保的風險,**有專用的連線(物理管道)供自己使用啊!

如果ip報文很幸運,最終跑到了終點並得到tcp模組的處理,tcp確實是把它當做連線來處理的。首先要根據四元組找到是哪根連線(connection id),然後從該連線(connection id)對應的記憶體空間提取出資訊進一步處理,這些操作上文其實已經提到了,就不再重複了。

計算機串列埠通訊相關概念

一條資料線,將資料按位傳輸。長距離傳送成本低,操作較複雜。兩字元間的間隙是任意的,但同一字元的相鄰兩位間的間隔是固定的,以便接收方區分不同位。關於開始位和停止位 本人理解,且傳輸規則不同時會有偏差 非同步序列通訊中,匯流排在空閒時是高電平,規定起始位是低電平,接收方收到電平下降沿時同步自己的時鐘並準...

計算機常用概念

uml是 統一建模語言 uml是 unified 視覺化建模的一種語言。uml為 物件導向開發系統的產品進行說明 視覺化 和編制文件的一種標準語言。統一建模語言 uml 是非專利的第三代建模和規約語言。uml是在開發階段,說明,視覺化,構建和書寫乙個 物件導向軟體密集系統的製品的開放方法。uml展現...

計算機基礎概念

計算機系統是由 硬體系統 和 軟體系統 兩大部分組成。1 計算機硬體 計算機硬體 是構成計算機系統各功能部件的集合。2 計算機軟體 計算機軟體 是指與計算機系統操作有關的各種程式以及任何與之相關的文件和資料的集合。其中程式是用程式語言描述的適合計算機執行的語句指令序列。計算機的五大硬體組成內容包括 ...