前端最容易理解的網(wǎng)絡知識匯總

OSI 7層模型

不同主機之間要進行通信串述,需要遵循共同的協(xié)議画畅。這些協(xié)議非常復雜谬盐,一般我們把它抽象成7層炕置,叫做OSI(open system interconnection) 7層模型兆沙。
從底向上依次是:

  • 物理層
  • 數(shù)據(jù)鏈路層 交換機
  • 網(wǎng)絡層 路由器
  • 傳輸層
  • 會話層
  • 表示層
  • 應用層

數(shù)據(jù)在數(shù)據(jù)鏈路層叫幀(frame)欧芽,網(wǎng)絡層叫包(package),傳輸層叫段(segment)

對于這7層葛圃,每一層都有其相關的協(xié)議千扔,對于一個軟件開發(fā)工作人員,我們需要熟知的是:

  • 網(wǎng)絡層: IP協(xié)議库正,ARP曲楚, RARP協(xié)議,ICMP協(xié)議褥符,IGMP協(xié)議
  • 傳輸層: TCP協(xié)議龙誊, UDP協(xié)議
  • 應用層: http協(xié)議,https協(xié)議喷楣,ftp趟大,tftp,smtp铣焊, snmp逊朽,dns

當數(shù)據(jù)經(jīng)過每一層時,都會對其封裝或解封裝
發(fā)送方是從高層到低層封裝數(shù)據(jù)
接收方是從底層往高層解封裝分析數(shù)據(jù)曲伊。

TCP協(xié)議

TCP協(xié)議工作在OSI七層中的傳輸層叽讳。說明這是一種傳輸控制協(xié)議,而且是可靠的,面向鏈接的協(xié)議岛蚤。它能:

  • 將數(shù)據(jù)分段打包傳輸邑狸;
  • 對每個數(shù)據(jù)包編號,控制順序
  • 傳輸中丟失灭美,重發(fā)推溃,錯誤處理
  • 流量控制避免擁堵

問題一:既然是面向連接,如何保證雙方都能有通信能力呢届腐?

主機A發(fā)送數(shù)據(jù)給主機B,如何知道主機A铁坎,主機B都有發(fā)送和接收的能力呢?最少要經(jīng)過這么三部犁苏。
1硬萍,主機A發(fā)送數(shù)據(jù)給主機B B知道A有發(fā)送能力
2,主機B回復主機A A知道B有發(fā)送能力围详,自己有接收能力
3朴乖,主機A回復主機B 主機B知道自己有發(fā)送能力

看到?jīng)],要確保主機A助赞,主機B都有發(fā)送买羞,接收數(shù)據(jù)的能力,至少要經(jīng)過這么三步雹食。這就是著名的三次握手畜普。是不是很簡單....

問題1.1: 如何設計三次握手更合理
主機A請求跟主機B通信

  • 第一步主機A發(fā)送給主機B的數(shù)據(jù)其實是任何數(shù)據(jù)都行,看心情群叶,設計TCP協(xié)議的‘猿’設計了一個SYN(synchronize)標志,中文名同步的意思吃挑,數(shù)據(jù)是一個隨機數(shù),取名為sequence num街立,簡稱seq舶衬。seq是一個隨機數(shù)。
  • 第二部主機B收到主機A的數(shù)據(jù)赎离,它需要告訴B逛犹,我收到你的數(shù)據(jù)了,主機B知道主機A很忙梁剔,可能會收到很多數(shù)據(jù)圾浅,如何讓主機A輕松知道這是我的回復數(shù)據(jù)呢?額外添加了一個確認的字段:acknowledgment num憾朴,簡稱ack狸捕。ack的值肯定和seq值有關系,很簡單众雷,加1就好了灸拍。因為A知道還有第三次連接做祝,我也發(fā)一個seq隨機數(shù)給你。為了讓你輕松知道鸡岗,我的是回復數(shù)據(jù)混槐,我給你個ACK(acknowledgment)標志,設置為1轩性。當然声登,SYN同樣為1(傳送了隨機的deq參數(shù))。
  • 第三部主機A收到主機B回復揣苏,看到SYN=1悯嗓,SEQ=1,再看看acknowledgment正確卸察,通知主機B脯厨,沒問題,你可以和我通信了坑质。設置SYN=1合武,SEQ=1,ack的值為收到的seq+1涡扼,seq的值其實沒啥用了稼跳,隨便好了,把上個請求的seq+1傳了過去吃沪。

經(jīng)過這么三部汤善,主機A主機B就都知道自己和對方有發(fā)送接收數(shù)據(jù)能力了,接下來肯定要傳送數(shù)據(jù)了巷波,不然三次握手就白握了萎津。

問題二:如何傳送數(shù)據(jù)
主機A發(fā)送數(shù)據(jù)給主機B
假如此時seq為4000卸伞, ack為7000抹镊, 計算好此次傳送的數(shù)據(jù)是1514,則:

方向 seq ack size
A->B 4000 7000 1514
B->A 7000 4000+1514-54=4146 54
A->B 4146 7000+54-54=7000 1514
B->A 7000 4146+1514-54=4292 54

問題三:如何知道數(shù)據(jù)傳送完了荤傲,需要斷開連接嗎垮耳?
主機A發(fā)送數(shù)據(jù)給主機B
第一步:主機A傳送的數(shù)據(jù)傳送完后,為了讓B知曉遂黍,將標志位FIN(finish)設置為1终佛,ACK設置為1,seq是上一次傳過來的雾家,ack為為上次傳過來的seq+1铃彰。
第二步:主機B收到A的數(shù)據(jù),發(fā)現(xiàn)FIN為1芯咧,將ACK置為1牙捉,ack為傳過來的seq+1竹揍,seq為傳過來的ack
第三步:主機B再次發(fā)送報文給A,將FIN設置為1邪铲,ACK為1芬位,ack為上一次的ack+1,seq為上一次的seq
第四步:A收到B的FIN回復带到,ACK=1昧碉,ack為上一次seq+1,seq為上一次ack+1揽惹。B收到后關閉連接被饿,A發(fā)送報文等待2ms關閉連接。
這就是所謂的四次揮手永丝。

網(wǎng)絡的只是這里只是自己的見解锹漱,幫助大家理解。后面還有更多心得一起奉上慕嚷。

參考:

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喝检,一起剝皮案震驚了整個濱河市嗅辣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挠说,老刑警劉巖澡谭,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異损俭,居然都是意外死亡蛙奖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門杆兵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雁仲,“玉大人,你說我怎么就攤上這事琐脏≡茏” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵日裙,是天一觀的道長吹艇。 經(jīng)常有香客問我,道長昂拂,這世上最難降的妖魔是什么受神? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮格侯,結果婚禮上鼻听,老公的妹妹穿的比我還像新娘樟结。我一直安慰自己,他們只是感情好精算,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布瓢宦。 她就那樣靜靜地躺著,像睡著了一般灰羽。 火紅的嫁衣襯著肌膚如雪驮履。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天廉嚼,我揣著相機與錄音玫镐,去河邊找鬼。 笑死怠噪,一個胖子當著我的面吹牛恐似,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傍念,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼矫夷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了憋槐?” 一聲冷哼從身側響起双藕,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阳仔,沒想到半個月后忧陪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡近范,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年嘶摊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片评矩。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡叶堆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚照,到底是詐尸還是另有隱情蹂空,我是刑警寧澤俯萌,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布果录,位于F島的核電站,受9級特大地震影響咐熙,放射性物質發(fā)生泄漏弱恒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一棋恼、第九天 我趴在偏房一處隱蔽的房頂上張望返弹。 院中可真熱鬧锈玉,春花似錦、人聲如沸义起。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽默终。三九已至椅棺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間齐蔽,已是汗流浹背两疚。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留含滴,地道東北人诱渤。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像谈况,于是被迫代替她去往敵國和親勺美。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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