網絡基本概念和TCP、UDP協議mysql
------------------------------------------------------------------------------------------------------------------------------------------算法
衝突域:若是幾臺設備同時向一臺設備發送數據產生衝突,則這幾臺設備處於一個衝突域中,反之不在一個衝突域sql
總線拓撲:總線不能斷緩存
星型拓撲:中間交換機不能夠故障安全
擴展星型拓撲服務器
環形拓撲網絡
雙環拓撲
架構
全網狀拓撲oracle
部分網狀拓撲
app
瞭解主機到主機通訊
舊模型
專有產品
由一個廠商控制應用程序和嵌入的軟件
基於標準的模型
多廠商軟件
分層方法
網絡模型
OSI:開放系統互聯
ISO:國際標準化組織
邏輯尋址:人爲指定ip地址以便於管理
下層只爲相鄰的上層提供服務
物理層:二進制傳輸
爲啓動、維護以及關閉物理鏈路定義了電器規範、機械規範、過程規範和功能規範,數據格式爲0101……
數據鏈路層:訪問介質
定義如何格式化數據以便進行傳輸以及如何控制對網絡的訪問,數據格式爲幀;
支持錯誤檢測;
MAC地址在數據鏈路層定義
網絡層:數據傳輸
路由數據包;
選擇傳遞數據的最佳路徑;
支持邏輯尋址和路徑選擇
傳輸層:傳輸問題
確保數據傳輸的可靠性;創建、維護和終止虛擬電路;經過錯誤檢測和恢復;
信息流控制來保障可靠性
會話層:主機間通訊
創建、管理和終止應用之間的會話
表示層:數據表示
確保接受系統能夠讀出該數據;
格式化數據;
構建數據;
協商用於應用層的數據傳輸語法;
提供加密
應用層:網絡進程訪問應用層
爲應用程序進程(例如電子郵件、文件傳輸和終端仿真)提供網絡服務;
提供用戶身份驗證
數據封裝:按照七層模型從上到下的順序對數據進行處理,在本身的設備上完成數據封裝
數據解封
FCS:校驗位
對等通訊
PDU
PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位
物理層的PDU是數據位bit
數據鏈路層的PDU是數據幀frame
網絡層的PDU是數據包packet
傳輸層的PDU是數據段segment
其餘更高層次的PDU是消息message
三種通信模式
單播:數據報文地址內的發送目標爲1臺設備
廣播:數據發送目標爲必定範圍內全部設備,廣播越多,對網絡干擾越大
組播(多播):數據發送目標爲多組設備
單工:目標主機和本主機之間通信爲單向,有去無回,好比電視
半雙工:目標主機和本主機之間通信爲雙向的,數據傳輸爲輪流傳輸,好比對講機
全雙工:目標主機和本主機之間通信爲雙向的,數據傳輸爲同時傳輸,好比視頻聊天
局域網:Local Area Network
基於廣播機制通信
廣域網
基於點對點機制通信
網線:UTP非屏蔽式雙絞線
STP屏蔽式雙絞線,加一層金屬保護,加強抗干擾
T568A線序:綠白、綠、橙白、藍、藍白、橙、棕白、棕
T568B線序:橙白、橙、綠白、藍、藍白、綠、棕白、棕
百兆之內用到4根線:一、二、三、6,12發,36接
千兆之內用到所有線
兩邊線序同樣稱做UTP直通線
T568A和T568B互爲UTP交叉線
由於如今硬件設備能夠自動識別T568A和T568B,所以廣泛使用T568B線
雙絞線傳輸最遠距離爲100米
GBIC:千兆電信號轉換爲光信號的接口器件
以太網:是數據鏈路層的協議之一(協議裏有PPPOE、以太網、高級鏈路控制協議、幀中繼、異步傳輸模式),屬於局域網協議,它既定義了雙絞線的標準,又定義了數據幀的格式
幀:frame
幀的結構 : 前導信息 目標地址 源地址 類型 數據 校驗位
位 : 8 6 6 2 46-1500 4
類型是上層類型編號,用來讓計算機識別位於哪一層
數據包括從網絡層、傳輸層、會話層、表現層、app、data的數據
衝突檢測的載波偵聽多路訪問CSMA/CD
早期以太網協議中設備低於1024臺,不然衝突過多
Hub:多端口中繼器,工做在物理層
Hub並不記憶該信息包是由哪一個MAC地址發出,哪一個MAC地址在Hub的哪一個端口
Hub的特色:共享帶寬、半雙工
Hub性能差、不安全
ISO七層網絡模型,但實際工做中沒有應用到這麼多,目前使用的是TCP/IP協議
以太網橋:計算機經過Hub鏈接到以太網橋,能夠記錄計算機在哪一個域,從而在之後的使用中將數據不走其它線路而直接送達目標計算機
交換機:直接鏈接計算機,每一個接口都是一個獨立的衝突域,全雙工機制,大大提高了速率,能夠隔斷衝突域,但不能隔斷廣播域
交換機工做在數據鏈路層
以太網橋:計算機經過Hub鏈接到以太網橋,能夠記錄計算機在哪一個域,從而在之後的使用中將數據不走其它線路而直接送達目標計算機
交換機:直接鏈接計算機,每一個接口都是一個獨立的衝突域,全雙工機制,大大提高了速率,能夠隔斷衝突域,但不能隔斷廣播域
交換機工做在數據鏈路層
減小衝突域內或者廣播域內計算機能夠提高網絡性能
交換機能夠隔斷衝突域
路由器能夠隔斷廣播域
路由表不是路由器專有的,PC也有,設備依靠路由表尋找數據的轉發路徑
路由器:分隔廣播域
選擇路由表中到達目標最好的路徑
維護和檢查路由信息
鏈接廣域網
網卡工做在數據鏈路層
ACL:訪問控制列表
路由器:路由器工做在網絡層
路由表:route table,路由表組成
網絡地址:分析目標地址
接口:數據有可能從路由器的哪一個出口出來,哪一個就是接口
網關:目標網絡與發數據的設備不在一個網段內,下一個路由器鄰近主配置路由器的接口ip就是網關,線路和路由器鏈接的口網關不用配置
metric:能夠理解爲躍點數,該值越小,路由選擇此路徑優先級越高
VLAN:虛擬局域網,能夠看做是廣播域,是一種邏輯網絡
特色:分隔廣播域、安全、靈活管理
trunk:公共幹道接口,不屬於某個單獨的vlan,多個vlan數據都會使用該接口
802.1Q:trunk上加vlan標籤的協議,使得數據能夠跨vlan傳輸
分層的網絡架構
核心層:Core Layer,快速轉發數據
分佈層:Distribution Layer,用路由器隔開,設置訪問權限
訪問層:AccessLayer,先將設備連入網絡,匯入分佈層
STP:生成樹協議,解決交換機迴環問題,是一種動態算法
TCP/IP協議
Transmission Control Protocol / Internet Protocol
傳輸控制協議 / 因特網互聯網協議
1983年取代了舊的網絡控制協議NCP
定義了四層
四層模型和OSI七層模型對應關係
應用層協議
File transfer
–FTP
–TFTP
–Network File System
–Simple Mail Transfer Protocol
Remote login
–Telnet
–rlogin
Network management
–Simple Network Management Protocol
Name management
–Domain Name System
傳輸層兩大協議:UDP和TCP
可靠性 |
傳輸效率 | |
鏈接類型 |
面向鏈接 |
非面向鏈接 |
協議 | TCP | UDP |
按序號前後接收數據 | Yes | No |
用途 |
郵件 文件共享 下載 |
音頻 視頻 |
TCP特性
工做在傳輸層
面向鏈接協議:確認對方與本身有穩定的網絡狀態
全雙工協議:能夠同時傳輸數據
半關閉:單方面關閉數據鏈接
錯誤檢查
將數據打包成段,排序
確認機制
數據恢復,重傳
流量控制,滑動窗口
擁塞控制,慢啓動和擁塞避免算法
傳輸層報文頭部結構
TCP包頭
源端口號從0-65535,即216個端口號
序號:靠序號實現數據包可靠傳輸
確認號:指望對方下次發送數據包的編號,用小寫ack表示
序號和確認號結合起來能夠實現數據的安全通訊
數據偏移:說明報文有多長
標記位:佔6位,其中含義有
URG:表示本報文段中發送的數據是否包含緊急數據。後面的緊急指針字段(urgent pointer)只有當URG=1時纔有效
ACK:確認位,表示是否前面確認號字段是否有效。只有當ACK=1時,前面的確認號字段纔有效。TCP規定,鏈接創建後,ACK必須爲1,帶ACK標誌的TCP報文段稱爲確認報文段,例如ACK12表示本設備但願對方下次發送第12號數據包
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報文段稱爲結束報文段
窗口:表示發送設備發多少個包接收設備會確認1次,協商雙方能接收多少數據
TCP三次握手
前三步肯定穩定的網絡狀態,以後能夠正常通信
圖中seq代表設備自身的該文件編號
TCP四次揮手
11種有限狀態機
CLOSED 沒有任何鏈接狀態
LISTEN 偵聽狀態,等待來自遠方TCP端口的鏈接請求
SYN-SENT 在發送鏈接請求後,等待對方確認
SYN-RECEIVED 在收到和發送一個鏈接請求後,等待對方確認
ESTABLISHED 表明傳輸鏈接創建,雙方進入數據傳送狀態
FIN-WAIT-1 主動關閉,主機已發送關閉鏈接請求,等待對方確認
FIN-WAIT-2 主動關閉,主機已收到對方關閉傳輸鏈接確認,等待對方發送關閉傳輸鏈接請求
TIME-WAIT 完成雙向傳輸鏈接關閉,等待全部分組消失
CLOSE-WAIT 被動關閉,收到對方發來的關閉鏈接請求,並已確認
LAST-ACK 被動關閉,等待最後一個關閉傳輸鏈接確認,並等待全部分組消失
CLOSING 雙方同時嘗試關閉傳輸鏈接,等待對方確認
孤兒鏈接: 客戶端執行半關閉後,未等服務器關閉鏈接就強行退出了,此時客戶端鏈接由內核來接管
DDOS攻(龘)擊:拒絕服務攻(龘)擊,僞造大量ip,對服務器進行訪問,使得服務器的迴應長時間無響應,佔據大量訪問數,從而使得正經常使用戶沒法正常訪問
協議端口
FTP 用TCP21端口
Tlenet用TCP23端口
Http用TCP80端口
DNS用TCP 53和UDP53端口
TFTP用UDP69端口
SNMP用UDP161端口
傳輸層經過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
TCP超時重傳
異常網絡情況下(開始出現超時或丟包),TCP控制數據傳輸以保證其承諾的可靠服務
TCP服務必須可以重傳超時時間內未收到確認的TCP報文段。爲此,TCP模塊爲每一個TCP報文段都維護一個重傳定時器,該定時器在TCP報文段第一次被髮送時啓動。若是超時時間內未收 到接收方的應答,TCP模塊將重傳TCP報文段並重置定時器。至於下次重傳的超時時間如何選擇,以及最多執行多少次重傳,就是TCP的重傳策略
與TCP超時重傳相關的兩個內核參數:
/proc/sys/net/ipv4/tcp_retries1,指定在底層IP接管以前TCP最少執行的重傳次數,默認值是3
/proc/sys/net/ipv4/tcp_retries2,指定鏈接放棄前TCP最多能夠執行的重傳次數,默認值15(通常對應13~30min)
擁塞控制
網絡中的帶寬、交換結點中的緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源的需求超過了該資源所能提供的可承受的能力,網絡的性能就會變壞。這種狀況就叫作擁塞
TCP爲提升網絡利用率,下降丟包率,並保證網絡資源對每條數據流的公平性。即所謂的擁塞控制
TCP擁塞控制的標準文檔是RFC 5681,其中詳細介紹了擁塞控制的四個部分:慢啓動(slow start)、擁塞避免(congestion avoidance)、快速重傳(fast retransmit)和快速恢復(fast recovery)。擁塞控制算法在Linux下有多種實現,好比reno算法、vegas算法和cubic算法等。它們或者部分或者所有實現了上述四個部分
當前所使用的擁塞控制算法,/proc/sys/net/ipv4/tcp_congestion_control
UDP特性
工做在傳輸層
提供不可靠的網絡訪問
非面向鏈接協議
有限的錯誤檢查
傳輸性能高
無數據恢復特性
UDP包頭
16位源端口號
16位目標端口號
16位UDP長度
16位UDP校驗碼