tft每日頭條

 > 圖文

 > 網絡協議之tcpudp

網絡協議之tcpudp

圖文 更新时间:2024-07-30 11:17:02

運輸層向它上面的應用層提供通信服務。屬于面向通信部分的最高層,也是用戶功能中的最低層。當網絡的邊緣部分中的兩台主機使用網絡的核心部分功能進行端到端的通信時,主機的協議棧中有運輸層,而網絡核心部分的路由器轉發分組時都隻用到下三層的功能。

在通信的時候從運輸層的角度來看真正進行通信的實體是在主機中的進程,是這台主機中的一個進程和另一台主機中的一個進程在交換數據。它提供的是應用進程間的邏輯通信就好像數據是水平方向直接交付的一樣

從這裡我們可以看到網絡層和運輸層的區别,網絡層為主機之間提供邏輯通信,運輸層為應用進程之間提供端到端的邏輯通信。

運輸層還會對收到的報文進行差錯檢測

由于我們進行通信的時候可以發現存在不同的應用進程進行通信的過程。這就表明運輸層有着一個很重要的功能——複用和分用

複用:發送方不同的應用進程在加上報文的首部之後可以使用同一個運輸層協議傳送數據。

分用:接收方剝去報文的首部之後可以把數據正确交付給應用進程。

網絡協議之tcpudp(計算機網絡TCP)1


下面我們講一下運輸層的兩個主要協議

首先說一下UDP協議。

1.UDP協議:無連接不可靠的協議。

2.UDP是面向報文的協議,既不合并,也不拆分,保留邊界,一次交付一個完整報文。應用層給多少,他其它的不管,直接把這個報文加上8個字節的首部,所以從這個方面來說處理是很快的。但是由于UDP沒有對報文的大小進行限制。所以如果報文太長,IP要進行分片。而太短的話,需要添加的控制信息又太多。所以會在應用層的時候對數據的大小進行限制。

3.UDP沒有擁塞控制。網絡出現的擁塞不會使源主機的發送速率降低。允許在網絡發生擁塞時丢失部分數據,不允許有太大的時延。故适用于實時性通信。

4.UDP支持一對一,一對多,多對一,和多對多的交互通信。

5.UDP的首部開銷小,隻有八個字節。

下面來介紹一下UDP的首部格式

兩個字節是源端口号,緊跟的是兩個字節的目的端口号,再向下是兩個字節的長度,最後是兩個字節的檢驗和。

注意這個長度是UDP數據報的長度包含了數據部分和首部的長度,所以在計算UDP數據報數據部分的長度時,用數據報的長度來減去8就是UDP數據部分的長度。

當判斷是從客戶到服務器還是從服務器到客戶的時候,我們可以看這個端口号。服務器端使用的端口号數值為0~1023。可以根據端口号來判斷是服務器還是客戶。


下面我們介紹一下TCP協議

TCP協議是我們目前唯一學到的面向連接的可靠交付的協議。

(1)因為其面向連接的特性,所以應用程序在使用TCP協議之前必須建立TCP連接。在數據層傳輸完畢後,必須對已經建立的TCP連接進行釋放。

(2)每一條TCP連接隻能有兩個端點,每一條TCP連接隻能是點對點的(一對一)。但是一個IP地址可以有多個不同的TCP連接(NAT)一個端口号可以出現在不同的TCP中。web服務器端口可以和多個TCP建立連接。

(3)TCP提供可靠交付的服務。通過握手機制使TCP連接的數據無差錯、不丢失、不重複、并按順序到達。

(4)面向字節流。雖然應用程序和TCP的交互是一次一個數據塊,但TCP把應用程序交下來的數據僅僅看成是一連串無結構的字節流。TCP并不知道所傳送字節流的含義。不保證接收方和發送方應用程序所發出的數據塊具有對應的大小,具體接收方數據塊的大小是由TCP的發送緩存決定的。

(5)TCP不關心應用進程一次把多長的報文發到TCP的緩存中,是根據對方給出的窗口值和當前網絡擁塞程度來決定報文段含有的字節數量


TCP的連接

每一條TCP連接都有兩個端點這兩個端點不是主機,不是IP地址,不是應用進程,不是協議接口。這個端點叫做套接字(socket)或插口。在IP地址之後加上端口号就可以構成套接字。

192.168.1.1:80

每一條TCP連接由通信兩端的兩個套接字所決定。

但是一個IP地址可以有多個不同的TCP連接(NAT)一個端口号可以出現在不同的TCP中。web服務器端口可以和多個TCP建立連接。


TCP報文段的首部格式

TCP雖然是面向字節流的,但是在TCP中傳送的數據單元是報文段。一個TCP報文段分為首部和數據兩部分。

TCP報文段的首部20個字節是固定的,後面有4n字節根據需要而增加的選項,首部最小的長度是20個字節。

源端口和目的端口:各占兩個字節,分别寫入源端口和目的端口的端口号。通過端口來實現分用功能。

序号:占4個字節,因為一共有23個位,所以最大可以表示2^32-1這個數。TCP連接中每一個字節都按順序編号。傳送的起始序号在連接時設置。首部中序号字段值指的是所發送的第一個字節的序号。下一個序号應該為起始的序号加上數據的長度

确認号:占4個字節,是期望收到對方下一個報文段的第一個數據字節的序号。也就是上面我們所說的下一個序号。

數據偏移:占4個位,實際上為TCP報文段的首部長度,用來确定選項字段的長度由于占四個位故最大可以表示15,因此最大偏移值為60字節。即首部長度最大為60字節。由于有20字節的固定首部長度,所以選項字段最多為40字節。

保留:占6位,保留以後使用,目前置0.

之後便是6個位的信息。

1.URGURG=1時表明緊急指針字段有效,配合緊急指針使用。發送應用進程高速發送方的TCP有緊急數據,發送方TCP将緊急數據插入到本報文段數據最前面。緊急數據後面的數據為普通數據。

2.ACK:ACK=1時确認号字段有效。在建立連接後所有傳送的報文段都要把ACK置1

3.PSH: 當兩個應用進程進行交互式通信時,有時在一端的應用進程希望鍵入命令之後立刻得到回應,此時PSH置1。當接收方收到PSH=1的報文時,立刻向應用進程傳輸,而不是等待緩存填滿。

4.RST:RST=1時表示TCP中出現了嚴重差錯,必須釋放連接,重新建立。

5.SYN:在連接建立時用來同步序号。

請求報文段:SYN=1,ACK=0

響應報文段:SYN=1,ACK=1

6.FIN: FIN=1表明報文段發送方數據已發送完畢要求釋放運輸連接

窗口:兩個字節,因為有16個位故可以表示到2^16-1。窗口發送的是本報文段的接受窗口,用來告訴對方。從報文首部中确認号(下一個序号)算起允許對方發送的數據量。窗口值是動态發生改變的。

檢驗和:占兩字節。檢驗範圍包括首部和數據兩部分

緊急指針:占兩字節。當URG=1時有意義。指出緊急數據末尾在報文段中位置。窗口值為0也可以發送緊急數據。

選項:長度可變,最大40byte

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved