物理层
物理层的功能不需要地址
Frame 13: 74 bytes on wire (592 bits),74 bytes captured (592 bits)
13号帧,线路74字节,实际捕获74字节
Encapsulation type: Ethernet(1) # 封装类型 |
EtherType 是以太帧里的一个字段,用来指明应用于帧数据字段的协议
链路层
主要目的:
1. 为IP模块发送和接收IP数据报 |
以太网和IEEE 802 封装
以太网是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入。它的速率是10Mb/s,地址为48bit。
前导码(8B):在帧的前面插入8B,使接收端和发送端进行时钟同步,其中7B为前同步码,1B为帧开始定界符。
前同步码均为:10101010 |
目的MAC(6B):包含目的主机网卡MAC地址或广播地址
源MAC(6B):发送端的网卡MAC地址
类型(2B):之处接收端收到该帧时,将该帧的载荷数据交付给谁处理
0x0800:IPv4 |
802.1Q标签:
CRC(4B):为了让接收端对接收到的帧进行差错检验(也做帧校验序列,FCS)
FCS: 该字段有 4 个字节,表示帧校验序列,用于校验帧是否出错。该字段内容已被网络设备滤去,抓包软件已无法获取。
帧间距:表示两个Frame之间间隔大小,设备发送完一个Frame后,并不会立刻发送下一个,而是等待IFG的间隔才会继续发送。
最小的帧间隙为12bytes,主要为了避免冲突(参考以太网的CSMA/CD特定)
抓包
为什么wireshark抓不到帧尾的FCS 4字节和以太网V2的前序8字节?
因为wireshark把这2个都给过滤了。
在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据,因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS之外的数据
通过OmniPeek抓包查看FCS内容:
环回
概念:使用Internet协议与同一计算机上的服务器通信。为实现这个目标,大多数实现支持一种工作在网络层的环回能力,通常使用一个虚拟的环回网络接口来实现。
MTU
概念
MTU:最大传输单元,MTU是数据链路层的概念,MTU限制的是数据链路层的payload,即上层协议的大小,如IP,ICMP等。
(涉及到的内容分片和重组)
OSI中的层 | 功能 | TCP/IP协议族 |
---|---|---|
应用层 | 文件传输,电子邮件,文件服务,虚拟终端 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet |
表示层 | 数据格式化,代码转换,数据加密 | 没有协议 |
会话层 | 解除或建立与别的接点的联系 | 没有协议 |
传输层 | 提供端对端的接口 | TCP,UDP |
网络层 | 为数据包选择路由 | IP,ICMP,RIP,OSPF,BGP,IGMP |
数据链路层 | 传输有地址的帧以及错误检测功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
物理层 | 以二进制数据形式在物理媒体上传输数据 | ISO2110,IEEE802,IEEE802.2 |
作用:
为什么是1500?
标准的以太网数据帧大小是:
1518
,头信息有14字节,尾部校验和FCS占了4字节,所以真正留给上层协议传输数据的大小就是:1518 - 14 - 4 = 1500
抓包
ping 2.2.2.2
ping 2.2.2.2 -l 1
数据大小设置为1,此时抓包可见Padding内容,使得payload达到最小要求(MTU–> 46,若加上头部信息,为64)
ping 2.2.2.2 -l 2000
出现了分片,分为1514及562两个报文
1514 = 6+6+2+20(IPv4头部)+1480(payload)