AUTOSAR_CP_SWS_TcpIp
FIG-d37285cfa483586b
822 × 1062 px
1 Release(s)
Figure 9.1: TcpIp TCP connection Setup Client
SHA-256 Inhalts-Fingerabdruck:
d37285cfa483586bf6dd829d4d027d92c03a57743be441166b6db6597a0c6474
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: UML 2.x Sequenzdiagramm (Interaktionsdiagramm) mit kombinierten Fragmenten (
loop,opt). - Architektur-Kontext: AUTOSAR Classic Platform (CP), Communication Stack (Ethernet / TCP/IP), Release R23-11.
- Technischer Zweck: Spezifikation des sequenziellen Verbindungsaufbaus eines TCP-Clients (Active Open, 3-Way-Handshake gem. RFC 793 / RFC 9293) initiiert durch den Socket Adaptor (
SoAd) über den TCP/IP-Stack (TcpIp) bis zum Ethernet Interface (EthIf) inklusive asynchroner Benachrichtigung der Oberschicht.
2. Komponenten, Entitäten & Schnittstellen
Module («module»)
:SoAd(Socket Adaptor): Obere Schicht (BSW Upper Layer). Verwaltet Socket-Verbindungen, mappt PDUs auf IP-Sockets und initiiert Client-Verbindungen anhand der Konfiguration.:TcpIp(TCP/IP Stack): BSW Transport- und Netzwerkschicht. Verwaltet Socket-Ressourcen (TCBs), steuert TCP-Zustandsübergänge, generiert Protokoll-Header und verwaltet Re-Transmission-Timer.:EthIf(Ethernet Interface): BSW Hardware Abstraction Layer. Kapselt Ethernet-Controller und -Transceiver, übernimmt Pufferallokation (EthIf_ProvideTxBuffer), Rahmenübertragung (EthIf_Transmit) und Weiterleitung empfangener Ethernet-Frames.
Schnittstellen & Datentypen
TcpIp_SoAdGetSocket(Std_ReturnType, TcpIp_DomainType, TcpIp_ProtocolType, TcpIp_SoHandleType**): Allokiert Socket-Handle im TcpIp-Modul für eine vorgegebene Adressfamilie (z. B. IPv4/IPv6) und Protokolltyp (TCPIP_IPPROTO_TCP).TcpIp_Bind(Std_ReturnType, TcpIp_SocketIdType, TcpIp_LocalAddrIdType, uint16**): Bindet den Socket optional an eine spezifische lokale IP-Adresse und einen lokalen Quellport.TcpIp_TcpConnect(Std_ReturnType, TcpIp_SocketIdType, const TcpIp_SockAddrType*): Asynchroner Aufruf zum Starten des TCP-Verbindungsaufbaus zur Remote-IP und zum Zielport.TcpIp_MainFunction(): Zyklischer Task-Entry des TCP/IP-Stacks zur Abarbeitung interner Timer, Generierung von Kontrollsegmenten (SYN, ACK) und Zustandsautomaten.EthIf_ProvideTxBuffer(BufReq_ReturnType, uint8, Eth_FrameType, uint8, Eth_BufIdxType**, uint8***, uint16**): Fordert Hardware-/Treiber-Sendepuffer für ausgehende Ethernet-Frames an.EthIf_Transmit(Std_ReturnType, uint8, Eth_BufIdxType, Eth_FrameType, boolean, uint16, const uint8*): Übergibt den fertig serialisierten Frame an den Ethernet-Treiber zum Versand.EthIf_MainFunctionRx(): Zyklisches Polling zur Abholung empfangener Frames aus dem MAC-Treiber.TcpIp_RxIndication(uint8, Eth_FrameType, boolean, const uint8*, const uint8*, uint16): Callback vonEthIfanTcpIpzur Übergabe empfangener Netzwerkpakete.SoAd_TcpConnected(TcpIp_SocketIdType): Asynchroner Callback vonTcpIpanSoAdzur Signalisierung, dass der 3-Way-Handshake abgeschlossen ist und die Verbindung im ZustandESTABLISHEDsteht.
3. Dynamisches Verhalten & Sequenzablauf
Initialisierung & Socket-Reservierung (loop each socket connection configured as 'client' connection)
- Socket-Allokation:
SoAdruft synchronTcpIp_SoAdGetSocket(...)auf.TcpIpallokiert die interne Socket-Datenstruktur (Transmission Control Block / TCB). - Lokale Bindung (Fragment
opt): Falls konfiguriert oder erforderlich, bindetSoAdden Socket viaTcpIp_Bind(...)synchron an lokale IP-Ressourcen (TcpIp_LocalAddrIdType) und Port. - Verbindungsanforderung (Fragment
opt TCP socket):SoAdstößt viaTcpIp_TcpConnect(...)den Verbindungsaufbau an. Der Funktionsaufruf kehrt synchron mitE_OKzurück; die Verbindung befindet sich intern im ZustandSYN_SENT.
3-Way-Handshake
- SYN-Frame senden:
- Im zyklischen Kontext von
TcpIp_MainFunction()wird das ausstehende Verbindungsersuchen verarbeitet. TcpIpreserviert viaEthIf_ProvideTxBuffer(...)Sendespeicher im Ethernet-Treiber.TcpIpserialisiert den TCP-Header mit gesetztem SYN-Flag und initiiert die Übertragung überEthIf_Transmit(...).
- Im zyklischen Kontext von
- SYN-ACK-Frame empfangen:
- Im Kontext von
EthIf_MainFunctionRx()(oder alternativ per ISR-Trigger) meldetEthIfden Empfang des Server-Antwortpakets viaTcpIp_RxIndication(...). TcpIpparst das Frame, validiert SYN+ACK gegen die gesendete Sequenznummer und aktualisiert den internen TCP-Zustand.
- Im Kontext von
- ACK-Frame senden & Abschluss:
- In der darauffolgenden Ausführung von
TcpIp_MainFunction()generiertTcpIpdas finale ACK-Segment. - Anforderung des Puffers (
EthIf_ProvideTxBuffer(...)) und Versand viaEthIf_Transmit(...). - Unmittelbar nach Abschluss des Handshakes wechselt der TCP-Zustand auf
ESTABLISHED. TcpIpbenachrichtigt die Oberschicht asynchron über den CallbackSoAd_TcpConnected(SocketId).
- In der darauffolgenden Ausführung von
4. Normative Relevanz & Entwickler-Hinweise
- Asynchroner API-Vertrag: Der Rückgabewert von
TcpIp_TcpConnect()bestätigt ausschließlich die fehlerfreie Initiierung des Verbindungsaufbaus, nicht das Bestehen der Verbindung. Datenübertragungen (SoAd_IfTransmit/TcpIp_TcpTransmit) dürfen erst nach Eingang des CallbacksSoAd_TcpConnected()erfolgen. - Scheduling- & Latenz-Abhängigkeiten: Die Gesamtdauer des Handshakes wird maßgeblich durch die Zykluszeiten von
TcpIp_MainFunction()undEthIf_MainFunctionRx()bestimmt. Zu lange Perioden können zu Timeouts auf der Gegenseite oder zu vorzeitigen TCP-SYN-Retransmissions im Stack führen (TcpIpTcpSynRetransmissionTimeout). - Puffer-Handhabung (
BufReq_ReturnType): SchlägtEthIf_ProvideTxBuffer()fehl (z. B.BUFREQ_E_BUSYwegen vollem Ringpuffer), darfEthIf_Transmit()nicht aufgerufen werden; der Stack muss den Sendeversuch in der nächstenTcpIp_MainFunction()wiederholen. - Konfigurationsbindung (ARXML):
SoAd: Benötigt Sockets mitSoAdSocketConnectionType = SOAD_SOCKET_CONNECTION_CLIENT.TcpIp: Erfordert adäquate Dimensionierung der Socket-Pools (TcpIpNumSockets), TCP-Puffer (TcpIpTcpTxBufSize) und SYN-Wiederholungszähler (TcpIpTcpMaxSynRetransmissions).
- Fehlerpfade: Antwortet der Server mit einem
RSToder läuft der SYN-Retransmission-Timer ohne ACK ab, unterbleibtSoAd_TcpConnected(); stattdessen erfolgt ein Abbruch/Fehler-Callback (z. B. TCP-State fällt zurück aufCLOSED), was im Diagramm als Gutfall-Sequenz abstrahiert ist.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.