欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

傳輸控制協議(Transmission Control Protocol, TCP)

  • 發布于:2021-04-07
  • 266 人圍觀

傳輸控制協議(Transmission Control Protocol, TCP)

TCP協議主為了在主機間實現高可靠性的包交換傳輸協議。本文將描述協議標準和實現的一些方法。因為計算機網絡在現代社會中已經是不可缺少的了,TCP協議主要在網絡不可靠的時候完成通信,對軍方可能特別有用,但是對于政府和商用部門也適用。TCP是面向連接的端到端的可靠協議。它支持多種網絡應用程序。TCP對下層服務沒有多少要求,它假定下層只能提供不可靠的數據報服務,它可以在多種硬件構成的網絡上運行。下面的圖是TCP在層次式結構中的位置,它的下層是IP協議,TCP可以根據IP協議提供的服務傳送大小不定的數據,IP協議負責對數據進行分段,重組,在多種網絡中傳送。

 

TCP的上面就是應用程序,下面是IP協議,上層接口包括一系列類似于操作系統中斷的調用。對于上層應用程序來說,TCP應該能夠異步傳送數據。下層接口我們假定為IP協議接口。為了在并不可靠的網絡上實現面向連接的可靠的傳送數據,TCP必須解決可靠性,流量控制的問題,必須能夠為上層應用程序提供多個接口,同時為多個應用程序提供數據,同時TCP必須解決連接問題,這樣TCP才能稱得上是面向連接的,最后,TCP也必須能夠解決通信安全性的問題。

網絡環境包括由網關(或其它設備)連接的網絡,網絡可以是局域網也可以是一些城域網或廣域網,但無論它們是什么,它們必須是基于包交換的。主機上不同的協議有不同的端口號,一對進程通過這個端口號進行通信。這個通信不包括計算機內的I/O操作,只包括在網絡上進行的操作。網絡上的計算機被看作包傳送的源和目的結點。特別應該注意的是:計算機中的不同進程可能同時進行通信,這時它們會用端口號進行區別,不會把發向A進程的數據由B進程接收的。

進程為了傳送數據會調用TCP,將數據和相應的參數傳送給TCP,于是TCP會將數據傳送到目的TCP那里,當然這是通過將TCP包打包在IP包內在網絡上傳送達到的。接收方TCP在接收到數據后會通信上層應用程序,TCP會保證接收數據順序的正確性。雖然下層協議可能不會保證順序是正確的。這里需要說明的是網關在接收到這個包后,會將包解開,看看是不是已經到目的地了,如果沒有到,應該走什么路由達到目的地,在決定后,網關會根據下一個網絡內的協議情況再次將TCP包打包傳送,如果需要,還要把這個包再次分成幾段再傳送。這個落地檢查的過程是一個耗時的過程。從上面,我們可以看出TCP傳送的基本過程,當然具體過程可能要復雜得多。

在實現TCP的主機上,TCP可以被看成是一個模塊,和文件系統區別不大,TCP也可以調用一些操作系統的功能,TCP不直接和網絡打交道,控制網絡的任務由專門的設備驅動模塊完成。TCP只是調用IP接口,IP向TCP提供所有TCP需要的服務。通過下圖我們可以更清楚地看到TCP協議的結構。

 

上面已經說過了,TCP連接是可靠的,而且保證了傳送數據包的順序,保證順序是用一個序號來保證的。響應包內也包括一個序列號,表示接收方準備好這個序號的包。在TCP傳送一個數據包時,它同時把這個數據包放入重發隊列中,同時啟動記數器,如果收到了關于這個包的確認信息,將此包從隊列中刪除,如果計時超時則需要重新發送此包。請注意,從TCP返回的確認信息并不保證最終接收者接收到數據,這個責任由接收方負責。

每個用于傳送TCP的通道都有一個端口標記,因為這個標記是由每個TCP終端確定的,因此TCP可能不唯一,為了保證這個數值的唯一,要使用網絡地址和端口號的組合達到唯一標識的目的,我們稱這個為了套接字(Socket),一個連接由連接兩端的套接字標識,本地的套接字可能和不同的外部套接字通信,這種通信是全雙工的。

通過向本地端口發送OPEN命令及外部套接字參數建立連接,TCP返回一個標記這個連接的名稱,以后如果用戶需要使用這個名稱標記這個連接。為了保存這個連接的信息,我們假設有一個稱為傳輸控制塊(Transmission Control Block,TCB)的東西來保存。OPEN命令還指定這個連接的建立是主動請求還是被動等待請求。下面我們要涉及具體的功能了,TCP段以internet數據報的形式傳送。IP包頭傳送不同的信息域,包括源地址和目的地址。TCP頭跟在internet包頭后面,提供了一些專用于TCP協議的信息。下圖是TCP包頭格式圖:

 

源端口:16位;

目的端口:16位

序列碼:32位,當SYN出現,序列碼實際上是初始序列碼(ISN),而第一個數據字節是ISN 1;

確認碼:32位,如果設置了ACK控制位,這個值表示一個準備接收的包的序列碼;

數據偏移量:4位,指示何處數據開始;

保留:6位,這些位必須是0;

控制位:6位;

窗口:16位;

校驗位:16位;

優先指針:16位,指向后面是優先數據的字節;

選項:長度不定;但長度必須以字節記;選項的具體內容我們結合具體命令來看;

填充:不定長,填充的內容必須為0,它是為了保證包頭的結合和數據的開始處偏移量能夠被32整除;

 

我們前面已經說過有一個TCB的東西了,TCB里有存儲了包括發送方,接收方的套接字,用戶的發送和接收的緩沖區指針等變量。除了這些還有一些變量和發送接收序列號有關:

發送序列變量

SND.UNA - 發送未確認

SND.NXT - 發送下一個

SND.WND - 發送窗口

SND.UP - 發送優先指針

SND.WL1 - 用于最后窗口更新的段序列號

萬企互聯
標簽: