{"id":3512,"date":"2026-10-01T18:15:14","date_gmt":"2026-10-01T18:15:14","guid":{"rendered":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/"},"modified":"2026-10-01T18:15:22","modified_gmt":"2026-10-01T18:15:22","slug":"what-is-tcp-transmission-control-protocol","status":"publish","type":"post","link":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/","title":{"rendered":"What Is TCP? How the Transmission Control Protocol Works"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Short answer:<\/strong> TCP (Transmission Control Protocol) is the part of the internet&#8217;s protocol stack that gives two programs a reliable, in-order stream of bytes. It numbers the data it sends, spots lost or damaged pieces, sends them again and slows down when the network is busy. Web browsing over HTTP\/1.1 and HTTP\/2, SSH, email and most database connections run on TCP. The current standard is <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9293\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9293<\/a>, which replaced the original RFC 793.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"409\" src=\"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol-screenshot-1024x409.png\" alt=\"tcpdump output showing the SYN, SYN-ACK and ACK packets of a TCP three-way handshake\" class=\"wp-image-3514\" srcset=\"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol-screenshot-1024x409.png 1024w, https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol-screenshot-300x120.png 300w, https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol-screenshot-768x307.png 768w, https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol-screenshot.png 1100w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">A real TCP three-way handshake captured with tcpdump: [S] SYN, [S.] SYN-ACK, [.] ACK.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What TCP does for an application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">IP, the Internet Protocol, moves packets from one address to another, but it makes no promises: packets can arrive late, out of order, twice or not at all. TCP sits on top of IP and hides that from the application. According to RFC 9293:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reliable, in-order byte stream.<\/strong> What one side writes, the other side reads in the same order.<\/li>\n\n\n\n<li><strong>Segments inside IP packets.<\/strong> The stream is cut into TCP segments, and each segment travels as an IP datagram.<\/li>\n\n\n\n<li><strong>Loss and error detection.<\/strong> Sequence numbers show what is missing, a checksum on every segment shows what is damaged, and missing data is sent again.<\/li>\n\n\n\n<li><strong>Connections.<\/strong> Both sides set up a connection before sending data and close it afterwards. Data can flow both ways.<\/li>\n\n\n\n<li><strong>Ports.<\/strong> Port numbers identify the service (443 for HTTPS, 22 for SSH) and let one server handle thousands of connections at once.<\/li>\n\n\n\n<li><strong>Congestion control.<\/strong> Every TCP implementation must slow down when the network is congested, so one busy connection does not swamp everyone else.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The three-way handshake<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before any data moves, the client and server exchange three segments. We captured this with <code>tcpdump<\/code> 4.99.5 in a Debian 13 container while <code>curl<\/code> requested a page from a small web server on port 8080 (output trimmed to the important parts):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>127.0.0.1.41380 &gt; 127.0.0.1.8080: Flags [S],  seq 4210159877, win 65495, options [mss 65495,...]\n127.0.0.1.8080 &gt; 127.0.0.1.41380: Flags [S.], seq 4120032608, ack 4210159878, win 65483, ...\n127.0.0.1.41380 &gt; 127.0.0.1.8080: Flags [.],  ack 4120032609, win 512, ...\n127.0.0.1.41380 &gt; 127.0.0.1.8080: Flags [P.], seq 4210159878:4210159956, ... length 78: HTTP: GET \/ HTTP\/1.1<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>SYN<\/strong> (<code>[S]<\/code>): the client asks to open a connection and sends its starting sequence number.<\/li>\n\n\n\n<li><strong>SYN-ACK<\/strong> (<code>[S.]<\/code>): the server agrees, sends its own starting number and acknowledges the client&#8217;s number plus one.<\/li>\n\n\n\n<li><strong>ACK<\/strong> (<code>[.]<\/code>): the client acknowledges the server&#8217;s number. The connection is now ESTABLISHED and the HTTP request follows (<code>[P.]<\/code>, 78 bytes).<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In <a href=\"https:\/\/www.tcpdump.org\/manpages\/tcpdump.1.html\" target=\"_blank\" rel=\"noopener noreferrer\">tcpdump&#8217;s notation<\/a>, <code>S<\/code> is SYN, <code>F<\/code> is FIN, <code>P<\/code> is PUSH, <code>R<\/code> is RST and a dot means ACK. The <code>win<\/code> value is the receive window: how many bytes the sender of that segment can accept right now. That is how TCP stops a fast sender from overrunning a slow receiver.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Closing a connection and TIME-WAIT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each side sends a FIN when it has finished sending, and the other side acknowledges it. The side that closes first then stays in the TIME-WAIT state for twice the Maximum Segment Lifetime, so that stray segments from the old connection cannot be mistaken for a new one. RFC 9293 takes the MSL to be 2 minutes as an engineering choice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After our test request, <code>ss -tan<\/code> showed the finished connection in that state (other lines removed):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>State     Recv-Q Send-Q Local Address:Port   Peer Address:Port\nLISTEN    0      5          127.0.0.1:8080        0.0.0.0:*\nTIME-WAIT 0      0          127.0.0.1:41380     127.0.0.1:8080<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On a busy web server you will often see many TIME-WAIT entries. On their own they are part of normal TCP behaviour, not a sign of an attack.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ports: how one server runs many services<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A TCP connection is identified by four values: client IP, client port, server IP and server port. <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6335\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 6335<\/a> splits the 65,536 port numbers into three ranges: System Ports 0 to 1023, User Ports 1024 to 49151 (both assigned by IANA) and Dynamic Ports 49152 to 65535, which are never assigned. Operating systems pick the client side from a local range; on our Debian 13 test container it was 32768 to 60999 (<code>\/proc\/sys\/net\/ipv4\/ip_local_port_range<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Common TCP ports from the <a href=\"https:\/\/www.iana.org\/assignments\/service-names-port-numbers\/service-names-port-numbers.xhtml\" target=\"_blank\" rel=\"noopener noreferrer\">IANA port registry<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Port<\/th><th>Service<\/th><\/tr><\/thead><tbody><tr><td>22<\/td><td>SSH (and SFTP)<\/td><\/tr><tr><td>25<\/td><td>SMTP, server-to-server email<\/td><\/tr><tr><td>53<\/td><td>DNS (TCP and UDP)<\/td><\/tr><tr><td>80<\/td><td>HTTP<\/td><\/tr><tr><td>443<\/td><td>HTTPS<\/td><\/tr><tr><td>587<\/td><td>Email submission from mail clients<\/td><\/tr><tr><td>993<\/td><td>IMAP over TLS<\/td><\/tr><tr><td>3306<\/td><td>MySQL and MariaDB<\/td><\/tr><tr><td>3389<\/td><td>Remote Desktop (RDP)<\/td><\/tr><tr><td>5432<\/td><td>PostgreSQL<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For the email and TLS ports in more detail, see <a href=\"https:\/\/www.ucartz.com\/clients\/knowledgebase\/9264\/HTTPS-and-SSL-Port-Numbers-443-465-587-993-995-and-cPanel-Ports.html\">HTTPS and SSL port numbers<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TCP vs UDP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UDP, the User Datagram Protocol (<a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc768\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 768<\/a>), is TCP&#8217;s lightweight sibling. It sends single messages with &#8220;a minimum of protocol mechanism&#8221;, and delivery and duplicate protection are not guaranteed. Applications that need ordered, reliable delivery are pointed to TCP by the UDP standard itself.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><\/th><th>TCP<\/th><th>UDP<\/th><\/tr><\/thead><tbody><tr><td>Connection<\/td><td>Handshake first, then data<\/td><td>No handshake, just send<\/td><\/tr><tr><td>Delivery<\/td><td>Lost data is resent<\/td><td>Not guaranteed<\/td><\/tr><tr><td>Order<\/td><td>Always in order<\/td><td>May arrive out of order<\/td><\/tr><tr><td>Header<\/td><td>20 bytes plus options<\/td><td>8 bytes<\/td><\/tr><tr><td>Speed control<\/td><td>Flow and congestion control built in<\/td><td>Up to the application<\/td><\/tr><tr><td>Typical uses<\/td><td>Websites, SSH, email, databases, file transfer<\/td><td>DNS queries, QUIC (HTTP\/3), game traffic such as Minecraft Bedrock gameplay<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Two things blur the line. DNS uses both: <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc7766\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 7766<\/a> makes TCP support a requirement for DNS software (see also <a href=\"https:\/\/www.ucartz.com\/clients\/knowledgebase\/1772\/When-does-DNS-use-TCP-or-UDP.html\">when DNS uses TCP or UDP<\/a>). And HTTP\/3 runs over QUIC, a newer connection-oriented transport that carries its packets in UDP datagrams (<a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9000\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9000<\/a>). That is why IANA lists port 443 for both TCP and UDP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For game servers, the protocol decides which firewall rule you need. A Minecraft Java Edition 26.3 server, for example, listened on TCP port 25565 in our test. Open the port for the right protocol, or players will not get in.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Checking TCP on your own server<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These commands were run on Debian 13 and work the same on Ubuntu and AlmaLinux.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Which services are listening?<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ss -tlnp<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process\nLISTEN 0      5          127.0.0.1:8080      0.0.0.0:*    users:((\"python3\",pid=3691,fd=3))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>-t<\/code> means TCP, <code>-l<\/code> listening sockets, <code>-n<\/code> numbers instead of names and <code>-p<\/code> the process. A service bound to <code>127.0.0.1<\/code> only accepts connections from the server itself. More options are in <a href=\"https:\/\/www.ucartz.com\/clients\/knowledgebase\/9296\/How-to-Find-Which-Process-Is-Using-a-Port-in-Linux-ss-lsof-fuser.html\">how to find which process is using a port<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can I reach a port from outside?<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>nc -vz 127.0.0.1 8080\nnc -vz 127.0.0.1 8081<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Connection to 127.0.0.1 8080 port [tcp\/http-alt] succeeded!\nnc: connect to 127.0.0.1 port 8081 (tcp) failed: Connection refused<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;Connection refused&#8221; means the server answered with a reset: RFC 9293 says a SYN that does not match a connection is rejected this way, so nothing is listening on that port. A connection that hangs until it times out usually means a firewall is dropping the packets instead. That difference tells you where to look. The <a href=\"https:\/\/www.ucartz.com\/clients\/knowledgebase\/1972\/How-to-Check-Remote-Ports-are-Reachable-Using-nc-Command.html\">nc guide<\/a> has more examples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UDP has no handshake, so this kind of check is far less useful there. In our test, <code>nc -vzu<\/code> against a UDP port with nothing listening printed nothing at all, neither success nor failure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Open a port in the firewall<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 25565\/tcp\nsudo ufw allow 51820\/udp     # a UDP service, for example WireGuard<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">With ufw 0.36.2 each command answered <code>Rules updated<\/code> and <code>Rules updated (v6)<\/code>. Name the protocol every time; the TCP rule does nothing for UDP traffic on the same number.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Count connections by state<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ss -s\nss -tan state established\nss -tan state time-wait<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ss -s<\/code> prints a summary line such as <code>TCP: 126 (estab 0, closed 126, orphaned 0, timewait 2)<\/code>. A sudden jump in established connections to your web port is worth a closer look. To watch ports change live, see <a href=\"https:\/\/www.ucartz.com\/clients\/knowledgebase\/2263\/How-to-Watch-TCP-and-UDP-Ports-in-Real-time.html\">how to watch TCP and UDP ports in real time<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TCP connection states at a glance<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>State<\/th><th>Meaning (from RFC 9293)<\/th><\/tr><\/thead><tbody><tr><td>LISTEN<\/td><td>Waiting for a connection request<\/td><\/tr><tr><td>SYN-SENT<\/td><td>Sent a SYN, waiting for the reply<\/td><\/tr><tr><td>SYN-RECEIVED<\/td><td>Received and sent a SYN, waiting for the final ACK<\/td><\/tr><tr><td>ESTABLISHED<\/td><td>Open connection, data flowing<\/td><\/tr><tr><td>FIN-WAIT-1 \/ FIN-WAIT-2<\/td><td>This side closed, waiting for the other side<\/td><\/tr><tr><td>CLOSE-WAIT<\/td><td>The other side closed, waiting for the local program to close<\/td><\/tr><tr><td>LAST-ACK \/ CLOSING<\/td><td>Waiting for the final acknowledgement<\/td><\/tr><tr><td>TIME-WAIT<\/td><td>Closed, waiting for stray segments to die out<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Many connections stuck in CLOSE-WAIT usually point at the application: the other side has hung up, but the program on your server has not closed its end.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Knowing TCP makes most &#8220;cannot connect&#8221; problems quicker to solve: check that the service listens, that the firewall allows the right protocol, and whether you get a refusal or a timeout. If you would rather have someone else do the digging, our <a href=\"https:\/\/www.ucartz.com\/linux-server-management\">Linux server management<\/a> team can check ports, firewalls and services for you.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.<\/p>\n","protected":false},"author":4,"featured_media":3513,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[237,389],"tags":[940,937,938,935,939,936],"class_list":["post-3512","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-networking","category-server","tag-linux-networking","tag-networking","tag-ports","tag-tcp","tag-tcp-handshake","tag-udp"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog<\/title>\n<meta name=\"description\" content=\"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog\" \/>\n<meta property=\"og:description\" content=\"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/\" \/>\n<meta property=\"og:site_name\" content=\"Ucartz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/UcartzOnline\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-01T18:15:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-01T18:15:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ria Febin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ucartz\" \/>\n<meta name=\"twitter:site\" content=\"@ucartz\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ria Febin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/\"},\"author\":{\"name\":\"Ria Febin\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#\\\/schema\\\/person\\\/2d964b1b8325f8a5e55bed0d1e0fa1d0\"},\"headline\":\"What Is TCP? How the Transmission Control Protocol Works\",\"datePublished\":\"2026-10-01T18:15:14+00:00\",\"dateModified\":\"2026-10-01T18:15:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/\"},\"wordCount\":1215,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/what-is-tcp-transmission-control-protocol.jpg\",\"keywords\":[\"linux networking\",\"networking\",\"ports\",\"tcp\",\"tcp handshake\",\"udp\"],\"articleSection\":[\"Networking\",\"Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/\",\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/\",\"name\":\"What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/what-is-tcp-transmission-control-protocol.jpg\",\"datePublished\":\"2026-10-01T18:15:14+00:00\",\"dateModified\":\"2026-10-01T18:15:22+00:00\",\"description\":\"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/what-is-tcp-transmission-control-protocol.jpg\",\"contentUrl\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/what-is-tcp-transmission-control-protocol.jpg\",\"width\":1200,\"height\":630,\"caption\":\"What Is TCP? How the Transmission Control Protocol Works\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/what-is-tcp-transmission-control-protocol\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What Is TCP? How the Transmission Control Protocol Works\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/\",\"name\":\"Ucartz Blog\",\"description\":\"Guides on hosting, servers, streaming and automation\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#organization\"},\"alternateName\":\"Ucartz\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#organization\",\"name\":\"Ucartz Online Pvt Ltd\",\"alternateName\":\"Ucartz\",\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ucartz-logo-888x240-1.png\",\"contentUrl\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/ucartz-logo-888x240-1.png\",\"width\":888,\"height\":240,\"caption\":\"Ucartz Online Pvt Ltd\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/UcartzOnline\",\"https:\\\/\\\/x.com\\\/ucartz\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ucartzonline\",\"https:\\\/\\\/www.instagram.com\\\/ucartz_com\",\"https:\\\/\\\/www.trustpilot.com\\\/review\\\/ucartz.com\",\"https:\\\/\\\/n8n.io\\\/creators\\\/ucartz\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/#\\\/schema\\\/person\\\/2d964b1b8325f8a5e55bed0d1e0fa1d0\",\"name\":\"Ria Febin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g\",\"caption\":\"Ria Febin\"},\"url\":\"https:\\\/\\\/www.ucartz.com\\\/blog\\\/author\\\/ria-febin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog","description":"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/","og_locale":"en_US","og_type":"article","og_title":"What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog","og_description":"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.","og_url":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/","og_site_name":"Ucartz Blog","article_publisher":"https:\/\/www.facebook.com\/UcartzOnline","article_published_time":"2026-10-01T18:15:14+00:00","article_modified_time":"2026-10-01T18:15:22+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg","type":"image\/jpeg"}],"author":"Ria Febin","twitter_card":"summary_large_image","twitter_creator":"@ucartz","twitter_site":"@ucartz","twitter_misc":{"Written by":"Ria Febin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#article","isPartOf":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/"},"author":{"name":"Ria Febin","@id":"https:\/\/www.ucartz.com\/blog\/#\/schema\/person\/2d964b1b8325f8a5e55bed0d1e0fa1d0"},"headline":"What Is TCP? How the Transmission Control Protocol Works","datePublished":"2026-10-01T18:15:14+00:00","dateModified":"2026-10-01T18:15:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/"},"wordCount":1215,"commentCount":0,"publisher":{"@id":"https:\/\/www.ucartz.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg","keywords":["linux networking","networking","ports","tcp","tcp handshake","udp"],"articleSection":["Networking","Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/","url":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/","name":"What Is TCP? How the Transmission Control Protocol Works - Ucartz Blog","isPartOf":{"@id":"https:\/\/www.ucartz.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#primaryimage"},"image":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg","datePublished":"2026-10-01T18:15:14+00:00","dateModified":"2026-10-01T18:15:22+00:00","description":"TCP explained: the three-way handshake, ports, connection states and TCP vs UDP, with real tcpdump and ss output and commands to check your server.","breadcrumb":{"@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#primaryimage","url":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg","contentUrl":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/10\/what-is-tcp-transmission-control-protocol.jpg","width":1200,"height":630,"caption":"What Is TCP? How the Transmission Control Protocol Works"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ucartz.com\/blog\/what-is-tcp-transmission-control-protocol\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ucartz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What Is TCP? How the Transmission Control Protocol Works"}]},{"@type":"WebSite","@id":"https:\/\/www.ucartz.com\/blog\/#website","url":"https:\/\/www.ucartz.com\/blog\/","name":"Ucartz Blog","description":"Guides on hosting, servers, streaming and automation","publisher":{"@id":"https:\/\/www.ucartz.com\/blog\/#organization"},"alternateName":"Ucartz","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ucartz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.ucartz.com\/blog\/#organization","name":"Ucartz Online Pvt Ltd","alternateName":"Ucartz","url":"https:\/\/www.ucartz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.ucartz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/09\/ucartz-logo-888x240-1.png","contentUrl":"https:\/\/www.ucartz.com\/blog\/wp-content\/uploads\/2026\/09\/ucartz-logo-888x240-1.png","width":888,"height":240,"caption":"Ucartz Online Pvt Ltd"},"image":{"@id":"https:\/\/www.ucartz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/UcartzOnline","https:\/\/x.com\/ucartz","https:\/\/www.linkedin.com\/company\/ucartzonline","https:\/\/www.instagram.com\/ucartz_com","https:\/\/www.trustpilot.com\/review\/ucartz.com","https:\/\/n8n.io\/creators\/ucartz\/"]},{"@type":"Person","@id":"https:\/\/www.ucartz.com\/blog\/#\/schema\/person\/2d964b1b8325f8a5e55bed0d1e0fa1d0","name":"Ria Febin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7503bb388aa328887cafa6928b8eab71d2bc56109e1fcba46e716df67a98fdbe?s=96&d=mm&r=g","caption":"Ria Febin"},"url":"https:\/\/www.ucartz.com\/blog\/author\/ria-febin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/posts\/3512","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/comments?post=3512"}],"version-history":[{"count":1,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/posts\/3512\/revisions"}],"predecessor-version":[{"id":3515,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/posts\/3512\/revisions\/3515"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/media\/3513"}],"wp:attachment":[{"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/media?parent=3512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/categories?post=3512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ucartz.com\/blog\/wp-json\/wp\/v2\/tags?post=3512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}