TCP/IP__IP寻址及ARP解析
ARP解析过程中MAC地址以及IP地址的变化情况
1.两主机要通信传送数据时,就要把应用数据封装成IP包,然后再交给下一层数据链路层继续封装成帧;之后根据MAC地址才能把数据从一台主机,准确无误的传送到另一台主机。
隔同一广播域的交换机
2.如图:当NO要和N1通信时,假如
1)NO会先查看自己的ARP高速缓存中是否有N1的MAC地址记录。
2)如果N0的高速缓存中有B主机的记录,则直接通过这个MAC地址进行数据的传输。
3)如果N0的ARP缓存中没有N1的MAC地址,那NO就会发送一个ARP的广播请求,其中源IP是NO 目标IP是N1;源MAC是N0 目标MAC是12个F)给同一广播域中的所有成员;
当交换机从自己的1接口上收到这个广播包,然后它会读取这个帧的源MAC地址和目标MAC地址,由于交换机刚启动加电时,它的MAC表为空的。所以它会把NO的MAC地址与之相对应的接口1放到一张表里,这张表就是MAC地址表。
然后它再从别的接口广播这个数据帧,当别的主机收到这个广播时,查看目标IP不是自己的,就会丢弃此包。3)如果N1接收到这个数据帧,它检查目标IP和这个的IP是一样的,就会回应这个ARP请求,把自己的IP和MAC封装成源IP和源MAC,
N0的IP和N0的MAC地址为目标IP与目标MAC,并记录NO的MAC与IP,放进自己的ARP缓存表中。 此时,这个应答包经过交换机时,它又会检查源MAC、目标MAC,把N1的MAC和自己接口2放进MAC地址表中,再查看自己的MAC地址表,
发现存在目标MAC与自己的1接口对应(由于刚开始有记录过N0的MAC),那它就会直接把这个应答包从接口1送出去了。
4)主机N0收到这个包后发现目标MAC是自己,就会处理这个包。并把N1的MAC与IP放进自己的ARP缓存表中。这时主机N0就知道N1的MAC地址了,以后要发送数据,就直接把N1的IP与MAC封装进帧中进行点对点的发送了。
隔路由器
1.1)A主机先通过广播一个ARP请求,找到本网络中的一个路由器的MAC地址,然后将数据包直接给路由器。
2)当路由器收到数据包后,如果路由器发现B主机在自己连接网络中的话,这时通过ARP找到B主机,然后把数据包给B主机。
3)如果B主机不和A主机发送数据的路由器在同一网络内的话,则路由器会通过ARP协议找到下一跳的路由器,然后把数据包发送到该路由上,以此类推。
2.MAC地址经过路由或路由主机是都是发生改变的,源发送主机是不知道目的主机的MAC地址的,但是知道IP。而IP地址一般是不会发生变化的。
3.
PC1——>PC2:
PC1→R的G0/0:源MAC:11,目的MAC:AA
R对上述包进行处理:剥离原源地址,以G0/1的MAC地址代替;
剥离原目的地址,以PC2的MAC地址代替。
即,R的G0/1→PC2:源MAC:BB,目的MAC:22
注:过程中,源IP地址和目的IP地址均不变。
R1上面E0口的MAC地址假设为AA,E1口的MAC地址假设为BB;
R2上面E0口的MAC地址假设为CC,E1口的MAC地址假设为DD;
PC1的MAC地址是11;PC2的MAC地址是22.
ARP解析
1.当主机A ping 主机B之后,主机A的ARP缓存条目?
主机A要ping主机B,首先主机A需要封装ping包,而封装ping包需要主机A和主机B的二、三层地址信息。然而主机A并不知道主机B的MAC地址,这样主机A就会向局域网发送ARP请求,以请求主机B的MAC。
网关收到主机A的ARP请求后,发现主机B是其他网段的地址,这样网关会启用代理ARP的功能,将自己的MAC地址应答给主机A。主机A收到应答包后会对本地的ARP缓存进行更新,将应答方的IP和MAC地址存储在ARP缓存中,
同时完成ping包的封装。网关在收到ping包后会自动完成二层地址的重定向。
故应为。
2.在以太网寻址的时候,依靠的是MAC地址。每个网段都需要寻找到自己的下一跳(gateway)以自己MAC作为源MAC,gateway的MAC作为目的MAC,然后将帧转发出去,但是数据包是不会进行变化的,
即packet的头部信息不回发生改变。故IP包头的源、目的地址是不会变的。
TCP/IP__IP寻址及ARP解析的更多相关文章
- TCP/IP协议之ARP寻址
ARP协议: 前面讲了网络层的寻址是通过IP地址来做的.其实一个数据包寻址包含两个部分:1 IP寻址.2 ARP寻址. ARP寻址是用在数据链路层上的.我们上网的电脑都有网卡.那么在数据链路层的进行传 ...
- ARP解析MAC地址的全过程(ARP的工作机制)
以太网环境下,同一个网段的主机之间需要互相知道对方的MAC地址,才能访问. TCP/IP协议栈从上层到下层的封装过程中,第三层封装需要知道目的IP,第二层封装需要知道目的MAC. 目的IP一般由用户手 ...
- TCP/IP 寻址
原文:TCP/IP 寻址 第一节:TCP/IP 简介 第二节:TCP/IP 寻址 第三节:TCP/IP 协议 第四节:TCP/IP 邮件 TCP/IP 使用 32 个比特(bit)或者 4 个 0 到 ...
- 链路层寻址与 ARP
一. MAC 地址 不是主机或路由器具有链路层地址,而是它们的适配器(即网络接口)具有链路层地址.因此,具有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址. 然而,链路层交换机并不具有与它 ...
- HTTP TCP UDP ICMP IP ARP 协议详解(10.15 第二十一天)
ARP协议 ARP(Address Resolution Protocol)协议 地址解析协议 把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址) 在OSI模型中ARP协议属于链路 ...
- HP-SOCKET TCP/UDP通信框架库解析
项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...
- TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点
ISO/OSI的网络模型架构 TCP/IP参考模型的层次结果 以太网头部结构 以太网属于数据链路层, 属于最基本的协议结构 IP协议 IP协议为TCP, UDP, ICMP提供最基本的数据传输通路 I ...
- DNS寻址以及IP解析
域名解析从右向左 DNS寻址: 1 客户端发送查询请求,在本地计算机缓存查询,若没有找到,就会将请求发送给dns服务器 2 先发送给本地的dns服务器,现在自己的区域内查找,若找到,根据此记录进行查询 ...
- TCP连接过程及报文解析
可能大家都听过TCP建立连接时需要经历三次握手和四次挥手的. 那么具体的握手挥手的过程是怎么样的呢? 这篇文章就通过WireShark抓包来了解TCP连接建立和断开的过程. 实验方法: 写一段简单的代 ...
随机推荐
- FTP服务器的搭建和使用(centos7)
1.显示如下图则表示已安装vsftp软件 如过没有则可以通过yum源进行安装 yum install -y vsftpd 操作:service vsftpd start|stop|restart 2. ...
- 网页短信平台源码和开发功能介绍 思路和功能 G客短信平台
G客短信源码介绍 (只介绍现有功能模块文字介绍配系统截图) 一:后台首页 QQ:290615413 VX:290615413
- Study_way
一.Study 学习通Java基础视频.语法 开源中国 (Git)版本控制 读懂程序.源代码 相关资源 百度网盘 程序:方法(数学) 二.参数传递 基本数据的传参:虚参改变影响实参 引用数据的传参:数 ...
- 【Flutter】容器类组件之变换
前言 Transform可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效. 接口描述 const Transform({ Key key, @required this.transform, t ...
- 聊聊 g0
很多时候,当我们跟着源码去理解某种事物时,基本上可以认为是以时间顺序展开,这是编年体的逻辑.还有另一种逻辑,纪传体,它以人物为中心编排史事,使得读者更聚焦于某个人物.以一种新的视角,把所有的事情串连起 ...
- WIN7系统没有USB驱动和以太网驱动如何操作
| 欢迎关注个人公众号 zclinux_note 第一时间获取关于linux使用的技巧.探索Linux的奥秘 | 今天在单位安装了一台win7纯净版,但是安装完成后发现usb没有反应,插上网 ...
- 【MySql】[ERROR] Can't read from messagefile '/usr/share/mysql/english/errmsg.sys'
[root@zhang bin]# ./mysql_install_db --datadir=/usr/local/mysql/mydata/data/ 2018-08-18 03:09:14 [WA ...
- webpack知识点整理
作用域 es6里模块化的写法 会存在的问题,变量.方法名字雷同,外部文件调用的时候出现问题 如 a.js里 var a='susan' b.js里 var a='jack' 问题解决方案,添加包裹 a ...
- GitLab-CI/CD入门实操
以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...
- python zxing包解析二维码报UnicodeDecodeError错误解决办法
一般错误的原因是这个库不支持中文的解码(二维码内容包含中文). 修改如下: 进入zxing.__init__.py代码中,类BarCode下,parse方法中: 找到下面这两行原代码如下: 1 raw ...