Linux運維基礎入門(一)網絡基礎知識梳理01

本連接轉載自:http://www.javashuo.com/article/p-rxbrlfur-cy.html

僅供自學使用。html

 

 

一,計算機網絡參考模型

1.1 OSI七層模型

屏幕快照 2017-04-12 上午9.20.10.png-3783.4kB

屏幕快照 2017-04-12 上午9.21.05.png-3337.8kB

屏幕快照 2017-04-12 上午9.21.57.png-3190.5kB

1)物理層數組

主要功能是完成相鄰節點之間原始比特流的傳輸。(網卡等)
物理層協議關心的典型問題是使用什麼樣的物理信號來表示數據1和0;持續的時間有多長;數據傳輸是否可同時在兩個方向上進行。物理層的設計還涉及通訊工程領域內的一些問題。瀏覽器

2)數據鏈路層緩存

主要負責將上層數據封裝成固定格式的幀,在數據幀內封裝發送和接收端的數據鏈路層地址(在以太網中爲MAC地址,MAC地址是用來標識網卡的物理地址;在廣域網中點到多點的鏈接狀況下,能夠是一個鏈路的標識)而且爲了防止在數據傳輸過程當中產生誤碼,要在幀尾部加上校驗信息,發現數據錯誤時,能夠重傳數據幀。網絡

3)網絡層數據結構

主要功能是實現數據從源端到目的端的傳輸。
在網絡層,使用邏輯地址來標識一個點,將上層數據封裝成數據包,在包的頭部封裝源和目的端的邏輯地址。網絡層根據數據包頭部的邏輯地址選擇最佳的路徑,將數據送達目的端。tcp

4)傳輸層工具

主要功能是實現網絡中不一樣主機上用戶進程之間的數據通訊
網絡層和數據鏈路層負責將數據送達目的端的主機,而這個數據須要什麼用戶進程去處理,就須要傳輸層幫忙了。
例如:QQ發送消息,網絡層和數據鏈路層負責將消息轉發到接收人的主機,而接收人應該用QQ程序來接收仍是用IE瀏覽器來接收,就是在傳輸層進行標識。
傳輸層要決定對會話層用戶(最終的網絡用戶)提供什麼樣的服務。所以,咱們常常把1~3層的協議稱爲點到點的協議,而把4~7層的協議叫作端到端的協議。
因爲絕大多數主機都支持多進程操做,於是機器上會同時有多個程序訪問網絡,這就意味着將有多條鏈接進出於這臺主機,所以須要以某種方式區別報文屬於哪條鏈接。識別這些鏈接的信息能夠放在傳輸層的報文頭中。除了將幾個報文流多路複用到一條通道上,傳輸層還必須管理跨網鏈接的創建和拆除,這就須要某種命名機制,使機器內的進程可以說明它但願交談的對象。學習

5)會話層編碼

主要是容許不一樣機器上的用戶之間創建會話關係。
會話層容許進行相似傳輸層的普通數據的傳輸,在某些場合還提供了一些有用的加強型服務;容許用戶利用一次會話在遠端的分時系統上登錄,或者在兩臺機器間傳遞文件。

6)表示層

主要用於完成某些特定功能,對這些功能人們經常但願找到廣泛的解決方法,而沒必要由每一個用戶本身來實現。
表示層還涉及數據壓縮解壓,數據加密和解密等工做

7)應用層

聯網的目的在於支持運行於不一樣計算機上的進程之間的通訊,而這些進程則是爲用戶完成不一樣任務而設計的。

1.2 TCP/IP參考模型

屏幕快照 2017-04-12 上午10.02.27.png-3342kB

屏幕快照 2017-04-12 上午10.04.17.png-3230.5kB

1)物理層和數據鏈路層

在物理層和數據鏈路層,TCP/IP並無定義任何特定的協議。它支持全部標準的和專用的協議,網絡能夠是局域網(如普遍使用的以太網),城域網或廣域網。因此,TCP/IP實際上只有三個層次。

2)網絡層

在網絡層,TCP/IP定義了網絡互聯協議,而IP又由四個支撐協議組成;ARP(地址解析協議),RARP(逆地址解析協議),ICMP(網際控制報文協議)和IGMP(網際組管理協議)

3)傳輸層

傳統上,TCP/IP有兩個傳輸層協議;TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP協議傳輸更加穩定可靠,UDP協議傳輸效率更高。

4)應用層

在應用層,TCP/IP定義了許多協議,如HTTP(超文本傳輸協議),FTP(文件傳輸協議),SMTP(簡單郵件傳輸協議),DNS(域名系統)等

上述這些協議將在後續課程中具體講解,這裏你們只要明確協議與各層的對應關係便可。當咱們研究具體協議的應用時,結合該協議所在層功能來理解和分析問題將事半功倍。

二,瞭解數據的傳輸過程

2.1 數據的封裝和解封過程

下面咱們將以TCP/IP五層結構爲基礎來學習數據在網絡中傳輸的「真相」。因爲這個過程比較抽象,咱們能夠類比給遠在美國的朋友郵寄聖誕節禮物的過程。

屏幕快照 2017-04-12 上午11.33.20.png-120.7kB

(1)當咱們給朋友寫一封信時,必定會遵守一個約定俗成的信件格式去寫信。例如,在開頭寫對收信人的稱呼,接下來是問候語「你好」等,中間是信的內容,最後落款寫本身的姓名,日期等。那麼,這個書信格式以及通訊採用的語言實際上就是和朋友之間的協議,只有遵守這個協議,對方纔能讀懂信。
(2)寫好了信,要將信裝在信封中。在信封上,要書寫收信人的地址和姓名等。再將信交給郵局。郵局根據收信人的目的地址,將信件再次封裝成大的包裹,經過運輸部門發往目的城市。
(3)運輸部門會將信件的包裹送達目的地的郵局。目的地郵局會將信件送達收信人手中。

在這個寄信的例子中,一封信的傳輸須要通過三個層次:

  • [x] :首先發信和收信的雙方是這個過程當中的最高層,位於下層的郵局和運輸部門都是爲了最高層之間的通訊在服務。寄信人和收信人之間要有個協議,這個協議保證收信人能讀懂寄信人的信件。

  • [x] :兩地的郵局和運輸部門之間也有約定,如包裹大小,地址的書寫方式,運輸到站的時間等

  • [x] :郵局是寄信人和收信人的下一層,爲上一層提供服務,郵局爲寄信人提供服務時,郵筒就是兩個層之間的接口。

2.1.1 數據的封裝過程

屏幕快照 2017-04-12 上午11.36.59.png-430.3kB

1)應用層傳輸過程

在應用層,數據被「翻譯」爲網絡世界使用的語言---二進制編碼數據(0和1組成)。你們能夠試想如下,人們須要經過計算機傳輸的數據形式變幻無窮,各式各樣,有字母,數字,漢字,圖片,聲音等。這些信息對於單一經過弱電流傳輸的計算機來講太過於「複雜」,所以這些人類方便識別的信息被應用層經過各類特殊的編碼過程轉換成二進制數據。這就是上面所描述的「翻譯」過程,也是應用層在網絡數據傳輸過程當中最爲核心的貢獻。

2)傳輸層傳輸過程

在傳輸層,上面數據被分割成小的數據段,併爲每一個分段後的數據封裝TCP報文頭部。應用層將人們須要傳輸的信息轉換成計算機可以識別的二進制數據後,這些數據每每都是海量的。例如:一張高清晰的圖片轉換成二進制數據可能會有幾百萬甚至幾千萬位,如此龐大的數據一次性傳輸的話,一旦網絡出現問題而致使數據出錯就要從新傳輸,數據量過大會加大出錯的機率,最終可能會致使網絡資源耗盡。所以,將數據先分割成小段再逐段傳輸,一旦出現數據傳輸錯誤只需重傳這一小段數據便可。
在TCP頭部有一個關鍵的字段信息---端口號,它用於標識上層的協議或應用程序,確保上層應用數據的正常通訊。

3)網絡層傳輸過程

在網絡層,上層數據被封裝上新的報文頭部---IP頭部。值得注意的是,這裏所說的上層數據包括TCP頭部,也就是說,這裏的上層是指傳輸層。對於網絡層而言,它是「看不懂」TCP包頭中的內容的,在它看來,不管是應用層的應用數據,仍是TCP頭部信息都屬於上層數據。
在IP頭部中有一個關鍵的字段信息--IP地址,它是由一組32位的二進制數組成的,用於標識網絡的邏輯地址。回想剛纔寄信的例子,咱們在信封上填寫了對方的詳細地址和本地的詳細地址,以保證收件人可以順利收到信件。在網絡層的傳輸過程與其很相似,在IP頭部中包含目標IP地址和源IP地址,在網絡傳輸過程當中的一些中間設備,如路由器,會根據目標IP地址來邏輯尋址,找到正確的路徑將數據轉發到目的端。若是中間的路由設備發現目標的IP地址根本是不可能到達的,它將會把該消息傳回發送端主機,所以在網絡層須要同時封裝目標IP和源IP。

4)數據鏈路層傳輸過程

在數據鏈路層,上層數據被封裝一個MAC頭部,其內部有一個關鍵的字段信息--MAC地址,它由一組48位的二進制數組成。在目前階段,咱們先把它理解爲固化在硬件設備中的物理地址,具備全球惟一性。例如,以前講解的網卡就有屬於本身的惟一的MAC地址。和IP頭部相似,在MAC頭部同時封裝着目標MAC地址和源MAC地址。

5)物理層傳輸過程

不管在以前哪一層封裝的報文頭部仍是上層數據信息都是由二進制數組成的,在物理層,將這些二進制數字組成的比特流轉換成電信號在網絡中傳輸。

2.1.2 數據的解封裝過程

屏幕快照 2017-04-12 上午11.38.18.png-433.5kB

在物理層,首先將電信號轉換成二進制數據,並將數據送至數據鏈路層。在數據鏈路層,將查看目標MAC地址,判斷其是否與本身的MAC地址吻合,並據此完成後續處理。若是數據報文的目標MAC地址就是本身的MAC地址,數據的MAC頭部將被「拆掉」,並將剩餘的數據傳送至上一層;若是目標MAC地址不是本身的MAC地址,對於終端設備來講,它將會丟棄數據。在網絡層與在數據鏈路層相似,目標IP地址將被覈實是否與本身的IP地址相同,從而肯定是否送至上一層;到了傳輸層,首先要根據TCP頭部判斷數據段送往哪一個應用層協議或應用程序。而後將以前被分組的數據段重組,再送往應用層;在應用層,這些二進制數據將經歷複雜的解碼過程,以還原發送者所傳輸的最原始的信息。

2.1.3 網絡環境中的數據傳輸過程

若是網絡世界中只有終端設備,那將不能稱之爲網絡。正由於有不少中轉設備才造成了今天如此複雜的Internet網絡,只不過一向做爲網絡用戶的咱們沒有機會感知他們的存在,這都是傳輸層的「功勞」。因爲傳輸層經過端口號輔助上層創建最終用戶間的端到端會話,所以對於最終用戶而言,數據的真實傳輸過程都被掩藏起來。

例如:經過QQ軟件即便通訊時,用戶感受好像在和對方面對面溝通,全然不知本身要說的內容通過了多少交換機和路由器纔到達對方那裏,但這些過程是真實發生的。

在實際的網絡環境中,最終的發送方和接收方每每相隔千山萬水,中間會有不少的硬件設備起到中轉的做用。爲了說明整個過程,咱們假設了一種通訊結構,以下圖,在兩臺通訊的計算機之間增長了兩臺交換機和路由器,發送主機的數據將會通過這些「中間設備」才能到達接收主機。

屏幕快照 2017-04-12 下午2.24.49.png-596kB

  1. 發送主機按照以前講解的內容進行數據封裝。
  2. 從發送主機物理網卡發出的電信號經過網線到達交換機,交換機將電信號轉換成二進制數據送往交換機的數據鏈路層。由於交換機屬於數據鏈路層的設備,因此它將能夠查看數據幀頭部的內容,但不會進行封裝和解封裝過程。當交換機發現數據幀頭部封裝的MAC地址不屬於本身的MAC地址,他不會像終端設備那樣將數據幀丟棄,而是根據該MAC地址將數據幀智能地轉發到路由器設備,在轉發前要從新將二進制數據轉換成物理的電信號。
  3. 當路由器收到數據後,會拆掉數據鏈路層的MAC頭部信息,將數據送達網絡層,這樣IP頭部信息就「暴露」在最外面。路由器將檢測數據包頭部的目標IP地址信息,並根據該信息進行路由過程,智能地將數據報文轉發到下一跳路由器上,在轉發前要從新封裝新的MAC頭部信息,並將數據轉換成二進制數。
  4. 以後的過程有點大同小異了....

從這個過程咱們能夠看出,數據在傳輸過程當中不斷的進行着封裝和解封裝的過程,中間設備屬於哪一層就在哪一層對數據進行相關的處理,以實現設備的主要功能。也正因如此,咱們稱TCP/IP五層模型爲「參考」模型,參考這五層模型能夠幫助咱們很好的研究網絡中的設備以及設備工做過程當中遵照的協議。

2.1.4 網絡各層典型的硬件設備

層名稱 應用層 傳輸層 網絡層 數據鏈路層 物理層
典型設備 計算機 防火牆 路由器 交換機 網卡

三,瞭解TCP和UDP協議

屏幕快照 2017-04-12 下午3.10.49.png-404.1kB

3.1 TCP協議的特色

  1. TCP是面向鏈接的,可靠的進程到進程通訊的協議
  2. TCP提供全雙工服務,即數據可在同一時間雙向傳輸
  3. TCP將若干個字節構成一個分組,此分組稱爲報文段

3.2 TCP報文段的首部格式

屏幕快照 2017-04-12 下午3.19.32.png-424.7kB

格式 用途
源端口號 發送方進程對應的端口號
目標端口號 接收端收到數據段後,根據這個端口號來肯定把數據送給哪一個應用程序的進程
序號 當TCP從進程接收數據字節時,就把他們存儲在發送緩存中,並對每個字節進行編號。當數據到達目的地後,接收端會按照這個序號把數據從新排列,保證數據的正確性
確認號 是對發送端的確認信息,用它來告訴發送端這個序號以前的數據段都已經收到,如確認號是X,就是表示前X-1個數據段都已經收到
首部長度 用它能夠肯定首部數據結構的字節長度。通常狀況下TCP首部是20字節,但首部長度最大能夠擴展爲60字節
保留 這部分保留位做爲從此擴展功能用
控制位 這六位有很重要的做用,TCP的鏈接,傳輸和斷開都受這六個控制位的指揮
窗口值 說明本地可接收數據段的數目,這個值的大小是可變的,當網絡通暢時將這個窗口值變大以加快傳輸速度,當網絡不穩定時減少這個值可保證網絡數據的可靠傳輸,TCP協議中的流量控制機制就是依靠變化窗口的大小實現的
校驗和 用來作差錯控制,TCP校驗和的計算包括TCP首部,數據和其餘填充字節。在發送TCP數據段時,由發送端計算校驗和,當到達目的地時又進行一次校驗和計算。若這兩次的校驗和一致,則說明數據基本是正確的,不然將認爲該數據已被破壞,接收端將丟棄該數據
緊急指針 和URG配合使用
選項 TCP首部能夠有多達40字節的可選信息

3.3 TCP協議的三次握手和四次揮手

屏幕快照 2017-04-12 下午3.52.41.png-3440.3kB

報文類型 含義 狀態
SYN 發起一個新鏈接 1表示發起鏈接
FIN 釋放一個鏈接 1表示結束鏈接
ACK 確認序號有效 1表示序號有效
seq 隨機序號 隨機數
ack 隨機序號回覆 ack=seq+1

3.3.1 三次握手

1)第一次握手:Client將標誌位SYN置爲1,隨機產生一個seq=x,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。

2)第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求創建鏈接,Server將標誌位SYN和ACK都置爲1,ack=x+1,隨機產生一個值seq=y,並將該數據包發送給Client以確認鏈接請求,Server進入SYN_RCVD狀態。

3)第三次握手:Client收到確認後,檢查ack是否爲x+1,ACK是否爲1,若是正確則將標誌位ACK置爲1,ack=y+1,並將該數據包發送給Server,Server檢查ack是否爲y+1,ACK是否爲1,若是正確則鏈接創建成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間能夠開始傳輸數據了。

3.3.2 四次揮手

1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳輸,同時發送一個seq=x的隨機序號。Client進入FIN_wait_1狀態

2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號)Server進入CLOSE_WAIT狀態。

3)第三次揮手:Server發送一個FIN,用來關閉Server到CLient的數據傳輸,同時發送一個seq=y的隨機數,Server進入LAST_ACK狀態

4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號爲收到序號+1,Server進入CLOSED狀態,完成四次回揮手

3.4 經常使用的TCP端口號及其功能

TCP在網絡中的應用範圍很廣,主要用在對數據傳輸可靠性要求高的環境中,如網頁瀏覽,它使用的HTTP協議就是依賴TCP協議提供可靠性的。

屏幕快照 2017-04-12 下午4.01.56.png-1192.7kB

3.5 UDP協議

屏幕快照 2017-04-12 下午3.10.49.png-404.1kB

3.5.1 UDP協議的特色

  1. UDP是一個無鏈接,不保證可靠性的傳輸層協議,也就是說發送端不關心發送的數據是否到達目標主機,數據是否出錯等,收到數據的主機也不會告訴發送方是否收到了數據,它的可靠性由上層協議來保障
  2. 既然UDP有這樣的缺點,那爲何進程還願意使用它呢?由於UDP也有優勢,UDP的首部結構簡單,在數據傳輸時能實現最小的開銷,若是進程想發送很短的報文而不關心可靠性,就可使用UDP

3.5.2 UDP的報文

屏幕快照 2017-04-12 下午4.08.38.png-208.7kB

格式 用途
UDP長度 用來指出UDP的總長度,爲首部加上數據
校驗和 用來完成對UDP數據的差錯檢驗,它的計算與TCP校驗和相似。這是UDP協議提供的惟一可靠機制

3.5.3 經常使用的UDP端口號及其功能

UDP協議在實際工做中的應用也比較多,例如聊天工具QQ在處理髮送短消息時就是使用了UDP的方式。不難想象,若是發送十幾個字的短消息也使用TCP協議進行一系列的驗證,將致使傳輸率大大降低。有誰願意用一個「反應遲鈍」的軟件進行網絡聊天呢?

屏幕快照 2017-04-12 下午4.17.38.png-624.6kB

相關文章
相關標籤/搜索