本篇將簡單介紹 TCP 與 UDP,藉由介紹兩者的差異,來解釋為何 TCP 為什麼會比較耗時間,然而如何有效利用時間也是爬蟲程式規劃的重點之一。之後也會在實戰篇將會講解如何規劃,來避免耗費太多時間在連線上。
引用自維基百科:
傳輸控制協定(英語:Transmission Control Protocol,縮寫:TCP)是一種連接導向的、可靠的、基於位元組流的傳輸層通信協定。
連接導向:
發送端:像是瀏覽器、爬蟲程式等。
接收端:我們要連線的目標網站。
TCP在發送資料前,發送端會與接收端進行三方交握
的動作,來確認已經與接收端連上線。
什麼是三方交握
?
連接請求
連接請求
之後便會回傳確認信號
給發送端
確認信號
後,便會再發送訊息給接收端說:我確認你的確認訊號了,我要發送資料給你囉!
可靠的:
TCP 會為每個封包分配一個唯一的
識別碼與序號,讓接收端在接收時,能夠確保封包的完整性及順序。當接收端收到封包後,如果順序正確,會向發送端傳送一個確認信號
,以此確認接收端已經收到封包。反之,如果封包遺失或順序錯誤,接收端則不會發送確認信號
,而發送端需要重新傳送。
我們可以發現到,由於 TCP 要做的事情真的是太多了(相較於 UDP 而言),所以發送端與接收端在溝通時是非常耗費時間的。
我們平常使用瀏覽器瀏覽的網站,基本上都是使用 TCP 協定來做溝通,因為 TCP 的可靠性,才能讓發送端知道連線的狀態結果。
以上就是 TCP 與 UDP 的簡單介紹!
[1] Wiki - TCP
[2] Wiki - UDP