4 ms·
This may be a dumb question (I'm not a networks guy) but how do you maintain so many connections with just 65535 ports? Can you have more than one connection p
by Rickasaurus 15y ago
This may be a dumb question (I'm not a networks guy) but how do you maintain so many connections with just 65535 ports? Can you have more than one connection per port?
- pacala 15y agoThere is one unique connection per (address, port) pair.
- Rickasaurus 15y agoAhh I see, you just give one box a ton of IPs. Thanks :)
- kornholi 15y agoNo, the pair uses the client IP which means the client can have as many connections to your server as number of ephemeral ports allowed. There is no limit on connections except ram AFAIK.
- stonemetal 15y agoNot sure why you got down voted, last time this topic came up the author was using EC2 instances for test clients, it took them 17 or so to get the number of connections to their server that they wanted. When the server IP, server port part of the 4 tuple is constant, it takes quite a few client IPs to turn 64K ports into a million.
- huhtenberg 15y agoActually, the quintet of [protocol, src_ip, src_port, dst_ip, dst_port] is what's unique (protocol being TCP or UDP)
- pacala 15y agoGood point. Each unique client (address, port) can get a separate connection on a given/fixed server (address, port).
- caf 15y agoThe server generally only ever uses one port, no matter how many clients are connected. It is the tuple of (client IP, client port, server IP, server port) that must be unique for each TCP connection - so the limit of 65535 ports is only relevant for how many connections a single client can make to a single server.
- richardw 15y agoYou can have multiple connections on the same port from the same client. E.g. all connections via HTTP commonly go over the same port and a single browser usually has 2-4 simultaneous connections to the server. They don't use multiple ports to achieve this.
- caf 15y agoThey use multiple ports on the client side to achieve this - the "client port" part of the tuple varies.
- nathanappere 15y agoI believe this is incorrect. The server usually listen on one port, but everytime it does an accept, a different random port is used, and the client start talking to the server on that new port.
- caf 15y agoThis is a surprisingly common misconception. When you accept, you get a new socket. but it is on the same local port. You can readily see this by running 'netstat' on a busy server.
- ay 15y agoAnother way to see that there are no magic "dynamically selected" potrs is to run on the server "tcpdump src x.x.x.x or dst x.x.x.x" where the x.x.x.x is your client address - and check the outputs - the packets will have ports in them. Alternatively one can read RFC793 or, better, Stevens' "TCP/IP Illustrated".