網絡由下往上分為:
表示層和應用層-- HTTP協(xié)議
會話層--
傳輸層-- TCP協(xié)議
網絡層-- IP協(xié)議
數(shù)據(jù)鏈路層--
物理層--
TCP/IP是傳輸層協(xié)議,主要解決數(shù)據(jù)在網絡中的傳輸.
Http是應用層的協(xié)議,用于如何封裝數(shù)據(jù).傳輸數(shù)據(jù)的時候,只使用TCP/IP協(xié)議(傳輸層).如果沒有應用層來識別數(shù)據(jù)內容,傳輸后的協(xié)議都是無用的. 應用層協(xié)議很多,FTP,HTTP,TELNET等,可以自己定義應用層協(xié)議.WEB使用HTTP作傳輸層協(xié)議.以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議,將數(shù)據(jù)發(fā)送到網絡上.
Socket是對TCP/IP協(xié)議的封裝,Socket只是個接口,不是協(xié)議,通過Socket,我們才能使用TCP/IP協(xié)議.
當然,除了TCP,也可以使用UDP協(xié)議來傳遞數(shù)據(jù).
三 .HTTP和Socket連接區(qū)別
1 .TCP連接
要想明白Socket,必須要理解TCP連接.
建立TCP連接的"三次握手":
第一次:客戶端向服務器發(fā)送SYN包(syn=j),同時自己處于SYN_SEND狀態(tài).
第二次:服務器端收到SYN包后,必須確認客戶的SYN(syn=j+1),同時也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài).
第三次:客戶端收到服務器發(fā)來的SYN+ACK包,就向服務器發(fā)送SYN(syn=k+1),發(fā)送完畢后,服務器和客戶端都進入ESTABLISHED狀態(tài).完成三次握手.
握手過程中,并不傳輸數(shù)據(jù).在握手后,服務器與客戶端才開始傳輸數(shù)據(jù),理想狀態(tài)下,TCP連接一旦建立,在通訊雙方中的任何一方主動斷開連接之前,TCP連接會一直保持下去.
2 HTTP連接
HTTP最顯著的特點:客戶端發(fā)送請求都需要服務器端回送響應.請求結束后主動釋放鏈接.
http連接就是所謂的短連接抑月,即客戶端向服務器端發(fā)送一次請求,服務器端響應后連接即會斷掉;.
通常的做法是,不需要任何數(shù)據(jù),也要保持每隔一段時間向服務器發(fā)送"保持連接"的請求.這樣可以保證客戶端在服務器端是"上線"狀態(tài).
四题诵、TCP和UDP的區(qū)別
1、TCP是面向鏈接的性锭,雖然說網絡的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性,但TCP的三次握手在最低限度上(實際上也很大程度上保證了)保證了連接的可靠性
而UDP不是面向連接的她奥,UDP傳送數(shù)據(jù)前并不與對方建立連接怎棱,對接收到的數(shù)據(jù)也不發(fā)送確認信號,發(fā)送端不知道數(shù)據(jù)是否會正確接收凡资,當然也不用重發(fā)谬运,所以說UDP是無連接的、不可靠的一種數(shù)據(jù)傳輸協(xié)議梆暖。
2、也正由于1所說的特點咐扭,使得UDP的開銷更小數(shù)據(jù)傳輸速率更高滑废,因為不必進行收發(fā)數(shù)據(jù)的確認,所以UDP的實時性更好蠕趁。