网络通信原理:为什么一个IP账号通过路由器可供多人同时使用?

        学习过ip中的人都知道,ip的作用就是在网络通信中标识唯一一台主机。那么实际中,你购买了一个账号,运行商给你分配一个ip,通过路由器为什么就可以供多人(多台电脑)同时使用呢?这个时候不就和前面矛盾了吗?

1.让两台电脑之间通信:网线

想让两台电脑之间通信,最简单的方式就是用一根网线连接双方即可。进行如下的配置:

  1. 如果两台电脑之间通过网线连接是可以直接通信的,但是需要提前设置好ip地址以及网络掩码
  2. 并且ip地址需要控制在同一网段内,例如 一台为192.168.1.1另一台为192.168.1.2则可以进行通信
  3. 使用ping命令测试是否连通,然后就可以基于windows网路共享等实现一些基础网络操作

2.如何让三台电脑之间通信:集线器

一般一台电脑只有一个网线接口,如果我想让三台电脑互相通信呢,怎么办,那么单独通过网线就实现不了了?这个时候可以使用集线器(hub)。

如上,三台或者多台设备通过集线器连接起来,就是大家把网口的另一端都连接在集线器上即可。

  1. 当有多态电脑需要组成一个网时,那么可以通过集线器(Hub)将其链接在一起,配置同一网段Ip.
  2. 一般情况下集线器的接口较少
  3. 集线器有个缺点,它以广播的方式进行发送任何数据,即如果集线器接收到来自A电脑的数据本来是想转发给B电脑,如果此时它还连接着另外两台电脑C、D,那么它会把这个数据给每个电脑都发送一份,因此会导致网络拥堵
  4. 使用ping命令测试是否连通,然后就可以基于windows网路共享等实现一些基础网络操作

3.如何让三台电脑之间通信(改进版):交换机

如上,通过交换机(switch)连接多台设备,目前交换机已经基本替代了集线器。

  1. 克服了集线器以广播发送数据的缺点,当需要广播的时候发送广播,当需要单播的时候又能够以单播的方式进行发送。初始化添加网路时,会广播形式发送arp获取每个设备的mac地址,这样再跟某个设备通信时会使用ip+mac的形式,非请求mac不会发送数据。
  2. 它已经替代了之前的集线器
  3. 企业中就是用交换机来完成多态电脑设备的链接成网络的

4.如何让三台网络电脑之间通信:路由器

      如上通过交换机可以实现少量的电脑设备之间进行通信,但是如果是多台电脑,且不再同一个地方,同一个网段,如何进行通信呢,显然上面交换机已经不能满足需求,那么这里就要用到了路由器router。路由器的核心就是链接多个不同网段的局域网成为一个大的局域网。

如下图,如果我们想让同一个路由器连接的设备之间进行通信,是怎么实现的呢?比如让路由器左边的局域网段的192.168.1.1(PC0)和路由器右边的局域网段192.168.2.1(PC3)进行通信,那么底层数据流转的呢?

原理说明:

  1. 因为PC0和PC3不在同一个网段,所以PC0首先把数据发送给默认网关(路由器Router0),这个时候目的Ip:192.168.2.1,目的mac:路由器左边的虚拟网卡的mac地址。注意如果是首次联网通信的话,PC0是不知道路由器左边虚拟网卡的mac地址的,这个时候PC0就会先发送arp,得到其mac地址。
  2. 这个时候路由器根据目的IP网段解析,将数据发送给路由给右边的虚拟网卡(即192.168.2网段的网关),路由器网关再根据目的ip进行解析,将数据发送给PC3。注意这个时候目的mac变成了192.168.2.1的mac地址。
  3. 注意在网络传输中ip地址不变,但是目的mac是不断变化的。这就好比你寄个东西从北京到上海,目的ip是上海不变的,但是中间可能会先送到mac山东,在从山东送到南京mac,在从南京送到上海mac。

5.网络间设备通信与流转过程

如上,在网路链路中进行通信,实际底层数据流转如下:

  1. 在PC0的浏览器中输入一个网址比如www.baidu.com时,需要将它先解析出ip地址来,具体如何解析,去哪里解析,这个时候要看你电脑配置DNS服务器,所以PC0先将网址发送给对应的DNS服务器进行解析
    其实在我们电脑C:\Windows\System32\drivers\etc目录下有个Hosts文件,其主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,浏览器会立即打开对应网页,如果没有找到,则浏览器会将网址提交DNS服务器进行IP地址解析。这也是提高快速打开网页的方法,所以可以将常见ip和网址映射写入到hosts文件里!
    如下,注意我么使用的是联通的宽带,默认的DNS服务器地址和默认的网关地址一样,当然这里我们也可以自定义DNS服务器地址,比如8.8.8.8是一个是Google提供的免费DNS服务器的IP地址,也可以配置多个DNS地址。

         

  1.   当得到ip地址之后,浏览器以tcp的方式3次握手链接服务器,中间以上面路由的方式进行层层传递,当然这里实际其实牵扯到路由路径的选择。
  2. 以tcp的方式发送http协议的请求数据发送给服务器
  3. 服务器tcp的方式回应http协议的应答数据给浏览器

尖叫提示1:

  • MAC地址:在设备与设备之间数据通信时用来标记收发双方(网卡的序列号)
  • IP地址:在逻辑上标记一台电脑,用来指引数据包的收发方向(相当于电脑的序列号)
  • 网络掩码:用来区分ip地址的网络号和主机号
  • 默认网关:当需要发送的数据包的目的ip不在本网段内时,就会发送给默认的一台电脑,成为网关
  • 集线器:已过时,用来连接多态电脑,缺点:每次收发数据都进行广播,网络会变的拥堵
  • 交换机:集线器的升级版,有学习功能知道需要发送给哪台设备,根据需要进行单播、广播
  • 路由器:连接多个不同的网段,让他们之间可以进行收发数据,每次收到数据后,ip不变,但是MAC地址会变化
  • DNS:用来解析出IP(类似电话簿)
  • http服务器:提供浏览器能够访问到的数据

      注意如上,比如我从北京请求登录美国网站,首先我在浏览器输入网址,比如https://github.com。这个时候通过DNS解析到了github对应的IP。那么为什么我有了github的ip以后路由器就会自动把我的请求发送给“美国”对应的路由器与服务器呢?

       因为以IPV4来说,NIC给全球每个国家,每个城市的分配得到的公网IP段是确定的,所以比如我访问github,使用ping命令,查看该网站的ip是13.229.188.59的归属地是新加坡(可能因为github将全亚洲的所有请求都发送到了新加坡的github服务器处理,具体是根据亚洲的ip网段判断)。

       所以同理路由器就可以根据每个国家,每个城市的的公网IP段将目的ip的请求发送给对应国家与城市的路由器去处理,最终请求到达一个具体的设备。

6.路由器如何实现共享同一个ip上网原理:NAT

尖叫提示:所谓的NAT是指网络地址转换器

  1. 用宽带链接上网时,会把网线(光纤)---->调制解调制(简称猫)------->电脑等设备直接连接上网
  2. 电脑会得到来自电信服务商的一个公网ip地址(切记只有公网ip地址才能上网)

  3. 为了能够让多台设备都可以上网,需要将数据进行“分流”网线(光纤)---->调制解调制(简称猫)------->路由器------>电脑等设备

  4. 此时路由器的一端有一个公网ip地址,剩下的几个端口(或无线)可以接入电脑等设备,并且路由器给它们分配私有ip(例如 192.168.1.2)。
  5. 当一个电脑(192.168.1.2)上网时,先通过DNS协议解析出某个域名对应的ip,然后
    • 发送数据时,在经过路由器时转换为公网ip以及路由器自己分配的临时端口

               192.168.1.2:6789----->192.168.1.1 路由器 116.226.52.212:6539------->猫---->万维网

    • 接收数据时,在经过路由器时转换为路由器之前记录的ip以及port

            万维网------->猫----->116.226.52.212:6539 路由器 192.168.1.1 ---->192.168.1.2:6789

发布了248 篇原创文章 · 获赞 1600 · 访问量 267万+

猜你喜欢

转载自blog.csdn.net/qq_26442553/article/details/95507971