對TCP/IP沟涨、Http恤批、Socket的理解

網(wǎng)絡分層

物理層、數(shù)據(jù)鏈路層裹赴、網(wǎng)絡層喜庞、傳輸層、會話層棋返、表示層和應用層延都。


8718367adab44aedb14be429b21c8701a08bfbf2.jpg

TCP協(xié)議對應于傳輸層,主要解決數(shù)據(jù)如何在網(wǎng)絡中傳輸睛竣。
HTTP協(xié)議是基于TCP協(xié)議的晰房,它對應于應用層,主要解決包裝數(shù)據(jù)和解析射沟。
socket則是對TCP/IP協(xié)議的封裝和應用殊者,是從傳輸層上抽象出來的,采用IP地址加上端口號的形式來標識验夯,并不是真正意義上的網(wǎng)絡協(xié)議猖吴。

TCP連接的三次握手

第一次握手:客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SEND狀態(tài)挥转,等待服務器確認;
  第二次握手:服務器收到syn包距误,必須確認客戶的SYN(ack=j+1)簸搞,同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包准潭,此時服務器進入SYN_RECV狀態(tài);
  第三次握手:客戶端收到服務器的SYN+ACK包趁俊,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢刑然,客戶端和服務器進入ESTABLISHED狀態(tài)寺擂,完成三次握手。

  1. HTTP連接
    HTTP協(xié)議是基于TCP協(xié)議的泼掠,客戶端向服務器發(fā)起http請求的時候怔软,就需要實現(xiàn)與服務器的TCP連接,三次握手择镇,當請求完數(shù)據(jù)后挡逼,會立即斷開連接。所以Http連接是一種響應式無狀態(tài)的連接腻豌。所謂的無狀態(tài)家坎,是指瀏覽器每次向服務器發(fā)起請求的時候,不是通過一個連接吝梅,而是每次都建立一個新的連接虱疏。如果是一個連接的話,服務器進程中就能保持住這個連接并且在內(nèi)存中記住一些信息狀態(tài)苏携。而每次請求結束后做瞪,連接就關閉,相關的內(nèi)容就釋放了右冻,所以記不住任何狀態(tài)装蓬,成為無狀態(tài)連接。

  2. socket
    socket是從傳輸層上抽象出來的纱扭,它是一套接口矛物,所以Socket連接可以基于TCP連接,也有可能基于UDP跪但。

Socket 連接,至少需要一對套接字,分為 clientSocket峦萎,serverSocket 連接分為3個步驟:

(1) 服務器監(jiān)聽:服務器并不定位具體客戶端的套接字屡久,而是時刻處于監(jiān)聽狀態(tài);

(2) 客戶端請求:客戶端的套接字要描述它要連接的服務器的套接字爱榔,提供地址和端口號被环,然后向服務器套接字提出連接請求;

(3) 連接確認:當服務器套接字收到客戶端套接字發(fā)來的請求后详幽,就響應客戶端套接字的請求,并建立一個新的線程,把服務器端的套接字的描述發(fā)給客戶端筛欢。一旦客戶端確認了此描述浸锨,就正式建立連接。而服務器套接字繼續(xù)處于監(jiān)聽狀態(tài)版姑,繼續(xù)接收其他客戶端套接字的連接請求.

TCP/UDP的區(qū)別:

1柱搜、TCP是面向連接的,雖然說網(wǎng)絡的不安全不穩(wěn)定特性決定了多少次握手都不能保證連接的可靠性剥险,但TCP的三次握手在最低限度上保證了連接的可靠性;
UDP廣播式數(shù)據(jù)傳輸聪蘸,不是面向連接的,UDP傳送數(shù)據(jù)前并不與對方建立連接表制,對接收到的數(shù)據(jù)也不發(fā)送確認信號健爬,發(fā)送端不知道數(shù)據(jù)是否會正確接收,所以說UDP是無連接的么介、不可靠的一種數(shù)據(jù)傳輸協(xié)議娜遵。
2、使得UDP的開銷更小數(shù)據(jù)傳輸速率更高壤短,因為不必進行收發(fā)數(shù)據(jù)的確認设拟,所以UDP的實時性更好。

socket與HTTP的區(qū)別

socket
優(yōu)點:1.傳輸數(shù)據(jù)為字節(jié)級鸽扁,傳輸數(shù)據(jù)可自定義蒜绽,數(shù)據(jù)量小。
2.傳輸數(shù)據(jù)時間短桶现,性能高
4.可以加密躲雅,數(shù)據(jù)安全性高
缺點: 1.需要對傳輸?shù)臄?shù)據(jù)進行解析,轉化為應用級的數(shù)據(jù)

HTTP
優(yōu)點:1.基于應用級的接口使用方便
2.要求的開發(fā)水平不高骡和,容錯性強
缺點: 1.傳輸速度慢相赁,數(shù)據(jù)包大。
2.如實現(xiàn)實時交互慰于,服務器性能壓力大
3.數(shù)據(jù)傳輸安全性差

實際場景用例:
  1. 通過socket連接通訊钮科,socket轉發(fā)消息實現(xiàn)客戶端和服務器端的數(shù)據(jù)交互∑旁客戶端啟動的時候可以先http發(fā)送請求绵脯,拿到某些數(shù)據(jù)(ip或者端口號),再去連接socket休里,后臺的話既有socket,也有http通訊妙黍,這樣就可以不用一直發(fā)送http請求,數(shù)據(jù)可以直接走socket通訊方式可免,再有socket轉發(fā)到php后臺抓于,提交數(shù)據(jù)傳輸?shù)男省?/p>

  2. socket粘包問題:參考https://www.cnblogs.com/QG-whz/p/5537447.html
    多個獨立的數(shù)據(jù)包連在一起一次性發(fā)給了客戶端,比如1.aaaa 2. bbbb,兩條數(shù)據(jù)浇借,客戶端收到的是aaaabbbb捉撮,這時候就懵逼了逮刨。
    原因:
    在客戶端/服務器端都會有一個比較大的數(shù)據(jù)緩沖區(qū),來存放接收的數(shù)據(jù)修己,為了保證能夠完整的接收到數(shù)據(jù)恢总,因此緩沖區(qū)都會設置的比較大,發(fā)送端需要等緩沖區(qū)滿才發(fā)送出去睬愤,造成粘包片仿。
    解決方法:
    (1). 在發(fā)送/接收消息時尤辱,將消息的長度作為消息的一部分發(fā)送出去,從而接收方可以根據(jù)傳來的長度信息光督,制定相應長度的緩沖區(qū)。
    (2). 將發(fā)送的消息的首尾都加上特殊標記符结借。

注:一條數(shù)據(jù)可以包頭(加鹽處理的某些字符串)+包體長達+CMD+包體內(nèi)容
看這篇:https://item.jd.com/100004310948.html

  1. 增加備用網(wǎng)絡連接路線。當某些ip遭受惡意攻擊或者出現(xiàn)網(wǎng)絡波動的情況下咖熟,嘗試連接其他Ip路線。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馍管,一起剝皮案震驚了整個濱河市薪韩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罗捎,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岭洲,死亡現(xiàn)場離奇詭異坎匿,居然都是意外死亡雷激,警方通過查閱死者的電腦和手機告私,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來根悼,“玉大人,你說我怎么就攤上這事挤巡】崧螅” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵母廷,是天一觀的道長。 經(jīng)常有香客問我糊肤,道長,這世上最難降的妖魔是什么馆揉? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任把介,我火速辦了婚禮勤讽,結果婚禮上拗踢,老公的妹妹穿的比我還像新娘。我一直安慰自己诸狭,他們只是感情好君纫,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓄髓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陡叠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天译红,我揣著相機與錄音,去河邊找鬼侦厚。 笑死拙徽,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的斋攀。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼侧蘸,長吁一口氣:“原來是場噩夢啊……” “哼鹉梨!你這毒婦竟也來了?” 一聲冷哼從身側響起存皂,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骤菠,沒想到半個月后疤孕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡鹉戚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年专控,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伦腐。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖幸冻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘁扼,我是刑警寧澤黔攒,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站不傅,受9級特大地震影響赏胚,放射性物質發(fā)生泄漏访娶。R本人自食惡果不足惜觉阅,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一典勇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧割笙,春花似錦、人聲如沸伤溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糯耍。三九已至,卻和暖如春这橙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舵鳞。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抛虏,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓慕淡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親峰髓。 傳聞我的和親對象是個殘疾皇子息尺,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容