go語言 網路概述 網路協議 二十四

2021-10-21 07:40:28 字數 2719 閱讀 8301

1. 網路協議

從應用的角度出發,協議可理解為「規則」,是資料傳輸和資料的解釋的規則。

假設,a、b雙方欲傳輸檔案。規定:

第一次,傳輸檔名,接收方接收到檔名,應答ok給傳輸方;

第二次,傳送檔案的尺寸,接收方接收到該資料再次應答乙個ok;

第三次,傳輸檔案內容。同樣,接收方接收資料完成後應答ok表示檔案內容接收成功。

由此,無論a、b之間傳遞何種檔案,都是通過三次資料傳輸來完成。a、b之間形成了乙個最簡單的資料傳輸規則。雙方都按此規則傳送、接收資料。a、b之間達成的這個相互遵守的規則即為協議。

這種僅在a、b之間被遵守的協議稱之為原始協議。

當此協議被更多的人採用,不斷的增加、改進、維護、完善。最終形成乙個穩定的、完整的檔案傳輸協議,被廣泛應用於各種檔案傳輸過程中。該協議就成為乙個標準協議。最早的ftp協議就是由此衍生而來。

2. 分層模型

2.1 網路分層架構

為了減少協議設計的複雜性,大多數網路模型均採用分層的方式來組織。每一層都有自己的功能,就像建築物一樣,每一層都靠下一層支援。每一層利用下一層提供的服務來為上一層提供服務,本層服務的實現細節對上層遮蔽。

越下面的層,越靠近硬體;越上面的層,越靠近使用者。至於每一層叫什麼名字,其實並不重要(面試的時候,面試官可能會問每一層的名字)。只需要知道,網際網路分成若干層即可。

1)物理層:主要定義物理裝置標準,如網線的介面型別、光纖的介面型別、各種傳輸介質的傳輸速率等。它的主要作用是傳輸位元流(就是由1、0轉化為電流強弱來進行傳輸,到達目的地後再轉化為1、0,也就是我們常說的數模轉換與模數轉換)。這一層的資料叫做位元。

2)資料鏈路層:定義了如何讓格式化資料以幀為單位進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保資料的可靠傳輸。如:串列埠通訊中使用到的115200、8、n、1

3)網路層:在位於不同地理位置的網路中的兩個主機系統之間提供連線和路徑選擇。internet的發展使得從世界各站點訪問資訊的使用者數大大增加,而網路層正是管理這種連線的層。

4)傳輸層:定義了一些傳輸資料的協議和埠號(www埠80等),如:tcp(傳輸控制協議,傳輸效率低,可靠性強,用於傳輸可靠性要求高,資料量大的資料),udp(使用者資料報協議,與tcp特性恰恰相反,用於傳輸可靠性要求不高,資料量小的資料,如qq聊天資料就是通過這種方式傳輸的)。 主要是將從下層接收的資料進行分段和傳輸,到達目的位址後再進行重組。常常把這一層資料叫做段。

5)會話層:通過傳輸層(埠號:傳輸埠與接收埠)建立資料傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(裝置之間需要互相認識可以是ip也可以是mac或者是主機名)。

6)表示層:可確保乙個系統的應用層所傳送的資訊可以被另乙個系統的應用層讀取。例如,pc程式與另一台計算機進行通訊,其中一台計算機使用擴充套件二一十進位制交換碼(ebcdic),而另一台則使用美國資訊交換標準碼(ascii)來表示相同的字元。如有必要,表示層會通過使用一種通格式來實現多種資料格式之間的轉換。

7)應用層:是最靠近使用者的osi層。這一層為使用者的應用程式(例如電子郵件、檔案傳輸和終端**)提供網路服務。

2.2 層與協議

每一層都是為了完成一種功能,為了實現這些功能,就需要大家都遵守共同的規則。大家都遵守這規則,就叫做「協議」(protocol)。

2.3 每層協議的功能

1) 鏈路層

乙太網規定,連入網路的所有裝置,都必須具有「網絡卡」介面。資料報必須是從一塊網絡卡,傳送到另一塊網絡卡。通過網絡卡能夠使不同的計算機之間連線,從而完成資料通訊等功能。網絡卡的位址——mac 位址,就是資料報的物理傳送位址和物理接收位址。

2) 網路層

網路層的作用是引進一套新的位址,使得我們能夠區分不同的計算機是否屬於同乙個子網路。這套位址就叫做「網路位址」,這是我們平時所說的ip位址。這個ip位址好比我們的手機號碼,通過手機號碼可以得到使用者所在的歸屬地。

網路位址幫助我們確定計算機所在的子網路,mac 位址則將資料報送到該子網路中的目標網絡卡。網路層協議包含的主要資訊是源ip和目的ip。

於是,「網路層」出現以後,每台計算機有了兩種位址,一種是 mac 位址,另一種是網路位址。兩種位址之間沒有任何聯絡,mac 位址是繫結在網絡卡上的,網路位址則是管理員分配的,它們只是隨機組合在一起。

網路位址幫助我們確定計算機所在的子網路,mac 位址則將資料報送到該子網路中的目標網絡卡。因此,從邏輯上可以推斷,必定是先處理網路位址,然後再處理 mac 位址。

也就是說,我們還需要乙個引數,表示這個資料報到底供哪個程式(程序)使用。這個引數就叫做「埠」(port),它其實是每乙個使用網絡卡的程式的編號。每個資料報都發到主機的特定埠,所以不同的程式就能取到自己所需要的資料。

埠特點:

對於同乙個埠,在不同系統中對應著不同的程序

對於同乙個系統,乙個埠只能被乙個程序擁有

4) 應用層

應用程式收到「傳輸層」的資料,接下來就要進行解讀。由於網際網路是開放架構,資料**五花八門,必須事先規定好格式,否則根本無法解讀。「應用層」的作用,就是規定應用程式的資料格式

網路流二十四題

開始了我的網路流 24 題之旅,寫在一起到時候方便一起複習哦。其實這並不是真的二十四題,有一些過於水的我就不寫上來了。然後有的 太水了就不寫了。感覺這些題目還是比較基礎的,方法卻值得借鑑!剩餘題目 航空路線問題 火星探險問題以下 題目描述 點此看題 解法 你發現時間是最大的障礙,因為對於不同的時間飛...

網路流二十四題之分配問題

沒想到codevs上的資料和我本地的資料是一樣的 這下不用寫多餘的 了 這道題和上一道題一樣水,按照提議寫成二分圖就行。1.源點向每個人連一條邊,容量1,費用0,每個任務向匯點連一條邊,容量1,費用0 2.每個人向每個任務連一條邊,容量1,費用為cij 跑兩次費用流就行 include includ...

python簡說(二十四)傳送網路請求

一.get,post請求 import requests url data r requests.get url,params data 發get請求 r requests.post url,data data 發post請求 print r.text 結果返回的就是字串 print r.json ...