網絡編程(一)

目錄mysql

網絡編程(一)

一 網絡架構

單機架構

​ 應用領域sql

​ 植物大戰殭屍; officemongodb

cs架構

​ 1.用戶操做系統安裝客戶端;產商操做系統部署服務端數據庫

​ 2.每一個用戶都須要獨立安裝軟件,服務端升級也要每一個用戶升級編程

應用領域瀏覽器

​ QQ; 大型網絡遊戲網絡

服務端(server):架構

​ 統一管理數據庫的主機中的軟件就叫作服務端,再後來 服務端不僅是管理數據,外加處理業務邏輯.(24小時不間斷提供服務)socket

客戶端(client):學習

​ 用戶安裝的軟件;(若是想要服務,隨時均可以去尋找服 務享受)

優勢:

​ 軟件使用穩定,而且能夠節省網絡資源;

缺點:

​ 1.若用戶想在贊成設備上使用使用多個軟件,必須下載多個客戶端;

​ 2.軟件的每一次更新,客戶端也必須跟着重新下載更新.

BS架構

b/s架構

​ browser: 瀏覽器(客戶端)

​ server: 服務端

應用領域

​ 例如瀏覽器,直接輸入域名,獲得你想要的......

優勢:

​ 以瀏覽器充當客戶端,無需用戶下載多個軟件,也無需用戶下載更新 版本

缺點:

​ 消耗網絡資源過大,當網絡不穩定時,軟件的使用也會不穩定.

二 網絡編程發展史

​ 全部網絡編程的先進技術都是源於軍事,但願經過遠程獲取數據,因此出現了"網絡編程".

早期如何實現遠程通訊:

​ --打電話--->電話線

​ --純平電腦(大屁股電腦)---> 網線,有線網卡

​ --筆記本電腦-->有線網卡,無線網卡

實現遠程通訊的必須具有:

1.物理鏈接介質---->網卡....

2.互聯網協議

-人與人之間溝通的介質:中文,英文

-計算機之間溝通的介質:'互聯網協議"

互聯網協議

互聯網協議又稱爲七層協議,OSI七層協議,OSI是一個世界標準組織

OSI七層協議:

--應用層

--表示層

--會話層

--傳輸層

--網絡層

--數據鏈路層

--物理鏈接層

學習由下到上:

須要優先了解的一共五層:

==物理鏈接層==

​ 基於電信號發送二進制的數據0101010111.

​ 010: 你 you

​ 101: 我 l

==數據鏈路層==

​ 數據鏈路層的"以太網協議",專門處理基於電信號發送二進制的數 據

​ 以太網協議

​ 1.規定好電信號數據的分組方式.

​ 2.每一臺鏈接網線的電腦都必需要有一塊"網卡"

​ 3.網卡由不一樣廠商生產的,每塊網卡都會有世界上獨一無二12位 的編號"mac"地址;前六位:廠商號,後六位:流水號

​ 4.交換機:可讓多臺電腦鏈接到一塊兒.

​ 基於以太網協議發送數據:

​ 特色:廣播,單播

​ 弊端:廣播風暴,不能跨局域網通訊

​ 5.互聯網:讓局域網之間進行通訊.

==網絡層==

​ IP地址: 用於標識惟一的一臺計算機(局域網)的地址

​ IP: 點分十進制

​ 最小值: 0.0.0.0

​ 最大值: 255.255.255.255

​ IPV4(瞭解):一開始用電腦的人很少,因此出現IPV4的協議版本

​ IPV6(瞭解):迴環地址 127.0.0.1--->localhost

==傳輸層==

​ TCP/UDP協議,他們都是基於端口工做的.

​ 端口號:標識電腦上某一個軟件.

​ 端口號範圍:0-65535

​ ==注意==:

​ 1.操做系統中,通常0-1024的端口都被默認使用了(0-1024)不要動

​ 2.儘可能使用8000後的端口號:

​ 開發中經常使用軟件的默認端口號(==重要==):

​ mysql: 3306

​ mongodb: 27017

​ Django: 8000

​ Tomcat: 8080

​ Flask: 5000

​ Redis: 6379

若想要服務端與客戶端進行通訊,必需要創建鏈接,產生雙向通道.

​ 一條是客戶端往服務端發送消息的.

​ 另外一條是服務端往客戶端發送消息的.

==應用層==

​ http

​ ftp

==小結==:

​ IP:用於惟一標識某一臺計算機的位置

​ port:端口用於確認計算機的一個應用軟件.

​ IP + port:世界上某一臺電腦的一個應用軟件

TCP協議工做原理:

TCP是一個流式協議

三次握手,四次揮手:

三次握手創建鏈接

創建雙向通道,創建好鏈接.

listen:監聽

established:確認請求創建鏈接

發送數據

write

read

客戶端王服務端發送數據,數據存放在內存中,須要服務端確認收到,數據纔會在內存中釋放掉.不然,會隔一段時間發送一次,讓服務端返回確認收到.

在一段時間內,若服務端仍是不返回確認收到,則取消發送.並釋放內存中的數據

四次揮手斷鏈接

TIME_WAIT:時間等待

socket

什麼是socket

socket是一個模塊,能夠寫一套c/s架構的套接字.

爲何要使用socket?

socket套接字會封裝好各層協議的工做

好處:能夠節省開發成本

如何使用

import socket

==注意==:客戶端與服務端必須遵循:

一段send,另外一端recv

不能兩端同時send或recv

相關文章
相關標籤/搜索