| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络编程(六) ———— IP协议(IPV4&IPV6) -> 正文阅读 |
|
[网络协议]网络编程(六) ———— IP协议(IPV4&IPV6) |
接上一篇博客 万字详解TCP协议 文章目录IPV4首部(1) 4位版本号(4个比特位)4位能表示的范围是 0-15 ,指定IP协议的版本,对于IPV4来说就为4 (2) 4位首部长度首部长度也是4位(0-15),单位为4个字节,4个比特位能表示的最大数字是15,因此IP头部最大长度是4*15,也就是60个字节 (3) 8位服务类型(TOS)TOS:Type Of Service,由8个比特位构成。 前3个比特位(0到2)为优先度权字段(已经弃用)
最后一位则为保留位,暂时没有定义
列如你想要最小延迟时,还是得在应用层(应用程序中),通过一些巧妙地算法、数据结构来提高这里的效率 (4) 16位总长度和UDP一样IPV4首部也有64K长度的字段 虽然IP协议看起来也是有个最大64K的限制,但是实际上,IP协议内置了分包组包功能 如果一个数据太长了,IP协议就会自动的拆成多个数据报,然后进行传输,然后进行传输,然后接收方就会重新进行组包
13位片偏移,就描述了当前这个包的顺序 3位标志:第一位暂未使用默认必须需是0,第二位表示"禁止分片"为0表示可以分片,为1表示不能分片,第三位表示"更多分片",如果第三位为1表示当前这个分片就是最后一个分片了。如果第三位0表示当前这个分片不是最后一个分片,后面还有分片 如果要在应用层,基于UDP实现拆包组包,就可以照着IP协议的方式抄作业 (5) 8位生存时间(TTL)这个字段表示一个IP数据报最多在网络上存活多久,这个TTL不是一个"时间"概念,而是一个"次数"。由8个bit构成 TTL是指可以中转多少个路由器的意思,每经过一个路由器,TTL会减少1,直到变成0则丢弃该包。如果默认的TTL是64,经过24个路由器后,那么TTL就剩40了 为啥要有TTL? 主要防止这个IP数据报出现环路转发的情况 主机A => 主机B => 主机C => 主机A (6) 8位协议8位协议指的是当前的数据被接收方收到之后,分用的时候,要把载荷(数据)内容交给传输层的哪个协议 分用的时候就需要保证,载荷数据内容得和接下来交给的协议相匹配 这个IP报头中就会通过8位协议来制定传输层使用哪个协议来解析数据,具体就需要去查RFC文档 (7) 16位首部校验和这个 校验和其实也就是一个类似于crc这样的东西 但是此处只需要校验首部即可,载荷部分(就是一个完整的TCP/UDP数据报)其实已经由TCP或者UDP自己进行校验了 (8) 32位源IP地址+32位目的IP地址源IP就表示"发件人地址",目的IP就表示"收件人地址",IP协议最重要做的事情就是这个事情 IP协议IP协议核心功能:
IPV4协议中,主要通过一个32位整数来表示
点分十进制存粹是给人看的,而计算机内部仍然是通过32位整数来表示的 1.地址管理网段划分(组建局域网的时候非常关键)
2.路由算法(路由选择)此处的路由选择的过程其实就是A到B之间选择一条合适的路径来选择一条路线 这个路径会综合考虑,路径的长短,通信的速度,设备开销的大小 3.特殊的IP地址
NAT32位的IP地址,其实最多能表示42亿9千万,在当下互联网42亿是不够用的 那么如何解决IP地址不够用的问题呢? 1. 动态分配IP一个设备接入网络,就分配,没接入网咯就不分配,因为并不是所有设备都在同时联网。但是这种办法并不是很好,因为设备毕竟这么多,并不能保证这些设备一些联网,一些不联网 2.NAT机制(网络地址替换)使用一个IP地址,来代表一批主机 举个列子
一个局域网的中设备的IP是局域网中的IP,局域网的IP就只能在局域网内部来使用 类似于 192.168.xxx.xxx这样的IP,一定是一个局域网内部的IP 局域网内部的IP在同一个局域网内部不能重复,但是两个不同的局域网可以使用重复的局域网IP 此时直接连接到广域网(外网)的路由器设备就会有一个”外网IP“
NAT机制是当下咱们互联网中的典型情况
NAT机制虽热解决了IP地址不够用的问题,但是也引入了其它的问题
IPv6IPV6相当于IPV4的升级版 IPv4是使用4个字节(32位)表示IP地址,IPv6使用16个字节(128位)表示IP地址。 IPv6从根本上解决了IP地址不够用的问题,IPv6和IPv4是不兼容的,所以升级IPv6是一件成本比较高的事情 当下主流还是IPV4,也可能几年后会慢慢普及 下一篇网络知识即将更新 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/30 4:12:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |