TCP IP 和 Socket 之間的關係

2021-10-09 02:02:20 字數 725 閱讀 6696

要寫網路程式就必須用socket,這是程式設計師都知道的。而且,面試的時候,我們也會問對方會不會socket程式設計?一般來說,很多人都會說,socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。

對於網路程式設計,我們也言必稱tcp/ip,似乎其它網路協議已經不存在了。對於tcp/ip,我們還知道tcp和udp,前者可以保證資料的正確和可靠性,後者則允許資料丟失。最後,我們還知道,在建立連線前,必須知道對方的ip位址和埠號。除此,普通的程式設計師就不會知道太多了,很多時候這些知識已經夠用了。最多,寫服務程式的時候,會使用多執行緒來處理併發訪問。

我們還知道如下幾個事實:

1、乙個指定的埠號不能被多個程式共用。比如,如果iis占用了80埠,那麼apache就不能也用80埠了。

2、很多防火牆只允許特定目標埠的資料報通過。

3、服務程式在listen某個埠並accept某個連線請求後,會生成乙個新的socket來對該請求進行處理。

於是,乙個困惑了我很久的問題就產生了。如果乙個socket建立後並與80埠繫結後,是否就意味著該socket占用了80埠呢?如果是這樣的,那麼當其accept乙個請求後,生成的新的socket到底使用的是什麼埠呢(我一直以為系統會預設給其分配乙個空閒的埠號)?如果是乙個空閒的埠,那一定不是80埠了,於是以後的tcp資料報的目標埠就不是80了–防火牆一定會組織其通過的!實際上,我們可以看到,防火牆並沒有阻止這樣的

TCP IP和Socket的關係

要寫網路程式就必須用socket,這是程式設計師都知道的。而且,面試的時候,我們也會問對方會不會socket程式設計?一般來說,很多人都會說,socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。對於網路程式...

TCP IP和Socket的關係

要寫網路程式就必須用socket,這是程式設計師都知道的。而且,面試的時候,我們也會問對方會不會socket程式設計?一般來說,很多人都會說,socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。對於網路程式...

TCP IP和Socket的區別

要寫網路程式就必須用socket,這是程式設計師都知道的。而且,面試的時候,我們也會問對方會不會socket程式設計?一般來說,很多人都會說,socket程式設計基本就是listen,accept以及send,write等幾個基本的操作。是的,就跟常見的檔案操作一樣,只要寫過就一定知道。對於網路程式...