IP协议

基本概念
主机:配有IP地址,但是不进行路由控制的设备;
路由器:即配有IP地址,又能进行路由控制;
节点:主机与路由器的统称;
协议头格式
在这里插入图片描述

  • 4位版本号:指定IP协议的版本,对于IPv4来说,就是4;
  • 4位头部长度:IP头部的长度是多少个32bit,也就是length*4的字节数,4bit表示最大的数是15,因此IP头部最大长度是60字节;
  • 8位服务类型:3位优先权字段,4位TOS字段,和1位保留字段(必须置为0).4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本.这4者相互冲突,只能选择一个.
  • 16位总长度:IP数据报整体占多少个字节.
  • 16位标识:唯一的标识主机发送的报文.如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的.

网段划分
IP地址分为两个部分,网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识
  • 主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
  • 不同的子网其实就是把网络号相同的主机放在一起
  • 如果在子网中新增一台主机,则这台主机的网络和这个子网的网络号一致,但是主机号必须不能和子网中的其他主机重复。

怎么管理和分配IP:DHCP

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

怎么划分网络号和主机号
过去有种划分网络号和主机号的方案,把所有的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

但是这种划分方式存在问题,例如大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址.针对这种情况提出了新的划分方案,称为CIDR.

  • 引入一个额外的子网掩码来区分网络号和主机号.
  • 将子网掩码和IP地址按位相与,得到的结果就是网络号.
  • 网络号和主机号的划分与这个IP地址是A类、B类无关.

IP地址和子网掩码做按位与运算还有一种简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0
特殊IP地址

  • 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网.
  • 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包.
  • 127.*的IP地址用于本机环回测试,通常是127.0.0.1

IP地址的数量限制
CIDR在一定程度缓解了IP地址不够用的问题(提高了利用率,减少了浪费,但是IP地址的绝对上限并没有增加),仍然不是很够用,这时候有三种方法解决:

  1. 动态分配IP地址:只给接入网络的设备文件分配IP地址,因此同一个MAC地址的设备,每次接入互联网时,得到的IP地址不一定是相同的.
  2. NAT技术;
  3. IPV6:IPV6并不是IPV4的简单升级版,这是两个互不相干的协议,彼此互相不兼容;目前IPV6还没有普及.

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

  • 10.*,前8位是网络号
  • 172.16.~172.31.,前12位是网络号.
  • 192.168.*,前16位是网络号,共65536个地址
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值