HTTP-應(yīng)用層協(xié)議:
1.0與1.1最大的區(qū)別在于葡缰,HTTP1.1可以支持長(zhǎng)連接扯旷,頭部加入:Connection:keep-alive,即可保持長(zhǎng)連接顿痪,那么HTTP是如何實(shí)現(xiàn)保持長(zhǎng)連接的呢巡揍?
TCP-UDP-傳輸層協(xié)議:
UDP:面向無(wú)連接的協(xié)議痛阻,數(shù)據(jù)封裝成數(shù)據(jù)包,發(fā)送出去腮敌,不保證數(shù)據(jù)是否送達(dá)
TCP:面向連接的協(xié)議阱当,所謂面向連接,就是在數(shù)據(jù)傳輸之前A和B之間保持一條”連接“糜工,通過(guò)這條“連接”弊添,所有的數(shù)據(jù)被可靠,有序的在兩者之間傳輸
“連接”:這個(gè)連接并不是真正意義上的連接捌木,稱之為“虛電路”油坝,其實(shí)也并不是說(shuō)A和B之間震蕩建立了一條連接,或者說(shuō)保證了路由路徑是一致的,因?yàn)槁酚蛇x擇并不是傳輸層控制的澈圈,傳輸層負(fù)責(zé)流量控制和差錯(cuò)控制彬檀,因此所有的擁塞控制和路由選擇其實(shí)是IP協(xié)議的工作,所以說(shuō)瞬女,TCP怎能保證路由路徑是一樣的呢窍帝,如果出現(xiàn)網(wǎng)絡(luò)擁堵,必然會(huì)重新選擇路徑诽偷。那么這個(gè)連接究竟是什么呢坤学?
答案是:狀態(tài)和序列號(hào),以及錯(cuò)誤校驗(yàn)(可以查看TCP和UDP的請(qǐng)求頭渤刃,就會(huì)發(fā)現(xiàn)兩者之間的差距了)拥峦,其實(shí)所謂的TCP三次握手請(qǐng)求連接贴膘,無(wú)非就是初始化一個(gè)序列號(hào)卖子,保證后面的數(shù)據(jù)有序到達(dá),同時(shí)TCP還支持重傳刑峡,錯(cuò)誤校驗(yàn)洋闽,保證數(shù)據(jù)的可靠性,當(dāng)然UDP也提供校驗(yàn)突梦。
狀態(tài):TCP與UDP的區(qū)別還在于TCP有很多狀態(tài)诫舅,這個(gè)狀態(tài)保證了A和B如何處理自己收到的數(shù)據(jù)包,因?yàn)槿绻麪顟B(tài)是連接狀態(tài)宫患,大家可以愉快的通信刊懈,但是當(dāng)一方斷開連接,那么之后收到的數(shù)據(jù)包就該丟棄掉才是正確的選擇娃闲,所以狀態(tài)也是保證TCP可靠性的重要因素虚汛,具體了解TCP有哪些狀態(tài)可以網(wǎng)絡(luò)上搜索一下,這不是這篇的重點(diǎn)皇帮。
IP:網(wǎng)絡(luò)層協(xié)議:
IP屬于網(wǎng)絡(luò)層協(xié)議卷哩,眾所周知它是不可靠的,(PS:當(dāng)初考試背的時(shí)候TCP/IP,可靠不可靠属拾,哈哈)将谊,因?yàn)镮P協(xié)議是不可靠的,所以不能保證數(shù)據(jù)有序無(wú)誤的到達(dá)渐白,這就需要TCP/UDP進(jìn)一步完善尊浓。這里要說(shuō)的不是IP的可靠不可靠,而是說(shuō)IP進(jìn)行路由選擇纯衍,提供擁塞控制栋齿,在A和B之間傳輸IP數(shù)據(jù)包時(shí),會(huì)根據(jù)網(wǎng)絡(luò)狀況調(diào)整合適的路由路徑,把數(shù)據(jù)包一步一步傳到目的IP地址褒颈,如果IP包超時(shí)或者丟棄柒巫,傳輸層的TCP會(huì)因?yàn)槌瑫r(shí)重新封裝數(shù)據(jù)交給IP協(xié)議重新發(fā)送,而UDP就不會(huì)谷丸,這就是TCP的面向連接所做到的可靠性的本質(zhì)堡掏。