从数据包看网络协议
数据包是怎么流转的 – OSI 网络模型
数据包在每一层的作用
TCP/IP 模型更好地体现网络工作的逻辑方式
在 TCP/IP 模型中,四层包括:
- 4. 应用程序层:这大致相当于 OSI 模型中的第 7 层。
- 3. 传输层:对应于 OSI 模型中的第 4 层。
- 2. 互联网层: 对应于 OSI 模型中的第 3 层。
- 1. 网络访问层:结合了 OSI 模型中第 1 层和第 2 层的过程。
网络访问层:结合了 OSI 模型中第 1 层和第 2 层的过程
帧头部 : 源 MAC 地址 目标 MAC 地址 Type
以太网MAC帧格式
MTU(最大传输单元): MTU相当于在发寄快递的时候对包裹的限制,这个限制是不同的链路层对应的物理层的限制。
MAC帧中的数据长度规定为46-1500字节,ARP(地址解析协议)数据包的长度不够46字节要在后面补填充位,如果大于1500字节,必须要求网络层进行分片。
最大值1500称为以太网的最大传输单元(MTU)不同的网络类型有不同的MTU
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片。
ARP协议: ARP是介于链路层到网络层之间的协议,它的作用是为了解析IP地址到MAC地址的映射
分析
eth.type == 0x0800
eth.addr == ff:ff:ff:ff:ff:ff
互联网层: 对应于 OSI 模型中的第 3 层。
四元组 源地址:源端口 目标地址:目标端口
Netfilter 框架
iptables
NAT
使私有网络能够和公网互联。
应用 LVS
传输层:对应于 OSI 模型中的第 4 层。
TCP && UDP
TCP
UDP
TCP 三次握手 四次挥手 粘包 拆包
UDP
问题: 同一个端口能否同时监听 TCP 和 UDP
应用层协议设计 ,如果是你怎么来设计一个协议。
- 包分隔符:
- 包头
- 版本号
- 长度
- code
- 消息ID
- option
- 预留位
- 消息体
- 其他
请求包 / 响应包
应用程序层:这大致相当于 OSI 模型中的第 7 层
HTTP 协议
tcpdump 和 wireshark
libpocp
tcpdump -i eth0 port 80 -w result.pocp
tcpdump -i en0 udp -w upd.pcap
参考
什么是MTU(Maximum Transmission Unit)?MTU设置为多少合适?