再探計算機網絡
這個星期在工作之余花了一些時間去研究計算機網絡部分的一些知識,感覺頗有收獲,便記錄下來以供交流。
一,計算機通信原理:
我們都知道tcp/ip協議鏃有五層模型(其實和osi七成模型沒多大區別),那麽這五層模型時怎麽實現計算機之間的通信的呢?
我們就以tcp/ip協議來了解一下他的通信過程:·(抱歉嫌麻煩所以手繪了,很多地方不是很詳細)
我們發現發送過程中都會再其發送給下一層的數據中加上一個首部信息來指示應該發給下一層的哪一個協議去處理,而在接收方議會通過解析這個首部信息確定應該發給上一層的哪一個協議或者端口(應用)。這五層通過相互或者完成了計算機之間的通信,這個過程就是使用tcp/IP協議實現通信的例子。
二,各層的具體作用和相關協議。
2.1,物理層:
物理層實質就是將上層的比特流(0,1二進制流)轉換成電壓的高低,燈光的閃滅等物理信號,將數據傳輸出去。
2.2,數據鏈路層:
它主要提供在同一個數據鏈路的節點之間進行包傳遞,它有一個識別碼MAC地址,通過這個地址他就能將數據發送到相應主機的數據鏈路層,相應的主機通過這個數據包首部的MAC地址來判斷是不是發送給自己的包,如果不是,則丟掉。如果是,則解析這個包的首部包含的協議,具體是上一層(網絡層)的哪一個協議,將這個包發送給上一層的相關協議進行處理(這個例子是ip包)。
2.3,網絡層:
網絡層的作用是實現終端節點間的通信,即在復雜的網絡環境中將數據包發送給最終的目標地址。這裏以ip協議為主介紹。
IP實質是一個面向無連接的協議,即在發包之前不需要建立與對端目標地址之間的連接。這樣的好處是簡化和高效。如果每次發送數據都要建立連接之後再發送數據這樣會很低效和不值。(對於是否要要建立連接來保證數據傳輸的可靠它交給了上一層傳輸層來處理,比如tcp)。
首先在發送階段,它從傳輸層拿到了數據之後會再頭部加上自己的IP地址和目標主機的IP地址然後再發送給數據鏈路層,而再讀取數據的時候,它從數據鏈路層拿到數據之後會判斷頭部的ip地址是不是自己的,然後再看數據使用的額上層協議是什麽(本例是tcp),然後再傳給上一層的相關協議進行處理。
其中IP地址是如何來區分不同主機的呢?其實一個IP地址包含兩個部分(網絡標識和主機標識),通過網絡標識來判斷域,通過主機標識來判斷具體到那一臺主機。當然這裏面還有很多其它的知識,比如ip地址的分類啊,ipv4和ipv6等,感興趣可以去看書或者google。
2.4,傳輸層:
傳輸層包括了兩個重要的協議,tcp和udp。
其中tcp是一個面向連接的流協議,udp是一個不具有可靠性的數據報協議。當然這個還有一個socket,socket實際就是一個對tcp和udp的封裝api,方便開發而已。
因為udp是一個無連接,所以它傳輸數據的速度很快,但是不可靠。對於一些要求數據對小小的額安全不是那麽重要的應用可以使用udp,比如視頻通信,語音,廣播等。而tcp是一個有鏈接的可靠性傳輸協議。它能夠保證實現數據的可靠傳輸。具體是通過他的檢驗和,序列號,確認應答,重發控制,連接管理以及窗口控制,流控制,阻塞控制等機制來實現的。其中保證數據的可靠性主要是通過序列號,確認應答和連接管理來實現的。連接管理是指在通信之前先確認兩端之間的準備工作,主要是三次握手和四次揮手。
當發送數據時,傳輸層會再其首部加上端口號,收到數據時它也會解析這個端口號確認該發送給哪一個應用。
2.5,應用層
應用層主要是負責編碼解碼和一些應用邏輯的額處理了。其中也有已經制定好了的一些協議,ftp,fmtp,http等。具體是采用這些已經歸檔了的協議還是自己定的協議就要按照業務的需求來考慮了。
以上就是我對計算機網絡的一些了解了,當然還有很多細節和紕漏,希望大家指正。
再探計算機網絡