網路通訊相關基本概念

2021-08-18 11:50:51 字數 1544 閱讀 6418

最初接觸到網路協議還是在大學的計算機網路課上,過了這麼多年沒想到我還是得重拾這些知識,要是早知道上課就不會開小差和玩手機遊戲了[好像說的有點晚?

著名的osi五層協議相信大部分人都知道,然後下面是我大概要講的內容結構圖:

ftp://使用者名稱:密碼@ftp伺服器ip或網域名稱:ftp命令埠/路徑/檔名
我的理解更傾向於應用層協議只是封裝物件,他們把實現檔案傳輸和實現資料報傳輸都相應地封裝了起來,實際上對應地實現是一層一層地巢狀下來,最終都是由最底層地物理層實現。就和mybatis地結構體系實現地功能一樣,把jdbc的功能拆分開來每部分都封裝起來,並給它加上一些額外的功能特性。

任何協議在傳輸的過程中都是一層一層的剝開,一層層解析,比如說網域名稱----->dns,ip+埠 ---->tcp報文解析等等。在這裡提一下資料鏈路層,這個可以想像成在自家的區域網裡面的各個主機直接通訊使用的東西,如果想接到外界的網際網路就得加個路由器和閘道器就變成了ip訪問。基本到這裡就是頂級的訪問了,然後tcp給予一些傳輸控制功能,應用層再把它包裝成我們容易識別的資源訪問型別,網域名稱這些都是虛的,知道別人的ip就能訪問資源了(前提時別人沒有開防火牆)。

接下來重點地說說tcp這個協議,它有如下特性:

1.可靠傳輸

2.面向連線

3.全雙工通訊

說白了跟**的特性一樣,打**前要先撥號,連線上就能打**了,聊天還能你一句我一句是不是。每個tcp連線包含兩個端點被抽象成socket,由ip位址和埠號共同組成。不同於udp的盡力交付,tcp因為實現了傳輸控制所以大家都稱之可靠的傳輸。

在比較早期的時候,tcp的可靠傳輸是靠停止等待機制+超時重傳,但是因為這種方式(乙個乙個按順序傳送接收成功)太浪費通道資源了,最後發展成為現在有名的滑動視窗協議。遵循該協議的傳送方和接收方各自維護乙個視窗值,最開始視窗大小是哦共同協商的,之後如果遇上了網路阻塞或者其他情況視窗會根據某種演算法改變。對於傳送方來說,每接收到乙個正確的確認就可以將自己的視窗向前儀,其實就是準備下一段資料的區間,對接收方而言,每次接收到的資料給予的確認都是以接收到的正確順序的最後乙個序號,這樣能保證所有資料都能被正確的傳送。一旦傳送方的視窗滿了之後傳送方就得等待接收方給予乙個新的視窗值,這涉及到流量控制的內容。

所謂流量控制就是接收方收的已經手軟了的意思。目前所用的流量控制是先把所有資料放到快取中,先派個小兵去探探路,如果發現可行,就把後面的資料組裝一下一起發過去。

tcp的擁塞控制包含了四種可用的演算法,一般都是相互結合使用的:慢開始:就是傳送視窗剛開始不給那麼大,比如說給2個,然後傳送2個位元組資料出去收到確認後就開始乘法增加,直到某個閾值threshold時使用擁塞避免演算法(講真的這麼唬人,實際上就是i++嘛),如果傳送方察覺到網路出現了擁塞,這時候可以選擇把新的threshold /=2,將傳送視窗定為1重新開始。

後來出現了快重傳演算法(接收方收到了亂序資料的時候就把亂序前的確認重**送,傳送方接收到重複3個確認以上就把漏掉的資料重發一遍)和快恢復演算法(傳送視窗定為新的閾值直接開始擁塞避免演算法),不得不說這些別名看上去嚇人,其實原理還是蠻簡單的。

Linux網路通訊的基本概念

1 什麼是計算機網路 把分布在不同地理位置的計算機與專門的網路裝置用通訊線路互相連成乙個規模大 功能強的系統,從而使眾多計算機可以方便地互相傳遞資訊 共享軟體 硬體 資料資訊等。簡單來說,計算機網路就是由通訊線路互相連線的許多自主工作的計算機構成的的集合,它是計算機技術和通訊技術相結合的產物。2 o...

網路通訊的一些基本概念

最初由四個位元組,四個字點表示 130.207.244.244 ipv4 fe8o fcfd 4aff fecf ea4e ipv6 不便記憶,所以常用主機名 hostname 代替 127.由本地程式使用16即位掩碼,表示該子網內部ip位址前16位要一致 5.資料報分組 df標記 don t fr...

網路通訊概念

tcp ip的分層模型 osi協議參考模型,它是基於國際標準化組織 iso 的建議發展起來的,它分為7個層次 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜。但它仍是此後很多協議模...