像忘了谁sq 2016-08-04 07:21 采纳率: 12.5%
浏览 1850

以太网数据包如何发送 如图,求代码

图片说明

  • 写回答

2条回答 默认 最新

  • devmiao 2016-08-04 07:54
    关注

    http://blog.sina.com.cn/s/blog_85998e380100yee8.html

    在以太网中数据包是如何发送的?ip和MAC有什么关系呢?下面所讲的数据传送只设计网络层和数据链路层。在linux下。
    在局域网内,一台主机H1(192.168.1.110)想发送数据给主机H2(192.168.1.111)时。数据是怎样过去的呢?
    首先H1会查看自己的route table(命令route查看):

    Destination Gateway Genmask Flags Metric Ref Use Iface
    192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
    default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

    确定H2在同一局域网内,将数据包直接从网卡eth0发出。再查看arp table,获取H2的MAC地址(命令arp查看):

    Address HWtype HWaddress Flags Mask Iface
    192.168.1.1 ether 00:1d:0f:3e:95:46 C eth0

    当arp中没有H2的IP到MAC映射时,H1需要广播一个frame,包含下面的几个值:

    H1MAC || 广播MAC || H1IP || H2IP

    局域网内所有主机都接受这个frame,因为是广播MAC(广播MAC为:FF-FF-FF-FF-FF-FF),所以都需解析它的数据内容,获得其中的目标IP。与自己的IP不匹配的主机直接忽略frame。匹配的主机发回一个frame,包含:

    本机IP || 本机MAC || H1IP || H1MAC

    这样H1就获得了H2的IP与MAC映射了。接着就进行frame的之间传输了(其他的主机无需解析出frame的IP,只要查看它的MAC是否与自己的匹配就行。也就是说无需提交到网络层,节省运算时间和资源)。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)