標籤:code 大學 虛擬 編程 目的 建立 系統 ipv6 訊息
通訊端
通訊端是電腦網路資料結構,它體現了通訊節點概念,在任何類型的通訊開始之前,網路應用程式必須建立通訊端,可以將它比作電話插孔,沒有他將無法通訊。
通訊端最早是加利福尼亞大學的伯克利版本UNIX(UNIX BSD)通訊端稱為bokeli通訊端或BSD通訊端。通訊端最初是為同一主機上的應用程式建立的,使主機上啟動並執行一個程式(又名一個進程)和另一個運行程式進行通訊。這就是所謂的進程通訊,有兩種的通訊端類型:基於檔案和面向網路的
UNIX通訊端是第一個通訊端家族,並擁有家族名字 AF_UNIX,他代表地址家族:UNIX
因為兩個進程運行在同一台電腦上,所以這些通訊端基於檔案,這就意味著檔案系統支援他們的底層基礎結構,這就能夠說得通了,因為檔案是一個運行在同一主機上的多個進程之間的常量。
第二種類型的通訊端是面向網路的,它有自己的家族名稱AF_INET,或者家族:網際網路 。另一個家族AF_INET6用於第6版網際網路協議(IPV6)定址
連線導向通訊端與無串連通訊端
1.連線導向通訊端
連線導向通訊端意味著通訊之前必須先建立一個串連,例如使用電話系統給朋友打電話。這種類型的通訊我們稱為虛擬電路或流通訊端。
面對串連的通訊提供序列化的,可靠的和不重複的資料交付,而沒有記錄邊界,這基本意味著每條資訊可以拆分成多個片段,並且每一段資訊片段都能確保能夠到達目的地,然後將它按順序組合在一起,最後完整訊息傳遞給正在等待的應用。
實現這種類型的主要協議是傳輸控制通訊協定TCP,為了建立TCP通訊端,必須使用SOCK_STREAM作為套位元組類型。TCP通訊端的名字SOCK_STREAM基於流通訊端的其中一種表示。因為這些通訊端(AF_INET)的網路版使用網際網路協議IP來搜尋網路中的主機,所以整個系統結合這兩種協議(TCP和IP來進行)
2.不需連線的通訊端
不需連線的通訊端被稱為資料報類型的通訊端,通訊不用建立串連,傳輸無法保證重複性,循序性,可靠性,可以整體發送。它成本低廉效能更好。
實現這種連線類型的主要協議是使用者資料包通訊協定UDP。為了建立UDP通訊端,必需使用SOCK_DGRAM作為通訊端類型,因為這些通訊端也是用網際網路協議來尋找網路主機,所以有個更普通的名字UDP/IP
另外還有
socket.SOCK_RAW #原始通訊端,普通的通訊端無法處理ICMP、IGMP等網路報文,而SOCK_RAW可以;其次,SOCK_RAW也可以處理特殊的IPv4報文;此外,利用原始通訊端,可以通過IP_HDRINCL通訊端選項由使用者構造IP頭。
socket.SOCK_RDM #是一種可靠的UDP形式,即保證交付資料報但不保證順序。SOCK_RAM用來提供對原始協議的低級訪問,在需要執行某些特殊操作時使用,如發送ICMP報文。SOCK_RAM通常僅限於進階使用者或管理員啟動並執行程式使用。
一個簡單的本地
學習Python基礎--------7網路編程