[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


<<:  {DAY 12} NumPy 学习笔记(上)

>>:  DAY 09 Extends, Inhreitance

Day 11 来吧!开始你的第一个广告活动

当你开始想要为你的产品或是服务广告,注册完 Google Ads 後,需要填入你的网站资讯,让我们逐...

C# Expression tree

运算式树 Expression tree Expression tree 是一个树状结构的物件, 这...

Day14: Inspector简介

What is Inspector? Amazon Inspector 安全评估可协助您检查 Ama...

Day 10 | 嵌套元件(一)

嵌套元件(Nesting Components),在 Vue.js 中是很普遍的用法,可以在父元件赋...

【前端效能优化】图片懒加载 Lazy Load

图片缓载入是为了避免第一次进到网页载入大量图片,造成网页载入速度太慢,因此非第一个画面看到的图片,可...