網(wǎng)絡協(xié)議與tcp

1.協(xié)議分層

  • 數(shù)據(jù)鏈路層(ARP洁闰、RARP)
  • 網(wǎng)絡層(ICMP、IP)
  • 傳輸層 (TCP皂吮、UDP)
  • 應用層(PING、telnet税手、OSPF蜂筹、DNS)

2. tcp與udp介紹與區(qū)別

TCP(Transmission Control Protocol傳輸控制協(xié)議): 是一 種面向連接的、可靠的芦倒、基于字節(jié)流的傳輸層通信協(xié)議艺挪,使用三次握手協(xié)議建立連接、四次揮手斷開連接兵扬。面向連接意味著兩個使用TCP的應用(通常是一個
客戶端和一 個服務器)在彼此交換數(shù)據(jù)包之前必須先建立一一個TCP連接麻裳。在一一個TCP連接中,僅有兩方進行彼此通信周霉,廣播和多播不能用TCP掂器。TCP協(xié)議的作用是,保證數(shù)據(jù)通信的完整性和可靠性俱箱,防止丟包国瓮。TCP把
連接作為最基本的對象,每-條TCP連接都有兩個端點, 這種端點我們叫作套接字(socket),端口號拼接到IP地址即構(gòu)成了套接字。
UDP(User Datagram Protocol用戶數(shù)據(jù)報協(xié)議): 是OSI(Open System Interconnection開放式系統(tǒng)互聯(lián))參考模型中- -種無連接的傳輸層協(xié)議狞谱,提供面向事務的簡單不可靠信息傳送服務乃摹。UDP協(xié)議的主要作用是將網(wǎng)
絡數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。

區(qū)別:
  1. TCP提供的是面向連接的跟衅、可靠的數(shù)據(jù)流傳輸; UDP提供的是非面向連接的孵睬、不可靠的數(shù)據(jù)流傳輸。
  2. TCP提供可靠的服務伶跷,通過TCP連接傳送的數(shù)據(jù)掰读,無差錯秘狞、不丟失、不重復蹈集,按序到達; UDP盡最大努力交付烁试,即不保證可靠交付。
  3. TCP面向字節(jié)流; UDP面向報文拢肆。
  4. TCP連接只能是點到點的; UDP支持-對一减响、一對多 多對一和多對多的交互通信。
  5. UDP具有較好的實時性郭怪,工作效率比TCP高支示,適用于對高速傳輸和實時性有較高的通信或廣播通信。
  6. TCP對系統(tǒng)資源要求較多鄙才,UDP對系統(tǒng)資源要求較少颂鸿。TCP首部有20字節(jié); UDP的首部只有8個字節(jié)。
  7. TCP的邏輯通信信道是全雙工的可靠信道; UDP的邏輯通信信道是不可靠信道咒循。

TCP問題之粘包處理

出現(xiàn)的原因:

出現(xiàn)粘包現(xiàn)象的原因是多方面的据途,它既可能由發(fā)送方造成,也可能由接收方造成叙甸。發(fā)送方引起的粘包是由TCP協(xié)議本身造成的, TCP為提高傳輸效率,發(fā)送方往往要收集到足夠多的數(shù)據(jù)后才發(fā)送一包數(shù)據(jù)颖医。 若連續(xù)幾次發(fā)送的數(shù)據(jù)都很少,通常TCP會根據(jù)優(yōu)化算法把這些數(shù)據(jù)合成包后一次發(fā)送出去裆蒸,這樣接收方就收到了粘包數(shù)據(jù)熔萧。
接收方引起的粘包是由于接收方用戶進程不及時接收數(shù)據(jù),從而導致粘包現(xiàn)象僚祷。這是因為接收方先把收到的數(shù)據(jù)放在系統(tǒng)接收緩沖區(qū)佛致,用戶進程從該緩沖區(qū)取數(shù)據(jù),若下一包數(shù)據(jù)到達時前一包數(shù)據(jù)尚未被用戶進程取
走,則下一包數(shù)據(jù)放到系統(tǒng)接收緩沖區(qū)時就接到前一包數(shù)據(jù)之后辙谜,而用戶進程根據(jù)預先設定的緩沖區(qū)大小從系統(tǒng)接收緩沖區(qū)取數(shù)據(jù)俺榆,這樣就一次取到了多包數(shù)據(jù)。

解決方案:
  1. 特殊字符方式
<?php
// swoole_tcp_client
for ($i=0; $i < 100; $i++) {
    $client->send("hello world\i");
}
// swoole_tcp_server
// 監(jiān)聽數(shù)據(jù)接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) {
    // 接收客戶端的想你想
    var_dump(explode('\i', $data));
    // echo "接收到".$fd."信息的".$data."\n";
    // echo "接收到".$fd."信息"."\n";
    $serv->send($fd, "Server: ");
});
?>
  1. 統(tǒng)一粘包標準(固定包頭+包體協(xié)議)
<?php
// client 通過pack進行組包
for ($i=0; $i < 10; $i++) {
    // 組包
    // msg protocol
    // | ---- dataLen ---- | data |
    // | - fixed 2bytes - |
    $context = "123";
    $len = pack("n", strlen($context));
    var_dump($len);
    $send = $len . $context;
    // var_dump($send);
    $client->send($send);
}
// server
//監(jiān)聽數(shù)據(jù)接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data){
    var_dump($data);
    $fooLen = unpack("n", substr($data, $count, 2))[1];
    var_dump($fooLen);
    $foo = substr($data, $count + 2, $fooLen);
    var_dump($foo);
    $serv->send($fd, "Server: ");
});
?>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末装哆,一起剝皮案震驚了整個濱河市罐脊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜕琴,老刑警劉巖萍桌,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凌简,居然都是意外死亡上炎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門雏搂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藕施,“玉大人寇损,你說我怎么就攤上這事∏Π” “怎么了润绵?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵线椰,是天一觀的道長胞谈。 經(jīng)常有香客問我,道長憨愉,這世上最難降的妖魔是什么烦绳? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮配紫,結(jié)果婚禮上径密,老公的妹妹穿的比我還像新娘。我一直安慰自己躺孝,他們只是感情好享扔,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著植袍,像睡著了一般惧眠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上于个,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天氛魁,我揣著相機與錄音,去河邊找鬼厅篓。 笑死秀存,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的羽氮。 我是一名探鬼主播或链,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼档押!你這毒婦竟也來了澳盐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汇荐,失蹤者是張志新(化名)和其女友劉穎洞就,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掀淘,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡旬蟋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了革娄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倾贰。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冕碟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出匆浙,到底是詐尸還是另有隱情安寺,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布首尼,位于F島的核電站挑庶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏软能。R本人自食惡果不足惜迎捺,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望查排。 院中可真熱鬧凳枝,春花似錦、人聲如沸跋核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砂代。三九已至蹋订,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泊藕,已是汗流浹背辅辩。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娃圆,地道東北人玫锋。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像讼呢,于是被迫代替她去往敵國和親撩鹿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

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