2022.4.14 軟體開發架構、OSI七層協議、TCP與UDP協議
2022.4.14 軟體開發架構、OSI七層協議、TCP與UDP協議
- 軟體開發架構
- 網路程式設計簡介
- OSI七層協議
- 網際網路相關專業名詞
- TCP與UDP協議
一、軟體開發架構
1、什麼是軟體開發架構
程式設計師在編寫軟體的時候應該遵循的架構設計
類似於我們寫ATM和選課系統所採用的三層架構
2、軟體開發結構的分類
(1)C/S架構
C:client(客戶端)
S:server(服務端)
eg:客戶端相當於是需要體驗服務的客人,服務端相當於是對外提供服務的店面,
比如手機上下載的各種app其實是各大廠家的客戶端,開啟app使用功能的時候其實就是相當於是基於網路去到廠家的店裡面讓服務員提供服務
(2)B/S架構
B:browser(瀏覽器)
S:server(伺服器)
eg:本質也是C/S架構,就是讓瀏覽器充當各個廠家的客戶端,使用者無序對應下載相應客戶端
(3)兩種架構的優缺點
C/S架構:
優勢:針對客戶端可以高度定製
劣勢:需要使用者去下載才能使用
B/S架構:
優勢:無需下載,極速體驗
劣勢:無法做到高度定製,體驗效果極差
(4)目前發展趨勢:
更傾向於B/S架構,比如微信小程式,只要下載一個微信就可以通過微信去訪問很多服務端,比如支付寶諸多應用,只需要下載一個支付寶體驗很多服務
(5)統一介面服務>>>:
獲取大量使用者資料,中途還可以提供廣告服務
二、網路程式設計簡介
1、什麼是網路程式設計
網路程式設計的研究前提就是基於網際網路,因此網路程式設計就是:
基於網際網路編寫程式碼
2、學習網路程式設計的目的/結果
學習完網路程式設計之後就可以開發C/S架構的軟體(掌握原理使用框架)
3、網路程式設計發展史
該技術其實源於美國軍方,在上世紀很多先進的計數都是由軍事發明今後轉為民用,軍方想要實現不同計算機之間資料互動,沒有網路程式設計技術的時候只能拿U盤拷貝並攜帶,為了跨區域互動資料所以發明了網路程式設計
4、早期遠端通訊
(1)座機電話
需要電話線連線
(2)大屁股電腦
需要插網線
(3)智慧手機
需要無限網絡卡
綜上得出結論,早期遠端通訊的前提是必須具備一個物理連線介質
5、網際網路協議
因此,不同計算機之間要想實現無障礙互動,除了需要有物理連線介質之外還需要有一套公有的標準,即:網際網路協議(OSI七層協議)
三、OSI七層協議
1、OSI七層協議簡介
OSI七層的本質其實就是規定了資料要想基於網路傳送出去必須在計算機上經歷一些固定的流程,而這個協議其實就是所有計算機在生產過程中必須有的相同的部分和功能:
(1)應用層
(2)表示層
(3)會話層
(4)傳輸層
(5)網路層
(6)資料鏈路層
(7)物理連線層
上述七層也有很多人總結為五層,即:
應用層(三層)、傳輸層、網路層、資料鏈路層、物理連線層
接下來,我們以上面五層詳細研究,從最後的物理連線開始
2、物理連線層
即物理連線介質,傳遞電訊號
3、資料鏈路層
問題:基於物理連線層接收到一串二進位制數,如何切分才能正常解析?
資料鏈路層給出瞭解決方案:
(1)規定了二進位制資料的分組方式
(2)規定了“乙太網協議”:
凡是能夠接入網際網路的計算機都必須有一塊網絡卡,每塊網絡卡都有一個獨一無二的編號,該編號由12位16進位制陣列成(前六位是產商編號,後六位是流水線號),即“mac地址”,可以理解為它的身份證號
ps:基於mac地址就可以實現計算機之間的資料通訊了
4、網路層
1.網路小知識
(1)什麼是網際網路
即:將計算機彼此連線到一起的介質
(2)網際網路建立的目的
即:基於網際網路做資料互動
(3)上網的本質
即:基於網線去訪問其他計算機上面的資源
ps:我們自己的計算機也可稱為伺服器/服務端(專門對外提供服務)
2.專業設施名詞
(1)交換機
即:讓接入交換機的多臺計算機之間彼此互聯
(2)區域網
由交換機組成的網路稱之為區域網(一個區域)
(3)廣播與單播
廣播:在交換機中群發
單播:定向回覆訊息(記錄mac地址)
廣播可以理解為獲取交換機中所有的計算機,然後找到需要傳送的計算機,單播可以理解為定向發給某個計算機並返回該計算機的mac地址
(4)路由器
可以將區域網彼此連線起來並支援資料互動的裝置
網際網路其實可以成是由多個區域網連線在一起,在區域網中可以直接基於mac地址實現資料互動,但是可能會產生廣播風暴(交換機中同一時間出現太多廣播操作),mac地址只能用於區域網互動資料,不能跨區域網傳輸
3.IP協議
每臺計算機接入網際網路都會有一個IP地址(取決於網線,一般都是動態IP地址),IP地址目前有兩個版本:
IPV4:點分十進位制
最小:0.0.0.0
最大:255.255.255.255
# 隨著社會的進步 計算機的使用越來越普遍 IPV4地址不夠用
IPV6:十六進位制
'''IPV6可以表示出地球上每一粒沙子,可見其之多'''
ps:IP地址可以唯一標識地球上獨一無二的一臺接入網際網路的計算機
注意:IP地址分為公網IP和私網IP
公網IP:是可以直接被瀏覽器訪問到的,需要花錢購買並且需要實名認證並備案,因此很多非法網站都是在國外註冊備案
私網IP:是不可以直接被瀏覽器訪問的(個人電腦預設使用的都是私網IP)
5、傳輸層
PORT協議(埠協議)
思考1:為什麼一臺計算機上面很多程式資料互動不會錯亂?
就是因為埠協議的存在,即PORT協議,用於標識一臺計算機上面正在執行的應用程式,標記的編號稱為埠號
埠號範圍:0~65535
0~1024:系統經常使用的埠號
1024~8000:常用軟體埠號
我們以後在寫專案的時候推薦使用8000之後的埠
注意: 1.同一時間同一臺計算機上面埠號不能衝突
2.埠號是動態分配的
思考2:知道了IP協議和PORT協議的概念後,那麼兩者結合有何效果呢?
IP+PORT:能夠標識地球上任意一臺計算機上面的任意一個應用程式
我們日常生活使用瀏覽器訪問的各個網址其實就是IP+PORT,例如:
正常網址: www.baidu.com # 好記
ip:port: 14.215.177.29:80 # 難記
域名解析(將好記的地址解析成真正的地址):
www.baidu.com # 解析前
202.108.22.5:80 # 解析後
知識拓展小卡片:
1.域名:是Internet上某一臺計算機或計算機組的名稱,用於在資料傳輸時標識計算機的電子方位(有時也指地理位置)。域名是由一串用點分隔的名字組成的,通常包含組織名,而且始終包括兩到三個字母的字尾,以指明組織的型別或該域所在的國家或地區。 # .com .cn
2.域名解析:是把域名指向網站空間IP,讓人們通過註冊的域名可以方便地訪問到網站的一種服務。
原理:要訪問一臺的伺服器的網際網路,最終還必須通過IP地址來實現,域名解析就是將域名重新轉換為IP地址的過程。
# 一個域名對應一個IP地址,一個IP地址可以對應多個域名;所以多個域名可以同時被解析到一個IP地址。域名解析需要由專門的域名解析伺服器(DNS)來完成。
3.DNS(域名伺服器):是進行域名和與之相對應的IP地址轉換的伺服器。
原理:DNS中儲存了一張域名和與之相對應的IP地址的表,以解析域名。
6、應用層
這裡完全可以取決於程式設計師自己
HTTP協議 HTTPS協議 FTP協議 自定義協議
四、TCP與UDP協議
兩者都屬於傳輸層
1、TCP協議
流式協議、可靠協議
基於TCP協議資料互動之前和結束之後需要做一系列複雜操作,即
“三次握手”和“四次揮手”
經過“三次握手”即可建立連線,如下圖:
經過“四次揮手”斷開連線,如下圖:
洪水攻擊:
當服務端接收到了大量的syn請求 處於rcvd狀態:
rcvd狀態:SYN_RCVD是TCP“三次握手”的中間狀態,是服務埠(監聽埠,如應用伺服器的80埠)收到SYN包併發送[SYN,ACK]包後所處的狀態,即“兩次握手”後的狀態
因此,控制很多臺計算機同一時刻去訪問服務端,會造成服務端瞬間過載癱瘓
2、UDP協議
丟包協議、不可靠協議
特點:不需要建立雙向通道,且傳輸速度較快,但是可能會丟失資料
eg: qq使用的就是UDP協議 所以有時候會產生資料丟失現象
但是我們可以在UDP協議的基礎之上做很多額外的擴充套件來保證資料的安全
3、TCP和UDP的區別
TCP協議類似於打電話:你一句我一句
UDP協議類似於發簡訊:發了之後不管你看不看 只要發了就行
4、相關面試題
# TCP協議之所以比UDP協議可靠 就是因為有雙向通道 對不對?
描述的不夠精確 不對!!!
答:不對,TCP協議之所以比UDP協議可靠 原因在於TCP協議傳送訊息有反饋機制。
TCP協議傳送的資料會在本地先儲存該資料,如果對方確認收到才會刪除,否則在一定的時間內會頻繁的多次傳送知道確認或者超時為止
UDP協議傳送資料之後會立刻刪除記憶體資料 不會保留