傳輸層上的TCP和UDP

 

參考:html

知乎瀏覽器

傳輸層概述服務器

「三次握手,四次揮手」你真的懂嗎?網絡

傳輸層上的TCP和UDP

TCP/IP協議是一個協議簇。裏面包括不少協議的,UDP只是其中的一個, 之因此命名爲TCP/IP協議,由於TCP、IP協議是兩個很重要的協議,就用他兩命名了。 tcp

傳輸層的主要功能: 爲端到端鏈接提供可靠的傳輸服務,爲端到端鏈接提供流量控制,差錯控制,服務質量等管理服務,具備傳輸層功能的協議:TCP 、SPX 、NetBIOS。spa

TCP定義.net

TCP(Transmission Control Protocol 傳輸控制協議)是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議。htm

UDP定義blog

UDP (User Datagram Protocol 用戶數據報協議)是一種無鏈接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。遊戲

區別:

TCP---傳輸控制協議,提供的是面向鏈接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間創建一個TCP鏈接,以後才能傳輸數據。TCP提供超時重發,丟棄重複數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另外一端。

UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,可是並不能保證它們能到達目的地。因爲UDP在傳輸數據報前不用在客戶和服務器之間創建一個鏈接,且沒有超時重發等機制,故而傳輸速度很快 。

使用場景:

TCP: 瀏覽器,SSH QQ文件傳輸等

UDP:音頻和多媒體應用,QQ聊天,網絡遊戲和直播等

 三次握手,四次揮手

 tcp頭部結構:源端口 16位;目標端口 16位;序列號 32位;迴應序號 32位;TCP頭長度 4位;reserved 6位;控制代碼 6位;口大小 16位;偏移量 16位;校驗和 16位;選項32位(可選);

名詞解釋

一、ACK 是TCP報頭的控制位之一,對數據進行確認。確認由目的端發出, 用它來告訴發送端這個序列號以前的數據段都收到了。 好比確認號爲X,則表示前X-1個數據段都收到了,只有當ACK=1時,確認號纔有效,當ACK=0時,確認號無效,這時會要求重傳數據,保證數據的完整性。

二、SYN 同步序列號,TCP創建鏈接時將這個位置1。

三、FIN 發送端完成發送任務位,當TCP完成數據傳輸須要斷開時,提出斷開鏈接的一方將這位置1。

 

三次握手

第一次握手: 主機A嘗試鏈接服務器B,向服務器B發送含有**同步序列號額度標誌位的數據段(就是 syn包 全稱爲 同步序列標號 Synchronize Sequence Numbers ),syn = j **,而後主機A進入SYN_SEND狀態等待服務器B確認————「A對B說:請求通話?」


第二次握手: 服務器B接收到主機A發送的`syn`包並肯定(ack = j + 1),而後給主機A返回一個數據段:SYN(syn = k)+ACK 包(其中包括同步序列標號syn 和 肯定應答ACK),而後服務器B進入 SYN_RECV 狀態————「B收到A的話,B對A說:你能聽到嗎?」


第三次握手: 主機A接收到 SYN+ACK包,向服務器B發送肯定包ACK(ack = k + 1),此包發送完畢,主機A和服務器B進入ESTABLISHED狀態,完成三次握手————「A聽到B的話,A又對B說:我立刻進入正題!」

3次握手的特色

  • 沒有應用層的數據

  • SYN這個標誌位只有在TCP創建鏈接時纔會被置1

  • 握手完成後SYN標誌位被置0

四次揮手

TCP創建鏈接要進行3次握手,而斷開鏈接要進行4次

第一次: 當主機A完成數據傳輸後,將控制位FIN置1,提出中止TCP鏈接的請求 ;

第二次: 主機B收到FIN後對其做出響應,確認這一方向上的TCP鏈接將關閉,將ACK置1;

第三次: 由B 端再提出反方向的關閉請求,將FIN置1 ;

第四次: 主機A對主機B的請求進行確認,將ACK置1,雙方向的關閉結束.。

由TCP的三次握手和四次斷開能夠看出,TCP使用面向鏈接的通訊方式, 大大提升了數據通訊的可靠性,使發送數據端和接收端在數據正式傳輸前就有了交互, 爲數據正式傳輸打下了可靠的基礎。

相關文章
相關標籤/搜索