簡單記錄 圖解TCP/IP
0x00 電子書
「圖解TCPIP(第5版).pdf」https://www.aliyundrive.com/s/gF9tDM43deS
點擊鏈接保存,或者復制本段內容,打開「阿里云盤」APP ,無需下載極速在線查看,視頻原畫倍速播放。
0x01 OSI參考模型
- 物理層 比特流和電子信號直接的切換
- 數據鏈路層 數據幀和比特流之間的轉換(數據幀的生成與接受)
- 網絡層 負責尋址和路由選擇
- 傳輸層 可靠的傳輸,只在雙方通信節點進行處理,不在路由上進行處理
- 會話層 負責建立和斷開通信連接(數據流動的邏輯通路)
- 表示層 負責數據格式的轉換,將設備固有的數據格式轉換為網絡標準格式
- 應用層 針對特定應用的協議
- 在每個分層上,在處理上一層傳輸過來的數據時可以附加上當前分層的協議所必需的“首部”信息,接收端對收到的數據進行“首部”和“內容”的分離,在發送到上一層,最終將數據恢復成原樣
- mac地址和ip地址都具有唯一性,只有ip地址具有層次性
- mac尋址中參考的表叫做,地址轉發表,表中記錄mac地址
- ip尋址中參考的表叫做路由控制表,表中記錄的是集中之后的網絡號
0x02 TCP/IP模型
- 物理層 負責數據傳輸的硬件
- 網絡層 使用ip協議,ip協議基于ip地址進行轉發分包數據
- ip 使用ip地址作主機的標識,不具備重發機制
- ICMP 如果ip數據包發送途中發生異常導致無法到達對端目標時,icmp會給發送端發送一個異常通知
- ARP 從分組數據包的ip地址中解析出mac地址
- 傳輸層 使應用程序直接能夠正常通信
- TCP 面向有連接到傳輸協議
- UDP 面向無連接的傳輸層協議
- 應用層 將OSI中會話層,表示層,應用層的功能集中到應用程序中實現
-WWW 客戶端和服務端之間的通信的協議是http協議,所傳輸的數據格式是HTML,http屬于應用層協議,HTML屬于表示層協議
0x03 數據鏈路
- 數據鏈路層的協議定義了,通過通信媒介互聯設備之間傳輸的規范
0x04 IP協議(網絡層)
- 主要作用-實現點對點通信
- ip地址用于-連接到網絡中的所有主機識別出進行通信的 目標地址
- ip實現的是多個數據鏈路只見那通信的協議
- 最大傳輸單元(MTU)
- 以太網 1500字節
- FDDI 4352字節
- ATM 9180字節
經過分片之后的ip數據包在被重組的時候,只由目標主機進行
- 路徑MTU發現
從發送端主機到接收端主機之間不需要分片時最大的MTU,避免中途路由器進行分片處理
0x05 ip相關技術
-
DNS 域名查詢系統
hosts文件- 跟域名服務器中注冊著以下第一層域名域名服務器ip地址
- 想域名服務器進行查詢,接受查詢的域名服務器首先會在自己的數據庫進行查找,如果有該域名對應的ip地址就返回,如果沒有,域名服務器會再向上一層的域名服務器進行查詢
-
ARP IP查mac
只適用于ipv4,ipv6可以用icmp- ARP請求包中帶有想要查詢主機的ip地址和自己的mac地址,目標主機接收到SRP請求包后,如果請求包中的ip地址和自己的一致,就將自己的mac地址放入ARP相應包中返回給發送端
- ARP可以動態的將進行地址解析
-
RARP 從mac查詢ip
-
代理ARP,ARP會被路由器隔離,采用代理ARP的路由器會將請求轉發到鄰近網段
-
ICMP
確認ip包是否成功送達目標地址,通知在發送過程中的ip包被廢棄的原因,ICMP的通知消息會使用ip進行發送- 類型3 CMP目標不可達消息,ip路由器無法將ip數據包發送給目的地址時,會給發送端主機發送一個不可達的ICMP消息,并顯示具體原因
- 類型5 重定向消息,如果路由器發現發送端主機使用不是最佳的路徑發送數據,會給發送端返回一個ICMP重定向消息,消息中包含了最適合的路由信息
- 類型11 超時消息,ip包中有TTL(最大生存周期),它的值每經過一個路由就-1,直到0該包就會被丟棄。此時ip路由器就會發送一個ICMP超時的消息給發送端
- 類型0,8 回送消息,判斷所發送的數據包是否已經成功到達對端,可以向對端主機發送回送請求的消息(8),也可以接受對端主機發送過來的會送應當消息(0),ping命令就是利用這個消息實現的
- 類型4 原點抑制消息,為了緩解低速廣域網下路由器的擁堵
- 類型9,10 路由探索消息,主要用于發現與自己相連網絡中的路由器
- 類型17,18 地址掩碼消息,用于主機或路由器想要了解子網掩碼情況
-
ICMPv6
沒有icmpv6,ipv6就無法正常通行,ipv6中從IP定位mac,從ARP轉移到ICMP的鄰居探索消息- ICMPv6中類型133-137的消息叫做鄰居探索消息
-
DHCP
沒有ip地址可以發送DHCP包 -
NAT
用于在本地網絡中使用私有網絡,連接互聯網時轉而使用全局ip地址的技術- NAT-PT 將ipv6的首部轉換成ipv4首部的技術
-
ip隧道
經過隧道的數據統合為一個數據,在前加上網絡首部,網絡首部后面繼續追加網絡首部的技術,解決ipv4,ipv6通信問題
0x06 TCP,UDP
通信中常采用5個信息識別一個通信,源IP,目標ip,協議號,端口號,目標端口號
- 端口號 識別統一主機中進行通信的不同程序
- 0-1023,熟知端口號,用于廣為使用的應用程序的端口號
- 1024-49151,登記端口號,沒有熟知的應用程序使用,需要等級,以免重復
- 49152-65535,動態分配端口號
- 端口號和協議 不同協議可以使用相同的端口號,數據到底ip層,先檢查ip首部中的協議,在傳給對應的模塊,0-1023與傳輸層協議沒有關系,只要端口一致都分配到統一種應用程序進行處理。
TCP
面向有連接的,可靠的流協議,提供"順序控制",“重發控制”,“流控制”,”擁塞控制“等提高網絡利用率的功能
-
通過序列號的應答實現可靠傳輸
-
重發超時 在每次發包時都會計算往返時間以及偏差,將往返時間和偏差相加再大一點,就是重發超時的時間
-
ACK,確認應答,發送端數據到達接收端時,接收端會返回一個已收到消息的通知。
-
SYN,兩臺計算機在TCP連接會話時,連接首先會被初始化,完成這個任務的就是 SYN。SYN包,表明另一臺計算機已經做好會話準備,發出服務請求的計算機才發送SYN包
-
FIN,斷開連接。FIN為1時,表示今后不會再有數據發送,希望斷開連接
-
三次握手四次揮手

- tcp以段為單位發送數據
- 在tcp建立連接的同時,也可以確定發送數據包的單位,可以稱為最大消息長度MSS,最理想的長度真好是ip中不會被分片處理的最大數據長度。
- TCP在傳送大量數據時,是以MSS的大小將數據進行分割發送
- MSS在三次握手時,會在兩端主機之間計算產生
- TCP流控制,TCP首部中有一個字段用來通知窗口大小,接受端將自己可以接受的緩沖區大小發送給發送端,這個字段值越大,網絡的吞吐量越高。接受的緩沖區一旦面臨數據溢出時,窗口大小值也會被設置成更小的值通知給發送端,從而控制數據流量
UDP
具有不可靠性的數據報協議
其他傳輸層協議
- UDP-LITE,輕量級用戶數據報協議
- SCTP,流控制傳輸協議
- DCCP,數據報擁塞控制協議
# 0x07 路由協議
# 0x08 應用協議
- telnet,23
- ssh
- FTP
- SMTP,電子郵件
- http,

浙公網安備 33010602011771號