Networking Deep Dive›Application Layer · Cheat sheet & self-check
Learning Hub / Kubernetes & Platform / Networking Deep Dive

Application Layer · wrap-up

Cheat sheet & self-check

Every command from this section on one page.

09 · TLS: handshake & trust

openssl s_client

openssl s_client -connect host:443 -servername host </dev/nullHandshake details and the served chain
… -showcertsPrint every certificate the server sends
… | openssl x509 -noout -subject -issuer -dates -ext subjectAltNameSummarise the leaf certificate
… -alpn h2,http/1.1Which application protocol the server picks
openssl verify -CAfile ca.crt server.crtDoes this chain validate against this CA?

curl

curl -v https://host/TLS version, cipher, certificate, then HTTP
curl --cacert ca.crt https://host/Trust a specific (private) CA
curl --cert client.crt --key client.key https://host/Present a client certificate (mTLS)

10 · HTTP/1.1 → 2 → 3

Test protocol versions

curl -sI --http1.1 https://host/ | head -1Force HTTP/1.1
curl -sI --http2 https://host/ | head -1Try HTTP/2 (via ALPN)
curl -sI --http3 https://host/ | head -1Try HTTP/3 (needs a curl built with HTTP/3 support)
curl -w '%{http_version} %{time_connect} %{time_starttransfer}\n' -o /dev/null -s https://host/Version and timing

11 · gRPC & Protobuf

grpcurl

grpcurl -plaintext localhost:50051 listServices exposed (needs server reflection)
grpcurl -plaintext localhost:50051 describe orders.v1.OrdersMethods and messages
grpcurl -plaintext -d '{"id": "42"}' localhost:50051 orders.v1.Orders/GetOrderCall a method with JSON input
grpcurl -plaintext localhost:50051 grpc.health.v1.Health/CheckStandard health check

Kubernetes

readinessProbe: grpc: {port: 50051}Native gRPC health probes
clusterIP: NoneHeadless Service so clients can see every pod (client-side balancing)

12 · Capstone: one request, every layer

One command per layer

dig +short shop.example.comDNS: does the name resolve to the right address?
nc -vz <ip> 443TCP: can I connect at all?
openssl s_client -connect <ip>:443 -servername shop.example.com </dev/nullTLS: which certificate, which chain?
curl -v --resolve shop.example.com:443:<ip> https://shop.example.com/HTTP: status, headers, timings
kubectl get endpointslices -n shopService: are there ready backends?
kubectl -n shop exec deploy/web -- wget -qO- -T 3 http://api:8080/healthPod-to-pod: does the internal hop work?
ping -M do -s 1422 <pod-ip>MTU: do full-size packets survive the overlay?