Advertisement

A Network Design

Started by August 30, 2005 11:10 AM
-1 comments, last by oliii 19 years, 5 months ago
ok, I'm attempting to design a networking system, no just restricted to server / client, but also, peer 2 peer, and other systems. I came up with this. It is a crude attempt, but I'd like to start on networking, since well, it tends to be my job after all. 1) A machine is basically a server. It holds a list of accepted conenctions (to other machines). 2) Machines are controled through callbacks and commands. For example, in case of a pure server / client architecture, a client would never have more than one connection, and that connection would be to the server. The negociator would work only as a client (never accept connections directly, but manage responses from the server). 3) A negociator will authorise a connection from another machine, or not. This also allows to go through the NAT negociation process, and so on (passwords, encrypting keys, ...). It is also controlled by callback mechanisms (to allow only a max number of connections, for example). It has a ban list, to specific forbidden IPs (or connections, ISPs, ect...). Pending connections are connections being in the process of authorisations. One a handful of pending connections is allowed, to prevent DOS and other nasties. If an incoming connection request is received, either send a BUSY directly to the IP, or nothing. 4) Connections handles the machine-to-machine traffic and states. Sockets have a incoming bitstream, to bundle data into packets of desirable size. One problem I haven't accounted for, is packet being chopped and split into several messages (due to MTU and such). 5) Sockets, are just that. A plug between two machines. There will also be a lag simulator (I have a very broad use of the word lag), to simulate packet drops, duplication, out-of-order, latencies. My ultimate goal is to design a UDP-only net protocol, which will deal with these problems. Again, fragmentation (when a packet is chopped to fit the net requirements) is a huge problem, I'm not sure how to tackle it. so, wadayathink? :) This 'architecture' should allow me to design server / clients, as well as peer to peer, or both at the same time (say, for voice comms). Also, I have the possibility to run several machines on one computer, for bots (Battefield style), or a non-dedicated server.

Everything is better with Metal.

This topic is closed to new replies.

Advertisement