溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

計(jì)算機(jī)網(wǎng)絡(luò)(三)——數(shù)據(jù)通信

發(fā)布時(shí)間:2020-06-18 15:34:04 來(lái)源:網(wǎng)絡(luò) 閱讀:775 作者:wujunqi1996 欄目:開(kāi)發(fā)技術(shù)

  計(jì)算機(jī)網(wǎng)絡(luò)的數(shù)據(jù)通信過(guò)程主要基于下三層來(lái)實(shí)現(xiàn),在這里我簡(jiǎn)單的說(shuō)一下關(guān)于下三層的硬件結(jié)構(gòu);

  物理層主要是進(jìn)行二進(jìn)制轉(zhuǎn)換的,兩個(gè)主機(jī)互聯(lián),首先它的比特率必須一致,否則數(shù)據(jù)就無(wú)法正常的傳輸,會(huì)導(dǎo)致數(shù)據(jù)不一致等情況;而物理層的硬件設(shè)施有中繼器,集線(xiàn)器;中繼器,具有兩個(gè)端口,可以在數(shù)據(jù)通信時(shí)因?yàn)榫嚯x過(guò)長(zhǎng)而無(wú)法通信的問(wèn)題,數(shù)據(jù)從一個(gè)接口進(jìn)入中繼器,由另一個(gè)接口出來(lái)后,數(shù)據(jù)通信的強(qiáng)度就會(huì)恢復(fù),但是中繼器只有兩個(gè)接口,這樣效率就會(huì)很低,而集線(xiàn)器的產(chǎn)生就是在中繼器的基礎(chǔ)上進(jìn)行強(qiáng)化,集線(xiàn)器具有多個(gè)接口,可以將多個(gè)主機(jī)設(shè)備連接在一起,形成一個(gè)物理上是星型結(jié)構(gòu),邏輯上卻是總線(xiàn)結(jié)構(gòu)的網(wǎng)絡(luò)拓?fù)?;但集線(xiàn)器的一個(gè)問(wèn)題就是,他這樣的連接方式會(huì)導(dǎo)致數(shù)據(jù)之間的沖突過(guò)多,數(shù)據(jù)傳輸?shù)男示蜁?huì)慢;而什么是沖突,在下面會(huì)講述到;

  數(shù)據(jù)鏈路層主要是定義物理地址,對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn),判斷是否有差錯(cuò)產(chǎn)生;數(shù)據(jù)鏈路層的主要設(shè)備是網(wǎng)卡,網(wǎng)橋以及交換機(jī);其中網(wǎng)橋和交換機(jī)是在數(shù)據(jù)鏈路層的基礎(chǔ)上擴(kuò)展以太網(wǎng);網(wǎng)橋工作在數(shù)據(jù)鏈路層,他根據(jù)MAC幀的目的地址對(duì)收到的幀進(jìn)行轉(zhuǎn)發(fā)和過(guò)濾,當(dāng)網(wǎng)橋收到一個(gè)幀時(shí),不是立刻將其廣播給所有接口,而是判斷該幀是否存在于網(wǎng)橋轉(zhuǎn)發(fā)表中,若存在,則根據(jù)目的MAC地址在轉(zhuǎn)發(fā)表中對(duì)應(yīng)的接口進(jìn)行單播轉(zhuǎn)發(fā),若沒(méi)有,則廣播所有接口;交換機(jī)實(shí)際上就是一個(gè)多接口的網(wǎng)橋;在交換機(jī)中,每一個(gè)主機(jī)都擁有自己的一個(gè)沖突域,即每一個(gè)主機(jī)之間是不會(huì)產(chǎn)生沖突的,但但這一點(diǎn),就比集線(xiàn)器好很多,所以現(xiàn)在市面上所用的存儲(chǔ)轉(zhuǎn)發(fā)設(shè)備一般都是交換機(jī)了,很少看到有集線(xiàn)器的存在;

  數(shù)據(jù)鏈路層所具有的差錯(cuò)檢測(cè)功能是由CSMA/CD協(xié)議實(shí)現(xiàn)的,它是一種帶有沖突檢測(cè)的載波監(jiān)聽(tīng)多路訪(fǎng)問(wèn)協(xié)議;該協(xié)議具有多路訪(fǎng)問(wèn)的特性,每一個(gè)主機(jī)都可從其信道上發(fā)送數(shù)據(jù)到總線(xiàn)上進(jìn)行傳輸,這種多路訪(fǎng)問(wèn)的結(jié)構(gòu)也容易導(dǎo)致沖突;CSMA/CD協(xié)議的一個(gè)重要的功能就是載波監(jiān)聽(tīng),主機(jī)在進(jìn)行發(fā)送的時(shí)候,需要進(jìn)行載波監(jiān)聽(tīng),如果檢測(cè)到載波,就說(shuō)明有數(shù)據(jù)在運(yùn)行,就延時(shí)發(fā)送,延時(shí)時(shí)間為隨機(jī)數(shù),若沒(méi)有檢測(cè)到載波,表示總線(xiàn)空閑,則可發(fā)送數(shù)據(jù),但如果有多個(gè)主機(jī)檢測(cè)到總線(xiàn)空閑,一起發(fā)送數(shù)據(jù),就會(huì)導(dǎo)致沖突,一旦產(chǎn)生沖突,所有的站點(diǎn)都回退,各個(gè)站點(diǎn)均等待一個(gè)隨機(jī)時(shí)間重新進(jìn)行載波監(jiān)聽(tīng);

  交換機(jī)的功能主要體現(xiàn)在以下幾個(gè)方面:

  ①學(xué)習(xí):交換機(jī)對(duì)于每一個(gè)轉(zhuǎn)發(fā)到它這里具有IP和MAC地址的幀,它會(huì)判斷是否有這個(gè)幀的源MAC地址,若沒(méi)有,則將源MAC地址寫(xiě)入交換機(jī)的轉(zhuǎn)發(fā)表,然后在進(jìn)行廣播,尋找符合該目的MAC地址的接口;如果接收到的數(shù)據(jù)幀中的源MAC地址,已經(jīng)出現(xiàn)在MAC地址表中,則更新該條目的時(shí)間戳;

  ②轉(zhuǎn)發(fā):

   有目的轉(zhuǎn)發(fā):交換機(jī)在接受到數(shù)據(jù)幀時(shí),若該目的MAC地址存在于交換機(jī)轉(zhuǎn)發(fā)表中,則按該目的MAC地址所對(duì)應(yīng)的接口進(jìn)行單播轉(zhuǎn)發(fā);

   無(wú)目的轉(zhuǎn)發(fā):交換機(jī)在接受到數(shù)據(jù)幀時(shí),該目的MAC地址不存在于交換機(jī)轉(zhuǎn)發(fā)表中,則將該數(shù)據(jù)幀進(jìn)行廣播,也可稱(chēng)之為泛洪;

   過(guò)濾:如果交換機(jī)收到的一個(gè)數(shù)據(jù)幀,發(fā)現(xiàn)該數(shù)據(jù)幀的目的MAC地址對(duì)應(yīng)的端口和接收數(shù)據(jù)的端口是同一個(gè)端口,則這樣的數(shù)據(jù),過(guò)濾不接收;

   網(wǎng)絡(luò)層主要是為上層運(yùn)輸層所傳下來(lái)的分組能夠找到合適的路由去尋找到目的主機(jī);而在網(wǎng)絡(luò)層中進(jìn)行數(shù)據(jù)傳輸,不能使用IP地址,而要使用這個(gè)IP地址所對(duì)應(yīng)的MAC地址,只有通過(guò)這個(gè)MAC地址才能找到合適的路由,IP地址一開(kāi)始是由應(yīng)用程序向DNS服務(wù)器進(jìn)行請(qǐng)求所得出的,IP地址可以通過(guò)ARP協(xié)議進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換成物理地址即MAC地址,在這個(gè)過(guò)程中,需要知道的是,每一個(gè)主機(jī)都有其所對(duì)應(yīng)的ARP緩存表,在表中有所對(duì)應(yīng)的IP地址和其MAC地址,將IP地址轉(zhuǎn)化為MAC地址的過(guò)程中,若能在該主機(jī)自身的ARP緩存表中找到所對(duì)應(yīng)的MAC地址,則可直接獲得,若無(wú)法找到,則需要通過(guò)ARP協(xié)議封裝出一個(gè)ARP數(shù)據(jù)包里面有對(duì)應(yīng)的MAC地址,將其廣播出去,目的主機(jī)收到之后,將源MAC地址和源IP地址存在自身的ARP緩存表中,并將自己的MAC地址和IP地址數(shù)據(jù)封裝后,以單播的形式返回,這樣就可以獲得目的主機(jī)的MAC地址;


  數(shù)據(jù)通信之雙機(jī)互連:

  ①如果用戶(hù)在應(yīng)用程序中沒(méi)有指定目標(biāo)IP地址,則可由應(yīng)用程序發(fā)送請(qǐng)求到DNS服務(wù)器獲取目標(biāo)IP地址,或由用戶(hù)自己手動(dòng)指定;

  ②獲取IP地址后,確定將要連接的傳輸層協(xié)議;選擇TCP/IP協(xié)議;則要進(jìn)行三次握手連接后再發(fā)送數(shù)據(jù);

  ③IP協(xié)議會(huì)按照正確的地址和對(duì)應(yīng)格式完成數(shù)據(jù)封裝,但是網(wǎng)絡(luò)訪(fǎng)問(wèn)層需要通過(guò)MAC地址完成數(shù)據(jù)傳輸,因此需要查詢(xún)ARP緩存中是否有對(duì)應(yīng)該IP地址的MAC地址記錄;在ARP緩存表中查找目標(biāo)IP地址的MAC地址,若無(wú),則將TCP三次握手連接暫存在內(nèi)存中;封裝ARP數(shù)據(jù)包,廣播發(fā)送,目標(biāo)主機(jī)收到ARP數(shù)據(jù)包后,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發(fā)送回來(lái);

  ④源主機(jī)接收到ARP數(shù)據(jù)包后,獲得了目標(biāo)主機(jī)的MAC地址,開(kāi)始進(jìn)行TCP三次握手連接;

  ⑤數(shù)據(jù)報(bào)文傳輸完畢后,再進(jìn)行TCP四次揮手結(jié)束連接;


  數(shù)據(jù)通信之交換機(jī)通信(UDP)

  ①如果用戶(hù)在應(yīng)用程序中沒(méi)有指定目標(biāo)IP地址,則可由應(yīng)用程序發(fā)送請(qǐng)求到DNS服務(wù)器獲取目標(biāo)IP地址,或由用戶(hù)自己手動(dòng)指定;

  ②獲取IP地址后,確定將要連接的傳輸層協(xié)議;選擇UDP協(xié)議;則數(shù)據(jù)直接由應(yīng)用層發(fā)往UDP進(jìn)行直接傳傳輸;將UDP封裝好的數(shù)據(jù)交給IP協(xié)議進(jìn)行進(jìn)一步的封裝;

  ③將封裝好的IP協(xié)議交由網(wǎng)絡(luò)層進(jìn)行封裝,網(wǎng)絡(luò)層需要獲取目標(biāo)主機(jī)的MAC地址,才可在網(wǎng)絡(luò)層中進(jìn)行傳輸,訪(fǎng)問(wèn)當(dāng)前主機(jī)的ARP緩存表,看是否有對(duì)應(yīng)目標(biāo)IP地址的MAC地址,若無(wú),則將UDP連接暫存在內(nèi)存中;封裝ARP數(shù)據(jù)包,廣播發(fā)送,經(jīng)過(guò)交換機(jī)時(shí),由交換機(jī)查看是否有該ARP封裝的源MAC地址,若無(wú),則將源MAC地址寫(xiě)入交換機(jī)轉(zhuǎn)發(fā)表中,進(jìn)行泛洪操作,若有,則進(jìn)行單播發(fā)送到目標(biāo)主機(jī);目標(biāo)主機(jī)收到ARP數(shù)據(jù)包后,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發(fā)送到交換機(jī),交換機(jī)查看是否有該主機(jī)的源MAC地址,若無(wú),則將源MAC地址寫(xiě)入交換機(jī)轉(zhuǎn)發(fā)表中,進(jìn)行泛洪操作,若有,則進(jìn)行單播發(fā)送到目標(biāo)主機(jī);這樣就可使源主機(jī)獲取目標(biāo)主機(jī)的MAC地址,并寫(xiě)入到源主機(jī)的ARP緩存表中,可以開(kāi)始在網(wǎng)絡(luò)層中傳輸;

  ④按照ARP緩存表中的目標(biāo)MAC地址傳送數(shù)據(jù);

  

  數(shù)據(jù)通信之交換機(jī)通信(TCP)

  ①如果用戶(hù)在應(yīng)用程序中沒(méi)有指定目標(biāo)IP地址,則可由應(yīng)用程序發(fā)送請(qǐng)求到DNS服務(wù)器獲取目標(biāo)IP地址,或由用戶(hù)自己手動(dòng)指定;

  ②獲取IP地址后,確定將要連接的傳輸層協(xié)議;選擇TCP協(xié)議;則數(shù)據(jù)需要先建立TCP的連接,即三次握手后,才可傳輸數(shù)據(jù);將TCP封裝好的數(shù)據(jù)交給IP協(xié)議進(jìn)行進(jìn)一步的封裝;

  ③將封裝好的IP協(xié)議交由網(wǎng)絡(luò)層進(jìn)行封裝,網(wǎng)絡(luò)層需要獲取目標(biāo)主機(jī)的MAC地址,才可在網(wǎng)絡(luò)層中進(jìn)行傳輸,訪(fǎng)問(wèn)當(dāng)前主機(jī)的ARP緩存表,看是否有對(duì)應(yīng)目標(biāo)IP地址的MAC地址,若無(wú),則將TCP三次握手連接暫存在內(nèi)存中;封裝ARP數(shù)據(jù)包,廣播發(fā)送,經(jīng)過(guò)交換機(jī)時(shí),由交換機(jī)查看是否有該ARP封裝的源MAC地址,若無(wú),則將源MAC地址寫(xiě)入交換機(jī)轉(zhuǎn)發(fā)表中,進(jìn)行泛洪操作,若有,則進(jìn)行單播發(fā)送到目標(biāo)主機(jī);目標(biāo)主機(jī)收到ARP數(shù)據(jù)包后,將源IP地址及MAC地址緩存,再將自身的IP地址和MAC地址封裝單播發(fā)送到交換機(jī),交換機(jī)查看是否有該主機(jī)的源MAC地址,若無(wú),則將源MAC地址寫(xiě)入交換機(jī)轉(zhuǎn)發(fā)表中,進(jìn)行泛洪操作,若有,則進(jìn)行單播發(fā)送到目標(biāo)主機(jī);這樣就可使源主機(jī)獲取目標(biāo)主機(jī)的MAC地址,并寫(xiě)入到源主機(jī)的ARP緩存表中,可以開(kāi)始在網(wǎng)絡(luò)層中傳輸;

  ④進(jìn)行TCP三次握手連接,按照ARP緩存表中的目標(biāo)MAC地址傳送數(shù)據(jù);

  ⑤當(dāng)數(shù)據(jù)報(bào)文傳輸完畢后,發(fā)起斷開(kāi)TCP連接,四次揮手;


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI