計算機網絡基礎

計算機網絡簡介

計算機網絡英語:computer network),一般也簡稱網絡,是利用通訊設備和線路將地理位置不一樣的、功能獨立的多個計算機系統鏈接起來,以功能完善的網絡軟件實現網絡的硬件、軟件及資源共享和信息傳遞的系統。簡單的說即鏈接兩臺或多臺計算機進行通訊的系統。mysql

帶寬和延遲:咱們把網絡比喻成公路,帶寬大比如公路寬,能夠跑的車也就多;而延遲能夠能夠看做是路況,延遲高說明路況很差,堵車。算法

網絡的拓撲:sql

  • 總線型
  • 環狀型
  • 雙環型
  • 星型
  • 擴展的星型
  • 部分網狀型
  • 全網狀型

網絡通訊模式:緩存

  • 單播:主機之間「一對一」的通信模式
  • 組播:主機之間「一對一組」的通信模式
  • 廣播:主機之間「一對全部」的通信模式

網絡從範圍可劃分:安全

  • 局域網:(Local Area Network),簡稱LAN,是指在某一區域內由多臺計算機互聯成的計算機組。
  • 廣域網:(Wide Area Network),簡稱WAN,是一種跨越大的、地域性的計算機網絡的集合。

網絡中的經常使用概念:服務器

  • 衝突域:若是一天機器發數據,另外一臺也在發數據,數據衝突了,那麼這倆臺機器在同一衝突域
  • 廣播域:一個主機向外發廣播,其餘主機收到廣播就說明在一個廣播域中,基於廣播機制通訊

OSI七層參考模型

開放式系統互聯通訊參考模型英語:Open System Interconnection Reference Model,縮寫爲 OSI),簡稱爲OSI模型(OSI model),一種概念模型,由國際標準化組織提出,一個試圖使各類計算機在世界範圍內互連爲網絡的標準框架。網絡

七:應用層(Application Layer):提供爲應用軟件而設的接口,以設置與另外一應用軟件之間的通訊。例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。架構

六:表示層(Presentation Layer):把數據轉換爲能與接收者的系統格式兼容並適合傳輸的格式。oracle

五:會話層(Session Layer):負責在數據傳輸中設置和維護電腦網絡中兩臺電腦之間的通訊鏈接。框架

四:傳輸層(Transport Layer):把傳輸表頭(TH)加至數據以造成數據包。傳輸表頭包含了所使用的協議等發送信息。例如:傳輸控制協議(TCP)等。

三:網絡層(Network Layer):決定數據的路徑選擇和轉寄,將網絡表頭(NH)加至數據包,以造成分組。網絡表頭包含了網絡數據。例如:互聯網協議(IP)等。

二:數據鏈路層(Data Link Layer):負責網絡尋址、錯誤偵測和改錯。當表頭和表尾被加至數據包時,會造成幀。數據鏈表頭(DLH)是包含了物理地址和錯誤偵測及改錯的方法。數據鏈表尾(DLT)是一串指示數據包末端的字符串。例如以太網、無線局域網(Wi-Fi)和通用分組無線服務(GPRS)等。

一:物理層(Physical Layer):在局部局域網上傳送數據幀(data frame),它負責管理電腦通訊設備和網絡媒體之間的互通。包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機適配器等。

PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位

  1. 物理層的 PDU是-------------數據位 bit
  2. 數據鏈路層的 PDU是-------數據幀 frame
  3. 網絡層的PDU是--------------數據包 packet
  4. 傳輸層的 PDU是-------------數據段 segment
  5. 其餘更高層次的PDU是-----消息 message

TCP/IP協議棧

是一個網絡通訊模型,以及一整個網絡傳輸協議家族,爲互聯網的基礎通訊架構。它常被通稱爲TCP/IP協議族(英語:TCP/IP Protocol Suite,或TCP/IP Protocols),簡稱TCP/IP。由於該協議家族的兩個核心協議:TCP(傳輸控制協議)和IP(網際協議),爲該家族中最先經過的標準。因爲在網絡通信協議廣泛採用分層的結構,當多個層次的協議共同工做時,相似計算機科學中的堆棧,所以又被稱爲TCP/IP協議棧(英語:TCP/IP Protocol Stack)。這些協議最先發源於美國國防部(縮寫爲DoD)的ARPA網項目,所以也被稱做DoD模型(DoD Model)。

一:網絡接口層(Network Access)

對應OSI模型的物理層和數據鏈路層,下面總結一下工做在此層的設備及協議:

+工做在網絡接口層的設備:

一、線纜

 

網絡傳輸線纜有雙絞線,同軸電纜和光纖,如今同軸電纜已經被淘汰了;雙絞線的傳輸距離在100m之內,同軸電纜(細):<185m,同軸電纜(粗):<500m

雙絞線可分爲屏蔽式和非屏蔽式,屏蔽式雙絞線孔幹饒更好

雙絞線線序:

  • T568A:綠白,綠-橙白-藍-藍白-橙-棕白-棕
  • T568B:橙白,橙-綠白-藍-藍白-綠-棕白-棕

雙絞線還分爲直通線和交叉線,相同類設備鏈接用交叉線,不一樣類設備用直連線,不過如今的網絡設備能夠只能識別收發

RJ-45:

若是速度在100Mdps之內使用1236線來傳輸,若是超過100Mdps到1000Mdps時使用所有線路傳輸,若是大於1000Mdps時使用八條線路全雙工模式傳輸。

GBIC是Giga Bitrate Interface Converter的縮寫,是將千兆位電信號轉換爲光信號的接口器件。

二、集線器(Hub)

集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把全部節點集中在以它爲中心的節點上。

集線器工做在物理層,不會記錄MAC地址,hub中的設備共享網絡帶寬,半雙工工做模式。

三、以太網橋

網橋工做在OSI模型中的物理層和數據鏈路層。

網橋(Bridge)是早期的兩端口二層網絡設備,用來鏈接不一樣網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離衝突域。

以太網橋能夠監聽和學習數據幀中的源MAC地址,創建MAC地址表,若是是未知的目標MAC則轉發到監聽端口外的全部端口,若是是MAC表中有的目標地址則會直接轉發到相應的端口。

網橋轉發全部廣播報文,能夠隔離衝突域,可是沒法隔離廣播域

四、交換機

交換機的工做原理和以太網橋相同。可是比網橋有更高級的功能

二層交換機工做於數據鏈路層。交換機內部的CPU會在每一個端口成功鏈接時,經過將MAC地址和端口對應,造成一張MAC表。在從此的通信中,發往該MAC地址的數據包將僅送往其對應的端口,而不是全部的端口。所以交換機可用於劃分數據鏈路層廣播,即衝突域;但它不能劃分網絡層廣播,即廣播域。

交換機端口的工做模式:Access(普通模式),Multi(多vlan模式),Trunk(中繼模式)

  • trunk模式的端口用於交換機與交換機
  • Access多用於接入終端設備,如PC機、服務器、打印服務器等

以太網幀的結構:

Preamble:前導信息

Destination Address:目標MAC地址

Source Address:源MAC地址

Type:上層協議類型

Data:數據

FCS:校驗位

MAC地址

物理地址(Physical Address),它是一個用來確認網絡設備位置的地址。MAC地址用於在網絡中惟一標示一個網卡,一臺設備如有一或多個網卡,則每一個網卡都須要並會有一個惟一的MAC地址。

MAC地址共48位(6個字節),以十六進制表示。前24位由IEEE決定如何分配,後24位由實際生產該網絡設備的廠商自行指定。ff:ff:ff:ff:ff:ff則做爲廣播地址。

虛擬局域網(VLAN)

是一種建構於局域網交換技術(LAN Switch)的網絡管理的技術,網管人員能夠藉此經過控制交換機有效分派出入局域網的數據包到正確的出入端口,達到對不一樣實體局域網中的設備進行邏輯分羣(Grouping)管理,並下降局域網內大量數據流通時,因無用數據包過多致使擁塞的問題,以及提高局域網的信息安全保障。

 VLAN的特色:

  • 隔離廣播域
  • 帶寬利用
  • 下降延遲
  • 安全性提升
  • 管理靈活

    二:網絡互聯層(Internet)

    +工做在網絡互聯層的網絡設備

    路由器(Router)

    提供路由與轉送兩種重要機制,能夠決定數據包歷來源端到目的端所通過的路由路徑(host到host之間的傳輸路徑),這個過程稱爲路由;將路由器輸入端的數據包移送至適當的路由器輸出端(在路由器內部進行),這稱爲轉送。

    路由工做在OSI模型的網絡層

    把一個數據包從一個設備發送到不一樣網絡裏的另外一個設備上去。這些工做依靠路由器來完成。路由器只關心網絡的狀態和決定網絡中的最佳路徑。路由的實現依靠路由器中的路由表來完成。

    路由器的負責:

    1. 分隔廣播域
    2. 選擇路由表中到達目標最好的路徑
    3. 維護和檢查路由信息
    4. 鏈接廣域網

傳輸層(Transport)

一、傳輸控制協議(TCP)Transmission Control Protocol

是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,由IETF的RFC 793定義。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能

TCP的工做特性:

  1. 工做在傳輸層
  2. 面向鏈接協議
  3. 全雙工協議
  4. 半關閉
  5. 錯誤檢查
  6. 將數據打包成段,排序
  7. 確認機制
  8. 數據恢復,重傳
  9. 流量控制,滑動窗口
  10. 擁塞控制,慢啓動和擁塞避免算法

端口號:計算機上的進程要和其餘進程通訊是要經過計算機端口的,而一個計算機端口某個時刻只能被一個進程佔用,因此經過指定源端口和目標端口,就能夠知道是哪兩個進程須要通訊。

  源端口和目的端口用16bit標識,最大標識2^16=65536 個端口

0-1023:系統端口

1024-29151:普通用戶端口

49152-65535:客戶段隨機端口

常見應用的端口號

http 80

https 443

ftp 20/21

dns 53

tftp 69

smtp25

pop3 110

map 143

telnet 23

ssh 22

mysql 3306

oracle 1521

sql server 1433

[root@rhel6 ~]# cat /etc/services 查看當前已使用的全部協議及端口號

[root@rhel6 ~]# cat /proc/sys/net/ipv4/ip_local_port_range 查看客戶端端口範圍

序列號(序號):表示本報文段所發送數據的第一個字節的編號。在TCP鏈接中所傳送的字節流的每個字節都會按順序編號。因爲序列號由32位表示,因此每2^32個字節,就會出現序列號迴繞,再次從 0 開始。

確認號:表示接收方指望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我但願你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號

數據偏移:表示TCP報文段的首部長度,共4位,因爲TCP首部包含一個長度可變的選項部分,須要指定這個TCP報文段到底有多長。它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節爲計算單位),4位二進制最大表示15,因此數據偏移也就是TCP首部最大60字節

URG:表示本報文段中發送的數據是否包含緊急數據。後面的緊急指針字段(urgentpointer)只有當URG=1時纔有效;

ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段纔有效。TCP規定,鏈接創建後,ACK必須爲1,帶ACK標誌的TCP報文段稱爲確認報文段;

PSH:提示接收端應用程序應該當即從TCP接收緩衝區中讀走數據,爲接收後續數據騰出空間。若是爲1,則表示對方應當當即把數據提交給上層應用,而不是緩存起來,若是應用程序不將接收到的數據讀走,就會一直停留在TCP接收緩衝區中;

RST:若是收到一個RST=1的報文,說明與主機的鏈接出現了嚴重錯誤(如主機崩潰),必須釋放鏈接,而後再從新創建鏈接。或者說明上次發送給主機的數據有問題,主機拒絕響應,帶RST標誌的TCP報文段稱爲復位報文段;

SYN:在創建鏈接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求創建鏈接的報文段;當SYN=1,ACK=1時,表示對方贊成創建鏈接。SYN=1,說明這是一個請求創建鏈接或贊成創建鏈接的報文。只有在前兩次握手中SYN才置爲1,帶SYN標誌的TCP報文段稱爲同步報文段;

FIN:表示通知對方本端要關閉鏈接了,標記數據是否發送完畢。若是FIN=1,即告訴對方:「個人數據已經發送完畢,你能夠釋放鏈接了」,帶FIN標誌的TCP報文段稱爲結束報文段。

窗口大小:表示如今容許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始容許對方發送的數據量

  • 固定窗口:每次固定發送必定數量的包
  • 滑動窗口:根據雙方的性能動態調整每次發送包的數量

校驗和:提供額外的可靠性

緊急指針:標記緊急數據在數據字段中的位置

選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表示,選項部分最長爲:(2^4-1)*4-20=40字節

常見選項:

  1. 最大報文段長度:Maxium Segment Size,MSS
    • 指明本身指望對方發送TCP報文段時那個數據字段的長度。默認是536字節。數據字段的長度加上TCP首部的長度纔等於整個TCP報文段的長度。MSS不宜設的太大也不宜設的過小。若選擇過小,極端狀況下,TCP報文段只含有1字節數據,在IP層傳輸的數據報的開銷至少有40字節(包括TCP報文段的首部和IP數據報的首部)。這樣,網絡的利用率就不會超過1/41。若TCP報文段很是長,那麼在IP層傳輸時就有可能要分解成多個短數據報片。在終點要把收到的各個短數據報片裝配成原來的TCP報文段。當傳輸出錯時還要進行重傳,這些也都會使開銷增大。所以MSS應儘量大,只要在IP層傳輸時不須要再分片就行。在鏈接創建過程當中,雙方都把本身可以支持的MSS寫入這一字段。 MSS只出如今SYN報文中。即:MSS出如今SYN=1的報文段中。
  2. 窗口擴大:Windows Scaling
    • 爲了擴大窗口,因爲TCP首部的窗口大小字段長度是16位,因此其表示的最大數是65535。可是隨着時延和帶寬比較大的通訊產生(如衛星通訊),須要更大的窗口來知足性能和吞吐率,因此產生了這個窗口擴大選項。
  3. 時間戳:Timestamps
    • 能夠用來計算RTT(往返時間),發送方發送TCP報文時,把當前的時間值放入時間戳字段,接收方收到後發送確認報文時,把這個時間戳字段的值複製到確認報文中,當發送方收到確認報文後便可計算出RTT。也能夠用來防止迴繞序號PAWS,也能夠說能夠用來區分相同序列號的不一樣報文。由於序列號用32爲表示,每2^32個序列號就會產生迴繞,那麼使用時間戳字段就很容易區分相同序列號的不一樣報文。

TCP的三次握手和四次揮手+++++++

  1. 由客戶端發起tcp請求,SYN=1,seq=x,從而從CLOSED狀態轉變成SYNSEND狀態,準備接受服務器的響應;
  2. 服務器收到SYN=1的包後迴應一個SYN=1,ACK=1表示確認,序列號爲y,確認號爲x+1表示收到客戶端的x包,服務器的狀態從LISTEN轉換成SYNRCVD,準備接受客戶端的下一個確認包;
  3. 客戶端收到服務器的響應,從而回復一個ACK=1確認包,seq=x+1表示發送本身的下一個包,ack=y+1表示收到了服務器的y包;

客戶端發出確認包後從SYNSEND狀態切換到ESTABLISHED(已鏈接狀態);服務器收到ESTABLISHED(已鏈接狀態),接下來就能夠愉快的通訊了。

當數據傳輸完成時須要斷開鏈接,由客戶端或者服務器,或者同時發起斷開請求,咱們下面只假設客戶端發起分手請求來討論:

  1. 客戶端發起FIN=1表示斷開請求包,seq=u本身的數據包序號,發出FIN包後當即從ESTABLISHED狀態轉換爲FIN-WAIT-1狀態,等待服務器的確認;
  2. 服務器收到FIN=1的包後,迴應一條ACK=1的包,表示本身已經收到客戶段的分手請求,從而轉換爲CLOSE-WAIT狀態;客戶端收到ACK=1的包後從FIN-WAIT-1狀態轉換爲FIN-WAIT-2狀態,繼續等待服務器的贊成請求;
  3. 當服務器繼續發出FIN=1,ACK=1表示服務器贊成分手,從而由CLOSE-WAIT狀態切換到LAST-ACK狀態,等待客戶端的最後一次確認請求;
  4. 客戶端收到FIN=1的包後再次發出一個最後的ACK=1確認包,從而轉換從TIME-WAIT狀態,等待2個MSL(一個包從客戶端到服務器的時間爲一個MSL時間)時間,確保服務器最後的包所有接受後轉換成CLOSED狀態;服務器收到最後的ACK=1包後也轉換爲CLOSED狀態。

一次tcp的會話完成!

TCP的有限狀態機+++++++

  1. CLOSED 沒有任何鏈接狀態
  2. LISTEN 偵聽狀態,等待來自遠方TCP端口的鏈接請求
  3. SYN-SENT 在發送鏈接請求後,等待對方確認
  4. SYN-RECEIVED 在收到和發送一個鏈接請求後,等待對方確認
  5. ESTABLISHED 表明傳輸鏈接創建,雙方進入數據傳送狀態
  6. FIN-WAIT-1 主動關閉,主機已發送關閉鏈接請求,等待對方確認
  7. FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸鏈接確認,等待對方發送關閉傳輸鏈接請求
  8. TIME-WAIT 完成雙向傳輸鏈接關閉,等待全部分組消失
  9. CLOSE-WAIT 被動關閉,收到對方發來的關閉鏈接請求,並已確認
  10. LAST-ACK 被動關閉,等待最後一個關閉傳輸鏈接確認,並等待全部分組消失
  11. CLOSING 雙方同時嘗試關閉傳輸鏈接,等待對方確認

用戶數據報協議(UDP)User Datagram Protocol

是一個簡單的面向數據報的傳輸層協議

UDP特性:

  1. 工做在傳輸層
  2. 提供不可靠的網絡訪問
  3. 非面向鏈接協議
  4. 有限的錯誤檢查
  5. 傳輸性能高
  6. 無數據恢復特性

互聯網控制消息協議(ICMP)Internet Control Message Protocol

是互聯網協議族的核心協議之一。它用於TCP/IP網絡中發送控制消息,提供可能發生在通訊環境中的各類問題反饋,經過這些信息,使管理者能夠對所發生的問題做出診斷,而後採起適當的措施解決。

ICMP依靠IP來完成它的任務,它是IP的主要部分。它與傳輸協議(如TCP和UDP)顯著不一樣:它通常不用於在兩點間傳輸數據。它一般不禁網絡程序直接使用,除了ping和traceroute這兩個特別的例子。 

應用層(Application)

TCP/IP協議棧中把ISO七層模型中的會話層,表示層,應用層所有合爲應用層。

  運行在TCP協議上的協議:

  1. HTTP(Hypertext Transfer Protocol,超文本傳輸協議),主要用於普通瀏覽。
  2. HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協議),HTTP協議的安全版本。
  3. FTP(File Transfer Protocol,文件傳輸協議),由名知義,用於文件傳輸。
  4. POP3(Post Office Protocol, version 3,郵局協議),收郵件用。
  5. SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議),用來發送電子郵件。
  6. TELNET(Teletype over the Network,網絡電傳),經過一個終端(terminal)登錄到網絡。
  7. SSH(Secure Shell,用於替代安全性差的TELNET),用於加密安全登錄用。

  運行在UDP協議上的協議:

  1. BOOTP(Boot Protocol,啓動協議),應用於無盤設備。
  2. NTP(Network Time Protocol,網絡時間協議),用於網絡同步。
  3. DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),動態配置IP地址。

IP地址

它們可惟一標識 IP 網絡中的每臺設備

每臺主機(計算機、網絡設備、外圍設備)必須具備惟一的地址 IP地址由兩部分組成:

• 網絡ID:

• 標識網絡 • 每一個網段分配一個網絡ID

• 主機 ID:

• 標識單個主機

• 由組織分配給各設備