網路程式設計簡介:
什麼是網路程式設計:
網路通常指的是計算機中的網際網路,是由多台計算機通過網線或其他媒介相互連線組成的,
編寫基於網路的應用程式的過程稱之為網路程式設計
那麼為什麼要學習網路程式設計:
我們已經知道計算機,由作業系統,應用程式組成,有了這三個元素,就可以在自己的電腦上執行一些應用程式了,比如玩玩紙牌,掃掃雷什麼的,只能玩單機的遊戲
如果想要與其他計算機一起玩,就必須要讓你的計算機和其他計算機能夠互相傳遞資料
軟體開發架構:
c/s架構:
學習網路程式設計就是要通過網路來訪問另一台計算機的資料,這樣必然需要至少倆臺計算機,一台計算機上放著要分享的資料和用於分享的資料的程式,另一台計算機上執行訪問資料的程式,
我們把提供資料的一方稱之為伺服器(server),把訪問資料的一方稱之為客戶端(client)
這就是c/s架構
另外瀏覽器也可以訪問伺服器上的網頁資料,稱之為b/s,其本質上也是c/s只不過客戶端是瀏覽器
總結:c/s架構(client/ server)
c:客戶端
s:服務端
b/s結構(browser / server)
b:瀏覽器
s:伺服器
注意:bs結構本質上也是cs結構
手機端看上去cs結構比較火,實際上bs已經崛起了,
服務端:24小時不間斷提供服務
客戶端:什麼時候想體驗服務,就去找心儀的服務端尋求服務
1.物理連線介質,包括網線,無線電,光纖等
2.通訊協議
1.物理連線介質
比如說**機 要打通**則必須先接通**線,電流才能沿著**線到達另一台**機,**線則是物理介質
2.通訊協議:
協議就是標準,大家都要遵循相同的標準才能正常交流通訊
比如說倆個人要交流,必須說雙方都能理解的語言,不然你說你的語言,我說我的語言,雙方都聽不懂,人要想實現無障礙交流必須說統一的語言 >>> 英文
**計算機與計算機之間要想實現遠端通訊除了有物理連線介質之外還需要有一套公共的標準/協議
osi七層模型:
應用層表示層
會話層傳輸層
網路層資料鏈路層
物理連線層
為了方便記住,而簡化了一下,變為osi五層模型
應用層傳輸層
網路層資料鏈路層
物理連線層
1.物理連線層:
基於電訊號傳輸010101001的二進位制資料
2.資料鏈路層
1.規定了電訊號的分組方式
2.規定了任何一台接入網際網路的計算機都必須有一塊網絡卡,
每一塊網絡卡上面都刻有世界上獨一無二的編號
12位16進製制數
前六位是廠商編號
後六位是流水線編號
我們管這12位數叫做mac位址
注意:以上倆點合成為『乙太網協議』
3.網路層:
ip協議規定了只要是接入網際網路的計算機都必須有乙個ip位址
ip位址特點:點分十進位制
ip位址最小:0.0.0.0
ip位址最大:255.255.255.255
ip位址目前有兩個版本:ipv4 ipv6(由於ipv4已經不夠表示目前存在的計算機了 所以推出了ipv6版本)
ip位址是動態分配的
4.傳輸層tcp/udp都是基於埠工作的協議
埠(port)
計算機與計算機之間其實是計算機上的應用程式與應用程式之間的通訊埠:就是用來標識一台計算機上的某個應用程式
埠號的範圍:0~65535
注意:0~1024這些都是作業系統預設使用的埠號
建議:使用8000之後的埠
mysql預設埠:3306三次握手的過程實際上實在確認我發的你能收到,你發的我也能收到,從而保證資料傳輸的的可靠性,redis預設埠:6379
django預設埠:8000
flask預設埠:5000
埠號是動態分配的,比如說第一次啟動qq分配的是8989埠號,將qq關閉再次啟動埠號可能就變了
鏈結是乙個虛擬的概念,不實際存在,只要三次握手成功即表示連線建立成功!
問題是三次握手時的確能保障資料傳輸是可靠的,那麼握手後的資料要如何保證傳輸成功呢?
tcp協議要求在傳送資料後,必須接收到對方的回覆資訊才能確認資料成功傳送,如果一段時內沒有收到回覆資訊,會自動重新傳送,如果重試的次數過多則表示鏈結可能已經中斷!
四次揮手:四次揮手的目的是保證雙方的資料傳輸已經全部完成,同樣是為了保證資料的完整性
四次揮手中間的倆步是不能合併的,因為服務端需要檢測是否還有未發玩的資料
總結
其優點很明顯:能夠保證資料傳輸是完整的
缺點:由於每次都需要傳輸確認資訊,導致傳輸效率降低
場景:多用於必須保證資料完整性的場景,例如文字資訊,支付資訊等!
網路程式設計簡介
c s架構 client server c 客戶端 s 服務端 b s架構 browers server b 瀏覽器 c 伺服器 b s架構本質就是c s架構 手機端在未來b s架構會變得更火 服務端就是24小時,不間斷提供服務 客戶端隨時隨地都能找服務端,體驗服務 七層協議 應用層表示層 會話層傳...
Python網路程式設計 簡介
ip port 等。addressfamily 可以選擇af inet 用於internet程序間通訊,這個是ipv4 ipv6是什麼,待查 或者af unix 用於同一臺機器程序間通訊 實際工作中常用af inet 傳送資料的流程 建立套接字 傳送資料 關閉接收資料的流程 建立套接字 繫結本地自己...
python網路程式設計簡介
1.tcp客戶端 1 coding utf823 import socket 45 target host www.chengzhier.com 6 target port 8078 建立乙個socket 物件 9 socket.af inet表示ipv4位址,或者主機名10 socket.scok...