TELE402 - Links

S2 2012



Useful Links

Useful for your labwork

Material you might like to refer to when doing your labwork.

Automatic Generation of Syntax Diagrams with a Given Grammar

This is a website that will take an EBNF (a bit different to ABNF) grammar and return a picture showing a diagram of it. I’ve seen similar diagrams used to great effect in Oracle’s documentation for their command-line programs. I do think though that the result is not particularly more readable compared to a well-written ABNF specification.


This tool generates inputs corresponding to a grammar given in Augmented Backus Naur Form (ABNF). This is used in the first lab.

Beej's Guide to Network Programming

If you don't want to buy Unix Network Programming, then this will be a very good read. It's nowhere as informative as UNP, but it is a very good starting point for knowing the basic networking system calls.


This is the code generation tool that produces the documentation you will spend a lot of time looking at.


Message Sequence Chart Generator. This produces the sort of diagrams that are often used for documenting how multiple agents interact over time. The Doxygen documentation for our Outboard project has at least one of these.


Graphviz is a useful tool for generating directed graphs, such as you see in the call-graphs in the Doxygen documentation.


cscope is a source code browsing/searching (and more) tool, that we find particularly useful when trying to find something under /usr/include/

Operating System/Environment design

The Unix Haters Handbook

Although Unix has a lot to offer, it also has a lot of mis-design and cruft embodied into it. It is very enlightening to see the sort of rather cool stuff that came before it, especially as some of it is re-introduced in more mainstream systems.

The Art of Unix Programming

Serves as a good counterpoint to The Unix Haters Handbook. Gives a lot of philosophy useful for Unix programmers.


UNIX Standards
Requests For Comments (RFCs)
Microsoft Solutions Developer Network (MSDN) Library

Useful historical documents

On Holy Wars and a Plea for Peace

A very well known document explaining the whole byte-order (and bit-order) issue.

Interesting IPv6 articles

A Tale of Two Protocols: IPv4, IPv6, MTUs and Fragmentation

This is a long, but useful, illustration of how bad filtering practices, which breakes Path MTU discovery, affects the ability to connect to numerous websites. The problem is more pronounced with IPv6 because tunnels are used extensively in the current IPv6 landscape, so the effective MTU decreases, and IPv6 doesn't allow fragmentation.

It has plenty of examples showing how the problem was diagnosed.

RFC4890: Recommendations for Filtering ICMPv6 Messages in Firewalls

The Internet Control Message Protocol plays a very important role in IPv4 and IPv6, even more so in IPv6 because it doesn't allow fragmentation and folds in the functional equivalent of ARP and IGMP. It is common practice to filter ICMP because they do pose some security risks, but it is definately wrong to blanket filter them. So the question remains, what should be filtered and what should be allowed? This RFC answers that question for ICMPv6.

ICMPv6 is Non-Optional

This example, from Google, serves to illustrate the problems that can be experienced by improper firewalling practice. It is a useful document to read to learn more about how to debug these sort of problems.