A. 計算機通信的基礎組件是套接字嗎
摘要 套接字:是傳輸層通信端點抽象,僅僅是一個名詞
B. 什麼叫套接字
套接字又稱插口,是TCP用主機的IP地址加上主機上的埠號作為TCP連接的端點,這種端點就叫做套接字或插口。是網路通信過程中端點的抽象表示,包含進行網路通信必需的五種信息:1、連接使用的協議;2、本地主機的IP地址;3、本地進程的協議埠;4、遠地主機的IP地址;5、遠地進程的協議埠。
C. socket的中文翻譯是套接字,那為什麼中文叫套接字呢我的意思是套接字到底表現了socket的什麼特點
同學,修沒修過《計算機網路》?
在網路中,如何標示一個主機?使用IP地址(在網路層,一台機器當然也可以由多個網路介面,即網卡,每個結構對應一個IP地址)。
如何標示一個主機上的特定進程呢?使用IP:PORT,即IP地址和埠號,一般地說,每個進行網路通信的應用程序都要佔用主機上的一個埠。舉個例子,使用TCP進行通信,需要建立連接,比如主機A上的進程a和主機B上的進程b進行通信,A、B之間的連接如何標示?使用四元組<A的IP,a所佔用的埠,B的IP,b所佔用的埠>【其實埠不過是一種軟體抽象,學術一把,呵呵】
IP:PORT就確定了一個socket,在一個TCP連接中,她就像一個插口,注意,叫做插口,套接字也就是類似的意思。你把應用程序插入到這個插座,就可以和連接的另外一方對話了。至於socket命名,是有歷史由來的,不過我們學網路編程,其實不必糾結於此,so it is just a name。
網路編程是很不錯的,祝你成功。。。。。
關於C/C++中的socket編程,有問題歡迎問我,放假閑得……哎!!!!
D. 什麼叫套接字。Socket
套接字(socket)是用於網路通信的基本操作單元。簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程。
套接字可以根據通信性質分類,主要分
流式套接字(SOCK_STREAM),
數據報套接字(SOCK_DGRAM)以及原始套接字(SOCK_RAW).
數據報套接字提供了一種不可靠的、非連接的數據包通信方式。所以
數據報套接字使用UDP協議,當然,winsock
2版本還支持其他協議。
E. 什麼UNIX是套接字
套接字是一種具有之前所說的「通信端點」概念的計算機網路數據結構。網路化的應用程序在開始任何通訊之前都必需要創建套接字。就像電話的插口一樣,沒有它就完全沒辦法通信。
套接字起源於20世紀70年代加州大學伯克利分校版本的Unix,即人們所說的BSD Unix。因此,有時人們也把套接字稱為「伯克利套接字」或「BSD套接字」。一開始,套接字被設計用在同一台主機上多個應用程序之間的通訊。這也被稱作進程間通訊,或IPC。套接字有兩種,分別是基於文件型的和基於網路型的。
Unix套接字是我們要介紹的第一個套接字家族。其「家族名」為AF_UNIX(在POSIX1.g標准中也叫AF_LOCAL),表示「地址家族:UNIX」。包括Python在內的大多數流行平台上都使用術語「地址家族」及其縮寫「AF」。而老一點的系統中,地址家族被稱為「域」或「協議家族」,並使用縮寫「PF」而不是「AF」。同樣的,AF_LOCAL(在2000-2001年被列為標准)將會代替AF_UNIX。不過,為了向後兼容,很多系統上,兩者是等價的。Python自己則仍然使用AF_UNIX。
由於兩個進程都運行在同一台機器上,而且這些套接字是基於文件的。所以,它們的底層結構是由文件系統來支持的。這樣做相當有道理,因為,同一台電腦上,文件系統的確是不同的進程都能訪問的。
另一種套接字是基於網路的,它有自己的家族名字:AF_INET,或叫「地址家族:Internet」。還有一種地址家族AF_INET6被用於網際協議第6版(IPv6)定址上。還有一些其他的地址家族,不過,它們要麼是只用在某個平台上,要麼就是已經被廢棄,或是很少被使用,或是根本就還沒有實現。所有地址家族中,AF_INET是使用最廣泛的一個。Python 2.5中加入了一種Linux套接字的支持:AF_NETLINK(無連接(稍後講解))套接字家族讓用戶代碼與內核代碼之間的IPC可以使用標准BSD 套接字介面。而且,相對之前那些往操作系統中加入新的系統調用、proc文件系統支持或是「IOCTL」等復雜的方案來說,這種方法顯得更為精巧,更為安全。
F. 什麼是網路套接字
源IP地址和目的IP地址以及源埠號和目的埠號的組合稱為套接字。其用於標識客戶端請求的伺服器和服務。
套接字,是支持TCP/IP的網路通信的基本操作單元,可以看做是不同主機之間的進程進行雙向通信的端點,簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程。
非常非常簡單的舉例說明下:Socket=Ip
address+
TCP/UDP
+
port。
G. 網路中埠和套接字有什麼區別
套接字是埠和IP地址結合的一個概念,網路中的通信都是通過套接字標識,
H. Socket為什麼要翻譯成套接字
套接字(也稱為BSD 套接字)應用程序介面(API)包括了一個用C語言寫成的應用程序開發庫,主要用於實現進程間通訊,在計算機網路通訊方面被廣泛使用。Berkeley套接字(也作BSD套接字應用程序介面)剛開始是4.2BSDUnix操作系統(於1983發布)的一套應用程序介面.。
Socket可以看成在兩個程序進行通訊連接中的一個端點,是連接應用程序和網路驅動程序的橋梁,Socket在應用程序中創建,通過綁定與網路驅動建立關系。此後,應用程序送給Socket的數據,由Socket交給網路驅動程序向網路上發送出去。計算機從網路上收到與該Socket綁定IP地址和埠號相關的數據後,由網路驅動程序交給Socket,應用程序便可從該Socket中提取接收到的數據,網路應用程序就是這樣通過Socket進行數據的發
I. 什麼是網路套接字
套接字(socket)是用於網路通信的基本操作單元。簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程。
套接字可以根據通信性質分類,主要分
流式套接字(sock_stream),
數據報套接字(sock_dgram)以及原始套接字(sock_raw).
數據報套接字提供了一種不可靠的、非連接的數據包通信方式。所以
數據報套接字使用udp協議,當然,winsock
2版本還支持其他協議。
J. 進程間通信(IPC)——Unix域套接字 VS 網路套接字
進程間通信就是不同進程間進行數據交換的過程。因為進程間相互獨立,每個進程擁有獨立的地址空間、數據處理邏輯,操作系統保證了進程獨立運行的地址安全;但在復雜系統,單進程往往不能勝任業務需求,需要多進程的加入,多進程協作完成工作,這就離不開進程間通信這個話題了。
進程間通信有很多種方式,列舉如下:
而進程間通信按進程分布情況可以 單機內的進程間通信 和 多機間遠程調用的進程間通信 ,後者無需多講,在分布式等大型系統中是非常常見的,而進行通信的方式主要是上述方法中的網路IPC,有非常多的資料介紹相關內容,不在本文的討論范圍之內。
本文主要討論在 單機內進程間通信 中,Unix域套接字和TCP網路套接字的對比,後者屬於網路IPC。
套接字是一種應用程序介面,包括了一個用C語言寫成的應用程序開發庫,主要用於實現進程間通訊,在計算機網路通訊方面被廣泛使用。下面要討論的網路套接字和Unix套接字均屬於套接字。
在定義套接字類型的時候,網路套接字通常使用 AF_INET 進行定義;Unix域套接字則使用 AF_UNIX 進行定義。
套接字類型有三種,分別是流式套接字、數據報套接字和原始套接字。
流式套接字(SOCK_STREAM):流式套接字用於提供面向連接、可靠的數據傳輸服務。該服務將保證數據能夠實現無差錯、無重復發送,並按順序接收。流式套接字之所以能夠實現可靠的數據服務,原因在於其使用了傳輸控制協議,即TCP(The Transmission Control Protocol)協議。
數據報套接字(SOCK_DGRAM):數據報套接字提供了一種無連接的服務。該服務並不能保證數據傳輸的可靠性,數據有可能在傳輸過程中丟失或出現數據重復,且無法保證順序地接收到數據。數據報套接字使用UDP(User Datagram Protocol)協議進行數據的傳輸。由於數據報套接字不能保證數據傳輸的可靠性,對於有可能出現的數據丟失情況,需要在程序中做相應的處理。
原始套接字(SOCK_RAW):原始套接字(SOCKET_RAW)允許對較低層次的協議直接訪問,比如IP、 ICMP協議,它常用於檢驗新的協議實現,或者訪問現有服務中配置的新設備,因為RAW SOCKET可以自如地控制Windows下的多種協議,能夠對網路底層的傳輸機制進行控制,所以可以應用原始套接字來操縱網路層和傳輸層應用。比如,我們可以通過RAW SOCKET來接收發向本機的ICMP、IGMP協議包,或者接收TCP/IP棧不能夠處理的IP包,也可以用來發送一些自定包頭或自定協議的IP包。網路監聽技術很大程度上依賴於SOCKET_RAW。
原始套接字與標准套接字(標准套接字指的是前面介紹的流式套接字和數據報套接字)的區別在於:原始套接字可以讀寫內核沒有處理的IP數據包,而流式套接字只能讀取TCP協議的數據,數據報套接字只能讀取UDP協議的數據。因此,如果要訪問其他協議發送數據必須使用原始套接字。
網路通信中通常都是使用網路套接字進行通信,可用於單機進程間通信和多機進程間通信,網路套接字由五元組來標識:(源地址、源埠、目標地址、目標埠、通信協議),因而網路套接字在網路協議棧中屬於傳輸層之上的內容。所以,在使用網路套接字通信的時候,傳遞內容需要經過完整的網路協議棧四層模型中的(傳輸層-網路層-網路訪問層(數據鏈路層-物理層))。
回想在協議棧當中,對於報文的處理有哪些操作。
Unix域套接字只能用於在同一個計算機的進程間進行通信。雖然網路套接字也可以用於單機進程間的通信,但是使用Unix域套接字效率會更高,因為Unix域套接字僅僅進行數據復制,不會執行在網路協議棧中需要處理的添加、刪除報文頭、計算校驗和、計算報文順序等復雜操作,因而在單機的進程間通信中,更加推薦使用Unix域套接字。
關於套接字的使用,資料很多,不再介紹。
這里拿網路套接字和Unix域套接字出來比較的原因是,很多人在進行單機多進程開發時沒有注意到Unix域套接字的存在,而是使用了成本較高的網路套接字進行開發。Unix套接字在通信開銷方面是很小的,因而在單機通信中更加推薦使用Unix域套接字。
原文鏈接