【计算机网络】网络层——IP

news2024/12/26 22:03:05

目录

  • 1.概念
  • 2.协议格式
  • 3.网络划分
    • ip组成
    • IP地址分类
    • IP地址数量
    • 私网IP和公网IP
    • 子网掩码
    • 路由

1.概念

引入

应用层http协议是进行构建和解析请求request和响应response。

传输层的TCP/UDP协议是不提供数据的运输。传输层是为数据传输指定规则。但是,UDP协议并不保证数据传输的可靠性。TCP协议制定了确认应答机制,超时重传机制,连接管理机制,拥塞控制等保证了数据的可靠性,制定了捎带应答,延时应答,快重传机制等保证了数据传输的效率

实际有数据传输能力的是网络层IP协议和数据链路层(后面讲),提供了将数据从主机A跨网络送到主机B的能力。

在这里插入图片描述

概念

在网络层,有一个很重要的设备路由器,路由器可以连接两个局域网,具有数据在网络中路由的功能。

路由器也相当于是局域网里的一台主机,含有网络层及其以下层,但是现在的路由器很强大,已经拥有了应用层及其以下层。

  • 主机:配有IP地址,但是不进行路由控制的设备。
  • 路由器:即配有IP地址,又能进行路由控制。
  • 结点:主机和路由器的统称

网络层的主要作用是实现终端节点之间的通信。这种终端节点之间的通信,也叫点对点通信。

在这里插入图片描述

2.协议格式

在这里插入图片描述

  • 4位版本号:指定IP协议的版本,对于IPv4,就是4。

  • 4位首部长度:IP头部的长度是以32bit(4字节)作为基本单位,也就是报头字节数等于4位首部长度乘4字节。最小报头长度等于20字节,4个比特位表示的最大数字是15,所以最长报头长度等于60字节,多余部分是选项。

  • 8位服务类型:3位优先权字段(已经弃用),4位TOS字段和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者互相冲突,只能选一个,具体选哪个,决定于应用层协议。

  • 16位总长度:IP数据报整体占多少字节。包括了数据和报头。

  • 8位生存时间(TIME TO LIVE,TTL):数据报到达目的地的最大报文跳数,也就是经过的路由器数。一般是64。每次经过一个路由,TTL减1,一般减到0还没到达,那么就丢失了,这个字段是防止出现路由循环。

  • 8位协议:标识上层协议类型。传输给上层哪个协议。

  • 16位头部校验和:使用CRC校验,来检验报头是否损坏,只需要检验头部,数据在TCP层检验了。

  • 32位源IP地址和32位目的IP地址:标识接收端主机和发送端主机。

  • 选项:选项最多40字节,报头超过20字节部分。

这里需要了解的知识是切片:

分片概念: 分片就是将传输层发现来的数据,分成几段,再发送下去。

为什么要分片?
每种数据链路的最大传输单元( MTU )不同,网络层的 IP 是数据链路的上一层, IP 通过分片屏蔽数据链路的差异,实现不同数据链路互通。从 IP 的上一层看,它完全可以忽略各个数据链路上的 MTU ,只需要按照源 IP 地址发送的长度接收数据包。
在这里插入图片描述

在这里插入图片描述
以太网就是最常用的数据链路层协议,MTU就是1500.

注意:分片对传输层时透明的,传输层并不知道分片了。只有网络层知道分片了。

所以在接收端的网络层IP协议还需要对分片数据进行组装

接收端接收到的数可能会有没有分片的数据,不同组数据,分片的数据。组装首先需要将分片的没有分片的数据分开,再将同一组数据组装。
在这里插入图片描述

分片的缺陷

  • 报文需要分多次发送,加重路由器的处理性能。
  • 分片传输中,其中一个分片丢失,在组装的时候不能将整个报文组装起来,此时ip层不会向上交付,tcp层会认为报文丢失,超时重传。

如果避免分片
实际数据分片的根本原因在于传输层一次向下交付的数据太多了,导致IP无法直接将数据向下交给MAC帧,如果传输层控制好一次交给IP的数据量不要太大,那么数据在IP层自然也就不需要进行分片。

  • 因此TCP作为传输控制协议,它需要控制一次向下交付数据不能超过某一阈值,这个阈值就叫做MSS(Maximum Segment Size,最大报文段长度)。
    通信双方在建立TCP连接时,除了需要协商自身窗口大小等概念之外,还会协商后续通信时每一个报文段所能承载的最大报文段长度MSS。
  • MAC帧的有效载荷最大为MTU,TCP的有效载荷最大为MSS,由于TCP和IP常规情况下报头的长度都是20字节,因此一般情况下 MSS = MTU - 20 - 20,而MTU的值一般是1500字节,因此MSS的值一般就是1460字节。

所以一般建议TCP将发送的数据控制在1460字节以内,此时就能够降低数据分片的可能性。之所以说是降低数据分片的可能性,是因为每个网络的链路层对应的MTU可能是不同的,如果数据在传输过程中进入到了一个MTU较小的网络,那么该数据仍然可能需要在路由器中进行分片。

报头中分片的字段

在这里插入图片描述

  • 16位标识(id):唯一标识主机发送的报文,如果IP报文在数据链路层被分片了,那么每一片里面的这个id相同。
  • 3位标志:第一位保留(现在不用),第二位如果置为1,表示禁止分片,这个时候,如果来了一个超过MTU的数据,IP模块会丢弃报文,置为0表示可以分片。第三位表示"更多分片",如果分片了,如果该分片后面还有分片,当前位置为1,如果后面没有分片或者没有分片,当前位为0。意思就是分片了置为1,没有分片或者是数据分片的结尾置为0。
  • 13位偏移量:表示当前分片在原报文的哪个位置。实际偏移字节数等于当前值乘8,因此除最后一个报文外,其它报文的长度必须是8的整数倍。

使用分片技术的同时许多问题出现了

IP如何将报头和有效载荷分离?

IP协议的报头中也有16位的报文大小,标准报头大小(没有选项)是20个字节,报文大小减去报头大小,可以得到有效载荷的大小。

IP如何将报文交付给上层协议?

IP协议的报头中有8位协议类型。

3.网络划分

ip组成

IP地址分为两个部分:网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识。
  • 主机号:在同一网段内,主机具有相同的网络号,但是具有不同的主机号。标识相同网段里的不同主机。
    在这里插入图片描述

网络号是设备所在区域的一种标识,网络号相同的设备位于同一个网段内,网络号不同的设备通过路由器实现通信。主机号是在同一个网段中不同设备的标识,不允许同一个网段内出现重复的主机号。

在这里插入图片描述

  • 不同的子网其实就是把网络号相同的主机连接到了一起。
  • 如果在子网中新增一台主机,这台主机的网络号和这个子网的网络号一致,但是主机号必须不同和子网中的其它主机重复。
  • 由上可知,在子网中新增一台主机需要为其分配对应且正确的IP,去除一台主机的话,需要回收IP。但是手动管理子网IP很麻烦。

有一种技术DHCP,能够自动的给子网内新增主机结点分配IP地址,避免了手动管理的不便。
一般现在的路由器都带有DHCP功能,因此路由器可以看作一个DHCP服务器。

IP地址分类

在这里插入图片描述
上面是按照二进制位数1~5位是否为0划分IP地址,划成点分十进制的范围是:

  • A类 0.0.0.0到127.255.255.255
  • B类 128.0.0.0到191.255.255.255
  • C类 192.0.0.0到223.255.255.255
  • D类 224.0.0.0到239.255.255.255
  • E类 240.0.0.0到247.255.255.255

A,B,C类越往下网络号表示越来越多,主机号表示越来越少。随着互联网的发展,大多数组织都申请B类网络地址,导致B类很快就用完了。

针对上面的情况,提出了一个新的方案,称为CIDR。只与子网掩码有关,通过子网掩码要区分网络号和主机号。

  • 引入一个子网掩码来区分网络号和主机号。
  • 子网掩码也是32位正整数,通常用一串0结尾。
  • 将IP地址和子网掩码进行按位与,得到的结果就是网络号。
  • 这样划分就不需要这个IP地址局限于上面的哪一个类了,与A,B,C类无关,至于子网掩码有关。

在这里插入图片描述

IP地址数量

IPv4协议的IP地址是32位的,那么只有 2的32 次方个IP地址,而TCP/IP协议规定,每一个主机都需要一个IP地址,这就意味着,一共只能由 2的32 次方台主机连入网络。

但是由于一些特殊网络的存在,并且IP地址并非是按照主机台数配置,而是每一个网卡都需要配置一个或者多个IP地址。,所以实际可以使用的IP地址远少于 2的32 次方。

CIDR虽然一定程度上提高了IP地址位数利用率,但是IP地址总数没变,仍然可能不够用。这时有三种解决方式:

  • 动态分配IP地址,只给接入网络的设备分配IP地址,比如:一台主机接入了网络分配一个IP地址,断开网络是IP地址被回收。因此同一个MAC地址设备,每次接入网络IP地址不一定相同,被其它接入网络的主机分配。
  • NAT技术
  • IPv6:IPv6的位数用16字节,128位表示一个IP地址,IP地址总数更多了。但是IPv6并不是IPv4的升级版本,两者不兼容,目前IPv6并没有普及。

私网IP和公网IP

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址。

  • 10.*,前8位是网络号,共16,777,216个地址。
  • 172.16.到172.31.,前12位是网络号,共1,048,576个地址。
  • 192.168.*,前16位是网络号,共65,536个地址。

包含在这个范围中的,都称为私网IP,其余的则称为公网IP(或全局IP)。

我们在使用云服务器时,使用的就是公网IP

在这里插入图片描述
我们可以在cmd上使用指令ipconfig查看机器的私网IP
在这里插入图片描述

数据传输

路由器是连接两个或多个网络的硬件设备,在路由器上有两种网络接口,分别是LAN口和WAN口:

  • LAN口(Local Area Network):表示连接本地网络的端口,主要与家庭网络中的交换机、集线器或PC相连。

  • WAN口(Wide Area Network):表示连接广域网的端口,一般指互联网。
    我们将LAN口的IP地址叫做LAN口IP,也叫做子网IP,将WAN口的IP地址叫做WAN口IPO,也叫做外网IP。
    在这里插入图片描述

  • 不同的路由器,子网IP其实都是一样的(通常都是192.168.1.1),子网内的主机IP地址不能重复,但是子网之间的IP地址就可以重复了。

  • 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,最外层的运营商路由器的WAN口IP就是一个公网IP了。

  • 如果希望我们自己实现的服务器程序,能够在公网上被访问到,就需要把程序部署在一台具有外网IP的服务器上,这样的服务器可以在阿里云/腾讯云上进行购买。

由于私网IP不能出现在公网当中,因此子网内的主机在和外网进行通信时,路由器会不断将数据包IP首部中的源IP地址替换成路由器的WAN口IP,这样逐级替换,最终数据包中的源IP地址成为一个公网IP,这种技术成为NAT(Network Address Translation,网络地址转换)。

为什么私网IP不能出现在公网当中?

  • 不同的局域网中主机的IP地址可能是相同的,所以私网IP无法唯一标识一台主机,因此不能让私网IP出现在公网上,因为IP地址要能唯一标识公网上的一台主机。
  • 但由于IP地址不足的原因,我们不能让主机直接使用公网IP而让主机使用私网IP,因为私网IP可以重复也就意味着我们可以在不同的局域网使用相同的IP地址,缓解了IP的不足。
  • 但由于IP地址不足的原因,我们不能让主机直接使用公网IP而让主机使用私网IP,因为私网IP可以重复也就意味着我们可以在不同的局域网使用相同的IP地址,缓解了IP的不足。

子网掩码

早期网络地址采用固定网络位长度的方式,使 IPv4 地址遭到大量浪费。如今网段地址的长度可变,同时也需要一种标识来获取网段地址,以便路由器对数据包进行转发,这种识别码就是子网掩码。

子网掩码用 32 位的二进制表示, IP 地址的网段地址部分设置为 1 , IP 地址的主机地址部分设置为 0 。换句话说, IP 地址有多少位网段地址,子网掩码就有多少位取 1 ,其余都取 0 。为了方便记录,每 8 位为一组,以“ . ”隔开,再转换为十进制数。

例如:201.20.100.25 的子网掩码是 255.255.255.0 ,算出它的网段地址。

在这里插入图片描述

将子网掩码和 IP 地址进行与( AND )运算,可得到这个 IP 地址的网段地址。

路由

① 默认路由是指路由表中任何一个地址都能与之匹配的条目。所有数据包都可以使用默认路由进行数据转发。默认路由为 0.0.0.0/0 或 default

②“ IP地址/32 ”被称为主机路由,它是路由表中指向单个 IP 地址或主机名的路由条目。例如:192.168.153.15/32 就是一条主机路由,表示整个 IP 地址的所有位都将参与路由。

③以 127 开头的 IP 地址都是环回地址,其所在的回环接口可以理解为虚拟网卡。使用回环地址时,数据包会直接被主机的 IP 层获取,而不经过链路层,也不会流向网络。一般用来检查主机上运行的网络服务是否正常。我们经常使用的127.0.0.1。

在复杂的网络结构中,找出一条通往终点的路。

路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.

所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间.

在这里插入图片描述

IP数据包的传输过程中会遇到很多路由器,这些路由器会帮助数据包进行路由转发,每当数据包遇到一个路由器后,对应路由器都会查看该数据的目的IP地址,并告知该数据下一跳应该往哪跳。

路由器的查找结果可能有以下三种:

  • 路由器经过路由表查询后,得知该数据下一跳应该跳到哪一个子网。
  • 路由器经过路由表查询后,没有发现匹配的子网,此时路由器会将该数据转发给默认路由。
  • 路由器经过路由表查询后,得知该数据的目标网络就是当前所在的网络,此时路由器就会将该数据转给当前网络中对应的主机。

路由表查询的过程?

每个路由器内部会维护一个路由表,我们可以通过route命令查看云服务器上对应的路由表。
在这里插入图片描述

  • Destination代表的是目的网络地址。
  • Gateway代表的是下一跳地址。
  • Genmask代表的是子网掩码。
  • Flags中,U标志表示此条目有效(可以禁用某些条目)G标志表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经路由器转发。
  • Iface代表的是发送接口。

当IP数据包到达路由器时,路由器就会用该数据的目的IP地址,依次与路由表中的子网掩码 Genmask进行“按位与”操作,然后将结果与子网掩码对应的目的网络地址Destination进行比对,如果匹配则说明该数据包下一跳就应该跳去这个子网,此时就会将该数据包通过对应的发送接口Iface发出。

如果将该数据包的目的IP地址与子网掩码进行“按位与”后,没有找到匹配的目的网络地址,此时路由器就会将这个数据包发送到默认路由,也就是路由表中目标网络地址中的default。可以看到默认路由对应的Flags是UG,实际就是将该数据转给了另一台路由器,让该数据在另一台路由器继续进行路由。

数据包不断经过路由器路由后,最终就能到达目标主机所在的目标网络,此时就不再根据该数据包目的IP地址当中的网络号进行路由了,而是根据目的IP地址当中的主机号进行路由,最终根据该数据包对应的主机号就能将数据发送给目标主机了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java八大排序——归并排序

1.什么是归并排序 归并排序是一种基于分治思想的排序算法,它将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将这些有序的子序列合并成一个有序的序列。归并排序的时间复杂度为O(nlogn),是一种稳定的排序算法。除了排…

数据分析和用户个性化体验:开发同城外卖APP的技术解决方案

在数字化时代,外卖服务已经成为人们日常生活中不可或缺的一部分。无论是忙碌的白领、学生,还是家庭主妇,都倚赖同城外卖APP来方便地满足他们的饥饿需求。然而,随着竞争的激烈,外卖APP必须不断改进,以满足用…

ajax调用springboot后台接口

工具 api测试工具 由于后台接口不是同一个团队编写的,在文档缺失的情况下,需要测试后台接口接收参数类型,可以使用这个工具,注册很方便 页面如下所示,可以选择请求方法是get,或者post 重点介绍两种&…

SpireCV如何利用TensorRT加速?

TensorRT简介 TensorRT是NVIDIA推出的一款高性能的深度学习推理引擎(C库)。相比于一般的深度学习框架,在GPU模式下其可提供36X的加速,极大提高了深度学习模型在边缘设备上的推断速度,以满足无人机、无人车等无人系统的快速视觉检测场景。 Te…

Google play开发者账号隔离用指纹浏览器还是vps?哪个防关联效果更佳?

很多谷歌安卓开发者会通过矩阵、马甲包的方式,在Google play应用商店上获得更多的流量和收益,这需要多个开发者账号,因此开发者账号隔离问题的重要性不言而喻。 在Google play开发者账号的隔离防关联问题上,使用vps和指纹浏览器是…

Oracle(12)Managing Indexes

目录 目标: 一、基础知识 1、Classification ofindexes 索引的分类 2、B-Tree vs Bitmap 3、Creating Indexes: Guidelines 创建索引:准则 4、Offline Index Rebuild 脱机索引重建 5、RebuildingIndexes 重建索引 6、Online Index Rebuild 在线索引重建 7…

记一次某学院的未授权渗透过程

文章现写的,部分内容有些着急。 0x01 测试过程 开局登录框,没有测试SQL注入与XSS(菜鸟,测也测不出来。) 有system用户,尝试弱口令,无果! 直接namp来一下子端口探测吧 发现有3306与8888 3306 mysql测试…

《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》阅读笔记

论文标题 《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》 干什么活:交通流预测(traffic flow forecasting )方法:动态图卷积网络(Dynamic Graph Convolutional Network)…

【沧元图】梅元知命运逆转,但遗憾下线,孟川新形态揭晓

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 深度爆料,《沧元图》是近年来备受期待的动画作品之一,其独特的画风和精彩的剧情吸引了众多观众的关注。这部动画的播出计划备受瞩目,据主创团队透露,本季共有26…

关于GPT的一些使用场景

与传统的机器翻译或语音识别技术不同,GPT强调的是生成新文本的能力,这使得它在创作、摘要、问答等场景下具有独特的优势。下面是我日常生活中用到GPT的一些场景: 日常闲聊 在日常闲聊中(尤其是和运营xjj聊天的时候)&a…

伊朗网络间谍组织针对中东金融和政府部门

导语 近日,以色列网络安全公司Check Point与Sygnia发现了一起针对中东金融、政府、军事和电信部门的网络间谍活动。这一活动由伊朗国家情报和安全部门(MOIS)支持的威胁行为者发起,被称为"Scarred Manticore"。该组织被认…

【EI会议征稿】第四届机械、电子电气与自动化控制国际学术会议(METMS 2024)

第四届机械、电子电气与自动化控制国际学术会议(METMS 2024) 2024 4th International Conference on Mechanical, Electronics and Electrical and Automation Control 2024年第四届机械、电子电气与自动化控制国际学术会议(METMS 2024&am…

每日一练 | 网络工程师软考真题Day47

阅读以下关于Linux文件系统和Samba效劳的说明,答复以下【问题1】至【问题3】。 【说明】 Linux系统采用了树型多级目录来管理文件,树型结构的最上层是根目录,其他的所有目录都是从根目录生成的。通过Samba可以实现基于Linux操作系统的效劳器和…

C语言之for的执行顺序

1.for具有内部可以存放3个条件&#xff0c;比如for(int i 0&#xff1b;i < n&#xff1b;i )。for中的条件可以不写&#xff0c;但是符号“&#xff1b;”一定要存在。for(;;)的作用和while(1)是类似的&#xff0c;都是一种死循环。 对于for(int i 0;i < n;i)&#x…

vite安装Tailwind CSS

安装 - Tailwind CSS 中文网 (nodejs.cn) 这是官网&#xff0c;平常我练习一般会用vite脚手架 我们选择这个vite模块 可选择React和Vue版本的&#xff0c;这里选择react的按照操作&#xff0c;没问题的话就要出问题了 1、在npm run dev的时候我是出现了这么个问题&#xff0c…

ATFX汇市:美联储11月利率决议再暂停加息,紧缩货币政策或已接近尾声

ATFX汇市&#xff1a;11月美联储利率决议结果在今日2:00公布&#xff0c;其中提到&#xff1a;美联储寻求以2%的速度实现最大的就业和通胀率&#xff0c;为了达成这些目标&#xff0c;美联储决定将联邦基金利率的目标区间维持在5.25%~5.5%&#xff1b;委员会将会考虑货币政策的…

本地kafka客户端远程密码访问kafka服务端

1.确保kafka服务端已经配置SASL/PLANTEXT ACL 2.确保kafka客户端与kafka服务端网络通 3.在kafka客户端在路径为…/kafka/config/下创建client.properties文件 修改producer.properties、consumer.properties security.protocolSASL_PLAINTEXT sasl.mechanismPLAIN sasl.jaas…

Go基础——指针、结构体

1、指针 Go语言指针与C差不多&#xff0c;取地址符是 &&#xff0c;放到一个变量前使用就会返回相应变量的内存地址。 变量是一种使用方便的占位符&#xff0c;用于引用计算机内存地址。一个指针变量可以指向任何一个值的内存地址&#xff0c;它所指向的值的内存地址在 32 …

第24期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

一副耳机两种体验,好看好听降噪强,FIIL Key Pro上手

户外使用蓝牙耳机时&#xff0c;降噪功能真的是必不可少&#xff0c;特别是通勤高峰期&#xff0c;能有效隔绝周围的嘈杂声&#xff0c;对于上班族来说&#xff0c;真的会舒服很多。市场上有很多降噪耳机可供选择&#xff0c;相比于价格上千的发烧级装备&#xff0c;我更倾向于…