【知識積累】大數據旅程-LVS 網絡基礎

一、7L參考模型

7、應用層+表示層(nginx軟件)

協議:http、ssh、smtp

http:字符串的書寫格式、表現形式,以及兩端方法的交互方式。

作用:只負責字符串的封裝(GET /)

4、會話層+傳輸控制層(LVS)

協議:tcp(面向連接的、可靠的)、udp(不是面向連接的、不可靠的)

IP:PROT-IP:PORT表格:

netstat -anp(a:顯示所有 n:使用ip p:顯示PID和程序名稱)

說明:本地IP地址是192.168.217.11,端口是22,遠程地址是192.168.217.1,每打開一個窗口,會從65535個端口中申請一個端隨機端口來映射這個打開的窗口。三個窗口剛好映射三條記錄,sshd(ssh deamon)是一個守護進程。當我們請求百度時,百度也會有這樣一張IP:PROT-IP:PORT表來映射用戶的請求,所以每個用戶的操作是不影響的。

怎麼獲得連接?(三次握手)

創建一個連接數據包,客戶端發送一個連接包(sync)給服務端,服務端響應一個包給客戶端(sync + ack),最後客戶端也響應一個包(ack)給服務端,建立連接,開闢線程,開闢資源佔用。

爲什麼要三次握手?

tcp最關鍵是面向狀態,客戶端和服務端的狀態要保持一致,才能傳輸,客戶端向服務端發送得到迴應,服務端向客戶端發送一個包,最後也得到迴應。

怎麼斷開連接?(四次分手)

客戶端想斷開連接,發送一個確認包(fin),服務端迴應ok;然後服務端發送一個確認包(fin),客戶端迴應ok,最後連接斷開,釋放資源。

爲什麼要斷開連接?

socket建立連接時,需要一個端口號,一個操作系統的端口號一共65535個。端口如果不資源回收,端口就會佔用完。

爲什麼三次握手和四次分手是一個原子操作?

如果做負載均衡,客戶端和服務器A完成了兩次握手,將ack響應給了服務器B,那連接無法建立,無法開闢資源。

3、網絡層

協議:ip、icmp 

ip:是邏輯、可變的,用來尋址。ip地址點分字節,一個點分一個字節,一個字節八位,有0是0,全1是255,是一個範圍。

netmask:劃分網段,類似國家、省市區。

gateway:網關

dns:域名解析

網絡號:ip與netmask進行按位與運算,192.168.217.11與255.255.255.0得到的結果是192.168.217.0,類似門牌號。

路由表:

route -n(n:顯示ip)

說明:關機是空,開機生成。

路由判定:ip與netmask按位與運算,然後與網絡號進行匹配,最後決定使用哪一條記錄來發送數據包,最後一條記錄是默認網關,不管ip是什麼,與四個0按位與運算,得到的結果都是四個0的網絡號。

下一跳:選取最近並可靠的結點發送數據包,而不是規劃發送路線。

2、鏈路層

以太網:Ethernet:MAC

查看MAC地址表

arp -a(a:使用bsd形式輸出)

ARP協議

1、物理層

二、功能分層

  1. 能夠申請到端口號
  2. 路由表有下一跳條目
  3. ARP能請求到下一跳MAC
  4. 上次握手
  5. 傳輸數據
  6. 四次分手

說明:

  1. Flag標誌位,是六個二進制位,01切換表示這個數據包的狀態。
  2. 源IP地址是自己的IP地址,目的IP地址是目標地址(例如:百度的地址)。
  3. 目的MAC是下一跳的MAC地址,源MAC地址是自己的Mac地址。

三、總結

1、整個互聯網建立在下一跳的模式下

  • IP是邏輯上的兩個端點
  • MAC是物理上連接的兩個節點    

2、端點間TCP傳輸過程中

  • 確認機制
  • 狀態機制    
  • 不可分割

3、解析數據包需要成本

  • 交換機:二層,只關心MAC地址(學習機制)
  • 路由器:三層設備,只關係IP和路由表
  • LVS服務器:四層,只關心PORT、狀態
  • nginx:七層,關心socket對應關係(http)

4、負載均衡

四層(lvs):快,應付更大的流量。
七層(nginx):慢於四層,看得懂客戶端請求的資源。

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