網絡基礎確實不熟悉,有點難度,不過仍是多看就好mysql

1. OIS七層參考模型
應用層
經過應用進程間的交互完成網絡應用。redis
應用層協議定義的是應用進程間的通訊和交互的規則,常見有HTTP、DNS、SMTP、POP3sql
表示層
將應用程序的信息轉換成適合網絡傳輸的格式。瀏覽器
好比編碼問題,HTML,XML,MiMEtomcat
會話層
鏈接的管理,什麼時候數據發送和分割。服務器
並沒有實際傳輸做用,首部記錄數據的發送順序網絡
傳輸層
在進程之間的通訊提供通用的數據傳輸服務。tcp
無需在路由器上處理,沒有到達會重試,確保數據到達,傳輸層和網絡層配合才能實現可靠傳輸。協議有TCP / UDP編碼
網絡層
將數據傳送到目的地,負責尋址和路由選擇。url
IP屬於分組交換,但不具有重發機制,屬於非可靠協議
數據鏈路層
負責相鄰節點的數據傳輸,分數據幀發送。
幀包括數據和必要的控制信息(同步、地址、差錯信息)
物理層
比特流和電信號的轉換,及透明比特流的傳輸。
屏蔽傳輸介質和物理設備的差別
2. 分組交換
電路交換:獨佔信道,空閒時被獨佔也不能發送數據
報文交換:報文越大,時延越大。且出錯得所有重發
分組交換:分割成小數據包,共享同一條信道,提升效率
3. TCP / UDP 的區別
TCP:面向鏈接、可靠字節流傳輸(各類控制)、因此需資源多、傳輸效率相比慢 場景使用:文件、郵件、登陸
UDP:無鏈接、不可靠數據報、所需資源少、傳輸效率快、但細微處理都交給上層 場景使用:語音、視頻、直播
TCP或UDP要用到操做系統提供的類庫,即套接字
一個通訊由五個標識惟一肯定:目的IP,源IP,目標端口,源端口,協議號
4. 常見端口號
TCP/UDP可同端口,由於接收數據後交由不一樣的處理程序處理
- 21:ftp
- 22:SSH
- 23:telnet
- 25:smtp
- 53:DNS
- 110:pop3
- 3306:mysql
- 8080:tomcat
- 80:http
- 443:https
- 6379:redis
- 5672:rabbitMQ
5. TCP協議如何保證可靠傳輸
- 序列號 + 確認應答號:是否重複接收和是否收到消息
- 校驗和:TCP保持首部和數據的檢驗和,確保端到端的數據正確性
- 超時重傳:發送數據後,沒有收到確認應答則重發這個分組
- 鏈接管理:三次握手和四次揮手
- 流量控制:發送不超過接收端決定的窗口大小,防止高負荷下接收端的拒收而觸發重傳機制
- 擁塞控制:對發送的數據大小進行控制(選擇小的擁塞窗口或接收窗口),防止原本擁塞的網絡來一個大的數據
- ARQ協議(自動重傳請求):包括中止等待ARQ協議和連續ARQ協議
- 中止等待協議:發完一個分組就中止發送,等待確認應答。超時未收到確認應答,則須要重傳,直到接收到應答
- 中止等待協議:若接收收到重複分組(序列號),則丟棄,但還要發送確認應答
- 連續ARQ:窗口控制,累計收到同個序列號才進行重發(高速重發)
6. 瀏覽器輸入url回車鍵發生了什麼?
- DNS解析:經過DNS獲取域名對應的IP
- TCP鏈接:三次握手創建鏈接
- 發送HTTP請求
- 服務器處理請求並返回響應
- 瀏覽器解析渲染頁面
- 鏈接結束:四次揮手
其中:
TCP:與服務器三次握手創建TCP鏈接
IP:創建鏈接的發送數據在網絡層使用IP協議
OPSF:IP在路由選擇時使用
ARP:路由與服務器通訊時須要MAC
HTTP:使用網頁用到HTTP協議
7. 補充
- 數據鏈路的分幀有最大傳輸單位 MTU ,爲了分組交換提升效率(以太網爲1500字節,ATM爲9180字節),那麼數據鏈路層就限制了IP數據包大小,IP數據報須要分片,同理IP對上層也須要限制,最大爲MSS,TCP須要分段
- ARP:知道IP後,相鄰網絡須要知道MAC,那麼廣播ARP包,對應IP的主機將本身MAC地址做爲ARP響應
- NAT:私有地址訪問外網轉爲全局IP,出網時用5個標識映射惟一鏈接
8. 各類首部
數據鏈路層的,數據幀:

- FCS:幀檢測序列,檢測所有(好比CRC循環校驗碼)
網絡層的,IP數據報:IPV4

傳輸層的,TCP,UDP數據段:


- 校驗和:校驗所有,數據篡改數據鏈路能夠防止。校驗和防止路由器內存或程序漏洞致使的錯誤
參考: 《圖解TCP/IP》