1. 網絡基礎
1-1. IP地址
1-1-1. 目的:
用來標記網絡上的一臺電腦
1-1-2. 如何查看IP
window:
ifconfig
Linux:
ipconfig
1-1-3. IP地址分類
1-1-3-1. IPV4(被廣泛使用的)
- IP協議的版本號是4
- 當前再用,目前被廣泛應用
- IPv4的地址位數爲32位(4位字節)
- 地址有限,幾乎全部耗盡
1-1-3-2. IPV6
- IP協議的版本號是6
- 實驗階段,作爲下一代IP地址
- IPv6的地址位數位128位(16位字節)
- 號稱可以爲全世界的每一粒啥子編上一個地址
1-2. 端口(port)
1-2-1. 知名端口
- 80端口分配給HTTP服務
- 21端口分配給FTP服務
- 。範圍是從0到1023
1-2-2. 動態端口
動態端口的範圍是從1024-65535
2. socker
2-1. socker 基本概念
2-1-1. 簡介
TCP/IP協議
TCP/IP協議是Transmission Control Protocol/Internet Protocol的簡寫,即傳輸控制協議/因特網互聯協議,又名網絡通訊協議,是Internet最基本的協議、Internet國際互聯網絡的基礎,由網絡層的IP協議和傳輸層的TCP協議組成。
TCP/IP 定義了電子設備如何連入因特網,以及數據如何在它們之間傳輸的標準。協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的協議來完成自己的需求。
TCP/IP協議模型
socker
socket又稱"套接字",應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求,使主機間或者一臺計算機上的進程間可以通訊。白話說,socket就是兩個節點爲了互相通信,而在各自家裏裝的一部’電話’。
2-2. socker的使用
- 創建套接字
- 使用套接字收/發數據
- 關閉套接字
2-2-1. UDP發送與接收程序
UDP發送數據
import socket
def main():
# 創建一個UDP套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.sento(b'nihao', ('192168.0.162', 8080)
# 關閉socker
udp_socket.close()
if __name__ == '__main__':
main()
UDP接收數據
- 創建套接字
- 綁定本地信息(IP和端口)
- 接收數據
- 打印數據
- 關閉套接字
import socket
def main():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 1 創建套接字
bind_addr = ('',7789) # 不寫ip,表示本機的任何一個ip
udp_socket.bind(bind_addr) # 2 綁定本地信息
while True:
recv_data = udp_socketrecvfrom(1024) # 3. 1024 表示本次接收最大字節數
recv = recv_data[0]
send_data = recv_data[1]
print("{}:{}".format(str(send_data), recv.decode('gbk')) # 4. 打印數據
udp_socket.close() # 5. 關閉套接字
if __name__ == '__main__':
main()
端口綁定問題
如果程序運行時,沒有綁定端口,那麼操作系統會自動分配一個端口給程序。而且同意端口,不能用兩次。
UDP聊天器
- 創建套接字,套接字是可以同時收發數據的
- 發送數據
- 接收數據
2-3. TCP客戶端與服務端
TCP介紹
- TCP協議,傳輸控制協議,是一種面向連接的、可靠的、基於字節流的傳輸層通信協議
- TCP通信需要經過創建連接、數據傳送、終止連接三個步驟
- TCP通信模型中,在通信開始之前,一定要先建立相關連接,才能發生數據
TCP特點
面向連接:
- 通信雙方必須先建立連接才能進行數據的傳輸
可靠傳輸:
- TCP採用發送應答機制
- 超時重傳
- 錯誤校驗
- 流量控制和阻塞管理
TCP與UDP區別總給
- CP面向連接;UDP是無連接的,即發送數據之前不需要建立連接。
- TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。
- UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
- 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信。
- TCP對系統資源要求較多,UDP對系統資源要求較少。
UDP 通信
TCP 通信
TCP 客戶端與服務端的定義
服務器端:就是提供服務的一方,而客戶端,就是需要被服務的一方
TCP客服端
構建流程:
- 創建socket
- 鏈接服務器
- 接收數據(最大接收2014字節)
- 關閉套接字
TCP服務端
- socket創建套接字
- bind綁定IP和port
- listen使套接字變爲可以被動鏈接
- accept等待客戶端的連接
- recv/send接收發送數據
TCP服務端爲多個客戶端服務
文件下載器
TCP客戶端
- 創建套接字
- 目的信息 服務器的ip和port
- 連接服務器
- 輸入要下載的文件名稱
- 發送文件下載請求
- 接收對方發送過來的數據
- 接收到數據在創建文件、
- 關閉套接字
TCP服務端
- socket創建套接字
- bind綁定IP和port
- listen使套接字變爲可以被動鏈接
- accept等待客戶端的鏈接
- recv/send接收發送數據