1. 程式人生 > 其它 >HCIA - Datacom - 2.常用網路基礎知識

HCIA - Datacom - 2.常用網路基礎知識

一、TCP和UDP

  1、報文格式

  

  2、TCP報文頭部

     Source Port:源埠,標識哪個應用程式傳送,長度為16bit;

     Destination Port:目的埠,標識哪個應用程式接收,長度為16bit;

     Sequence Number:序號欄位,TCP連線中傳輸的資料流每個位元組都編上一個序號。序號欄位的值指的是本報文段所傳送資料的第一個位元組的序號。長度為32bit;

     Acknowledgment Number:確認序列號,是期望收到對方下一個報文段資料的第1個位元組的序號,即上次已成功接收到的資料段的最後一個位元組資料的序號加1,只有Ack標識未1,此欄位有效,長度為32bit;

     Header Length:頭部長度,指出TCP報文頭部長度,以32bit(4位元組)為計算單位,若無選項內容,則該欄位為5,即頭部為20位元組;

     Reserved:保留,必須填0,長度為6bit;

     Control bits:控制位,包含FIN、ACK、SYN等標誌位,代表不同狀態下的TCP資料段;

     Windows:視窗TCP的流量控制,這個值表明當前接收端可接受的最大的資料總數(以位元組為單位)。視窗最大為65535位元組,長度為16bit;

     Checksum:校驗欄位,是一個強制性的欄位,由發端計算和儲存,並由收端進行驗證,在計算校驗和時,要包括TCP頭部和TCP資料,同時在TCP報文段的前面加上12位元組的偽頭部,長度為16bit;

     Urgent:緊急指標,只有當URG標誌置1時緊急指標才有效。TCP的緊急方式是傳送端向另一端傳送緊急資料的一種方式。緊急指標指出在本報文段中緊急資料共有多少個位元組(緊急資料防災本報文段資料的最前面),長度為16bit;

     Options:選項欄位(可選),長度為0-40位元組;

  3、UDP報文頭部(共8位元組)

     Source Port:源埠,標識哪個應用程式傳送,長度為16bit;

     Destination Port:目的埠,標識哪個應用程式接收,長度為16bit;

     Length:該欄位指定UDP報頭和資料總共佔用的長度,可能的最小長度是8位元組,因為UDP報頭已經佔用了8位元組,由於這個欄位的存在,UDP報文總長不可能超過65535位元組(包括8位元組的報頭,和65527位元組的資料);

     Checksum:覆蓋UDP頭部和UDP資料的校驗和,長度為16bit。

  4、TCP和UDP - 埠號

 

 二、TCP的建立 - 三次握手

  

 

     TCP連線建立的詳細過程如下:

      (1)由TCP連線發起方(PC1),傳送第一個SYN位置1的TCP報文,初始序列號a為一個隨機生成的數    字,因為沒收到過來自PC2的任何報文,所以確認序列號為0;

      (2)接收方(PC2)接收到合法的SYN報文之後,回覆一個SYN和ACK置1的TCP報文,初始序列號b為一個    隨機生成的數字,同時因為此報文是回覆給PC1的報文,所以確認序列號為a+1;

      (3)PC1接收到PC2傳送的SYN和ACK置位的TCP報文後,回覆一個ACK置位的報文,此時序列號為a+1,確    認序列號為b+1,PC2收到之後,TCP雙向連線建立。

三、TCP的序列號與確認序列號

  

  假設PC1要給PC2傳送一段資料,傳輸過程如下:

  (1)PC1將全部待TCP傳送的資料按照位元組為單位編上號,假設第一個位元組的編號為“a+1”,第二個位元組的序號為“a+2”,依次類推。

  (2)PC1會把每一段資料的第一個位元組的編號作為序列號(Sequence number),然後將TCP報文傳送出去。

  (3)PC2在收到PC1傳送來的TCP報文後,需要給予確認同時請求下一段資料,如何確定下一段資料呢?序列號(a+1)+載荷長度=下一段資料的第一個位元組的序號(a+1+12)。

  (4)PC1在收到PC2傳送的TCP報文之後,發現確認序列號為“a+1+12”,說明“a+1”到“a+12”這一段資料已經被接受,需要從“a+1+12”開始傳送。

  為了提升傳送效率,也可以一次性發送多端資料,由接收方統一確認。