Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97992
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 91
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-24 19:49
文章分类

全部博文(30)

文章存档

2017年(11)

2016年(1)

2015年(18)

我的朋友

分类: C/C++

2017-02-28 17:05:22

IP数据报需从主机A上传送到主机B上,主机A首先查找路由表;
if(目的主机是与自己在同一个网段内)
{
    主机A查询自己的ARP;
    if(有该目的IP地址对应的MAC地址的记录)
    {

将该MAC地址作为目的MAC地址,封装数据帧,传送给主机B;

    }
    else
    {
          发送一个ARP请求广播给网段内的所有主机,来查询该目的IP地址的MAC地址;

收到ARP请求报文的各个主机如果发现该IP地址是自己的IP地址,则返回一个ARP应答报文告诉主机A自己的MAC地址;

如果发现不是自己的IP地址,则丢弃该报文。

主机A收到这个应答报文后,就按照返回的MAC地址,将IP数据包封装成帧,然后发送到主机B;

(补充:一般为了减少网络中的报文量,通信双方会维护一个各自的ARP表,把一次通信中获得IP MAC地址对保存在缓冲的ARP表中,但是ARP表有一个老化机制,删除一段时间内不用的IP MAC地址对。)

    }
}
else if(发现了能与目的网络号相匹配的表目)
{

则把报文发给改表目指定的下一站的路由器或直接连接的网络接口;

报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器或者网络接口的MAC地址,而IP头部的目的IP地址是主机BIP地址;

这里要指出的是:ARP请求报文以下一站路由器或网络接口的IP地址为目的IP地址,寻找真的目的MAC地址。换句话,ARP请求报文只负责IP数据报传输过程中每一跳中的目的MAC地址查询。

}
else
{

寻找标为“默认”的表目,把报文发送给该表目指定的下一站路由器;

报文发送到下一站时,数据帧的目的MAC地址是下一个站路由器的MAC地址,而IP头部的目的IP地址是主机BIP地址。

}
数据帧在每两个网络设备间传递时,是转换成bit流在传输媒体上传输。链路层提供了如停止等待协议等机制,控制了bit流在传输媒体上的无措传输。

转自http://blog.csdn.net/beyond_cn/article/details/9421025

 


阅读(1593) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~