TCP/IP,HTTP,Socket的区别与联系
TCP/IP,HTTP,Socket的區(qū)別與聯(lián)系
網(wǎng)絡(luò)七層:物數(shù)網(wǎng)傳會(huì)表應(yīng).分別為物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會(huì)話層,表示層,應(yīng)用層.其中,底層三層:物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層是網(wǎng)絡(luò)工程師研究的對(duì)象,而其它四層,是用戶面向和關(guān)心的問(wèn)題.
http協(xié)議:超文本傳輸協(xié)議, 對(duì)應(yīng)于應(yīng)用層.
tcp協(xié)議:傳輸控制協(xié)議,對(duì)應(yīng)于傳輸層.
ip協(xié)議:對(duì)應(yīng)于網(wǎng)絡(luò)層.
當(dāng)然,除了TCP,也可以使用UDP協(xié)議來(lái)傳遞數(shù)據(jù).
HTTP和Socket連接區(qū)別
1 TCP連接
要想明白Socket,必須要理解TCP連接.
建立TCP連接的"三次握手":
第一次:客戶端向服務(wù)器發(fā)送SYN包(syn=j),同時(shí)自己處于SYN_SEND狀態(tài).
第二次:服務(wù)器端收到SYN包后,必須確認(rèn)客戶的SYN(syn=j+1),同時(shí)也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài).
第三次:客戶端收到服務(wù)器發(fā)來(lái)的SYN+ACK包,就向服務(wù)器發(fā)送SYN(syn=k+1),發(fā)送完畢后,服務(wù)器和客戶端都進(jìn)入ESTABLISHED狀態(tài).完成三次握手.
握手過(guò)程中,并不傳輸數(shù)據(jù).在握手后,服務(wù)器與客戶端才開(kāi)始傳輸數(shù)據(jù),理想狀態(tài)下,TCP連接一旦建立,在通訊雙方中的任何一方主動(dòng)斷開(kāi)連接之前,TCP連接會(huì)一直保持下去.
2 HTTP連接
HTTP最顯著的特點(diǎn):客戶端發(fā)送請(qǐng)求都需要服務(wù)器端回送響應(yīng).請(qǐng)求結(jié)束后,主動(dòng)釋放鏈接.HTTP是一種短連接.通常的做法是,不需要任何數(shù)據(jù),也要保持每隔一段時(shí)間向服務(wù)器發(fā)送"保持連接"的請(qǐng)求.這樣可以保證客戶端在服務(wù)器端是"上線"狀態(tài).
3 socket原理
Socket連接,至少需要一對(duì)套接字,分為clientSocket,serverSocket.連接分為3個(gè)步驟:
服務(wù)器監(jiān)聽(tīng):服務(wù)器并不定位具體客戶端的套接字,而是時(shí)刻處于監(jiān)聽(tīng)狀態(tài).
客戶端請(qǐng)求:客戶端的套接字要描述它要連接的服務(wù)器的套接字.提供地址和端口號(hào),然后向服務(wù)器套接字提出連接請(qǐng)求.
連接確認(rèn):當(dāng)服務(wù)器套接字收到客戶端套接字發(fā)來(lái)的請(qǐng)求后,就響應(yīng)客戶端套接字的請(qǐng)求,并建立一個(gè)新的線程,把服務(wù)器端的套接字的描述發(fā)給客戶端,一旦客戶端確認(rèn)了此描述,就正式建立連接.而服務(wù)器套接字繼續(xù)處于監(jiān)聽(tīng)狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求.
4 Socket連接與TCP連接
創(chuàng)建Socket連接的時(shí)候,可以指定傳輸層協(xié)議.可以是TCP或者UDP,當(dāng)用TCP連接,該Socket就是個(gè)TCP連接.
5 Socket連接與HTTP連接
通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通訊雙方開(kāi)始互發(fā)數(shù)據(jù)內(nèi)容,直到雙方斷開(kāi)連接.在實(shí)際應(yīng)用中,由于網(wǎng)絡(luò)節(jié)點(diǎn)過(guò)多,在傳輸過(guò)程中,會(huì)被節(jié)點(diǎn)斷開(kāi)連接.因此要通過(guò)輪詢高速網(wǎng)絡(luò),該節(jié)點(diǎn)處于活躍狀態(tài).
HTTP連接使用的是"請(qǐng)求-響應(yīng)"方式,不僅在請(qǐng)求時(shí)建立連接,而且客戶端向服務(wù)器端請(qǐng)求后,服務(wù)器才返回?cái)?shù)據(jù).
很多情況下,都是需要服務(wù)器端向客戶端主動(dòng)推送數(shù)據(jù),保持客戶端與服務(wù)端的實(shí)時(shí)同步.若雙方是Socket連接,可以由服務(wù)器直接向客戶端發(fā)送數(shù)據(jù).若雙方是HTTP連接,則服務(wù)器需要等客戶端發(fā)送請(qǐng)求后,才能將數(shù)據(jù)回傳給客戶端.因此,客戶端定時(shí)向服務(wù)器端發(fā)送請(qǐng)求,不僅可以保持在線,同時(shí)也詢問(wèn)服務(wù)器是否有新數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端.
總結(jié)
以上是生活随笔為你收集整理的TCP/IP,HTTP,Socket的区别与联系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++ 继承与多态
- 下一篇: Idea插件——Translation