rfc5220.Problem Statement for Default Address Selection in Multi-Prefix Environments Operational Iss
sap因rfc错误处理流程详解

sap因rfc错误处理流程详解SAP, as a leading enterprise resource planning (ERP) system, handles various processes and transactions within an organization. However, like any other complex system, it is not immune to errors. One such common error is the RFC (Remote Function Call) error, which occurs during the communication between SAP systems or between SAP and external systems. Understanding the RFC error handling process in SAP is crucial for efficient troubleshooting and system stability. SAP系统作为领先的企业资源规划(ERP)系统,负责处理组织内部的各种流程和交易。
然而,像任何其他复杂系统一样,它并非万无一失。
其中一种常见的错误是RFC(远程函数调用)错误,这种错误发生在SAP系统之间或SAP与外部系统之间的通信过程中。
了解SAP中的RFC错误处理流程对于有效的故障排除和系统稳定性至关重要。
When an RFC error occurs, SAP triggers a series of steps to identify and resolve the issue. Firstly, the system logs the error details, including the error code, description, and any relevant data. This information is crucial for diagnosing the problem. The SAP administrator or support team can then access these logs to analyze the error.当RFC错误发生时,SAP会触发一系列步骤来识别和解决问题。
MySQL错误码及解决方案汇总

MySQL错误码及解决方案汇总引言:MySQL是一种常用的开源数据库管理系统,被广泛应用于各种Web应用程序和其他应用场景中。
然而,在使用MySQL时,我们可能会遇到各种错误和异常情况。
本文将总结常见的MySQL错误码,并为每个错误码提供相应的解决方案。
1. 错误码1 - Can't create/write to file这个错误通常表示MySQL服务器没有权限创建或写入指定的文件。
解决方案可以是确保MySQL对文件或目录具有适当的写入权限,或者更改需要读写的文件或目录的权限。
2. 错误码2 - No such file or directory如果你在MySQL执行命令时收到这个错误码,可能是因为指定的文件或目录不存在。
解决方案包括检查路径和文件名的拼写,确保指定的文件或目录存在。
3. 错误码1045 - Access denied for user这个错误通常表示MySQL拒绝了连接请求,因为提供的用户名或密码不正确。
解决方案可以是确保提供的用户名和密码是正确的,并且用户具有与MySQL服务器建立连接所需的适当权限。
4. 错误码1062 - Duplicate entry当插入或更新表中的数据时,如果遇到这个错误,意味着有重复的唯一键值。
解决方案可以是使用UPDATE语句而不是INSERT语句来更新数据,或者更改需要唯一的键值。
5. 错误码1146 - Table doesn't exist如果查询一个不存在的表时收到此错误码,表示你在操作一个不存在的表。
解决方案可以是确认该表是否存在,或者修正查询语句中的表名。
6. 错误码1215 - Cannot add foreign key constraint这个错误通常表示在创建外键约束时出现问题。
解决方案包括确保参照主键的表已存在,确保参照主键字段类型和长度与外键字段类型和长度一致,并且参照主键上不存在重复值。
7. 错误码1364 - Field 'xxx' doesn't have a default value当插入数据时遇到这个错误,表示插入的数据中有一个或多个字段没有指定默认值,并且该字段不允许为空。
rfc异常处理流程

rfc异常处理流程RFC 异常处理流程引言在网络通信中,RFC(Request for Comments)扮演着重要的角色,它是一系列由互联网工程任务组(IETF)发布的文件,用于制定互联网标准和协议。
然而,在实际应用中,由于各种原因,可能会出现异常情况,需要进行相应的处理。
本文将针对RFC异常处理流程进行详细的介绍和分析。
一、异常情况的分类我们需要对RFC异常情况进行分类。
根据RFC文件的不同用途和内容,可以将异常情况划分为以下几类:1. 语法错误:当一个RFC文件的语法格式违反了规定,无法被正确解析时,就会发生语法错误。
这可能是由于拼写错误、缺少必要的标点符号、格式错误等原因引起的。
2. 逻辑错误:逻辑错误是指RFC文件中的描述与实际需求或规范不一致的情况。
这可能导致协议无法正常工作或产生不符合预期的结果。
3. 安全漏洞:由于互联网环境的复杂性和恶意攻击的存在,RFC文件中可能存在与安全相关的漏洞。
这些漏洞可能会被黑客利用,造成严重的安全威胁。
4. 性能问题:RFC文件中的某些规定可能会导致性能下降或资源浪费,这种情况可能需要进行调整或优化。
5. 兼容性问题:当一个RFC文件与已有的标准或协议不兼容时,就会出现兼容性问题。
这可能导致不同系统之间的通信故障或数据丢失。
二、异常处理流程针对不同的异常情况,我们需要采取不同的处理措施。
下面是一个基本的RFC异常处理流程:1. 异常检测:在应用RFC文件之前,我们需要对其进行严格的检测,以确保其符合语法规范和逻辑要求。
可以使用一些自动化的工具或脚本来进行检测,以提高效率和准确性。
2. 异常定位:一旦发现异常情况,我们需要对其进行定位,找出具体的错误或问题所在。
这可能需要仔细分析RFC文件的内容和相关的标准规范,以确定异常的原因和影响范围。
3. 异常修复:根据异常的类型和具体情况,我们需要制定相应的修复方案。
对于语法错误,可以通过修正拼写错误、添加或删除标点符号等方式进行修复;对于逻辑错误,可能需要修改相关的描述或规定,以保证与实际需求或规范的一致性。
cloudflare error 522的解决方法

Cloudflare错误522通常是因为Web服务器无法处理HTTP请求,可能原因是服务器不堪重负或请求负载很高。
以下是一些解决方法:1. 检查Web服务器状态:确保源Web服务器处于活动状态并接受HTTP请求。
可以使用适用于Linux的Packet Internet Groper (PING) 命令或适用于Windows的Traceroute来检查服务器的连接状态。
如果服务器无法正常工作,可能需要升级服务器主机计划或更改托管计划。
2. 检查请求负载:如果服务器的CPU使用率、内存限制、带宽等达到任何限制,可能会导致522错误。
可以检查这些指标并采取相应措施,如删除不必要的插件、修改代码、升级或更改托管计划,以优化服务器容量。
3. 检查Cloudflare DNS设置:确保Cloudflare的A记录与源Web 服务器的IP地址相匹配。
如果不匹配,需要更改Cloudflare的DNS 设置。
4. 刷新网页或重新加载页面:点击浏览器上的刷新按钮或按下F5键,尝试重新加载页面。
5. 检查网络连接:确保计算机连接到稳定的网络,可以尝试连接到其他网站来确定问题是否与特定网站有关。
6. 清除浏览器缓存:浏览器的缓存可能会导致连接问题,可以清除浏览器缓存。
7. 禁用防火墙或安全软件:防火墙或安全软件可能会阻止计算机与某些网站建立连接,可以暂时禁用这些软件,然后尝试再次连接。
8. 联系网络服务提供商:如果上述方法都没有解决问题,可以尝试联系网络服务提供商,咨询他们是否有关于此错误的进一步建议或解决方案。
请注意,这只是Cloudflare错误522的一些解决方法,具体解决方法可能因情况而异。
如果问题仍然存在,建议寻求专业人士的帮助。
FindBugs错误说明对照表

FindBugs错误说明对照表rule.findbug.B某_BO某ING_IMMEDIATELY_UNBO某=性能-基本类型包装之后立刻解包rule.findbug.IJU_SETUP_NO_=使用错误-TetCae定义的etUp没有调用uper.etUp()rule.findbug.TQ_ALWAYS_VALUE_USED_WHERE_NEVER_=使用错误-某个值使用了注解限制类型,但是这个限制永远不会发生rule.findbug.TLW_TWO_LOCK_=多线程错误-等待两个被持有的锁rule.findbug.RV_01_TO_=使用错误-0至1的随机数被当做整数0rule.findbug.NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULL =高危-参数必须非null但是标记为可为nullrule.findbug.RV_ABSOLUTE_VALUE_OF_RANDOM_=使用错误-尝试计算32位随机整数的绝对值rule.findbug.EC_INCOMPATIBLE_ARRAY_=使用错误-使用equal()比较不兼容的数组rule.findbug.UL_UNRELEASED_LOCK_E某CEPTION_=多线程错误-方法没有在所有异常路径释放锁rule.findbug.SE_NONSTATIC_=不良实践-erialVerionUID不是tatic的rule.findbug.UCF_USELESS_CONTROL_=高危-无用控制流rule.findbug.BC_IMPOSSIBLE_=使用错误-不可能的转换rule.findbug.某SS_REQUEST_PARAMETER_TO_SEND_=安全风险-ervlet的反射导致跨站脚本漏洞rule.findbug.DM_NEW_FOR_=性能-仅为了获得一个方法就创建了一个对象rule.findbug.OBL_UNSATISFIED_=试验-方法可能在清理流或资源时失败rule.findbug.UW_UNCOND_=多线程错误-无条件等待rule.findbug.DLS_DEAD_LOCAL_STORE_OF_=高危-把null 设置给不会用到的局部变量rule.findbug.NM_CLASS_NAMING_=类名应该以大写字母开头rule.findbug.RC_REF_COMPARISON_BAD_PRACTICE_=使用错误-怀疑对两个布尔值的引用进行比较rule.findbug.MWN_MISMATCHED_=多线程错误-不匹配的notify()rule.findbug.NM_VERY_=错误-非常容易迷惑的方法名rule.findbug.FI_NULLIFY_=不良实践-空Finalizer禁用了超类的finalizerrule.findbug.MTIA_SUSPECT_STRUTS_INSTANCE_=高危-继承了trutAction的类使用了实例变量rule.findbug.DM_STRING_=性能-方法调用了效率很低的newString(String)构造方法rule.findbug.STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE.nam e=多线程错误-调用静态DateFormatrule.findbug.NP_NULL_PARAM_DEREF_=使用错误-非虚拟方法调用向非空参数传入了nullrule.findbug.FI_=不良实践-应该删除空的finalizerrule.findbug.CD_CIRCULAR_=试验-类间存在循环引用rule.findbug.EC_UNRELATED_=使用错误-使用equal()比较不同类型rule.findbug.EI_E某POSE_STATIC_=恶意代码漏洞-把可变对象保存到静态字段中可能会暴露内部静态状态rule.findbug.DMI_INVOKING_TOSTRING_ON_ANONYMOUS_=错误-对数组执行toStringrule.findbug.SIC_INNER_SHOULD_BE_STATIC_=性能-可以重构成一个静态内部类rule.findbug.STI_INTERRUPTED_ON_=错误-在thread实例上调用了静态Thread.interrupted()方法_IDIOM_NO_SUPER_=不良实践-clone方法没有调用uper.clone()rule.findbug.VA_FORMAT_STRING_BAD_=错误用法-格式化字符串占位符与传入的参数不匹配rule.findbug.EQ_DOESNT_OVERRIDE_=高危-类没有覆盖父类的equal方法rule.findbug.BC_IMPOSSIBLE_DOWNCAST_OF_=错误用法-集合转换为数组元素时发生的类型转换错误rule.findbug.SE_NO_SUITABLE_CONSTRUCTOR_FOR_E某=不良实践-类是可扩展的,但是没有提供无参数的构造方法rule.findbug.TQ_E某PLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_=错误用法-数值需要类型标示,但是却标记为未知rule.findbug.SIC_INNER_SHOULD_BE_STATIC_NEEDS_=性能-可以筹够成一个静态内部类rule.findbug.EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS.n ame=不良实践-equal检测不兼容的参数操作rule.findbug.RV_RETURN_VALUE_OF_PUTIFABSENT_=错误用法-忽略了putIfAbent的返回值,传递给putIfAbent的值被重用rule.findbug.STCAL_INVOKE_ON_STATIC_CALENDAR_=多线程错误-调用静态Calendarrule.findbug.MS_CANNOT_BE_=恶意代码漏洞-字段不是final的,不能防止恶意代码的攻击rule.findbug.IS_INCONSISTENT_=多线程错误-不一致的同步rule.findbug.SE_NO_=不良实践-类是可序列化的,但是没有定义erialVerionUIDrule.findbug.EI_E某POSE_=恶意代码漏洞-可能暴露内部实现,通过与可变对象引用协作rule.findbug.NM_METHOD_CONSTRUCTOR_=错误用法-明显的方法/构造方法混淆rule.findbug.ICAST_INTEGER_MULTIPLY_CAST_TO_=高危-整形乘法的结果转换为long型rule.findbug.QF_QUESTIONABLE_FOR_=高危-for循环中存在复杂,微妙或者错误的自增rule.findbug.DLS_DEAD_STORE_OF_CLASS_=错误用法-类中保存了无用字符rule.findbug.NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER.nam e=不良实践-使用了未来java版本中成为关键字的标识rule.findbug.BC_VACUOUS_=高危-intanceof会一直返回truerule.findbug.INT_VACUOUS_BIT_=高危-在整形上进行位操作时有一些位上出现空洞rule.findbug.NP_NULL_=错误用法-一个已知的null值被检测它是否是一个类型的实例rule.findbug.SIC_THREADLOCAL_DEADLY_=错误用法-非静态内部类和ThreadLocal的致命结合rule.findbug.EQ_=高危-罕见的equal方法rule.findbug.IJU_NO_=错误用法-TetCae没有任何测试rule.findbug.EQ_OVERRIDING_EQUALS_NOT_=错误用法-equal方法覆盖了父类的equal可能功能不符rule.findbug.某FB_某ML_FACTORY_=高危-方法直接调用了某ml接口的一个具体实现rule.findbug.SWL_SLEEP_WITH_LOCK_=多线程错误-方法在获得锁时调用了Thread.leep()_=不良实践-类实现了Cloneable,但是没有定义或使用clone方法rule.findbug.WA_AWAIT_NOT_IN_=多线程错误-未在循环中使用的Condition.await()rule.findbug.DM_FP_NUMBER_=性能-方法调用了低效的浮点书构造方法;应该使用静态的valueOf代替rule.findbug.SF_SWITCH_NO_=Switch语句中没有包含defaultrule.findbug.NP_NULL_ON_SOME_PATH_FROM_RETURN_=高危-调用返回返回值可能出现null值rule.findbug.NP_CLONE_COULD_RETURN_=不良实践-Clone 方法可能返回nullrule.findbug.MS_OOI_=恶意代码漏洞-属性应该从接口中移除并将访问权限设置为包保护rule.findbug.DM_BO某ED_PRIMITIVE_=性能-方法使用了装箱的基本类型只为了调用toStringrule.findbug.EQ_ABSTRACT_=不良实践-抽象类定义了协变的equal方法rule.findbug.DM_STRING_=性能-方法调用了String 的toString()方法rule.findbug.SE_METHOD_MUST_BE_=错误用法-方法必须是private的为了让序列化正常工作rule.findbug.DL_SYNCHRONIZATION_ON_=多线程错误-在Boolean上使用同步可能导致死锁rule.findbug.UWF_UNWRITTEN_=错误用法-未赋值属性rule.findbug.IS2_INCONSISTENT_=多线程错误-不一致的同步rule.findbug.IM_AVERAGE_COMPUTATION_COULD_=高危-计算平均值可能溢出rule.findbug.BIT_SIGNED_CHECK_HIGH_=错误用法-检查位运算的符号rule.findbug.FL_MATH_USING_FLOAT_=错误用法-方法进行数学运算时使用了浮点数的精度rule.findbug.WS_WRITEOBJECT_=多线程错误-类的writeObject()方法是同步的,但是没有做其他事情rule.findbug.RV_RETURN_VALUE_=错误用法-方法忽略了返回值rule.findbug.SQL_NONCONSTANT_STRING_PASSED_TO_E某=安全风险-非常量的字符串传递给方法执行SQL语句rule.findbug.JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_=不良实践-不可变的类的属性应该是finalrule.findbug.AM_CREATES_EMPTY_ZIP_FILE_=不良实践-创建了一个空的zip文件的入口rule.findbug.DM_NE某TINT_VIA_NE某=性能-使用Random的ne某tInt方法来获得一个随机整数,而不是ne某tDoublerule.findbug.UI_INHERITANCE_UNSAFE_=不良实践-如果类被扩展,GetReource的使用可能就是不安全的rule.findbug.SIO_SUPERFLUOUS_=错误用法-不必要的类型检测使用intanceof操作符rule.findbug.EQ_OTHER_NO_=错误用法-equal()方法定义,但是没有覆盖equal(Object)M_USELESS_ABSTRACT_=试验-抽象方法已经在实现的接口中定义了rule.findbug.MTIA_SUSPECT_SERVLET_INSTANCE_=高危-扩展Servlet的类使用了实例变量rule.findbug.DM_USELESS_=多线程错误-使用默认的空run方法创建了一个线程rule.findbug.ML_SYNC_ON_UPDATED_=多线程错误-方法在一个修改了的属性上进行了同步rule.findbug.BC_UNCONFIRMED_=高危-未检查/未证实的类型转换rule.findbug.FI_FINALIZER_NULLS_=不良实践-Finalizer空属性rule.findbug.BIT_=错误用法-不兼容的位掩码(BIT_AND) rule.findbug.FE_FLOATING_POINT_=高危-测试浮点数相等rule.findbug.TQ_E某PLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_=错误用法-值不要求有类型标示,但是标记为未知rule.findbug.NP_NULL_PARAM_=错误用法-方法调用把null传递给一个非null参数rule.findbug.FB_MISSING_E某PECTED_=试验-findbug 丢失了期待或需要的警告rule.findbug.DMI_INVOKING_HASHCODE_ON_=错误用法-在数组上调用了hahCoderule.findbug.QBA_QUESTIONABLE_BOOLEAN_=错误用法-方法在布尔表达式中分配了boolean文字rule.findbug.SA_FIELD_SELF_=错误用法-属性自己与自己进行了比较rule.findbug.UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR.na me=错误用法-父类的构造方法调用未初始化属性的方法rule.findbug.ES_COMPARING_PARAMETER_STRING_WITH_=不良实践-比较字符串参数使用了==或!=rule.findbug.INT_BAD_COMPARISON_WITH_NONNEGATIVE_=错误用法-错误比较非负值与负数rule.findbug.INT_BAD_COMPARISON_WITH_SIGNED_=错误用法-错误比较带符号的byterule.findbug.IO_APPENDING_TO_OBJECT_OUTPUT_=错误用法-尝试向一个对象输出流添加信息rule.findbug.FI_MISSING_SUPER_=不良实践-Finalizer 没有调用父类的finalizerrule.findbug.VA_FORMAT_STRING_E某TRA_ARGUMENTS_=错误用法-传递了多余实际使用的格式化字符串的参数rule.findbug.HE_EQUALS_USE_=不良实践-类定义了equal(),但使用了Object.hahCode()rule.findbug.IJU_BAD_SUITE_=错误用法-TetCae声明了一个错误的uite方法rule.findbug.DMI_CONSTANT_DB_=安全风险-硬编码了数据库密码rule.findbug.REC_CATCH_E某=高危-捕获了没有抛出的异常rule.findbug.PS_PUBLIC_=高危-类在公用接口中暴露了同步和信号rule.findbug.EC_UNRELATED_=错误用法-调用equal()比较不同的接口类型rule.findbug.UCF_USELESS_CONTROL_FLOW_NE某T_=错误用法-执行到下一行的无用流程控制rule.findbug.LG_LOST_LOGGER_DUE_TO_WEAK_=试验-OpenJDK中存在潜在的丢失logger的风险,因为弱引用rule.findbug.NP_UNWRITTEN_=错误用法-读取未初始化的属性rule.findbug.DMI_UNSUPPORTED_=高危-调用不支持的方法rule.findbug.RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VA =高危-重复比较非空值和nullrule.findbug.EC_BAD_ARRAY_=错误用法-调用equal(),与==效果一样rule.findbug.EI_E某POSE_=恶意代码漏洞-可能通过返回一个可变对象的引用暴露了内部实现rule.findbug.NP_DEREFERENCE_OF_READLINE_=高危-没有判断readLine()的结果是否为空rule.findbug.UPM_UNCALLED_PRIVATE_=性能-从未用到的私有方法rule.findbug.NP_NULL_ON_SOME_=错误用法-可能出现空指针引用rule.findbug.NP_EQUALS_SHOULD_HANDLE_NULL_=不良实践-equal()方法没有检测null参数rule.findbug.EC_NULL_=错误用法-使用空参数调用equal() rule.findbug.SE_BAD_FIELD_=不良实践-非序列化值保存在序列化类的实例变量中rule.findbug.VO_VOLATILE_REFERENCE_TO_=多线程错误-数组的volatile引用不会把数组元素也当做volatile来引用rule.findbug.NP_SYNC_AND_NULL_CHECK_=多线程错误-同步和空值检测发生在同一个属性上rule.findbug.DM_E某=不良实践-方法调用了Sytem.e某it(...)rule.findbug.RC_REF_=不良实践-怀疑进行了引用比较rule.findbug.SE_NO_SUITABLE_=不良实践-类是可序列化的,但是父类没有定义无参数构造方法rule.findbug.DC_=多线程错误-可能对属性进行了双重检测rule.findbug.DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_=错误用法-在int上调用了Double.longBitToDoublerule.findbug.RpC_REPEATED_CONDITIONAL_=错误用法-重复判断条件rule.findbug.WMI_WRONG_MAP_=性能-keySet迭代是低效的,使用entrySet代替rule.findbug.DLS_DEAD_LOCAL_=高危-未用的局部变量rule.findbug.INT_BAD_REM_BY_=错误用法-整数剩余模1 rule.findbug.RV_RETURN_VALUE_IGNORED_BAD_=不良实践-方法忽略异常返回值rule.findbug.SA_LOCAL_SELF_=高危-局部变量的自我赋值rule.findbug.MS_SHOULD_BE_=恶意代码漏洞-属性不是final,但是应该设置成finalrule.findbug.SIC_INNER_SHOULD_BE_=性能-应该是一个静态内部类rule.findbug.NP_GUARANTEED_=错误用法-null值一定会被调用rule.findbug.SE_READ_RESOLVE_MUST_RETURN_=不良实践-readReolve方法必须返回Objectrule.findbug.NP_LOAD_OF_KNOWN_NULL_=高危-加载了已知的null值rule.findbug.B某_BO某ING_IMMEDIATELY_UNBO某ED_TO_PERFORM_=性能-基本数据被装箱又被拆箱_IMPLEMENTS_CLONE_BUT_NOT_=不良实践-类定义了clone()但没有实现Cloneablerule.findbug.BAC_BAD_APPLET_=试验-错误的Applet构造方法依赖未初始化的AppletStubrule.findbug.EQ_GETCLASS_AND_CLASS_=不良实践-equal方法因为子类失败rule.findbug.DB_DUPLICATE_SWITCH_=高危-在两个witch语句中使用了相同的代码rule.findbug.DB_DUPLICATE_=高危-在两个分支中使用了相同的代码rule.findbug.UOE_USE_OBJECT_=试验-在final类上调用了equal,但是没有覆盖Object的equal方法rule.findbug.FI_=不良实践-Finalizer除了调用父类的finalizer以外什么也没做rule.findbug.NP_ALWAYS_=错误用法-调用了null指针rule.findbug.DMI_VACUOUS_SELF_COLLECTION_=错误用法-集合的调用不能被感知rule.findbug.DLS_DEAD_LOCAL_STORE_IN_=错误用法-返回语句中的无用的赋值rule.findbug.IJU_ASSERT_METHOD_INVOKED_FROM_RUN_=错误用法-在run方法中的JUnit检验不能报告给JUnitrule.findbug.DMI_EMPTY_DB_=安全风险-空的数据库密码rule.findbug.DM_BOOLEAN_=性能-方法调用了低效的Boolean构造方法;使用Boolean.valueOf(...)代替rule.findbug.BC_IMPOSSIBLE_=错误用法-不可能转型rule.findbug.BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS.na me=不良实践-Equal方法不应该假设任何有关参数类型的事宜rule.findbug.RV_E某CEPTION_NOT_=错误用法-异常创建后就丢弃了,没有抛出rule.findbug.VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_ =错误用法-基本类型数组传递给一个期待可变对象类型参数的方法rule.findbug.LI_LAZY_INIT_UPDATE_=多线程错误-错误的延迟初始化和更新静态属性rule.findbug.SA_FIELD_SELF_=错误用法-属性自身赋值rule.findbug.EQ_ALWAYS_=错误用法-equal方法一直返回falerule.findbug.DMI_RANDOM_USED_ONLY_=不良实践-Random 对象创建后只用了一次rule.findbug.NM_CLASS_NOT_E某=不良实践-Cla没有继承E某ception,虽然名字像一个异常rule.findbug.SA_LOCAL_DOUBLE_=高危-给局部变量双重赋值rule.findbug.NP_NULL_PARAM_DEREF_ALL_TARGETS_=错误用法-方法调用传递null给非空参数(ALL_TARGETS_DANGEROUS) rule.findbug.NP_TOSTRING_COULD_RETURN_=不良实践-toString方法可能返回nullrule.findbug.BC_BAD_CAST_TO_ABSTRACT_=高危-转换成抽象集合值得怀疑rule.findbug.NM_LCASE_=类定义了hahcode();应该是hahCode()吧?rule.findbug.RU_INVOKE_=多线程错误-在线程中调用了run(你的意思是再启动一次么?)rule.findbug.DMI_INVOKING_TOSTRING_ON_=错误用法-调用了数组的toStringrule.findbug.NM_METHOD_NAMING_=方法名应该以小写字母开头rule.findbug.RCN_REDUNDANT_COMPARISON_TWO_NULL_=高危-重复比较两个null值rule.findbug.SA_LOCAL_SELF_=错误用法-对一个变量进行无意义的自我计算(比如某&某)rule.findbug.MS_MUTABLE_=恶意代码漏洞-属性是可变的Hahtablerule.findbug.RV_DONT_JUST_NULL_CHECK_=高危-方法丢掉了readLine的结果,在检测它是非空之后。
如何处理代码中的环境变量错误

如何处理代码中的环境变量错误在处理代码中的环境变量错误时,我们需要深入了解环境变量的概念和常见的错误类型,然后尝试一些常用的解决方法。
下面是一个简要的指南,用于处理代码中的环境变量错误。
1.理解环境变量环境变量是一种在操作系统中存储配置信息的方法,用于为应用程序提供运行时所需的参数。
环境变量通常包含了一些重要的信息,如数据库连接字符串、API密钥等。
通过使用环境变量,我们可以在不同的环境(如开发、测试和生产环境)中轻松地配置应用程序。
2.环境变量错误类型在处理代码中的环境变量错误之前,我们需要了解可能遇到的错误类型。
以下是一些常见的环境变量错误类型:-未定义的环境变量:当试图访问一个未定义的环境变量时,会抛出一个错误。
这通常是由于环境变量未正确设置或名称拼写错误所致。
-空值环境变量:有时,环境变量可能会被设置为空值。
这可能会导致应用程序崩溃或出现不可预料的行为。
-类型错误的环境变量:有些情况下,应用程序期望一个特定类型的环境变量,但实际传入的环境变量类型与预期类型不符。
这可能导致类型错误或数据转换错误。
-环境变量命名冲突:有时,不同的组件或库可能使用相同的环境变量名称。
这可能会导致意外的行为或错误。
3.检查环境变量的设置在处理环境变量错误之前,首先要检查环境变量的设置。
可以通过以下方法来检查环境变量的设置:-命令行工具:在命令行中使用"echo"命令打印环境变量的值。
例如,对于Linux或MacOS系统,可以使用"echo $VARIABLE_NAME"命令。
对于Windows系统,可以使用"echo %VARIABLE_NAME%"命令。
-编程语言方法:大多数编程语言都提供了一种获取环境变量值的方法。
可以使用相应编程语言的环境变量API来获取环境变量的值,并输出到控制台或日志中。
4.检查环境变量的拼写和格式如果环境变量的设置正确,但仍然存在问题,可能是由于环境变量的拼写或格式错误导致的。
虚拟主机常见错误和解决方法
虚拟主机常见错误和解决方法虚拟主机常见错误和解决网站程序常见有 400,和500 之类的错误. 其中以 400-410 之间的错误是客户端错误(和动态程序无关).例如 404 表示用户访问了一个不存在的网页等. 500错误是服务器端错误,也就是用户程序(Asp,,Php等)错误或者网站配置错误.需要程序员根据错误检查程序.以下是常见错误解决方法:现在总结用户在使用虚拟主机时常见的错误和相应的故障排除方法1. 缺少默认首页.错误信息如下Directory Listing DeniedThis Virtual Directory does not allow contents to be listed.原因:用户删除了网站默认首页(index.htm,index.asp,index.php 等),导致网页无法显示.解决:重新上传默认首页,您也可以在用户中心设定默认首页.2. 404错误: 访问网站显示,无法找到网页:无法找到该页您正在搜索的页面可能已经删除、更名或暂时不可用。
原因:程序文件不在根目录,或者用户访问页面不存在解决:将程序文件移到根目录.或重新上传文件到根目录3.网页打开后,图片无法正常显示. 显示 :原因: 由于用户没有上传图片或者图片路径不对导致图片无法正常显示.解决: 上传图片到指定的位置(在图片上点击鼠标右键->"属性" 查看图片的路径和文件名,然后通过Ftp 上传文件到服务器的相应目录中)500错误:ASP程序常见错误和解决1. 500错误:访问asp网页出现以下错误:原因: 这是Asp程序常见错误提示.说明您的asp程序有问题.您要查看详细错误信息才能够确定到底是asp程序哪里出现了错误.解决: 在IE工具栏选择 "工具"->"Internet 选项"->"高级"-> 取消 "显示友好Http错误信息". 然后重新刷新网页就可以看到详细错误信息.修改后刷新原页面就会提示程序具体错误:Active Server Pages错误 'ASP 0116'丢失脚本关闭分隔符/a.asp,行 12. Asp 连接Access 数据库错误,错误信息如下:Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'[Microsoft][ODBC Microsoft Access Driver]常见错误不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x1588 Thread 0x1260 DBC 0xb1e4f44 Jet'。
MySQL常见错误码及其解决方法
MySQL常见错误码及其解决方法MySQL是一款开源的关系型数据库管理系统,被广泛应用于Web开发和数据存储领域。
然而,由于各种原因,我们在使用MySQL的过程中可能会遇到一些错误码。
本文将介绍一些MySQL常见的错误码及其解决方法,帮助读者更好地应对这些问题。
1. 错误码:1064错误描述:语法错误,无法解析SQL语句。
解决方法:检查SQL语句的语法是否正确,确认是否有缺失的关键字、括号或引号等错误。
2. 错误码:1045错误描述:拒绝访问,用户名或密码错误。
解决方法:确认MySQL用户名和密码是否正确,可以尝试修改密码或重新创建一个新用户。
3. 错误码:2002错误描述:无法连接到MySQL服务器。
解决方法:检查MySQL服务器是否已启动,确认服务器IP地址和端口号是否正确,在确保网络连接正常的情况下,可以尝试重启MySQL服务。
4. 错误码:1062错误描述:唯一约束冲突,插入重复的唯一键值。
解决方法:检查插入的数据是否已存在于该唯一键字段中,可以通过更新已存在的记录来解决冲突。
5. 错误码:1215错误描述:外键约束失败,无法创建或更新引用关系。
解决方法:检查表之间的引用关系是否正确,确认关联字段是否存在或类型是否匹配。
可以尝试先创建被引用的表,再创建引用表。
6. 错误码:1114错误描述:表已满,无法再插入数据。
解决方法:检查表的存储引擎是否支持自动扩容,如果不支持需要手动增加表的存储空间;清理不必要的数据,或者将表的数据迁移到其他存储空间。
7. 错误码:1067错误描述:服务无法启动,可能是配置错误或内存不足。
解决方法:检查MySQL配置文件是否正确,确认参数设置是否合理;增加可用内存或关闭其他占用内存的服务进程。
8. 错误码:1146错误描述:表不存在。
解决方法:确认表名是否正确,检查该表是否存在于当前数据库中,在跨数据库查询时要使用“数据库名.表名”的格式。
9. 错误码:1366错误描述:字段值类型不匹配。
rfc4941.Privacy Extensions for Stateless Address Autoconfiguration in IPv6
Network Working Group T. Narten Request for Comments: 4941 IBM Corporation Obsoletes: 3041 R. Draves Category: Standards Track Microsoft Research S. Krishnan Ericsson Research September 2007 Privacy Extensions for Stateless Address Autoconfiguration in IPv6Status of This MemoThis document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions forimprovements. Please refer to the current edition of the "InternetOfficial Protocol Standards" (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited.AbstractNodes use IPv6 stateless address autoconfiguration to generateaddresses using a combination of locally available information andinformation advertised by routers. Addresses are formed by combining network prefixes with an interface identifier. On an interface that contains an embedded IEEE Identifier, the interface identifier istypically derived from it. On other interface types, the interfaceidentifier is generated through other means, for example, via random number generation. This document describes an extension to IPv6stateless address autoconfiguration for interfaces whose interfaceidentifier is derived from an IEEE identifier. Use of the extension causes nodes to generate global scope addresses from interfaceidentifiers that change over time, even in cases where the interface contains an embedded IEEE identifier. Changing the interfaceidentifier (and the global scope addresses generated from it) overtime makes it more difficult for eavesdroppers and other information collectors to identify when different addresses used in differenttransactions actually correspond to the same node.Narten, et al. Standards Track [Page 1]Table of Contents1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Conventions Used in This Document . . . . . . . . . . . . 41.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 42. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. Extended Use of the Same Identifier . . . . . . . . . . . 5 2.2. Address Usage in IPv4 Today . . . . . . . . . . . . . . . 6 2.3. The Concern with IPv6 Addresses . . . . . . . . . . . . . 72.4. Possible Approaches . . . . . . . . . . . . . . . . . . . 83. Protocol Description . . . . . . . . . . . . . . . . . . . . . 9 3.1. Assumptions . . . . . . . . . . . . . . . . . . . . . . . 10 3.2. Generation of Randomized Interface Identifiers . . . . . . 10 3.2.1. When Stable Storage Is Present . . . . . . . . . . . . 11 3.2.2. In The Absence of Stable Storage . . . . . . . . . . . 12 3.2.3. Alternate Approaches . . . . . . . . . . . . . . . . . 12 3.3. Generating Temporary Addresses . . . . . . . . . . . . . . 13 3.4. Expiration of Temporary Addresses . . . . . . . . . . . . 14 3.5. Regeneration of Randomized Interface Identifiers . . . . . 153.6. Deployment Considerations . . . . . . . . . . . . . . . . 164. Implications of Changing Interface Identifiers . . . . . . . . 175. Defined Constants . . . . . . . . . . . . . . . . . . . . . . 186. Future Work . . . . . . . . . . . . . . . . . . . . . . . . . 187. Security Considerations . . . . . . . . . . . . . . . . . . . 198. Significant Changes from RFC 3041 . . . . . . . . . . . . . . 199. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 2010. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 10.1. Normative References . . . . . . . . . . . . . . . . . . . 20 10.2. Informative References . . . . . . . . . . . . . . . . . . 20 Narten, et al. Standards Track [Page 2]1. IntroductionStateless address autoconfiguration [ADDRCONF] defines how an IPv6node generates addresses without the need for a Dynamic HostConfiguration Protocol for IPv6 (DHCPv6) server. Some types ofnetwork interfaces come with an embedded IEEE Identifier (i.e., alink-layer MAC address), and in those cases, stateless addressautoconfiguration uses the IEEE identifier to generate a 64-bitinterface identifier [ADDRARCH]. By design, the interface identifier is likely to be globally unique when generated in this fashion. The interface identifier is in turn appended to a prefix to form a128-bit IPv6 address. Note that an IPv6 identifier does notnecessarily have to be 64 bits in length, but the algorithm specified in this document is targeted towards 64-bit interface identifiers.All nodes combine interface identifiers (whether derived from an IEEE identifier or generated through some other technique) with thereserved link-local prefix to generate link-local addresses for their attached interfaces. Additional addresses can then be created bycombining prefixes advertised in Router Advertisements via NeighborDiscovery [DISCOVERY] with the interface identifier.Not all nodes and interfaces contain IEEE identifiers. In suchcases, an interface identifier is generated through some other means (e.g., at random), and the resultant interface identifier may not be globally unique and may also change over time. The focus of thisdocument is on addresses derived from IEEE identifiers becausetracking of individual devices, the concern being addressed here, is possible only in those cases where the interface identifier isglobally unique and non-changing. The rest of this document assumes that IEEE identifiers are being used, but the techniques describedmay also apply to interfaces with other types of globally uniqueand/or persistent identifiers.This document discusses concerns associated with the embedding ofnon-changing interface identifiers within IPv6 addresses anddescribes extensions to stateless address autoconfiguration that can help mitigate those concerns for individual users and in environments where such concerns are significant. Section 2 provides backgroundinformation on the issue. Section 3 describes a procedure forgenerating alternate interface identifiers and global scopeaddresses. Section 4 discusses implications of changing interfaceidentifiers. The term "global scope addresses" is used in thisdocument to collectively refer to "Global unicast addresses" asdefined in [ADDRARCH] and "Unique local addresses" as defined in[ULA].Narten, et al. Standards Track [Page 3]1.1. Conventions Used in This DocumentThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].1.2. Problem StatementAddresses generated using stateless address autoconfiguration[ADDRCONF] contain an embedded interface identifier, which remainsconstant over time. Anytime a fixed identifier is used in multiplecontexts, it becomes possible to correlate seemingly unrelatedactivity using this identifier.The correlation can be performed byo An attacker who is in the path between the node in question andthe peer(s) to which it is communicating, and who can view theIPv6 addresses present in the datagrams.o An attacker who can access the communication logs of the peerswith which the node has communicated.Since the identifier is embedded within the IPv6 address, which is a fundamental requirement of communication, it cannot be easily hidden. This document proposes a solution to this issue by generatinginterface identifiers that vary over time.Note that an attacker, who is on path, may be able to performsignificant correlation based ono The payload contents of the packets on the wireo The characteristics of the packets such as packet size and timing Use of temporary addresses will not prevent such payload-basedcorrelation.Narten, et al. Standards Track [Page 4]2. BackgroundThis section discusses the problem in more detail, provides contextfor evaluating the significance of the concerns in specificenvironments and makes comparisons with existing practices.2.1. Extended Use of the Same IdentifierThe use of a non-changing interface identifier to form addresses is a specific instance of the more general case where a constantidentifier is reused over an extended period of time and in multiple independent activities. Any time the same identifier is used inmultiple contexts, it becomes possible for that identifier to be used to correlate seemingly unrelated activity. For example, a networksniffer placed strategically on a link across which all traffic to/from a particular host crosses could keep track of which destinations a node communicated with and at what times. Such information can in some cases be used to infer things, such as what hours an employeewas active, when someone is at home, etc. Although it might appearthat changing an address regularly in such environments would bedesirable to lessen privacy concerns, it should be noted that thenetwork prefix portion of an address also serves as a constantidentifier. All nodes at, say, a home, would have the same networkprefix, which identifies the topological location of those nodes.This has implications for privacy, though not at the same granularity as the concern that this document addresses. Specifically, all nodes within a home could be grouped together for the purposes ofcollecting information. If the network contains a very small number of nodes, say, just one, changing just the interface identifier will not enhance privacy at all, since the prefix serves as a constantidentifier.One of the requirements for correlating seemingly unrelatedactivities is the use (and reuse) of an identifier that isrecognizable over time within different contexts. IP addressesprovide one obvious example, but there are more. Many nodes alsohave DNS names associated with their addresses, in which case the DNS name serves as a similar identifier. Although the DNS nameassociated with an address is more work to obtain (it may require aDNS query), the information is often readily available. In suchcases, changing the address on a machine over time would do little to address the concerns raised in this document, unless the DNS name is changed as well (see Section 4).Web browsers and servers typically exchange "cookies" with each other [COOKIES]. Cookies allow Web servers to correlate a current activity with a previous activity. One common usage is to send back targeted advertising to a user by using the cookie supplied by the browser to Narten, et al. Standards Track [Page 5]identify what earlier queries had been made (e.g., for what type ofinformation). Based on the earlier queries, advertisements can betargeted to match the (assumed) interests of the end user.The use of a constant identifier within an address is of specialconcern because addresses are a fundamental requirement ofcommunication and cannot easily be hidden from eavesdroppers andother parties. Even when higher layers encrypt their payloads,addresses in packet headers appear in the clear. Consequently, if a mobile host (e.g., laptop) accessed the network from severaldifferent locations, an eavesdropper might be able to track themovement of that mobile host from place to place, even if the upperlayer payloads were encrypted.2.2. Address Usage in IPv4 TodayAddresses used in today’s Internet are often non-changing in practice for extended periods of time. In an increasing number of sites,addresses are assigned statically and typically change infrequently. Over the last few years, sites have begun moving away from staticallocation to dynamic allocation via DHCP [DHCP]. In theory, theaddress a client gets via DHCP can change over time, but in practice servers often return the same address to the same client (unlessaddresses are in such short supply that they are reused immediatelyby a different node when they become free). Thus, even within sites using DHCP, clients frequently end up using the same address forweeks to months at a time.For home users accessing the Internet over dial-up lines, thesituation is generally different. Such users do not have permanentconnections and are often assigned temporary addresses each time they connect to their ISP. Consequently, the addresses they use changefrequently over time and are shared among a number of differentusers. Thus, an address does not reliably identify a particulardevice over time spans of more than a few minutes.A more interesting case concerns always-on connections (e.g., cablemodems, ISDN, DSL, etc.) that result in a home site using the sameaddress for extended periods of time. This is a scenario that isjust starting to become common in IPv4 and promises to become more of a concern as always-on Internet connectivity becomes widelyavailable.Finally, it should be noted that nodes that need a (non-changing) DNS name generally have static addresses assigned to them to simplify the configuration of DNS servers. Although Dynamic DNS [DDNS] can beused to update the DNS dynamically, it may not always be availabledepending on the administrative policy. In addition, changing an Narten, et al. Standards Track [Page 6]address but keeping the same DNS name does not really address theunderlying concern, since the DNS name becomes a non-changingidentifier. Servers generally require a DNS name (so clients canconnect to them), and clients often do as well (e.g., some serversrefuse to speak to a client whose address cannot be mapped into a DNS name that also maps back into the same address). Section 4 describes one approach to this issue.2.3. The Concern with IPv6 AddressesThe division of IPv6 addresses into distinct topology and interfaceidentifier portions raises an issue new to IPv6 in that a fixedportion of an IPv6 address (i.e., the interface identifier) cancontain an identifier that remains constant even when the topologyportion of an address changes (e.g., as the result of connecting to a different part of the Internet). In IPv4, when an address changes,the entire address (including the local part of the address) usually changes. It is this new issue that this document addresses.If addresses are generated from an interface identifier, a homeuser’s address could contain an interface identifier that remains the same from one dial-up session to the next, even if the rest of theaddress changes. The way PPP is used today, however, PPP serverstypically unilaterally inform the client what address they are to use (i.e., the client doesn’t generate one on its own). This practice,if continued in IPv6, would avoid the concerns that are the focus of this document.A more troubling case concerns mobile devices (e.g., laptops, PDAs,etc.) that move topologically within the Internet. Whenever theymove, they form new addresses for their current topological point of attachment. This is typified today by the "road warrior" who hasInternet connectivity both at home and at the office. While thenode’s address changes as it moves, the interface identifiercontained within the address remains the same (when derived from anIEEE Identifier). In such cases, the interface identifier can beused to track the movement and usage of a particular machine. Forexample, a server that logs usage information together with sourceaddresses, is also recording the interface identifier since it isembedded within an address. Consequently, any data-mining technique that correlates activity based on addresses could easily be extended to do the same using the interface identifier. This is of particular concern with the expected proliferation of next-generation network-connected devices (e.g., PDAs, cell phones, etc.) in which largenumbers of devices are, in practice, associated with individual users (i.e., not shared). Thus, the interface identifier embedded withinan address could be used to track activities of an individual, evenas they move topologically within the Internet.Narten, et al. Standards Track [Page 7]In summary, IPv6 addresses on a given interface generated viaStateless Autoconfiguration contain the same interface identifier,regardless of where within the Internet the device connects. Thisfacilitates the tracking of individual devices (and thus,potentially, users). The purpose of this document is to definemechanisms that eliminate this issue in those situations where it isa concern.2.4. Possible ApproachesOne way to avoid having a static non-changing address is to useDHCPv6 [DHCPV6] for obtaining addresses. Section 12 of [DHCPV6]discusses the use of DHCPv6 for the assignment and management of"temporary addresses", which are never renewed and provide the sameproperty of temporary addresses described in this document withregards to the privacy concern.Another approach, compatible with the stateless addressautoconfiguration architecture, would be to change the interfaceidentifier portion of an address over time and generate new addresses from the interface identifier for some address scopes. Changing the interface identifier can make it more difficult to look at the IPaddresses in independent transactions and identify which onesactually correspond to the same node, both in the case where therouting prefix portion of an address changes and when it does not.Many machines function as both clients and servers. In such cases,the machine would need a DNS name for its use as a server. Whetherthe address stays fixed or changes has little privacy implicationsince the DNS name remains constant and serves as a constantidentifier. When acting as a client (e.g., initiatingcommunication), however, such a machine may want to vary theaddresses it uses. In such environments, one may need multipleaddresses: a "public" (i.e., non-secret) server address, registeredin the DNS, that is used to accept incoming connection requests from other machines, and a "temporary" address used to shield the identity of the client when it initiates communication. These two cases areroughly analogous to telephone numbers and caller ID, where a usermay list their telephone number in the public phone book, but disable the display of its number via caller ID when initiating calls.To make it difficult to make educated guesses as to whether twodifferent interface identifiers belong to the same node, thealgorithm for generating alternate identifiers must include inputthat has an unpredictable component from the perspective of theoutside entities that are collecting information. Pickingidentifiers from a pseudo-random sequence suffices, so long as thespecific sequence cannot be determined by an outsider examining Narten, et al. Standards Track [Page 8]information that is readily available or easily determinable (e.g.,by examining packet contents). This document proposes the generation of a pseudo-random sequence of interface identifiers via an MD5 hash. Periodically, the next interface identifier in the sequence isgenerated, a new set of temporary addresses is created, and theprevious temporary addresses are deprecated to discourage theirfurther use. The precise pseudo-random sequence depends on both arandom component and the globally unique interface identifier (whenavailable), to increase the likelihood that different nodes generate different sequences.3. Protocol DescriptionThe goal of this section is to define procedures that:1. Do not result in any changes to the basic behavior of addressesgenerated via stateless address autoconfiguration [ADDRCONF].2. Create additional addresses based on a random interfaceidentifier for the purpose of initiating outgoing sessions.These "random" or temporary addresses would be used for a shortperiod of time (hours to days) and would then be deprecated.Deprecated address can continue to be used for alreadyestablished connections, but are not used to initiate newconnections. New temporary addresses are generated periodically to replace temporary addresses that expire, with the exact timebetween address generation a matter of local policy.3. Produce a sequence of temporary global scope addresses from asequence of interface identifiers that appear to be random in the sense that it is difficult for an outside observer to predict afuture address (or identifier) based on a current one, and it is difficult to determine previous addresses (or identifiers)knowing only the present one.4. By default, generate a set of addresses from the same(randomized) interface identifier, one address for each prefixfor which a global address has been generated via statelessaddress autoconfiguration. Using the same interface identifierto generate a set of temporary addresses reduces the number of IP multicast groups a host must join. Nodes join the solicited-node multicast address for each unicast address they support, andsolicited-node addresses are dependent only on the low-order bits of the corresponding address. This default behavior was made to address the concern that a node that joins a large number ofmulticast groups may be required to put its interface intopromiscuous mode, resulting in possible reduced performance. Narten, et al. Standards Track [Page 9]A node highly concerned about privacy MAY use different interface identifiers on different prefixes, resulting in a set of globaladdresses that cannot be easily tied to each other. For example a node MAY create different interface identifiers I1, I2, and I3 for use with different prefixes P1, P2, and P3 on the sameinterface.3.1. AssumptionsThe following algorithm assumes that each interface maintains anassociated randomized interface identifier. When temporary addresses are generated, the current value of the associated randomizedinterface identifier is used. While the same identifier can be used to create more than one temporary address, the value SHOULD changeover time as described in Section 3.5.The algorithm also assumes that, for a given temporary address, animplementation can determine the prefix from which it was generated. When a temporary address is deprecated, a new temporary address isgenerated. The specific valid and preferred lifetimes for the newaddress are dependent on the corresponding lifetime values set forthe prefix from which it was generated.Finally, this document assumes that when a node initiates outgoingcommunication, temporary addresses can be given preference overpublic addresses when the device is configured to do so.[ADDR_SELECT] mandates implementations to provide a mechanism, which allows an application to configure its preference for temporaryaddresses over public addresses. It also allows for animplementation to prefer temporary addresses by default, so that the connections initiated by the node can use temporary addresses without requiring application-specific enablement. This document alsoassumes that an API will exist that allows individual applications to indicate whether they prefer to use temporary or public addresses and override the system defaults.3.2. Generation of Randomized Interface IdentifiersWe describe two approaches for the generation and maintenance of the randomized interface identifier. The first assumes the presence ofstable storage that can be used to record state history for use asinput into the next iteration of the algorithm across systemrestarts. A second approach addresses the case where stable storage is unavailable and there is a need to generate randomized interfaceidentifiers without previous state.Narten, et al. Standards Track [Page 10]The random interface identifier generation algorithm, as described in this document, uses MD5 as the hash algorithm. The node MAY useanother algorithm instead of MD5 to produce the random interfaceidentifier.3.2.1. When Stable Storage Is PresentThe following algorithm assumes the presence of a 64-bit "historyvalue" that is used as input in generating a randomized interfaceidentifier. The very first time the system boots (i.e., out-of-the- box), a random value SHOULD be generated using techniques that helpensure the initial value is hard to guess [RANDOM]. Whenever a newinterface identifier is generated, a value generated by thecomputation is saved in the history value for the next iteration ofthe algorithm.A randomized interface identifier is created as follows:1. Take the history value from the previous iteration of thisalgorithm (or a random value if there is no previous value) andappend to it the interface identifier generated as described in[ADDRARCH].2. Compute the MD5 message digest [MD5] over the quantity created in the previous step.3. Take the leftmost 64-bits of the MD5 digest and set bit 6 (theleftmost bit is numbered 0) to zero. This creates an interfaceidentifier with the universal/local bit indicating localsignificance only.4. Compare the generated identifier against a list of reservedinterface identifiers and to those already assigned to an address on the local device. In the event that an unacceptableidentifier has been generated, the node MUST restart the process at step 1 above, using the rightmost 64 bits of the MD5 digestobtained in step 2 in place of the history value in step 1.5. Save the generated identifier as the associated randomizedinterface identifier.6. Take the rightmost 64-bits of the MD5 digest computed in step 2) and save them in stable storage as the history value to be usedin the next iteration of the algorithm.Narten, et al. Standards Track [Page 11]MD5 was chosen for convenience, and because its particular properties were adequate to produce the desired level of randomization. Thenode MAY use another algorithm instead of MD5 to produce the randominterface identifierIn theory, generating successive randomized interface identifiersusing a history scheme as above has no advantages over generatingthem at random. In practice, however, generating truly randomnumbers can be tricky. Use of a history value is intended to avoidthe particular scenario where two nodes generate the same randomized interface identifier, both detect the situation via DAD, but thenproceed to generate identical randomized interface identifiers viathe same (flawed) random number generation algorithm. The abovealgorithm avoids this problem by having the interface identifier(which will often be globally unique) used in the calculation thatgenerates subsequent randomized interface identifiers. Thus, if two nodes happen to generate the same randomized interface identifier,they should generate different ones on the follow-up attempt.3.2.2. In The Absence of Stable StorageIn the absence of stable storage, no history value will be available across system restarts to generate a pseudo-random sequence ofinterface identifiers. Consequently, the initial history value used above SHOULD be generated at random. A number of techniques might be appropriate. Consult [RANDOM] for suggestions on good sources forobtaining random numbers. Note that even though machines may nothave stable storage for storing a history value, they will in manycases have configuration information that differs from one machine to another (e.g., user identity, security keys, serial numbers, etc.).One approach to generating a random initial history value in suchcases is to use the configuration information to generate some databits (which may remain constant for the life of the machine, but will vary from one machine to another), append some random data, andcompute the MD5 digest as before.3.2.3. Alternate ApproachesNote that there are other approaches to generate random interfaceidentifiers, albeit with different goals and applicability. One such approach is Cryptographically Generated Addresses (CGAs) [CGA], which generate a random interface identifier based on the public key of the node. The goal of CGAs is to prove ownership of an address and toprevent spoofing and stealing of existing IPv6 addresses. They areused for securing neighbor discovery using [SEND]. The CGA randominterface identifier generation algorithm may not be suitable forprivacy addresses because of the following properties:Narten, et al. Standards Track [Page 12]。
rfc3326(The Reason Header Field for the Session Initiation Protocol (SIP))
field is a candidate to be used for such encapsulation.
Schulzrinne, et. al. Standards Track [Page 2]
RFC 3326 The Reason Header Field for SIP December 2002
Initially, the Reason header field defined here appears to be most
useful for BYE and CANCEL requests, but it can appear in any request
6. Acknowledgments ............................................ 7
7. Authors' Addresses ......................................... 7
8. Normative References ....................................... 7
December 2002
The Reason Header Field for the Session Initiation Protocol (SIP)
Status of this Memo
3.4. ISUP interworking .......................................... 5
4. IANA Considerations ........................................ 6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Network Working Group A. Matsumoto Request for Comments: 5220 T. Fujisaki Category: Informational NTT R. Hiromi Intec Netcore K. Kanayama INTEC Systems July 2008 Problem Statement for Default Address Selection in Multi-PrefixEnvironments: Operational Issues of RFC 3484 Default RulesStatus of This MemoThis memo provides information for the Internet community. It doesnot specify an Internet standard of any kind. Distribution of thismemo is unlimited.AbstractA single physical link can have multiple prefixes assigned to it. In that environment, end hosts might have multiple IP addresses and berequired to use them selectively. RFC 3484 defines default sourceand destination address selection rules and is implemented in avariety of OSs. But, it has been too difficult to use operationally for several reasons. In some environments where multiple prefixesare assigned on a single physical link, the host using the defaultaddress selection rules will experience some trouble incommunication. This document describes the possible problems thatend hosts could encounter in an environment with multiple prefixes. Matsumoto, et al. Informational [Page 1]Table of Contents1. Introduction (2)1.1. Scope of This Document (3)2. Problem Statement (4)2.1. Source Address Selection (4)2.1.1. Multiple Routers on a Single Interface (4)2.1.2. Ingress Filtering Problem (5)2.1.3. Half-Closed Network Problem (6)2.1.4. Combined Use of Global and ULA (7)2.1.5. Site Renumbering (8)2.1.6. Multicast Source Address Selection (9)2.1.7. Temporary Address Selection (9)2.2. Destination Address Selection (10)2.2.1. IPv4 or IPv6 Prioritization (10)2.2.2. ULA and IPv4 Dual-Stack Environment (11)2.2.3. ULA or Global Prioritization (12)3. Conclusion (13)4. Security Considerations (14)5. Normative References (14)1. IntroductionIn IPv6, a single physical link can have multiple prefixes assignedto it. In such cases, an end host may have multiple IP addressesassigned to an interface on that link. In the IPv4-IPv6 dual-stackenvironment or in a site connected to both a Unique Local Address(ULA) [RFC4193] and globally routable networks, an end host typically has multiple IP addresses. These are examples of the networks thatwe focus on in this document. In such an environment, an end hostmay encounter some communication troubles.Inappropriate source address selection at the end host causesunexpected asymmetric routing, filtering by a router, or discardingof packets because there is no route to the host.Considering a multi-prefix environment, destination address selection is also important for correct or better communication establishment. RFC 3484 [RFC3484] defines default source and destination addressselection algorithms and is implemented in a variety of OSs. But, it has been too difficult to use operationally for several reasons, such as lack of an autoconfiguration method. There are some problematiccases where the hosts using the default address selection rulesencounter communication troubles.This document describes the possibilities of incorrect addressselection that lead to dropping packets and communication failure. Matsumoto, et al. Informational [Page 2]1.1. Scope of This DocumentAs other mechanisms already exist, the multi-homing techniques forachieving redundancy are basically out of our scope.We focus on an end-site network environment and unmanaged hosts insuch an environment. This is because address selection behavior atthese kinds of hosts is difficult to manipulate, owing to the users’ lack of knowledge, hosts’ location, or massiveness of the hosts.The scope of this document is to sort out problematic cases relatedto address selection. It includes problems that can be solved in the framework of RFC 3484 and problems that cannot. For the latter, RFC 3484 might be modified to meet their needs, or another addressselection solution might be necessary. For the former, an additional mechanism that mitigates the operational difficulty might benecessary.This document also includes simple solution analysis for eachproblematic case. This analysis basically just focuses on whether or not the case can be solved in the framework of RFC 3484. If not,some possible solutions are described. Even if a case can be solved in the framework of RFC 3484, as mentioned above, it does notnecessarily mean that there is no operational difficulty. Forexample, in the environment stated above, it is not a feasiblesolution to configure each host’s policy table by hand. So, for such a solution, the difficulty of configuration is yet another commonproblem.Matsumoto, et al. Informational [Page 3]2. Problem Statement2.1. Source Address Selection2.1.1. Multiple Routers on a Single Interface==================| Internet |==================| |2001:db8:1000::/36 | | 2001:db8:8000::/36+----+-+ +-+----+| ISP1 | | ISP2 |+----+-+ +-+----+| |2001:db8:1000:::/48 | | 2001:db8:8000::/48+-----+---+ +----+----+| Router1 | | Router2 |+-------+-+ +-+-------+| |2001:db8:1000:1::/64 | | 2001:db8:8000:1::/64| |-----+-+-----+------|+-+----+ 2001:db8:1000:1::100| Host | 2001:db8:8000:1::100+------+Figure 1Generally speaking, there is no interaction between next-hopdetermination and address selection. In this example, when a hoststarts a new connection and sends a packet via Router1, the host does not necessarily choose address 2001:db8:1000:1::100 given by Router1 as the source address. This causes the same problem as described in the next section, "Ingress Filtering Problem".Solution analysis:As this case depends on next-hop selection, controlling theaddress selection behavior at the Host alone doesn’t solve theentire problem. One possible solution for this case is adoptingsource-address-based routing at Router1 and Router2. Anothersolution may be using static routing at Router1, Router2, and the Host, and using the corresponding static address selection policy at the Host.Matsumoto, et al. Informational [Page 4]2.1.2. Ingress Filtering Problem==================| Internet |==================| |2001:db8:1000::/36 | | 2001:db8:8000::/36+----+-+ +-+----+| ISP1 | | ISP2 |+----+-+ +-+----+| |2001:db8:1000:::/48 | | 2001:db8:8000::/48++-------++| Router |+----+----+| 2001:db8:1000:1::/64| 2001:db8:8000:1::/64------+---+----------|+-+----+ 2001:db8:1000:1::100| Host | 2001:db8:8000:1::100+------+Figure 2When a relatively small site, which we call a "customer network", is attached to two upstream ISPs, each ISP delegates a network addressblock, which is usually /48, and a host has multiple IPv6 addresses. When the source address of an outgoing packet is not the one that is delegated by an upstream ISP, there is a possibility that the packet will be dropped at the ISP by its ingress filter. Ingress filtering is becoming more popular among ISPs to mitigate the damage ofdenial-of-service (DoS) attacks.In this example, when the router chooses the default route to ISP2and the host chooses 2001:db8:1000:1::100 as the source address forpackets sent to a host (2001:db8:2000::1) somewhere on the Internet, the packets may be dropped at ISP2 because of ingress filtering.Solution analysis:One possible solution for this case is adopting source-address-based routing at the Router. Another solution may be using static routing at the Router, and using the corresponding static address selection policy at the Host.Matsumoto, et al. Informational [Page 5]2.1.3. Half-Closed Network ProblemYou can see a second typical source address selection problem in amulti-homed site with global half-closed connectivity, as shown inthe figure below. In this case, Host-A is in a multi-homed networkand has two IPv6 addresses, one delegated from each of the upstreamISPs. Note that ISP2 is a closed network and does not haveconnectivity to the Internet.+--------+| Host-C | 2001:db8:a000::1+-----+--+|============== +--------+| Internet | | Host-B | 2001:db8:8000::1============== +--------+| |2001:db8:1000:/36 | | 2001:db8:8000::/36+----+-+ +-+---++| ISP1 | | ISP2 | (Closed Network/VPN tunnel) +----+-+ +-+----+| |2001:db8:1000:/48 | | 2001:db8:8000::/48++-------++| Router |+----+----+| 2001:db8:1000:1::/64| 2001:db8:8000:1::/64------+---+----------|+--+-----+ 2001:db8:1000:1::100| Host-A | 2001:db8:8000:1::100+--------+Figure 3You do not need two physical network connections here. Theconnection from the Router to ISP2 can be a logical link over ISP1and the Internet.When Host-A starts the connection to Host-B in ISP2, the sourceaddress of a packet that has been sent will be the one delegated from ISP2 (that is, 2001:db8:8000:1::100) because of rule 8 (longestmatching prefix) in RFC 3484.Host-C is located somewhere on the Internet and has IPv6 address2001:db8:a000::1. When Host-A sends a packet to Host-C, the longest matching algorithm chooses 2001:db8:8000:1::100 for the source Matsumoto, et al. Informational [Page 6]address. In this case, the packet goes through ISP1 and may befiltered by ISP1’s ingress filter. Even if the packet is notfiltered by ISP1, a return packet from Host-C cannot possibly bedelivered to Host-A because the return packet is destined for 2001:db8:8000:1::100, which is closed from the Internet.The important point is that each host chooses a correct sourceaddress for a given destination address. To solve this kind ofnetwork-policy-based address selection problem, it is likely thatdelivering additional information to a node provides a bettersolution than using algorithms that are local to the node.Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into Host-A’s RFC 3484 policy table can solve this problem.2.1.4. Combined Use of Global and ULA============| Internet |============||+----+----+| ISP |+----+----+|2001:db8:a::/48 |+----+----+| Router |+-+-----+-+| | 2001:db8:a:100::/64fd01:2:3:200:/64 | | fd01:2:3:100:/64-----+--+- -+--+----| |fd01:2:3:200::101 | | 2001:db8:a:100::100+----+----+ +-+----+ fd01:2:3:100::100| Printer | | Host |+---------+ +------+Figure 4As RFC 4864 [RFC4864] describes, using a ULA may be beneficial insome scenarios. If the ULA is used for internal communication,packets with the ULA need to be filtered at the Router.Matsumoto, et al. Informational [Page 7]This case does not presently create an address selection problembecause of the dissimilarity between the ULA and the global unicastaddress. The longest matching rule of RFC 3484 chooses the correctaddress for both intra-site and extra-site communication.In the future, however, there is a possibility that the longestmatching rule will not be able to choose the correct address anymore. That is the moment when the assignment of those global unicastaddresses starts, where the first bit is 1. In RFC 4291 [RFC4291],almost all address spaces of IPv6, including those whose first bit is 1, are assigned as global unicast addresses.Namely, when we start to assign a part of the address block 8000::/1 as the global unicast address and that part is used somewhere in the Internet, the longest matching rule ceases to function properly forthe people trying to connect to the servers with those addresses.For example, when the destination host has an IPv6 address 8000::1,and the originating host has 2001:db8:a:100::100 andfd01:2:3:100::100, the source address will be fd01:2:3:100::100,because the longest matching bit length is 0 for 2001:db8:a:100::100 and 1 for fd01:2:3:100::100, respectively.Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into theHost’s RFC 3484 policy table can solve this problem. Anothersolution is to modify RFC 3484 and define ULA’s scope smaller than the global scope.2.1.5. Site RenumberingRFC 4192 [RFC4192] describes a recommended procedure for renumbering a network from one prefix to another. An autoconfigured address has a lifetime, so by stopping advertisement of the old prefix, theautoconfigured address is eventually invalidated.However, invalidating the old prefix takes a long time. You cannotstop routing to the old prefix as long as the old prefix is notremoved from the host. This can be a tough issue for ISP networkadministrators.There is a technique of advertising the prefix with the preferredlifetime zero; however, RFC 4862 [RFC4862], Section 5.5.4, does notabsolutely prohibit the use of a deprecated address for a newoutgoing connection due to limitations on the capabilities ofapplications.Matsumoto, et al. Informational [Page 8]+-----+---+| Router |+----+----+| 2001:db8:b::/64 (new)| 2001:db8:a::/64 (old)------+---+----------|+--+---+ 2001:db8:b::100 (new)| Host | 2001:db8:a::100 (old)+------+Figure 5Solution analysis:This problem can be mitigated in the RFC 3484 framework. Forexample, configuring some address selection policies into theHost’s RFC 3484 policy table can solve this problem.2.1.6. Multicast Source Address SelectionThis case is an example of site-local or global unicastprioritization. When you send a multicast packet across siteborders, the source address of the multicast packet should be aglobally routable address. The longest matching algorithm, however, selects a ULA if the sending host has both a ULA and a Global Unicast Address.Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into thesending host’s RFC 3484 policy table can solve this problem.2.1.7. Temporary Address SelectionRFC 3041 [RFC3041] defines a Temporary Address. The usage of aTemporary Address has both pros and cons. It is good for viewing web pages or communicating with the general public, but it is bad for aservice that uses address-based authentication and for loggingpurposes.If you could turn the temporary address on and off, that would bebetter. If you could switch its usage per service (destinationaddress), that would also be better. The same situation can be found when using an HA (home address) and a CoA (care-of address) in aMobile IPv6 [RFC3775] network.Matsumoto, et al. Informational [Page 9]Section 6 ("Future Work") of RFC 3041 discusses that an API extension might be necessary to achieve a better address selection mechanismwith finer granularity.Solution analysis:This problem cannot be solved in the RFC 3484 framework. Apossible solution is to make applications to select desirableaddresses by using the IPv6 Socket API for Source AddressSelection defined in RFC 5014 [RFC5014].2.2. Destination Address Selection2.2.1. IPv4 or IPv6 PrioritizationThe default policy table gives IPv6 addresses higher precedence than IPv4 addresses. There seem to be many cases, however, where network administrators want to control the address selection policy of endhosts so that it is the other way around.Matsumoto, et al. Informational [Page 10]+---------+| Tunnel || Service |+--+---++-+| ||| ||===========||==| Internet || |===========||==| ||192.0.2.0/24 | ||+----+-+ ||| ISP | ||+----+-+ ||| ||IPv4 (Native) | || IPv6 (Tunnel)192.0.2.0/26 | ||++-----++-+| Router |+----+----+| 2001:db8:a:1::/64| 192.0.2.0/28|------+---+----------|+-+----+ 2001:db8:a:1::100| Host | 192.0.2.2+------+Figure 6In the figure above, a site has native IPv4 and tunneled IPv6connectivity. Therefore, the administrator may want to set a higher priority for using IPv4 than for using IPv6 because the quality ofthe tunnel network seems to be worse than that of the nativetransport.Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into theHost’s RFC 3484 policy table can solve this problem.2.2.2. ULA and IPv4 Dual-Stack EnvironmentThis is a special form of IPv4 and IPv6 prioritization. When anenterprise has IPv4 Internet connectivity but does not yet have IPv6 Internet connectivity, and the enterprise wants to provide site-local IPv6 connectivity, a ULA is the best choice for site-local IPv6 Matsumoto, et al. Informational [Page 11]connectivity. Each employee host will have both an IPv4 global orprivate address and a ULA. Here, when this host tries to connect to Host-B that has registered both A and AAAA records in the DNS, thehost will choose AAAA as the destination address and the ULA for the source address. This will clearly result in a connection failure.+--------+| Host-B | AAAA = 2001:db8::80+-----+--+ A = 192.0.2.1|============| Internet |============| no IPv6 connectivity+----+----+| Router |+----+----+|| fd01:2:3::/48 (ULA)| 192.0.2.128/25++--------+| Router |+----+----+| fd01:2:3:4::/64 (ULA)| 192.0.2.240/28------+---+----------|+-+------+ fd01:2:3:4::100 (ULA)| Host-A | 192.0.2.245+--------+Figure 7Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into Host-A’s RFC 3484 policy table can solve this problem.2.2.3. ULA or Global PrioritizationDifferentiating services by the client’s source address is verycommon. IP-address-based authentication is a typical example ofthis. Another typical example is a web service that has pages forthe public and internal pages for employees or involved parties. Yet another example is DNS zone splitting.Matsumoto, et al. Informational [Page 12]However, a ULA and an IPv6 global address both have global scope, and RFC 3484 default rules do not specify which address should be givenpriority. This point makes IPv6 implementation of address-basedservice differentiation a bit harder.+--------+| Host-B |+-+--|---+| |===========|==| Internet | |===========|==| || |+----+-+ +-->+------+| ISP +------+ DNS | 2001:db8:a::80+----+-+ +-->+------+ fc12:3456:789a::80| |2001:db8:a::/48 | |fc12:3456:789a::/48 | |+----+----|+| Router ||+---+-----|+| | 2001:db8:a:100::/64| | fc12:3456:789a:100::/64--+-+---|-----| |+-+---|--+ 2001:db8:a:100::100| Host-A | fc12:3456:789a:100::100+--------+Figure 8Solution analysis:This problem can be solved in the RFC 3484 framework. Forexample, configuring some address selection policies into Host-A’s RFC 3484 policy table can solve this problem.3. ConclusionWe have covered problems related to destination or source addressselection. These problems have their roots in the situation whereend hosts have multiple IP addresses. In this situation, every endhost must choose an appropriate destination and source address; this choice cannot be achieved only by routers.Matsumoto, et al. Informational [Page 13]It should be noted that end hosts must be informed about routingpolicies of their upstream networks for appropriate addressselection. A site administrator must consider every possible address false-selection problem and take countermeasures beforehand.4. Security ConsiderationsWhen an intermediate router performs policy routing (e.g., source-address-based routing), inappropriate address selection causesunexpected routing. For example, in the network described in Section 2.1.3, when Host-A uses a default address selection policy andchooses an inappropriate address, a packet sent to a VPN can bedelivered to a location via the Internet. This issue can lead topacket eavesdropping or session hijack. However, sending the packet back to the correct path from the attacker to the node is not easy,so these two risks are not serious.As documented in the Security Considerations section of RFC 3484,address selection algorithms expose a potential privacy concern.When a malicious host can make a target host perform addressselection (for example, by sending an anycast or multicast packet),the malicious host can get knowledge of multiple addresses attachedto the target host. In a case like Section 2.1.4, if an attacker can make the Host to send a multicast packet and the Host performs thedefault address selection algorithm, the attacker may be able todetermine the ULAs attached to the host.These security risks have roots in inappropriate address selection.Therefore, if a countermeasure is taken, and hosts always select anappropriate address that is suitable to a site’s network structureand routing, these risks can be avoided.5. Normative References[RFC3041] Narten, T. and R. Draves, "Privacy Extensions forStateless Address Autoconfiguration in IPv6", RFC 3041,January 2001.[RFC3484] Draves, R., "Default Address Selection for InternetProtocol version 6 (IPv6)", RFC 3484, February 2003.[RFC3775] Johnson, D., Perkins, C., and J. Arkko, "Mobility Support in IPv6", RFC 3775, June 2004.[RFC4192] Baker, F., Lear, E., and R. Droms, "Procedures forRenumbering an IPv6 Network without a Flag Day", RFC 4192, September 2005.Matsumoto, et al. Informational [Page 14][RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 UnicastAddresses", RFC 4193, October 2005.[RFC4291] Hinden, R. and S. Deering, "IP Version 6 AddressingArchitecture", RFC 4291, February 2006.[RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 StatelessAddress Autoconfiguration", RFC 4862, September 2007.[RFC4864] Van de Velde, G., Hain, T., Droms, R., Carpenter, B., and E. Klein, "Local Network Protection for IPv6", RFC 4864,May 2007.[RFC5014] Nordmark, E., Chakrabarti, S., and J. Laganier, "IPv6Socket API for Source Address Selection", RFC 5014,September 2007.Matsumoto, et al. Informational [Page 15]Authors’ AddressesArifumi MatsumotoNTT PF LabMidori-Cho 3-9-11Musashino-shi, Tokyo 180-8585JapanPhone: +81 422 59 3334EMail: arifumi@Tomohiro FujisakiNTT PF LabMidori-Cho 3-9-11Musashino-shi, Tokyo 180-8585JapanPhone: +81 422 59 7351EMail: fujisaki@Ruri HiromiIntec Netcore, Inc.Shinsuna 1-3-3Koto-ku, Tokyo 136-0075JapanPhone: +81 3 5665 5069EMail: hiromi@Ken-ichi KanayamaINTEC Systems Institute, Inc.Shimoshin-machi 5-33Toyama-shi, Toyama 930-0804JapanPhone: +81 76 444 8088EMail: kanayama_kenichi@intec-si.co.jpMatsumoto, et al. Informational [Page 16]Full Copyright StatementCopyright (C) The IETF Trust (2008).This document is subject to the rights, licenses and restrictionscontained in BCP 78, and except as set forth therein, the authorsretain all their rights.This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIEDWARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual PropertyThe IETF takes no position regarding the validity or scope of anyIntellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described inthis document or the extent to which any license under such rightsmight or might not be available; nor does it represent that it hasmade any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can befound in BCP 78 and BCP 79.Copies of IPR disclosures made to the IETF Secretariat and anyassurances of licenses to be made available, or the result of anattempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of thisspecification can be obtained from the IETF on-line IPR repository at /ipr.The IETF invites any interested party to bring to its attention anycopyrights, patents or patent applications, or other proprietaryrights that may cover technology that may be required to implementthis standard. Please address the information to the IETF atietf-ipr@.Matsumoto, et al. Informational [Page 17]。