A communications system comprising: a filter having an input channel and an output channel; an operating system having an input channel coupled to the output channel of the filter, and an output channel; a firewall comprising a receiver, a content checker, and a protocol stack; wherein: the receiver is coupled to the content checker via the operating system; the protocol stack is coupled at a lower interface to the operating system below and at an upper interface to the content checker above; the filter is configured to (i) receive disassembled data from an external computer as one or more protocol data transmission units, (ii) check whether the units are legal with respect to at least part of the protocol stack, (iii) discard any legal units and pass data contained in data units illegal with respect to the said at least part of the protocol stack to the operating system; the receiver is configured to receive data from the operating system and only where said data is contained in protocol data units each consisting of a protocol frame, cell, or packet which is invalid with respect to the protocol stack to assemble the received data to reform the data and forward the assembled data to the content checker; the content checker being configured to receive data from the upper interface of the receiver and to forward said data to the upper interface of the protocol stack responsive to content checks applied to said data. a filter having an input channel and an output channel; an operating system having an input channel coupled to the output channel of the filter, and an output channel; a firewall comprising a receiver, a content checker, and a protocol stack; wherein: the receiver is coupled to the content checker via the operating system; the protocol stack is coupled at a lower interface to the operating system below and at an upper interface to the content checker above; the filter is configured to (i) receive disassembled data from an external computer as one or more protocol data transmission units, (ii) check whether the units are legal with respect to at least part of the protocol stack, (iii) discard any legal units and pass data contained in data units illegal with respect to the said at least part of the protocol stack to the operating system; the receiver is configured to receive data from the operating system and only where said data is contained in protocol data units each consisting of a protocol frame, cell, or packet which is invalid with respect to the protocol stack to assemble the received data to reform the data and forward the assembled data to the content checker; the content checker being configured to receive data from the upper interface of the receiver and to forward said data to the upper interface of the protocol stack responsive to content checks applied to said data. the receiver is coupled to the content checker via the operating system; the protocol stack is coupled at a lower interface to the operating system below and at an upper interface to the content checker above; the filter is configured to (i) receive disassembled data from an external computer as one or more protocol data transmission units, (ii) check whether the units are legal with respect to at least part of the protocol stack, (iii) discard any legal units and pass data contained in data units illegal with respect to the said at least part of the protocol stack to the operating system; the receiver is configured to receive data from the operating system and only where said data is contained in protocol data units each consisting of a protocol frame, cell, or packet which is invalid with respect to the protocol stack to assemble the received data to reform the data and forward the assembled data to the content checker; the content checker being configured to receive data from the upper interface of the receiver and to forward said data to the upper interface of the protocol stack responsive to content checks applied to said data.