# 故障日志关键字段说明

> phone | 2in1 | tablet | tv | wearable

本文档详细介绍了Remote Communication Kit RCP模块故障日志中的关键字段，对每个字段的数据类型和含义进行了详细说明。

## 故障日志示例

> phone | 2in1 | tablet | tv | wearable

当通过RCP发起的网络请求发生异常时，异常信息中会包含extendInfo字段，其中记录了排查故障所需的关键日志信息。为了进一步提升故障排查能力，未来可能会在日志中继续扩展字段。以下是一个异常信息的示例：

```json
{"code":1007900035,"data":"SSL connect error","extendInfo":{"httpPhase":"011000","dnsDur":"0.31","tcpDur":"43.57","tlsDur":"0.00","sndDur":"0.00","rcvDur":"0.00","totDur":"0.0","redDur":"0.00","osErr":"2","sptIP6":"1",
"proxyType":"none","uptProxyMs":"0","peer":"0.0.**.**","lastOsIn":"0:0:0.0","lastOsOut":"0:0:0.0","sock":"100","sslErr":"error:0A000410:SSL routines::sslv3 alert handshake failure","minTlsVersion":"TLS1.3","maxTlsVersion":"TLS1.3"}}
```

下面详细介绍可能记录的信息字段。

## 基础信息字段

> phone | 2in1 | tablet | tv | wearable

### NetworkError

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 网络错误描述。显示可能存在的错误描述信息。

### httpPhase

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** HTTP阶段状态码，用于标识请求执行的进度。httpPhase是6位由1或者0组成的数字，当前将HTTP执行过程拆分为dns（DNS解析开始）、tcp（TCP握手开始，DNS结束）、tls（TLS握手开始，TCP结束）、snd（请求发送开始，TLS结束）、rcv（响应头接收开始，snd结束）、bdy（响应体接收开始，rcv结束）共6个阶段，每个阶段开始执行时将对应位置值为1。

下表列举了几种httpPhase可能的取值及其含义。

|dns|tcp|tls|snd|rcv|bdy|httpPhase值|含义|
|:--|:--|:--|:--|:--|:--|:---------|:---------------|
|1|1|1|1|1|1|111111|HTTP请求进行到接收响应体阶段|
|1|1|1|1|1|0|111110|HTTP请求进行到接收响应头阶段|
|1|1|1|1|0|0|111100|HTTP请求进行到发送请求阶段|
|1|1|1|0|0|0|111000|HTTP请求进行到TLS阶段|
|1|1|0|0|0|0|110000|HTTP请求进行到TCP阶段|
|1|0|0|0|0|0|100000|HTTP请求进行到DNS阶段|

当DNS响应来自缓存而非查询时，dns位为0。下表列举了几种可能的情况。

|dns|tcp|tls|snd|rcv|bdy|httpPhase值|含义|
|:--|:--|:--|:--|:--|:--|:---------|:------------------------|
|0|1|1|1|1|1|011111|（DNS来自缓存）HTTP请求进行到接收响应体阶段|
|0|1|1|1|1|0|011110|（DNS来自缓存）HTTP请求进行到接收响应头阶段|
|0|1|1|1|0|0|011100|（DNS来自缓存）HTTP请求进行到发送请求阶段|
|0|1|1|0|0|0|011000|（DNS来自缓存）HTTP请求进行到TLS阶段|
|0|1|0|0|0|0|010000|（DNS来自缓存）HTTP请求进行到TCP阶段|

启用连接复用后，tcp与tls标志位为0。下表列举了几种可能的情况。

|dns|tcp|tls|snd|rcv|bdy|httpPhase值|含义|
|:--|:--|:--|:--|:--|:--|:---------|:---------------------|
|0|0|0|1|1|1|000111|（连接复用）HTTP请求进行到接收响应体阶段|
|0|0|0|1|1|0|000110|（连接复用）HTTP请求进行到接收响应头阶段|
|0|0|0|1|0|0|000100|（连接复用）HTTP请求进行到发送请求阶段|
|1|0|0|1|1|1|100111|（连接复用）HTTP请求进行到接收响应体阶段|
|1|0|0|1|1|0|100110|（连接复用）HTTP请求进行到接收响应头阶段|
|1|0|0|1|0|0|100100|（连接复用）HTTP请求进行到发送请求阶段|

## 耗时字段

> phone | 2in1 | tablet | tv | wearable

### dnsDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** DNS解析耗时，单位：ms。指从请求发起至DNS解析完成所经历的时间。

### tcpDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** TCP连接耗时，单位：ms。指从DNS解析完成至TCP连接建立所经历的时间。

### tlsDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** TLS握手耗时，单位：ms。指从TCP连接建立至TLS握手完成所经历的时间。

### sndDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** 发送请求耗时，单位：ms。指从所有连接握手阶段完成至开始发送HTTP请求所经历的时间。

### rcvDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** 接收响应耗时，单位：ms。指从开始发送HTTP请求至开始接收响应头所经历的时间。

### totDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** 请求总耗时，单位：ms。指从请求发起至完全接收响应所经历的全部时间。

### redDur

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 浮点数。

**字段含义：** 重定向耗时，单位：ms。指处理重定向响应所经历的时间。

## 系统错误字段

> phone | 2in1 | tablet | tv | wearable

### osErr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 操作系统错误码。可以参考[内核错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-kernel)。

## 网络配置字段

> phone | 2in1 | tablet | tv | wearable

### sptIP6

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 是否支持IPv6。0表示不支持，1表示支持。

### proxyType

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 代理类型。

### uptProxyMs

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 代理握手耗时，单位：ms。值为0时，表示未使用代理。

### proxyCode

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 代理状态码。值为0时，表示无错误。

### proxyErr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 代理错误码。值为0时，表示无错误。

## DNS相关字段

> phone | 2in1 | tablet | tv | wearable

### tryDns

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 尝试连接的DNS服务器。值为逗号分隔的IP地址列表，例如：8.8.*.*,8.8.*.*。

### connDns

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 连接的DNS服务器。该值为一个有效的IP地址。

### recvDns

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 接收响应的DNS服务器。该值为一个有效的IP地址。

### dnsStatus

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS状态码。0表示成功，1表示有IP地址，请求正常，2表示只拿到了CNAME，3表示非法报文。

### dnsFromNetsys

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS是否来自网络系统缓存。0表示来自DNS服务器解析，1表示来自网络系统缓存。

### dnsSockE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS socket错误码。值为0时，表示无错误。

### dnsCloseE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS关闭错误码。值为0时，表示无错误。

### dnsConnE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS连接错误码。值为0时，表示无错误。

### dnsRecvE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS接收错误码。值为0时，表示无错误。

### dnsSendE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** DNS发送错误码。值为0时，表示无错误。

### dnsRuleValidate

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** DNS规则验证。

## 连接信息字段

> phone | 2in1 | tablet | tv | wearable

### srcAddr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 源地址。IPv4或IPv6格式。

### srcPort

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 源端口。

### dstAddr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 目标地址。IPv4或IPv6格式。

### dstPort

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 目标端口。

### peer

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 对端地址。

### sock

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** Socket句柄。正常值为正整数。

### reused

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 连接是否复用。0表示新建连接；1表示复用连接。

### sockType

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** Socket类型。

### tryConnV4

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 尝试IPv4连接次数。

### tryConnV6

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 尝试IPv6连接次数。

### tryConnIp

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 尝试连接的IP地址。多个IP以逗号分隔。

### tryConnPort

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 尝试连接的端口。多个端口以逗号分隔。

### tcpConnE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** TCP连接错误码。值为0时，表示无错误。

## 传输统计字段

> phone | 2in1 | tablet | tv | wearable

### dlSpeed

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 下载速度，单位：Byte/s。

### ulSpeed

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 上传速度，单位：Byte/s。

### dlSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 下载字节数。

### ulSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 上传字节数。

## SSL/TLS字段

> phone | 2in1 | tablet | tv | wearable

### sslConnE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** SSL连接错误码。值为0时，表示无错误。

### sslErr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** SSL错误描述。为空表示无错误，否则显示具体错误信息。

### lstSendE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 最后一次发送错误码。

### lastRecvE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 最后一次接收错误码。

### lastSslRecvE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最后一次SSL接收错误。为空表示无错误，否则显示具体错误信息。

### lastSslRendE

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最后一次SSL握手错误。为空表示无错误，否则显示具体错误信息。

### minTlsVersion

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最小TLS版本。

### maxTlsVersion

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最大TLS版本。

### tstGlbUsr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 是否信任全局用户证书。0表示不信任，1表示信任。

### tstCurUsr

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 是否信任当前用户证书。0表示不信任，1表示信任。

### selfCaPath

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 自定义CA证书路径。0表示未使用，1表示已使用。

### selfCaFile

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 自定义CA证书文件。0表示未使用，1表示已使用。

### selfCaBlob

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 自定义CA二进制数据。0表示未使用，1表示已使用。

### caFun

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 是否使用自定义验证函数。true表示使用，false表示未使用。

### issuers

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串列表。

**字段含义：** 证书颁发者列表，逗号分隔。

### lastSslRecvSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 最后一次SSL接收字节数。

### lastSslSendSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 最后一次SSL发送字节数。

### totalSslRecvSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 总SSL接收字节数。

### totalSslSendSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 长整型。

**字段含义：** 总SSL发送字节数。

## 超时配置字段

> phone | 2in1 | tablet | tv | wearable

### cfgConnectMs

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 配置的连接超时时间，单位：ms。

### cfgTransferMs

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 配置的传输超时时间，单位：ms。

## HTTP内容字段

> phone | 2in1 | tablet | tv | wearable

### reqLen

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 请求长度。

### respLen

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 响应长度。

## 弱网检测字段

> phone | 2in1 | tablet | tv | wearable

### lastOsIn

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最后一次操作系统接收时间。

### lastOsOut

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 字符串。

**字段含义：** 最后一次操作系统发送时间。

### headerOutSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 发送的header大小，单位：Byte。

### headerInSz

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 接收的header大小，单位：Byte。

## VPN和应用字段

> phone | 2in1 | tablet | tv | wearable

### vpnEnabled

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** VPN是否启用。0表示未启用，1表示启用。

### appNetId

> phone | 2in1 | tablet | tv | wearable

**数据类型：** 整数。

**字段含义：** 应用网络ID。

