The original protocol stack has not proceeded without both extension and
damage.
- IP's Secret Layer.

- Transport Layer Security (TLS), previously
Secure Socket Layer (SSL).
- Many applications, such as HTTPS (secure web sites) use TLS.
- Not officially a layer in the protocol.
- Operates as sort of a subdivision of the Application Layer.
- Behaves like an additional layer, following the rules described above.
- This is a fairly clean extension of the stack.
- Generally provided by a library, not the O/S kernel.
- Increasingly used by application protocols.
- Encrypts the data on the line to frustrate snooping.
- Increases confidence that the server is identifying itself honestly
via the “chain of trust”
- Each server has a public/private key pair (PUBx and PRIx in the
diagram.)
- Sends a “certificate” giving its name and public key, signed
using the associated private key.
- That certificate is accompanied by a another, which verifies the
the server certificate and is signed by a “certificate authority”.
- Client key may be vouched for by additional signing keys, creating
a chain back to a CA.
Server Certificate
I am www.example.com, and my public key is PUB1.
Signed with PRI2.
Signer Certificate
I am www.signer.com, and my public key is PUB2.
I confirm that PUB1 belongs to www.example.com.
I am allowed to sign server certificates.
Signed, PRI3.
Authority Certificate
I am www.ca.com, and my public key is PUB3.
I confirm that PUB2 belongs to www.signer.com.
I am a certificate authority (CA).
Signed, PRI3.
- Upon connection, the server sends all these certificates
to the client.
- A client (browser, etc.) contains a list of trusted CA public keys.
The browser trusts PUB3 simply because it is in its list of trusted
CA keys.
- The browser uses PUB3 to verify the CA certificate.
- It then uses PUB2 to verify the signer certificate.
- It then uses PUB1 to verify the server certificate.
- The client now believes the contents of the server certificate on
the authority of CA, and the assumption that no one along the
way has leaked or misused their private key.
- New transport protocols.
- Originally, the Transport layer contained two different transport
protocols, UDP and TCP, which are still the mainstays. (We'll study
these later.)
- UDP is basically a pass-through, mostly taking each message from above,
and forwarding it to the Internet layer.
- The IP stack is very flexible, since any number of new protocols
may be added at the transport layer. Several have been standardized.
- No one uses the new transport protocols.
- Transport is usually implemented in the OS kernel.
- Kernels must be changed very carefully (slowly) because of their
security importance.
- Not practical to just distribute kernel mods with optional software,
for similar reasons.
- Some routers are specialized to the existing protocols, for
optimization or security. These
can't be changed en masse.
- Security firewalls tend to allow only what they understand, and they
don't understand anything new.
(And don't want to.)
- This is known as “Protocol Ossification.”
- New transport protocols wind up being implemented at the application
layer.
- HTTP/2.0. Implements transport features in the application layer
and uses TCP, usually with TLS, for transport.
- Provides multiple streams by packetizing them and sending
over a single TCP connection.
- The stream is then re-divided by TCP itself.
- Other HTTP/2.0 features more reasonably belong in the app layer.
- QUIC protocol.
- A TCP replacement which works better with HTTP than TCP does.
(TCP doesn't work efficiently with HTTP. Never has.)
- Does transport work at application, and sends
packets through UDP.
- Implements multiple streams, and uses HTTP-friendly
loss and flow control.
- Provides security similar to TLS, since TLS doesn't work over UDP.
- And it does speed up web pages. But it's in the wrong place.
- But for ossification, we could use the Stream Control Protocol
(SCTP), which provides similar facilities at the transport layer.
- Real-time Transport Protocol (RTP), for media streams.
- TCP does not handle media streams very well. Lost packets
must be resent, causing delay.
- So UDP is traditionally used, but it lacks some things.
- RTP at the app layer takes care of
- Connections like TCP.
- Flow control, so the sender doesn't overrun the receiver.
- Deals with jitter, packet loss, and reording as directed by
user endpoints.
- Sending packets over UDP.
- But for ossification, we could use the Datagram Congestion Control
Protocol (DCCP) at the transport layer.