首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐
2025年5月22日 星期四 10:13am

网络:IP基础知识总结

  • 25-04-25 11:48
  • 3723
  • 8832
blog.csdn.net

IP的基本认识

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

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

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

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

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

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

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

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

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

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

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

在这里插入图片描述
如果小林只有行程表而没有车票,就无法搭乘交通工具到达目的地。相反,如果除了车票而没有行程表,恐怕也很难到达目的地。

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

还有重要一点,旅行途中我们虽然不断变化了交通工具,但是旅行行程的起始地址和目的地址始终都没变。其实,在网络中数据包传输中也是如此,源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地址的分类[了解即可,目前已经不用]

我们知道 IP 地址是由「网络标识」和「主机标识」这两个部分组成的,又根据「网络标识」和「主机标识」的位数,我们可以将IP地址大致分为:A类,B类、C类。实际上,IP地址一共分为5类:A类,B类、C类、D类、E类
在这里插入图片描述

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

在这里插入图片描述

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

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

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

在分配过程中,应该去掉这两种情况。
在这里插入图片描述
从而,可以算出各类IP地址的最大主机数量

对于A,B,C类(A、B、C三类是给互联网用户使用的)
在这里插入图片描述

因为D类和E类地址是没有主机号的,所以不可用于主机IP, D类用来组播(就是多播)的,E类只是试用的。
在这里插入图片描述

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

由于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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

这个命令显示了这台机器上所有的网卡。大部分网卡都有一个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(排队规则)把数据加入队列
    • 最简单的qdisc是pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列
    • pfifo_fast稍微复杂一点。它的队列包括三个波段(band)。在每个波段里面,使用先入先出规则
      • 三个波段(band)的优先级页不相同。band 0 优先级最高、band 2的最低。如果biand 0里面有数据包,系统就不会处理band 1 里面的数据包,bind 1 和 bind 2 之间也是一样
      • 数据包是按照服务类型(Type of Service,TOS)被分配到三个波段(band)里面的。TOS是IP头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的
注:本文转载自blog.csdn.net的OceanStar的学习笔记的文章"https://blog.csdn.net/zhizhengguan/article/details/109078998"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top