IPv4 IPv6
IP提供了一种best-effort,connection-less数据delivery服务。
- best-efforty意味着它不保证IP数据段会成功到达目的地。当error发生时,IP通常选择丢弃data.可靠性必须由上层(通常是TCP)提供。
- connectionless意味着IP不维护任何关于相关数据段和网络单元(一般是路由器)的connection state information。如果source 发送两个连续的datagram(first A ,then B)到相同目的地,它们可以独立选择传输路径,也可以是不同的路径。B可以比A先到达。在传输过程中,它们可能被复制、被修改内容。所以需要TCP处理这些潜在问题。
一、IPV4 Header


- version(版本):IPV4是4,IPV6是6;
- IHL(Internet Header Length)。IHL是占4“位”,它的每一“位”代表4个字节。所以它总共占据 32bits。IHL的 正常值是0101 = 5,一共是 5*4 = 20字节;最大值 1111 = 15,15*4 = 60 bytes;
- DS(Differentiated Services Field,DS Field,区分服务字段) + ECN (Explicit Congestion Notification,显式拥塞通知)= ToS(Type of Service,服务类型字段)。这些字段被用于数据转发时的特殊处理
- Total Length(总长度字段),包括IPv4头部在内的IPV4数据报的总长度(bytes).max size = 65535bytes. 因为一些携带IPV4的低层协议不能精确表示自己的封装的数据大小,所以要在 Header中给出。
- Identification(标识字段),帮助标识从IPV4 主机发出的数据包。为了不与其他数据包分片混淆,发送主机每发送一个数据报时,会将一个内部计数器加1,然后将这个计数值拷贝到Identification.
- Flags包括(0、DF(don't fragment)位、MF(more fragment))和后面的13位Fragment Offset都用于分片和重组、
- Time-to-Live(生存期字段,TTL),用来设置一个数据报经过的路由器上限数量,一般设置为(64,128,255等),数据报被路由器转发1次,该值减1.当该值变为0时,数据报被丢弃。发送方is notified with a ICMP 消息。为了防止路由循环导致的数据报在网络中循环。
- Protocol(协议字段),包含一个数字用于说明数据报有效载荷(payload portion)的数据类型。 通常值是17(for UDP)和6(for TCP).提供多路分解(可以携带多种类型的传输层协议)
- Header Checksum(头部校验和字段)仅仅计算IPV4头部,它意味着 IP协议不检查IPv4 datagram 的有效载荷(e.g.,TCP or UDP data) 的正确性。所以封装在IP中的协议(传输层)在自己头部中有一个含有其头部和数据的校验和。
- Source IP Address(源IP地址),32位,通常标识一台计算机的一个借口。
- Destination IP Address(目的IP地址),32位
二、IPV6 Header


- version(版本):IPV4是4,IPV6是6;
- DS(Differentiated Services Field,DS Field,区分服务字段) + ECN (Explicit Congestion Notification,显式拥塞通知)= Traffic Class byte(通信类型字段)。这些字段被用于数据转发时的特殊处理
- Flow Label(流标签字段),由应用进程或内核为某个给定的套接口选取,应用于通过该套接口发送的任何IPv6数据报。所谓流(flow)指的是从某个特定源头到某个特定目的地的一个分组序列,而且该源头期望中间的路由器对这些分组进行特殊处理。
- Payload length(净荷长度)是去掉IPv6 Header(40bytes)头部之后所有内容的总长度。它与IPv4总长度的区别在于IPv4把头部也计算在内。
- Next Header(头部字段),这个字段就是IPV4的协议字段,它指出了the type of header follow IPV6 header.
- Hop Limit(跳限字段)类似于IPv4的TTL,用来设置一个数据报经过的路由器上限数量,一般设置为(64,128,255等),数据报被路由器转发1次,该值减1.当该值变为0时,数据报被丢弃
- Source IP Address(源IP地址),128位,通常标识一台计算机的一个借口。
- Destination IP Address(目的IP地址),128位
二、IPv4到IPV6的变化
- IPv6没有header length,固定为40bytes的IPv6 header length。
- 如果两个IPv6的 header 是64对齐的,那么它们的地址也是64位对齐的,如此可以加快在64位体系结构上的处理。
- IPv6没有fragmentation fields(分片字段),因为IPv6有一个独立的分片头用于这种情况,因为分片是异常情况,异常情况不应该减慢正常处理
- IPv6没有用于其自身的校验和字段。这是因为所有的上层协议(TCP、UDP等)的数据单元都有自己的校验和字段。
- IPv6没有广播
- IPv6路由器不对所转发的分组执行分片。
- IPv6要求支持认证和安全选项。
- IPv6要求支持路径MTU发现功能。
https://www.cnblogs.com/craftor/p/3811739.html

IPv4 IPv6的更多相关文章
- IPv4&IPv6双重协议栈
IPV4 TCP客户与IPV6服务器之间的通信: 1 启动IPV6服务器,创建套接监听口,绑定通配地址 2 IPV4调用gethostbyname找到该服务器对应的A记录 3 调用connect,向服 ...
- LwIP Application Developers Manual10---LwIP IPv4/IPv6 stacks
1.前言 lwIP正在加入IPv6,一个实验性的版本可以通过git下载,该版本实现了一个IPv4/IPv6的双协议栈.通过在lwipopts.h定义LWIP_IPV6可以使能IPv6 2.已实现的IP ...
- IP协议/地址(IPv4&IPv6)概要
IP协议/地址(IPv4&IPv6)概要 IP协议 什么是IP协议 IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议. [1] 协议的特征 无连 ...
- 网络编程中常见地址结构与转换(IPv4/IPv6)
1. sockaddr/sockaddr_in/in_addr (IPv4).sockaddr6_in/in6_addr/addrinfo (IPv6) struct sockaddr { unsig ...
- nginx同时监听本机ipv4/ipv6端口
修改nginx.conf配置文件 server { listen ; listen [::]:; } 0.0.0.0 表示本机所有ipv4地址,需要监听特定地址替换即可 [::] 表示本机所有ip ...
- IP-v4&IP-v6
IPv6与IPv4区别: 1:IPv6的地址空间更大.IPv4中规定IP地址长度为32,即有2^32-1个地址: 而IPv6中IP地址的长度为128,即有2^128-1个地址. 2.IPv6的路由表更 ...
- IPV4/IPV6双协议栈配置案例
拓扑: XRV1配置: =================================================================== hostname XRV1! ipv6 ...
- IPv4&&IPv6地址结构分析
IPv4套接字地址结构: 套接字都需要有一个指向套接字地址结构的指针作为参数.每个协议簇都定义它自己的套接字地址结构.这些结构的名字均已sockaddr_开头,并以对应每个协议族的唯一后缀结尾. wi ...
- mysql IPv4 IPv6
w如何通过一个mysql方法,而不是借助脚本判断?INET6_ATON(expr) https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-func ...
- ipv4 ipv6简介
互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),在Internet上,一种给主机编址的方式.常见的IP地址,分为 ...
随机推荐
- babel基础配置
babel是干什么的 es6语法已经出来很多年,但各家游览器对es6的支持各不相同.为了解决这个问题,babel应运而生. babel支持把es6语法编译成es5,完全兼容各家游览器,避免兼容性问题出 ...
- 【牛客网-剑指offer】用两个栈实现队列
题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 知识点及概念: 队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而 ...
- C stdarg.h
参考:https://www.cnblogs.com/bettercoder/p/3488299.html 博主:运动和行动 va_start宏,获取可变参数列表的第一个参数的地址(list是类 ...
- 【CSS3】rgba与opacity
RGBA 语法 R:红色值.正整数 | 百分数 G:绿色值.正整数 | 百分数 B:蓝色值.正整数| 百分数 A:透明度.取值0~1之间 为什么要用RGBA而不用opacity 因为在项目中需要用到一 ...
- Element UI - 打开弹出框(el-dialog)页面会抖动
当 dialog 出现时,页面右边缩小了 5px,模态框看起来会抖动 解决方案 发现 body 多了样式:padding-right: 5px 和 overflow: hidden.紧接着我就在全局设 ...
- JMeter 服务器监控插件环境配置
1.工具准备: jmeter下载地址:(尽量下载老版本如apache-jmeter-2.11,其他的版本比较高,可能和jmeter-plugins不兼容) http://jmeter.apache.o ...
- Centos 更改语言设置为中文
说明 自己装系统时一般都可以自定义选择系统语言.可是云端服务器一般都是安装好的镜像,默认系统语言为英文,对于初学者可能还会有搞不懂的计算机词汇.这里简单说一下centos7怎么修改系统语言为中文. 修 ...
- IDEA工具,配置相关笔记
1.修改背景颜色(黑/白)File -> settings -> Editor -> Color Scheme -> General -> (Scheme选择Defaul ...
- Qt第三方库QCustomPlot——QCustomPlot解读
这个小部件类,对于QCustomPlot的所有方面都有所体现 下面阅读它的函数: 函数组织顺序为: 基本设置---添加图线---删除图线---添加额外Item---层次管理---坐标轴管理----导出 ...
- python实现收邮件判断模块poplib,email
一.代码 # 输入邮件地址, 口令和POP3服务器地址: import datetime import email import poplib import email.policy from ema ...