與 Web 息息相關的 HTTP 協定建構於 TCP 協定之上,而 TCP 屬於傳輸層的協定,往後文章會稍微提一下 TCP 以及 HTTP ,但是在這之前,我們必須先了解傳輸層是什麼。
如果你學過網路概論的話,應該會知道網路裡面有所謂的分層概念,如果對這方面不熟悉的話,建議您去書店挑本書了解一下這部分的知識,這一系列文章的重點是前端效能優化,因此我並不會多加著墨網路基礎知識的部分,只會講解跟效能優化相關、必須了解的的部分,但是各位大且放心,這一篇文章僅是簡述傳輸層的一些概念而已,或許你閱讀時會有些不解的部分,但不須為此感到焦慮,你只需對於這篇文章提到的概念有個大略的認識即可。
傳輸層裡面有兩個重大協定,其一為 TCP ,另一為 UDP , TCP 會確認每一個封包是否正確抵達目的地,為可靠的通訊協定,然而 UDP 則相反,UDP 講求效率,並不會有確認的動作,意味著 UDP 為不可靠的通訊協定。
port 的用途?
講到傳輸層,一定要知道 port(連接埠)的概念。 我們都知道網路通訊是透過 IP 位址來辨識雙方的,但是今天若只透過 IP 位址通訊的話會產生許多問題,我們舉一個例子說明。
假設今天使用者A的電腦使用的網路之 IP 位址為 192.168.1.1 ,今天他總共開啟了三個瀏覽器程式,分別都連線到同一個網站、同一個頁面,但因為 client 以及 server 兩端能夠用來識別身份的只有 IP 而已,因此當第一個瀏覽器發送 Request 至 server 時,其他的瀏覽器程式便完全不能使用,不然今天 server 傳回 Response 時,到底該傳給哪一個瀏覽器程式呢?這是第一個問題。
另一個問題是,server 通常會提供多種服務(service),而 server 啟動服務時都會向系統取得 IP 位址並且綁在一起,那麼若今天已經啟動了 HTTP 的 service ,之後又要啟動 FTP 的話就會發生錯誤、導致失敗。
這就是為什麼需要 port 的原因。讓我們看看有了 port 之後,上面的例子會變成怎麼樣。
首先使用者A一樣啟動了三個瀏覽器程式:
而 server 啟動了一個 HTTP service 並且將 IP 位址與 port 80 綁在一起。
之後使用者A在他開啟的三個瀏覽器都輸入同樣的 URL 並且按下 Enter ,server 接受到各個 Request 後,便分別發送三個 Response 給同一台電腦,但因為這次有了 port number 的協助,各個 Response 該送到哪一個瀏覽器程式便變得清晰明瞭。
就算今天 server 多提供了 FTP 的 service 也因為有了 port ,而不會發生衝突。
Socket 的概念
上文其實已經提到了 Socket 的概念,也就是網路通訊中透過「IP 位址 + port」識別其對應的程式,「IP 位址 + port」即為所謂的 Socket 。
一個連線封包,必須有以下四個元素:
而這便是所謂的 Socket Pair (來源端 IP 位址 + 來源端 port ,以及目的端 IP 位址 + 目的端 port ,兩者配為一對)。
這就是 Socket 的基本概念。
這一篇簡單介紹了跟傳輸層相關的知識,下一篇開始進入 TCP 協定的部分,我會說明幾個重要的特性以及其運作的細節。
1.叫叫ABC…新版的改成叫叫CAB,急救步驟
網路通訊三要素
A:Address 位置
B:Binding 協定
C:Contact 契約
上面是MS的定義.其他公司或組織可能不同,但概念相同
A:你要有地址,如台北市...,電話0931.....,Email:Pan@...你才有辦法傳過去
B:協定:就是Port就是哪一隻服務對哪個Port服務,如實體信件規定左邊收件地址,有邊寄信地址.Eamil 就 Subject,to,cc,body…
C:契約,你丟求職信,就是要有求職信格式,這樣人家才會處理,你把電信賬單寄給人資部門,人家就是退件
2.Socket 的概念
有點怪~我記得Socket 有包含資料,它是資料封包不是通訊管道...這個讀者可以查一下.我只會用,理論的東西大家Google一下
這部分知識都是我個人看書習得的,因為書本只有這樣草草介紹,所以我也只了解到這種程度。
不過後來 google 以後,發現原本的敘述的確不太恰當,剛剛已經修正文章的內容。
感謝您~