| 什么是TCP協(xié)議? 如果要了解一個(gè)人,可以從他歸屬的集體聊起來。我們的HTTP協(xié)議就屬于TCP/IP協(xié)議家族中的一員,了解HTTP協(xié)議再整個(gè)網(wǎng)絡(luò)流程中的地位,也能更加充分的理解HTTP協(xié)議。 要想了解什么是TCP/IP協(xié)議,就要知道為什么有這個(gè)協(xié)議。中國人和中國人說話,要遵循漢語的的語法結(jié)構(gòu),使用漢語的發(fā)音。當(dāng)我們和外國人交流時(shí),就要適用外國的語言了,遵循外國的語法機(jī)構(gòu)和發(fā)音。其實(shí)這就是一種協(xié)議,只不過我們稱之為語言。計(jì)算機(jī)再這方面體現(xiàn)的更為直觀,兩臺(tái)機(jī)器之間該如何通信呢,就需要制定各種各樣的協(xié)議了。例如:文件傳輸適用TCP協(xié)議。域名系統(tǒng)適用DNS協(xié)議。有了些協(xié)議的存在,各種數(shù)據(jù)流按照規(guī)則傳輸,計(jì)算機(jī)之間得意通信。 TCP/IP協(xié)議是一個(gè)協(xié)議集合。大家叫的時(shí)候方便說,所以統(tǒng)稱為TCP/IP。TCP/IP協(xié)議族中有一個(gè)重要的概念是分層,TCP/IP協(xié)議按照層次分為以下四層。應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層。為什么要分層?這就如同鄧小平1978年的大包干,責(zé)任到人。一個(gè)層只負(fù)責(zé)一個(gè)層次的問題,如果出問題了,和其他的層次無關(guān),只要維護(hù)這個(gè)層次也就好了。其實(shí)編程語言里也能體現(xiàn)這個(gè)分層理論,即封轉(zhuǎn)性、隔離。這里不再延伸細(xì)談。 2、HTTP 關(guān)系密切的協(xié)議 : IP、TCP 和 DNS IP協(xié)議:IP(Internet protocol),這里的IP不是值得我們通常所說的192.168.1.1.這個(gè)IP指的是一種協(xié)議,而后面的數(shù)字值得是IP地址。IP協(xié)議的作用在于把各種數(shù)據(jù)包準(zhǔn)確無誤的傳遞給對(duì)方,其中兩個(gè)重要的條件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有資源,不可能每個(gè)人都擁有一個(gè)IP地址,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器里面會(huì)記錄我們的MAC地址。而MAC地址是全球唯一的,除去人為因素外不可能重復(fù)。舉一個(gè)現(xiàn)實(shí)生活中的例子,IP地址就如同是我們居住小區(qū)的地址,而MAC地址就是我們住的那棟樓那個(gè)房間那個(gè)人。 使用 ARP 協(xié)議憑借 MAC 地址進(jìn)行通信 IP 間的通信依賴 MAC 地址。在網(wǎng)絡(luò)上,通信的雙方在同一局域網(wǎng)(LAN)內(nèi)的情況是很少的,通常是經(jīng)過多臺(tái)計(jì)算機(jī)和網(wǎng)絡(luò)設(shè)備中轉(zhuǎn)才能連接到對(duì)方。而在進(jìn)行中轉(zhuǎn)時(shí),會(huì)利用下一站中轉(zhuǎn)設(shè)備的 MAC 地址來搜索下一個(gè)中轉(zhuǎn)目標(biāo)。這時(shí),會(huì)采用 ARP 協(xié)議(Address Resolution Protocol)。ARP 是一種用以解析地址的協(xié)議,根據(jù)通信方的 IP 地址就可以反查出對(duì)應(yīng)的 MAC 地址 TCP協(xié)議:如果說IP協(xié)議是找到對(duì)方的詳細(xì)地址。那么TCP協(xié)議就是把安全的把東西帶給對(duì)方。各有分工,互不沖突。 按層次分,TCP屬于傳輸層,提供可靠的字節(jié)流服務(wù)。什么叫字節(jié)流服務(wù)呢?這個(gè)名字聽起來讓人不知所以然,下面聽下我通俗的解釋。所謂的字節(jié)流,其實(shí)就類似于信息切割。比如你是一個(gè)賣自行車的,你要去送貨。安裝好的自行車,太過龐大,又不穩(wěn)定,容易損傷。不如直接把自行車拆開來,每個(gè)零件上都貼上收貨人的姓名。最后送到后按照把屬于同一個(gè)人的自行車再組裝起來,這個(gè)拆解、運(yùn)輸、拼裝的過程其實(shí)就是TCP字節(jié)流的過程。 所謂的字節(jié)流服務(wù)(Byte Stream Service)是指,為了方便傳輸,將大塊數(shù)據(jù)分割成以報(bào)文段(segment)為單位的數(shù)據(jù)包進(jìn)行管理。而可靠的傳輸服務(wù)是指,能夠把數(shù)據(jù)準(zhǔn)確可靠地傳給對(duì)方。一言以蔽之,TCP 協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割,而且 TCP 協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對(duì)方。 | |