前端最容易理解的網路知識匯總
OSI 7層模型
不同主機之間要進行通信,需要遵循共同的協議。這些協議非常複雜,一般我們把它抽象成7層,叫做OSI(open system interconnection) 7層模型。
從底向上依次是:- 物理層 - 數據鏈路層 交換機- 網路層 路由器- 傳輸層
- 會話層- 表示層- 應用層數據在數據鏈路層叫幀(frame),網路層叫包(package),傳輸層叫段(segment)
對於這7層,每一層都有其相關的協議,對於一個軟體開發工作人員,我們需要熟知的是:
- 網路層: IP協議,ARP, RARP協議,ICMP協議,IGMP協議- 傳輸層: TCP協議, UDP協議- 應用層: http協議,https協議,ftp,tftp,smtp, snmp,dns當數據經過每一層時,都會對其封裝或解封裝
發送方是從高層到低層封裝數據
接收方是從底層往高層解封裝分析數據。TCP協議
TCP協議工作在OSI七層中的傳輸層。說明這是一種傳輸控制協議,而且是可靠的,面向鏈接的協議。它能:
- 將數據分段打包傳輸;- 對每個數據包編號,控制順序- 傳輸中丟失,重發,錯誤處理- 流量控制避免擁堵問題一:既然是面向連接,如何保證雙方都能有通信能力呢?
主機A發送數據給主機B,如何知道主機A,主機B都有發送和接收的能力呢?最少要經過這麼三部。
1,主機A發送數據給主機B B知道A有發送能力2,主機B回復主機A A知道B有發送能力,自己有接收能力
3,主機A回復主機B 主機B知道自己有發送能力看到沒,要確保主機A,主機B都有發送,接收數據的能力,至少要經過這麼三步。這就是著名的三次握手。是不是很簡單....
問題1.1: 如何設計三次握手更合理
主機A請求跟主機B通信- 第一步主機A發送給主機B的數據其實是任何數據都行,看心情,設計TCP協議的『猿』設計了一個SYN(synchronize)標誌,中文名同步的意思,數據是一個隨機數,取名為sequence num,簡稱seq。seq是一個隨機數。- 第二部主機B收到主機A的數據,它需要告訴B,我收到你的數據了,主機B知道主機A很忙,可能會收到很多數據,如何讓主機A輕鬆知道這是我的回複數據呢?額外添加了一個確認的欄位:acknowledgment num,簡稱ack。ack的值肯定和seq值有關係,很簡單,加1就好了。因為A知道還有第三次連接,我也發一個seq隨機數給你。為了讓你輕鬆知道,我的是回複數據,我給你個ACK(acknowledgment)標誌,設置為1。當然,SYN同樣為1(傳送了隨機的deq參數)。- 第三部主機A收到主機B回復,看到SYN=1,SEQ=1,再看看acknowledgment正確,通知主機B,沒問題,你可以和我通信了。設置SYN=1,SEQ=1,ack的值為收到的seq+1,seq的值其實沒啥用了,隨便好了,把上個請求的seq+1傳了過去。經過這麼三部,主機A主機B就都知道自己和對方有發送接收數據能力了,接下來肯定要傳送數據了,不然三次握手就白握了。
問題二:如何傳送數據
主機A發送數據給主機B
假如此時seq為4000, ack為7000, 計算好此次傳送的數據是1514,則:方向 | seq | ack | size
---|---|---|---A->B | 4000 | 7000 | 1514B->A | 7000 | 4000+1514-54=4146 | 54A->B | 4146 | 7000+54-54=7000 | 1514B->A | 7000 | 4146+1514-54=4292 | 54問題三:如何知道數據傳送完了,需要斷開連接嗎?
主機A發送數據給主機B第一步:主機A傳送的數據傳送完後,為了讓B知曉,將標誌位FIN(finish)設置為1,ACK設置為1,seq是上一次傳過來的,ack為為上次傳過來的seq+1。
第二步:主機B收到A的數據,發現FIN為1,將ACK置為1,ack為傳過來的seq+1,seq為傳過來的ack第三步:主機B再次發送報文給A,將FIN設置為1,ACK為1,ack為上一次的ack+1,seq為上一次的seq第四步:A收到B的FIN回復,ACK=1,ack為上一次seq+1,seq為上一次ack+1。B收到後關閉連接,A發送報文等待2ms關閉連接。這就是所謂的四次揮手。網路的只是這裡只是自己的見解,幫助大家理解。後面還有更多心得一起奉上。
參考:
- TCP三次握手連接及seq和ack號的正確理解 - 關於TCP協議,我想你應該懂了! - TCP/IP 之 大明王朝郵差 - TCP三次握手簡介解 - TCP四次揮手簡介 - 通俗大白話來理解TCP協議的三次握手和四次分手
推薦閱讀:
※華為路由器無線橋接水星路由器
※RCNN學習筆記(5):faster rcnn
※網路是怎樣連接的-探索協議棧和網卡
※計算機網路(筆記)04--Internet結構
※伺服器租用哪家好?