TCP/IP学习(二)

本文介绍如何使用tcpdump捕获ARP包,并详细解释了IP数据包的结构及路由选择过程。此外,还提供了实用命令如netstat-rn和traceroute的实际应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何捕获ARP包

  • telnet
  • tcpdump
  • 命令
    • arp -a 查看arp高速缓存
    • tcpdump -i 网络接口 arp:监听的网络接口的ARP
    • tcpdump -D 查看可以监听的网络接口

网络层(IP协议)

  • 协议组成
    • 版本:4位
    • 首部长度:4为,需要注意的,是指首部占四个字节的数目,15*4, 首部最长为60字节
    • 服务类型:8位,大部分实现不支持,无需关注
    • 总长度:16位,所以最大IP数为65535
    • 标识:16位,唯一标识主机发送的每一分数据包
    • 32位标志+13位片偏移,暂不关注
    • 生存时间:8位,数据包最多可经过的路由数(每经过一个路由,就减掉一个,等长度为0的时候就直接把这个IP包丢弃,防止出现回路的问题)
    • 上层协议:8位,表明IP数据报对应的上层协议是什么
    • 首部校验和:16位,保证IP数据包传输争取
    • 源IP地址:32位
    • 目的IP:32位
  • 可以使用netstat -rn命令查看,大致类型如下
Destination(目标)Gateway(网关)Flags(标志)RefsUseNetif(接口)Expire
default192.168.0.1UGSc520en0
127127.0.0.1UCS00lo0
127.0.0.1127.0.0.1UH3109145lo0
192.168.0.1/32link#5UCS20en0
192.168.0.1ff:ff:ff:ff:ff:ffUHLWbI04en0
192.168.0.158:d9:d5:ac:xx:xxUHLWIir1096en01132

IP路由选择

  • 每一个IP数据包在网络中进行传输的目的,要找到目的IP的地址,并最终到达该主机。所以IP数据包经过的每一个节点都相当于是一个中转站,就是路由。
  • IP数据包被路由节点的操作称为路由选择
  • 常规路由机制:

    • 目的主机与源主机直接相连,或处于共享网络,直接送达目标主机
    • 默认转发至该网络存在的路由器上,再由其统一处理
  • 路由匹配算法

    • 路由表中存在与目的IP完全相同的条目,直接发送至下一条
    • 路由表中存在与IP地址网络号相同的条目,发送至该条目指定的下一条
    • 以上条件均不成立,寻找默认条目,发送至该条目指定的下一条
    • 均不成立,返回主机不可达错误
    • 可以使用traceroute xxxx.xxx命令查看匹配步骤
  • 几个常用命令

    • ifconfig: 查看网络接口
    • netstat -rn: 查看路由表
    • netstat -in: 查看接口信息
    // 这里是以百度为栗子
    1. 在终端输入 traceroute baidu.com
    2 打印出下边的结果,因为一直匹配,所以需要我们手动(control + c)关闭下
    traceroute: Warning: baidu.com has multiple addresses; using 220.181.57.216
    traceroute to baidu.com (220.181.57.216), 64 hops max, 52 byte packets
    1  192.168.0.1 (192.168.0.1)  21.687 ms  5.716 ms  2.463 ms
    2  10.1.1.1 (10.1.1.1)  4.174 ms  2.637 ms  2.956 ms
    3  100.64.0.1 (100.64.0.1)  39.310 ms  32.048 ms  6.339 ms
    4  202.105.154.29 (202.105.154.29)  4.819 ms
      202.105.157.117 (202.105.157.117)  39.546 ms
      202.105.154.21 (202.105.154.21)  12.349 ms
    5  183.56.66.6 (183.56.66.6)  16.777 ms
      183.56.65.46 (183.56.65.46)  18.695 ms
      183.56.65.42 (183.56.65.42)  16.504 ms
    6  202.97.65.209 (202.97.65.209)  67.375 ms  40.033 ms  36.901 ms
    7  220.181.177.74 (220.181.177.74)  37.481 ms
      180.149.159.6 (180.149.159.6)  41.551 ms *
    
    
    // 使用ifconfig Netif 查看接口信息
    // 例如在终端输入 ifconfig en0,打印出如下信息
    en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 6c:40:08:b7:51:f0
    inet6 fe80::43a:4fa4:812d:25f2%en0 prefixlen 64 secured scopeid 0x5
    inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

后记

因为我这里也是临时抱佛脚,简单的查看了一下,没有深入的研究,尤其是很多参数并不知道其中的含义,只能以后再看了(偷偷的立一个flag),等以后深入学习的时候再回头补全这篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值