假設小明需要傳遞一部電影給小花。這個電影有1g。
很顯然,不可能一次就把1g的內容一下傳遞給小花,因為無論是網絡卡還是他們各自的電腦,都無法一次性處理這麼大的內容,只能是切割成10份或者更多,這樣,小明的機器和小花的機器才能夠承載這些流量。
那麼就有一層將專門資料既然被分成了一塊一塊的傳輸,並且給每一塊資料加上乙個序號,這樣就能保證傳送到接收端實體的包的也是按序接收,這一層就是傳輸層(tcp層)。
在分成乙個個包以後那麼必須給每乙個加上乙個頭,讓每一塊資料報知道小花的位址。那麼這就是ip層,ip層還負責尋找最合適的路徑。
在ip層將包分好以後由網絡卡來傳輸。網絡卡再將傳輸層切割以後的包加上一些頭和尾(比如目的地mac位址,源mac位址)。並且根據ip找到下一台機器的位址(arp(位址解析協議):mac位址的獲得從本機的arp快取表中來;arp快取表中的mac位址從arp廣播中獲得。如果沒有得到目標主機的mac,該資料報以廣播形式提交給交換機,交換機通過一輪廣播包後獲得目標mac,在下次傳遞時使用。如果目標主機不在本網路,將數鏈層協議部分的目的地mac位址封裝成閘道器mac位址,提交給閘道器裝置處理)。
在到達小花的電腦以後,又經過層層分解,到達了小花的電腦的tcp層(傳輸層)。小花的電腦tcp層發現,拿到資料以後,要確認是否收到,收到的包是否損壞,是否按順序收到等。當然包被tcp層處理以後,再拿給應用層,應用層再根據自己的協議給使用者展現行為和動作。比如小花就可以看電影。
我們可以把應用層比作乙個富家少爺。而tcp層就是管家。富家少爺只是告訴管家,把這個東西發到女神那裡。
管家首先得給女神的管家通氣兒,問人家女神願不願意收我們家少爺的的禮物。要是人家女神家不願意,自己還瞎送個啥。
待女神還同意後,管家就開始著手發貨了,現在的科技不發達,都是馬車拉貨,鏢局一次性拉不了這麼多,所以管家必須先將這些東西分成乙個個包,讓鏢局一次次拉。但是管家並不關心鏢局怎麼送貨。只是告訴我要你把這乙個個包裹送到***鎮xx村,要是有東西丟了或者壞了,你們鏢局就可以關門了。然後對方收到乙個包裹的時候就給我來個信,我好清理掉已經發出去的包裹。
鏢局說,「你放心,我們有一套嚴格的協議,保證您的包裹又快又完整的送到對方手裡」。
這鏢局的人拿到乙個個包裹以後,先會由最熟悉路徑的工作人員規劃出最短路徑。這樣使用者體驗肯定是最好的,而且路徑越短,也越安全。
路徑已經規劃好,現在該由鏢師送貨了。鏢師送貨不會直接把貨送到對方手裡,而是只會送到自己熟悉幾個熟悉的分鏢局中的乙個。畢竟是自己熟悉的地方,路熟,人熟。但是遠一點的就不一定。人生地不熟,容易出大問題。鏢師押鏢的時候一看編號就知道自己要把包裹送到哪乙個分鏢局。至於目的地是哪,鏢師並不關心。
鏢師的職責就是在自己送貨這段時間一定要保證貨物的安全。畢竟無論是走官道還是抄小路還是會碰到無恥的山賊。一旦被劫鏢,鏢師又得回到鏢局重新取貨再送一次。
貨物最終達到女神的管家手裡,首先管家確定每個包裹是不是完整,是不是包裹的順序不對,等等。等到所有的手續檢查完以後再交給自家小姐。然後給對方管家說這個包裹我已經收到了。當然有可能小姐家院子比較小,而鏢局的送貨效率又挺高,這得告訴對方管家,貨慢點送,我家院子堆不下。或者我想要某個某個包裹,剛才好像沒送過來,你趕快再送一下。
這裡的鏢局其實就是扮演了ip層,鏈路層和物理層的角色。這篇文件只是為了快速理解tcp/ip的五層模型,心中有乙個大概的印象。相信大家再去學習計算機網路相關的知識的時候會好理解的多。
協議名稱
對應的協議說明
osi應用層
少爺,小姐
應用層表示層
會話層傳輸層 (tcp層)
管家傳輸層 (tcp層)
網際層,又叫網路層(ip層)
鏢局中的「軍師」屬於ip層。軍師要選擇最短路徑,提供邏輯位址到實體地址的轉換。流量控制和擁塞控制。 軍師決定鏢師該往哪個地方送貨
網路層網路介面層(又稱鏈路層)
鏢師只會在乙個分鏢局到另外乙個分鏢局之間傳遞貨物。鏢師屬於網路介面層(又稱鏈路層)層
物理層資料鏈路層
IO模型之BIO快速理解
說io模型前先說一下同步 非同步 阻塞 非阻塞的區分 同步 非同步關注的是訊息通訊機制 阻塞 非阻塞關注的是等待訊息時的狀態 同步 非同步 比如本人去燒一壺水,然後水開之後還是需要本人親自去把水裝在水壺裡這叫同步,假如水開後我不用去裝水,由我提前安排好的人去做叫非同步。阻塞 非阻塞 如果在燒水的過程...
IO模型之NIO快速理解
什麼是nio?nio是乙個非阻塞的就是說,他在accept 的時候不會阻塞,在read 的時候也不會阻塞,和之前的bio不同。假設有一萬個連線,如果是bio那核心就必須丟擲1萬個執行緒去處理,但是nio確不用,他可能只需要幾百個就行。為什麼nio可以做到這樣呢?是因為nio的3大核心。nio non...
最快速的OpenCV安裝教程
最快速的opencv安裝教程,最簡單的安裝方式。先cmd開啟命令列輸入pip install opencv python i 如下圖 然後,等待幾秒鐘,會看到如下情況,最後一行sucessfully installed opencv python 4.4.0 因為我是最新版的python3.8所以自...