IP协议的相关特性

文章目录

    • 一.IP协议
    • 二. IP地址不够用了?
      • 1. 动态分配IP(DHCP)
      • 2. NAT机制(网络地址转换)(理解网络结构的关键要点)
      • 3. IPv6
      • 4. 为什么IPv6不如NAT受用?
    • 二. IP组成
    • 三. 路由转发(了解)

一.IP协议

概念

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。

作用

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

格式

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:

01100100.00000100.00000101.00000110。

通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:

100.4.5.6。

IP协议有两个版本,IPv4和IPv6。我们整个的课程,凡是提到IP协议,没有特殊说明的,默认都是指IPv4。

IPv4数量=2^32,大约43亿左右,而TCP/IP协议规定,每个主机都需要有一个IP地址。对于全世界计算机来说,这个数量是不够的,所以后来推出了IPv6(长度128位,是IPv4的4倍)。但因为目前IPv4还广泛的使用,且可以使用其他技术来解决IP地址不足的问题,所以IPv6也就没有普及。

报文结构

在这里插入图片描述

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
  • 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
  • 16位总长度(total length):IP数据报整体占多少个字节。
  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。
  • 13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
  • 8位协议:表示上层协议的类型。

二. IP地址不够用了?

1. 动态分配IP(DHCP)

只在需要上网的时候分配IP, 不需要就不分配.

此方法只能缓解, 不能根治.

2. NAT机制(网络地址转换)(理解网络结构的关键要点)

IP地址分为了两大类:

  • 内网IP: 不同的局域网内的设备, 内网IP可以重复; 同一个局域网内的设备, 内网IP不能重复.
    • 10.* / 172.16.* ~ 172.31.* / 192.168.*
  • 外网IP: 外网IP不能重复.

(1) 如果局域网内部的设备之间进行通信, 是可以的

(2) A局域网中的设备与B局域网中的设备通信, 需要有一个带有外网IP的设备进行中转.

(3) 局域网内部的设备访问带有外网IP的设备, 涉及NAT工作过程.

例如:

在这里插入图片描述

我的电脑 => 腾讯路由器发送请求

源IP: 192.168.1.1

目的IP: 1.2.3.4

这个数据报经过移动路由器的时候, 就会触发NAT机制, 移动路由器会使用自己的外网IP替换当前的源IP.

源IP: 10.20.30.40

目的IP: 1.2.3.4

NAT机制下, 一个外网的IP就就可以代表许多其他设备.

腾讯服务器返回响应(IP数据报)

源IP: 1.2.3.4 源端口: 80

目的IP: 10.20.30.40 目的端口: 1234

这个响应怎么传到PC端?

数据报先到达移动路由器, 对于NAT设备(路由器), 在触发NAT的时候, 会维护一个映射表, 映射表形如:

替换前替换后
IP地址192.168.1.110.20.30.40
端口号12341234

NAT设备要通过查表, 基于可以把目的IP替换回来

源IP: 1.2.3.4 源端口: 80

目的IP: 192.168.1.1 目的端口: 1234

数据每一次经过路由器转发, 都可能会触发NAT机制(要看路由器是如何配置的, 有的模式下会, 有的不会).

NAT的缺点:

  • 效率不高
  • 繁琐
  • 不方便直接访问局域网内的设备

NAT提高了IP地址库的"利用率", 并没有从跟本上解决IP不够用的问题.

但是他有一个很大的优点: 是纯软件实现的方案.

3. IPv6

从根本上解决了IP地址不够用的问题.

IPv4, 4个字节, 32位; IPv6, 16个字节, 128位.

4. 为什么IPv6不如NAT受用?

IPv6和NAT的诞生时间差不多, 但是NAT应用最广泛.

是因为IPv6和IPv4不兼容!

要想升级IPv6, 就需要更换路由器设备, 这样就会造成巨大成本. 而且更换IPv6并不会提高网速, 也不会提高流畅度, 所以一般人不会选择使用IPv6.

相比之下, NAT方案只需要路由器开发商开发出新版本的软件(路由器固件), 升级软件, 即可支持, 成本很低.

二. IP组成

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

网络号标识网段,保证相互连接的两个网段具有不同的标识;

主机号标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

  1. 同一个局域网中, 设备的网络号必须相同, 主机号必须不同
  2. 两个相邻的局域网, 网络号必须不同.

IP地址, 可以是自动分配(一般用于家中的设备, 网络环境简单), 也可以是手动分配的(企业的设备, 网络环境复杂, 需要网管来配置).

一个IP地址, 哪个部分是网络号, 哪个部分是主机号, 是通过 子网掩码 来识别的.

在这里插入图片描述

子网掩码和IP地址一样, 也是4字节, 32位的整数.

左侧必须是连续的1, 右侧必须是连续的0, 0和1不能穿插

255.255.0.0展开就是

1111 1111 1111 1111 0000 0000 0000 0000

1的范围就描述了ip地址对应的哪些位是网络号, 前16个bit就是网络号, 后16个bit就是主机号.

特殊的IP地址

  • 将IP地址中的主机号全部设为0, 就成为了网络号.代表这个局域网
  • 将IP地址中的主机号全部设为1, 就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;
    • 例如 IP 192.168.0.255 子网掩码: 255.255.255.0
    • 192.168.0.是网络号, 255是主机号.主机号全为1, 这就是广播地址
  • 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
    • 本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

三. 路由转发(了解)

每个路由器内部, 有一个数据结构"路由表", 当数据报到达路由器的时候, 就需要查询路由表看看下一步抵达哪.如果查到了, 就直接按照那个方向继续转发, 数据就能到达, 如果没有查到, 路由器会给一个默认的方向(下一跳地址), 沿着默认的方向走(往往是走到了上级路由器)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FL Studio21水果编曲软件怎么下载中文版?

FL Studio21这款软件在国内被广泛使用,因此又被称为"水果"。它提供音符编辑器,可以针对作曲者的要求编辑出不同音律的节奏,例如鼓、镲、锣、钢琴、笛、大提琴、筝、扬琴等等任何乐器的节奏律动。此外,它还提供了方便快捷…

代码随想录算法训练营第57天| 647. 回文子串,516.最长回文子序列,动态规划总结

链接: 647. 回文子串 链接: 516.最长回文子序列 链接: 动态规划总结 647. 回文子串 理解dp数组的含义很重 class Solution {public int countSubstrings(String s) {char[] chars s.toCharArray();boolean[][] dp new boolean[s.length()][s.length()];int res 0;// 遍…

目标检测:Edge Based Oriented Object Detection

论文作者:Jianghu Shen,Xiaojun Wu 作者单位:Harbin Institute of Technology Shenzhen 论文链接:http://arxiv.org/abs/2309.08265v1 内容简介: 1)方向:遥感领域中的目标检测技术 2)应用&…

购物H5商城架构运维之路

一、引言 公司属于旅游行业,需要将旅游,酒店,购物,聚合到线上商城。通过对会员数据进行聚合,形成大会员系统,从而提供统一的对客窗口。 二、业务场景 围绕更加有效地获取用户,提升用户的LTV&a…

Python线程和进程

1、深度解析Python线程和进程 一篇文章带你深度解析Python线程和进程 - 知乎使用Python中的线程模块,能够同时运行程序的不同部分,并简化设计。如果你已经入门Python,并且想用线程来提升程序运行速度的话,希望这篇教程会对你有所帮…

AI写作宝-为什么要使用写作宝

写作一直是一项需要创造力和思考的任务,人工智能(AI)正逐渐成为我们写作过程中的一位新伙伴。AI写作宝等在线AI写作工具正日益普及,为我们提供了更多的写作选择和可能性。 AI写作宝:什么是它们,以及它们能做…

【计算机网络】——传输层

//图片取自王道,仅做交流学习 一、传输层提供的服务 物理层、数据链路层、网络层是通信子网。 传输层:它属于面向通信部分的最高层,同时也是用户功能的最低层 为应用层提供通信服务使用网络层的服务 网络层提供主机之间的逻辑通信。 1、传输…

数据结构——八叉树

八叉树(Octree)是一种用于表示和管理三维空间的树状数据结构。它将三维空间递归地分割成八个八分体(octant),每个八分体可以继续分割,以实现对三维空间的更精细的划分。八叉树通常用于解决空间搜索和查询问…

GitHub Copilot Chat

9月21日,GitHub在官网宣布,所有个人开发者可以使用GitHub Copilot Chat。用户通过文本问答方式就能生成、检查、分析各种代码。 据悉,GitHub Copilot Chat是基于OpenAI的GPT-4模型打造而成,整体使用方法与ChatGPT类似。例如&…

菜单栏图标管理软件Bartender mac 5.0.10中文版介绍

Bartender mac是一款菜单栏图标管理软件,功能强大,可以快速管理菜单栏的图标、显示内容和时间,只需在菜单栏中滑动或滚动、单击菜单栏,或者如果您愿意,只需将鼠标悬停即可立即访问隐藏的菜单栏项目。 Bartender软件介绍…

SAP 选择屏幕动态通过Radio Button 显示与隐藏以及控制是否必输

如何在选择屏幕上进行动态展示屏幕字段,并且进行必输项检查控制 1. 选择屏幕定义 SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.SELECTION-SCREEN BEGIN OF LINE.PARAMETERS: p_r1 TYPE c RADIOBUTTON GROUP grp USER-COMMAND uc DEFAULT X. &q…

基于Java+SpringBoot+Vue物流管理小程序系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

FPGA 图像缩放 千兆网 UDP 网络视频传输,基于B50610 PHY实现,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包UDP…

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境

目录 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发…

DataLink-可视化数据流程编排(一)

DATALINK DataLink是一款基于Actor模型开发的数据流程编排工具,通过拖拽方式在画布中添加各类节点,创建数据处理规则。支持监听多种协议端口,订阅消息中间件,以及读写不同类型的数据库。并提供分发、过滤、打包、延迟、限流、脚本…

小程序开发一个多少钱啊

在今天的数字化时代,小程序已经成为一种非常流行的应用程序形式。由于它们的便捷性、易用性和多功能性,小程序吸引了越来越多的用户和企业。但是,很多人在考虑开发一个小程序时,都会遇到同一个问题:开发一个小程序需要…

Java多线程(三)

文章目录 一、线程通信1.涉及到的三个方法2.说明3.线程通信的例子:使用两个线程打印 1-100 交替打印 二、sleep()和wait()的异同?1.相同点2.不同点 三、线程通信的应用:经典例题:生产者/消费者问题1.问题描述2.代码实现 四、创建线…

【Spatial-Temporal Action Localization(二)】论文阅读2017年

文章目录 1. ActionVLAD: Learning spatio-temporal aggregation for action classification [code](https://github.com/rohitgirdhar/ActionVLAD/)[](https://github.com/rohitgirdhar/ActionVLAD/)摘要和结论引言:针对痛点和贡献相关工作模型框架思考不足之处 2.…

大数取模运算Barrett reduction

Barrett reduction 约减概述 约减的定义(reduction): z ( m o d p ) z \pmod p z(modp) 优化约减的目的:取模操作的底层实现往往使用到的是除法,而除法操作往往是较为耗时的,因此需要把除法操作替换为不那么费时的其他操作。 Barrett 约减概述 单模数…

识别准确率达 95%,华能东方电厂财务机器人实践探索

摘 要:基于华能集团公司大数据与人工智能构想理念,结合东方电厂实际工作需要,财务工作要向数字化、智能化纵深推进,随着财务数字化转型和升级加速,信息化水平不断提升,以及内部信息互联互通不断加深&#x…