您好,登錄后才能下訂單哦!
(以下純屬虛構)
一、協議棧的劃分 與 人類處理溝通事件過程的 對比
前言:
講道理的人都知道“工具是人類肢體的延伸”,那么“計算機”,這種二十一世紀人類最偉大的發明也是“工具”,對比其他冷冰冰的“工具”,他具有
”獨特的思維能力!“——簡單的邏輯處理能力。因此,正如大腦可以控制軀體一樣,他也可以控制其他“工具”。
1.層次結構的劃分規律
書上說:“層次結構具有:
(1)人們可以很容易的討論和學習協議的規范細節。
(2)層間的標準接口方便了工程模塊化。
(3)創建了一個更好的互連環境。
(4)降低了復雜度,使程序更容易修改,產品開發的速度更快。
(5)每層利用緊鄰的下層服務,更容易記住各層的功能。!”
說的挺好,字都認識,但是很多人學完網絡都不知道層次結構的意義!(我學了2遍 還稀里糊涂),就像我認識漢字幾千個,也寫不出像樣的的詩詞一般,沒有掌握規律,研究內涵,粗淺就是粗淺,讀再多也沒用!
想想我們要拿一樣東西時的操作:
(1)腦子下達指令
(2)臂膀抬起
(3)手臂延伸
(4)用手抓住
人類正因為肢體功能高度具體化,創造力才能如此驚人。那么網絡分層也正是為了功能更完備,實現更簡潔。
以網絡實際中的4層結構為例(只考慮分層作用,不考慮具體細節):
以此看來,分層結構的原理就如我們身體做操作一般。但是,人 不簡單,計算機網絡也不簡單,因為他們各自的功能有很多。在這里不同功能又 高度具體化了
(1)對于 手 有可能面對的東西不同,我們的實際操作不同(蘋果用手抓,帶刺的團用手抓嗎?),同樣的,網絡接口層要面對 各種各樣的局域網,他的具體操作也不同(取決于,網卡類型與驅動類型)
(2)對于 臂膀 他不僅可以控制 手臂的整體方向,他還是 發力 的關鍵點,能拿多重東西關鍵靠它。同樣的,傳輸層也有很多功能,是以 “協議” 來區分的。
對于網際層,傳輸層,應用層,他們不同功能的實現,使用“協議”來控制,
畢竟計算機的“邏輯”體現在判斷(false or true),因此同層次多功能 必需要以標示來劃分(體現在每層報頭的op字段)。
通過以上 我們可以粗濾的得出:
分層讓 每一層作用更具體,分協議讓功能更完善。(前輩們的天才與偉大)
二、三次握手與四次揮手的設計“猜想”
TCP/IP協議簇中TCP協議報頭設計的尤其復雜,但是當你了解每部分的作用后,震驚的發現這簡直是模擬了人類的溝通細節,當然他也是通過龐大的條件判斷來實現的。
下面是TCP段的格式
16位端口號(TCP與UDP報頭中):
假設 你對你媽說 :“我餓了!” 你媽立即得出:“1.你需要吃飯。2.隱含的知道你用嘴吃”,因此 ,做出來的飯菜是可口 可下咽 的,而不是生的 飯菜給你。
這種約定是人們共識的,而計算機做不到這點。
同樣的,計算機中有各種需要網絡通信的軟件,為了把特定軟件的需求,可區分的傳送給對方的具體軟件,才引入了端口這一概念。端口號就表示某一確定進程;
1.三次握手與四次揮手與人溝通的類比
先來看看我們是怎么建立溝通的:
(1)小明向小芳發出了約會請求
(2)小芳收到并回復同意
(3)小明得到小芳的同意 后 說 “走”,小芳就知道小明知道他同意了
至此,他們就建立了一次溝通;同樣的在網絡上兩臺主機(已接入Internet)
使用TCP協議建立連接也需要(發起連接——》對端回復——》對回復的回復)
這三步。但是具體實現卻不想人類溝通那么簡單,畢竟計算機只會做判斷
以下是三次握手的模擬:
SNY=1 :表示這是一個連接請求 或者連接接受 的報文,他不同與人類的溝通,因為人可以根據會話的情景判斷會話的內容,而計算機卻要明確表示是或不是連接請求,因為在連接請求中的實際的數據內容字段是不做存儲的(也就是無效的 含有實際內容也得在建立連接后重新發)。
J 與 k(位于32位序號):這個內容相當于談話的具體內容,方便對方做出對應的回答,例如 你對別人說:“我們。。。。。。吧!”,對方要怎么回答,雖然知道回答的結果依舊是“行或不行”,但根本不知道內容,因此無法做出明確的回答。這個字段設計的意義也在于此。
ACK=1:當ACK=1時,32位確認序列才有效。好比 你與別人談話,并沒有詢問意見,而對方卻一直說:“是的!”,這樣的回復是沒有實際意義的。ACK的效用相同,但是 我們知道“傳輸的可靠性是建立在合理的請求與應答的基礎上!”因此在網絡的傳輸過程中多采用 問答形式,所以ACK 大部分情況為1.
J+1與 K+1 (位于32位確認序號):對接受的數據做出確定回復,表明J 之前的信息收到。同時J+1也表示他需要的這一條數據的序號。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。