今天從應用層級協定往下鑽研來到傳輸層級協定
其主要存在意義聚焦在提供可信賴的資料傳輸方式
可以把昨天的應用層級想成生物的器官,每個協定就是某個特殊功能的器官
傳輸協定就像是激素的傳遞,管的是如何從分泌的地方精準地傳到需要的地方
我只會介紹兩個主要的傳輸協定:TCP和UDP
TCP(Transmission Control Protocol),提供一個相當可信賴的封包傳輸技術
TCP會確保你傳送的封包已抵達目地、確保資料以正確的順序抵達、以及確保資料沒有遭到污染
把TCP本身拆開來看相當複雜,雙方之間溝通的機制也設計地非常巧妙
過度簡化地來說,TCP藉由新增一串位元表頭在封包上,並在一切問題發生的時候叫寄送者重新寄送資料
TCP可以有效地完成
在傳輸資料前,TCP會透過三向交握方式,有禮貌地先與對方聯繫,確保對方有在聆聽後,才開始寄送資料
在TCP的表頭中,除了有寄送者與收件者的網路插座(明天會講,就是他們的IP位置與窗口),還有一個叫旗子(flag)的資訊
一共有六種旗子,分別表示目前的TCP協定進行到什麼階段
例如網頁瀏覽,客戶端可以在最後一階段夾帶HTTP請求的資訊,與ACK一起寄出
當伺服器收到第一步的SYN時,他將保持聆聽階段,為該窗口預留一個半開放的連結,預期待會會有資料進入
如果太多的SYN進來,半開放的連結太多,是有可能讓伺服器沒有餘留的資源開放新的窗口做新的連結
讓其他想要與伺服器對話的用戶無法連結
這個攻擊稱作DoS(Denial of service)
如果只有單一一台機器使用單一IP地址,不斷發送過多的TCP請求,伺服器可以設立機制屏蔽該擾亂的IP
不過,如果使用不同的機器,利用大量IP地址對伺服器發送請求,想要防止DoS的攻擊就會比較有挑戰性
因為動用了大量機器,這種攻擊又稱作DDoS(distributed denial of service)
User Datagram Protocol,基本上跟TCP功能類似,同樣也是協助封包傳輸的協定
他設計較為輕量,不需耗費過多資源計算,不過也因此不能保證封包能夠順利抵達目的
TCP就像是高級快遞,能夠保證貨品順利安全抵達,所需的手續也比較複雜,價格昂貴;
UDP就像是廉價包裹服務,貨物可能寄送到途中遺失,不過價格較為便宜
除了更輕量的表頭之外,UDP沒有流量控制與擁塞控制,無法限制寄件者寄送的速度
因此UDP在一些講求快速傳輸、即使一些封包在傳輸過程中遺失也不影響功能的視訊、串流服務上比TCP更為適合