網絡管理

網絡概念

什麼是網絡
  是指將地理位置不同的具有獨立功能的多臺計算機及其外部設備,通過通信線路連接起來,在網絡操作系統,網絡管理軟件及網絡通信協議的管理和協調下,實現資源共享和信息傳遞的計算機系統。

資源共享的功能

1、數據和應用程序
2、資源
3、網絡存儲
4、備份設備
網絡管理

常見的網絡組件

路由器、交換機、服務器、普通PC機、網卡、網線

網絡管理

網絡應用程序

1、web瀏覽器
  (Chrome、IE、Firefox等)
2、即時消息
  (QQ、微信、釘釘等)
3、電子郵件
  (Outlook、foxmail等)
4、協作
  (視頻會議、VNC、Netmeeting、WebEx 等)
5、web網絡服務
  (apache,nginx,IIS)
6、文件網絡服務
  (ftp,nfs,samba)
7、數據庫服務
  (MySQL,MariaDB, MongoDB)
8、中間件服務
  (Tomcat,JBoss等)
9、安全服務
  (Netfilter)

用戶應用程序對網絡的影響

批處理應用程序
  FTP、TFTP、庫存更新
  無需直接人工交互
  帶寬很重要,但並非關鍵性因素
交互式應用程序
  庫存查詢、數據庫更新
  人機交互
  因爲用戶需等待響應,所以響應時間很重要,但並非關鍵性因素,除非要等待很長時間
實時應用程序
  VoIP、視頻
  人與人的交互
  端到端的延時至關重要

網絡的特性

1、速度
2、成本
3、安全性
4、可用性
5、可擴展性
6、可靠性
7、拓撲

物理拓撲分類

總線型拓撲
    所有的網絡設備都是連接到公共的幹道上
  特性:
    所有的網絡設備串到幹道上,其中一臺機器在這個範圍類傳輸數據,只要是在這個幹道上的成員都能收到
  缺點
    每次只能走一路信號,如果有兩臺機器在其中傳輸數據時,務必會起衝突,數據造成破壞,雙方都會造成通信失敗,只能重新傳輸,連接的機器越多,性能越差,
星型拓撲
  通過中心點傳輸
  單一故障點
環形拓撲
  信號繞環傳輸
  單一故障點
雙環拓撲
  有容錯能力
  信號沿相反方向傳輸
  比單環的復原能力更強
  典型代表:FDDI、FDDI適合城市
全網狀拓撲
  容錯能力強
  實施成本高
  一般用於電信、移動、聯通的骨幹網

主機通信

舊模型
  專有產品、每個公司的設備不通用,只有自己公司的設備能相互連接使用、由一個廠商控制應用程序和嵌入的軟件
基於標準的模型
   由國際標準組織定義的
   多廠商軟件
   分層方法

網絡模型分層

網絡管理

降低複雜性
標準化接口
簡化模塊化設計
確保技術的互操作性
加快發展速度
簡化教學

OSI模型的七層結構

7、應用層: 網絡進程訪問應用層
    爲應用程序進程提供網絡服務
    提供用戶身份驗證
6、表示層: 數據表示
     確保接受系統可以讀出該數據
     格式化數據
     構建數據
     協商用於應用成的數據傳輸語法、提供加密
5、會話層:主機間通信
     建立、管理終止在應用程序之間的會話
4、傳輸層:傳輸問題
     確保數據傳輸的可靠性
     建立、維護和終止虛擬電路
     通過錯誤檢測和恢復
     信息流控來保障可靠性
3、網絡層:數據傳輸
     路由數據包
     選擇傳遞數據的最佳路徑
     支持邏輯尋址和路徑選擇
2、數據鏈路層: 訪問介質
     定義如何格式化數據以便進行傳輸以及如何控制對網絡的訪問
     支持錯誤檢測
1、物理層:二進制傳輸
     爲啓動、維護以及關閉物理鏈路定義了電氣規範、機械規範、過程規範和功能規範
網絡管理

數據封裝、數據解封

網絡管理
網絡管理

PDU

1、PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位
2、物理層的PDU是數據位bit
3、數據鏈路層的PDU是數據幀frame
4、網絡層的PDU是數據包packet
5、傳輸層的PDU是數據段segment
6、其他更高層次的PDU是消息message

三種通訊模式

1、單播
網絡管理
2、廣播
網絡管理
3、組播
網絡管理

LAN:局域網local area network

1、所謂的局域網不是指大小,也不是指單純兩臺主機連接距離的問題,主要的是關注它採用什麼樣的技術,
2、局域網是基於廣播方式進行通信
3、廣域網是基於點對點方式進行通信
4、廣域網和局域網是一對概念

LAN 標準
網絡管理

以太網幀結構
網絡管理

數據鏈接層
網絡管理

MAC地址
網絡管理
網絡管理

衝突檢測的載波偵聽多路訪問CSMA/CD

CSMA/CD:衝突檢測的載波偵聽多路訪問
  所有設備連接到公共的幹道上,如果一臺機器要發送數據,先聽一聽網絡中有沒有人當前在發送數據,當沒人傳時,剛要傳,另外一個也發現目前網絡中也沒人傳輸,它也開始傳輸,然後當它兩一起傳的時候這個時候就發生衝突了,後退算法,時間雙倍,
網絡管理

Hub集線器

1、Hub:多端口中繼器
2、Hub並不記憶該信息包是由哪個MAC地址發出,哪個MAC地址在Hub的哪個端口
3、Hub的特點:
   共享帶寬
   半雙工
4、工作層次:
   物理層

以太網橋

交換式以太網的優勢
   擴展了網絡帶寬
   分割了網絡衝突域,使網絡衝突被限制在最小的範圍內
   交換機作爲更加智能的交換設備,能夠提供更多用戶所要求的功能:優先級、虛擬網、遠程檢測……

網橋的工作原理

1、以太網橋監聽數據幀中源MAC地址,學習MAC,建立MAC表
2、對於未知MAC地址,網橋將轉發到除接收該幀的端口之外的所有端口
3、當網橋接到一個數據幀時,如果該幀的目的位於接收端口所在網段上,它就過濾掉該數據幀;如果目的MAC地址在位於另外一個端口,網橋就將該幀轉發到該端口
4、當網橋接到廣播幀時候,它立即轉發到除接收端口之外的所有其他端口
5、工作層次:數據鏈路層
網絡管理
網絡管理
網絡管理
網絡管理
網絡管理

Hub和網橋

1、集線器屬於OSI的第一層物理層設備,而網橋屬於OSI的第二層數據鏈路層設備
2、從工作方式來看,集線器是一種廣播模式,所有端口在一個衝突域裏面。網橋的可以通過端口隔離衝突
3、Hub是所有共享總線和共享帶寬。網橋每個端口占一個帶寬
網絡管理

路由器

1、爲了實現路由,路由器需要做下列事情
2、分隔廣播域
3、選擇路由表中到達目標最好的路徑
4、維護和檢查路由信息
5、連接廣域網
路由器靠什麼來選擇最佳路徑的呢
   把一個數據包從一個設備發送到不同網絡裏的另一個設備上去。這些工作依靠路由器來完成。路由器只關心網絡的狀態和決定網絡中的最佳路徑。路由的實現依靠路由器中的路由表來完成
路由表:
   目標網絡
   接口:本路由器的出口
   網關:下一個路由鄰近本路由器接口IP
   metric:值越小,優先級越高

VLAN:虛擬局域網

在一個交換機上,把不同的接口,邏輯上拆分成不同的組成部分
分隔廣播域、安全、靈活管理
VLAN = 廣播域= 邏輯網絡(Subnet)

TCP/IP協議棧

Transmission Control Protocol
  /Internet Protocol
  傳輸控制協議/因特網互聯協議
最早發源於美國國防部(縮寫爲DoD)的因特網的前身ARPA網項目,1983年1月1日,TCP/IP取代了舊的網絡控制協議NCP,成爲今天的互聯網和局域網的基石和標準,由互聯網工程任務組負責維護
TCP/IP是一個Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等許多協議
共定義了四層、和ISO參考模型的分層有對應關係
網絡管理
網絡管理

可靠性vs.高效性
網絡管理

TCP特性

   工作在傳輸層
   面向連接協議
   全雙工協議
   半關閉
   錯誤檢查
   將數據打包成段,排序
   確認機制
   數據恢復,重傳
   流量控制,滑動窗口
   擁塞控制,慢啓動和擁塞避免算法

TCP包頭
網絡管理

   源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程佔用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數爲2^16個
   序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會按順序編號。由於序列號由32位表示,所以每2^32個字節,就會出現序列號迴繞,再次從0 開始
   確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號
   數據偏移:表示TCP報文段的首部長度,共4位,由於TCP首部包含一個長度可變的選項部分,需要指定這個TCP報文段到底有多長。它指出TCP 報文段的數據起始處距離TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節爲計算單位),4位二進制最大表示15,所以數據偏移也就是TCP首部最大60字節
   URG:表示本報文段中發送的數據是否包含緊急數據。後面的緊急指針字段(urgent pointer)只有當URG=1時纔有效
   ACK:表示是否前面確認號字段是否有效。只有當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字節
   常見選項:
     最大報文段長度:MaxiumSegment Size,MSS
      窗口擴大:Windows Scaling
      時間戳:Timestamps

TCP包頭選項

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

TCP協議PORT

傳輸層通過port號,確定應用層協議
Port number:
tcp:傳輸控制協議,面向連接的協議;通信前需要建立虛擬鏈路;結束後拆除鏈路
   0-65535
udp:User Datagram Protocol,無連接的協議
   0-65535
IANA:互聯網數字分配機構(負責域名,數字資源,協議分配)
   0-1023:系統端口或特權端口(僅管理員可用) ,衆所周知,永久的分配給固定的系統應用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
   1024-49151:用戶端口或註冊端口,但要求並不嚴格,分配給程序註冊爲某應用使用,1433/tcp(SqlServer),1521/tcp(oracle),
3306/tcp(mysql),11211/tcp/udp(memcached)
  49152-65535:動態端口或私有端口,客戶端程序隨機使用的端口
   其範圍的定義:/proc/sys/net/ipv4/ip_local_port_range

[root@centos7 ~]# cat /proc/sys/net/ipv4/ip_local_port_range              
32768   60999

TCP三次握手、TCP四次揮手

網絡管理
網絡管理

有限狀態機

客戶端先發送一個FIN給服務端,自己進入了FIN_WAIT_1狀態,這時等待接收服務端的報文,該報文會有三種可能:
   只有服務端的ACK
   只有服務端的FIN
   基於服務端的ACK,又有FIN
1、只收到服務器的ACK,客戶端會進入FIN_WAIT_2狀態,後續當收到服務端的FIN時,迴應發送一個ACK,會進入到TIME_WAIT狀態,這個狀態會持續2MSL(TCP報文段在網絡中的最大生存時間, RFC 1122標準的建議值是2min).客戶端等待2MSL,是爲了當最後一個ACK丟失時,可以再發送一次。因爲服務端在等待超時後會再發送一個FIN給客戶端,進而客戶端知道ACK已丟失
2、只有服務端的FIN時,迴應一個ACK給服務端,進入CLOSING狀態,然後接收到服務端的ACK時,進入TIME_WAIT狀態
3、同時收到服務端的ACK和FIN,直接進入TIME_WAIT狀態
網絡管理

客戶端的典型狀態轉移

 客戶端通過connect系統調用主動與服務器建立連接connect系統調用首先給服務器發送一個同步報文段,使連接轉移到SYN_SENT狀態。
 此後connect系統調用可能因爲如下兩個原因失敗返回:
   1、如果connect連接的目標端口不存在(未被任何進程監聽),或者該端口仍被處於TIME_WAIT狀態的連接所佔用(見後文),則服務器將給客戶端發送一個復位報文段,connect調用失敗。
   2、如果目標端口存在,但connect在超時時間內未收到服務器的確認報文段,則connect調用失敗。
connect調用失敗將使連接立即返回到初始的CLOSED狀態。如果客戶端成功收到服務器的同步報文段和確認,則connect調用成功返回,連接轉移至ESTABLISHED狀態。
 當客戶端執行主動關閉時,它將向服務器發送一個結束報文段,同時連接進入FIN_WAIT_1狀態。若此時客戶端收到服務器專門用於確認目的的確認報文段,則連接轉移至FIN_WAIT_2狀態。當客戶端處於FIN_WAIT_2狀態時,服務器處於CLOSE_WAIT狀態,這一對狀態是可能發生半關閉的狀態。此時如果服務器也關閉連接(發送結束報文段),則客戶端將給予確認並進入TIME_WAIT狀態
 客戶端從FIN_WAIT_1狀態可能直接進入TIME_WAIT狀態(不經過FIN_WAIT_2狀態),前提是處於FIN_WAIT_1狀態的服務器直接收到帶確認信息的結束報文段(而不是先收到確認報文段,再收到結束報文段)
 處於FIN_WAIT_2狀態的客戶端需要等待服務器發送結束報文段,才能轉移至TIME_WAIT狀態,否則它將一直停留在這個狀態。如果不是爲了在半關閉狀態下繼續接收數據,連接長時間地停留在FIN_WAIT_2狀態並無益處。連接停留在FIN_WAIT_2狀態的情況可能發生在:客戶端執行半關閉後,未等服務器關閉連接就強行退出了。此時客戶端連接由內核來接管,可稱之爲孤兒連接(和孤兒進程類似)
 Linux爲了防止孤兒連接長時間存留在內核中,定義了兩個內核參數:
  /proc/sys/net/ipv4/tcp_max_orphans 指定內核能接管的孤兒連接數目
  /proc/sys/net/ipv4/tcp_fin_timeout指定孤兒連接在內核中生存的時間

#指定內核能接管的孤兒連接默認數目
[root@centos7 ~]# cat /proc/sys/net/ipv4/tcp_max_orphans 
8192
#指定孤兒連接在內核中生存的默認時間
[root@centos7 ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
60

TCP超時重傳

1、異常網絡狀況下(開始出現超時或丟包),TCP控制數據傳輸以保證其承諾的可靠服務
2、TCP服務必須能夠重傳超時時間內未收到確認的TCP報文段。爲此,TCP模塊爲每個TCP報文段都維護一個重傳定時器,該定時器在TCP報文段第一次被髮送時啓動。如果超時時間內未收到接收方的應答,TCP模塊將重傳TCP報文段並重置定時器。至於下次重傳的超時時間如何選擇,以及最多執行多少次重傳,就是TCP的重傳策略
3、與TCP超時重傳相關的兩個內核參數:
   /proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管之前TCP最少執行的重傳次數,默認值是3

[root@centos7 ~]# cat /proc/sys/net/ipv4/tcp_retries1
3

   /proc/sys/net/ipv4/tcp_retries2,指定連接放棄前TCP最多可以執行的重傳次數,默認值15(一般對應13~30min)

[root@centos7 ~]# cat /proc/sys/net/ipv4/tcp_retries2
15

擁塞控制

  網絡中的帶寬、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可承受的能力,網絡的性能就會變壞。這種情況就叫做擁塞
  TCP爲提高網絡利用率,降低丟包率,並保證網絡資源對每條數據流的公平性。即所謂的擁塞控制
   TCP擁塞控制的標準文檔是RFC 5681,其中詳細介紹了擁塞控制的四個部分:慢啓動(slow start)、擁塞避免(congestion avoidance)、快速重傳(fast retransmit)和快速恢復(fast recovery)。擁塞控制算法在Linux下有多種實現,比如reno算法、vegas算法和cubic算法等。它們或者部分或者全部實現了上述四個部分
   當前所使用的擁塞控制算法
   /proc/sys/net/ipv4/tcp_congestion_control

[root@centos7 ~]# cat /proc/sys/net/ipv4/tcp_congestion_control
cubic

UDP特性

  1、工作在傳輸層
  2、提供不可靠的網絡訪問
  3、非面向連接協議
  4、有限的錯誤檢查
  5、傳輸性能高
  6、無數據恢復特性
UDP包頭
網絡管理

Internet 協議特徵

  運行於OSI 網絡層
  面向無連接的協議
  獨立處理數據包
  分層編址
  盡力而爲傳輸
  無數據恢復功能

IP PDU報頭
網絡管理

1 、版本:佔4位,指IP 協議的版本目前的IP協議版本號爲4
2 、首部長度:佔4位,可表示的最大數值是15個單位,一個單位爲4字節,因此IP 的首部長度的最大值是60字節
3、區分服務:佔8位,用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使用過.後改名爲區分服務.只有在使用區分服務(DiffServ)時,這個字段才起作用.一般的情況下都不使用
4、總長度:佔16位,指首部和數據之和的長度,單位爲字節,因此數據報的最大長度爲65535 字節.總長度必須不超過最大傳送單元MTU
5、標識:佔16位,它是一個計數器,通常,每發送一個報文,該值會加1,也用於數據包分片,在同一個包的若干分片中,該值是相同的
標誌(flag):佔3位,目前只有後兩位有意義:
   DF:Don‘t Fragment,中間的一位,只有當DF=0 時才允許分片
   MF:More Fragment,最高位,MF=1表示後面還有分片。MF=0 表示最後一個分片
6、片偏移:佔12位,指較長的分組在分片後,該分片在原分組中的相對位置.片偏移以8個字節爲偏移單位
7、生存時間:佔8位,記爲TTL (Time To Live) 數據報在網絡中可通過的路由器數的最大值,TTL 字段是由發送端初始設置一個8 bit字段.推薦的初始值由分配數字RFC 指定,當前值爲64.發送ICMP 回顯應答時經常把TTL 設爲最大值255
8、協議:佔8位,指出此數據報攜帶的數據使用何種協議以便目的主機的IP層將數據部分上交給哪個處理過程, 1表示爲ICMP 協議, 2表示爲IGMP 協議, 6表示爲TCP 協議, 17表示爲UDP 協議
9、首部檢驗和:佔16位,只檢驗數據報的首部不檢驗數據部分.這裏不採用CRC 檢驗碼而採用簡單的計算方法
10、源地址和目的地址:都各佔4字節,分別記錄源地址和目的地址


IP PDU報頭示例
   片偏移以8個字節爲偏移單位,假定MTU=1500
   三個包標識ID都相同,三個包DF都爲0,前兩個MF=1,最後一個MF=0
網絡管理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章