1. 程式人生 > 其它 >開發框架、七層協議、TCP和UDP協議

開發框架、七層協議、TCP和UDP協議

一、軟體開發架構

二、網路程式設計簡介

三、OSI七層協議

四、網際網路相關名詞——區域網、廣域網、交換機、路由器

五、TCP 和UDP協議

一、軟體開發架構

# 1、軟體開發架構含義
   程式設計師在編寫軟體的時候應該遵循的架構設計——相當於之前寫的ATM和選課系統所採用的的三層架構
 
# 2、軟體開發架構的分類
  2.1、C/S架構
   C:client(客戶端)
   S:server(服務端)
"""
  客戶端相當於需要體驗軟體的使用者
  服務端相當於對外服務的服務場所
我們在手機上下載的各種APP就是他們的客戶端,開啟APP時就相當於我們基於網路到了場所裡面
"""

2.2 B/S架構
 B: browser(瀏覽器)
 S: server(伺服器)
 """
 本質和c/s架構一樣,只是我們在瀏覽器上當做客戶端,沒有專屬的APP,通過瀏覽器頁面去享受服務
 """
#  兩種架構的優缺點
C/S架構:
    優勢: 針對客戶端可以高度定製
    劣勢: 需要使用者去下載才能使用
B/S架構:
    優勢: 不需要下載,就可以體驗
    劣勢: 無法做到高度定製, 所以體驗感就沒那麼好
"""
  目前軟體開發趨勢主要是B/S架構
    eg: 微信小程式
         只需要在微信裡面就可以去訪問各個小程式服務端
         支付寶小程式
          在支付寶軟體裡面去訪問其他服務小程式
  統一提供介面服務>>>獲取大量的使用者和資料,使用期間還可以提供廣告服務
"""

二、網路程式設計簡介

# 1.網路程式設計的含義
   網路程式設計的研究前提就是基於網際網路, 所以網路程式設計就是基於網際網路來編寫程式碼
    
# 2.網路程式設計的學習目的
   可以開發C/S架構的軟體,掌握其中原理,使用框架
    
# 3.網路程式設計發展史
   始於美國軍方>>>: 很多先進的技術都是有軍事發明後轉為名用
   實際應用:
     軍方想要實現不同計算機之間的資料互動,在當時沒有網路程式設計技術的時候,只能拿U盤拷貝並攜帶
 
# 4.早起遠端通訊
 1.座機電話 —— 連線時需要電話線 
 2.大屁股電腦 —— 資料互動需要插網線
 3.智慧手機 —— 資料互動無限網絡卡
"""
 電話線、網線、無限網絡卡 —— 遠端通行的前提就是必須具備一個物理連結介質
"""

# 5.網際網路協議
 不同計算機之間如果想要實現無障礙互動,除了需要有物理連結介質之外還需要一套公有的標準
    標準 >>>: 網際網路協議(OSI七層協議)

三、OSI七層協議簡介

"""
  所有的計算機在生產過程過程中必須有相同的部分和相同的功能  ——  應、表、會、傳、網、數、物
"""
1.應用層
2.表示層
3.會話層
4.傳輸層
5.網路層
6.資料鏈路層
7.物理連結層
# 很多人把它們總結成五層
1.應用層(包含了表示層和會話層)
2.傳輸層
3.網路層
4.資料鏈路層
5.物理連結層

1、OSI七層協議之物理連結層和資料鏈路層

OSI的本質其實就是規定了資料想要基於網路傳送出去必須要在計算機上經歷一些固定的流程
# 物理連結層
    物理連結介質, 傳遞電訊號
    
# 資料鏈路層
基於物理連結層收到一串二進位制數, 那麼如何正常解析
    1.規定了二進位制資料的分組方式
    2.規定了'乙太網協議'
      規定想要接入網際網路的計算機都必須有一塊網絡卡
       每塊網絡卡在出廠的時候都會被賦予一個人全世界唯一 的編號,用來記錄,這個編號由12位16進位制陣列成
    前六位是產商編號, 後面六位是流水線號
    我們給這個獨一無二的編號稱之為 —— "mac地址"
小知識:
   基於Mac地址可以實現計算機之間的資料通訊

網路小知識

# 網際網路含義
 將計算機彼此連結到一起的介質
    
# 網際網路建立的目的
  基於網際網路做資料互動
   
# 上網的本質
  基於網線去訪問其他計算機上面的資源
"我們也可以把計算機稱之為伺服器或者服務端(專門對外提供服務)"

2、OSI七層協議之網路層

# 網路層
  規定了一個協議 —— IP協議
    規定了每臺接入網際網路的計算機都必須有一個IP地址(取決於網線,是可變的)
 'IP地址有兩個版本————IPV4和IPV6'
IPV4: 十進位制
    最小: 0.0.0.0
    最大: 255.255.255.255
# 但是用的IP地址多了,不夠用了,所以又創了一個新的
IPV6: 十六進位制
    """ IPV6 可以表示出地球上每一粒沙子 """
ip地址可以唯一標識出地球上獨一無二的一臺接入網際網路的計算機
"""
  IP地址分為公網IP和私網IP
   公網可以直接被瀏覽器訪問到,但是私網不可以
   公網需要花錢購買並且需要實名認證並且備案————很多非法的網站都是在國外註冊備案
"""

3、OSI七層協議之傳輸層

PORT協議(埠協議)
"""
  一臺計算機上面可以執行很多資料的互動軟體,比如:微信、視訊軟體、音樂軟體
  為什麼他們從記憶體中獲取資料不會錯亂,也就是因為埠協議的存在
"""
 埠協議:
    目的就是用於識別一臺計算機上面正在執行的應用程式(埠號相當於我們消費的手牌)
    埠號的範圍是:0 ~ 65535(也就是一臺計算機可以一起執行65535個應用程式)
    0 ~ 1024: 系統經常使用的埠號
    1024 ~ 8000:常用的軟體埠號
    所以我們在寫專案的時候,推薦使用8000之後的埠
# 注意事項
 1、同一時間同一臺計算機上面的埠號不能重合
 2、埠號是動態分配的, 就比如這次開啟QQ的埠號是8118,使用完關了,再重新開啟的時候可能是8118,也有可能是8888,或者其他數字

"""
  IP地址:用來標識全世界獨一無二的一臺接入網際網路的計算機
  PORT號:用來標識一臺計算機上面的某一個應用程式
  
  那麼IP + PORT :就是標識全世界獨一無二的計算機上面的某一個應用程式
  所以我們在日常中使用的網址就是 IP + PORT
  很多常見的服務端都不需要指定埠 ,只要訪問了ip地址內部去會自動對映
"""

4、OSI七層協議之應用層

 程式設計師自己決定——HTTP協議 HTTPS協議 FTP協議 自定義協議

四、網際網路相關名詞——區域網、廣域網、交換機、路由器

1.交換機

讓接入互動機的多型計算機之間的彼此互聯

2、區域網

由交換機組成的網路稱之為區域網(一個區域)

3、廣播與單播

廣播:在交換機中群發
單播: 定向回覆訊息(記錄mac地址)

4、路由器

將區域網彼此連結起來並支援資料互動
網際網路其實可以看成是由多個區域網連結在一起

五、TCP和UDP協議

1、TCP協議

這兩個協議都屬於傳輸層
# TCP協議
  流式協議、可靠協議
  基於TCP協議進行資料互動之前需要做一些系列複雜的操作
>>>:  三次握手四次揮手
 三次握手建立連線: 彼此挖通道,單向的挖
 四次揮手斷開連線:彼此切斷通道
"""
洪水攻擊:服務端接收到了大量的syn請求,處於rcvd狀態
控制很多臺計算機同一時刻去訪問服務端,從而造成服務端瞬間過載癱瘓
"""

三次握手

四次揮手

2、UDP協議

丟包協議、不可靠協議
不需要建立雙下通道,資料的傳輸的速度快,但是傳輸的資料可能會發生丟失
QQ使用的就是UDP協議,所以就存在產生資料的丟失情況,但如果在UDP協議的基礎上做擴充套件來保證資料的安全

3、面試題

# TCP協議之所以比UDP協議可靠 ,就是因為有雙向通道 對不對?
	不對
  TCP協議之所以比UDP協議可靠 原因在於TCP協議傳送訊息有反饋機制
  	基於TCP傳送的訊息會在本地先儲存該訊息 如果地方確認收到才會刪除
    否則在一定的時間內會頻繁的多次傳送知道確認或者超時為止
  UDP協議傳送資料之後會立刻刪除記憶體資料 不會保留