Hacker DirectoryHacker Directory

WEB / WEB-02.03

Ports, sockets and firewalls

IP describes a path toward a host interface; ports, sockets and firewalls identify the transport endpoint and its conditions.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mechanism

Read every scenario without motion

TCP + listener

  1. TCP endpoint condition ready

    Tuple is 192.0.2.10:51000 → 198.51.100.200:443. Listener presence is known in the fixture; no wire handshake or application response is shown.

    Client endpoint
    TCP new flow · endpoint condition selected
    Transit firewall
    Policy not yet evaluated
    Server endpoint
    TCP listener present · no traffic received
  2. Firewall observed outbound traffic

    Arrival at the transit policy point completed. NEW is observer context, not proof of TCP establishment.

    Client endpoint
    TCP summary sent to firewall
    Transit firewall
    Received: outbound / NEW / TCP / dst 443
    Server endpoint
    TCP listener present · no traffic received
  3. Local WEB_OUT policy match

    Outbound NEW TCP destination 443 matches the toy rule: allow. This local decision is not delivery to the server.

    Client endpoint
    Client tuple 192.0.2.10:51000
    Transit firewall
    WEB_OUT → allow
    Server endpoint
    TCP listener present · no traffic received
  4. Allowed traffic reached the server

    The server observer now received traffic. Firewall allow and endpoint delivery are separate steps; no application body is represented.

    Client endpoint
    Client tuple 192.0.2.10:51000
    Transit firewall
    WEB_OUT allow · forwarded
    Server endpoint
    TCP traffic received · listener present
  5. Matching listener evaluated locally

    With a known matching listener, establishment is possible. This summary is not a full handshake, actual creation of accepted socket c1, or TLS/HTTP success.

    Client endpoint
    Application response outcome unknown
    Transit firewall
    WEB_OUT allow · forwarded
    Server endpoint
    Listener present · establishment possible

TCP / no listener

  1. Listener condition changed

    Tuple and policy match NORMAL, but this variant has no matching listener in the fixture. No real service shutdown or OS API is executed.

    Client endpoint
    TCP 192.0.2.10:51000 → 198.51.100.200:443
    Transit firewall
    Policy not yet evaluated
    Server endpoint
    Matching listener absent · no traffic received
  2. TCP summary reached the firewall

    The firewall observer received outbound NEW TCP 443 context. Listener presence is not the same observation as firewall verdict.

    Client endpoint
    TCP summary sent
    Transit firewall
    Received: outbound / NEW / TCP / dst 443
    Server endpoint
    Matching listener absent · no traffic received
  3. Same WEB_OUT rule allows

    Rule conditions match normal, so the result is allow. This decision does not create a listener.

    Client endpoint
    Client tuple unchanged
    Transit firewall
    WEB_OUT → allow
    Server endpoint
    Matching listener absent · no traffic received
  4. TCP traffic reached the endpoint

    Filtering did not prevent this delivery. Absence of a matching listener is a separate local condition.

    Client endpoint
    Client tuple unchanged
    Transit firewall
    WEB_OUT allow · forwarded
    Server endpoint
    TCP traffic received · matching listener absent
  5. Connection not established

    Fixture-known listener absence prevents normal establishment. TCP refusal and OS reporting details are omitted; this is not an observed ECONNREFUSED result.

    Client endpoint
    Normal connection not established
    Transit firewall
    Allow decision remains valid
    Server endpoint
    Listener absent · not-established

UDP 443

  1. Transport is UDP instead of TCP

    The port number remains 443 but the transport namespace changes. A TCP listener is not a UDP service.

    Client endpoint
    UDP 192.0.2.10:51000 → 198.51.100.200:443
    Transit firewall
    Policy not yet evaluated
    Server endpoint
    TCP listener present · no UDP traffic received
  2. UDP datagram reached the firewall

    The toy observer treats this new datagram context as NEW. No TCP handshake is drawn for UDP.

    Client endpoint
    UDP summary sent
    Transit firewall
    Received: outbound / NEW / UDP / dst 443
    Server endpoint
    TCP listener present · no UDP traffic received
  3. Local default deny

    WEB_OUT requires TCP and RETURN conditions are absent. Default deny prevents transfer to the server. Silence is not evidence about an external target’s state.

    Client endpoint
    Datagram not forwarded
    Transit firewall
    DEFAULT → deny · no forward
    Server endpoint
    TCP listener present · no UDP traffic received

RETURN allow

  1. Existing flow is a separate fixture condition

    The c1 reverse tuple is 198.51.100.200:443 → 192.0.2.10:51000. The observer’s known ESTABLISHED context is an explicit initial condition.

    Client endpoint
    Existing c1 · no return summary received
    Transit firewall
    Known c1 context · return not yet arrived
    Server endpoint
    Reverse TCP summary ready
  2. Reverse flow reached the firewall

    The observer relates the exact reverse tuple to its own known-flow context. It does not trust a client-supplied state label.

    Client endpoint
    Existing c1 · no return summary received
    Transit firewall
    Received: inbound / ESTABLISHED / known c1
    Server endpoint
    Reverse TCP summary sent
  3. Local RETURN match

    Known reverse flow and observer ESTABLISHED state match RETURN: allow. New unsolicited inbound NEW traffic is outside these conditions.

    Client endpoint
    Existing c1 · no return summary received
    Transit firewall
    RETURN → allow
    Server endpoint
    Reverse TCP summary sent
  4. Existing client endpoint received the reply

    Delivery of the reverse tuple to 192.0.2.10:51000 completed. This synthetic transport summary is neither HTTP success nor user authorization verdict.

    Client endpoint
    c1 return received: dst 192.0.2.10:51000
    Transit firewall
    RETURN allow · forwarded
    Server endpoint
    Reverse TCP summary sent

ACTORS · STATE · DATA FLOW

A port number alone is not an endpoint

TCP and UDP headers contain 16-bit source and destination port fields, giving a numeric field range of 0–65535. That range does not mean every value has identical application allocation semantics. TCP 443 and UDP 443 are distinct transport contexts. IP itself does not contain these TCP/UDP port fields; identify the carried transport too.

Our client uses TCP from 192.0.2.10:51000 to 198.51.100.200:443. The client port is a synthetic selection, not a universal OS ephemeral range. Port 443 suggests an HTTPS convention but proves neither the running process, TLS identity nor resource permission. Read address, transport and port together to identify an endpoint.

A socket is an OS object; a connection joins endpoints

A network socket is an object an application uses through the OS communication interface. Equating it with a port omits address family, transport and local address scope. A TCP connection is distinguished by the local/remote address-port pair in its transport context. Multiple clients can connect to the same server port.

The artifact lists web-listener as LISTEN at 198.51.100.200:443. Separate accepted connections c1 and c2 share that local endpoint but have peers 192.0.2.10:51000 and 192.0.2.20:52000. These are invented field summaries rather than Linux command output or memory dumps. A listener record does not establish an accepted connection or HTTP response.

Bind, listen and accept have different roles

In the Linux socket API, bind() assigns a local address, listen() marks a suitable connection-oriented socket as passive, and accept() returns another socket for a new connection. Our normal TCP service uses those roles. UDP datagrams should not be forced into the same listener/accepted-connection model.

Binding scope changes access expectations. Address 127.0.0.1 denotes loopback, while 0.0.0.0 means any local address for IPv4 socket binding. Wildcard binding does not guarantee Internet reachability: interfaces, routes, network namespaces and filtering still matter. IPv6 wildcard and dual-stack behavior require the platform settings rather than an assumed identical rule.

Which policy point makes the firewall decision?

Packet filtering can examine addresses, transport, ports, direction and interfaces. Stateful filtering also uses context maintained by the observing firewall. FORWARD inspects transit traffic not addressed to the firewall host; INPUT handles traffic to that host and OUTPUT its locally generated traffic. Chain scope changes what a rule protects.

The toy policy allows outbound NEW TCP to destination port 443 through WEB_OUT. RETURN permits the reverse direction of a known flow with observerState ESTABLISHED; other conditions default to deny. These are fixture fields, not kernel or nftables syntax. UDP 443 does not match the TCP rule. State is derived by the observer rather than trusted from a client assertion.

Allowed, listening and successful are separate outcomes

Firewall allow describes passage at that policy point. A normal TCP connection cannot be established without a matching listener; even with one, routing, capacity and later layers can change the result. The no-listener branch has fixture-known absence and shows failure to establish. It generates no claimed OS error code or captured RST.

Connection-tracking ESTABLISHED and a TCP endpoint state are different observations. Neither should be promoted directly to proof of an HTTP response. Stateful UDP observations do not imply a TCP handshake. A return rule needs its flow, direction and policy conditions; a state label does not provide application authorization.

2. Red · Trust & Impact

Read every scenario without motion

No listener

  1. A numeric port is not a service

    NO_LISTENER requests outbound NEW TCP destinationPort=443. A port convention proves neither a listener nor TLS/application identity.

    Endpoint intent
    TCP 443
    Forward gate
    No rule
    Service boundary
    No service proof
  2. The rule was read with all conditions

    WEB_OUT requires outbound direction, NEW observerState, TCP transport and destinationPort=443 together. One matching field is not a matching rule.

    Endpoint intent
    TCP 443
    Forward gate
    WEB_OUT match
    Service boundary
    No service proof
  3. The forwarding verdict was selected

    expectedDecision=allow and expectedRule=WEB_OUT. Abstract FORWARD allow does not say that the endpoint accepted a connection.

    Endpoint intent
    TCP 443
    Forward gate
    ALLOW / WEB_OUT
    Service boundary
    No service proof
  4. The listener condition remains separate

    listenerPresent=false means connectionOutcome=not-established. Firewall allow and an absent application endpoint can both be true.

    Endpoint intent
    TCP 443
    Forward gate
    ALLOW / WEB_OUT
    Service boundary
    No listener / not-established
  5. Silence does not identify one cause

    A browser seeing no response cannot distinguish these conditions by itself. The fixed fixture supplies the cause; actual review needs separate rule verdict and listener evidence.

    Endpoint intent
    No response ≠ single cause
    Forward gate
    ALLOW / WEB_OUT
    Service boundary
    No listener / not-established
  6. Authority stayed at the higher layer

    Even a possible connection needs separate authentication and object permission. This abstract transit policy is neither a kernel firewall API, TLS handshake nor an actual socket attempt.

    Endpoint intent
    No response ≠ single cause
    Forward gate
    ALLOW / WEB_OUT
    Service boundary
    UNKNOWN: application permission

Same port, UDP

  1. A numeric port is not a service

    UDP_SAME_NUMBER carries destinationPort=443; the same number in another transport namespace identifies a different endpoint.

    Endpoint intent
    UDP 443
    Forward gate
    No rule
    Service boundary
    No service proof
  2. The rule was read with all conditions

    WEB_OUT requires outbound direction, NEW observerState, TCP transport and destinationPort=443 together. One matching field is not a matching rule.

    Endpoint intent
    UDP 443
    Forward gate
    WEB_OUT transport mismatch
    Service boundary
    No service proof
  3. The forwarding verdict was selected

    expectedDecision=deny and expectedRule=DEFAULT. Permission for TCP 443 is not imported into UDP; no receiver-delivery result is asserted.

    Endpoint intent
    UDP 443
    Forward gate
    DENY / DEFAULT
    Service boundary
    No service proof
  4. The listener condition remains separate

    listenerPresent=false is a supplied condition of this UDP case. Policy denial already marks the boundary; no server-request-received state is invented.

    Endpoint intent
    UDP 443
    Forward gate
    DENY / DEFAULT
    Service boundary
    Not forwarded
  5. Silence does not identify one cause

    A browser seeing no response cannot distinguish these conditions by itself. The fixed fixture supplies the cause; actual review needs separate rule verdict and listener evidence.

    Endpoint intent
    No response ≠ single cause
    Forward gate
    DENY / DEFAULT
    Service boundary
    Not forwarded
  6. Authority stayed at the higher layer

    Even a possible connection needs separate authentication and object permission. This abstract transit policy is neither a kernel firewall API, TLS handshake nor an actual socket attempt.

    Endpoint intent
    No response ≠ single cause
    Forward gate
    DENY / DEFAULT
    Service boundary
    UNKNOWN: application permission

ASSUMPTION · BOUNDARY · CONTROL

Broken assumption: a permitted number is a trusted service

Allowing TCP 443 may assume the endpoint is the intended web service. Correct binding and transport, deployment evidence, and application/TLS controls support that assumption. A changed process or interface scope can give the same number a different meaning.

Keep the control impact precise: a port convention does not prove resource access rights, although overly broad traffic policy may change reachability. This lesson compares local fixture conditions without endpoint discovery or service-probing workflows.

Broken assumption: state and direction are interchangeable

RETURN requires the reverse tuple of a known flow and state maintained by the relevant observer. Matching only a destination port or the word ESTABLISHED loses that relationship. An observer on an asymmetric path may lack context; implementations and policies need not all respond identically.

A deny observation needs rule scope and the correct observation point. Stateful allow does not replace user authentication or object ownership checks. The lesson rules are a decision model rather than configuration snippets for a network product.

Broken assumption: silence identifies one cause

In the no-listener branch, firewall allow and listener absence are both true. In the filtered branch, listener existence does not show that traffic reached it. Without telemetry, no response cannot distinguish the two.

Use this distinction for root-cause reasoning: compare known inert fixture conditions and name the missing evidence. It requires neither external connection attempts nor timing fingerprints.

3. Blue · Secure development & defense

Read every scenario without motion

Return scope

  1. Listener and connection were separated

    web-listener is TCP LISTEN at 198.51.100.200:443; c1 and c2 share that local port but have distinct remote IP/ports and ESTABLISHED endpoint records.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    No rule observation
    Scope review
    No scope review
  2. Observer state is not endpoint state

    The RETURN row expects allow for inbound, observerState=ESTABLISHED and knownFlow=true. In a running system the transit firewall produces observer state, while endpointState belongs to the endpoint socket. Both fields here are supplied in a synthetic ledger, not collected from one runtime producer.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    RETURN expected allow
    Scope review
    No scope review
  3. The reverse-flow condition was checked

    The known reverse tuple is 198.51.100.200:443 → 192.0.2.10:51000. Neither a port nor the word ESTABLISHED substitutes for the flow relationship.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    RETURN expected allow
    Scope review
    Tuple + direction + knownFlow
  4. The verdict claim was bounded

    The RETURN matrix row supplies expectedRule=RETURN and expectedDecision=allow. Its model conditions agree with that expectation; the row is not a measured firewall verdict or packet acceptance. Runtime verification needs a separate transit-policy record for the same tuple and direction.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    Expected: RETURN / allow
    Scope review
    Tuple + direction + knownFlow
  5. The ordinary negative control is preserved

    UNSOLICITED inbound NEW with knownFlow=false expects DEFAULT deny. It is not confused with RETURN allowance; a new inbound flow is outside that rule.

    Endpoint inventory
    UNSOLICITED → DEFAULT deny
    Policy expectation
    Expected: RETURN / allow
    Scope review
    Tuple + direction + knownFlow
  6. Regression retains separate layers

    Known RETURN allowance and unsolicited/UDP denials are distinct expectations. NO_LISTENER preserves allow-but-not-established. This control matrix supplies no measured filtering or application success; each layer needs its own observation.

    Endpoint inventory
    UNSOLICITED → DEFAULT deny
    Policy expectation
    Expected: RETURN / allow
    Scope review
    Policy expectations distinct; runtime unknown

Verdict absent

  1. Listener and connection were separated

    web-listener is TCP LISTEN at 198.51.100.200:443; c1 and c2 share that local port but have distinct remote IP/ports and ESTABLISHED endpoint records.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    No rule observation
    Scope review
    No scope review
  2. Observer state is not endpoint state

    The RETURN row expects allow for inbound, observerState=ESTABLISHED and knownFlow=true. In a running system the transit firewall produces observer state, while endpointState belongs to the endpoint socket. Both fields here are supplied in a synthetic ledger, not collected from one runtime producer.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    RETURN expected allow
    Scope review
    No scope review
  3. The reverse-flow condition was checked

    The known reverse tuple is 198.51.100.200:443 → 192.0.2.10:51000. Neither a port nor the word ESTABLISHED substitutes for the flow relationship.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    RETURN expected allow
    Scope review
    Tuple + direction + knownFlow
  4. The verdict claim was bounded

    This review copy lacks policy observation. expectedRule=RETURN remains an expectation; not seeing a denial is not observing an allow.

    Endpoint inventory
    One listener / two tuples
    Policy expectation
    UNKNOWN: observed verdict
    Scope review
    Tuple + direction + knownFlow
  5. The ordinary negative control is preserved

    UNSOLICITED inbound NEW with knownFlow=false expects DEFAULT deny. It is not confused with RETURN allowance; a new inbound flow is outside that rule.

    Endpoint inventory
    UNSOLICITED → DEFAULT deny
    Policy expectation
    UNKNOWN: observed verdict
    Scope review
    Tuple + direction + knownFlow
  6. Regression retains separate layers

    Listener inventory and the expected return rule are known, but observed verdict remains UNKNOWN. No cause of service failure is chosen without policy evidence.

    Endpoint inventory
    UNSOLICITED → DEFAULT deny
    Policy expectation
    UNKNOWN: observed verdict
    Scope review
    UNKNOWN: filter outcome

IMPLEMENTATION · SECURITY CONTROL · VERIFICATION

Connect listener, flow and application evidence

Listener inventory identifies a process’s waiting local endpoint. A connection record shows both peer tuples and the endpoint’s own state. Firewall observations identify a verdict at a policy point. Application logs separately record requests and permission outcomes. One observation cannot stand in for all four.

The fixture’s c1/c2 demonstrate two connections sharing a server port. Real correlation needs time, namespace/interface and pre/post NAT tuple scope. Consult each product schema; ruleId and observerState here are not asserted to be actual log fields.

Use positive and negative baselines together

The normal case permits outbound NEW TCP 443 by WEB_OUT with a matching listener, making establishment possible. UDP 443 does not match. Unsolicited inbound NEW defaults to deny. A known reverse ESTABLISHED flow is allowed by RETURN. These selected outcomes are not an inventory of all product behavior.

Allow without a listener identifies a missing endpoint condition rather than firewall malfunction. A filtered branch must not update the server to request-received state. Absence of a deny log is not allow evidence; record logging, sampling and observation limits.

Verify regression intent through the fields

Review transport, direction, state provenance and exact flow conditions together. A TCP allowance must not accidentally permit UDP; relaxing a return rule must not admit new inbound traffic. A bind change should preserve the intended local address scope.

Keep the conclusion within the fields actually observed. Consistent tuples and expectedDecision values do not prove that a running firewall made that decision. Obtain a record from the transit policy point; listener and accepted-socket state need endpoint evidence, and TLS/HTTP outcomes need their own layer observations. Do not merge these into one success label without a matching operation and observation time.

NOW APPLY IT TO THE CASE

Where do firewall allowance and service acceptance differ?

The abstract FORWARD policy can allow outbound TCP port 443. The connection still cannot be established without a matching listener. A known return flow and a new inbound flow have different conditions.

Which network path carries the case response? Evaluate byte, IP-route, socket and firewall evidence separately from the application returning the correct book.

Open the related case file ↗

READ THE EXAMPLE TOGETHER

One listener, two connections, five policy cases

Select a field and examine what it supports and where the evidence ends.

Read the raw artifact and field explanations
{
  "scope": "Abstract transit/FORWARD policy; custom fields, not a kernel API or capture. NAT absent in this fixture.",
  "listeners": [
    {
      "id": "web-listener",
      "family": "IPv4",
      "transport": "TCP",
      "localIp": "198.51.100.200",
      "localPort": 443,
      "endpointState": "LISTEN"
    }
  ],
  "connections": [
    {
      "id": "c1",
      "family": "IPv4",
      "transport": "TCP",
      "localIp": "198.51.100.200",
      "localPort": 443,
      "remoteIp": "192.0.2.10",
      "remotePort": 51000,
      "endpointState": "ESTABLISHED"
    },
    {
      "id": "c2",
      "family": "IPv4",
      "transport": "TCP",
      "localIp": "198.51.100.200",
      "localPort": 443,
      "remoteIp": "192.0.2.20",
      "remotePort": 52000,
      "endpointState": "ESTABLISHED"
    }
  ],
  "abstractPolicy": {
    "defaultDecision": "deny",
    "rules": [
      {
        "id": "RETURN",
        "conditions": {
          "direction": "inbound",
          "observerState": "ESTABLISHED",
          "knownFlow": true
        },
        "decision": "allow"
      },
      {
        "id": "WEB_OUT",
        "conditions": {
          "direction": "outbound",
          "observerState": "NEW",
          "transport": "TCP",
          "destinationPort": 443
        },
        "decision": "allow"
      }
    ]
  },
  "cases": [
    {
      "id": "NORMAL",
      "transport": "TCP",
      "sourceIp": "192.0.2.10",
      "sourcePort": 51000,
      "destinationIp": "198.51.100.200",
      "destinationPort": 443,
      "direction": "outbound",
      "observerState": "NEW",
      "knownFlow": false,
      "listenerPresent": true,
      "expectedDecision": "allow",
      "expectedRule": "WEB_OUT",
      "connectionOutcome": "possible"
    },
    {
      "id": "RETURN",
      "transport": "TCP",
      "sourceIp": "198.51.100.200",
      "sourcePort": 443,
      "destinationIp": "192.0.2.10",
      "destinationPort": 51000,
      "direction": "inbound",
      "observerState": "ESTABLISHED",
      "knownFlow": true,
      "listenerPresent": null,
      "expectedDecision": "allow",
      "expectedRule": "RETURN",
      "connectionOutcome": "existing-flow"
    },
    {
      "id": "UDP_SAME_NUMBER",
      "transport": "UDP",
      "sourceIp": "192.0.2.10",
      "sourcePort": 51000,
      "destinationIp": "198.51.100.200",
      "destinationPort": 443,
      "direction": "outbound",
      "observerState": "NEW",
      "knownFlow": false,
      "listenerPresent": false,
      "expectedDecision": "deny",
      "expectedRule": "DEFAULT",
      "connectionOutcome": "not-forwarded"
    },
    {
      "id": "UNSOLICITED",
      "transport": "TCP",
      "sourceIp": "198.51.100.200",
      "sourcePort": 443,
      "destinationIp": "192.0.2.10",
      "destinationPort": 51000,
      "direction": "inbound",
      "observerState": "NEW",
      "knownFlow": false,
      "listenerPresent": null,
      "expectedDecision": "deny",
      "expectedRule": "DEFAULT",
      "connectionOutcome": "not-forwarded"
    },
    {
      "id": "NO_LISTENER",
      "transport": "TCP",
      "sourceIp": "192.0.2.10",
      "sourcePort": 51000,
      "destinationIp": "198.51.100.200",
      "destinationPort": 443,
      "direction": "outbound",
      "observerState": "NEW",
      "knownFlow": false,
      "listenerPresent": false,
      "expectedDecision": "allow",
      "expectedRule": "WEB_OUT",
      "connectionOutcome": "not-established"
    }
  ]
}
transport + local/remote IP/port
Tuple distinguishing peer endpoints and transport namespace.
endpointState
Synthetic endpoint state, distinct from firewall conntrack state.
direction / observerState / knownFlow
Toy firewall conditions; peer assertions are not trusted state.
expectedRule / expectedDecision
Abstract rule match and transit policy decision.
listenerPresent / connectionOutcome
Endpoint condition separate from allow; possible does not claim an observed handshake.

Inert condition ledger, not live sockets, nftables configuration, wire captures or error codes. Handshake details, timeouts/retries, related flows, policy-order variants and UDP tracking are omitted.

Two reality checks

Allowing port 443 proves the web application is secure and will respond.

Allow is a decision at one policy point. Transport, listener, path, TLS and application permissions need separate conditions and evidence.

A server port can have only one connection.

A listener can accept multiple connections at one local endpoint; remote tuples distinguish their conversations.

YOUR TURN

Work through this story.

Predict the outcome, find the evidence boundary, and explain it in your own words.

The firewall allows the NO_LISTENER case. Is connection establishment guaranteed?

  1. No; listenerPresent=false and outcome is not-established.
  2. Yes; allow means connection success.
Read the explained answer

No; listenerPresent=false and outcome is not-established. — WEB_OUT permits forwarding; it supplies neither remote listening nor application success.

Two ESTABLISHED records use the same local port. Are they one connection?

Selected lesson artifact fields; teaching example

connections[0]
{"id":"c1","family":"IPv4","transport":"TCP","localIp":"198.51.100.200","localPort":443,"remoteIp":"192.0.2.10","remotePort":51000,"endpointState":"ESTABLISHED"}
connections[1]
{"id":"c2","family":"IPv4","transport":"TCP","localIp":"198.51.100.200","localPort":443,"remoteIp":"192.0.2.20","remotePort":52000,"endpointState":"ESTABLISHED"}
  1. No; the remote tuples differ.
  2. Yes; local 443 merges all connections.
Read the explained answer

No; the remote tuples differ. — Connection identity is not one port number; local/remote endpoints and transport are considered together.

Why is UDP_SAME_NUMBER not treated as the same endpoint as the TCP web listener?

Read the explained answer

Port 443 does not merge TCP/UDP namespaces. The fixture defines only a TCP listener and TCP WEB_OUT rule; the UDP branch receives default deny. This outcome describes the selected policy, not a universal UDP prohibition.

□ I included transport in endpoint identity.

□ I tied deny to this policy.

Open the application console · request / response / browser
Also open request, URL, cookie and DOM examples

Sources and scope