2017-03-02 34 views
0

我對TCP/IP網絡和學習套接字/端口很陌生。我有一些混亂。我提到我的理解。計算機網絡中的套接字,端口和進程之間的關係

節點N1有多個進程在運行。說一個進程P1有一些它希望發送到其他節點N2的字符串。 N1將要求OS創建一個基本上類似於網絡I/O流式傳輸通道的套接字。這樣的通道將被創建,並與套接字描述符一起交給進程。所以,我們可以說socket可以被節點識別出來,即節點+進程請求socket的IP。因此,套接字地址的概念基本上是節點+端口地址的IP(用於識別進程)。所以,我的疑惑是:

  1. 從何處來了端口的想法。套接字可以被識別爲節點+進程ID的IP。爲什麼要求端口識別一個過程。爲什麼過程描述符不能自給自足。爲什麼端口地址。例子?

  2. 爲什麼我們需要將套接字與套接字地址綁定,如果節點必須傳遞數據並且什麼都不需要接收。套接字地址的綁定實質上意味着「開始識別除了描述符外具有節點+端口地址的IP地址的套接字」,如果其他節點希望將一些數據發送到節點N1,則對其它節點有用。但我認爲,對於希望通過網絡進行通信的節點中的任何進程,應該有一個「全局」套接字,它不會被綁定。所有進程都將使用它來發送數據。如果任何節點希望接收數據,它們可以有一個單獨的套接字,它將被綁定,以便網絡中的其他節點可以識別該特定的套接字。

  3. TCP/UDP究竟在哪裏適合圖片?我可以擁有兩個類似TCP端口3000和UDP端口3000的端口,即具有不同傳輸協議但端口號相同的獨立端口。這也可以用套接字嗎?

回答

1

因此,我們可以說,插座可以在世界上的節點+過程的節點,即IP其請求的套接字的認可。

不是'在世界上'。只在本地主機內。套接字只存在於本地主機中,並且進程ID僅在本地主機內部是已知的。

因此,來自套接字地址的概念,它是基本上節點+端口地址的IP(用於識別過程)

號的端口標識服務。該進程執行該服務。

從哪裏來的港口的想法在這裏。

RFC 793

插槽可被標識爲節點+進程ID的IP。

不,他們不能。另一臺主機上的對等方無法獲取遠程進程ID。一些固定的操作系統不可知的標識符是必需的。一個進程可以擁有許多端口。這個建議沒有開始有意義。

爲什麼需要端口來識別進程。

端口不標識進程。這個問題沒有意義。

爲什麼過程描述符不能自給自足。爲什麼端口地址。

因爲你問的第一個問題是錯誤的。這只是它的另一個版本。

爲什麼我們需要將套接字與套接字地址綁定,如果節點必須傳遞數據並且什麼都不需要接收。

因爲連接由地址:端口對標識。

綁定套接字地址的基本意思是「開始識別與距其描述節點+端口地址的IP地址插座」如果他們想發送一些數據節點N1是其他節點有用。

對於這個節點來說,知道傳入數據應該到哪裏也是非常有用的。

但我認爲,對於希望通過網絡進行通信的節點中的任何進程,應該有一個不會被綁定的「全局」套接字。所有進程都將使用它來發送數據。如果任何節點希望接收數據,它們可以有一個單獨的套接字,它將被綁定,以便網絡中的其他節點可以識別該特定的套接字。

無論這個方案的無效性和毫無意義,你的想法都晚了40年。

我可以擁有兩個類似TCP端口3000和UDP端口3000的端口,即具有不同傳輸協議但端口號相同的獨立端口。

是的。

TCP/UDP究竟在哪裏適合圖片?

它們實現端口。

這也可能與套接字嗎?

我無法理解這個問題。所有插座都彼此不同。

相關問題