簡體   English   中英

Unix,BSD,TCP,Internet套接字?

[英]Unix vs BSD vs TCP vs Internet sockets?

我正在閱讀Linux編程接口,它描述了Linux上使用的幾種不同類型的套接字:

  • Unix域
  • 伯克利
  • TCP協議
  • 互聯網

該書說的一件事是,如果要在遠程主機之間進行通信,則不能使用Unix域套接字,因為它們用於同一主機上的IPC。 您必須使用“ Internet”套接字。

但是,我仍然有些困惑,這與“ TCP”套接字,Berkeley套接字以及其他2個套接字有什么關系? 他們是什么關系? 為什么會有Internet套接字和TCP套接字?

簡而言之,我試圖理解所有(是否錯過了?)各種不同類型的Unix套接字,在什么情況下我會使用它們?

套接字是一種抽象。 SO上用於套接字的標簽定義與任何標簽一樣好:

雙向進程間通信流的端點。 這通常是指通過網絡連接的過程流,但絕不限於此。

因此,主要區別在於(1)使用網絡的套接字和(2)不使用網絡的套接字。

Unix 套接字不使用網絡。 他們的API使開發人員看起來與網絡套接字幾乎(大多數)相同,但是所有通信都是通過內核完成的,並且套接字僅限於與正在其上運行的計算機上的進程進行通信。

如今,伯克利套接字已成為POSIX平台上的網絡套接字。 過去,Unix開發有不同的領域(例如Berkeley或BSD,System V或sysV等)。Berkeley套接字在市場上基本上是成功的,並且實際上是當今Unix套接字的代名詞。

嚴格來說,沒有TCP套接字。 有些網絡套接字可以使用TCP協議進行通信。 只是將它們稱為TCP套接字以使用其他協議(例如UDP,路由協議或其他協議)將它們與套接字區分開來只是語言學家的簡寫。

“ Internet”套接字幾乎是毫無意義的區別。 它是使用網​​絡協議的套接字。 這消除了Unix域套接字,但是大多數網絡協議可用於在LAN或Internet(僅是網絡的集合)上進行通信。 (不過請注意,有些協議是特定於本地網絡的協議,也有一些用於管理網絡集合的協議。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM