網絡并發1 軟體開發架構
c/s架構
c:client 用戶端
s:server 服務端
"""
将用戶端看成是去店裡消費客人
将服務端看成是提供服務的店面
eg:收集各種app其實就是各大軟體的用戶端
服務端需要具備的三大特征
1.24小時不間斷提供服務(24小時監聽)
2.固定的位址(IP位址)
3.能夠服務多個使用者(高并發)
"""
b/s架構
b:browser 浏覽器
s:server 伺服器
"""
浏覽器統一充當各個服務端的用戶端
本質:bs架構本質上也是cs架構
"""
統一:各大網際網路巨頭正在做的事情
eg:
微信小程式(微信提供開發微信小程式的軟體)
支付寶小程式(各大程式接口)
# 總結
網絡程式設計學習完就可以開發cs架構的軟體(簡易版本)
并發程式設計、前端、資料庫、後端架構就可以開發bs架構軟體(任何類型的軟體)
網絡并發1 常見硬體
交換機:能夠使接入該機器的所有計算機之間彼此互聯
區域網路:有交換機組成的網絡
網際網路:可以簡單的了解為是多個區域網路之間彼此互聯
"""
基于mac位址的資料傳輸
1.廣播風暴
2.mac位址不能跨區域網路傳輸
"""
路由器:能夠連接配接多個區域網路并實作區域網路之間的資料傳輸
網絡程式設計前戲
網絡程式設計其實研究的就是程式之間的資料通信
由來:
基于遠端傳輸資料的技術最早誕生于美國軍方(前沿技術通常都是由軍事産生)
遠端資料傳輸發展史(民用)
1.有線電話 電話線互聯
2.無線電話 信号發射器
3.大屁股電腦 網線
4.筆記本電腦 網卡
...
"""
要想實作遠端資料互動的前提是必須要有實體連接配接媒體
"""
除了有實體連接配接媒體之外還應該有一些能夠保證資料彼此無障礙互動的東西(标準)
OSI七層協定
OSI七層協定
# 所有的計算機都必須有這7層
應用層
表示層
回話層
傳輸層
網絡層
資料鍊路層
實體鍊路層
# 開發層面可以歸納為五層
應用層
傳輸層
網絡層
資料鍊路層
實體連接配接層
實體連接配接層
提供一個實體連接配接接口 eg:網線接口,無線網卡等
資料鍊路層
1.規定了電信号的分組方式
2.以太網協定
規定了計算機必須有一塊網卡 并且網卡上面要有一個固定的一串數字
12位16進制數
前六位:産商編号
後六位:流水線号
上述的數字也稱之為計算機的mac位址(類似于身份證号)
網絡并發1 網絡層
IP協定:規定了接入網際網路的計算機都必須有一個IP位址用于唯一辨別
IPV4版本
最小 0.0.0.0
最大 255.255.255.255
IPV6版本
能夠表示出地球上每一粒沙子
# IP位址能夠唯一辨別接入網際網路的一台獨一無二的計算機
公網IP與私網IP
公網IP需要花錢購買并申請
私網IP自帶的但是無法直接基于網際網路通路
"""
arp協定
将IP位址轉換成mac位址(基于網絡請求)
"""
網絡并發1 傳輸層
TCP協定 UDP協定 暫且忽略
端口協定
範圍:0~65535
特性:動态配置設定
eg:第一次運作微信 系統随機取一個端口号2022
然後關閉微信重新啟動 系統随機取一個端口号
端口号基本使用
0~1024系統預設需要使用的端口号
1024~8000常見軟體端口号
以後我們開發的軟體最後使用8000之後的端口号
# 端口号(port):能夠唯一辨別一台計算機上面正在運作的一款應用程式
"""
端口号在同一台計算機同一時刻不能重複
"""
總結
ip+port 127.0.0.1:8080
"""
能夠唯一辨別世界上某一台接入網際網路的計算機上面的某一個正在運作的應用程式
"""
TCP協定
流式協定 可靠協定
三次握手 建立連結
重要狀态
listen監聽态:等待對方發請求
syn_rcvd态:忙于恢複确認建立請求
# 洪水攻擊:服務端在同一時間接收到了大量的要求建立連結的請求
四次揮手 斷開連結
不能合并成三次
UDP協定
不可靠協定
資料發送沒有通道的概念 發送出去了就不管了
"""
TCP協定相當于打電話 你一句我一句 你侬我侬
UDP協定相當于發短信 發了就完事 管你看不看
"""
早期的QQ使用的就是UDP
應用層
都是人為自定義的協定标準 可遵循可不遵循
HTTP協定 FTP協定 ...
網絡并發1