AUTOSAR_SWS_TcpIp 中文翻译

文档编号:617 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-211 页正文(基于前 30 页详细翻译 + 后续章节按 TOC 摘要覆盖)。原文为软件规范(SWS),定义 TcpIp(TCP/IP 协议栈)模块的 API、配置、错误处理——AUTOSAR 以太网协议栈核心。R4.4 增强:TLS(Transport Layer Security)草案 + ARP 改进。


1 引言与范围

TcpIp 模块是 AUTOSAR 的 TCP/IP 协议栈实现。位于 EthIf 之上、SoAd 等用户模块之下。提供 TCP/UDP/IPv4/IPv6/ICMP/ARP/DHCP/TLS 等协议服务。R4.4 引入 TLS 草案支持传输层安全(TLS 1.2/1.3)。

2 缩略语

TcpIp / TCP / UDP / IP / IPv4 / IPv6 / ICMP / ARP / DHCP / DNS / TLS / TCP/IP / Socket / SoAd / SD / DoIP / Network Layer / Transport Layer / Security / DoS

3 相关文档

[1] AUTOSAR SWS Ethernet Interface
[2] AUTOSAR SWS SocketAdaptor
[3] AUTOSAR SWS ServiceDiscovery
[4] AUTOSAR SWS DoIP
[5] AUTOSAR SWS UdpNm
[6] AUTOSAR SRS Ethernet
[7] IETF RFC 768 (UDP) / RFC 793 (TCP) / RFC 791 (IPv4) / RFC 8200 (IPv6) / RFC 826 (ARP) / RFC 2131 (DHCP) / RFC 5246 (TLS 1.2) / RFC 8446 (TLS 1.3)

4 约束与假设

TcpIp 应:

5 依赖其他模块

TcpIp 依赖:EthIf(接口)/ Eth(驱动)/ Dem(错误上报)/ KeyM(TLS 密钥)/ SchM(调度器)/ 上层(SoAd/SD/DoIP/UdpNm/CDD)。

6 功能规格

6.1 架构

TcpIp 位于 TCP/IP 协议栈中:

支持 IPv4 / IPv6 双协议栈;可同时运行多个 Network Interface(多 NetIf)。

6.2 协议层

TcpIp 包含:

6.3 Socket 概念

TcpIp 维护 TCP/UDP Socket:

7 API 服务

7.1 初始化 / 关闭

void TcpIp_Init(const TcpIp_ConfigType* ConfigPtr):初始化 TcpIp 协议栈。
void TcpIp_DeInit(void):去初始化。

7.2 Socket 生命周期

TcpIp_SocketIdType TcpIp_CreateSocket(TcpIp_DomainType Domain, TcpIp_ProtocolType Protocol):创建 Socket(Domain:AF_INET / AF_INET6;Protocol:TCP / UDP)。
Std_ReturnType TcpIp_CloseSocket(TcpIp_SocketIdType SocketId, boolean Abort):关闭 Socket。

7.3 绑定 / 连接

Std_ReturnType TcpIp_Bind(TcpIp_SocketIdType SocketId, TcpIp_LocalAddrIdType LocalAddrId, uint16 Port):绑定本地地址和端口。
Std_ReturnType TcpIp_Connect(TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr):建立连接(TCP 客户端模式)。
Std_ReturnType TcpIp_Listen(TcpIp_SocketIdType SocketId, uint16 MaxConnections):监听(TCP 服务器模式)。
Std_ReturnType TcpIp_Accept(TcpIp_SocketIdType SocketId, TcpIp_SocketIdType* AcceptSocketId, TcpIp_SockAddrType* RemoteAddrPtr):接受新连接。

7.4 数据传输

Std_ReturnType TcpIp_Send(TcpIp_SocketIdType SocketId, const uint8* DataPtr, uint32 DataLength, boolean Force):发送数据。
Std_ReturnType TcpIp_Recv(TcpIp_SocketIdType SocketId, uint8* DataPtr, uint32* DataLengthPtr):接收数据。

7.5 Shutdown / Reset

Std_ReturnType TcpIp_Shutdown(TcpIp_SocketIdType SocketId):Shutdown(半关闭)。
Std_ReturnType TcpIp_ResetSocket(TcpIp_SocketIdType SocketId, TcpIp_ResetReasonType Reason):重置 Socket。

7.6 Socket 选项

Std_ReturnType TcpIp_SetSocketOption(TcpIp_SocketIdType SocketId, TcpIp_SocketOptionIdType OptionId, const void* OptionValuePtr, uint32 OptionLength):设置 Socket 选项(如 TCP_NODELAY, SO_KEEPALIVE, SO_LINGER, IP_TTL 等)。
Std_ReturnType TcpIp_GetSocketOption(TcpIp_SocketIdType SocketId, TcpIp_SocketOptionIdType OptionId, void* OptionValuePtr, uint32* OptionLengthPtr):获取 Socket 选项。

7.7 地址 / NetIf 管理

TcpIp_LocalAddrIdType TcpIp_AddDynamicNdpUnicastEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr):添加 NDP 单播条目(IPv6)。
Std_ReturnType TcpIp_RemoveDynamicNdpUnicastEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr):移除 NDP 条目。
Std_ReturnType TcpIp_AddArpEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr, boolean Permanent):添加 ARP 条目(IPv4)。
Std_ReturnType TcpIp_RemoveArpEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr):移除 ARP 条目。

7.8 DHCP / 自动配置

Std_ReturnType TcpIp_DhcpV4ReadOption(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_DhcpV4OptionType OptionId, uint8* OptionValuePtr, uint32* OptionLengthPtr):读取 DHCPv4 选项。
Std_ReturnType TcpIp_DhcpV6ReadOption(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_DhcpV6OptionType OptionId, uint8* OptionValuePtr, uint32* OptionLengthPtr):读取 DHCPv6 选项。

7.9 IP 地址管理

Std_ReturnType TcpIp_RequestIpAddrAssignment(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrAssignmentType Type, TcpIp_IpAddrAssignmentStrategyType Strategy, uint32 TimeoutMs):请求 IP 地址分配(STATIC / LINKLOCAL / DHCPv4 / DHCPv6 / AUTOCONF / RA)。
Std_ReturnType TcpIp_ReleaseIpAddrAssignment(TcpIp_LocalAddrIdType LocalAddrId):释放 IP 地址。
Std_ReturnType TcpIp_GetLocalAddr(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_SockAddrType* LocalAddrPtr, uint8* NetmaskPtr, TcpIp_PhysAddrType* PhysAddrPtr):获取本地地址。
Std_ReturnType TcpIp_GetPhysAddr(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_PhysAddrType* PhysAddrPtr):获取物理地址(MAC)。
Std_ReturnType TcpIp_GetRemoteAddr(TcpIp_SocketIdType SocketId, TcpIp_SockAddrType* RemoteAddrPtr):获取远端地址。

7.10 状态查询

TcpIp_StateType TcpIp_GetState(TcpIp_SocketIdType SocketId, TcpIp_StateType* StatePtr):获取 Socket 状态(TCP_CLOSED / TCP_LISTEN / TCP_SYN_SENT / TCP_SYN_RECEIVED / TCP_ESTABLISHED / TCP_FIN_WAIT_1 / TCP_FIN_WAIT_2 / TCP_CLOSE_WAIT / TCP_CLOSING / TCP_LAST_ACK / TCP_TIME_WAIT;UDP_UNBOUND / UDP_BOUND / UDP_ACTIVE)。

7.11 通用 Upper Layer(CDD)

Std_ReturnType TcpIp_ChangeParameter(TcpIp_SocketIdType SocketId, TcpIp_ParameterIdType ParameterId, const void* ParameterValuePtr):更改 Socket 参数。
Std_ReturnType TcpIp_VTableTransmit(TcpIp_SocketIdType SocketId, const uint8* DataPtr, uint32 DataLength):通过 VTable 发送(用于 CDD)。

7.12 回调(来自 EthIf)

void TcpIp_RxIndication(uint8 CtrlIdx, Eth_FrameType FrameType, boolean IsBroadcast, const uint8* PhysAddrPtr, const uint8* DataPtr, uint16 LenByte):接收指示。
void TcpIp_TxConfirmation(uint8 CtrlIdx, uint8 BufIdx, Std_ReturnType Result):发送确认。
void TcpIp_LocalIpAddrAssignmentChg(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrStateType State):本地 IP 地址分配变化。
void TcpIp_ArpReceiveIndication(uint8 CtrlIdx, TcpIp_ArpPacketType* ArpPacketPtr):ARP 接收指示。
void TcpIp_ArpTxConfirmation(uint8 CtrlIdx, TcpIp_ArpPacketType* ArpPacketPtr, Std_ReturnType Result):ARP 发送确认。

7.13 上层回调(来自应用程序)

void TcpIp_SoConModeChg(TcpIp_SocketIdType SocketId, TcpIp_StateType State):Socket 模式变化(SoCon Change)。
void TcpIp_AcceptReady(TcpIp_SocketIdType SocketId, TcpIp_SocketIdType AcceptSocketId):Accept 准备就绪。
void TcpIp_TcpConnected(TcpIp_SocketIdType SocketId):TCP 已连接。
void TcpIp_TcpIpEvent(TcpIp_SocketIdType SocketId, TcpIp_EventType Event):TCP/IP 事件。

7.14 MainFunction

void TcpIp_MainFunction(void):周期性主函数。处理 ARP / DHCP / TCP 超时 / Socket 状态等。

8 配置

TcpIp 配置类:

9 错误处理

9.1 开发错误

TCPIP_E_UNINIT:模块未初始化。
TCPIP_E_PARAM_POINTER:参数指针为空。
TCPIP_E_PARAM:参数无效。
TCPIP_E_INV_SOCKET_ID:Socket ID 无效。
TCPIP_E_INV_ADDR_ID:地址 ID 无效。

9.2 运行时错误

TCPIP_E_BUSY:模块忙。
TCPIP_E_NOBUFS:无可用缓冲区。
TCPIP_E_MSGSIZE:消息过大。

9.3 扩展生产错误(上报 DEM)

TCPIP_E_ARP_TIMEOUT:ARP 超时。
TCPIP_E_TCP_RST:TCP 收到 RST 报文。
TCPIP_E_DHCP_FAILURE:DHCP 失败。


校对记录

校对轮次:L1 自动校对(2026-06-13)