powered by Jive Software

Why use the TCP instead of UDP protocal in the wildfire server?

As we know, the UDP protocal can provide better performance for network application if TCP is not necessary, while, in the wildfire server, we use the TCP server to serve the clients, need we use the 3 times hand-shake protocal here why not UDP? For NAT issues or anything else?


it could be hard to read http://www.ietf.org/rfc/rfc3920.txt and http://www.ietf.org/rfc/rfc3921.txt but both define XMPP. You’'ll find nothing about UDP but a lot of TCP so Wildfire must use TCP to be a jabber server.

Do you like UDP? I like it within a LAN but over the internet you’'ll lose a lot of packets / messages.


So , it’'s defined in the XMPP protocal.

Since UDP will lose some packets sometimes, but as to chat application, it’'s acceptable I think. Tcp connection,especially long existing tcp connection will bring bottlenecks and performance issues.

Since UDP will lose some packets sometimes, but as to

chat application, it’'s acceptable I think.

Uhm, for me personally, when I don’'t know wether the other person actually got the message, why chat in the first place?

On ICQ, it happens occasionally that messages get lost. Most of the time that results in a huge confusion, struggle or incorrect information transfer.

As soon as you add message confirmation packets to solve this problem, you might as well simply go TCP and let the OS handle that.

btw, UDP doesn’'t work reliably through NAT, which would be a major problem here.


“long existing tcp connection will bring bottlenecks and performance issues.” - do you have a real world example for this?

I really wonder where these fairy-tales come from. The Cassiopeia community software offers a web chat which uses a persistent TCP connection, so after 12 hours you have a very long web page / chat history and there is no problem.


well, i remember(not very clear) there is a limitation of max tcp connctions in some os platforms. If all clients’’ tcp connections are kept alive by the tcp server, how can a single tcp server servers many thousands of clients at the sametime?

When we develop the database applications now(especially web based application), we seldom use the long existing database connection for each client thread, we often use connection pool or short existing connection instead. That’'s for the performance reason.

Message was edited by: eway

ICQ uses the UDP as the protocal and ICQ chating works in a P2P mode?


did you read this on http://www.icq.com/icqtour/firewall/netadmin.html ?

"[i]Client to server Communication:

  • This is done via port 5190 TCP to login.icq.com (please note- allow a bi-directional connection to the port for login.icq.com and not any specific IP address, since it stands for more than one IP address).

Client to client communication:[/b]

  • Client to client connection is done using the TCP protocol, using port range 1024-65535. This means that the client needs an open listening port within the mentioned range-- 1024-65535.[/i]"

I wonder where UDP is mentioned.


I’'m sure ICQ used it some years ago, maybe that was removed when they moved over to the OSCAR-protocol.