shell获取多张网卡对应的ip_网络是怎样连接的 -- IP与以太网的收发操作
TCP模塊在執(zhí)行連接、收發(fā)、斷開(kāi)等各階段操作時(shí),都需要委托IP模塊將數(shù)據(jù)封裝成包發(fā)送給通信對(duì)象。
包的基本知識(shí)
包是由頭部和數(shù)據(jù)兩部分構(gòu)成的。頭部包含目的地址等控制信息,可以理解為快遞包裹的面單;頭部后面就是委托方要發(fā)送給對(duì)方的數(shù)據(jù),也就是相當(dāng)于包裹里的貨物。
首先,發(fā)送方的網(wǎng)絡(luò)設(shè)備會(huì)負(fù)責(zé)創(chuàng)建包,創(chuàng)建包的過(guò)程就是生成含有正確控制信息的頭部,然后再附加上要發(fā)送的數(shù)據(jù)。接下來(lái),包會(huì)發(fā)往最近的網(wǎng)絡(luò)轉(zhuǎn)化設(shè)備。當(dāng)?shù)竭_(dá)最近的轉(zhuǎn)發(fā)設(shè)備之后,轉(zhuǎn)化設(shè)備會(huì)根據(jù)頭部中的信息判斷接下來(lái)應(yīng)該發(fā)往哪里。
這個(gè)過(guò)程里會(huì)有一張表,這張表里面記錄了每一個(gè)地址對(duì)應(yīng)的發(fā)送方向,也就是按照頭部里記錄的目的地址在表進(jìn)行查詢,并根據(jù)查到的信息判斷接下來(lái)應(yīng)該發(fā)往哪個(gè)方向。
包收發(fā)操作概覽
IP模塊會(huì)添加IP頭部和MAC頭部這兩種頭部。IP頭部中包含IP協(xié)議規(guī)定的、根據(jù)IP地址將包發(fā)往目的地所需的控制信息;MAC頭部包含通過(guò)以太網(wǎng)的局域網(wǎng)將包傳輸至最近的路由器所需的控制信息。
無(wú)論要收發(fā)的包還是控制包還是數(shù)據(jù)包,IP對(duì)各種類型的包的收發(fā)操作都是相同的。
生成包含接收方IP地址的IP頭部
IP頭部最重要的內(nèi)容是IP地址,這個(gè)地址的最初來(lái)源是應(yīng)用程序。還需要填寫(xiě)發(fā)送方的地址,一般是由DHCP服務(wù)器自動(dòng)分配。
因?yàn)?strong>協(xié)議棧的IP模塊與路由器負(fù)責(zé)包收發(fā)的部分都是根據(jù)IP協(xié)議規(guī)則來(lái)進(jìn)行包收發(fā)操作的,所以它們也都用相同的方法來(lái)判斷把包發(fā)給誰(shuí)。
生成以太網(wǎng)用的MAC頭部
生成了IP頭部后,接下來(lái)IP模塊還需要在IP頭部的前面加上MAC頭部。
IP頭部中的接收方IP地址表示網(wǎng)絡(luò)包的目的地,通過(guò)這個(gè)地址我們就可以判斷將包發(fā)到哪里,但在以太網(wǎng)的世界中,TCP/IP這個(gè)思路是行不通的。
以太網(wǎng)在判斷網(wǎng)絡(luò)包目的地是和TCP/IP的方式不同,因此必須采用相匹配的方式才能在以太網(wǎng)中將包發(fā)往目的地,而MAC頭部就是干這個(gè)用的。
IP模塊根據(jù)路由表Gateway欄的內(nèi)容判斷應(yīng)該把包發(fā)送給誰(shuí)。通過(guò)ARP查詢目標(biāo)路由器的MAC地址
在以太網(wǎng)中,有一種叫作廣播的方法, 可以把包發(fā)給連接在同一以太網(wǎng)中的所有設(shè)備。ARP就是利用廣播提問(wèn),從而獲取對(duì)方的MAC地址。
以太網(wǎng)的基本知識(shí)
以太網(wǎng)是一種為多臺(tái)計(jì)算機(jī)通夠彼此自由和廉價(jià)地相互通信而設(shè)計(jì)的通信技術(shù)。
這種網(wǎng)絡(luò)中任何一臺(tái)設(shè)備發(fā)送的信息所有設(shè)備都能接收到。因此需要在信息的開(kāi)頭加上接收者的信息即地址,與接收者地址相匹配地設(shè)備就接收這個(gè)包,其他的設(shè)備則丟棄這個(gè)包。
將IP包轉(zhuǎn)換成電或光信號(hào)發(fā)送出去
IP生成的包只是存放在內(nèi)存中的一串?dāng)?shù)字信息,沒(méi)有辦法直接發(fā)送給對(duì)方。因些,我們需要將數(shù)字信息轉(zhuǎn)化為電或光信號(hào),才對(duì)在網(wǎng)線上傳輸,也就是說(shuō),這才是真正的數(shù)據(jù)發(fā)送過(guò)程。
負(fù)責(zé)執(zhí)行這一操作的是網(wǎng)卡。網(wǎng)卡也無(wú)法單獨(dú)工作,要控制網(wǎng)卡還需要網(wǎng)卡驅(qū)動(dòng)程序。
給網(wǎng)絡(luò)包再加3個(gè)控制數(shù)據(jù)
下面看一下網(wǎng)卡是如何將包轉(zhuǎn)換成電信號(hào)并發(fā)送到到網(wǎng)線中的。
網(wǎng)卡驅(qū)動(dòng)從IP模塊獲取包之后,會(huì)將其復(fù)制到網(wǎng)卡內(nèi)的緩沖區(qū)中,然后向MAC模塊發(fā)送發(fā)送包的命令。MAC模塊會(huì)將包從緩沖區(qū)中取出,并在開(kāi)頭加上報(bào)頭和起始幀分界符,在末尾加上用于檢測(cè)錯(cuò)誤的FCS(幀校驗(yàn)序列)。
用電信號(hào)來(lái)表達(dá)數(shù)字信息時(shí),我們需要讓0和1兩種比特分別對(duì)應(yīng)特定的電壓和電流,這樣的電信號(hào)就可以表達(dá)數(shù)字信息。
向集線器發(fā)送網(wǎng)絡(luò)包
加上報(bào)頭、起始幀分界符和FCS之后,我們就可以將包通過(guò)網(wǎng)線發(fā)送出去了。發(fā)送信號(hào)的操作分為兩種,一種是使用集線器的半雙工模式,另一種是使用交換機(jī)的全雙工模式。
接收返回包
在使用集線器的半雙工模式以太網(wǎng)中,一臺(tái)設(shè)備發(fā)送的信號(hào)會(huì)到達(dá)連接在集線串的所有設(shè)備。這意味著無(wú)論是不是自己的信號(hào)都會(huì)通過(guò)接收線路傳進(jìn)來(lái)。
通知計(jì)算機(jī)的操作會(huì)使用一個(gè)叫作中斷的機(jī)制。在網(wǎng)卡執(zhí)行接收包的操作的過(guò)程中,計(jì)算機(jī)并不是一直監(jiān)控著網(wǎng)卡的活動(dòng),而是去執(zhí)行其他的任務(wù)。
總結(jié)
以上是生活随笔為你收集整理的shell获取多张网卡对应的ip_网络是怎样连接的 -- IP与以太网的收发操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python django框架如何导出_
- 下一篇: monthdiff oracle_tim