网络技术入门(二):两个主机(客户端和服务器)通信过程(宏观过程)

自己写文章习惯性在每一个小节上做总结,有时候方便理解可以先看总结的内容。
本章从宏观(硬件)角度看两个主机之间的通信过程。

本系列文章
网络技术入门(一):网络技术基本认识
网络技术入门(二):两个主机(客户端和服务器)通信过程(宏观过程)
.待更新
.
.

本章需要了解的概念以及他们的作用:
1 IP地址,子网掩码,网关,DNS服务器IP地址,MAC地址
2 集线器,交换机,路由器
3 ARP缓存表,MAC地址表,路由表
4 互联网中两个主机之间通信时,以上概念在通信过程中作用和所担任的角色

这里啰嗦几句。有时候我们去记这些概念总会忘。主要还是没有深入了解他们的作用。
比如客户端给服务器发送请求。需要什么,需要目标IP地址(ip+端口号)和目标主机MAC地址。
为什么会需要IP地址和MAC地址?
1 通过目标IP地址能找到目标主机所在的子网络(局域网)
2 通过目标MAC地址(物理地址,写在网卡bios上)可以在目标子网络中找到目标主机
3 通过端口号可以在目标主机上找到目标进程(服务)

所以只有真正理解了概念在当前系统中所担任的角色和作用,才会真正的记住她。

本章通过两个场景说明了两个主机之间的通信过程。同一局域网内两个主机通信;不同局域网内两个主机通信
本章的思路
1 两个主机通信涉及到的配置和硬件(其实互联网总中所有通信都会涉及到)
2 一个主机向两一个主机发送数据包宏观过程

在这里插入图片描述

一、 两个主机通信涉及到的配置和硬件

因为从硬件角度说明两个主机之间的通信,就需要涉及到几个概念:

了解了以下概念在网络交互中的作用,就对整个网络交互有了宏观上的认识,这里要划重点(单纯看概念不是很好理解,配合后面主机交互过程更好掌握)
1 配置相关

配置相关:
1) 本机的IP地址:由管理员分配,用来标识互联网上每个网络或者主机的逻辑地址。(物理地址是MAC地址)。 通过IP地址,才能在互联网中找到该主机所在的子网络(局域网) 通过MAC地址,才能找到子网络中目标主机(网卡)
2) 子网掩码:子网掩码需要和目标IP地址配合使用,说明该目标IP是在局域网上还是广域网上。
3) 默认网关(网关的IP地址)
4) DNS服务器(DNS的IP地址): 域名系统协议,主要用于域名与 IP 地址的相互转换。已知域名来获取对应IP地址或已知IP地址获取对应域名。
在这里插入图片描述
上图是计算机网络相关的属性配置图,无论是动态(自动)获取还是静态设置,以上四个属性都是计算机上网不可或缺的。

2 硬件相关

硬件相关:
1) 主机:个人计算机,服务器,打印机等有网卡的设备。
2) 交换器:负责同一子网中不同主机间通信,是根据MAC地址表转发数据帧的。有目的的转发或广播
3) 集线器:负责同一子网中不同主机间通信,是根据MAC地址表广播数据帧的。只能广播
4) 路由器:负责不同网络之间的通信。

ARP协议:地址解析协议,已知目标ip地址来获取目标mac地址

ARP缓存表 MAC地址表 路由表
工作层次 网络层 数据链路层 网络层
工作设备 主机电脑(和路由器) 交换机 路由器(和主机)
作用 IP地址与MAC地址的对应关系 Mac地址与接口的对应关系 记录着到不同网段的信息

下面用两张图方便理解主机ARP表、MAC地址表和路由表在网络框架中的位置,对应的设备和对应的工作层次。其实在主机上也有路由表,在路由器上也有ARP表这里暂不说明。

在这里插入图片描述
在这里插入图片描述
这里先先概念做总结,到底
1 IP地址,mac地址,子网掩码,DNS服务器地址这些有什么作用,如何工作的?
2 交换机,路由器在网络通信中担任什么样的角色?
3 ARP缓存表,MAC地址表,路由表在网络通信中有什么作用?
最后一个小节会详细说明。

总结
ARP缓存表
记录着局域网内其他主机的IP地址与MAC地址的对应关系。
.
MAC地址表
记录着MAC地址与接口的对应关系。
.
路由表
记录着一个子网络到另一个子网络的路径。目的IP地址,下一个路由器地址,网络掩码等

总结
路由器
1 连接互联网中的不同子网络。
2 实现互联网中不同子网络之间的数据转发。
3 分配IP地址
.
交换机(单播或广播)和集线器(广播)
1 连接局域网中的不同主机。
2 实现局域网不同主机之间的数据交换。
3 分配网络数据

总结
1 DNS:
域名系统协议,主要用于域名与 IP地址的相互转换。已知域名来获取对应IP地址或已知IP地址获取对应域名
2 ARP协议:
地址解析协议,已知目标ip地址来获取目标mac地址


二 两个主机通信过程

参考上图,互联网中主机和主机之间的网络通信无非以下两种情况。这里只描述客户端向服务器发送请求的宏观过程(服务器返回响应包的过程一样)
1 同一子网络内主机通信:子网络A中的主机A,向子网络A中的主机B发送数据包过程
2 不同子网络内主机通信:子网络A中的主机A,向子网络B中的主机甲发送数据包过程


主机A给另一个主机发送数据包的时候,首先会拿到目标主机的IP地址(你要问如何拿到,嵌在web页面,app写死在代码或者通过请求拿到等)

1 如果我们的请求地址是域名形式,需要先请求DNS服务器获取对应的IP地址
2 主机A会用本机配置24位子网掩码目标IP地址进行“与”运算(具体计算过程自行查阅)。计算出目标IP与本机是不是在同一网段(同一局域网内)。

1 如果在同一网段:同一子网络内主机通信(以下图主机A与主机B通信为例)

在这里插入图片描述
这里有两种情况,在主机A的ARP表中,能查到目标主机MAC地址和查不到目标主机MAC地址的情况:

情况1:
1 主机A查询 ARP表(目标IP与目标MAC地址关系表), 如果查询到了目标主机B的MAC地址,发送数据帧。
2 交换机收到数据帧,先记录源mac地址和对应接口(接口为f 0/1)(这个过程主机A的MAC地址就被记录到交换机 MAC地址表中了,下次有其他主机发送数据包到主机A,可以直接查询MAC地址表,通过MAC地址就直接找到主机A对应的接口,从而能和主机A直接通信了)。
3 查询MAC地址表中是否有目标主机B的mac信息,如果有将数据帧发送出去(单播)
4 主机B收到广播后会响应
5 交换机收到数据帧,会记录数据帧中的源MAC地址(也就是主机B的MAC地址),这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。

情况2
1 主机A查询 ARP表(目标IP与目标MAC地址关系表), 如果没有查询到,发送ARP请求
2 如果没有查询到了mac地址, 发送ARP请求(ip是目标主机ip,mac地址是广播帧 FF-FF-FF-FF-FF-FF)
3 交换机收到广播帧,会在子网络内广播(出了发送方)
4 主机B收到广播帧,校对IP是否是自己,记录主机A的ip和mac地址,发送arp应答(包括自己的mac地址)(这里在同一网段内除了主机A的所有主机,主机B,主机C,主机D都会收到广播帧,但是只有主机B会处理
5 主机A收到应答,在自己的ARP缓存表中记录主机B的ip和mac地址
6 而此时交换机已经学习到了主机A和主机B的MAC地址了,实现单播了。

总结:
在同一网段中两个主机通时,如果主机A的ARP表中有主机B的IP地址和MAC地址对应关系,只需要发送一个数据包的请求;如果没有查到主机B相关的对应关系,需要先发送一个ARP请求获取主机B的MAC地址,然后再发送数据包请求。

2 如果不在一个网段:不同子网络内主机通信(以下图主机A与主机甲通信为例)

在这里插入图片描述
如上图:
不在同一网段的情况,主机A向主机甲发送数据包,需要知道主机甲的 IP地址和网关MAC地址

1 主机A通过ARP协议获取网关MAC地址或者主机A本地手动配置的网关。这时就有了目标主机的IP地址和MAC地址。主机A会更新本地的ARP缓存表
2 使用主机B的IP地址和MAC地址的数据包,发送数据。
3 交换机收到数据包,会把主机B的MAC地址和接口更新到MAC地址表。
3 数据包经由子网络A的交换机到网关,再到路由器,路由器经过各种转发,找到主机B所在的子网络B。(现在通常指的网关就是路由器的IP
4 子网络B中交换机接收到数据,会查询MAC地址表
5 查询到主机B的MAC地址与接口对应的关系。数据转发到主机B
6 主机B会更新本地的ARP缓存表,记录主机A的IP地址与MAC地址。
7 数据包应答过程和发送过程一样

总结:
如果感觉上面理解太麻烦,这一这样理解
我们不区分主机A要发送的报文对象 是否和主机A在一个网段。
1 主机A向目标主机发送报文。
情况1:
2 查询本地ARP缓存表,找到目标主机的IP地址和对应的MAC地址后就会进行数据传输。
情况2:
2:如果未找到,主机A会广播一个ARP请求报文(无论是从同一网段下的目标主机获取到的MAC地址,还是从从路由器获取的网关地址),获取到目标主机的MAC地址(也可能是网关地址),更新本地ARP缓存表。然后进行数据传输。
3 后面的传输过程和上面一样就不讲述。

发布了15 篇原创文章 · 获赞 28 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_27096221/article/details/105650754