網絡概述
網絡是通過外圍設備和連線,將分布在相同或不同地域的多台計算機連接在一起所形成的集合。
網絡拓撲
將網絡中的設備定義為結點,兩個結點間的連線稱為鏈路,網絡結點和鏈路的幾何位置就是網絡的拓撲結構。
網絡中有兩類結點:轉接結點(提供連接的網絡設備)和訪問結點(提供服務的計算機設備)
在計算機網絡中,我們將結點分類兩類:
轉接結點: 提供連接的網絡設備。比如連接主機的交換機、路由器 都是轉接結點
訪問結點: 提供服務的計算機設備。我們最常見的服務器和主機都屬於訪問節點。
拓撲結構的概念:
節點:網絡中的設備定義為節點
鏈路:兩節點之間的連線稱為鏈路
拓撲結構:網絡結點和鏈路的幾何位置就是網絡的拓撲結構。
總線型拓撲結構
總線型拓撲結構采用單根傳輸線作為傳輸介質,所有的站點都通過相應的硬件接口直接連接到傳輸介質上。
特點:
1、成本較低。 2、兩端要安裝終端電阻。 3、連接的計算機數目較少。(一般少於20台) 4、穩定性差,主要用於10M網絡。 5、網路中某點出現故障,則可能全網絡癱瘓
星型拓撲結構
星型拓撲是由中央節點和通過連接到中央節點的各站點構成的。所有的節點都有專有線纜連接中心的中心節點上。
特點:
1、工作站接入和退出容易。 2、一般用雙絞線連接,符合現代綜合布線的標准。 3、可以滿足多種帶寬:10M、100M、1000M 4、對中心節點的依賴性較大。 5、中心節點可以級聯,但是不超過4級。 6、可以隔離單顆粒故障
環形拓撲結構
環型拓撲結構是把網上所有的節點通過電纜依次連接形成一個封閉的物理環,在這個物理環中,每個電腦相當於中繼器作用。
特點:
1、每個工作站相當於一個中繼器,有還原信號的作用。 2、環路中增加用戶困難。 3、可靠性差,不易管理。
計算機網絡的幾種分類
按覆蓋的地理范圍分類
局域網(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確認。客戶端發送一個TCP的SYN標志位置1的包指明客戶打算連接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。
第二次握手:
服務器B收到SYN包,必須確認客戶A的SYN(ACK=j+1),同時自己也發送一個SYN包(SYN=k),即SYN+ACK包,此時服務器B進入SYN_RECV狀態。服務器發回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即X+1。
第三次握手.
客戶端A收到服務器B的SYN+ACK包,向服務器B發送確認包ACK(ACK=k+1),此包發送完畢,客戶端A和服務器B進入ESTABLISHED狀態,完成三次握手。客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.並且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方.並且在數據段放寫ISN的+1
完成三次握手,客戶端與服務器開始傳送數據。
最開始的時候客戶端和服務器都是處於CLOSED狀態。主動打開連接的為客戶端,被動打開連接的是服務器。
CLOSED 關閉狀態:
為建立建立連接之前的起始點,在連接超時或者連接關閉的時候進入此狀態,但是這並不是一個真正的狀態,而是這個狀態圖的假想起點和終點(便於我們思考與理解)。
LISTEN 監聽狀態:
服務器 server 端等待連接的狀態。服務器經過 socket,bind,listen 函數之后進入此狀態,開始監聽客戶端發過來的連接請求。此稱為應用程序被動打開(等待客戶端的連接請求)。
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 包(ACK,SYN)之后,也會發送一個 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)。