Saturday, October 20, 2007

Yahoo! Connection Problems

Yahoo! on a Router, Firewall or Proxy!

People using Routers, Firewalls and Proxies often experience Yahoo! Messenger connection problems. The official Yahoo! support lacks detailed information, and misses some important facts! The following aims to break the information down, and explain easily in sufficient detail.

Connection Options

There are 4 connection Options.
These may be found from the Messenger menu, choose Perferences, and click Connection.

Connection When to use
No Proxies This is the default option for those who dont have any security issues, such as firewalls or connection through proxies.
Firewall, No Proxies This option is selected if a firewall is detected. This method forbids voice chat, super webcam, and p2p IM. This option is not recommended, unless you have no control over your firewall.
Use Proxies Use this when you have to connect through a proxy, HTTP (basic and slow) or SOCKS4 or SOCKS5(with authentication). Common in the workplace, or advanced security.
No Network Detection Recommended for everyone who doesn't require a proxy server, and has firewall control. The firewall option doesn't care that you open ports, it automatically blocks, this option does not perform any detection of your network type.

Ports Yahoo! Messenger uses!

Yahoo! Messenger services uses a variety of ports.

Service Ports
Chat & Messenger TCP Port 5050: Client Access only
Insider/Room Lists TCP Port 80: Client Access only
File Transfer TCP Port 80: Server Access.
Your ISP may block this port, as its used for web hosting.
You can change port in Messenger, Preferences, File Transfer.
Voice Chat UDP 5000-5010
TCP 5000-5001: Client Access
If UDP Fails, TCP will be used instead, see below.
WebCam TCP Port 5100: Client Access
Super Webcam TCP Port 5100: Server Access
P2P Instant Messages TCP Port 5101: Server Access
PMs between Buddys may not use the Yahoo! Server, but this is not a requirement.

TCP versus UDP

TCP is a reliable protocol, and all data sent has a number of extra fields that guarantee delivery. This creates large overhead, and can make the stream slower.

UDP does not carry the same overhead, the data is transmitted much faster, but some data may not be delivered.

If you use a firewall

You need to enable the application Yahoo! Messenger, filename ypager.exe to access the internet, in most personal firewalls, this will give Yahoo! Messenger access to anything it desires, in client mode.

For server mode, you will most likely be prompted.

Proxy Users

HTTP Proxy is slow and unreliable, you cannot access voice chat, or webcam, or any of the advanced interactive services.

SOCKS4 and SOCKS5 are common in the workplace, as they allow more ports to be closed. SOCKS5 requires authentication available from your administrator.

Routers

If you use a router, client access to the Yahoo! Services will be as simple as if you did not use a router.

Where server access is required, you will need to use port forwarding or port triggering.

Port Forwarding/Virtual Server/Forwarding

You need to tell your router which computer on your network to forward the server packets too. This usually follows the form of specifying the computers IP, such as 192.168.1.2, the start port, and end port (from the table above, such as start 80 end 80 for file transfer, 5100 and 5100 for super webcam), and a map port (the same as the start and end).

WebHazard has a graphical tutoral on how for the D-Link routers for Yahoo! Voice Chat. View that here.

Port Triggering (LinkSys) - Super Webcam/UDP Voice

LinkSys routers allow a dynamic form of port forwarding, called port triggering. They maintain a connection tracking, when messenger makes a specific connection, the router is notified that an incoming server connection may follow

For UDP voice, a packet outgoing on port 5000 may cause a response to arrive on another port, say 5001. Linksys routers may be told to expect this, by setting the triggering range to 5000-5010, and the incoming range to 5000-5010.

For webcam, a packet outgoing on port 5100 will tell the router a server connection may come in on port 5100, setting the same ranges.