1.軟件開發架構:
開發軟件,必需要開發一套 客戶端 與 服務端。html
客戶端與服務端的做用 服務端: 24小時不間斷提供服務 客戶端: 若是想要找服務,就去尋找服務並享受 軟件開發架構分爲兩種: C/S架構: Client: 客戶端 Server: 服務端 優勢: 軟件的使用穩定,而且能夠節省網絡資源。 缺點: 1.若用戶想在同一個設備上使用多個軟件,必須下載多個客戶端。 2.軟件的每一次更新,客戶端也必須跟着從新下載更新。 C/S架構的軟件: 例如: 電腦上的QQ、Pycharm等...手機端(移動端)的微信、王者榮耀等... B/S架構: Browser: 瀏覽器(客戶端) Server: 服務端 優勢: 以瀏覽器充當客戶端,無需用戶下載多個軟件,也無需用戶下載更新軟件版本, 直接在瀏覽器上訪問須要使用的軟件。 缺點: 消耗網絡資源過大,當網絡不穩定時,軟件的使用也會不穩定。 B/S架構的軟件: 例如: 在瀏覽器(客戶端)上輸入某個軟件的域名(http://oldboyedu.com/)。
2.後期學習
網絡編程、併發編程、數據庫開發 能夠開發一套C/S架構的軟件(防優酷系統)。
前端html、css、js,web框架(網絡編程、併發編程) 能夠開發一套B/S架構的軟件(bbs系統)。前端
3.網絡編程mysql
- 網絡編程發展歷史 全部先進的技術都源自於軍事,但願經過遠程獲取數據,因此出現了"網絡編程"。 早期如何實現遠程通訊: - 打電話 ---> 電話線 - 純平電腦(大屁股電腦) ---> 網線,有線網卡 - 筆記本電腦 ---> 有線網卡、無線網卡 要實現遠程通訊必須具有: 1.物理鏈接介質 ---> 網卡.... 2.互聯網協議 - 人與人之間溝通的介質: 中文、英語 - 計算機之間溝通的介質: "互聯網協議"
互聯網協議又稱爲網絡七層協議,OSI七層協議,OSI是一個世界標準組織。web
OSI七層協議: - 應用層 - 表示層 - 會話層 - 傳輸層 - 網絡層 - 數據鏈路層 - 物理鏈接層 學習由下到上: 須要優先了解的協議一共5層: - 物理鏈接層 基於電信號發送二進制的數據0101010111。 010: 你 you 101: 我 I - 數據鏈路層 數據鏈路層的 "以太網協議",專門用於處理基於電信號發送二進制的數據。 以太網協議: 1.規定好電信號數據的分組方式。 2.每一臺鏈接網線的電腦都必需要由一塊 "網卡"。 - 網卡由不一樣廠商生產的 - 每塊網卡都會有世界上獨一無二12位的編號 "mac"地址。 - 前6位: 廠商號 - 後6位: 流水號 - 交換機: 可讓多臺電腦鏈接到一塊兒。 基於以太網協議發送數據: 特色: 廣播、單播 弊端: 廣播風暴、不能跨局域網通訊。 - 互聯網: 讓局域網之間進行通訊。 - 網絡層 IP地址: 用於標識惟一的一臺計算機(局域網)的地址。 IP: 點分十進制 最小值: 0.0.0.0 最大值: 255.255.255.255 IPV4(瞭解): 一開始用電腦的人很少,因此出現IPV4的協議版本。 IPV6(瞭解): 括號IP。 本機IP: 迴環地址 127.0.0.1 ---> localhost - 傳輸層 TCP/UDP協議,他們都是基於端口工做的。 - 端口號: 標識電腦上某個一個軟件。 - 端口號範圍: 0-65535 注意: 1.操做系統中,通常0-1024的端口都被默認使用了(0-1024不要動) 2.儘可能使用8000以後的端口號 8001 開發中經常使用軟件的默認端口號 (默寫) : mysql: 3306 mongodb: 27017 Django: 8000 Tomcat: 8080 Flask: 5000 Redis: 6379 若想服務端與客戶端進行通訊,必需要創建鏈接,產生雙向通道。 一條是客戶端往服務端發送消息的。 另外一條是服務端往客戶端發送消息的。 - 應用層 http ftp
ip:用於惟一標識某一臺計算機的位置。
port: 端口用於確認計算機上的一個應用軟件。sql
ip + port: 世界上某一臺電腦上的一個應用軟件。
TCP是一個流式協議mongodb
三次握手建鏈接:
創建雙向通道,創建好鏈接。數據庫
established: 確認請求創建鏈接編程
- 發送數據: write read
客戶端往服務端發送數據,數據存放在內存中,須要服務端確認收到,數據纔會在內存中釋放掉。瀏覽器
不然,會隔一段時間發送一次,讓服務端返回確認收到。
在一段時間內,若服務端仍是不返回確認收到,則取消發送。並釋放內存中的數據。
- 四次揮手斷鏈接: - TIME_WAIT: 時間等待
socket是一個模塊,能夠寫一套C/S架構的套接字。
socket套接字會封裝好各層協議的工做。
好處:
能夠節省開發成本。
import socket
客戶端與服務端必須尊循: 一端send,另外一端recv 不一樣兩端同時send或recv