Protection and reliability above all else. Nowadays, information plays a significant role in my life. In connection with this very appropriate introduction would be implementing the protocol SCTP (Stream Control Transmission Protocol - «transfer protocol with flow control"), a new version. This will provide protection against SYN-flood attacks, the establishment of a safe connection (using a four-handshake), as well as pleasant innovation in the form of the conservation message boundaries, multi-threading, unordered delivery, support for multiple interfaces. Implementation of this protocol allows the network to bring a new level of speed, reliability, security and data transmission capabilities over the network. Because the new protocol was created, taking into account shortcomings of TCP, in view of the network and make full use of their opportunities, and special attention was paid to safety and security.
It is high time to promote, SCTP everywhere! Given the current active movement towards IPv6. + A lot of goodies from this extract is another good protocol SPDY. You can not hinder the development of technologies and the need to push modern protocols to the masses. It remains to convince Microsoft's usefulness and necessity of these protocols and to persuade them to intensive implementation. By the way Firefox is already implementing a protocol support SPDY (expected in version 11), as well as support going into the popular web-server nginx.
Anonymous
Hello.
Would you be interested in implementing the protocol parser for SCTP? I'd welcome any new protocols.
Chris
Waiting on someone to volunteer to implement this support since it is likely to take some time to do so properly....
Sounds interesting but I have too many balls in the air already to touch it right now.
After a cursory look at the spec, there's some bad and there's some bad. The first problem is, it uses a new checksum algorithm. The second is, it uses a variable number of variable length data chunks within the packet with flags on the chunk type that can be different things depending on what type of chunk it is.
The checksum in encoded using the Adler-32 algorithm:
http://en.wikipedia.org/wiki/Adler-32
Basically, the data is read in as 32bit ascii (pseudo) chars, cast to an integer, and run through some ridiculous 2 level (last char, current char) addition for each (pesudo) char read in. ASCII... really!?
Because ASCII is the character encoding of the future.
/sarcasm
I swear, if network protocol designers didn't have such a hard on for crap obscure algorithms implementing new protocols wouldn't be such a headache.
Either way, it's going to be painful to implement the checksum part and special care will need to be taken to ensure that it can function efficiently.
All rants aside, there's going to be some pain in implementing this. I've already ranted about the checksum, it'll need an Enum for all of the chunk types, bitwise getters/setters for the flags field on the chunks, and probably another custom list type to handle the creating and parsing of the data chunks. The LLDP (Link Layer Data Protocol) code is probably a good place to look to figure out how to manage the chunks.
For a good quality, easy to read specification I suggest you take a look at:
http://www.networksorcery.com/enp/default1101.htm
Once there goto:
Protocols -> SCTP
That's my 2 cents. Hopefully it will be useful to somebody else.
Hey Evan.
How is it going man? Long time..... What have you been up to?
I actually just implemented a generic Crc generator. You give it a polynomial in 32bit form, a starting value, final xor and bit width, and it generates you a table of values. This class could be leveraged to generate the 16bit crc and then the parent class would build the final crc form.
I agree that it is a bit of work though. Plus there isn't currently any kind of 'following' class that handles streams, data that goes across multiple packets. I have stuff like that for a custom library that I licence but haven't had enough people license it to cover the development costs yet.
Chris
Hi Chris,
I moved to San Diego last summer. Been getting established and doing more web based internal business development lately using a hybrid Google App Engine and LAMP stack approach. My latest project is jquery-CSV which is a Javascript-only based CSV parser. Dealing with cross browser RegEx inconsistencies is fun /s.
Yeah, checksum and bitwise calculations for me require a lot of head scratching. Not exactly my strong suit and something I'd rather complain about.
As for streaming, Even if there was an OSS implementation, I think it would be better served as an additional library anyway (Stream.NET?). I got really bored one day and started debating whether I should try to build one for fun but eventually decided not to. I knew you had one but keep it behind a paywall for good reason. I'm surprised you don't have a higher demand for licensing, there seems to be plenty of devs on the internets doing a poor job of trying to roll their own.
Of course, devs DO tend to be the cheapest bastards of them all.
As much fun as I have toying with network protocols it isn't exactly pay-dirt for me these days. Maybe if I could get an appreciable chunk of free time I could fire up my old C# dev environment. Until then, I'm all talk and no do.
Evan