当前位置: 首页 > article >正文

网络原理--IP协议简介

IP协议的主要功能:1.地址管理,使用一套地址体系,来描述互联网上每一个设备的位置。

2.路由选择,规划数据包如何从一个IP地址传到另一个IP地址。

IP协议的报头

1.版本:取值只有两种:IPV4(当前大规模使用)和IPV6。

2.首部长度:单位4个字节,Ip报头的长度也是可变的。

3.服务类型:8位,但是实际上只有4位有效,其中只有一位为1,剩余3为0,表示当前IP所处的模式:最小延时;最大吞吐量;最高可靠性;最小成本。

4.总长度:表示IP数据包的长度,并限制IP数据包的长度(64KB)但意义不大,因为MTU的限制往往小于IP数据包的自身限制。

5.生存时间:Ip数据包最大的跳转数。

6.协议:表示传输层在使用哪个协议。

7.首部校验和:只是针对IP的首部校验,载荷部分不管了。

8.源IP地址和目的IP地址:最重要的部分,表示了发件人和收件人的地址。

IP数据包的拆包和组包

当传输层的数据过大时,IP协议会将其拆分,拆包之后在未来进行组包。

如何组包:与IP报头中的这几位有关

1.16位标识:哪些IP数据包的载荷应该往一起组装。

2.3位标志:只有2位有效,一位表示这次的数据包是否拆包了,另一位表示结束标记。

3.13位片偏移:描述了这些包的先后顺序。

IP协议如何管理地址

IP地址本质上是一个32位的整数,但是为了方便,将其分为四段十进制的数字。但是IPV4只能表示42亿9千万左右,现在已经有点不够用了。为了解决问题,提出了下面的解决方法:

1.动态分配IP地址

全世界的设备不会同时上网,动态分配IP地址更充分的利用现有的IP地址。

2.NAT机制(网络地址映射)

先把IP地址分为两个大类:

1.私网/局域网IP

Ip地址是以10.*; 172.16~172.31.*; 192.168.*   这三类都是私网IP。

2.公网/广域网IP

除了以上三类,剩下的都是公网IP。

要求公网上的设备,对应的公网IP都是唯一的。

但是私网上/局域网上的设备,使用私网IP,只要保证局域网内部的IP不重合即可,不同局域网之间的IP允许重复。

由于上述设定,就有一个重要的限制:

1.公网设备可以直接访问公网设备。

2.局域网访问同一个局域网中的设备也可以。

3.不同局域网中的设备不允许访问。

4.局域网中的设备访问公网设备,需要对局域网设备的IP进行转换。

5.公网设备不允许主动访问局域网设备。

IP数据包的发送和返回

1.Ip数据包的发送

这里简化了一下模型,只考虑经过一个路由器。

路由器一般都有2个IP地址:LAN口IP:往往是一个局域网IP。WAN口IP:可能是公网IP,也可能是局域网IP。

传送的IP数据包的源IP地址由192.168.2.10改为5.6.7.8(WAN口地址),但是目的IP一直是1.2.3.4

一旦这个数据包的源IP地址改为了公网IP,就不会再改变了。

2.数据的返回

数据返回如何找到源IP:路由器会建立路由表,将替换前的IP地址和替换后的IP地址都记录下来,数据包返回时就查询路由表,此时就可以把目的IP还原为原来的局域网IP地址。而且这个表还会包含源端口和目的端口,当同一个局域网同时有多个设备访问同一个服务器时,它们虽然会被转换成同一个公网IP,但是通过端口号便可以区分它们,如果极端情况(它们生成的随机端口号有相同的):路由器会自动将它们映射为不同的端口号来区别。

IPV6简介

IPV6是从根源上解决了IP地址不够使用的难题,IPV6使用16个字节来表示IP地址,总数为2的128次方。但是由于IPV6的报头和IPV4是不兼容的,而且升级也不会提升网速,所以使用的人比较少。

网络号和主机号

同一个局域网中,网络号都是相同的,但是主机号都是不相同的。IP地址和子网掩码进行&运算便可以得到网络号。一般一个网络号中的主机号如果全为0,那么它表示这个网段,不能分配给主机使用。如果主机号全为1,表示广播地址,也不能分配给主机使用。

路由选择

由于网络的结构太复杂,每个路由器无法掌控全局消息,所以只能“摸着石头过河”,找出一个“较优解”。

每个路由器对于它所处的网络环境即相邻的设备有一定的了解,此时它便根据它所掌握的情况选出一条路来,把数据包交给下一个路由器,下一个路由器也找出一条路来再交给下一个路由器。。。。


http://www.kler.cn/a/564661.html

相关文章:

  • linux--多进程开发(6)IPC之内存映射
  • SSL 证书是 SSL 协议实现安全通信的必要组成部分
  • 004 rocketmq集群
  • linux 打包解压命令
  • JDK 21 与Springboot3的新特性
  • 三菱FX5U PLC工字轮排线算法(ST源代码)
  • undo log、redo log和bin log详解
  • springai系列(二)从0开始搭建和接入azure-openai实现智能问答
  • 基于springboot+vue的融合多源高校画像数据与协同过滤算法的高考择校推荐系统
  • 课程2. 用PyTorch训练神经网络与梯度下降
  • 关于回溯算法中的剪枝是否需要for循环的总结归纳
  • Docker如何启动SuperSet实现报表功能
  • GPT 与BERT的异同
  • 事务性质ACID
  • WPF13-MVVM进阶
  • java面试项目介绍,详细说明
  • HarmonyOS NEXT 原生应用/元服务-自定义运行/调试配置
  • Sqli-labs
  • 港澳金融机构入股境内保险公司门槛取消
  • # C# 中堆(Heap)与栈(Stack)的区别