面向連線和無連線的通訊端到底有什麼區別?

2020-07-16 10:04:42
上一節《通訊端有哪些型別》提到,流格式通訊端(Stream Sockets)就是“面向連線的通訊端”,它基於 TCP 協定;資料包格式通訊端(Datagram Sockets)就是“無連線的通訊端”,它基於 UDP 協定。

這給大家造成一種印象,面向連線就是可靠的通訊,無連線就是不可靠的通訊,實際情況是這樣嗎?

另外,不管是哪種資料傳輸方式,都得通過整個 Internet 網路的物理線路將資料傳輸過去,從這個層面理解,所有的 socket 都是有物理連線的呀,為什麼還有無連線的 socket 呢?

本節就來給大家解開種種謎團,加深大家對資料傳輸方式的認識。

從字面上理解,面向連線好像有一條管道,它連線傳送端和接收端,封包都通過這條管道來傳輸。當然,兩台計算機在通訊之前必須先搭建好管道。

無連線好像沒頭蒼蠅亂撞,封包從傳送端到接收端並沒有固定的線路,愛怎麼走就怎麼走,只要能到達就行。每個封包都比較自私,不和別人分享自己的線路,但是,大家最終都能殊途同歸,到達接收端。

這樣理解沒錯,但是我相信這還不夠深入,大家還是感覺雲裡霧裡,沒有看到本質。好,接下來就是見證奇蹟的時刻,我會用範例給大家演示!

一個簡化的互聯網模型