軟體開發架構與網路之OSI七層協議(五層)

  • 2022 年 1 月 11 日
  • 筆記

本期內容概要

  • python回顧

  • 軟體開發架構

  • 網路理論前瞻

  • osi七層協議(五層)

    • 乙太網協議
    • IP協議
    • port協議
    • 交換機
    • 路由器
    • 區域網
    • 廣域網
  • TCP協議

    • 三次握手
    • 四次揮手
  • UDP協議

內容詳細

python回顧

變數與常量
基本數據類型
內置方法
字元編碼、文件操作
函數
	函數參數、閉包函數、裝飾器
面向對象
	封裝、繼承、多態
"""
什麼是對象
	數據與功能的結合體
	
什麼是類
	多個對象公共的數據與功能的結合體
	
什麼是父類
	多個類公共的數據與功能的結合體
	
對象必須要由類產生!!!
"""

1. 軟體開發架構

1.c/s架構
	c : client	客戶端
	s : server	服務端
"""
客戶端:可以當作去店鋪消費的客人
	eg:手機上的各種APP就是各大軟體廠商的客戶端


服務端:可以當作提供服務的商店
服務端需要具備的三大特徵:
	1.24小時不間斷提供服務(24小時監聽)
	2.固定的地址(IP地址)
	3.能夠服務多個用戶(高並發)
"""
        

2.b/s架構
	b : browser	瀏覽器
	s : server	伺服器
"""
用瀏覽器統一充當各個服務端的客戶端

本質:bs架構本質上也是cs架構
"""

3.各大互聯網巨頭正在做的事情:
	微信小程式(微信提供開發微信小程式的軟體)
	支付寶小程式(各大程式介面)
    
# 總結:
	網路編程學習完就可以開發cs架構的軟體(簡易版本)
	並發編程、前端、資料庫、後端框架就可以開發bs架構軟體(任何類型的軟體)

2. 網路理論前瞻

'''網路編程其實研究的就是程式之間的數據通訊'''

1.由來:
	基於遠程傳輸的技術 最早誕生於美國軍方(前沿技術通常都是由軍事產生)
    
2.遠程數據傳輸發展史(民用)
	01 有線電話 > 電話線互聯
	02 無線電話 > 訊號發射器
	03 大屁股電腦 > 網線
	04 筆記型電腦電腦 > 網卡
    '''要想實現遠程數據交互的前提是必須要有物理連接介質'''
    
除了有物理連接介質之外還應該有一些能夠保證數據彼此無障礙交互的東西(標準):
	OSI七層協議

img

3. OSI七層協議

# 所有的電腦都必須要有這七層
	01 應用層
	02 表示層
	03 會話層
	04 傳輸層
	05 網路層
	06 數據連接層
	07 物理連接層
	'''
	應 表 會 傳 網 數 物
	'''
    
# 從開發層面 可以歸納為五層
	01 應用層
	02 傳輸層
	03 網路層
	04 數據連接層
	05 物理連接層
    
'''從下往上介紹'''

3.1 物理連接層

提供一個物理連接介面(網線口 無線網卡)

3.2 數據連接層

1.規定了電訊號的分組方式

2.含有乙太網協議
	規定了電腦必須有一塊網卡 並且網卡上面要有一個固定的一串數字
	"""
	數字 : 12位16進位數
		前六位 :產商編號
		後六位 :流水線號
	上述的數字也稱之為電腦的mac地址(類似於身份證號)	
	"""

3.3 常見硬體

1.交換機:能夠使接入該機器的所有電腦之間彼此互聯

image

2.區域網:有交換機組成的網路
    
3.互聯網:可以簡單的理解為是多個區域網之間彼此互聯
    
"""
基於mac地址的數據傳輸
	1.廣播風暴
	2.mac地址不能跨區域網傳輸
"""

4.路由器:能夠連接多個區域網並實現區域網之間的數據傳輸

image

3.4 網路層

1.IP協議:
	規定了接入互聯網的電腦都必須有一個IP地址用於唯一標識
    
2.ip協議版本
	IPV4版本:
		最小 0.0.0.0
		最大 255.255.255.255
    
	IPV6版本:
		能夠表示出地球上的每一粒沙子
        
'''IP地址能夠唯一標識接入互聯網的一台獨一無二的電腦'''

3.公網IP與私網IP
	公網IP需要花錢購買並申請
	私網IP自帶的 但是無法直接基於互聯網訪問
    
4.arp協議
	將IP地址轉換成mac地址(基於網路請求)

3.5 傳輸層

'''TCP協議  UDP協議 埠協議 等等'''

1.埠協議:
	範圍:0~65535
	特性:動態分配
	eg:
		第一次運行微信 系統隨機取一個埠號2022
		然後關閉微信重新啟動 系統再隨機取一個埠號
        
2.埠號基本使用
	0~1024系統默認需要使用的埠號
	1024~8000常見軟體埠號
	以後我們開發的軟體最好使用8000之後的埠號
    
"""
埠號(port):
	能夠唯一標識一台電腦上面正在運行的一款應用程式
	
埠號在同一台電腦同一時刻不能重複
"""

# 總結
	能夠唯一標識世界上 某一台接入互聯網的電腦上面的 某一個正在運行的應用程式

3.6 TCP協議

1.別稱:
	流式協議 可靠協議
    
2.三次握手	建立鏈接
	重要狀態:
		listen 監聽態:等待對方發請求
		syn_rcvd態: 忙於恢復確認建立請求
'''
洪水攻擊:
	服務端在同一時間接收到了大量的要求建立鏈接的請求
'''
            
   
3.四次揮手	斷開鏈接
	不能合併成三次揮手 因為有等待時間要等待

img

3.7 UDP協議

1.別稱:
	不可靠協議
'''
數據發送沒有通道的概念 發送出去了就不管了 無論對方是否接收成功 都會在自己記憶體中 直接刪除該數據


TCP協議相當於打電話 你一句我一句 你儂我儂

UDP協議相當於發簡訊 發了就完事 管你看不看
'''

img

3.8 應用層

都是人為自定義的協議標準 可遵循可不遵循

HTTP協議 FTP協議 ...

img