TCP模組在執行連線、收發、斷開等各階段操作時,都需要委託IP模組將資料封裝成包傳送給通訊物件。
包的基本知識
包是由頭部和資料兩部分構成的
。頭部包含
目的地址
等控制資訊,可以理解為快遞包裹的面單;頭部後面就是委託方要傳送給對方的
資料
,也就是相當於包裹裡的貨物。
首先,傳送方的網路裝置會負責建立包,建立包的過程就是生成含有正確控制資訊的頭部,然後再附加上要傳送的資料。接下來,
包會發往最近的網路轉化裝置
。當到達最近的轉發裝置之後,轉化裝置會根據頭部中的資訊判斷接下來應該發往哪裡。
這個過程裡會有
一張表
,這張表裡面記錄了
每一個地址對應的傳送方向
,也就是按照頭部裡記錄的目的地址在表進行查詢,並根據查到的資訊判斷接下來應該發往哪個方向。
包收發操作概覽
IP模組會新增
IP頭部
和
MAC頭部
這兩種頭部。
IP頭部
中包含IP協議規定的、根據IP地址將包發往目的地所需的控制資訊;
MAC頭部
包含透過乙太網的區域網將包傳輸至最近的路由器所需的控制資訊。
無論要收發的包還是控制包還是資料包
,IP對各種型別的包的收發操作都是
相同
的。
生成包含接收方IP地址的IP頭部
IP頭部最重要的內容是IP地址,這個地址的最初來源是
應用程式
。還需要填寫傳送方的地址,一般是
由DHCP伺服器自動分配
。
因為
協議棧的IP模組與路由器
負責包收發的部分都是根據IP協議規則來進行包收發操作的,所以它們也都用
相同的方法
來判斷把包發給誰。
生成乙太網用的MAC頭部
生成了IP頭部後,接下來IP模組還需要在IP頭部的前面加上
MAC頭部
。
IP頭部中的接收方IP地址表示網路包的目的地,透過這個地址我們就可以判斷將包發到哪裡,但在
乙太網的世界
中,TCP/IP這個思路是行不通的。
乙太網在判斷網路包目的地是和TCP/IP的方式不同,因此必須採用
相匹配的方式
才能在乙太網中將包發往目的地,而MAC頭部就是幹這個用的。
IP模組根據
路由表Gateway欄的內容
判斷應該把包傳送給誰。
透過ARP查詢目標路由器的MAC地址
在乙太網中,有一種叫作
廣播的方法
, 可以把包發給連線在同一乙太網中的所有裝置。ARP就是利用廣播提問,從而獲取對方的MAC地址。
乙太網的基本知識
乙太網
是一種為多臺計算機通夠彼此自由和廉價地相互通訊而設計的通訊技術。
這種網路中任何一臺裝置傳送的資訊所有裝置都能接收到。因此需要在資訊的開頭加上接收者的資訊即地址,
與接收者地址相匹配地裝置就接收這個包,其他的裝置則丟棄這個包
。
將IP包轉換成電或光訊號傳送出去
IP生成的包只是存放在記憶體中的一串數字資訊,沒有辦法直接傳送給對方。因些,我們需要將
數字資訊轉化為電或光訊號
,才對在網線上傳輸,也就是說,這才是真正的資料傳送過程。
負責執行這一操作的是網絡卡。網絡卡也無法單獨工作,要控制網絡卡還需要網絡卡驅動程式。
給網路包再加3個控制資料
下面看一下網絡卡是如何將包轉換成電訊號併發送到到網線中的。
網絡卡驅動從IP模組獲取包之後,會將其複製到網絡卡內的緩衝區中,然後向MAC模組傳送傳送包的命令。MAC模組會將包從緩衝區中取出,並在開頭加上
報頭
和
起始幀分界符
,在末尾加上用於檢測錯誤的
FCS(幀校驗序列)
。
用電訊號來表達數字資訊時,我們需要讓0和1兩種位元分別對應特定的電壓和電流,這樣的電訊號就可以
表達數字資訊
。
向集線器傳送網路包
加上報頭、起始幀分界符和FCS之後,我們就可以將包透過網線傳送出去了。傳送訊號的操作分為兩種,一種是使用集線器的
半雙工模式
,另一種是使用交換機的
全雙工模式
。
接收返回包
在使用集線器的半雙工模式乙太網中
,一臺裝置傳送的訊號會到達連線在集線串的所有裝置
。這意味著無論是不是自己的訊號都會透過接收線路傳進來。
通知計算機的操作會使用一個叫作
中斷
的機制。在網絡卡執行接收包的操作的過程中,計算機並不是一直
監控
著網絡卡的活動,而是去執行其他的任務。