I am reading Site Reliability Engineering, a book about how Google manages its software infrastructure. There is a section in chapter 2, where the life of a request to a Google service is described. The main points are:
[...] first, the user points their browser to shakespeare.google.com. To obtain the corresponding IP address, the user’s device resolves the address with its DNS server (1).
[...] The browser connects to the HTTP server on [the resolved] IP. This server (named the Google Frontend, or GFE) is a reverse proxy that terminates the TCP connection (2). The GFE looks up which service is required [...] and sends that server an RPC containing the HTTP request (3).
[...] The backend hands a protobuf containing the results to the Shakespeare frontend server, which assembles the HTML and returns the answer to the user.
Here is a diagram of the process:
I am confused about the part, where the reverse proxy terminates the TCP connection. If the TCP connection is terminated, how can a response be sent back to the client at all? The text says that the frontend server (in the picture named Application Frontend) returns the response to the user. How can this be, since the frontend server has no open connection with the client? Maybe I misunderstood and the author wanted to say that the reverse proxy terminates the TCP connection after it writes the response of the frontend server to the client? This explanation would fit with the definition of a reverse proxy.
TL;DR: Can someone explain how the response gets to the client?