幾個(gè)基本的概念
-
1.TCP/IP協(xié)議族
計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備之間的信息傳輸需要基于相同的方法,不同設(shè)備通信之間的規(guī)則,稱之為協(xié)議,而與互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集合起來(lái)總稱為TCP/IP,也就是說(shuō)TCP/IP是互聯(lián)網(wǎng)相關(guān)的協(xié)議集合;
此外還有說(shuō)法認(rèn)為TCP/IP就是指TCP/IP這兩種協(xié)議,還有一種說(shuō)法認(rèn)為TCP/IP是 在IP協(xié)議的通信過(guò)程中,使用到的協(xié)議族的統(tǒng)稱;
-
-----------2.TCP/IP的分層管理----------------
TCP/IP協(xié)議族按層次分別分為應(yīng)用層,傳輸層,網(wǎng)絡(luò)層以及數(shù)據(jù)鏈路層,稱之為TCP/IP協(xié)議的四層網(wǎng)絡(luò)模型:
-
應(yīng)用層
應(yīng)用層決定了用戶提供應(yīng)用服務(wù)時(shí)通信的活動(dòng);
TCP/IP預(yù)存了各類通用的應(yīng)用服務(wù):
類似FTP(file transfer protocol 文件傳輸協(xié)議) ,DNS(Domain Name System)服務(wù),HTTP協(xié)議等等;
-
傳輸層
傳輸層對(duì)上層應(yīng)用層,提供處于網(wǎng)絡(luò)連接中的兩臺(tái)的計(jì)算機(jī)之間的數(shù)據(jù)傳輸.
個(gè)人理解傳輸層主要是提供各種控制,操作從應(yīng)用層傳輸過(guò)來(lái)的數(shù)據(jù)的協(xié)議;
有兩個(gè)協(xié)議TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Data Protocol ,用戶數(shù)據(jù)報(bào)協(xié)議)
-
網(wǎng)絡(luò)層(網(wǎng)絡(luò)互連層)
網(wǎng)絡(luò)層用來(lái)處理在網(wǎng)絡(luò)上流動(dòng)的數(shù)據(jù)包,數(shù)據(jù)包是網(wǎng)絡(luò)傳輸?shù)淖钚?shù)據(jù)單位.該層規(guī)定了通過(guò)怎樣的路徑/傳輸路線到達(dá)對(duì)方的計(jì)算機(jī),并把數(shù)據(jù)包傳送給對(duì)方.
與對(duì)方的計(jì)算機(jī)之間通過(guò)多態(tài)計(jì)算機(jī)或網(wǎng)絡(luò)設(shè)備進(jìn)行傳輸時(shí),網(wǎng)絡(luò)層所起的作用就是在眾多的選項(xiàng)中選擇一條作為傳輸路線;
-
數(shù)據(jù)鏈路層(又稱為鏈路層,網(wǎng)絡(luò)接口層)
用來(lái)處理連接網(wǎng)絡(luò)的硬件部分.包括控制操作系統(tǒng),硬件的設(shè)備驅(qū)動(dòng),NIC(Network Interface Card,網(wǎng)絡(luò)適配器,即網(wǎng)卡),及光纖等物理可見(jiàn)部分(還包括連接器等一切傳輸媒介).硬件上的范疇都在數(shù)據(jù)鏈路層的作用范圍內(nèi).
-
-------------3.TCP/IP的通信流-----------------
在利用TCP/IP進(jìn)行網(wǎng)絡(luò)通信的時(shí)候,會(huì)通過(guò)分層的順序與對(duì)方進(jìn)行通信.發(fā)送端會(huì)從應(yīng)用層往下走,而接收端則從應(yīng)用層往上走;

如上圖所示:
作為發(fā)送端的客戶端在應(yīng)用層按照HTTP協(xié)議的規(guī)定發(fā)送一個(gè)想要看某個(gè)web頁(yè)面的HTTP請(qǐng)求;
在傳輸層按照TCP(傳輸控制協(xié)議)的規(guī)定,把從應(yīng)用層接收到的數(shù)據(jù)(HTTP請(qǐng)求報(bào)文)進(jìn)行分割,并在各個(gè)報(bào)文上打上標(biāo)記序號(hào)及端口號(hào)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)層;
在網(wǎng)絡(luò)層按照IP協(xié)議的規(guī)定,增加作為通信目的地的MAC地址后轉(zhuǎn)發(fā)給鏈路層;
鏈路層實(shí)質(zhì)上是硬件上的連接,通過(guò)各種硬件設(shè)備實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的交換;
接收端的服務(wù)器在鏈路層接收到數(shù)據(jù),按順序向上層發(fā)送,一直發(fā)送至應(yīng)用層,當(dāng)傳輸至服務(wù)器端應(yīng)用層,才算真正的接收到了客戶端發(fā)送過(guò)來(lái)的HTTP請(qǐng)求;
-
---------4.IP,TCP,和DNS--------------------
-
負(fù)責(zé)傳輸?shù)腎P協(xié)議
IP協(xié)議(Internet Protocol,網(wǎng)際協(xié)議)位于網(wǎng)絡(luò)層,其作用是搜索服務(wù)器端的地址,而為了準(zhǔn)確無(wú)誤的傳輸,則需要滿足各種條件;其中最重要的兩個(gè)條件則是IP地址和MAC地址,
- IP地址指明了節(jié)點(diǎn)的分配位置;
- MAC地址則是網(wǎng)卡的所屬的固定地址;
注意: IP地址是可以變換的,但是MAC地址則是網(wǎng)卡的固定地址,是無(wú)法變換的;
地址傳輸協(xié)議維基解釋
當(dāng)在同一局域網(wǎng)的一臺(tái)主機(jī)希望和另一臺(tái)主機(jī)直接通信的時(shí)候,這時(shí)候必須知道目的主機(jī)的MAC地址是什么?因此這時(shí)候需要ARP(Address Resolution Protocol)來(lái)將目的主機(jī)的IP地址轉(zhuǎn)換為MAC地址.
但是當(dāng)發(fā)送主機(jī)和目的主機(jī)不在同一個(gè)局域網(wǎng)的時(shí)候,這個(gè)時(shí)候即使知道目的主機(jī)的MAC地址,也無(wú)法直接發(fā)送過(guò)去,所以在這種情況下,發(fā)送主機(jī)通過(guò)ARP協(xié)議獲取的MAC地址獲取的將不是目的主機(jī)的真實(shí)目的地址,而是一臺(tái)可以通向局域網(wǎng)外部的路由器的地址,當(dāng)數(shù)據(jù)幀發(fā)送至這臺(tái)路由器中轉(zhuǎn)直至找到目的主機(jī);
-
確保可靠性的TCP協(xié)議
TCP協(xié)議位于傳輸層,,提供字節(jié)流(Byte Stream Service)服務(wù).
所謂字節(jié)流服務(wù),是指將大數(shù)據(jù)分割為報(bào)文段(segment)的數(shù)據(jù)包進(jìn)行管理;
TCP協(xié)議通過(guò)三次握手策略(acknowledgement)來(lái)確保數(shù)據(jù)包能夠準(zhǔn)確的到達(dá)目標(biāo)位置;
-
負(fù)責(zé)域名解析的DNS服務(wù)
DNS(Domain Name System)服務(wù)是和HTTP協(xié)議一樣位于應(yīng)用層,提供域名到IP地址之間的解析服務(wù);通過(guò)DNS服務(wù)可以實(shí)現(xiàn):
通過(guò)域名查找iP地址;
通過(guò)IP地址反查域名;
-
-----------5.各種協(xié)議與HTTP協(xié)議間的關(guān)系圖------------------;

在這里要注意的是:
- 最后網(wǎng)絡(luò)層與數(shù)據(jù)鏈路層的搜尋目標(biāo)服務(wù)器端的地址的操作時(shí)同時(shí)發(fā)生的,并不是搜尋了兩次;
- 客戶端發(fā)出一個(gè)HTTP請(qǐng)求后,會(huì)在客戶端本地的host文件中去找主機(jī)對(duì)應(yīng)的ip地址,如果找不到,則會(huì)通過(guò)公網(wǎng)的DNS服務(wù)來(lái)解析請(qǐng)求的域名,將其轉(zhuǎn)換為ip地址;
- 從服務(wù)器端到客戶端的流程與從客戶端到服務(wù)器端的流程是一致的;
HTTP協(xié)議的基本結(jié)構(gòu)
HTTP協(xié)議(Hypertext Transer Protocal ,超文本傳輸協(xié)議),同TCP/IP協(xié)議族的其他協(xié)議主要用于客戶端到服務(wù)器端的通信;
-
----------------1.HTTP請(qǐng)求報(bào)文--------------------
HTTP的請(qǐng)求報(bào)文主要由請(qǐng)求方法,請(qǐng)求URI,協(xié)議版本,可選的請(qǐng)求首部字段和內(nèi)容實(shí)體構(gòu)成;
在這里要注意get和post請(qǐng)求方法的區(qū)別在于:
(1)客戶端給服務(wù)器端傳輸數(shù)據(jù)的方式不一樣;
- get方式通過(guò)URL地址欄傳遞數(shù)據(jù);
- post方式通過(guò)表單的方式來(lái)傳遞數(shù)據(jù);
(2)安全性,GET方式在url上傳遞,可以被用戶查看到,而post通過(guò)表單提交,相對(duì)比GET安全;
(3)傳遞數(shù)據(jù)的大?。籊ET通過(guò)URL地址欄傳遞數(shù)據(jù),數(shù)據(jù)大小受瀏覽器和操作系統(tǒng)的影響,IE瀏覽器只能通過(guò)get傳遞2K左右的數(shù)據(jù);而POST原則上不受限制,但是受服務(wù)器配置的影響,一般服務(wù)器默認(rèn)允許2MB左右數(shù)據(jù),這個(gè)可以自己設(shè)置;
(4)表單默認(rèn)是通過(guò)GET提交到服務(wù)器,可以通過(guò)method屬性設(shè)置提交的方式;
(5)超鏈接默認(rèn)是GET方式請(qǐng)求: