CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
TCP/IP illustrated (vol. 1): the protocols
TCP/IP illustrated (vol. 1): the protocols
A calculus of mobile processes, II
Information and Computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A structured TCP in standard ML.
SIGCOMM '94 Proceedings of the conference on Communications architectures, protocols and applications
Pict: a programming language based on the Pi-Calculus
Proof, language, and interaction
What packets may come: automata for network monitoring
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
UNIX Network Programming: Networking APIs: Sockets and XTI
UNIX Network Programming: Networking APIs: Sockets and XTI
Distributed Algorithms
Information Technology-Portable Operating System Interface
Information Technology-Portable Operating System Interface
Nomadic Pict: Language and Infrastructure Design for Mobile Agents
IEEE Concurrency
The UDP Calculus: Rigorous Semantics for Real Networking
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
An Object Calculus for Asynchronous Communication
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Distributed Processes and Location Failures (Extended Abstract)
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
On Implementations and Semantics of a Concurrent Programming Language
CONCUR '97 Proceedings of the 8th International Conference on Concurrency Theory
Verifying a Distributed Database Lookup Manager Written in Erlang
FM '99 Proceedings of the Wold Congress on Formal Methods in the Development of Computing Systems-Volume I - Volume I
Localities and Failures (Extended Abstract)
Proceedings of the 14th Conference on Foundations of Software Technology and Theoretical Computer Science
The ensemble system
Timing UDP: Mechanized Semantics for Sockets, Threads, and Failures
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
The UDP Calculus: Rigorous Semantics for Real Networking
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Semantics of Protocol Modules Composition and Interaction
COORDINATION '02 Proceedings of the 5th International Conference on Coordination Models and Languages
Proceedings of the 2005 conference on Applications, technologies, architectures, and protocols for computer communications
Stenning's protocol implemented in UDP and verified in Isabelle
CATS '05 Proceedings of the 2005 Australasian symposium on Theory of computing - Volume 41
Engineering with logic: HOL specification and symbolic-evaluation testing for TCP implementations
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Rigour is good for you and feasible: reflections on formal treatments of C and UDP sockets
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
A Rigorous Approach to Networking: TCP, from Implementation to Protocol to Service
FM '08 Proceedings of the 15th international symposium on Formal Methods
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards formal proof script refactoring
MKM'11 Proceedings of the 18th Calculemus and 10th international conference on Intelligent computer mathematics
Hi-index | 0.00 |
Network programming is notoriously hard to understand: one has to deal with a variety of protocols (IP, ICMP, UDP, TCP etc.), concurrency, packet loss, host failure, timeouts, the complex sockets interface to the protocols, and subtle portability issues. Moreover, the behavioural properties of operating systems and the network are not well documented.A few of these issues have been addressed in the process calculus and distributed algorithm communities, but there remains a wide gulf between what has been captured in semantic models and what is required for a precise understanding of the behaviour of practical distributed programs that use these protocols.In this paper we demonstrate (in a preliminary way) that the gulf can be bridged. We give an operational model for socket programming with a substantial fraction of UDP and ICMP, including loss and failure. The model has been validated by experiment against actual systems. It is not tied to a particular programming language, but can be used with any language equipped with an operational semantics for system calls - here we give such a language binding for an OCaml fragment. We illustrate the model with a few small network programs.