2016-08-22 100 views
0

我正在開發一個旨在模擬真實網絡的應用程序。爲了做到這一點,我需要獲得關於如何在系統中形成數據包的詳細信息。模擬數據包封裝

想象一下,您有一個應用層消息,並且希望將其封裝在傳輸層有效負載中,並在頭中爲所需進程添加特定端口號,然後將其封裝在網絡層有效負載中並添加IP地址。

我的問題是,

  • 哪裏上層協議報文的封裝,以降低發生層?
  • 是否網卡驅動程序負責該操作系統或其他部分?如果是這樣,哪一部分?

我只想說明我已經閱讀過計算機網絡:自上而下的方法和Foruzan關於這個主題的書,但所有的信息都是如此理論化。

在此先感謝。

回答

1

如果你在問一個真正的實現,通常每層的消息都是作爲低層消息的整個有效載荷傳遞的。在沒有SSL/TLS的Windows或Linux操作系統中談論TCP/IP堆棧時,這取決於您使用的套接字類型。假設您使用TCP,STREAM套接字,則通過發送或寫入系統調用發送的應用層消息將成爲TCP消息的有效負載。處理TCP段和IP數據報發生在OS內核中。第2層幀的處理髮生在NIC的設備驅動程序(內核)中,部分發生在NIC硬件中。這取決於具體的網卡。

需要補充的是,某些NIC能夠計算TCP段和UDP數據報的校驗和。然後內核將此任務卸載到NIC。只有校驗和。