TCP 首部格式如下:

可以看到 TCP 首部里面是沒有 IP 地址相關的字段的。那么當數據包經過網絡層的時候,網絡層加一個 IP 首部,這個首部中的 IP 地址是從哪來的呢?
答案:
通過 http://www.baidu.com 訪問一個域名時,首先通過 DNS 獲取到 IP ,之后就可以把 HTTP 的傳輸工作交給操作系統中的協議棧。應用程序(瀏覽器)通過調用 Socket 庫,來委托協議棧工作。Socket 中會用到這個 IP 來與服務器建立 TCP 連接(因為建立連接,肯定得知道服務器的位置)。
網絡層中的 IP 可以通過socket中獲得。具體的細節請移步看這篇:TCP Socket 編程原理詳解 - 拾月凄辰 - 博客園 (cnblogs.com)


參考文章:《圖解網絡v3.0》-小林coding
