Socket 和 TCP 有什麼聯絡?建立Socket,作業系統主要是做了哪些事?

時間 2021-05-11 21:14:46

1樓:the gc

socket是tcp實現對上層提供的介面。使用socket的配套函式,就是封裝各種tcp/ip資料報。比如你對乙個socket(fd)進行write,connect,作業系統就是幫你傳送各種tcp報文出去。

然後作業系統也會解析收到的tcp報文,你調read的時候就可以讀取tcp資料報裡的資料。當然作業系統還做了很多任務作。

2樓:

說說我的理解以Linux系統為例

Linux系統在核心中已經實現了應用程式以下的協議,如TCP協議、IP協議等協議並且通過socket API 給使用者提供了程式設計的介面

所以作為使用者呢就不用在寫應用程式的時候呢就不用那麼麻煩去自己實現這些個協議了,直接呼叫socket提供的介面API即可。

當然, 也可以自己去組包。把使用者資料報成TCP segment,在包成IP包, 再乙太網幀,然後再傳送出去,這樣做也是可以的,只是比較麻煩而已就是不如直接用API來的方便。

3樓:不通道

我個人的理解是socket是乙個真實存在,但沒有被納入OSI模型的層,裡面儲存了目的和源埠,這個層是TCP和UDP都會用到的

4樓:徐志斌

感覺題主的題目和問題有點對不上,不知道怎麼回答。我就按照題目回答吧。

1. Socket和TCP有什麼聯絡?

Socket其實就是IP位址和埠號的組合。TCP協議是L4協議,主要是協定埠號便於應用程式之間的互相通訊。所以TCP協議決定了Socket裡的一部分,另一部分IP位址由IP協議協定。

2. 作業系統主要做了哪些事?

這個問題應該分成2部分回答。Socket Server和Socket Client。

對於Socket Server,作業系統會啟動乙個守護程序並在乙個埠上持續監聽。比如你啟動乙個HTTP Server,那麼埠號預設80。啟動FTP Server 那麼預設埠號就是21。

對於Socket Client,作業系統會隨機分配乙個埠,一般是10000以上。

Client和Server之間如何建立連線?

Client傳送SYN到Server,此時Server已經知道了Client的埠號。

Server傳送ACK SYN到Client。此時Client確認Server上指定埠有程序監聽,並確認能處理請求。

Client傳送ACK給Server。此時Server已經確認了Client已經收到了ACK SYN。可以開始通訊。

這就是著名的三次握手。

5樓:李遙

Berkeley Sockets是作業系統提供的一套API,用來把底層網路棧的資料流包裝出乙個檔案描述符,這樣應用程式就可以把乙個網路資料流(比如TCP連線)當作乙個檔案處理,即用處理的檔案的read/write/close等函式處理

除了用檔案I/O API來處理網路資料流,Berkeley Sockets還提供了一些額外的特製的I/O API,可以視情況選用

UDP 和 TCP 的 socket 分別一般用在什麼地方?

硬體工程師 大家說的很全面了,我將乙個必須用UDP的例子。在某些情況下,使用UDP是因為它允許廣播資料報。在像DHCP協議這樣的情況下,因為客戶機還沒有收到IP位址 這是DHCP協商協議的目的 沒有IP位址本身就無法建立TCP連線。In certain situationsUDPis used be...

夏朝和古埃及有什麼聯絡?

美麗的大海日記 夏朝就是古埃及。古埃及文明比中華文明早一千年。我們保留了很多古埃及的文明。比如披麻戴孝,中醫,象形文本,樂器,船,車,石頭獅子,龍是蛇和鷹的合體等等。 歷史王 那我問一下,大禹治水,那是在非洲,水資源匱乏,你別告訴我治的是尼羅河。而且中國古代並不很喜歡貓,十二生肖裡就沒有貓,但埃及卻...

素描和簡筆畫有什麼聯絡?

鈴鐺子 素描是一切繪畫的基礎,如果要長遠發展,可以從正統的素描學起。不過如果你不打算從事專業級別的藝術道路,不用過分拔高簡筆畫的門檻。下圖是我羅列的簡筆畫和素描的關係 這是素描,最基本的素描幾何圖形 這是簡筆畫 看了這些圖,你認為他們之間有什麼不可分割的關係嗎?我們對比來看看,素描講究排線構圖,重塑...