1. 程式人生 > >socket 網絡編程

socket 網絡編程

網絡編程 記錄 地址 門面模式 ipv6 pytho 系統 lan 可靠性

socket 網絡編程即c/s架構 1:硬件c/s架構(打印機) 2:軟件c/s架構——b/s架構(web服務)

Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協議族隱藏在Socket接口後面,讓Socket去組織數據,以符合指定的協議。

基於文件類型的套接字家族

套接字家族的名字:AF_UNIX----基於文件

unix一切皆文件,基於文件的套接字調用的就是底層的文件系統來取數據,兩個套接字進程運行在同一機器,可以通過訪問同一個文件系統間接完成通信

基於網絡類型的套接字家族

套接字家族的名字:AF_INET----基於網絡

(還有AF_INET6被用於ipv6,還有一些其他的地址家族,不過,他們要麽是只用於某個平臺,要麽就是已經被廢棄,或者是很少被使用,或者是根本沒有實現,所有地址家族中,AF_INET是使用最廣泛的一個,python支持很多種地址家族,但是由於我們只關心網絡編程,所以大部分時候我麽只使用AF_INET)

面向連接的套接字:通信前需要先建立一個連接。----虛擬電路/流套接字

面向連接的通信提供序列化的,可靠的喝不重復的數據交付,而沒有記錄邊界。實現面向連接類型的主要協議是傳輸控制協議TCP,socket使用socket.SOCK.STREAM作為套接字類型。

無連接的套接字: 通信前不需要建立連接。

在數據傳輸過程中並無法保證它的順序性,可靠性和重復性。數據報保存了記錄邊界。實現無連接類型的主要是用戶數據報協議UDP,socket使用SOCK.DGRAM作為套接字類型。

socket 網絡編程