伺服器就是一系列硬體或軟體,為乙個或多個客戶端(服務的使用者)提供所需的「服務」。它存在唯一目的就是等待客戶端的請求,並響應它們(提供服務),然後等待更多請求。
硬體伺服器的乙個例子就是檔案伺服器。這些通常都是擁有龐大通用儲存容量的計算機,可以被客戶端遠端訪問。客戶端計算機會掛載伺服器計算機上的磁碟,看起來好像這個磁碟就在本地計算機上一樣。
軟體伺服器提供的主要服務包括程式執行、資料傳輸檢索、聚合、更新,或其他型別的程式設計或資料操作。現在乙個更常見的軟體伺服器就是 web 伺服器。如果個人或公司想要執行自己的 web 伺服器,那麼必須擁有一台或多台計算機,在上面安裝希望提供給使用者的 web 頁面和 web 應用程式,然後啟動 web 伺服器。
資料庫伺服器是另一種型別的軟體伺服器。它們接受客戶端的儲存或檢索請求,響應請求,然後等待更多的事務。
在伺服器響應客戶端請求之前,必須進行一些初步的設定流程來為之後的工作做準備。首先會建立乙個通訊端點,它能夠使伺服器監聽請求。一旦乙個通訊端點已經建立,監聽伺服器就可以進入無限迴圈中,等待客戶端的連線並響應它們的請求。
客戶端比伺服器端更簡單,客戶端所需要做的只是建立它的單一通訊端點,然後建立乙個到伺服器的連線。然後,客戶端就可以發出請求,該請求包括任何必要的資料交換。
套接字最初是為同一主機上的應用程式所建立,使得主機上執行的乙個程式(又名乙個程序)與另乙個執行的程式進行通訊。這就是所謂的程序間通訊(inter process communication,ipc)。有兩種型別的套接字:基於檔案的和面向網路的。
unix 套接字是我們所講的套接字的第乙個家族,並且擁有乙個「家族名字」 af_unix(又名 af_local,在 posix1.g 標準中指定),它代表位址家族(address family): unix。包括 python 在內的大多數受歡迎的平台都使用術語位址家族及其縮寫 af,af_local(在 2000~2001 年標準化)將代替 af_unix。
第二種型別的套接字是基於網路的,它也有自己的家族名字 af_inet,或者位址家族:網際網路。另乙個位址家族 af_inet6 用於第 6 版網際網路協議(ipv6)定址,目前 af_inet 是使用得最廣泛的。
總的來說, python 只支援 af_unix、 af_netlink、 af_tipc 和 af_inet 家族。
1.面向連線的套接字
面向連線的通訊提供序列化的、可靠的和不重複的資料交付,而沒有記錄邊界。這基本上意味著每條訊息可以拆分成多個片段,並且每一條訊息片段都確保能夠到達目的地,然後將它們按順序組合在一起,最後將完整訊息傳遞給正在等待的應用程式。
實現這種連線型別的主要協議是傳輸控制協議(更為人熟知的是它的縮寫 tcp)。為 了建立 tcp 套接字,必須使用 sock_stream 作為套接字型別。tcp 套接字的名字sock_stream 基於流套接字的其中一種表示。因為這些套接字(af_inet)的網路版本使用網際網路協議(ip)來搜尋網路中的主機,所以整個系統通常結合這兩種協議(tcp 和 ip)
來進行。
2.無連線的套接字
與虛擬電路形成鮮明對比的是資料報型別的套接字,它是一種無連線的套接字。這意味著,在通訊開始之前並不需要建立連線。
實現這種連線型別的主要協議是使用者資料報協議(更為人熟知的是其縮寫 udp)。為 了建立 udp 套接字,必須使用 sock_dgram 作為套接字型別。你可能知道, udp 套接字的sock_dgram 名字來自於單詞「datagram」(資料報)。因為這些套接字也使用網際網路協議來尋找網路中的主機,所以這個系統也有乙個更加普通的名字,即這兩種協議(udp 和 ip)的組合名字,或 udp/ip。
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...