iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Software Development

Python 爬蟲這樣學,一定是大拇指拉!系列 第 9

[Python 爬蟲這樣學,一定是大拇指拉!] DAY09 - TCP / UDP

本篇將簡單介紹 TCP 與 UDP,藉由介紹兩者的差異,來解釋為何 TCP 為什麼會比較耗時間,然而如何有效利用時間也是爬蟲程式規劃的重點之一。之後也會在實戰篇將會講解如何規劃,來避免耗費太多時間在連線上。

TCP

  • 引用自維基百科:

    傳輸控制協定(英語:Transmission Control Protocol,縮寫:TCP)是一種連接導向的、可靠的、基於位元組流的傳輸層通信協定。

  • 連接導向

    發送端:像是瀏覽器、爬蟲程式等。
    接收端:我們要連線的目標網站。

    TCP在發送資料前,發送端會與接收端進行三方交握的動作,來確認已經與接收端連上線。
    什麼是三方交握
    https://ithelp.ithome.com.tw/upload/images/20210924/20139358O7UUynesEC.png

    1. 發送端接收端發送一個連接請求
    2. 接收端收到連接請求之後便會回傳確認信號發送端
    3. 發送端收到接收端確認信號後,便會再發送訊息給接收端說:我確認你的確認訊號了,我要發送資料給你囉!
  • 可靠的
    TCP 會為每個封包分配一個唯一的識別碼與序號,讓接收端在接收時,能夠確保封包的完整性及順序。當接收端收到封包後,如果順序正確,會向發送端傳送一個確認信號,以此確認接收端已經收到封包。反之,如果封包遺失或順序錯誤,接收端則不會發送確認信號,而發送端需要重新傳送。

UDP

  • UDP(User Datagram Protocol)就簡單了,發送端送出資料後,接收端那邊封包正不正確,有沒有收到"I don't car care",總之收到的話就回我吧,大概是這樣的感覺。
  • 大部分是應用在串流媒體的部分,對封包遺失容忍度較高的服務,像是:線上遊戲、線上影音串流等。這也是為什麼有時候網路連線品質不好的時候,會容易有掉幀(LAG)的情況。

比較

  • 我們可以發現到,由於 TCP 要做的事情真的是太多了(相較於 UDP 而言),所以發送端接收端在溝通時是非常耗費時間的。

  • 我們平常使用瀏覽器瀏覽的網站,基本上都是使用 TCP 協定來做溝通,因為 TCP 的可靠性,才能讓發送端知道連線的狀態結果。

以上就是 TCP 與 UDP 的簡單介紹!

本篇文章參考資料

[1] Wiki - TCP
[2] Wiki - UDP


上一篇
[Python 爬蟲這樣學,一定是大拇指拉!] DAY08 - 關於 Port
下一篇
[Python 爬蟲這樣學,一定是大拇指拉!] DAY10 - HTTP / HTTPS (1)
系列文
Python 爬蟲這樣學,一定是大拇指拉!30

尚未有邦友留言

立即登入留言