网段标识:192.168.1.0,不能当做IP标识 网关:192.168.1.1
在计算机网络中发送信息,我们只需要填写内容和对方的IP地址,操作系统会根据目标IP自动查询ARP表获取对方的MAC地址,从网卡发出。各种终端设备的通信都是由内部网卡设备所进行的,所以我们统一用网卡表示设备。
每张网卡在出厂时都写入一个地址,就是 MAC 地址,这个地址由六个字节构成,前3个数是网络硬件厂商编号,后三个数是网卡序列号,所以 MAC 地址是全球唯一的地址(可以修改)。
计算机通过网线接入到交换机,交换机把网卡的 mac 地址和交换机的端口号绑定
DHCP 协议:
DHCP 协议自动帮我们配置 IP 地址,当电脑插入网线或者手机连入wifi,操作系统网络协议栈会自动向外发送一包 DHCP 请求,请求为其分配 IP 地址,路由器获取到 DHCP 请求后,会为其分配一个 IP 地址,并通过 DHCP 回复报文发送回去,操作系统收到 DHCP 回包后,将其分配的 IP 地址配置到网卡上。
ARP 协议:(IP 和 MAC 映射表)
当计算器 A 想向计算机 B 发送消息时,操作系统并不会立即发出,它会先发送一包 arp 广播报文出去,问一下 (目标 IP)192.168.1.10 的 MAC 地址是多少,此时网络中的所有设备都收到了这一包请求报文,除了 192.168.1.10 以外的设备都会丢弃这包请求报文,只有 192.168.1.10 的设备会回复自己的 MAC 地址是多少。计算机 A 收到了回复,知道了计算机 B 的 MAC 地址,它首先会把计算机 B 的 MAC 地址缓存起来,以便下次使用。然后操作系统补全下述信息中的目标 MAC ,把信息从网卡中发出,交换机根据数据包中的目标 MAC 地址找到了计算机 B 所在的端口,从此端口发送出去,数据就被计算机 B 收到了。
交换机的作用: 根据数据包中的目标 MAC 地址找到它对应的物理端口,我们只要知道某个网卡的 MAC 地址在哪个端口上,我们就能正确的把数据包发给它。所以在交换机中,有一张端口与 mac 地址的映射关系表,我们称之为 mac 地址表。交换机只关心数据包中的 MAC 地址,而不会关心 IP 地址。处于 MAC 地址在 TCP/IP 协议中处于第二层数据链路层。
SNAT(源地址转换技术):
DNAT:
应用层:
传输层:TCP/UDP
网络层:路由器(IP分组转发)
数据链路层: 交换机
物理层:
端口号:8080
物理端口:端口1、2、3
每一台计算机和网络设备都有一张 IP/MAC 映射表,交换机不需要 IP/MAC 映射表,它有一张 MAC/物理端口表
路由器内部还有一张NAT转换表,用于公网IP和私网IP的切换
跨网通信的三种情况:
1、客户端向服务器发起访问
2、服务器回答客户端
3、服务器转发客户端之间的信息
PC1 的分组数据包是由 PC1 运行 TCP/IP 协议代码封装得到的
如果PC1要和服务器1通讯,但是你会发现 PC1 分组数据包的目标 IP 并不是服务器1的 IP 地址。在跨网通讯的时候,目标 IP 不能写服务器的私网IP,私网IP是可以重复的,我们是没有办法通过私网 IP 进行通信的,我们要写公网IP,这里的公网IP指的是服务器连的路由器出来的公网IP。
s port 服务器端口8080
mac2是路由器的MAC地址,根据IP地址的比对,交换机只关心分组数据包中的MAC2
PC1通过广播ARP协议获得路由器的IP地址。属性里面点击自动分配,路由器内部运行DHCP协议,可以把局域网中的IP地址、子网掩码、网关通通告诉PC机
PC机和服务器如何通讯?
在上述图中,我们选择PC1和服务器1通讯。
澄清几个关键知识点:交换机中只存在 MAC/物理端口 表,PC机、服务器和路由器中都存在IP/MAC 映射表,路由器中存在NAT转换表,用于公网IP和私网IP的切换。对于IP/MAC 映射表,PC可以通过广播 ARP 协议获得路由器的IP地址来补全这张表;同时配置的时候属性里面点击自动分配,路由器内部运行DHCP协议,可以把局域网中的IP地址、子网掩码、网关统统告诉PC机。
对于PC1想要发送的数据,在PC1运行 TCP/IP 协议代码会变成分组数据包,其中包括数据、源IP、目标IP、要发送下一站的MAC地址和服务器的端口信息。我们可以发现目标IP并不是服务器的IP地址,因为在跨网通讯的时候,目标 IP 不能写服务器的私网IP,私网IP是可以重复的,所以我们是没有办法通过私网 IP 进行通信的,我们要换成公网IP,这里的公网IP指的是服务器连的路由器出来的公网IP,也就是172.156.2.15。
数据的传输在表面上是靠IP地址传输,实际上底层是靠MAC地址传输,在分组数据包中,通过对比源IP和目标IP可以知道PC和服务器是不是在同一个网段中。如果在同一个网段中,通过交换机中的MAC/物理端口表找到目标PC的MAC地址和物理端口,然后借助交换机对数据进行转发;如果不在同一个网段中,那么分组数据包的MAC地址就是局域网路由器的MAC地址,查 MAC/物理端口 表可知MAC2为局域网路由器的MAC地址。于是PC1的数据借助交换机传输到了局域网路由器。
路由器有两个IP地址,分别是内网IP和外网IP,内部的NAT转换表存储着这两个IP外加端口号,这个端口号是为了区分是哪个PC机发送的数据。因为无论哪个PC机发送的数据,对外的PC都是路由器的外网IP,要确定谁接收数据那么肯定是要别的条件,通过端口号的不同确定谁接收和发送数据是可行的。此时路由器的分组数据包如下如图所示,下一站的MAC由IP/MAC表确定。
同时最上面的局域网路由器,它的分组数据包的NAT转换表中的私网IP由NAT转换表中端口号8080和公网IP共同确定,通过IP/MAC表确定服务器的mac地址,从而进行数据的传输。需要注意的是,服务器的端口(例8080)是要早就确定的,不能变化。