2012-04-06 59 views
3

我想知道OSI模型的傳輸層在計算機系統中運行的位置。它是否是操作系統的一部分?它在自己的進程或線程中運行嗎?它如何將信息傳遞給其他應用程序或傳遞到其他層?傳輸層在哪裏運行?

+0

哪個操作系統?我注意到你有'tcp'標籤。您的問題只針對IP嗎?還是您在詢問其他協議棧? – 2012-04-06 14:44:31

+0

關於網絡層以上的協議棧。 – 2012-04-06 15:41:46

回答

7

我想知道OSI模型的傳輸層在計算機系統中運行的位置。

不是。 OSI模型適用於OSI協議套件,該協議套件已停用,並且不在任何位置運行AFAICS。但是TCP/IP有其自己的模型,其中還包括一個傳輸層。我會認爲這就是你以後的意思。

它是操作系統的一部分嗎?

是的。

它運行在它自己的進程或線程中嗎?

不,它作爲操作系統的一部分運行。

它是如何將信息傳遞給其它應用

通過系統調用,例如Berkeley套接字API,WinSock等。

或下降到其他層?

通過內部內核API。

+0

你可以請發佈一些鏈接或教程嗎?如果您還可以提及網絡層的實施位置,那將非常棒。它是在一個WiFi適配器?我希望教程能夠顯示所有這些,而不是抽象層的舊框圖。 – testerjoe2 2017-01-26 07:12:25

+0

@ testerjoe2應用程序層下的所有東西都在操作系統中。某些鏈接層和更低層可能位於網絡適配器中。 – EJP 2017-10-09 04:53:23

0

OSI模型稱爲傳輸層的東西與TCP/IP中的TCP層相當接近。也就是說,它提供了有保證的交付/錯誤恢復,以及主機之間的透明傳輸 - 您無需關注數據如何從一臺主機路由到另一臺主機 - 您只需指定一個目的地,網絡就會計算出來如何在那裏得到它。

至於實現的地方:好的,主要是在TCP/IP堆棧中,這通常是操作系統的一部分。現代硬件可以在硬件中實現至少幾個比特和塊(例如,TCP校驗和和流量控制)。網絡堆棧將通過設備驅動程序將TCP操作的這些部分卸載到硬件中。

+0

讓我們舉個例子,C++的winsock庫使用'send'與tcp交換信息。該方法正在進行,以確保傳遞的字節流的正確傳遞。我對此感興趣。那是在做什麼?我在最低級別上猜測,而不是直接在該方法調用中。 – 2012-04-06 05:55:21

+1

@SotiriosDelimanolis:它毫無疑問不是那個函數的全部內容,而是它在TCP層之內(下層IP層不提供保證傳遞)。然而事實上,跟蹤事情有點難以理解 - 例如,微軟擁有一個數據包過濾框架來支持防火牆等,這大大侵入了這一切,同時支持內核模式和用戶模式過濾。 – 2012-04-06 06:01:48

+0

這個答案不正確。 TCP/IP有一個傳輸層,它包括TCP和UDP,以及即將到來的一天,即SCTP。 – EJP 2017-10-09 04:58:30

0

傳輸層可用作通常隨操作系統一起提供的庫。

邏輯部分在庫中實現。與運輸媒介的互動是通過司機。

+0

它通常作爲內核組件提供,表現爲驅動程序。不是圖書館。 – EJP 2013-10-23 07:37:48