Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I want to create a simple JSON-based protocol to allow my game to talk to my custom server, but I don't want embed it in HTTP.

If I send a custom text-based protocol request to my server on port 80, will firewalls block it for not using HTTP format, or do they only care about the port number?

I won't use the same server as a web server, so I don't care about losing port 80 for real web serving.

As a bit of clarification, I am mainly concerned with the typical home firewalls that most people might have, not a high-end corporate firewall.

share|improve this question
    
The outgoing response will be valid JSON, which RESTful servers generate all the time, so only the incoming request could possibly cause an issue. –  MindJuice Aug 14 '10 at 1:11
add comment

5 Answers

As a bit of clarification, I am mainly concerned with the typical home firewalls that most people might have, not a high-end corporate firewall.

Most typical home firewalls don't block outbound connections by default. In fact most home based equipment do not even have a firewall, they just rely on NAT to prevent inbound connections. So personally I wouldn't worry too much about sending out port 80. Just use any port > 1024 and play nice.

I would also add that anyone who has a firewall filtering outbound connections has the experience to open up needed ports outbound as well.

share|improve this answer
    
Right, the local port is arbitrary. I am only concerned with the remote port 80 being blocked somewhere along the way. Assuming I am hosting on a dedicated server somewhere like 1and1.com, then it seems it should be OK. If for some reason it turned out to be a problem, I could add a basic HTTP header and send the JSON as the body of a POST. Just don't want to mess with that if it isn't required. –  MindJuice Aug 14 '10 at 2:43
add comment

Topic firewalls only do blocking based on port number. However, application layer firewalls (17 filter, wfilter enterprise) do blocking based on protocol patterns.

So if your firewall is an application layer firewall, your chatting program will not work.

share|improve this answer
add comment

Most typical firewalls will do basic port-based rules (if it's on port 80 it's OK, even if it's really some non-HTTP protocol), or they will do deeper inspection and deny flows which match a specific pattern of badness (file extension, virus shellcode, etc). I don't know of any that take a whitelist approach, blocking anything that isn't HTTP on port 80.

share|improve this answer
add comment

Firewalls that do deep packet inspection will flag this as non-HTTP and may react. Paranoid corporate-types don't want you running SSH over port 80 so you can tunnel out of their network policy framework.

However, run of the mill Linksys/Dlink/Netgeear commodity grade firewalls generally don't have such features. Especially on outbound.

share|improve this answer
    
Good point. It is only the client's outbound request that could be blocked. The client's inbound response will be valid JSON, so it should pass through like any other RESTful response. The oubound request will also be in JSON format, just with no HTTP headers. –  MindJuice Aug 14 '10 at 1:20
add comment

What issues do you see with using HTTP - there are plenty of people using HTTP for chat servers etc. that have the same sort of behaviour as game engines communicating with servers.

node.js might be a good fit on the server-side for this sort of app.

Other thing to look at would be Google's work on SPDY - http://en.wikipedia.org/wiki/SPDY - Chrome uses it for a lot of communication with Google's properties.

Andy

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.