ソースを参照

Add Transmission control protocol (TCP) section

Donne Martin 8 年 前
コミット
d93918dc3a
1 ファイル変更24 行追加0 行削除
  1. 24 0
      README.md

+ 24 - 0
README.md

@@ -1472,3 +1472,27 @@ HTTP is an application layer protocol relying on lower-level protocols such as *
 
 * [HTTP](https://www.nginx.com/resources/glossary/http/)
 * [README](https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol)
+
+### Transmission control protocol (TCP)
+
+<p align="center">
+  <img src="http://i.imgur.com/JdAsdvG.jpg">
+  <br/>
+  <i><a href=http://www.wildbunny.co.uk/blog/2012/10/09/how-to-make-a-multi-player-game-part-1/>Source: How to make a multiplayer game</a></i>
+</p>
+
+TCP is a connection-oriented protocol over an [IP network](https://en.wikipedia.org/wiki/Internet_Protocol).  Connection is established and terminated using a [handshake](https://en.wikipedia.org/wiki/Handshaking).  All packets sent are guaranteed to reach the destination in the original order and without corruption through:
+
+* Sequence numbers and [checksum fields](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation) for each packet
+* [Acknowledgement](https://en.wikipedia.org/wiki/Acknowledgement_(data_networks)) packets and automatic retransmission
+
+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](https://en.wikipedia.org/wiki/Flow_control_(data)) and [congestion control](https://en.wikipedia.org/wiki/Network_congestion#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](#memcached) server.  [Connection pooling](https://en.wikipedia.org/wiki/Connection_pool) can help in addition to switching to UDP where applicable.
+
+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.
+
+Use TCP over UDP when:
+
+* You need all of the data to arrive in tact
+* You want to automatically make a best estimate use of the network throughput