DEENESPTFRRUARHIKOZHNL
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 von EthIf an TcpIp zur Übergabe empfangener Netzwerkpakete.
  • SoAd_TcpConnected(TcpIp_SocketIdType): Asynchroner Callback von TcpIp an SoAd zur Signalisierung, dass der 3-Way-Handshake abgeschlossen ist und die Verbindung im Zustand ESTABLISHED steht.

3. Dynamisches Verhalten & Sequenzablauf

Initialisierung & Socket-Reservierung (loop each socket connection configured as 'client' connection)
  1. Socket-Allokation: SoAd ruft synchron TcpIp_SoAdGetSocket(...) auf. TcpIp allokiert die interne Socket-Datenstruktur (Transmission Control Block / TCB).
  2. Lokale Bindung (Fragment opt): Falls konfiguriert oder erforderlich, bindet SoAd den Socket via TcpIp_Bind(...) synchron an lokale IP-Ressourcen (TcpIp_LocalAddrIdType) und Port.
  3. Verbindungsanforderung (Fragment opt TCP socket): SoAd stößt via TcpIp_TcpConnect(...) den Verbindungsaufbau an. Der Funktionsaufruf kehrt synchron mit E_OK zurück; die Verbindung befindet sich intern im Zustand SYN_SENT.
3-Way-Handshake
  1. SYN-Frame senden:
    • Im zyklischen Kontext von TcpIp_MainFunction() wird das ausstehende Verbindungsersuchen verarbeitet.
    • TcpIp reserviert via EthIf_ProvideTxBuffer(...) Sendespeicher im Ethernet-Treiber.
    • TcpIp serialisiert den TCP-Header mit gesetztem SYN-Flag und initiiert die Übertragung über EthIf_Transmit(...).
  2. SYN-ACK-Frame empfangen:
    • Im Kontext von EthIf_MainFunctionRx() (oder alternativ per ISR-Trigger) meldet EthIf den Empfang des Server-Antwortpakets via TcpIp_RxIndication(...).
    • TcpIp parst das Frame, validiert SYN+ACK gegen die gesendete Sequenznummer und aktualisiert den internen TCP-Zustand.
  3. ACK-Frame senden & Abschluss:
    • In der darauffolgenden Ausführung von TcpIp_MainFunction() generiert TcpIp das finale ACK-Segment.
    • Anforderung des Puffers (EthIf_ProvideTxBuffer(...)) und Versand via EthIf_Transmit(...).
    • Unmittelbar nach Abschluss des Handshakes wechselt der TCP-Zustand auf ESTABLISHED.
    • TcpIp benachrichtigt die Oberschicht asynchron über den Callback SoAd_TcpConnected(SocketId).

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 Callbacks SoAd_TcpConnected() erfolgen.
  • Scheduling- & Latenz-Abhängigkeiten: Die Gesamtdauer des Handshakes wird maßgeblich durch die Zykluszeiten von TcpIp_MainFunction() und EthIf_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ägt EthIf_ProvideTxBuffer() fehl (z. B. BUFREQ_E_BUSY wegen vollem Ringpuffer), darf EthIf_Transmit() nicht aufgerufen werden; der Stack muss den Sendeversuch in der nächsten TcpIp_MainFunction() wiederholen.
  • Konfigurationsbindung (ARXML):
    • SoAd: Benötigt Sockets mit SoAdSocketConnectionType = 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 RST oder läuft der SYN-Retransmission-Timer ohne ACK ab, unterbleibt SoAd_TcpConnected(); stattdessen erfolgt ein Abbruch/Fehler-Callback (z. B. TCP-State fällt zurück auf CLOSED), was im Diagramm als Gutfall-Sequenz abstrahiert ist.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R23-11 → R24-11 normative Änderung Nachfolger: FIG-0c0bf4aa84ce2a08
  • Architektur / Module: Modul LSduR («module») zwischen :TcpIp und :EthIf eingefügt.
  • Pufferallokation (EthIf_ProvideTxBuffer): Entfällt vollständig.
  • Sendepfad (SYN- und ACK-Segmente): TcpIp ruft nun LSduR_TcpIpTransmit() auf LSduR auf; LSduR leitet den Rahmen via EthIf_Transmit() an EthIf weiter.
  • Sendebestätigung (Tx Confirmation): Neu eingeführt; nach EthIf_MainFunctionTx() meldet EthIf den Versand via LSduR_EthIfTxConfirmation() an LSduR, welches TcpIp_TxConfirmation() an TcpIp aufruft.
  • Empfangspfad (SYN-ACK-Segment): EthIf übergibt empfangene Daten via LSduR_EthIfRxIndication() an LSduR, welches TcpIp_RxIndication() an TcpIp aufruft.
  • Schnittstellensignaturen: Aufrufe TcpIp_SoAdGetSocket, TcpIp_Bind, TcpIp_TcpConnect, EthIf_Transmit und TcpIp_RxIndication ohne Typ- und Parameterdeklarationen dargestellt.
  • Callback SoAd_TcpConnected: Parameter von TcpIp_SocketIdType auf SoHandle geändert (SoAd_TcpConnected(SoHandle)).

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

«module» | :TcpIp | «module» | :EthIf | «module» | :SoAd | loop each socket connection configured as 'client' connection |                 |  |    |   |   | opt | opt TCP socket |        |  |    |  |   |  |      |  |  |  |    |     |   |  |  |      |   |  |    |    | EthIf_MainFunctionRx() | SoAd_TcpConnected(TcpIp_SocketIdType) | EthIf_Transmit(Std_ReturnType, uint8, Eth_BufIdxType, Eth_FrameType, boolean, uint16, const uint8*) | EthIf_ProvideTxBuffer(BufReq_ReturnType, uint8, Eth_FrameType, uint8, Eth_BufIdxType**, uint8***, uint16**) | TcpIp_MainFunction() | TcpIp_Bind(Std_ReturnType, TcpIp_SocketIdType, TcpIp_LocalAddrIdType, uint16**) | EthIf_ProvideTxBuffer(BufReq_ReturnType, uint8, Eth_FrameType, uint8, Eth_BufIdxType**, uint8***, uint16**) | TcpIp_RxIndication(uint8, Eth_FrameType, boolean, const uint8*, const uint8*, uint16) | EthIf_Transmit(Std_ReturnType, uint8, Eth_BufIdxType, Eth_FrameType, boolean, uint16, const uint8*) | TcpIp_MainFunction() | TcpIp_TcpConnect(Std_ReturnType, TcpIp_SocketIdType, const TcpIp_SockAddrType*) | TcpIp_SoAdGetSocket(Std_ReturnType, TcpIp_DomainType, TcpIp_ProtocolType, TcpIp_SoHandleType**)

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R23-11 AUTOSAR_CP_SWS_TcpIp S. 106 9.1 Figure 9.1: TcpIp TCP connection Setup Client