1.軟體開發架構:
開發軟體,必須要開發一套 客戶端 與 服務端。
客戶端與服務端的作用:
服務端: 24小時不間斷提供服務
客戶端: 如果想要找服務,就去尋找服務並享受
軟體開發架構分為兩種:
c/s架構:
client:客戶端
server:服務端
優點:軟體使用穩定,並且可以節省網路資源。
缺點:2、軟體每次更新,客戶端也必須更新
c/s架構的軟體:
b/s架構:
browser:瀏覽器
server:服務端
優點:直接在瀏覽器上訪問需要使用的軟體
缺點:消耗網路資源過大,當網路不穩時,軟體的使用也會不穩定
b/s架構的軟體:
在瀏覽器上輸入某軟體的網域名稱
2、網路程式設計
網路程式設計發展歷史:
所有先進的技術都源自於軍事,希望通過遠端獲取資料,所以有了網路程式設計
早期如何實現遠端通訊:
- 打**-->**線
- 純平電腦 --> 網線,有線網絡卡
- 膝上型電腦 --> 有線網絡卡,無線網絡卡
要實現遠端通訊必須具備:
1、物理連線介質 --> 網絡卡
2、網際網路協議
- 人與人之間溝通的介質:中文、英文
- 計算機之間溝通的介質:『網際網路協議』
3、網際網路協議
網際網路協議又稱之為網路七層協議,osi七層協議,osi是乙個世界標準組織
osi七層協議:
- 應用層
- 表示層
- 會話層
- 傳輸層
- 網路層
- 資料鏈路層
- 物理連線層
學習由下到上:
需要了解的協議共5層:
- 物理連線層
基於電訊號傳送二進位制資料。
如何切分
- 資料鏈路層
資料鏈路層的『乙太網協議』,主要用於處理基於電訊號傳送的二進位制資料
乙太網協議:
1、規定了電訊號資料的分組方式
2、每一台連線網線的電腦都必須要由一塊『網絡卡』。
網絡卡由不同的廠商生產的
每塊網絡卡都會有世界上獨一無二的12位編號
前6位:廠商號
後6位:流水號
- 交換機:
可以讓多台電腦連線在一起
基於乙太網協議傳送資料:
特點: 廣播、單播
缺點: 廣播風暴、不能跨區域網通訊。
- 網際網路:
讓區域網之間可以通訊。
- 網路層
ip: 點分十進位制的數字
最小值:0.0.0.0
最大值:255.255.255.255
- 傳輸層
tcp/udp協議,他們都是基於埠操作
tcp是流式協議
- 埠號:標識電腦上的某個軟體。
- 埠號範圍:0 — 65535
注意:1、作業系統中,一般0-1024的埠都被預設使用了,不要動它
2、盡量使用8000以後的埠號 8001
開發中常用軟體的預設埠號:
mysql:3306
mongodb:27017
django:8000
tomcat:8080
flask:5000
redis:6379
若想服務端和客戶端進行通訊,必須要建立連線,產生兩條管道。
一條是客戶端向服務端傳送訊息的
另一條時服務端向客戶端傳送訊息的
- 應用層
ftp
總結:
ip: 用於唯一標識某一台計算機的位置。
port:用於確認計算機上的某個應用軟體
tcp協議的工作原理:
- tcp是乙個流式協議
- 三次握手,四次揮手(*******):
- 三次握手建連線:
建立雙向通道,建立好連線。
三次握手過程:
第一次握手:建立連線時,客戶端傳送syn包到伺服器,並進入syn_sent狀態,等待伺服器確認
第二次握手:伺服器收到syn包,確認客戶的syn,同時傳送乙個syn包,即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
- 四次揮手斷連線:
第一次,客戶端向服務端發出fin請求,並且停止傳送資料。客戶端進入fin-wait-1(終止等待1)狀態。
第二次,伺服器收到請求,發出ack確認,服務端進入close-wait(關閉等待)狀態。
等待,客戶端收到伺服器的確認後,此時,客戶端就進入fin-wait-2 (終止等待2)狀態,等待伺服器傳送fin請求(可能還需要接受伺服器傳送的最後的資料)。
第三次,伺服器將最後的資料傳送完畢後,向客戶端傳送fin請求,伺服器就進入了last-ack(最後確認)狀態,等待客戶端的確認。
第四次,客戶端收到伺服器的fin請求,發出ack確認,客戶端就進入了time-wait(時間等待)狀態。(注意:此時tcp連線還沒有釋放,必須經過2msl(最長報文段壽命)的時間後,當客戶端撤銷相應的tcb後,才進入closed狀態。伺服器只要收到了客戶端發出的確認,立即進入closed狀態。同樣,撤銷tcb後,就結束了這次的tcp連線。可以看到,伺服器結束tcp連線的時間要比客戶端早一些。)
5、socket
1.什麼是socket?
socket是乙個模組,可以寫一套c/s架構的套接字。
2.為什麼要使用socket?
socket套接字會封裝好各層協議的工作。
好處:可以節省開發成本。
3.如何使用
import socket
客戶端:
import socket
client = socket.socket()
client.connect(('127.0.0.1', 9527))
while true:
send_msg = input('client --> server:')
client.send(send_msg.encode('utf8'))
if send_msg == 'q':
break
data = client.recv(1024).decode('utf8')
print(data)
client.close()
服務端:
import socket
server = socket.socket()
server.bind(('127.0.0.1', 9527))
server.listen(5)
conn, addr = server.accept()
print(addr)
while true:
data = conn.recv(1024).decode('utf8')
print(data)
if data == 'q':
break
send_msg = input('server --> client:').encode('utf8')
conn.send(send_msg)
conn.close()
注意: 客戶端與服務端必須尊循:
一端send,另一端recv
不同兩端同時send或recv
網路程式設計基礎(一)
網路程式設計基礎 網路程式設計的實現就必須有伺服器和客戶端的存在 伺服器 為客戶提供服務的一方 客戶端 獲取資料的為客戶端,可以是任意一台主機,只要它和伺服器存在連線,並且的到伺服器的授權,就可以使用伺服器提供的服務 有兩種協議可以選擇 1 tcp 面向連線的 可靠的 流式服務 2 udp 無連線 ...
網路程式設計基礎(一)
1 網路 在計算機領域中,網路是資訊傳輸 接收 共享的虛擬平台,通過它把各個點 面 體的資訊聯絡到一起,從而實現這些資源的共享。2 網際網路 internet 是網路與網路之間所串連成的龐大網路,這些網路以一組通用 的協議相連,形成邏輯上的單一巨大國際網路。在不同主機上的兩個程序 4 在網路乙個程序...
網路程式設計基礎一
osi參考模型也稱為七層模型 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層 物理層 tcp ip參考模型也稱為4層模型 應用層例如 http ftp 傳輸層例如 tcp udp 網際層例如 ip 資料鏈路層 物理層例如 無線 光纜 網線 ip位址 網路中裝置的標識 埠號 用於標識程序的邏輯位址...