什么是TCP?什么是TCP協議?


一、什么是TCP

  >>>TCP是一種傳輸控制協議,是面向連接的、可靠的、基於字節流之間的傳輸層通信協議

  >>>在因特網協議族里面,TCP層是在IP層上面,應用層下面的一個中間層。不同主機的應用層之間經常會要用到可靠的、像管道一樣的連接,但是IP層不會提供這樣的流機制,而是提供不可靠的包交換。

  對TCP的擴展

  >>>當應用層向TCP層發送用於網間傳輸的、用8位字節表示的數據流,TCP則把數據流分割成適當長度的報文段,最大傳輸段大小(MSS)通常受該計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)限制。之后TCP把數據包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。

  >>>TCP為了保證報文傳輸的可靠,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據(假設丟失了)將會被重傳。

二、TCP協議

  》》》TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接(連接導向)的、可靠的、 基於IP的傳輸層協議。TCP在IP報文的協議號是6。TCP是一個超級麻煩的協議,而它又是互聯網的基礎,也是每個程序員必備的基本功。

我們知道TCP工作在網絡OSI的七層模型中的第四層——Transport層,i也就是傳輸層,IP在第三層——Network(網絡層)層,ARP 在第二層——Data Link(數據鏈路)層, 同時,數據從應用層發下來,會在每一層都會加上頭部信息,進行 封裝,然后再發送到數據接收端。每個數據都會經過數據的封裝和解封 裝的過程。 在OSI七層模型中,每一層的作用和對應的協議如下:

下面的圖片詳細解釋了TCP頭部信息格式以及他們各自的作用:

  》》》Source Port和Destination Port:分別占用16位,表示源端口號和目的端口號;用於區別主機中的不同進程, 而IP地址是用來區分不同的主機的,源端口號和目的端口號配合上IP首部中的源IP地址和目的IP地址就能唯一 的確定一個TCP連接;

  》》》Sequence Number:用來標識從TCP發端向TCP收端發送的數據字節流,它表示在這個報文段中的的第一個數據 字節在數據流中的序號;主要用來解決網絡報亂序的問題;

  》》》Acknowledgment Number:32位確認序列號包含發送確認的一端所期望收到的下一個序號,因此,確認序號應 當是上次已成功收到數據字節序號加1。不過,只有當標志位中的ACK標志(下面介紹)為1時該確認序列號的字 段才有效。主要用來解決不丟包的問題;

  》》》Offset:給出首部中32 bit字的數目,需要這個值是因為任選字段的長度是可變的。這個字段占4bit(最多能 表示15個32bit的的字,即4*15=60個字節的首部長度),因此TCP最多有60字節的首部。然而,沒有任選字段, 正常的長度是20字節;

  》》》TCP Flags:TCP首部中有6個標志比特,它們中的多個可同時被設置為1,主要是用於操控TCP的狀態機的,依次 為URG,ACK,PSH,RST,SYN,FIN。每個標志位的意思如下:

     1.URG:此標志表示TCP包的緊急指針域(后面馬上就要說到)有效,用來保證TCP連接不被中斷,並且督促 中間層設備要盡快處理這些數據;

     2.ACK:此標志表示應答域有效,就是說前面所說的TCP應答號將會包含在TCP數據包中;有兩個取值:0和1, 為1的時候表示應答域有效,反之為0;

     3.PSH:這個標志位表示Push操作。所謂Push操作就是指在數據包到達接收端以后,立即傳送給應用程序, 而不是在緩沖區中排隊;

     4.RST:這個標志表示連接復位請求。用來復位那些產生錯誤的連接,也被用來拒絕錯誤和非法的數據包;

     5.SYN:表示同步序號,用來建立連接。SYN標志位和ACK標志位搭配使用,當連接請求的時候,SYN=1, ACK=0;連接被響應的時候,SYN=1,ACK=1;這個標志的數據包經常被用來進行端口掃描。掃描者發送 一個只有SYN的數據包,如果對方主機響應了一個數據包回來 ,就表明這台主機存在這個端口;但是由於這 種掃描方式只是進行TCP三次握手的第一次握手,因此這種掃描的成功表示被掃描的機器不很安全,一台安全 的主機將會強制要求一個連接嚴格的進行TCP的三次握手;

     6.FIN: 表示發送端已經達到數據末尾,也就是說雙方的數據傳送完成,沒有數據可以傳送了,發送FIN標志 位的TCP數據包后,連接將被斷開。這個標志的數據包也經常被用於進行端口掃描。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM