The Great Firewall (GFW) is the name commonly used for a set of filtering systems positioned between networks inside mainland China and the rest of the internet. Think of it as a checkpoint on the highway: every connection that passes into or out of the country is inspected, and some are turned away. Understanding how it blocks traffic tells us what a working bypass must do.
Let us follow a single connection to a website, step by step, and mark what the firewall can observe at each stage:
flowchart TD
A[1. DNS query for example.com] -->|visible: the domain name| B[2. TCP connection to server IP:443]
B -->|visible: the IP and port| C[3. TLS handshake - SNI carries the domain]
C -->|visible: SNI, certificate, sizes| D[4. Encrypted data flows]
D -->|visible: timing and volume, not content| E[5. Connection closes]
This is the key insight: the firewall does not need to read your data. It only needs to recognize the connection.
1. IP blocklisting — a bouncer with a list. Known IP addresses or whole ranges are dropped or not routed. It is coarse: it blocks everything hosted at those addresses.
2. DNS poisoning — directory assistance gives a wrong number. The firewall answers DNS queries for blocked domains with a fake IP. Your computer connects to a dead address and the site appears unreachable.
3. TCP RST injection — a forged “return to sender” notice. To kill an active connection, an attacker on the path sends a fake TCP RST packet that looks like it comes from one of the two endpoints. Both sides believe the connection closed and give up.
4. SNI-based filtering — reading the name on the envelope. During the TLS handshake the domain name is visible in the SNI field. The firewall can match it against a blocklist and inject a reset, so the connection dies before anything is exchanged.
5. Deep packet inspection — opening unsealed mail. For unencrypted traffic, the firewall reads the payload directly and blocks requests containing filtered keywords.
flowchart TD
subgraph normal[Without interference]
C1[Your computer] -->|DNS query| D1[DNS server]
D1 -->|Real IP| C1
C1 -->|HTTPS with SNI: example.com| S1[Target website]
end
subgraph blocked[When the firewall interferes]
C2[Your computer] -->|DNS query| D2[DNS server]
D2 -.->|Fake IP returned| C2
C2 -->|HTTPS with blocked SNI| F[Firewall]
F -.->|injects TCP RST| C2
F -->|connection killed| S2[Target website]
end
HTTPS hides the contents of your messages, but the firewall still sees the outside of the envelope: the destination IP, the SNI domain, and the traffic pattern. Blocking is a recognition problem, not a reading problem. That is why merely “using HTTPS” does not bypass anything — the connection still looks like a connection to a blocked service.
The third point is the hard part, and it is exactly what the next page is about.
How Proxies and Tunnels Work — turning these ideas into a working setup.