1. 程式人生 > >【網路】網路基礎知識總結(包括TCP/IP協議、ARP、UDP等)

【網路】網路基礎知識總結(包括TCP/IP協議、ARP、UDP等)

說到網路相關知識,首先先說說計算機網路體系結構中兩種最為重要的參考模型,OSI參考模型和TCP/IP參考模型。

1、OSI參考模型:

       OSI(Open System Interconnect),即開放式系統互聯。一般都稱為OSI參考模型,是ISO(國際標準化組織)組織在1985年研究的網路互聯模型。該體系結構標準定義了網路互連的七層框架(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層),即ISO開放系統互連參考模型。第一層到第三層屬於OSI參考模型的低三層,負責建立網路通訊連線的鏈路;第四層到第七層為OSI參考模型的高四層,具體負責端到端的資料通訊。在這一框架下進一步詳細規定了每一層的功能,以實現開放系統環境中的互連性、互操作性和應用的可移植性。 


OSI參考模型中,對等層協議之間交換的資訊單元統稱為協議資料單元(PDU,Protocol Data Unit)。   
傳輸層——資料段(Segment)   網路層——分組(資料包)(Packet)   資料鏈路層——資料幀(Frame)   物理層——位元(Bit)

2、TCP/IP參考模型:

        TCP/IP參考模型是計算機網路的祖父ARPANET和其後繼的因特網使用的參考模型。ARPANET是由美國國防部DoD(U.S.Department of Defense)贊助的研究網路。逐漸地它通過租用的電話線連結了數百所大學和政府部門。當無線網路和衛星出現以後,現有的協議在和它們相連的時候出現了問題,所以需要一種新的參考體系結構。這個體系結構在它的兩個主要協議出現以後,被稱為TCP/IP參考模型

(TCP/IP reference model)。

       TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇TCP/IP協議簇分為四層(從下到上分為第一、二、三、四層的,IP位於協議簇的第二層(對應OSI的第三層:網路層),TCP位於協議簇的第三層(對應OSI的第四層:傳輸層)。TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為: 

應用層:應用程式間溝通的層,如簡單電子郵件傳輸(SMTP)、檔案傳輸協議(FTP)、網路遠端訪問協議(Telnet)等。 
傳輸層:在此層中,它提供了節點間的資料傳送服務,如傳輸控制協議(TCP)、使用者資料報協議(UDP)等,TCP和UDP給資料包加入傳輸資料並把它傳輸到下一層中,這一層負責傳送資料,並且確定資料已被送達並接收。 
互連網路層:

負責提供基本的資料封包傳送功能,讓每一塊資料包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。 
網路介面層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送資料。

       

       OSI七層模型結構的協議體系結構結構完整,概念明確,但其只能算是理想的一種體系結構,在實際應用中顯得發雜,定義的層數越多,實現的難度也就隨之越大,所以TCP/IP的四層模型結構成了至今被大量運用的網路體系的模型結構,但這並不意味著OSI就被擱置一旁甚至棄而不用。

3、兩種模型結構的比較:

共同點:

1)、OSI參考模型和TCP/IP參考模型都採用了層次結構的概念。

2)、都能夠提供面向連線和無連線兩種通訊服務機制

不同點:

1)、OSI採用的七層模型,而TCP/IP是四層結構。

2)、TCP/IP參考模型的網路介面層實際上並沒有真正的定義,只是一些概念性的描述。而OSI參考模型不僅分了兩層,而且每一層的功能都很詳盡,            甚至在資料鏈路層又分出一個介質訪問子層,專門解決區域網的共享介質問題。

3)、OSI模型是在協議開發前設計的,具有通用性。TCP/IP是先有協議集然後建立模型,不適用於非TCP/IP網路。

4)、OSI參考模型與TCP/IP參考模型的傳輸層功能基本相似,都是負責為使用者提供真正的端對端的通訊服務,也對高層遮蔽了底層網絡的實現細節。            所不同的是TCP/IP參考模型的傳輸層是建立在網路互聯層基礎之上的,而網路互聯層只提供無連線的網路服務,所以面向連線的功能完全在TCP          協議中實現,當然TCP/IP的傳輸層還提供無連線的服務,如UDP;相反OSI參考模型的傳輸層是建立在網路層基礎之上的,網路層既提供面向連          接的服務,又提供無連線的服務,但傳輸層只提供面向連線的服務

5)、OSI參考模型的抽象能力高,適合與描述各種網路;而TCP/IP是先有了協議,才制定TCP/IP模型的

6)、OSI參考模型的概念劃分清晰,但過於複雜;而TCP/IP參考模型在服務、介面和協議的 區別上不清楚,功能描述和實現細節混在一起。

7)、TCP/IP參考模型的網路介面層並不是真正的一層;OSI參考模型的缺點是層次過多,劃分意義不大但增加了複雜性。

8)、OSI參考模型雖然被看好,由於技術不成熟,實現困難;相反,TCP/IP參考模型雖然有許多不盡人意的地方,但還是比較成功的。


       關於TCP/IP的四層模型結構,也可以是五層結構,即在最底層加上了物理層,因為物理層注重的是訊號的傳遞以及具有某些電機特性,所以嚴格的來講,應該將其加上,放在網路介面層的下層位置。

4、關於各層間的作用(基於TCP/IP):

1)、物理層:

        指的是電訊號傳遞方式,比如現在乙太網通用的網線(雙絞線)、早期乙太網採用的同軸電纜(現在主要用於有線電視)、光纖等都屬於物理層的概念。 物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)是工作在物理層的網路裝置,用於雙絞線的連線和訊號中繼(將已衰減的訊號再次放大使之傳得更遠)。  

2)、鏈路層:

        鏈路層有乙太網、令牌環網等標準。鏈路層負責網絡卡裝置的驅動、幀同步(就是說從網線上檢測到什麼訊號算作新幀的開始)、衝突檢測(如果檢測到衝突就自動重發)、 資料差錯校驗等工作。交換機是工作在鏈路層的網路裝置,可以在不同的鏈路層網路之間轉發資料幀(比如十兆乙太網和百兆乙太網之間、乙太網和令牌環網之間),由於不同鏈路層的幀格式不同,交換機要將進來的資料包拆掉鏈路層首部重新封裝之後再轉發

       網路層的IP協議是構成Internet的基礎。Internet上的主機通過IP地址來標識,Internet上有大量路由器負責根據IP地址選擇合適的路徑轉發資料包,資料包從Internet上的源主機到目的主機往往要經過十多個路由器。路由器是工作在第三層的網路裝置,同時兼有交換機的功能,可以在不同的鏈路層介面之間轉發資料包。因此路由器需要將進來的資料包拆掉網路層和鏈路層兩層首部並重新封裝。IP 協議不保證傳輸的可靠性,資料包在傳輸過程中可能丟失,可靠性可以在上層協議或應用程式中提供支援。

3)、網路層:

       負責點到點的傳輸(這裡的“點”指主機或路由器),而傳輸層負責端到端 (end-to-end)的傳輸(這裡的“端”指源主機和目的主機)。

4)、傳輸層:

       該層定義了兩個重要的協議,即傳輸控制協議(TCP)或使用者資料報協議(UDP)TCP是一種面向連線的、可靠的協議。就像打電話,雙方拿起電話互通身份之後就建立了連線,然後說話就行了,這邊說的話那邊保證聽得到,並且是按說話的順序聽到的,說完話掛機斷開連線。也就是說TCP傳輸的雙方需要首先建立連線,之後由TCP協議保證資料收發的可靠性,丟失的資料包自動重發,上層應用程式收到的總是可靠的資料流,通訊之後關閉連線。UDP協議不面向連線,也不保證可靠性,有點像寄信,寫好信放到郵筒裡,既不能保證信件在郵遞過程中不會丟失,也不能保證信件是按順序寄到目的地的。使用UDP協議的應用程式需要自己完成丟包重發、消息排序等工作。

5)、應用層:

         為使用者提供各種所需的服務。比如:FTP,DNS,Telnet,SMTP等。

5、TCP/IP協議棧與資料封裝

       TCP/IP網路協議棧分為應用層(Application)、傳輸層(Transport)、網路層(Network)和鏈路層(Link)四層。

關於兩臺計算機通過TCP/IP協議通訊的過程(區域網的兩個主機可以通訊)見下圖:


      只有應用層由使用者提供,傳輸層及其以下的機制由核心提供。應用程式對通訊資料的含義進行解釋,而傳輸層及其以下的機制處理通訊的細節,將資料從一臺計算機通過一定的路徑傳送到另一臺計算機。

      應用層資料通過協議棧發到網路上時,每層協議都要加上一個資料首部(header),稱為封裝(Encapsulation),如下圖所示:


    TCP/IP資料包的封裝

過程:

       應用層將資料通過TCP/IP協議棧逐層向下傳遞,其下的每層接到來自上層的資料時,根據每層的協議都要在其資料前端新增首部資訊進行封裝不同的協議層對資料包有不同的稱謂,在傳輸層叫做段(segment),在網路層叫做資料報(datagram),在鏈路層叫做幀(frame)。在經過鏈路層時,資料封裝成幀後發給物理層的傳輸介質上,到達目標主機後,每層協議再逐層剝掉其首部,最後遞交給目標主機應用層,進行應用程式處理,資料與源主機發送的資料一致。

       每層都將資料包分為:有效頭部資訊和有效載荷(資料)。對於有效資料稱之為“有效載荷”,新增的部分稱其為“報頭”。下層收到來自上層交付的資料時,對於下層來說並不關心其具體內容,因為站在當前層的角度來看,此時已新增上層報頭資訊的資料整個都被視為有效載荷,當前層要做的只是繼續封裝該資料,即新增自己的報頭。而解包的過程亦是如此,每層只負責剝離自己能識別的報頭信息。任何資料報中的報頭資訊必須包含"上層協議",即要把當前的有效載荷交付給上層的誰。

上圖適應兩臺計算機在同一網段的情況,如果是不同網段,從源主機到目標主機間的資料傳輸則須經過一個或多個路由器,以實現資料的跨網路傳輸。


        路由器是工作在第三層的網路裝置,同時兼有交換機的功能,可以在不同的鏈路層介面之間轉發資料包。因此路由器需要將進來的資料包拆掉網路層和鏈路層兩層首部並重新封裝。在此過程中,仍認為在同一層進行了網路連線。

       目的主機收到資料包後,如何經過各層協議棧最後到達應用程式呢?整個過程如下圖所示


1、乙太網驅動程式根據乙太網首部中的“上層協議”欄位確定該資料幀的有效載荷(指除去協議首部之外實際傳輸的資料)是IP、ARP還是RARP協議的資料報。

2、交給相應的協議處理。假如是IP資料報,IP協議再根據IP首部中的“上層協議”欄位確定該資料報的有效載荷是TCP、UDP、ICMP還是IGMP ,然後交給相應的協議處理。假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“埠號”欄位確定應該將應用層資料交給哪個使用者程序。

     IP 地址是標識網路中特定主機的地址,而埠號就是同一臺主機上標識特定程序的地址,IP 地址和埠號合起來標識網路中唯一的程序。
注意:

       雖然IP、ARP和RARP資料報都需要乙太網驅動程式來封裝成幀,但是從功能上劃分,ARP和RARP屬於鏈路層,IP屬於網路層。雖然ICMP、IGMP、TCP、UDP的資料都需要IP協議來封裝成資料報,但是從功能上劃分,ICMP、IGMP與IP同屬於網路層,TCP和UDP屬於傳輸層。

6、乙太網幀格式


其中的源地址和目的地址是指網絡卡的硬體地址(也叫MAC地址),長度是48位(12個位元組),是在網絡卡出廠時固化的。

幀協議型別欄位有三種值,分別對應IP、ARP、RARP,而後有效載荷的大小(資料長度)。幀末尾是CRC校驗碼用於差錯校驗的。

幀協議其型別值分別為0800的IP協議,0806的ARP協議,0835的RARP協議。

用ifconfig命令看一下MAC地址,“HWaddr 00:1C:29:6E:00:8F”部分就是硬體地址。

     乙太網幀中的資料長度規定最小46位元組,最大1500位元組,ARP和RARP資料包的長度不夠46位元組,要在後面補填充位。

     最大值1500稱為乙太網的最大傳輸單元(MTU),不同的網路型別有不同的MTU,如果一個數據包從乙太網路由到撥號鏈路上,資料包長度大於撥號鏈路的MTU了,則需要對資料包進行分片(fragmentation)。ifconfig命令的輸出中也有“MTU:1500”。注意,MTU這個概念指資料幀中有效載荷的最大長度,不包括幀首部的長度。

7、ARP協議

       概念:ARP協議原名為“地址解析協議”,是根據IP地址獲取實體地址的一個TCP/IP協議。主機發送資訊時將包含目標IP地址的ARP請求廣播到網路上的所有主機,並接收返回訊息,以此確定目標的實體地址。收到返回訊息後將該IP地址和實體地址存入本機ARP快取中並保留一定時間,下次請求時直接查詢ARP快取以節約資源。

       目的:在網路通訊時,源主機的應用程式知道目的主機的IP地址和埠號,卻不知道目的主機的硬體地址,而資料包首先是被網絡卡接收到再去處理上層協議的,如果接收到的資料包的硬體地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬體地址,ARP協議就起到這個作用。

       每臺主機都維護一個ARP快取表,可以用arp -a命令檢視。快取表中的表項有過期時間(一般為20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬體地址。


      源MAC地址、目的MAC地址在乙太網首部和ARP請求各出現一次,對於鏈路層為乙太網的情況是多餘的,但如果鏈路層是其它型別的網路則有可能是必要的。幀協議型別欄位有三種值,分別對應IP、ARP、RARP。硬體型別鏈路層網路型別,1為乙太網。協議型別指要轉換的地址類型,0x0800為IP地址。後面兩個地址長度對於乙太網地址和IP地址分別為6和4(位元組),即0604。op欄位:op字為1表示ARP請求,op字段為2表示ARP應答。

例如:A主機(源地址)向B主機(目的地址)進行ARP請求,A的MAC為:00:05:5d:61:58:a8;A的IP地址:c0 a8 00 37(192.168.0.55)。

          B的MAC為:00:05:5d:a1:b8:40;B的IP地址:c0 a8 00 02(192.168.0.2).

請求幀為 

乙太網首部(14位元組) ff ff ff ff ff 00 05 5d 61 58 a8 08 06        //廣播地址的目標地址是全1。08 06:ARP幀

APR幀(28位元組)     

00 01                          //硬體型別表示為乙太網;硬體地址(MAC地址)長度為6,協議地址(IP地址)長度為4(0604)

08 0006 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37    //協議型別0800表示為IP地址;op為0x0001表示請求;

00 00 00 00 00 00c0  a8 00 02   //此處目的乙太網地址為全0,IP地址為B的。A主機ARP的目的就是獲得B主機硬體地址(MAC地址/實體地址)。

填充位(18位元組)

應答幀為:

乙太網首部 (位元組)00 05 5d 61 58 a800 05 5d a1 b8 40 08 06

APR幀(28位元組)     

00 01                      

08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02   //op為0x0002表示應答;

00 05 5d 61 58 a8 c0  a8 00 37  //目的乙太網地址和IP地址為A的

填充位(18位元組)

8、RARP協議


RARP協議

       原名為“反向地址解析協議”,允許區域網的物理機器從閘道器伺服器的ARP表或者快取上請求其IP地址。網路管理員在區域網閘道器路由器裡建立一個表以對映實體地址(MAC)和與其對應的IP地址。當設定一臺新的機器時,其RARP客戶機程式需要向路由器上的 RARP 伺服器請求相應的IP地址。假設在路由表中已經設定了一個記錄,RARP 伺服器將會返回 IP 地址給機器,此機器就會儲存起來以便日後使用。

產生原因

ARP(地址解析協議)是裝置通過自己知道的IP地址來獲得自己不知道的實體地址的協議。假如一個裝置不知道它自己的IP地址,但是知道自己的實體地址,裝置知道的只是網路介面卡上的實體地址時,又該怎麼辦呢? 為解決這種情況,就有了與ARP對應的RARP協議。

工作方式

RARP以與ARP相反的方式工作。RARP發出要反向解析的實體地址並希望返回其對應的IP地址,應答包括由能夠提供所需資訊的RARP伺服器發出的IP地址。雖然傳送方發出的是廣播資訊,RARP規定只有RARP伺服器能產生應答。許多網路指定多個RARP伺服器,這樣做既是為了平衡負載也是為了作為出現問題時的備份。

9、IP協議(重點)

       IP資料報的格式,見下圖:


       IP資料報的首部長度和資料長度都是可變長的,但總是4位元組的整數倍對於IPv4 ,4位版本欄位是4。4位首部長度的數值是以4位元組為單位的,最小值為5,也就是首部長度最小是4x5=20位元組, 也就是不帶任何選項的IP首部,4位能表示的最大值是15,也就是首部長度最大是60位元組。8位TOS欄位有3個位用來指定IP資料報的優先順序(目前已經廢棄不用),還有4個位表示可選的服務型別(最小延遲、最大呑吐量、最大可靠性、最小成本),還有一個位總是0。 

       16位總長度是整個資料報(包括IP首部和IP層payload)的位元組數。16位標識:每傳一個IP資料報,16位的標識加1,可用於分片和重新組裝資料報。

       3位標誌和13位片偏移用於分片。

       TTL(Time to live)是這樣用的:源主機為資料包設定一個生存時間,比如64,每過一個路由器就把該值減1,如果減到0就表示路由已經太長了仍然找不到目的主機的網路,就丟棄該包,此這個生存時間的單位不是秒,而是跳(hop)。協議欄位指示上層協議是TCP、UDP、ICMP還是IGMP。然後是校驗和,只校驗IP首部,資料的校驗由更高層協議負責。IPv4的IP地址長度為32位。

下面主要進行說明IP分片和重組

3個標誌位:

1)、最高位必須為0,該位必須複製到所有分組中。

2)、不分片位(no not fragment,DF位)。DF=0表示可以分片;DF=1表示接受主機對分組不能分片。如果長度超過MTU(最大傳輸單元)而又不可以分片的話,那麼只能丟棄該組,並且用ICMP差錯報文向源主機報告。

3)、分片位(More fragment,MF位)。該位表示是否是最後一個分片,MF=1表示接收的分組不是最後一片,否則表示是最後一片。

IP如何分片:

1)、檢查DF標誌位,檢查是否允許分片。如果設定了該位,則資料報將被丟棄,並將一個ICMP錯誤返回給源主機。

2)、基於MTU,確定片長度,將資料長度分為若干部分。(除了最後的資料部分,所有新建的資料選項的長度必須是8個位元組的整數倍。)

3)、每個資料部分被放入一個IP資料報,這些數的資料報的報頭略微修改了原來的報文頭。

4)、除了最後的資料報分片外,每個分片都設定了多個分片標誌位。

5)、每個分片的偏移量欄位設定為這個資料部分在原來的資料報所佔的位置,這個位置相當於原來未分片的資料報的開頭處。

6)、如果在原來的資料報中包括了選項,則選項型別位元組的高位位元組決定了這個資訊是被複制到所有的分片資料段,還是隻複製到了第一個資料報。

7)、設定新資料報的報文頭欄位及總長度欄位。

8)、重新計算報文頭部校驗和。

IP的組裝:

        為了高效第組裝分片,用於儲存分片的資料結構必須做到:

1)、快速定位屬於某一資料報的一組分組。

2)、在屬於某一資料報的一組分片中快速插入新的分片。

3)、有效地判斷一個數據報的所有分片是否已經全部接收。

4)、具有組裝超時機制,如果在重組完成之前定時器溢位,則刪除該資料報的所有內容。

關於IP協議常見的問題:
1、為什麼IP不是可靠連線的協議
     IP層沒有超時和重傳機制,沒有連線握手協議。
2、IP資料報經過路由器都做了哪些改動
     IP沒經過一個路由器,TTL數就會減一,如果最後TTL為0了,但是依然沒有到達目的地,這個IP包將會被丟棄。這樣做了目的是為了防止出現迴圈迴路。並且最後一跳的路由器會發送一個ICMP不可達的資料包給源IP。
3、關於分片的問題
      IP資料包的長度為16,也就是說最大為65535個位元組。但是我們知道資料鏈路層規定MTU最大傳輸單元為1500個位元組。當IP資料包的大小超過了1500,IP資料包必須要進行分片處理。這還只是初始傳送端的分片,在網路中如果某個路由器的MTU小於1500,那麼還需要在路由器端做分片,這就給IP包的完整接收照成了很大的不確定性(我們知道資料包達到終點不一定是按照順序的),因為萬一某一個分片丟失,可能會造成真個IP重傳,當然前提是高層協議支援重傳。對於TCP協議,不存在分片的問題,因為TCP報頭的選項欄位有MSS欄位,規定一個TCP包最大可傳輸的位元組數,一般是1500-20-20=1460位元組。也就是說到達IP封包的時候最大可承載資料只有1460個位元組,這樣就可以避免分片的問題。但是對於UDP這一類的協議,分片操作還是交給IP完成,雖然這樣可以增載入荷的效率,但是穩定性會受到很大的影響。


IP地址與路由:

IP地址分為5類:(IPv4的IP地址長度為4位元組,通常採用點分〸十進位制表示法)

A類 0.0.0.0到127.255.255.255 

B類 128.0.0.0到191.255.255.255

C類 192.0.0.0到223.255.255.255
D類 224.0.0.0到239.255.255.255 

E類 240.0.0.0到247.255.255.255

       IP地址與子網掩碼做與運算可以得到網路號,主機號從全0到全1就是子網的地址範圍

       127.*的IP地址用於本機環回(loop back)測試,通常是127.0.0.1。loopback是系統中一種特殊的網路裝置,如果傳送資料包的目的地址是環回地址或者與本機其它網路裝置的IP地址相同,則資料包不會發送到網路介質上,而是通過環回裝置再發回給上層協議和應用程式,主要用於測試。

一些不能用作主機IP 地址的特殊地址:

      目的地址為255.255.255.255 ,表示本網路內部廣播,路由器不轉發這樣的廣播資料包。

      主機號全為0的地址只表示網路而不能表示某個主機,如192.168.10.0(假設子網掩碼 為255.255.255.0)。
      目的地址的主機號為全1,表示廣播至某個網路的所有主機,例如目的地址192.168.10.255表示廣播至192.168.10.0網路(假設子網掩碼為255.255.255.0)。


        路由表:由很多路由條目組成,每個條目都指明去往某個網路的資料包應該經由哪個介面傳送,其中最後一條是預設路由條目。路由條目路由表中的一行,每個條目主要由目的網路地址、子網掩碼、下一跳地址、傳送介面四部分組成,如果要傳送的資料包的目的網路地址匹配路由表中的某一行,就按規定的介面傳送到下一跳地址。預設路由條目路由表中的最後一行,主要由下一跳地址和傳送介面兩部分組成,當目的地址與路由表中其它行都不匹配時,就按預設路由條目規定的介面傳送到下一跳地址。

        路由是從尋找目標網路開始的,對於路由來說其找尋目標網路地址一般有三種可能:

        1、知道,但當前網段找不到(送至下一路由);2、不知道,也找不到。(送至預設閘道器);3、知道,也能在當前網段找到。

 路由如何確定要傳送的網路號?

       IP資料報中存有目標IP地址,所以當路由獲得該地址時,通過與子網掩碼的“與”操作,便能得到一個網路號,將其與路由表中的目標地址(Destination)條目進行逐一比對,如果比對成功則通過該網路號對應的傳送介面(Use Iface)發出;若未匹配到,則說明不在該區域網絡,須將其從eth0的傳送介面發出,將其送至預設閘道器處,再由其路由表決定下一跳的地址。

10、UDP協議


       UDP協議全稱是使用者資料報協議,在網路中它與TCP協議一樣用於處理資料包,是一種無連線的協議。在OSI模型中,在第四層的傳輸層,處於IP協議的上一層。UDP有不提供資料包分組、組裝和不能對資料包進行排序的缺點,也就是說,當報文傳送之後,是無法得知其是否安全完整到達的。UDP用來支援那些需要在計算機之間傳輸數據的網路應用。包括網路視訊會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天UDP仍然不失為一項非常實用和可行的網路傳輸層協議。

      UDP協議不面向連線,也不保證傳輸的可靠性。例如:傳送端的UDP協議層只管把應用層傳來的資料封裝成段交給IP協議層就算完成任務了,如果因為網路故障該段無法發到對方,UDP協議層也不會給應用層返回任何錯誤資訊。接收端的UDP協議層只管把收到的資料根據埠號交給相應的應用程式就算完成任務了,如果傳送端發來多個數據包並且在網路上經過不同的路由,到達接收端時順序已經錯亂了,UDP協議層也不保證按傳送時的順序交給應用層。通常接收端的UDP協議層將收到的資料放在一個固定大小的緩衝區中等待應用程式來提取和處理,如果應用程式提取和處理的速度很慢,而傳送端傳送的速度很快,就會丟失資料包,UDP協議層並不報告這種錯誤。因此,使用UDP協議的應用程式必須考慮到這些可能的問題並實現適當的解決方案,例如等待應答、超時重發、為資料包編號、流量控制等。一般使用

UDP協議的應用程式實現都比較簡單,只是傳送一些對可靠性要求不高的訊息,而不傳送大量的資料。例如,基於UDP的TFTP協議一般只用 trivial ftp TCP FTP於傳送小檔案,而基於TCP的協議適用於各種檔案的傳輸。

UDP協議的特點:UDP使用底層的網際網路協議來傳送報文,同IP一樣提供不可靠的無連線資料包傳輸服務。它不提供報文到達確認、排序、及流量控制等功能。

11、TCP協議(重點)


                                                 TCP段格式

       這裡主要說一下六個標誌位,URG、ACK、PSH、RST、SYN和FIN。

       SYN表示建立連線,FIN表示關閉連線;ACK表示響應;PSH表示有 DATA資料傳輸;RST表示連線重置;URG表示緊急指標欄位有效。

       SYN、FIN、ACK位:其中ACK是可能與SYN,FIN等同時使用的,比如SYN和ACK可能同時為1,它表示的就是建立連線之後的響應。如果只是單個的一個SYN,它表示的只是建立連線。TCP的幾次握手就是通過這樣的ACK表現出來的。但SYN與FIN是不會同時為1的,因為前者表示的是建立連線,而後者表示的是斷開連線。

       RST位:RST一般是在FIN之後才會出現為1的情況,表示的是連線重置。一般地,當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連線;而當出現SYN和SYN+ACK包時,我們認為客戶端與伺服器建立了一個連線。

        PSH位(Push):PSH為1的情況,一般只出現在 DATA內容不為0的包中,也就是說PSH為1表示的是有真正的TCP資料包內容被傳遞。TCP的連線建立和連線關閉,都是通過請求-響應的模式完成的。當兩個應用程序進行互動式的通訊中,有時在一端的應用程式希望在鍵入一個命令後立即收到對應的響應。在這種情況下,TCP就可以使用推送操作。通常的資料中都會帶有PSH,但URG只在緊急資料才設定,也稱“帶外資料”

       URG位(URGent):當URG=1時,表示緊急指標欄位有效。他告訴系統次報文段有緊急指標,應該儘快的處理(相當於高優先順序的資料),而不要按照原來的排序序列來傳送。若不使用緊急指標,那麼這兩個字元將儲存在接收TCP的快取末尾。只有在所有資料段被處理完畢後這兩個