qishi821的个人博客分享 http://blog.sciencenet.cn/u/qishi821

博文

TCP/IP之帧的转发

已有 3270 次阅读 2017-3-7 14:15 |个人分类:计算机网络|系统分类:科研笔记

写篇博文,以此来梳理下自己的思路,即数据包在链路层是怎样传递的-ARP协议

首先来点常识,无论是PC机还是router,二者均有自己的ARP缓存表,也就是IP地址和MAC地址对应的那张表。在交换机中,有端口和MAC地址相对应的那张表,即标识了哪个MAC地址是从哪个端口进来的。

我们都知道,网络中的任何数据包归根结底,都要从物理层进行传输,在链路层要把上层传下来的数据包封装(encapsulation)成帧,那么这必然要用到MAC地址.

你或许会说,在Internet中,不是用IP来进行定位的吗?的确如此,现在的网络大多数是基于TCP/IP协议族的,每一台PC或Server或Router都有一个或多个IP地址,那怎么又扯到MAC地址呢?我们知道ISO定义的网络分为七层,IP地址只是涉及到网络层,而MAC层则处于更下层的链路层,所以在网络中必会有IP层到MAC的地址映射.

看到这里你或许会产生疑问,那我们怎么知道对方的MAC地址?怎么知道对方的IP地址?其实,这些工作都由计算机代你完成了.

想象一下,当你想访问某个网站的时候,你是否会习惯性地打开某个浏览器(firefox、IE、chrome、QQ、UC...),然后习惯性地在地址栏中输入域名,比如www.baidu.com、jd.com、taobao.com等等。然后回车,就进入了相应的网站。其实,当你输入上述那些域名时,DNS就会替你去解析,找到与域名相对应的IP地址,然后根据IP地址进行下一步的工作。你或许会说,我并没有输入域名啊,我只是输入了关键字而已,回车,然后我就挨着点击词条,就看到相应的网页了。我们这里暂且不去讨论那些爬虫算法,包括赫赫有名的PageRank算法。其实,细心的人或许已经看到,在每个词条的下方,其实是有域名的。如图所示:

,这就是应用应用层,标志即域名。

情景一:PC1和PC2在同一个网段,二者之间有一台交换机。如下图所示:

,经过上面的分析,我们知道PC1要想和PC2进行通信,PC1就必须知道PC2的MAC地址,但现在PC1只知道PC2的IP地址,这可怎么办呢?此时,就要用到我们今天要讲的主角-ARP协议。PC1会发出一个ARP请求的广播包,其源IP和源MAC地址为PC1的IP和MAC地址,目标IP是PC2的IP地址,目标MAC地址是12个F,也就是说这个局域网内的所有终端均会收到这个数据包。当交换机Switcher1(第一次使用时,其内部的MAC表是空的)收到这个包后,就先将PC1的MAC地址与端口1的对应关系写到自己的MAC表中,以便将来如果有数据包的MAC地址是PC1的MAC地址时,就直接从端口1转发该数据包。然后,Switcher将数据包从除去端口1外的所有端口转发PC1发出的ARP请求包,当该局域网内的所有终端收到该数据包后,就检查这个包的IP地址和自己的IP地址是否相同,若不同,先将IP地址和MAC地址写到自己的ARP缓存中,然后将该数据包丢弃(此处涉及到ARP欺骗攻击)。若相同,就将IP地址和MAC地址写到自己的ARP缓存中,然后返回ARP应答包。

情景二:PC1和PC2没有在同一网段中,如下图所示:


在这种情况下,PC1知道PC2不和自己在一个网段中,因此先将数据包发送到其网关处,即Router1的F1口,(若PC1不知道F1的MAC地址,则发出一个ARP请求包,其源IP和源MAC地址为PC1的IP和MAC地址,目的IP是F1的IP,目的MAC地址是12个F),其源IP和源MAC地址是PC1的IP和MAC,目的IP是PC2的IP地址,目的MAC是F1的MAC地址。Router1接收到这个数据包后,就查看这个包的IP是否和自己的IP相同,若相同,则不继续转发;若不同,查看路由表,查找路由,继续转发(若F2不知道F3的MAC地址,则发送ARP广播请求,源IP和MAC是F2的IP和MAC,目标IP是F3的IP,目标MAC是12个F),此时源IP是PC1的IP地址,源MAC地址是F2的MAC地址,目标IP是PC2的IP地址,目标MAC是F3的MAC地址。Router2收到这个数据包后,检查其目的IP是否是自己的IP地址(因为路由器一般有多于一个的IP地址和MAC地址)。若是,则收下;若不是,则同Router1一样,检查自己的路由表,查找路由,然后根据路由表将数据包从F4口转发出去(若F4不知道PC2的MAC地址,则发送ARP请求包,其源IP和源MAC是F4的IP和MAC,目的IP是PC2的IP,目的MAC地址是12个F)。此时,数据包的源IP是PC1的IP地址,源MAC是F4的MAC地址,目的IP是PC2的IP地址,目的MAC是PC2的MAC地址。 此时,数据包到达PC2,相反即可完成PC2到PC1的数据包传递,这样二者之间便可以进行通信。



https://blog.sciencenet.cn/blog-2355761-1038042.html

上一篇:操作系统学习之系统调用
下一篇:操作系统之调度策略
收藏 IP: 125.71.200.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 08:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部