網絡知識整理

網絡概述編程

網絡是經過外圍設備和連線,將分佈在相同或不一樣地域的多臺計算機鏈接在一塊兒所造成的集合。服務器

網絡拓撲cookie

  將網絡中的設備定義爲結點,兩個結點間的連線稱爲鏈路,網絡結點和鏈路的幾何位置就是網絡的拓撲結構。網絡

網絡中有兩類結點:轉接結點(提供鏈接的網絡設備)和訪問結點(提供服務的計算機設備)框架

在計算機網絡中,咱們將結點分類兩類:socket

轉接結點: 提供鏈接的網絡設備。好比鏈接主機的交換機、路由器 都是轉接結點tcp

訪問結點: 提供服務的計算機設備。咱們最多見的服務器和主機都屬於訪問節點。函數

拓撲結構的概念:性能

節點:網絡中的設備定義爲節點spa

鏈路:兩節點之間的連線稱爲鏈路

拓撲結構:網絡結點和鏈路的幾何位置就是網絡的拓撲結構。 

總線型拓撲結構

 總線型拓撲結構採用單根傳輸線做爲傳輸介質,全部的站點都經過相應的硬件接口直接鏈接到傳輸介質上。

特色:

一、成本較低。 二、兩端要安裝終端電阻。 三、鏈接的計算機數目較少。(通常少於20臺) 四、穩定性差,主要用於10M網絡。 五、網路中某點出現故障,則可能全網絡癱瘓

星型拓撲結構

星型拓撲是由中央節點和經過鏈接到中央節點的各站點構成的。全部的節點都有專有線纜鏈接中心的中心節點上。

特色:

一、工做站接入和退出容易。 二、通常用雙絞線鏈接,符合現代綜合佈線的標準。 三、能夠知足多種帶寬:10M、100M、1000M 四、對中心節點的依賴性較大。 五、中心節點能夠級聯,可是不超過4級。 六、能夠隔離單顆粒故障

環形拓撲結構

環型拓撲結構是把網上全部的節點經過電纜依次鏈接造成一個封閉的物理環,在這個物理環中,每一個電腦至關於中繼器做用。

特色:

一、每一個工做站至關於一箇中繼器,有還原信號的做用。 二、環路中增長用戶困難。 三、可靠性差,不易管理。

計算機網絡的幾種分類

按覆蓋的地理範圍分類

局域網(LAN);一個公司、一個家庭

廣域網(WAN);一個國家、全世界

城域網(MAN);一種大型LAN 一個區、一個城市、一個國家

按傳輸技術分類

廣播式網絡 broadcast network

點到點網絡 point-to-point network

 

 

數據通訊基本概念

信息 是人們要經過通訊系統傳遞的內容

數據 只不過是數字化的信息。

信號 則是數據的表現形式。 數字信號和模擬信號

信道 是傳輸信號的通道。

 

數據傳輸的方式 模擬方式 數字方式

模擬信號是信號參數大小連續變化的電磁波,能夠按不一樣的頻率在媒體傳輸,是一個連續變化的物理量。

數字信號則是不連續的物理量,信號參數也不連續變化。數字信號使用幾個不連續的物理狀態來表明數字。如今最多見的數字信號是復讀取值只有兩種(0和1表明)的波形,稱爲「二進制信號

 

信號干擾的相關因素:

噪音 衰減性 電磁干擾

 

傳輸介質性能:

計算機網絡的吞吐量和帶寬   成本     尺寸和可擴展性    抗噪性

 

計算機網絡的吞吐量和帶寬

吞吐量   帶寬    帶寬與頻率的關係

 

網絡介質類型:

同軸電纜 雙絞線 光纖

 

同軸電纜的特性: 分爲 粗纜(Thicknet)和細纜(Thinnet) 速度:10 Mbit/s 最大段長:細纜185m 粗纜500m 主要應用於總線型(bus)網的佈線鏈接,兩端必須有終結器。

雙絞線的特性: 分爲屏蔽雙絞線(STP)和非屏蔽雙絞線(UTP) 速度: 10 ~ 1000Mbit/s 最大段長:100m 主要應用於星型(star)網的佈線鏈接。 按照電氣性能的不一樣,雙絞線可分爲三類、五類、超五類、六類和七類雙絞線。

線序標準 T568A標準(綠白、綠、橙白、藍、藍白、橙、棕白、棕) T568B標準(橙白、橙、綠白、藍、藍白、綠、棕白、棕)

 

鏈接線纜的類型:

直通線:線纜兩邊使用相同的線序,如都使用T568A或T568B標準。

交叉線:線纜兩邊使用不一樣的線序,即一邊使用T568A,一邊使用T568B。

翻轉線:線纜兩邊使用徹底相反的線序,即一邊是12345678,一邊是87654321,用於交換機路由器的配置。

 

用於特殊目的IP地址

 

網絡地址:

主機位全爲0的IP地址 用來標識網絡自己 用來表明整個網絡 也叫網絡ID 也叫子網ID

 

OSI 七層模型的劃分

OSI 定義了網絡互連的七層框架(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層),即ISO 開放互連繫統參考模型。

 

 

經常使用的熟知端口號

 

 

三次握手

所謂三次握手(Three-way Handshake),是指創建一個TCP鏈接時,須要客戶端和服務器總共發送3個包。

三次握手的目的是鏈接服務器指定端口,創建TCP鏈接,並同步鏈接雙方的序列號和確認號並交換 TCP 窗口大小信息.socket編程中,客戶端執行connect()時。將觸發三次握手。

 

第一次握手:
創建鏈接時,客戶端A發送SYN(SYN=j)到服務器B,並進入SYN_SEND狀態,等待服務器B確認。客戶端發送一個TCPSYN標誌位置1的包指明客戶打算鏈接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段裏。

 



第二次握手:
服務器B收到SYN包,必須確認客戶ASYN(ACK=j+1),同時本身也發送一個SYN(SYN=k),即SYN+ACK包,此時服務器B進入SYN_RECV狀態。服務器發回確認包(ACK)應答。即SYN標誌位和ACK標誌位均爲1同時,將確認序號(Acknowledgement Number)設置爲客戶的I S N1.X+1

 

第三次握手.
客戶端A收到服務器BSYNACK包,向服務器B發送確認包ACK(ACK=k+1),此包發送完畢,客戶端A和服務器B進入ESTABLISHED狀態,完成三次握手客戶端再次發送確認包(ACK) SYN標誌位爲0,ACK標誌位爲1.而且把服務器發來ACK的序號字段+1,放在肯定字段中發送給對方.而且在數據段放寫ISN+1

完成三次握手,客戶端與服務器開始傳送數據。

 

最開始的時候客戶端和服務器都是處於CLOSED狀態。主動打開鏈接的爲客戶端,被動打開鏈接的是服務器。

CLOSED 關閉狀態:

爲創建創建鏈接以前的起始點,在鏈接超時或者鏈接關閉的時候進入此狀態,可是這並非一個真正的狀態,而是這個狀態圖的假想起點和終點(便於咱們思考與理解)。

LISTEN 監聽狀態:

服務器 server 端等待鏈接的狀態。服務器通過 socketbindlisten 函數以後進入此狀態,開始監聽客戶端發過來的鏈接請求。此稱爲應用程序被動打開(等待客戶端的鏈接請求)。

SYN_SENT 狀態:

第一次握手發生階段,客戶端發起鏈接。客戶端調用 connect,發送 SYN 給服務器端,而後客戶端進入 SYN_SENT狀態,等待服務端的確認(三次握手中的第二個報文)。若是服務器端不能鏈接,則客戶端直接進入 CLOSED 狀態。

SYN_RECV 狀態:

第二次握手發生階段,這裏是服務器端接收到了客戶端的 SYN 請求,此時服務端由 LISTEN 進入 SYN_RECV 狀態,同時服務器端迴應一個 ACK,而後再發送一個 SYN SYN+ACK 給客戶端。狀態圖中還描繪了這樣一種狀況,當客戶端在發送 SYN 的同時也收到服務器端的 SYN 請求,即兩個同時發起鏈接請求,那麼客戶端就會從 SYN_SENT 轉換到 SYN_REVD 狀態。

ESTABLISHED 狀態:

第三次握手發生階段,客戶端接收到服務器端的 ACK 包(ACKSYN)以後,也會發送一個 ACK 確認包,客戶端進入ESTABLISHED 狀態,代表客戶端這邊已經準備好,但 TCP 須要兩端都準備好才能夠進行數據傳輸。服務器端收到客戶端的 ACK 以後會從 SYN_RCVD 狀態轉移到 ESTABLISHED 狀態,代表服務器端也準備好進行數據傳輸了。

總結:

客戶端和服務器端都變爲 ESTABLISHED 狀態,就能夠進行數據的傳輸了;固然 ESTABLISHED 也能夠說是一個數據傳送狀態。

 

爲何TCP客戶端最後還要發送一次確認呢?

一句話,主要防止已經失效的鏈接請求報文忽然又傳送到了服務器,從而產生錯誤。

若是使用的是兩次握手創建鏈接,假設有這樣一種場景,客戶端發送了第一個請求鏈接而且沒有丟失,只是由於在網絡結點中滯留的時間太長了,因爲TCP的客戶端遲遲沒有收到確認報文,覺得服務器沒有收到,此時從新向服務器發送這條報文,此後客戶端和服務器通過兩次握手完成鏈接,傳輸數據,而後關閉鏈接。此時此前滯留的那一次請求鏈接,網絡通暢了到達了服務器,這個報文本該是失效的,可是,兩次握手的機制將會讓客戶端和服務器再次創建鏈接,這將致使沒必要要的錯誤和資源的浪費。

若是採用的是三次握手,就算是那一次失效的報文傳送過來了,服務端接受到了那條失效報文而且回覆了確認報文,可是客戶端不會再次發出確認。因爲服務器收不到確認,就知道客戶端並無請求鏈接。

SYN攻擊

在三次握手過程當中,服務器發送SYN-ACK以後,收到客戶端的ACK以前的TCP鏈接稱爲半鏈接(half-open connect).此時服務器處於Syn_RECV狀態.當收到ACK後,服務器轉入ESTABLISHED狀態.

Syn攻擊就是 進行攻擊的客戶端 在短期內僞造大量不存在的IP地址,向服務器不斷地發送syn包,服務器回覆確認包,並等待客戶的確認,因爲源地址是不存在的,服務器須要不斷的重發直 至超時,這些僞造的SYN包將長時間佔用未鏈接隊列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引發網絡堵塞甚至系統癱瘓。

Syn攻擊是一個典型的DDOS攻擊。檢測SYN攻擊很是的方便,當你在服務器上看到大量的半鏈接狀態時,特別是源IP地址是隨機的,基本上能夠判定這是一次SYN攻擊.Linux下能夠以下命令檢測是否被Syn攻擊

netstat -n -p TCP | grep SYN_RECV

通常較新的TCP/IP協議棧都對這一過程進行修正來防範Syn攻擊,修改tcp協議實現。主要方法有SynAttackProtect保護機制、SYN cookies技術、增長最大半鏈接和縮短超時時間等.

可是不能徹底防範syn攻擊。

四次揮手

TCP的鏈接的拆除須要發送四個包,所以稱爲四次揮手(four-way handshake)。客戶端或服務器都可主動發起揮手動做,在socket編程中,任何一方執行close()操做便可產生揮手操做。

 

因爲TCP鏈接是全雙工的,所以每一個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的鏈接。收到一個 FIN只意味着這一方向上沒有數據流動,一個TCP鏈接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另外一方執行被動關閉。

1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送(報文段4)

2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1(報文段5)。和SYN同樣,一個FIN將佔用一個序號。

3)服務器B關閉與客戶端A的鏈接,發送一個FIN給客戶端A(報文段6)

4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1(報文段7)

相關文章
相關標籤/搜索