一、C/S架構:創建在局域網的基礎上,須要安裝客戶端才能使用mysql
Client:客戶端,好比QQ、微信等客戶端redis
Server:服務端sql
優勢:軟件的使用穩定,節省網絡資源mongodb
缺點:安裝麻煩,用戶體驗差,軟件每次更新,用戶都須要從新下載或更新版本django
二、B/S架構:即瀏覽器和服務器架構模式,好比手機微信小程序,不須要下載客戶端使用編程
Browser(本質上也是一個客戶端):瀏覽器flask
Server:服務端小程序
優勢:軟件的使用方便,用戶體現高,無需跟着軟件的更新去下載(比較流行的架構)微信小程序
缺點:若是網絡不穩定,使用就不穩定瀏覽器
客戶端與服務端
服務端:24小時不間斷提供服務
客戶端:客戶想要找服務時纔會訪問服務端
計算機與計算機之間溝通的介質——互聯網協議,讓全部的廠商生產的電腦都遵循這套協議,實現全部的電腦之間無障礙通訊,「互聯網協議」是計算機界的中文,英文等
OSI七層協議
編寫程序須要關注5層:(由下往上記)
一、物理層
獲取到對象計算機的電信號數據
沒法獲取具體數據內容,須要將電信號數據(數據包)扔給數據鏈路層
二、數據鏈路層
以太網協議:
規定一套分組的方式,來獲取電信號的真實數據(數據包)
以太網協議由head和data組成
head由18個字節組成,前6位是發送者,中間6位是接收者,後6位是數據類型
data是電信號的具體數據
每一臺電腦都必需要有一個網卡(一個硬件,在電腦插入網線的地方)
每一臺電腦網卡都有一個獨一無二的一串數字:12位16進制的數字,稱爲「Mac地址」
mac地址:前六位是廠商號,後六位是流水號
mac地址做用:標識全世界上獨一無二的計算機
以太網協議的工做方式:單播和廣播
缺點:一、廣播風暴;二、只能在局域網內實現通訊,沒法跨局域網實現通訊
所以爲了實現全世界的計算機之間的通訊有網絡層
三、網絡層
爲了實現全世界的電腦之間通訊
IP地址(IP協議):由點分十進制的數字組成
IPV4:最小範圍:0.0.0.0
最大範圍:255.255.255.255
IP的版本:IPV4和IPV6,IPV4數量用完後相應出現IPV6
IP的做用:用於標識全世界某一臺計算機的位置,局域網的位置
IP地址+mac地址:標識全世界某一個局域網內的,某一臺計算機
arp協議:將IP地址與Mac地址綁定到一塊兒了,全部能夠經過IP地址找到Mac地址
四、傳輸層
tcp與udp都是基於「端口」實現通訊,有TCP協議和UDP協議
主要是軟件與軟件之間的通訊
port端口:用於標識計算機中某一個獨一無二的軟件
注意:
0—1024:禁止使用,操做系統在使用
使用8000以上的端口數
軟件固定的端口號(不要碰): django: 8000 mysql: 3306 redis: 6379 flask: 5000 tomcat: 8080 mongodb: 27017
mac地址+IP地址+port端口:標識的是全世界範圍內某一個局域網內某一臺計算機的某一個軟件
五、應用層
大佬們制定好的一套協議
http協議
ftp協議
自定義的協議
數據的傳輸是先從應用層到物理層進行包裝,後傳遞給另外一臺計算機解包是從物理層到應用層提取到數據
TCP協議:創建客戶端與服務端之間的雙向通道
標記位含義:
ACK:確認序號有效。
SYN:發起一個新鏈接。
FIN:釋放一個鏈接。
三次握手,建鏈接:
反饋機制:
客戶端往服務端發送請求,服務端必須有迴應,一次請求必需要有一次響應
缺點:
洪水攻擊:僞造大量的請求,往對方服務端發送,致使服務端響應跟不上,以致於癱瘓
防止洪水攻擊:1. Linux系統有一個參數能夠限制。 2. 半鏈接池listen,限制用戶在同一個時間段內的訪問數量
四次揮手,斷開鏈接:
稱爲數據包協議
特色:
TCP協議與UDP協議的區別:
TCP協議:
優勢:數據安全
缺點:傳輸速度慢,粘包
UDP協議:
優勢:
缺點:數據不安全,容易丟失