第一個最簡單的CS架構以及介紹


1. C/S與B/S架構
C/S: Client 客戶端--------基於網絡----------Server
B/S: Browser瀏覽器--------基於網絡----------Server

2. 網絡通信服務端需要遵循的原則:
1. 服務端與客戶端都需要有唯一的地址,但是服務端的地址必須固定/綁定
2. 對外一直提供服務,穩定運行
3. 服務端應該支持並發

3. 網路
網絡建立的目的是為數據交互(通信)
如何實現通信:
1. 建立好底層的物理連接介質
2. 有一套統一的通信標准,稱之為互聯網協議

4. 互聯網協議:就是計算機界的英語,一套通用的規范
網絡=底層的物理連接介質+互聯網協議(就是計算機界的英語)
OSI七層協議
應用層(應用層\表示層\會話層):http,ftp
傳輸層:tcp/udp
網絡層:ip
數據鏈路層:ethernet
物理層:發送電信號

ip+mac可以標識全世界范圍內獨一無二的一台計算機的位置
port可以標識一台計算機之上唯一的一個基於網絡通信的應用軟件

ip+mac+port:可以標識全世界范圍內獨一無二的一個應用軟件(基於網絡通信)



今日內容:
1. tcp協議
三次握手建鏈接
四次揮手斷開鏈接
tcp協議的狀態
syn洪水攻擊與半連接池

2. 互聯網協議詳解(了解)

3. socket介紹

4. 基於socket來編寫C/S架構的軟件

服務端程序:
import socket

# 1.買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # SOCK_STEAM=>TCP流式協議,
print(phone) # 是用來接收鏈接請求,從而建立鏈接的

# 2.插手機卡
phone.bind(('127.0.0.1', 8080)) # 0-65535

# 3.開機
phone.listen(5) # 同一時刻最大請求數為5個

print('正在等待連接....')
# 4.等待電話請求
conn, client_addr = phone.accept() # (雙向鏈接的套接字對象,存放客戶端ip和端口的小元組)
print(conn) # conn代表雙向鏈接,用來收發消息
# print(client_addr)

# 5.收\發消息
data = conn.recv(1024) # 1024接收的最大字節數bytes
print('收到客戶的數據', data)
conn.send(data.upper())

# 6.掛電話鏈接
conn.close()

# 7.關機
phone.close()



客戶端程序:
import socket

# 1.買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# SOCK_STEAM=>TCP流式協議,默認是TCP流式協議

# 2.撥號
phone.connect(('127.0.0.1', 8080))

# 3.發\收消息
phone.send('hello'.encode('utf-8'))
# 只能發bytes類型
data = phone.recv(1024)
print('收到服務端的消息: ', data)

# 4.掛電話鏈接
phone.close()




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM