网络:IP基础知识总结

IP的基本认识

IP在TCP/IP参考模型中处于第三层,也就是网络层

网络层的主要作用是:实现主机和主机之间的通信,也叫做点对点通信

问:网络层与运输层的关系

网络层(IP)提供点到点的服务,运输层(TCP/UDP)提供端到端的服务

问:网络层和数据链路层的关系

有的小伙伴分不清 IP(网络层) 和 MAC (数据链路层)之间的区别和关系。

其实很容易区分,在上面我们知道 IP 的作用是主机之间通信用的,而 MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输

举个生活的栗子,小林要去一个很远的地方旅行,制定了一个行程表,其间需先后乘坐飞机、地铁、公交车才能抵达目的地,为此小林需要买飞机票,地铁票等。

飞机票和地铁票都是去往特定的地点的,每张票只能够在某一限定区间内移动,此处的「区间内」就如同通信网络中数据链路。

在区间内移动相当于数据链路层,充当区间内两个节点传输的功能,区间内的出发点好比源 MAC 地址,目标地点好比目的 MAC 地址。

整个旅游行程表就相当于网络层,充当远程定位的功能,行程的开始好比源 IP,行程的终点好比目的IP 地址。

网络:IP基础知识总结_第1张图片
如果小林只有行程表而没有车票,就无法搭乘交通工具到达目的地。相反,如果除了车票而没有行程表,恐怕也很难到达目的地。

因为小林不知道该坐什么车,也不知道该在哪里换乘。因此,只有两者兼备,既有某个区间的车票又有整个旅行的行程表,才能保证到达目的地。与此类似,计算机网络中也需要「数据链路层」和「网络层」这个分层才能实现向最终目标地址的通信。

还有重要一点,旅行途中我们虽然不断变化了交通工具,但是旅行行程的起始地址和目的地址始终都没变。其实,在网络中数据包传输中也是如此,源IP地址和目标IP地址在传输过程中是不会变化的,只有源 MAC 地址和目标 MAC 一直在变化。

具体参考: 数据链路层VS网络层

IP基础

在TCP/IP网络通信时,为了保证能够正常通信,每个设备都需要配置正确的IP地址。否则无法实现正常的通信

  • 互联网上的每个接口必须有一个唯一的Internet地址(也叫做IP地址)
  • 多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
  • 由于互联网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入互联网的网络分配IP地址。这个管理机构就是互联网网络信息中心,称作InterNIC(Internet Network Information Center)。InterNIC只分配网络号。主机号的分配由系统管理员来负责。
  • 有三类I P地址:单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)。

IP地址(ipv4)由32位二进制数来表示。

  • 因此IP地址的最大值是 2 3 2 = 4294967296 2^32=4294967296 232=4294967296,即最大允许 43 亿台计算机连接到网络。

  • 实际上,IP 地址并不是根据主机台数来配置的,而是以网卡。像服务器、路由器等设备都是有 2 个以上的网卡,也就是它们会有 2 个以上的 IP 地址。

  • 因此,让 43 亿台计算机全部连网其实是不可能的。

  • IP 地址是由「网络标识」和「主机标识」这两个部分组成的,所以实际能够连接到网络的计算机个数更是少了很多

  • 「网络标识」唯一标记一个局域网

  • 「主机标识」唯一标记局域网中的一台主机

  • 现在的网络设备早就超过了43 亿了,为了解决IP不足的问题,提出了NAT技术。 后来,又有了ipv6

为了方便记忆,我们采用了点分十进制的标记方式处理IP地址:将32位的IP地址以每8位为组,共分为 4
组,每组以「.」隔开,再将每组转换成十进制
网络:IP基础知识总结_第2张图片

IP地址的分类[了解即可,目前已经不用]

我们知道 IP 地址是由「网络标识」和「主机标识」这两个部分组成的,又根据「网络标识」和「主机标识」的位数,我们可以将IP地址大致分为:A类,B类、C类。实际上,IP地址一共分为5类:A类,B类、C类、D类、E类
网络:IP基础知识总结_第3张图片

问:怎么判断是哪类IP地址

网络:IP基础知识总结_第4张图片

问:A、B、C 分类地址最大主机个数是如何计算的呢?

最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数:
在这里插入图片描述
为什么要减 2 呢?
因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和 全为 0 地址

  • 主机号全为 1 指定某个网络下的所有主机,用于广播
  • 主机号全为 0 为本地地址,表示本地网络或主机;

在分配过程中,应该去掉这两种情况。
网络:IP基础知识总结_第5张图片
从而,可以算出各类IP地址的最大主机数量

对于A,B,C类(A、B、C三类是给互联网用户使用的)
网络:IP基础知识总结_第6张图片

因为D类和E类地址是没有主机号的,所以不可用于主机IP, D类用来组播(就是多播)的,E类只是试用的。
网络:IP基础知识总结_第7张图片

广播地址用于什么?多播地址用于什么?

由于IP分类存在很多缺点

  • 同一网络下没有地址层次,比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
  • A、B、C 类有个尴尬处境,就是不能很好的与现实网络匹配。
    • C 类地址能包含的最大主机数量实在太少了,只有 254 个,估计一个网吧都不够用。
    • 而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

所以现在上面的分类方法已经不用了,为此我们引入了CIDR。

无类型域间选路CIDR

  • CIDR打破了原来设计原来设备的几类地址的做法,将32位的IP地址一分为二,前面是网络号,后面是主机号。
  • 从哪里分呢? 比如10.100.122.2/24,这个IP地址中有一个斜杠,斜杠后面有个数字24。这种地址就是CIDR。后面24的意义是,32位中,前24位是网络号,后8位是主机号

CIDR可以用来判断是不是本地人

IP地址 VS 域名系统 VS 端口号

  • 在一个互联网上,每个接口都使用IP地址来标识,尽管用户习惯使用主机名而不是 I P地址。
  • 域名系统为主机名和 I P地址之间提供动态的映射。
  • 端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。

Linux下如何查看IP地址

两个命令:ifconfig、ip addr。

看个例子:

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:db:1a:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.28/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33
       valid_lft 652806sec preferred_lft 652806sec
    inet6 fe80::3c21:538a:3012:67c9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:13:61:c6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:13:61:c6 brd ff:ff:ff:ff:ff:ff

这个命令显示了这台机器上所有的网卡。大部分网卡都有一个IP地址,当然,这不是必须的。

  • 192.168.0.28就是网卡ens33的IP地址值
  • IP之后的scope
    • 对于ens33这张网卡来讲,是global,表示这张网卡是可以对外的,可以接收来自各个地方的包
    • 对于lo来讲,是host,表示这张网卡仅供本机相互通信
      • lo全程是loopback,又称为环回接口,往往会被分配到127.0.0.1这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现
  • 在IP地址的上一行是link/ether 00:0c:29:db:1a:7e brd ff:ff:ff:ff:ff:ff,这个被称为MAC地址,是一个网卡的物理地址,用16进制,6个byte表示。
    • MAC地址是一个很容易让人误解的地址。因为MAC地址号称全局唯一,不会有两个网卡有相同的MAC地址,而且网卡自生产出来,就带着这个地址。很多人就会想,既然这样,整个互联网的通信,全部用MAC地址就好了,只要知道了对方的MAC地址,就可以把信息传过去
    • 这样当然是不行的,一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。而有门牌号码属性的IP地址,才是有远程定位功能的。
    • 也就是说,IP地址相当于门牌号码,MAC地址相当于身份证。你问路的时候可以问【xxx路xxx号】怎么走,但是你不能问【身份证号码为xxx】的人在哪里
    • MAC地址像是身份证,是一个唯一的标识。它的唯一性设计时为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识
    • MAC地址是由一定定位功能的,只不过范围非常有限。你可以根据IP地址,找到杭州市xxx路xxx层ccc号,但是依然找不到人,这时候你就可以吼,身份证号xxx的是哪位?对方听到了,就会回应,是我。当然,如果你在上海叫,身份证号xxx的是哪位,是绝对找不到的
    • 也就是说,MAC地址的通信范围比较小,局限在一个子网里面。比如,从192.168.0.2/24访问192.168.0.3/24是可以用MAC地址的。一旦跨子网,比如从192.168.0.2/24访问192.168.1.3/24就只能用IP地址定位了
    • 现在很多工具都有可以更改本机的MAC地址,也就是网络上存在很多MAC地址被更改成一样,为什么没有出现通讯异常或者混乱? MAC地址是一个局域网冲突才会影响网络通信,局域网外是IP定位,所以不同局域网的网络设备MAC一样是不会有通讯问题的
  • 关于,这个叫做net_device_flags,网络设备的状态标识
    • UP表示网卡处于启动的状态
    • BROADCAST表示这个网卡有广播地址,可以发送广播包
    • MULTICAST表示网卡可以发送多播包
    • LOWER_UP表示L1是启动的,也即是网线插着呢
  • mtu 1500:最大传输单元MTU为1500,这是以太网的默认值
    • 网络包是层层封装的、MTU是二层MAC层的概念。
    • MAC层有MAC的头,以太网规定连MAC头带正文合起来,不允许超过1500个字节。正文里面有IP的头、TCP的头、HTTP的头。如果放不下,就需要分片来传输
  • `qdisc pfifo_fast``
    • qdisc ,queueing discipline,即排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的qdisc(排队规则)把数据加入队列
    • 最简单的qdiscpfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列
    • pfifo_fast稍微复杂一点。它的队列包括三个波段(band)。在每个波段里面,使用先入先出规则
      • 三个波段(band)的优先级页不相同。band 0 优先级最高、band 2的最低。如果biand 0里面有数据包,系统就不会处理band 1 里面的数据包,bind 1 和 bind 2 之间也是一样
      • 数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS是IP头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的

你可能感兴趣的:(网络,网络,tcp/ip,网络协议)