第三章 數據鏈路層
數據鏈路層基本概念及基本問題
基本概念
三個基本問題
封裝成幀
首部和尾部的一個重要作用就是進行幀定界(即確定幀的界限)。此外,首部和尾部還包括許多必要的控制信息。
為了提高幀的傳輸效率,應當使幀的數據部分長度盡量大於首部和尾部的長度。最大傳輸單元MTU(Maximum Transfer Unit):幀數據部分長度上限。
MTU:
透明傳輸
透明傳輸是指不管所傳數據是什么樣的比特組合,都應當能夠在鏈路上傳送。
發送端的數據鏈路層如果在數據中出現控制字符SOH (start of heading)或EOT,那么會在前面插入一個轉義字符ESC(ascii編碼是1B),如果數據中出現了轉義字符,那么會在轉義字符前面插入一個轉義字符
字節填充或字符填充---接收端的數據鏈路層在將數據送往網絡層之前刪除插入的轉義字符。
差錯檢測
比較常用的是循環冗余檢測(CRC)
通過模2運算來計算。模2運算是一種二進制算法,也包括模2加法,減乘除,與四則運算不同的是模2運算不考慮進位與借位。
CRC采用模2除法來計算,實際上就是異或(相同為0,不同為1)。
如圖,要傳的數據是101001,加上三個0,,除以一個數,這個數是4位,除數的位數是加上0的個數再多一位,余數就作為FCS(添加到數據后面的冗余碼)
接收方收到后,將數據和FCS拼起來,這里即101001001,同樣對1101做模2除法,如果余數不是0,那么數據就錯誤,丟掉。
發送方和接收方會提前商議出一個多項式,這個多項式作為CRC的除數。
特點:
1. 這種檢測方法並不能確定究竟哪些比特出現了差錯
2. 只有經過嚴格的挑選,並使用位數足夠多的除數P,檢測的准確度才會很高。
MAC幀格式
目的地址和源地址是MAC地址,類型用來指明上層所使用的協議,IPV4( 0x0800 ),ARP:0x0806,IPV6: 0x86DD等
以太網幀最短是64個字節,除數據報的字節外,其余占了18個字節,所以數據報至少46個字節。如果小於46字節,則應在數據字段后面加入整數字節的填充字段,以保證MAC幀大於或等於64字節
MAC地址的是48位二進制,其中前24位是IEEE的注冊管理機構RA向廠家分配的地址字段,后24位廠家自行指派。CMD命令查看: ipconfig /all
無效的MAC幀
出現以下情況會丟棄MAC幀
1. 幀的長度不是整數個字節
2. 用收到的幀檢驗序列FCS查出有差錯
3. 數據字段的長度不在46到1500字節之間
4. 受限的MAC幀長度為64到1518字節之間
幀間最小間隔為9.6us,這是為了使剛剛接收的數據幀的接受緩存來得及清理,做好接收下一幀的准備。
兩種情況下的數據鏈路層
使用點對點信道的數據鏈路層 PPP
使用廣播信道的數據鏈路層 CSMA/CD
以太局域網
擴展以太網
高速以太網
以太網 集線器 網橋 交換機
第四章 網絡層
負責在不同網絡之間 盡力轉發數據包,基於數據包的IP地址轉發
不負責丟失重傳,不負責順序。
網關一般使用第一個IP地址,
計算機通信過程
發送端
- 應用層:應用程序准備要傳輸的文件
- 傳輸層:將文件分段,並編號
- 網絡層:添加目標的IP地址和源IP地址
- 數據鏈路層:使用自己的子網掩碼,判斷自己在哪個網段,目標地址在哪個網段,然后有兩種情況
- 如果在一個網段,通過arp協議廣播解析目標IP地址的MAC
- 如果不在一個網段
ARP協議
將IP地址通過廣播 目標MAC地址是FF-FF-FF-FF-FF-FF 解析目標IP地址的MAC地址。
交換機決定了下一條給誰,IP才決定了數據的起點和終點,路由器根據IP轉發
arp -a 查看arp的mac緩存, 如果是動態的就表示一會不用了就會刪除,arp只能解析本網段。
相關軟件:
局域網掃描器,可以掃描mac地址。
arp欺騙:告訴發廣播的計算機,自己的mac就是對方希望請求的mac
網絡執法官: 控制本網段計算機之間的連通,告訴源目標假的mac地址
P2P終結者:控制本網段計算機訪問網絡的流量和網站,利用arp欺騙,告訴源目標地址網關是自己。
添加靜態mac命令: arp -a ip mac
在本地連接點修復,可以清除arp靜態緩存
ICMP協議
網際控制報文協議,用來測試網絡層是否暢通,檢測故障,如ping,pathping,tracert
ping命令
ttl: 生存周期,過一個路由器減少1,到0就不轉發了,防止出現數據包循環
不同的操作系統ttl的初始值也不同,可以以此來猜測對方是什么系統
linux: 64
windows:128
unix:255
常用參數:
ping ip -t 一直ping
ping ip -l 200 指定數據包大小
ping ip -i 1 指定ttl長度
更改數據包ttl時間,跟蹤數據包途徑的路由器
pathping 跟蹤數據包路徑,計算丟包的情況
請求超時和目標主機不可到達
去的時候沒接受,出現目標主機不可到達
去的時候能接收,回來的時候找不到目標地址,會出現超時
tracert ip ,traceroute ip 在路由器上跟蹤數據包路徑的命令
tracert和traceroute雖然都是路由跟蹤,但是兩者探測方法及探測的數據類型不同。默認情況下,traceroute是向目的地址的某個端口(大於30000)發送UDP數據報,tracert是向目的地址發出ICMP請求回顯數據包。
共同點:都是通過設置發送包的TTL的值從1開始、逐次增1的方法來探測。
IGMP
點到點
廣播:只能在同一網段
組播:也叫多播
IP數據包
一個IP數據包由首部和數據兩部分組成
- 首部的前一部分是固定長度,共20字節,是所有IP數據報必須有的
- 在首部的固定部分的后面是一些可選字段,其長度是可變的(大多數是沒有的 )
一行四個字節,固定部分五行,20個字節。
版本: 標識TCP/IP協議版本, IPV4, IPV6 ,4就是v4,6就是v6
首部長度:加上可變部分
區分服務:給數據包加標記,默認是0x00
總長度:用來表示整個數據包的長度最大是2的16次方減一,65536字節
網絡層 數據包 65535字節
數據鏈路層 數據最大1500字節 最大傳輸單元MTU,所以需要分片
數據包如果不分段,去掉首部,則最大只能為1480個字節
數據包分片:將大數據包分成多個小數據包,每個都寫上ip地址,單獨選擇路徑,接收端將多個數據包合並成一個然后給網絡層
淚滴攻擊:向目標計算機發送重疊或過大的數據包
標識:給每個分片的數據包標號,標識一個完整的數據包,同一個號同一個包
標志:標記數據包是分片的還是完整的,占三位,目前只有前兩位有意義,最低位是MF(More Fragment),為1表示后面還有分片,為0表示是最后一個分片,中間一位是DF(Don‘t Fragment),當DF=0時才允許分片,一般的數據包不分片
片偏移:每個數據包的偏移量記錄了分片第一個字節占整個數據包的第多少個字節
偏移單位是8的原因:RFC的規定,IP的規定
它總長度(16bit)”和“偏移(13bit)”兩個字段所決定的,總長度定義了IP包的最大長度為2^16=64KB,偏移說明了IP分片時它最多能表示2^13個偏移單位,這樣偏移單位就是2^16/2^13=2^3,即為8B了,如果偏移單位不是8B,如選4B,則13bit的"偏移"就不能表示出IP的最大長度了
生存時間:TTL,應對環路
協議: 指出應將數據部分交給哪一個進程,比如TCP交給運輸層,ICMP交給網絡層
協議號:
ICMP 1
IGMP 2
TCP 6
UDP 17
IPV6 41
OSPF 89
首部檢驗和:只檢驗首部
IPV6已取消可變部分
靜態路由:管理員告訴路由器所有沒有直連的網絡下一條給誰
缺點:適用於小規模網絡,不能夠自動調整路由
動態路由:路由器自己學習路由表,RIP,OSPF協議
RIP: 周期性廣播路由表,跳數,30秒更新一下路由信息,最大跳數 15跳
使用抓包工具排除網絡故障
wireshark抓包,查看有沒有廣播多播一直占用網絡
frame整個幀
ethernet 以太網幀 數據鏈路層
internet 網絡層
transmission 傳輸層
smb里面的數據