-- 作者 謝恩銘 轉載請註明出處
《Web探索之旅》全系列
第三部分第三課:協議
之前的課 Web探索之旅 | 第三部分第二課:IP地址和域名 中,我們學習了Client-Server模型的客戶端語言和伺服器語言。
客戶端語言有HTML,CSS和JavaScript。
伺服器語言有PHP,Java,Python,Ruby,C#,還有新興的Go語言(Google推出的很強大的程式語言)。
不過,要使得Web中這麼多機器之間能夠相互通訊,例如 客戶機A對伺服器E說:“你好,請傳送baidu.com這個網頁給我”,是不能借助客戶端或伺服器語言的。這些語言只能為我們的網頁服務。
那Web種的各個機器之間如何對話呢?
打個比方,電腦A對電腦B說:“您叫什麼名字?”(電腦A說中文),電腦B回答:“I beg your pardon?”(電腦B說英語,這句話的意思是“您說什麼?”),那麼這兩臺電腦因為語言不通,將會無法交流。
同樣的,Web中的各個機器,需要講同一種語言,才能相互交流。
因此,IT科學家們發明了稱為“協議”(Protocol)的通訊規範。Web中的機器只要遵循同樣協議,就可以相互交流。
協議有好多種,我們不一一列舉了。我們只說說常用的一些協議,見下圖:
TCP和UDP協議
TCP/IP協議可以說是Web領域最重要的底層協議了。
TCP協議
TCP是Transmission Control Protocol(傳輸控制協議)的簡稱。
TCP是一個端到端(Peer-to-Peer)的傳輸層協議,處於應用層和網路層之間。在資料傳輸之前,由TCP模組在執行於不同主機上的兩個應用程式之間建立直接連線,通常稱為虛擬連線,其後的TCP報文在此連線的基礎上進行傳輸。TCP協議在IP協議提供的服務基礎上,提供面向連線的、可靠的、全雙工的資料流傳輸服務。所以合稱TCP/IP協議。
IP協議(Internet Protocol,網際網路協議或網際協議)是TCP/IP的心臟,也是網路層中最重要的協議。 IP層接收由更低層(網路介面層例如乙太網裝置驅動程式)發來的資料包,並把該資料包傳送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的資料包傳送到更低層。
Vint Cerf,被稱為“網際網路之父”,譯作 溫特·瑟夫。主要貢獻:與Robert Kahn一道領導TCP/IP協議的研發小組,為 ARPANET 成功開發了主機協議, 使ARPANET成為第一個大規模的資料包網路。
UDP協議
UDP是User Datagram Protocol(使用者資料包協議)的簡稱。是OSI參考模型中一種無連線的傳輸層協議,它主要用於不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應用層完成,提供面向事務的簡單不可靠資訊傳送服務。
HTTP,HTTPS,FTP和SMTP
HTTP
HTTP是HyperText Transfer Protocol(超文字傳輸協議)的縮寫,所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。我們一般瀏覽網頁,看到的網頁地址都是 http:// 這樣開頭的,後面接域名。例如: www.google.com/
看一個例子,是正常情況下HTTP的交換資訊(返回碼 200 表示成功):
HTTPS
HyperText Transfer Protocol Secure(安全的超文字傳輸協議)的縮寫,比HTTP多加了一層安全防護。我們有時登入一些網站,就可以看到位址列最前面變為了https:// 這樣開頭的的。Https協議在Http協議的基礎上,新增了SSL/TLS握手以及資料加密傳輸,也屬於應用層協議。
FTP協議
File Transfer Protocol(檔案傳輸協議)的縮寫。是一套允許檔案在不同的Internet計算機之間進行交換的規則。它與HTTP不同,後者供網頁瀏覽器請求網頁和相關檔案以顯示某一頁面,FTP只是用來將檔案FTP協議FTP協議從一臺計算機傳送到另一臺。網站開發人員通常使用FTP將網頁從他們自己的計算機傳送到伺服器,FTP也常常用來將程式和檔案從其他伺服器下載到個人計算機。
SMTP協議
Simple Mail Transfer Protocol(簡單郵件傳輸協議)的縮寫。是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議簇,它幫助每臺計算機在傳送或中轉信件時找到下一個目的地。
總結
各種協議(Protocol)規定了Web中的各臺機器如何通訊。
下回預告
微信公眾號「程式設計師聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟體工程師。
我的簡介
我的經歷
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標杆直跑」