重学网络系列之(我的名字叫IP)

591 阅读9分钟

前言

文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…
种一棵树最好的时间是十年前,其次是现在

叨絮

今天我们的主角是IP,这家伙天生丽质难自弃,在网络的世界,他可是一等公民。今天我们就一起来聊聊IP这个家伙

凡所有相,皆是虚妄;若见诸相非相,即见如来。

面试题 说说你怎么查看当前服务器的ip

哈哈,这个题是不是很简单,不是搞技术的都可能知道,有以下的方式

  • 在 Windows 上是 ipconfig
  • 在 Linux 上是 ifconfig。
  • 还有一个在Linux上是 ip addr

那ifconfig 和ip addr 的区别呢?有时候面试的时候,想深挖一些东西真的很难,因为很多人第一连就不行了。。大家可以在下方留言看看。。

IP地址

P 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码。既然是门牌号码,不能大家都一样,不然就会起冲突。比方说,假如大家都叫六单元 1001 号,那快递就找不到地方了。所以,有时候咱们的电脑弹出网络地址冲突,出现上不去网的情况,多半是 IP 地址冲突了。

举个例子 10.100.122.2 就是一个 IP 地址 这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。这样产生的 IP 地址的数量很快就不够用了。因为当时设计 IP 地址的时候,哪知道今天会有这么多的计算机啊!因为不够用,于是就有了 IPv6,也就是 inet6fe80::f816:3eff:fec7:7975/64。这个有 128 位,现在看来是够了,但是未来的事情谁知道呢?

地址分类

IP 目前是被分为了5类,当然我们就看我们用的最多的3类就好了

在网络地址中,至少在当时设计的时候,对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。这很好理解,大家都是六单元 1001 号,我是小区 A 的六单元 1001 号,而你是小区B 的六单元 1001 号

大家看看是不是很熟悉,我相信大家公司的局域网的地址开头基本上是10.0开头的吧,而我们用自己电脑组的虚拟机局域网大部分肯定是192.168开头的

公有IP地址和私有IP地址

在日常的工作中,几乎不用划分 A 类、B 类或者 C 类,所以时间长了,很多人就忘记了这个分类。但是有一点还是要注意的,就是公有 IP 地址和私有 IP 地址。

我们继续看上面的表格。表格最右列是私有 IP 地址段。平时我们看到的数据中心里,办公室、家里或学校的 IP 地址,一般都是私有 IP 地址段。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,你学校的某个私有 IP 地址段和我学校的可以是一样的。

MAC地址

类似于fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff 这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。MAC 地址是一个很容易让人“误解”的地址。因为 MAC 地址号称全局唯一,不会有两个网卡有相同的MAC 地址,而且网卡自生产出来,就带着这个地址。很多人看到这里就会想,既然这样,整个互联网的通信,全部用 MAC 地址好了,只要知道了对方的 MAC 地址,就可以把信息传过去。

这样当然是不行的。一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。而有门牌号码属性的 IP 地址,才是有远程定位功能的。

例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是哪个,但是可以给你指网商路怎么去。但是如果你问一个人,你知道这个身份证号的人在哪里吗?可想而知,没有人知道。

MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识

所以,MAC 地址的通信范围比较小,局限在一个子网里面。例如,从 192.168.0.2/24 访问192.168.0.3/24 是可以用 MAC 地址的。一旦跨子网,即从 192.168.0.2/24 到 192.168.1.2/24,MAC地址就不行了,需要 IP 地址起作用了

面试题 怎么给自己的电脑设置ip

有下面的方式设置ip

  • sudoifconfigeth110.0.0.1/24sudo ifconfig eth1 10.0.0.1/24 sudo ifconfig eth1 up
  • sudoipaddradd10.0.0.1/24deveth1 sudo ip addr add 10.0.0.1/24 dev eth1 sudo ip link set up eth1

你可能会问了,自己配置这个自由度太大了吧,我是不是配置什么都可以?如果配置一个和谁都不搭边的地址呢?例如,旁边的机器都是 192.168.1.x,我非得配置一个 16.158.23.6,会出现什么现象呢?

不会出现任何现象,就是包发不出去呗。

原因

大家可以试试,你发现你ping的时候,包根本发不出去,原因就是重点来了,很重要的一个结论,重要的事情说三遍

  • 只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层。
  • 只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层。
  • 只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层。 大家来反推一下哈 我们既然要发一个包出去,就算是交换机对吧,他们的通信在网络里面的数据链路层,我们说的mac层,那你想,我自己是16.158.23.6 自己的mac地址,我们自己肯定知道,但是我并知道 192.168.x.x的mac地址,我怎么办呢,我肯定要想办法知道他mac地址,这里会有一个判断的过程,如果目标地址跟我是一个网段的,那我就发arp协议,就能获取到了,就像我们在一间办公室,我肯定就直接喊,小六六把你的东西递给我下。但是我们看,此时呢,我们的网段不同是吧,那我们就要先找到网关,也就是16.158.x.x的网关,把包发给他,然后再发到192.168.x.x的时候,他会发现mac地址跟自己网关的地址对不上,所以是不会接收这个包的。

动态主机配置协议(DHCP)

原来配置 IP 有这么多门道儿啊。你可能会问了,配置了 IP 之后一般不能变的,配置一个服务端的机器还可以,但是如果是客户端的机器呢?我抱着一台笔记本电脑在公司里走来走去,或者白天来晚上走,每次使用都要配置 IP 地址,那可怎么办?还有人事、行政等非技术人员,如果公司所有的电脑都需要 IT人员配置,肯定忙不过来啊。

因此,我们需要有一个自动配置的协议,也就是称动态主机配置协议(Dynamic Host ConfigurationProtocol),简称DHCP。

如果一个网络管理员在网络里面配置了DHCP Server的话,他就相当于这些 IP 的管理员。他立刻能知道来了一个“新人”。这个时候,我们可以体会 MAC 地址唯一的重要性了。当一台机器带着自己的 MAC地址加入一个网络的时候,MAC 是它唯一的身份,如果连这个都重复了,就没办法配置了。只有 MAC 唯一,IP 管理员才能知道这是一个新人,需要租给它一个 IP 地址,这个过程我们称为DHCPOffer。同时,DHCP Server 为此客户保留为它提供的 IP 地址,从而不会为其他 DHCP 客户分配此 IP地址。

DHCP协议中的报文

DHCP报文共有一下几种:

  • DHCP DISCOVER :客户端开始DHCP过程发送的包,是DHCP协议的开始
  • DHCP OFFER :服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
  • DHCP REQUEST :客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
  • DHCP ACK :服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
  • DHCP NAK :DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
  • DHCP RELEASE :一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
  • DHCP INFORM :客户端发出的向服务器请求一些信息的报文
  • DHCP DECLINE :当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止
  • 使用该IP地址。

DHCP 的 工作流程:

结尾

今天我们了解了网络的基础元素IP Mac,有了IP Mac相当于人有了身份证,你就能在这个国家有一个唯一的标识,在网络的世界也是一样的,然后我们还了解DHCP协议(相当于出生证明吧)。。从明天开始我们就可以去其他地方冒险了。。

参考

日常求赞

好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是真粉

创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见

微信 搜 "六脉神剑的程序人生" 回复888 有我找的许多的资料送给大家