不同子网络中的通信过程

从输入www.baidu.com经历了什么

一、DNS(网址->IP)

二、ARP(IP->MAC)

  1. A->B:有数据发送,数据封装ip之后发现没有主机B的mac地址。然后ARP在本网段广播:检查目标地址和源地址是否在同一网段,①在同一网段,返回目标ip对应的mac。②不在同一网段,需要++++默认网关的ip和mac信息++++。(局域网默认网关一般可以由路由器充当)。
  2. 显然不在一个网段。主机将数据包先放到缓存中,然后++++广播++++ ARP查询报文:++++封装自己的mac地址为源mac++++ ,++++目的mac地址全写F++++ (作为广播地址),++++请求本局域网的默认网关mac地址++++。
  3. 路由器收到广播数据包,发现是请求自己的mac地址。首先将源地址的mac++++添加++++ 到自己的mac地址表中。然后路由器++++单播++++ 一个ARP应答:封装自己的ip地址为源ip自己的mac地址为源mac,主机A的ip为目的IP主机A的mac为目的mac。
  4. 主机(A)收到应答包后,将++++默认网关mac地址+目的地址ip++++ (跨网关通信,其他网段ip地址对应的mac均为默认网关的mac),然后将缓存中的数据包,++++封装默认网关mac地址++++后进行发送。(前面已经封装了目的ip)。
  5. 路由收到数据包,++++检查目的++++ ip地址,发现不是给自己的,需要进行路由,然后++++查询++++ 路由表,确定是需要发往另外一个网段中B的ip地址。路由发送之前查询mac地址表,发现没有主机B的映射。路由器广播arp请求查询主机B的mac地址(++++原理同2、3步++++,主机B收到请求后首先会添加网关的mac地址,然后单播回复arp请求)。
  6. ++++路由器得到主机B的mac地址映射++++ 后,也将其添加到路由器的mac地址表中,++++重新封装数据包的源地址mac和ip++++(路由器的ip和mac作为源地址,目的地址仍然是主机B信息),发送给主机B。(多级网关(路由)就这样一级一级下去)。
  7. 主机B收到数据之后,进行处理,发送过程结束。
  8. 如果主机B收到数据后进行回复,主机B会进行地址判断,不在同一网段,然后决定是否将数据发送给网关,主机B查询mac地址表获得网关mac地址,将数据封装后发送(arp地址解析的过程不再需要了,mac地址表条目有一定的有效时间),网关收到数据后直接查询mac表,将二层帧mac地址更改为A的mac发送出去。如此,主机A收到主机B的回复。

综上,跨网段通信过程中有以下过程:

1、判断地址是否同一网段;

2、查询目的ip地址对应的mac地址(发送arp请求);

此外需注意点:

1、ARP请求以广播发送(1对n)、以单播回应(1对1);

2、路由器隔离广播。每一个网段都是独立的广播域(arp只能在本网段广播);

3、跨越网段通信需要使用默认网关的mac地址;

三、NAT(不同子网下设备地址的映射)

跨网段通信需要使用网关建立链接;(局域网1到局域网2,此情况下一般路由器充当网关);

局域网访问公网服务器需要使用NAT网关进行地址映射;

1、局域网中的一台主机 A如何与外网服务器通信?

局域网中的主机A,想要访问外网服务器时,是通过NAT,将局域网ip地址+端口映射成外网ip地址+端口(NAT网关会记录映射表)。也就是说要与外网地址通讯,实际上也是需要一个外网地址。

2、服务器的返回数据包,是如何找到内网的客户端主机A,并将数据传给主机A上运行的程序P呢?

服务器返回消息时,返回到NAT,NAT根据映射表找到当时局域网内的ip+端口,并发送到局域网内的目标机器上,并发给对应的程序P;(ip+端口号确定应用程序P)。

四、其他基础

1、局域网使用的IP地址范围:

A类地址:10.0.0.0 - 10.255.255.255

B类地址:172.16.0.0 - 172.31.255.255

C类地址:192.168.0.0 -192.168.255.255

2、TCP/IP四层模型常用协议:

应用层:http、DNS、FTP

传输层:TCP/UDP

网络层:IP、ICMP(ping命令,核心也就是发送ARP报文进行地址探测)

网络接口层:ARP(ip->mac)、RARP(mac->ip)

3、OSI7层模型下设备工作层:

路由器:网络层

交换机:数据链路层

集线器:物理层

相关推荐
吃土少女古拉拉1 小时前
什么是计算机网络
计算机网络·学习笔记
C++忠实粉丝2 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
->yjy14 小时前
计算机网络(第一章)
网络·计算机网络·php
摘星星ʕ•̫͡•ʔ15 小时前
计算机网络 第三章:数据链路层(关于争用期的超详细内容)
网络·计算机网络
战术摸鱼大师20 小时前
计算机网络-理论部分(二):应用层
计算机网络
C++忠实粉丝1 天前
计算机网络socket编程(2)_UDP网络编程实现网络字典
linux·网络·c++·网络协议·计算机网络·udp
勤奋的小王同学~1 天前
(计算机网络)期末
服务器·网络·计算机网络
小镇敲码人2 天前
【计算机网络实验】之静态路由配置
网络·计算机网络·智能路由器
代码欢乐豆2 天前
计算机网络在线测试-概述
计算机网络