【正文】
網(wǎng)絡(luò)上發(fā)送一個(gè)廣播,目標(biāo) MAC地址是 “ ”,這表示向同一網(wǎng)段內(nèi)的所有主機(jī)發(fā)出這樣的詢問(wèn): “ MAC地址是什么? ” 網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng) ARP詢問(wèn),只有主機(jī) B接收到這個(gè)幀時(shí),才向主機(jī) A做出這樣的回應(yīng): “ MAC地址是 00aa0062c609”。這樣,主機(jī) A就知道了主機(jī) B的 MAC地址,它就可以向主機(jī) B發(fā)送信息了。同時(shí)它還更新了自己的 ARP緩存表,下次再向主機(jī) B發(fā)送信息時(shí),直接從 ARP緩存表里查找就可以了。 ARP緩存表采用了老化機(jī)制,在一段時(shí)間內(nèi)如果表中的某一行沒(méi)有使用,就會(huì)被刪除,這樣可以大大減少 ARP緩存表的長(zhǎng)度,加快查詢速度。 64 TCP/IP的傳輸層 傳輸層對(duì)應(yīng)于 OSI參考模型的運(yùn)輸層 , 提供端到端的數(shù)據(jù)傳輸服務(wù) 。 該層定義了兩個(gè)主要的協(xié)議:傳輸控制協(xié)議 TCP 和用戶數(shù)據(jù)報(bào)協(xié)議 UDP 。 TCP提供的是面向連接的可靠的傳輸服務(wù);而UDP提供的是無(wú)連接的不可靠的傳輸服務(wù) , 一般用于數(shù)據(jù)量比較小的傳輸 。 TCP和 UDP使用端口號(hào)作其數(shù)據(jù)傳送的最終目的地 ,以實(shí)現(xiàn)應(yīng)用程序進(jìn)程之間的端到端的通信 。 即通過(guò)“ IP地址 +端口號(hào) ” 可區(qū)分不同的應(yīng)用程序進(jìn)程 。 65 1. TCP協(xié)議 TCP提供的是一種可靠的、面向連接的數(shù)據(jù)傳輸服務(wù)。此外, TCP還具有確認(rèn)與重傳機(jī)制、差錯(cuò)控制和流量控制等功能,以確保報(bào)文段傳送的順序和傳輸無(wú)錯(cuò)。 0 4 8 16 31 源端口( 16 位) 目的端口( 16 位) 順序號(hào)( 32 位) 確認(rèn)號(hào) ( 32 位) 報(bào)頭長(zhǎng)度( 4 位) 保留( 6 位) 編碼位( 6 位) 窗口大?。?16 位) 校驗(yàn)和( 16 位) 緊急指針( 16 位) 任選項(xiàng) 數(shù)據(jù) ………… . . 圖 3 10 T CP 報(bào)文段的報(bào)頭結(jié)構(gòu) 66 UDP協(xié)議 0 1 6 3 1 源端口 目的端口 長(zhǎng)度 校驗(yàn)和 圖 3 1 3 U D P 數(shù)據(jù)報(bào)的報(bào)頭結(jié)構(gòu) UDP and TCP 協(xié)議 ? UDP提供無(wú)連接數(shù)據(jù)傳輸服務(wù),不保證數(shù)據(jù)的可靠性:不提供報(bào)文到達(dá)確認(rèn)、排序及流量控制等功能;數(shù)據(jù)的可靠性由 UDP的應(yīng)用程序如 TFTP、RCP負(fù)責(zé); ? TCP提供面向連接的數(shù)據(jù)傳輸服務(wù),用一對(duì)端點(diǎn)(Host,Port)來(lái)標(biāo)示 , Host為主機(jī)的 IP地址, Port為該主機(jī)上的 TCP端口號(hào); ? TCP為保證數(shù)據(jù)的可靠性提供了包括建立連接、傳輸數(shù)據(jù)、發(fā)出確認(rèn)、流量控制及關(guān)閉連接等功能。 ? TCP Packet Format (UDP提供無(wú)連接數(shù)據(jù)傳輸服務(wù),不保證數(shù)據(jù)的可靠性:不提供報(bào)文到達(dá)確認(rèn)、排序及流量控制等功能 ) ? UDP packet format: 窗口大小TCP頭長(zhǎng)確認(rèn)號(hào)URB數(shù)據(jù)(可選項(xiàng))可選項(xiàng)(0 或更多的3 2 位字)緊急指針校驗(yàn)和順序號(hào)目的端口源端口FINSYNRSTPSHACK32源端口(1 6 位)數(shù)據(jù)U D P 校驗(yàn)和目的端口U D P 長(zhǎng)度320 31? TCP及 UDP支持計(jì)算機(jī)上的多個(gè)應(yīng)用程序同時(shí)進(jìn)行通信; ?每個(gè)應(yīng)用程序有一個(gè)唯一的端口號(hào) 。 ? TCP及 UDP使用端口號(hào)對(duì)收到的數(shù)據(jù)進(jìn)行分解,并分別送到相應(yīng)的應(yīng)用程序; ?順序號(hào):發(fā)送方使用,用于標(biāo)示該報(bào)文在發(fā)送方的數(shù)據(jù)字節(jié)流中的位置; ?確認(rèn)號(hào):接收方使用,用于標(biāo)示本機(jī)希望接收的下一個(gè)報(bào)文的序號(hào)(隱含對(duì)此序號(hào)一前的報(bào)文的確認(rèn)); ?碼位: SYN:建立連接, FIN:關(guān)閉連接;SYN=1,ACK=0:connection request。 SYN=1,ACK=1:connection accept。 ? TCP 使用三次握手來(lái)建立連接,發(fā)送雙方各獨(dú)立選擇一個(gè)初始序號(hào)來(lái)標(biāo)示其數(shù)據(jù)處理單元( DPU)。 ? 連接可以由任何一方或雙方發(fā)起。一般,一臺(tái)計(jì)算機(jī)主動(dòng)發(fā)出連接請(qǐng)求,另一臺(tái)計(jì)算機(jī)被動(dòng)地等待握手;一旦連接建立,就可以實(shí)現(xiàn)雙方對(duì)等的數(shù)據(jù)交流,不再有主從關(guān)系。 ? TCP 使用三次握手來(lái)關(guān)閉連接,可以單向地關(guān)閉連接;但連接的兩個(gè)方向都關(guān)閉后,該連接記錄才被刪除。 TCP 連接 ? S(源結(jié)點(diǎn) )發(fā)送 SYN=1, ACK=O, Seq =x的包,請(qǐng)求連接; ? (1)D(目的結(jié)點(diǎn))如果無(wú)進(jìn)程在偵聽(tīng)目的端口指定的端口號(hào)則發(fā)送 RST=1的應(yīng)答拒絕該請(qǐng)求 (服務(wù)器忙 ); (2)如果接收請(qǐng)求,則發(fā)回一確認(rèn)包,其 SYN=1, ACK=1, Ack=x+1, Seq =y。 ? S發(fā)送第一個(gè)數(shù)據(jù) (序號(hào)為x+1),并在其數(shù)據(jù)包中確認(rèn)D所選擇的序號(hào),即 ACK=1, Ack=y+1, Seq=x+1。 SY N = 1Se q xSY N = 1AC K x + 1Se q ySe n d d a t a Se q x + 1AC K y + 1So u rc e D e s t ina t ionR e c e iv e a n d s e n d AC K x + 1R e c e iv e AC KSe n d AC Ky + 1TCP 拆除連接 ? S(源結(jié)點(diǎn) )發(fā)送最后一個(gè)數(shù)據(jù)包時(shí)置 FIN=1, Seq = x的包,請(qǐng)求關(guān)閉 S至 D方向的連接; ? (1)如果 D發(fā)回 ACK=1, Ack=x+1, Seq=y的包即為確認(rèn);至此, S不能向 D發(fā)送任何新的數(shù)據(jù),但 S可以發(fā)送確認(rèn)幀; D至 S方向的發(fā)送仍然可以正常進(jìn)行; (2)如果 D發(fā)送 FIN=1, ACK=1, Ack=x+1, Seq=y的包,則為確認(rèn)并同時(shí)請(qǐng)求關(guān)閉 D至 S方向的連接; ? S發(fā)送 ACK=1, Ack=y+1, Seq=x+1的包確認(rèn)關(guān)閉 D至 S方向的連接; ? TCP刪除此連接記錄; 注意:此圖中的 x,y僅代表某個(gè)序號(hào),與 TCP Connection中的 x,y的值不一樣。 Sour c e D es t inat ionSend F I NSeq= xF I N = 1Seq= xSend AC K x + 1Send F I N Seq= ySend AC Ky + 1Seqx +