system-design-primer/resources/noat.cards/16-2 Transmission control p...

2.1 KiB

+++ noatcards = True isdraft = False weight = 162 +++

Transmission control protocol (TCP)

TCP Introduction

Source: How to make a multiplayer game

TCP is a connection-oriented protocol over an IP network . Connection is established and terminated using a handshake . All packets sent are guaranteed to reach the destination in the original order and without corruption through:

If the sender does not receive a correct response, it will resend the packets. If there are multiple timeouts, the connection is dropped. TCP also implements flow control and congestion control . These guarantees cause delays and generally results in less efficient transmission than UDP.

To ensure high throughput, web servers can keep a large number of TCP connections open, resulting in high memory usage. It can be expensive to have a large number of open connections between web server threads and say, a memcached server. Connection pooling can help in addition to switching to UDP where applicable.

Use TCP over UDP when:

TCP is useful for applications that require high reliability but are less time critical. Some examples include web servers, database info, SMTP, FTP, and SSH.

  • You need all of the data to arrive in tact
  • You want to automatically make a best estimate use of the network throughput