ADVERTISEMENT
上一篇我們預告讀者,接下來將會介紹現今網路最重要的架構:TCP/IP,TCP/IP從ARPANet後期發展以來,直至今日仍是網路主要使用的架構,如果你今天要設計能夠連到網路上的產品,支援TCP/IP就對了。
分層的意義
在正式進入主題之前,先來了解為何網路使用分層結構,而非從頭到腳一手全包的設計。由於網路需考量許多實際應用上的困難,如傳輸不同種類的資訊、不同版本以及作業系統的交流需求,甚至牽扯到更廣大的範圍,如遠距微波傳送、跨洲海底電纜等不同傳輸媒介。如果要設計能夠包山包海、全部通吃的網路架構是件吃力不討好的事,況且也無法預測未來會出現什麼需求,於是需要個具有彈性的網路架構,還要能夠兼顧未來發展。
▲網路模型的4層架構,工作彼此獨立卻又需要它層的協助。
▲資料經過網路模型的處理方式,先將傳送端的資料一層層打包完畢之後,送到網路上傳送。接收端接受到東西之後,再依相反順序拆開。
網路架構模型分為4層,也就是經常聽到的DoD(Department of Defense)或是TCP/IP模型,如附圖所示,最上層為應用層(Application Layer),接下來依據為傳輸層(Transport Layer)、網路層(Internet Layer)、鏈結層(Link Layer)。這4層分工需要相互合作,卻又彼此獨立,好比寄信一般,需要郵局處理郵件,道路和交通工具負責運送,信才可送達目的地,但是你卻不用管郵局如何經營、交通工具如何設計、道路怎麼鋪設才會平坦又耐用。
將網路架構分層出來,便加入了許多可能性,只要符合這個網路模型,各層如何處理資訊的方式就各自獨立,不受其它外在條件的限制。舉個小小例子,筆電能夠透過有線和無線方式連上網路,但是這2種傳輸介質所看到的網頁有所差異嗎?應該不會發生有線介面看到Dream Girls,換成無線介面就變閃亮三姊妹這種情形。同時,分層模型所具備的向後相容性也可以在無線傳輸規格上看到,從現今的802.11 a/b/g/n,到未來的802.11 ac/ad,均能夠傳送網頁資料,讀者應該也沒有聽過換個傳輸規格,網頁就要重寫這種荒唐事。
在實際傳送資料時,資料的路徑也是由上至下傳送,最後包成一包貨物交給網路中稱為路由器(router)或是閘道器(gateway)的機器傳送;到達目的地之後,再由下而上,層層拆開。
對於這2台相互交流的電腦來說,只有最原始的那份資料才是最重要的,猶如寄送包裹,裡面所攜帶的東西才是我們最關心的,氣泡紙或是外箱、地址,僅是確保東西正確送達目的地的手段。接下來將逐層介紹這個網路模型,了解各層到底在做什麼事。
其它的網路模型
部分讀者或許在其它地方看過不同名稱、不同層級的網路模型,本文採用RFC 1122中定義的模型。如果讀者有意了解其它的網路模型,請至英文版維基百科,搜尋「Internet protocol suite」。
應用層(Application Layer)
網路模型的最上層,也是想要利用網路傳輸資料的程式,能夠直接碰觸到的層級。無論是收發郵件的POP3/SMTP/IMAP、或是網頁傳送標準HTTP、檔案傳輸協定FTP、現代網路不可或缺的網域/位址轉換伺服器DNS,還是近年興起的BitTorrent P2P(peer to peer)傳輸協定,均屬於這層的管轄範圍。
這層直接對應用程式開放,提供不同程式同一類型的服務,譬如你可以使用你所喜歡的程式開啟網頁,也可以使用Outlook或Thunderbird收發郵件。各種不同的應用層協定,會為該協定提供的服務提供必要的處理機制。同時也因為服務眾多,在這層的協定數量為4層之冠,光是想看個網頁,就可能有3種協定參與其中,包含取得私有IP的DHCP、網域與位址轉換的DNS、以及取得網頁資料的HTTP。
傳輸層(Transport Layer)
資料經過了應用層之後,下一層便是傳輸層,此層對應用層傳送過來的資料進行處理,建立2台電腦之間可靠的傳輸。在此層常見的2種協定為TCP與UDP,絕大多數應用層協定都會選擇TCP,因為TCP提供一連串偵錯、重送、資料順序、流量控管等實作,確保2台電腦之間的連線正常,不會產生投桃報李的狀況。
相較於TCP提供連線的可靠性,UDP則專注於資料的傳遞,從TCP(傳輸控制協定、Transmission Control Protocol)與UDP(使用者資料電報協定:User Datagram Protocol)的名稱可看出端倪,UDP幾乎不管資料是否正確送達,需要應用層自行處理。
但別認為UDP就是項垃圾,像是DNS查詢、DHCP請求與配發都是使用UDP協定,另外像是部分影音串流服務,講求大量且迅速的資料傳遞,偶爾丟掉資料不會造成太大影響(因為最終觀賞或聆聽的終端是人,不易察覺畫面或聲音細微的缺陷);即時通訊也是UDP的愛好者,因為人與人的溝通具時間性,上一句話漏掉的資訊,下一句話再傳來並沒有意義。除了上列2種常見的協定之外,前往中國旅遊出差,好用的翻牆方式PPTP,也住在這層喔。
TCP的三方交握
為了讓讀者有感體會TCP在建立穩定連線的努力,先偷渡TCP建立連線時的三方交握原理。當客戶端想向伺服器建立連線時,會先發出SYN資訊,接著伺服器回應SYN-ACK資訊,客戶端接受到之後,再回應ACK,此時客戶端和伺服器的連線就算是建立完畢,可以開始傳送資料了。
UDP則不進行此類手續,直接往對方送,途中就像是飛鴿傳書,小鳥變成焦仔巴也沒人知道。
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!