傳輸層TCP/UDP協議

  1. 可靠的TCP協議(傳輸層)

    1)  TCP封包結構如下圖:

wKioL1THvgfwNzMkAAFAfK8lEzc057.jpg

    各字段的含義爲:

    封包序號:記錄每個封包的序號,當TCP封包大於IP封包的長度時,TCP封包就需要拆分成更小的包,來下發給網絡層,通過該字段可以讓接收端重新將TCP數據組合起來。

    迴應序號:回傳給客戶端的響應碼,當客戶端收到這個確認碼時,就能夠確定之前傳遞的封包已經被正確的收下了。

    資料補償:由於Options字段是任意的,爲了確認整個封包的大小,就用這個字段來說明整個封包區段的起始位置。

    保留:保留字段,還未被使用。

    控制標誌碼:用來說明聯機的狀態,以讓接收端了解這個封包的主要動作,這個字段共六位,代表六個句柄,若爲1則表示啓動,每位含義分別爲:

       URGUrgent:若爲1表示該封包爲緊急封包,接收端應該緊急處理,且Urgen Pointer字段也會被啓用。

       ACKAcknowledge:若爲1表示這個封包爲響應封包

       PSHPush function:若爲1,代表要求對方立即傳送緩衝區內的其他對應封包,而無需等待緩衝區滿了才送。

       RSTReset:若爲1,表示聯機會馬上結束,而無需等待終止確認手續。也就是說,這是個強制結束的聯機,且發送端已斷線。

       SYNSynchronous:若爲1,表示發送端希望雙方建立同步處理,也就是要求建立聯機。通常帶有SYN標識的封包表示主動要連接到對方的意思。

       FINFinish:若爲1,表示傳送結束,所以通知對方數據傳畢,是否同意斷線,只是發送者還在等待對方的響應而已。

    Window(滑動窗口):主要用來控制封包的流量的,可以告知對方目前本身有的緩衝器容量(Receive Buffer)還可以接受封包。當Window=0時,代表緩衝器已經滿額,所以應該暫停傳輸數據。Window的單位是Bytes

    確認檢查碼:當數據有發送端送出前,會進行一個檢驗的動作,並將該動作的檢驗值標註在這個字段上;而接受者收到這個封包之後,會再次對封包進行驗證,並且比對原發送的Checksum值是否相符,如果相符就接受,若不符就會假設該封包已經損毀,進而要求對方重新發送。

    緊急資料:告知緊急數據所在的位置。

    任意選項:表示接收端可以接收的最大數據區段容量,若此字段不使用,表示可以使用任意數據區段的大小。這個字段較少使用。

    補足字段:將表頭長度補齊爲固定的長度。

    2)  端口號的最大值爲65535216次方減1),端口號小於1024的端口只用root身份才能啓動對應的服務,因此叫做特權端口。常用的端口與服務如下:

    20FTP-data,文件傳輸協議所使用的主動數據傳輸端口。

    21FTP,文件傳輸協議的命令通道

    22ssh,較爲安全的遠程聯機服務器

    23Telnet,早期的遠程機器服務軟件

    25SMTP,簡單郵件傳遞協議,用在作爲mail server的端口

    53DNS,用在作爲域名解析的服務器端口

    80www服務器

    110POP3,郵件收信協議

    443https,有安全加密機制的www服務器

3)  TCP三次握手,如下圖所示:

wKiom1THvSrTHhu1AAESIkfKMxk033.jpg

    過程詳解:

    a)  A封包發起,當客戶端想要對服務器端聯機時,就必須要送出一個要求聯機的封包,此時客戶端必須隨機取用一個大於1024以上的端口來作爲程序溝通接口。然後再TCP的表頭當中,必須要帶有SYN的主動聯機(SYN=1),並且記下發送出聯機封包給服務器端的序號(sequence number=10001

    b)  B:封包接受與確認封包傳送,當服務器接到這個封包,並且確定要接受這個封包後,就會開始製作一個同時帶有SYN=1ACK=2的封包其中那個Acknowledge的號碼是要給client端確認用的,所以該數字會比(a)裏面的sequence number多一號(ack=10001+1=10002),那我們服務器也必須要確認客戶端確實可以接收我們的封包才行,所以會發出一個Sequenceseq=20001),並且開始等待客戶端給我們服務器的響應。

    c)  C:會送確認包當客戶端收到來自服務端的ACK數字後(10002)就能確認之前那個要求封包被正確的收受了,接下來如果客戶端也同意羽服務端建立聯機時,就會再次的發送一個確認封包(ACK=1)給服務器,亦即是Acknowledge=20001+1=2002.

    d)  D:取得最後的確認,若一切都順利,在服務器端接收到帶有ACK=1ack=20002序號封包後,就能夠建立起這次的聯機了。

2.非連接的UDP協議

    1)  UDPUser Datagram Protocol,用戶數據流協議),非面向連接的協議,即在UDP的傳輸過程中,接受端在接受到封包之後,不會響應封包(ACK)給發送端,所以封包並沒有像TCP封包有較爲嚴格的檢查機制。

    2)  UDP封包結構圖爲:

    wKiom1THvSahHmQFAABft1un6b4414.jpg

    3)  UDP數據傳輸特點:不可靠,但速度快,多用於實時性要求較高,但正確率不是很高的數據傳輸方式,如視頻傳輸。

3.網絡防火牆與OSI七層協議

    1)  防火牆的原理:防火牆軟件對封包的表頭進行分析,並且設定分析規則,當發現某些特定的IP,特定的端口或者特定的封包信息(SYN/ACK等),就將該封包丟棄,這就是防火牆的原理。

    2)  OSI七層中,每層抵擋的數據有:

    第二層:可以針對來源與目標的MAC進行抵擋

    第三層:主要針對來源與目標的IP,以及ICMP的類別(type)進行抵擋

    第四層:針對TCPUDP的端口進行抵擋,也可以針對TCP的狀態(code)來進行抵擋。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章