? ? ? web使用一種名為HTTP的協(xié)議作為規(guī)范,完成客戶端和服務(wù)器端的通信瞬铸。通常使用的網(wǎng)絡(luò)是在TCP/IP協(xié)議族的基礎(chǔ)上運(yùn)作的批幌。而HTTP屬于它內(nèi)部的一個子集。
? ? ? 計算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信嗓节,雙方就必須基于相同的方法荧缘。比如,如何探測到通信目標(biāo)赦政,由哪一邊先發(fā)起通信胜宇,使用哪種語言進(jìn)行通信,怎樣結(jié)束通信等規(guī)則都需要事先確定恢着。不同的硬件桐愉,操作系統(tǒng)之間的通信,所有的這一切都需要一種規(guī)則掰派。而我們就把這種規(guī)則稱為協(xié)議从诲。像這樣把與互聯(lián)網(wǎng)相關(guān)的協(xié)議集合起來總稱為TCP/IP。
? ? ?TCP/IP協(xié)議族最重要的一點(diǎn)是分層管理靡羡,優(yōu)勢有二:1)改動簡單系洛。若是需要變動赊锚,只需要把變動的層替換即可粮彤;2)設(shè)計簡單。每一層只需要考慮分配給自己的任務(wù),不需要管其他層的工作蜈抓。
? ?TCP/IP協(xié)議族按層次分別分為四層:應(yīng)用層瞎颗,傳輸層监署,網(wǎng)絡(luò)層内列,數(shù)據(jù)鏈路層。下面就簡單描述每一層的作用:
? ? 應(yīng)用層:決定向用戶提供應(yīng)用服務(wù)時通信的活動恩够。比如FTP和DNS就是其中兩類卒落。
? ? 傳輸層:提供處于網(wǎng)絡(luò)連接中的兩臺計算機(jī)之間的數(shù)據(jù)傳輸。包括TCP協(xié)議和UDP協(xié)議蜂桶。
? ? ?網(wǎng)絡(luò)層:用于處理在網(wǎng)絡(luò)上流動的數(shù)據(jù)包儡毕。該層規(guī)定了通過怎樣的路徑,即傳輸路線到達(dá)對方的計算機(jī)扑媚,并把數(shù)據(jù)包發(fā)送給它腰湾。
? ? 鏈路層:用來處理連接網(wǎng)絡(luò)的硬件部分。包括控制操作系統(tǒng)钦购、硬件的設(shè)備驅(qū)動檐盟、網(wǎng)卡,以及光纖等物理可見部分押桃。
? ? 用電路的概念去了解:鏈路層相當(dāng)于電路中的硬件,網(wǎng)絡(luò)層相當(dāng)于電路中的路線导犹,傳輸層類似電壓差唱凯,決定電流流向,最后是應(yīng)用層體現(xiàn)電路的作用谎痢。
? ? ? ? ?利用TCP/IP協(xié)議族進(jìn)行網(wǎng)絡(luò)通信時磕昼,會通過分層順序與對方進(jìn)行溝通。發(fā)送端從應(yīng)用層往下走节猿,接收端則往應(yīng)用層往上走票从。我們用HTTP舉例來說明:
? ? ? 1.作為發(fā)送端的客戶端在應(yīng)用層(HTTP協(xié)議)發(fā)出一個HTTP請求。
? ? ? 2.在傳輸層(TCP協(xié)議)會把從應(yīng)用層收到的數(shù)據(jù)(HTTP請求報文)進(jìn)行分割滨嘱,并在各個報文上打上標(biāo)記序號及端口號后轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層峰鄙。
? ? ?3.在網(wǎng)絡(luò)層(IP協(xié)議),增加作為通信目的地的MAC地址后轉(zhuǎn)發(fā)給鏈路層太雨。通過ARP(Address Resolution Protocol吟榴,地址解析協(xié)議)把IP地址解析成對應(yīng)的MAC地址后轉(zhuǎn)發(fā)給鏈路層。
? ? ?4.接收端的服務(wù)器在鏈路層接收到數(shù)據(jù)囊扳,按序往上層發(fā)送吩翻,一直到應(yīng)用層兜看。當(dāng)傳輸?shù)綉?yīng)用層,才能算真正接收到由客戶端發(fā)送過來的HTTP請求狭瞎。
? ? ? ?發(fā)送端在層與層之間傳輸數(shù)據(jù)時细移,每經(jīng)過一層時必定會被打上一個該層所屬的首部信息。反之熊锭,接收端在層與層傳輸數(shù)據(jù)時葫哗,每經(jīng)過一層時會把對應(yīng)的首部信息去掉。