1、交换机和路由器区别
交换机主要是用于组建局域网,而路由器则是负责让主机连接外网。
2、局域网间通信
例子1:

1. PC1与PC2通信时,在PC1电脑中,应用层产生数据交给传输层;传输层进行数据的分段,使数据的大小适合在网络上传递,根据应用层不同软件产生的数据,选择不同协议栈进行封装TCP或UDP,再进行不同服务端口号的封装(例:WWW 80 ,FTP 21),再传递给网络层;网络层在数据包头部进行封装源IP、目的IP,根据上层协议栈标识不同协议号,当IP包头封装TCP时协议号为6、UDP协议号为17,用来标识上层使用的协议,继续传递给数据链路层; 数据链路层在数据包头部进行帧的封装,封装源MAC、目的MAC,由于不知道目的MAC地址,会进行ARP的广播包,封装一个全F的类型字段为0X0806广播包,交付给物理层,物理层转换成电信号(bit流),发送到交换机;
2. 交换机接收后发现为ARP的广播包,进行其解封学习到PC1的MAC地址,继续封装并除接受端口以外的端口再次进行ARP的广播;
3. 路由器收到交换机发来的ARP广播,进行解封,查看到数据包中的类型字段为0X0806即ARP的广播包,进行回复,源MAC为路由(网关)的MAC,目的MAC为PC1的MAC,类型字段为0X0806,经过物理层将数据转换为电信号(bit流)发送给交换机;
4. 交换机收到后进行解封,学习到源MAC(路由器的MAC ),发现目的MAC已经存在自己的MAC表中,查看目的MAC对应的端口,并从对应的端口发送到PC1;
5. PC1接收数据包后进行解封,学习到路由器(网关)的MAC,在数据链路层将目的MAC封装为路由器(网关)的MAC, 类型字段为0X0800,并在数据帧尾部封装FCS,来校验数据的完整性,然后向下层传递给物理层,物理层把数据帧转换成电信号(bit流),发送到交换机;
(注:不同网段的通信,PC机先把数据传送到网关)
6. 交换机接收到数据包,查看到目的MAC已存在自己的MAC表中,根据自己MAC表中对应的端口发送出去;
7. 路由器接收到数据包后进行解封装,在数据包头部发现目的ip,便查找路由表条目中对应的端口,便对数据进行重写,由于不知道目的主机的MAC地址,路由器会发送ARP广播,PC2收到数据包进行解封,发现是ARP广播,类型字段为0X0806,
然后对其进行封装回复,源MAC为PC2的MAC,目的MAC为路由器的MAC,路由器收到后把PC2对应的MAC地址和端口记录在MAC表中,
8. pc2接受到信息,便对数据进行解封装,发现目的ip是给自己的,然后继续解封装,然后把数据传送给应用程序qq。然后对路由回复,在传输层设源端口号为8000,目的端口号为4000,封装udp头部。在网络层将源ip设为192,。168.2.1,目的ip设为192.168.1.2,协议号为17,在数据链路层将源mac设为12个3,目的mac设为12个1,类型字段为0x0800,封装FCS,然后经物理层将数据转为bit流传给路由器,路由器再查找路由表,并对数据进行重写,从f0/0传送出去,交换机解封装,查找mac表,再对数据进行封装,从f0/0传送给pc1.通信完成。

例子2:

1)HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由A的转发。

2)HostA通过ARP请求获取网关路由A的E0口的MAC地址,并在链路层将路由器E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己。

3)路由器A从E0可接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器2的E1接口的MAC地址。

4)路由B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器的E0接口发送给HostB。

5)此时HostB才会收到来自HostA发送的数据。

3、局域网内通信
ARP协议:ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。

1)如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机B的MAC地址作为目的MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。

2)当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。

3)当主机B接受到此数据帧后,会校对IP地址是否是自己的,并将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。

4)主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。

4、总结
1)每个主机内都有ARP表。

2)交换机主要是转发数据的,根据MAC表,转发给指定接口,MAC表没有的话从非接受接口发送出去(也就是广播)。

3)局域网内通信是通过交换机的(同功能的),假如主机ARP表中没有目标MAC地址,发送ARP请求信息到交换机,交换机有的话直接回,没有的话就广播等目标返回,更新ARP表。源主机得到目标MAC重新填充数据包发送给交换机转给目标主机。

4)局域网间的通信通过路由器,目标主机在另一网络,这里可以将路由器看出目标主机,源主机发送ARP请求到交换机->路由器,路由器返回更新交换机和源主机的MAC表和ARP表,源主机将数据发送到路由器,检查路由表是否有目标网段相匹配的项,重新封装包,源MAC为路由MAC,目标MAC为目标路由2MAC,当到达路由2,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器的E0接口发送给HostB。

局域网内通信和局域网与局域网间通信相关推荐

  1. 占书明:如何实现局域网内文件共享?如何建立局域网共享服务器

    如何实现局域网内文件共享?如何建立局域网共享服务器 很多时候我们为了方便需要在局域网中共享文件,那在局域网中要怎样设置共享呢?占书明在这里简单介绍一下. 左键点击右下角网络连接图标,点击打开网络和共享 ...

  2. 计算机网络如何新建vlan和划分vlan,[单选] 划分VLAN后,不同VLAN的计算机之间不能实现二层通信。如果在VLAN间通信,需要建立()...

    [单选] 划分VLAN后,不同VLAN的计算机之间不能实现二层通信.如果在VLAN间通信,需要建立() 更多相关问题 图是王强同学在研究性学习活动中,为某仓库设计的一种防盗报警器.其踏板放在仓库的门口 ...

  3. 网关,路由,局域网内的通信及不同的网络间通信实现的原理剖析

    百度百科定义网关: 网关(Gateway)又称网间连接器.协议转换器.网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连.网关既可以用于广域网互连,也可以用于局域网 ...

  4. java获取局域网内主机,java怎么获取局域网内所有主机ip

    java怎么获取局域网内所有主机ip 关注:53  答案:2  mip版 解决时间 2021-01-27 21:31 提问者夢岭杺 2021-01-27 12:02 java怎么获取局域网内所有主机i ...

  5. xp找不到局域网内其它计算机,在W10局域网内找不到其它共享电脑的解决方案

    系统介绍 有一朋友新装的是W10专业版系统,IP设置没问题,上网也没有问题.但在局域网内需要访问其他XP SP3系统的电脑时,却出现了找不到局域网内其他电脑,其他电脑也看不到这台W10电脑,怎么办?现 ...

  6. 局域网内计算机无法ping通,局域网内PING不通解决方法

    Ping命令监测网络的使用顺序 正常情况下,当你使用Ping命令来查找问题所在或检验网络运行情况时,你需要使用许多Ping命令,如果所有都运行正确,你就可以相信基本的连通性和配置参数没有问题:如果某些 ...

  7. 利用trunk实现vlan内通信_实现不同VLAN间通信——单臂路由

    单臂路由是一种实现不同VLAN间通信的技术,其方法是在虚拟机内接口上配置虚拟子接口. 该技术是一种应急技术,仅仅用于网络预算不足,无力购买三层交换机,或者网络规模很小的情况下使用. 一.实验 路由器只 ...

  8. linux线程间通信优点,进程间通信与线程间通信【转】

    一个进程写管道:写入字节数小于PIPE_BUF是原子操作,写操作在管道缓冲区没有及时读走时发生阻塞. 一个进程读管道:读操作在管道缓冲区没有数据时发生阻塞. 以前一直想找个机会总结一下进程和线程的通信 ...

  9. java实现局域网内单对单和多对多通信的设计思路

    这个看起来是很简单的,不就是socket吗,但是,要想有一个好的用户体验,还是很难的,主要问题有:         既然是局域网,那么就必然没有一个固定的IP地址作为主机,这个问题怎么解决? 好吧,有 ...

  10. 如何让局域网内人访问自己在局域网中建立的网站

    1.保证你的apache能正常启动,然后打开httpd.conf那个配置文件,检查一下Listen服务器端口,默认监听端口为80,不是就改成80 2.配置服务器根目录权限 <Directory  ...

最新文章

  1. 大学毕业生如何应对“没有工作经验”的难题
  2. python列表生成多个号码_python按需生成固定数量电话号码并保存为excel(不重复)...
  3. python中global 和 nonlocal 的作用域
  4. 织梦自定义html文本,织梦自定义标签dede:sql根据自定义字段填的文章id获取相关文章...
  5. linux 软件 runtime,Objective-C中runtime机制的应用
  6. 【扩频通信】基于matlab GUI扩频通信系统仿真(带面板)【含Matlab源码 1587期】
  7. 基于Springboot的医院药品管理系统的设计与实现.zip(论文+项目源码)
  8. python实现微信自动发信息软件_Python实现给微信好友自动发送消息的示例
  9. treetable php,第105款插件:jquery.treetable.js的使用
  10. 三种免费批量下载QQ空间相册方法-2018.05.20亲测有效
  11. 【生活中的逻辑谬误】偷换概念和民主谬误
  12. 如何能从自我怀疑中走出来?
  13. smp irq affinity介绍
  14. 驱动开发:断链隐藏驱动程序自身
  15. P2P安防摄像头、门禁
  16. MT4自定义指标导入方法
  17. SDUT-2178 链表的有序集合
  18. wannier拟合能带总是拟合不上_VASP+Wannier90方法拟合单层MoS2的能带,请问如何改善拟合结果?...
  19. 数据库作业4——数据查询
  20. exls下载后显示jsp_jsp页面点击连接,生成excel文件,然后下载

热门文章

  1. RemoteViews的用法
  2. 牛客每日练习----骑行川藏,Lucky Coins,不凡的夫夫
  3. AVX-512指令的前世今生
  4. 编译原理之简单语法分析器(c语言)
  5. 关于office2013和2016的卸载
  6. web前端自学该怎么规划学习
  7. RK3568-SARADC
  8. 锚点链接点击锚点后不改变url的方法
  9. 七彩虹显卡软件测试,【七彩虹FM2A75评测】多款软件测试-中关村在线
  10. C#中sealed的用法