Bootstrap

网络技术入门(二):两个主机(客户端和服务器)通信过程(硬件转发角度)

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

本系列文章
网络技术入门(一):网络技术基础知识系统归结
网络技术入门(二):两个主机(客户端和服务器)通信过程(硬件转发角度)
网络技术入门(三):两个主机(客户端和服务器)通信过程(数据包交换角度)
网络技术入门(四):两个主机(客户端和服务器)通信过程(TCP/IP通信角度)
网络技术入门 :HTTP报文和TCP/IP数据包
网络技术入门 :一篇文章让你彻底理解网络通信中各种协议和设备的作用

.待更新
.
.

本章需要了解的概念以及他们的作用:
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地址获取对应域名。
在这里插入图片描述
上图是计算机网络相关的属性配置图,无论是动态(DHCP协议)获取还是静态设置,以上四个属性都是计算机上网不可或缺的。

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缓存表
每一个主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到MAC地址(硬件地址)的映射表,这些都是该主机目前知道的一些地址
.
MAC地址表
记录着局域网上各主机和路由器的MAC地址与接口的对应关系。
.
路由表
记录着一个子网络到另一个子网络的路径。目的IP地址,下一个路由器地址,网络掩码等

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

总结
1 DHCP协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率
2 DNS:
域名系统协议,主要用于域名与 IP地址的相互转换。已知域名来获取对应IP地址或已知IP地址获取对应域名
3 ARP协议:
地址解析协议,已知目标ip地址来获取目标mac地址


二 两个主机通信过程

该小节用两种方式说明两个主机之间通信过程:图示方式和文字叙述方式。
最主要关注的是,两个主机是或否在同一个网段(局域网,子网络)。

1 图示方式

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

在这里插入图片描述


2 文字方式

1 同一子网络内主机通信:子网络A中的主机A,向子网络A中的主机B发送数据包过程
2 不同子网络内主机通信:子网络A中的主机A,向子网络B中的主机甲发送数据包过程

主机A用本机配置子网掩码和目标主机的IP地址运算,计算出主机A和目标主机是否在同一网段。

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

主机A检查自己的ARP缓存表,检查是否有目标主机IP地址到MAC地址的映射。
如果有映射:
主机A:
主机A构造报文,发送报文给交换机。
交换机:
1 交换机收到主机A发送的报文。交换机更新MAC地址表,将主机A的MAC地址和报文入端口号记录下来。交换机检查自己的MAC地址表,检查是否有主机B的MAC到端口的映射。
2 如果有映射,交换机将报文从此端口转发出去。
3 如果没有映射,交换机将报文从此端口广播出去。所有主机都会收到此报文,只有主机B会向主机A回复。
主机B:
主机B收到交换机发送的报文。主机B更新ARP缓存表,记录主机A的IP地址到主机A的MAC地址的映射。主机B向主机A回复。
交换机:
交换机收到主机B发送的回复报文。交换机更新MAC地址表,记录主机B的MAC地址和报文入端口号。因为交换机MAC地址表中已经有主机A的MAC地址到端口的映射,所有交换机直接转发(单播)数据包给主机A
主机A:
主机A收到交换机发送的回复报文。更新ARP缓存表,记录主机B的IP地址到MAC地址的映射。
到此数据交换完毕。

如果没有映射:
主机A:
主机A向交换机发送ARP报文请求,以获取主机B的MAC地址。
交换机:
交换机收到主机A发送的报文。交换机将报文从此端口广播出去,所有主机都会收到报文,只有主机B会向主机A回复。
主机B:
主机B收到交换机发送的报文。主机B更新ARP缓存表,记录主机A的IP地址到主机A的MAC地址的映射。主机B向主机A回复。
与主机A向主机B回复报文的过程类似,这里不再重复。
。。。
主机A:
主机A收到主机B的回复报文后,拿到了主机B的MAC地址。后面再发数据报文。

这里要注意的的是,局域网内两个主机数据交换。
如果主机A在ARP缓存表中能查到主机B的IP地址到MAC地址的映射。直接发送数据报文就可以。(一个请求)
如果没有查到映射。需要先发送一个ARP请求拿到主机B的MAC地址,然后再发送数据报文。(两个请求)

在这里插入图片描述


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

主机A检查自己的ARP缓存表,检查是或否有网关(路由器)的IP到MAC地址地址的映射
如果有映射:
主机A:
主机A构造报文,发送报文给交换机。
交换机:
1 交换机收到主机A发送的报文。交换机更新MAC地址表,将主机A的MAC地址和报文入端口号记录下来。交换机检查自己的MAC地址表,检查是否有网关的MAC到端口的映射。
2 如果有映射,交换机将报文从此端口转发出去。
3 如果没有映射,交换机将报文从此端口广播出去。所有主机都会收到此报文,只有网关会向主机A回复。
主机A:
主机A拿到路由器A的MAC地址后,会把数据包发给路由器A。
路由器A:
路由器A收到数据报。
因为主机甲与路由器A不在一个网络所以这里不会在路由器A所在的子网络内找主机甲MAC地址,会直接找下一个路由的MAC地址),路由器A查询路由表获取路由器B的IP地址,使用该IP地址通过ARP请求获取路由器B的MAC地址。路由器A把数据报转发给路由器B
路由器B:
路由器B收到路由器A转发的数据报。计算出主机甲在路由器B所在的子网络。
路由器B查询ARP缓存表,如果找到主机甲IP地址到MAC地址的映射,发送数据报给主机甲。
如果没有找到主机甲IP地址到MAC地址的映射,先发送一个ARP广播,拿到主机的MAC地址后,发送数据报给主机甲

主机甲回复主机A的数据报过程同上

如果没有映射:
主机A:
主机A向交换机发送ARP报文请求,以获取网关(路由器A)的MAC地址。
主机A拿到路由器A的MAC地址后,会把数据包发给路由器A。
路由器A:
路由器A收到数据报。
后面的过程同上。

在这里插入图片描述


关于两个主机通信过程,如果觉得上面描述不够简洁,可以直接看下面简化的描述方式:

主机A向目标主机发送报文的简化过程:
根据目标主机IP地址和本机的子网掩码判断,目标主机和主机A是否在一个子网内

情况1:在同一个子网络内

1 查询本地ARP缓存表,找到目标主机B的IP地址和对应的MAC地址后就会进行数据传输。
2 查询本地ARP缓存表,没有找到目标主机B的IP地址和对应的MAC地址,广播一个ARP请求,拿到主机B的MAC地址后,再进行数据传输
.

情况2:不在同一个子网络内

1 查询本地ARP缓存表,找到目标主机B的IP地址和网关MAC地址后就会进行数据传输。后面过程有路由器转发(计算主机B和路由器是否在一个网段,如果在数据报发送给主机B。如果不在ARP找到下一个路由器MAC地址,把数据报转发给下一个路由器。重复过程直至找到主机B所在的子网络)
2 查询本地ARP缓存表,没有找到目标主机B的IP地址和网关MAC地址,广播一个ARP请求,拿到网关> MAC地址后,后面过程有路由器转发(同上)

总结:
如果感觉上面理解太麻烦,可以这样理解
1 主机A和主机B在同一个子网络,主机A向主机B发送数据,需要知道主机B的MAC地址主机B的IP地址
2 主机A和主机B不在同一个子网络,主机A向主机B发送数据,需要知道网关的MAC地址主机B的IP地址
.

;