0% found this document useful (0 votes)
13 views462 pages

Communications Protocol

Uploaded by

NickOl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views462 pages

Communications Protocol

Uploaded by

NickOl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 462

Contents

1 Algorithm 1
1.1 Informal definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Formalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Expressing algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Computer algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.1 Algorithm example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.2 Euclid’s algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5.3 Testing the Euclid algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5.4 Measuring and improving the Euclid algorithms . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Algorithmic analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.1 Formal versus empirical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6.2 Execution efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.1 By implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.2 By design paradigm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7.3 Optimization problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7.4 By field of study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7.5 By complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8 Continuous algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.9 Legal issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.10 Etymology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.11 History: Development of the notion of “algorithm” . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.11.1 Ancient Near East . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.11.2 Discrete and distinguishable symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.11.3 Manipulation of symbols as “place holders” for numbers: algebra . . . . . . . . . . . . . . 12
1.11.4 Mechanical contrivances with discrete states . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.11.5 Mathematics during the 19th century up to the mid-20th century . . . . . . . . . . . . . . 13
1.11.6 Emil Post (1936) and Alan Turing (1936–37, 1939) . . . . . . . . . . . . . . . . . . . . . 13
1.11.7 J. B. Rosser (1939) and S. C. Kleene (1943) . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.11.8 History after 1950 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

i
ii CONTENTS

1.12 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15


1.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.14.1 Secondary references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.15 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.16 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2 Analogy 22
2.1 Usage of the terms “source” and “target” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2 Models and theories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Identity of relation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.2 Shared abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3 Special case of induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.4 Shared structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.5 High-level perception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.6 Analogy and Complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Applications and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 In language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.2 In science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.3 In normative matters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.4 In teaching strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3 AppleTalk 30
3.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.1 AppleNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.2 AppleBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.3 AppleBus networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.4 AppleTalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.5 PhoneNet and other adaptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.6 EtherTalk, TokenTalk and AppleShare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.7 AppleTalk Phase II and other developments . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.8 The capital-I Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.9 Legacy and abandonment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4 Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1 AppleTalk Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.2 AppleTalk Data Stream Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
CONTENTS iii

3.4.3 Apple Filing Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34


3.4.4 AppleTalk Session Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.5 Datagram Delivery Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.6 Name Binding Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.7 AppleTalk Echo Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.8 Printer Access Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.9 Routing Table Maintenance Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.10 Zone Information Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5 Physical implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6 Networking model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.8 Cross-platform solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.11.1 Citations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.11.2 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.12 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4 ARPANET 38
4.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.1 Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.2 Debate on design goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.3 ARPANET deployed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.4 Growth and evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.1.5 Rules and etiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.6 Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Software and protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.1 Network applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.2 Password protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 ARPANET in popular culture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.6 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.6.1 Oral histories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.6.2 Detailed technical reference works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

5 Asynchronous Transfer Mode 47


5.1 Layer 2 – Datagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.1 Cell size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.2 The structure of an ATM cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
iv CONTENTS

5.1.3 Cells in practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49


5.1.4 Why virtual circuits? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1.5 Using cells and virtual circuits for traffic engineering . . . . . . . . . . . . . . . . . . . . 50
5.1.6 Types of virtual circuits and paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.7 Virtual circuit routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.8 Call admission and connection establishment . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1.9 Reference model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Wireless ATM or Mobile ATM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6 AX.25 53
6.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2 Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.1 KISS-mode framing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.4 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.7 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

7 Communicating sequential processes 56


7.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.1.1 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2 Informal description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.1 Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.2 Algebraic operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3 Formal definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3.2 Formal semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.5 Related formalisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.6 Comparison with the Actor Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.8 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.10 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
CONTENTS v

8 Communication 63
8.1 Nonverbal communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.2 Verbal communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.3 Written communication and its historical development . . . . . . . . . . . . . . . . . . . . . . . . 64
8.4 Business communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.5 Family communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.6 Interpersonal communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.7 Barriers to effective human communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.7.1 Cultural aspects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.8 Nonhuman communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
8.8.1 Animals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.8.2 Plants and fungi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.8.3 Bacteria quorum sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.9 Models of communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.10 Noise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.11 Communication as academic discipline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.12 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.13 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.14 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

9 Communications protocol 72
9.1 Communicating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.2 Basic requirements of protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9.3 Protocols and programming languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
9.4 Universal protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.5 Protocol design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.5.1 A basis for protocol design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9.5.2 Layering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.5.3 Formal specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.6 Protocol development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.6.1 The need for protocol standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.6.2 Standards organizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.6.3 The standardization process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.6.4 Future of standardization (OSI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.7 Taxonomies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.8 Examples of protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.9 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.10 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.11 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.12 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

10 Communications system 85
vi CONTENTS

10.1 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.1.1 By media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.1.2 By Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
10.1.3 By Application area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

11 Compiler 87
11.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
11.1.1 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.1.2 Compilers in education . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2 Compiler output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2.1 Compiled versus interpreted languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
11.2.2 Special type of compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.3 Compiler construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
11.3.1 One-pass versus multi-pass compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
11.3.2 Three phases compiler structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
11.3.3 Front end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
11.3.4 Back end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
11.3.5 Compiler correctness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11.4 Conferences and organizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11.5 Related techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
11.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

12 Computer hardware 95
12.1 Von Neumann architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
12.2 Sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
12.3 Different systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
12.3.1 Personal computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
12.3.2 Mainframe computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
12.3.3 Departmental computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.3.4 Supercomputer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.4 Hardware upgrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
12.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

13 Concurrent computing 99
CONTENTS vii

13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
13.1.1 Coordinating access to shared resources . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.1.2 Advantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.2 Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.3 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.3.1 Interaction and communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
13.4 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
13.5 Prevalence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
13.6 Languages supporting it . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
13.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
13.8 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
13.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
13.10Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
13.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

14 Connection-oriented communication 105


14.1 Circuit switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
14.2 Virtual circuit switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
14.2.1 Transport layer connection mode communication . . . . . . . . . . . . . . . . . . . . . . . 105
14.2.2 Datalink and network layer virtual circuit switching . . . . . . . . . . . . . . . . . . . . . 105
14.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
14.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
14.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

15 Connectionless communication 107


15.1 Notable connectionless protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
15.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

16 Data flow diagram 109


16.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
16.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
16.2.1 Physical DFD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
16.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
16.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
16.5 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
16.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

17 Data structure 112


17.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
17.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
17.3 Language support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
17.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
17.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
viii CONTENTS

17.6 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113


17.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

18 De facto standard 115


18.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
18.2 Standards battles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
18.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
18.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

19 Distributed Component Object Model 117


19.1 Hardening . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
19.2 Alternative versions and implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
19.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
19.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
19.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

20 Duplex (telecommunications) 119


20.1 Half-duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
20.2 Full-duplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.3 Full-duplex emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.3.1 Time-division duplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.3.2 Frequency-division duplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
20.3.3 Echo cancellation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
20.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
20.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
20.6 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

21 Dynamic Data Exchange 122


21.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
21.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
21.3 NetDDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
21.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
21.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
21.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
21.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

22 Error detection and correction 124


22.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.3 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.4 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
22.5 Error detection schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
22.5.1 Repetition codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
CONTENTS ix

22.5.2 Parity bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125


22.5.3 Checksums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
22.5.4 Cyclic redundancy checks (CRCs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
22.5.5 Cryptographic hash functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.5.6 Error-correcting codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.6 Error correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.6.1 Automatic repeat request (ARQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.6.2 Error-correcting code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
22.6.3 Hybrid schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
22.7 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
22.7.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
22.7.2 Deep-space telecommunications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
22.7.3 Satellite broadcasting (DVB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
22.7.4 Data storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
22.7.5 Error-correcting memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
22.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
22.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
22.10Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
22.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

23 File Transfer Protocol 130


23.1 History of FTP server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
23.2 Protocol overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
23.2.1 Communication and data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
23.2.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
23.2.3 Anonymous FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
23.2.4 NAT and firewall traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
23.2.5 Differences from HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
23.3 Web browser support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
23.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
23.4 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
23.4.1 FTP over SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
23.5 Derivatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.5.1 FTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.5.2 SSH File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.5.3 Trivial File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.5.4 Simple File Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.6 FTP commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.7 FTP reply codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
23.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
23.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
23.10Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
x CONTENTS

24 Finite-state machine 136


24.1 Example: coin-operated turnstile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
24.2 Concepts and terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
24.3 Representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
24.3.1 State/Event table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
24.3.2 UML state machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.3.3 SDL state machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.3.4 Other state diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.4 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.5 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.5.1 Acceptors and recognizers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
24.5.2 Transducers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
24.5.3 Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
24.5.4 Determinism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
24.6 Alternative semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
24.7 FSM logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
24.8 Mathematical model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
24.9 Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
24.10Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
24.10.1 Hardware applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
24.10.2 Software applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
24.10.3 Finite automata and compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
24.11See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
24.12References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
24.13Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
24.13.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
24.13.2 Finite state machines (automata theory) in theoretical computer science . . . . . . . . . . 143
24.13.3 Abstract state machines in theoretical computer science . . . . . . . . . . . . . . . . . . . 144
24.13.4 Machine learning using finite-state algorithms . . . . . . . . . . . . . . . . . . . . . . . . 144
24.13.5 Hardware engineering: state minimization and synthesis of sequential circuits . . . . . . . 144
24.13.6 Finite Markov chain processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
24.14External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

25 General Inter-ORB Protocol 145


25.1 Environment Specific Inter-ORB Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
25.2 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
25.3 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
25.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

26 HTML 147
26.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
26.1.1 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
CONTENTS xi

26.1.2 HTML versions timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148


26.2 Markup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
26.2.1 Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
26.2.2 Character and entity references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
26.2.3 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
26.2.4 Document type declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
26.3 Semantic HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
26.4 Delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.4.1 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.4.2 HTML e-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.4.3 Naming conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.4.4 HTML Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.5 HTML4 variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
26.5.1 SGML-based versus XML-based HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
26.5.2 Transitional versus strict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
26.5.3 Frameset versus transitional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.5.4 Summary of specification versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.6 HTML5 variations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.6.1 WHATWG HTML versus HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.7 Hypertext features not in HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.8 WYSIWYG editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
26.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
26.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

27 Hypertext Transfer Protocol 161


27.1 Technical overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
27.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
27.3 HTTP session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
27.4 HTTP Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
27.4.1 Authentication Realms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
27.5 Request methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
27.5.1 Safe methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
27.5.2 Idempotent methods and web applications . . . . . . . . . . . . . . . . . . . . . . . . . . 164
27.5.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
27.5.4 Summary table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
27.6 Status codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
27.7 Persistent connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
27.8 HTTP session state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
27.9 Encrypted connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
27.10Request message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
27.11Response message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
xii CONTENTS

27.12Example session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165


27.12.1 Client request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
27.12.2 Server response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
27.13Similar protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
27.14See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
27.15Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
27.16References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
27.17External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

28 Implementation 168
28.1 Industry-specific definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.1.1 Computer science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.1.2 Information technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.1.3 Political science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.1.4 Social and health sciences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.1.5 Water and natural resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
28.2 Role of end users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
28.2.1 User concerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
28.2.2 Designer concerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
28.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
28.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

29 Information 170
29.1 Etymology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
29.2 Information theory approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
29.3 As sensory input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
29.4 As representation and complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
29.5 As an influence which leads to a transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
29.6 As a property in physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
29.7 The application of information study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
29.8 Technologically mediated information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
29.9 As records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
29.10Semiotics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
29.11See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
29.12Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
29.13References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
29.14External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

30 Institute of Electrical and Electronics Engineers 176


30.1 Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
30.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
30.3 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
CONTENTS xiii

30.4 Publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177


30.5 Educational activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
30.6 IEEE Conferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30.7 Standards and development process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30.8 Membership and member grades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
30.9 Awards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
30.9.1 Medals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
30.9.2 Technical field awards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
30.9.3 Recognitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
30.9.4 Prize paper awards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
30.9.5 Scholarships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
30.9.6 Student Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
30.10Societies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
30.11Technical councils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
30.12Technical committees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
30.13Organizational units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
30.14IEEE Foundation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
30.15See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
30.16Notes and references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
30.17External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

31 Interaction protocol 183

32 International Organization for Standardization 184


32.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
32.2 Name and abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
32.3 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
32.4 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
32.4.1 IEC joint committees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
32.5 Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
32.6 Financing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
32.7 International Standards and other publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
32.8 Products named after ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
32.9 Criticism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
32.10See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
32.11Notes and references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
32.12Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
32.13External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

33 International Telecommunication Union 190


33.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
33.2 ITU sectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
xiv CONTENTS

33.3 Legal framework of ITU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191


33.4 Leadership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
33.5 Directors and Secretaries-General of ITU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
33.6 Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
33.6.1 Regional groupings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
33.7 World Summit on the Information Society . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
33.8 World Conference on International Telecommunications 2012 (WCIT-12) . . . . . . . . . . . . . . 192
33.8.1 Changes to international telecommunication regulations . . . . . . . . . . . . . . . . . . . 192
33.8.2 Proposed changes to the treaty and concerns . . . . . . . . . . . . . . . . . . . . . . . . . 192
33.8.3 WCIT-12 conference participation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
33.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
33.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

34 Internet 195
34.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
34.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
34.3 Governance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
34.4 Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
34.4.1 Routing and service tiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
34.4.2 Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
34.4.3 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
34.5 Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
34.6 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
34.6.1 World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
34.6.2 Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
34.6.3 Data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
34.7 Social impact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.7.1 Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
34.7.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
34.7.3 Social networking and entertainment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
34.7.4 Electronic business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
34.7.5 Telecommuting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
34.7.6 Crowdsourcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
34.7.7 Collaborative publishing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
34.7.8 Politics and political revolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
34.7.9 Philanthropy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
34.8 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
34.8.1 Surveillance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
34.8.2 Censorship . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
34.9 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
34.9.1 Outages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
34.9.2 Energy use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
CONTENTS xv

34.10See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208


34.11References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
34.12Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
34.13External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

35 Internet Control Message Protocol 214


35.1 Technical details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
35.2 ICMP datagram structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
35.2.1 Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
35.2.2 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
35.3 Control messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
35.3.1 Source quench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
35.3.2 Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
35.3.3 Time exceeded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
35.3.4 Timestamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
35.3.5 Timestamp reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
35.3.6 Address mask request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
35.3.7 Address mask reply . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
35.3.8 Destination unreachable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
35.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
35.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
35.6 RFCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
35.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

36 Internet Engineering Task Force 218


36.1 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
36.2 Meetings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
36.3 Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
36.4 Chairs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
36.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
36.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
36.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

37 Internet Message Access Protocol 221


37.1 E-mail protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
37.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
37.2.1 Original IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
37.2.2 IMAP2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
37.2.3 IMAP3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
37.2.4 IMAP2bis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
37.2.5 IMAP4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
37.3 Advantages over POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
xvi CONTENTS

37.3.1 Connected and disconnected modes of operation . . . . . . . . . . . . . . . . . . . . . . . 222


37.3.2 Multiple clients simultaneously connected to the same mailbox . . . . . . . . . . . . . . . 222
37.3.3 Access to MIME message parts and partial fetch . . . . . . . . . . . . . . . . . . . . . . . 222
37.3.4 Message state information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
37.3.5 Multiple mailboxes on the server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
37.3.6 Server-side searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
37.3.7 Built-in extension mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
37.4 Disadvantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
37.5 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
37.6 Dialog example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
37.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
37.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
37.9 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
37.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

38 Internet Protocol 226


38.1 Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
38.1.1 Datagram construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
38.1.2 IP addressing and routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
38.2 Reliability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
38.3 Link capacity and capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
38.4 Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
38.5 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
38.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
38.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
38.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

39 Internet protocol suite 229


39.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
39.1.1 Early research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
39.1.2 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
39.1.3 Adoption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
39.2 Key architectural principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
39.3 Abstraction layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
39.3.1 Link layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
39.3.2 Internet layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
39.3.3 Transport layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
39.3.4 Application layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
39.4 Layer names and number of layers in the literature . . . . . . . . . . . . . . . . . . . . . . . . . . 234
39.5 Comparison of TCP/IP and OSI layering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
39.6 Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
39.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
CONTENTS xvii

39.8 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235


39.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
39.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

40 Internetworking 237
40.1 Interconnection of networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
40.2 Networking models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
40.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
40.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

41 IPX/SPX 239
41.1 Protocol layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
41.2 Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
41.2.1 DOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
41.2.2 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
41.2.3 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
41.3 Legacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
41.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
41.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

42 Java remote method invocation 241


42.1 Generalized code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
42.2 Jini version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
42.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
42.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
42.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

43 Link layer 243


43.1 Definition in standards and textbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
43.2 Link layer protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
43.3 Relation to OSI model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
43.4 IETF standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
43.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
43.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
43.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

44 Maximum transmission unit 245


44.1 Table of MTUs of common media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
44.2 IP (Internet protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
44.2.1 Path MTU Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
44.3 MTU in other standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
44.4 Disruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
44.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
xviii CONTENTS

44.6 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247


44.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

45 Mealy machine 248


45.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
45.2 Formal definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
45.3 Comparison of Mealy machines and Moore machines . . . . . . . . . . . . . . . . . . . . . . . . 248
45.4 Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
45.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.5.1 Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.5.2 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.6 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
45.9 Footnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
45.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

46 Media access control 251


46.1 Functions performed in the MAC sublayer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
46.2 Addressing mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
46.3 Channel access control mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
46.4 Common multiple access protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
46.5 MAC in cellular networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
46.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
46.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

47 Moore machine 253


47.1 Formal definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.2 Visual representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.2.1 Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.2.2 Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.3 Relationship with Mealy machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.4 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
47.4.1 Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
47.4.2 Complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
47.5 Gedanken-experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
47.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
47.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
47.8 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

48 Network congestion 256


48.1 Network capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
48.2 Congestive collapse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
CONTENTS xix

48.3 Congestion control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257


48.3.1 Theory of congestion control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
48.3.2 Classification of congestion control algorithms . . . . . . . . . . . . . . . . . . . . . . . . 257
48.4 Mitigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
48.4.1 Practical network congestion avoidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
48.4.2 TCP/IP congestion avoidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
48.4.3 Active queue management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
48.5 Side effects of congestive collapse avoidance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
48.5.1 Radio links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
48.5.2 Short-lived connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
48.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
48.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
48.8 Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
48.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

49 Operating system 261


49.1 Types of operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
49.1.1 Single- and multi-tasking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
49.1.2 Single- and multi-user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
49.1.3 Distributed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
49.1.4 Templated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
49.1.5 Embedded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
49.1.6 Real-time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
49.1.7 Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
49.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
49.2.1 Mainframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
49.2.2 Microcomputers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
49.3 Examples of operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
49.3.1 Unix and Unix-like operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
49.3.2 Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
49.3.3 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
49.4 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
49.4.1 Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
49.4.2 Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
49.4.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
49.4.4 User interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
49.5 Real-time operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
49.6 Operating system development as a hobby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
49.7 Diversity of operating systems and portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
49.8 Market share . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
49.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
49.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
xx CONTENTS

49.11Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275


49.12External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

50 OSI model 277


50.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
50.2 Description of OSI layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
50.2.1 Layer 1: Physical Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
50.2.2 Layer 2: Data Link Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
50.2.3 Layer 3: Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
50.2.4 Layer 4: Transport Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
50.2.5 Layer 5: Session Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
50.2.6 Layer 6: Presentation Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
50.2.7 Layer 7: Application Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
50.3 Cross-layer functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
50.4 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
50.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
50.6 Comparison with TCP/IP model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
50.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
50.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
50.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

51 Physical quantity 283


51.1 Symbols, nomenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
51.2 Units and dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
51.3 Base quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
51.4 General derived quantities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
51.4.1 Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
51.4.2 Densities, flows, gradients, and moments . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
51.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
51.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
51.6.1 Computer implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
51.7 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

52 Post Office Protocol 286


52.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
52.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
52.3 Extensions and Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
52.3.1 STARTTLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.3.2 SDPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.3.3 Kerberized Post Office Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.4 Comparison with IMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.5 Dialog example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
CONTENTS xxi

52.6 Server implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288


52.7 Related requests for comments (RFCs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
52.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
52.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
52.10Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
52.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

53 Programming language 289


53.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
53.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
53.2.1 Early developments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
53.2.2 Refinement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
53.2.3 Consolidation and growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
53.3 Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
53.3.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
53.3.2 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
53.3.3 Type system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
53.3.4 Standard library and run-time system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
53.4 Design and implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
53.4.1 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
53.4.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
53.5 Proprietary languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
53.6 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
53.6.1 Measuring language usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
53.7 Taxonomies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
53.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
53.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
53.10Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

54 Public switched telephone network 302


54.1 History (America) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
54.2 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
54.3 Regulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.4 Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.4.1 Network topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.4.2 Digital channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.4.3 Impact on IP standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
54.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
54.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

55 Radio 305
xxii CONTENTS

55.1 Etymology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305


55.2 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
55.2.1 Transmitter and modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
55.2.2 Antenna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
55.2.3 Propagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
55.2.4 Resonance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
55.2.5 Receiver and demodulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
55.2.6 Radio band . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
55.3 Communication systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
55.4 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
55.5 Uses of radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
55.5.1 Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
55.5.2 Telephony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
55.5.3 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
55.5.4 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
55.5.5 Radar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
55.5.6 Data (digital radio) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
55.5.7 Heating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
55.5.8 Amateur radio service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
55.5.9 Unlicensed radio services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
55.5.10 Radio control (RC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
55.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
55.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
55.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
55.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

56 Semantics 316
56.1 Linguistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
56.2 Montague grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
56.3 Dynamic turn in semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
56.4 Prototype theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
56.5 Theories in semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
56.5.1 Model theoretic semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
56.5.2 Formal (or truth-conditional) semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.5.3 Lexical and conceptual semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.5.4 Lexical semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.5.5 Computational semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.6 Computer science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.6.1 Programming languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
56.6.2 Semantic models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
56.7 Psychology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
56.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
CONTENTS xxiii

56.8.1 Linguistics and semiotics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319


56.8.2 Logic and mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
56.8.3 Computer science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
56.8.4 Psychology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
56.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
56.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

57 SOAP 322
57.1 Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
57.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
57.3 Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
57.3.1 Processing model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
57.4 SOAP building blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
57.5 Transport methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
57.6 Message format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.7 Example message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.8 Technical critique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.8.1 Advantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.8.2 Disadvantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
57.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
57.11Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
57.12External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

58 Software 326
58.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
58.2 Types of software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
58.2.1 Purpose, or domain of use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
58.2.2 Nature or domain of execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
58.2.3 Programming tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
58.3 Software topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
58.3.1 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
58.3.2 Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
58.3.3 Quality and reliability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
58.3.4 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
58.3.5 Patents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
58.4 Design and implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
58.5 Industry and organizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
58.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
58.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
58.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
xxiv CONTENTS

59 State (computer science) 331


59.1 Digital logic circuit state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
59.2 Program state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
59.3 Finite state machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
59.4 Types of states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
59.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
59.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

60 Syntax 333
60.1 Etymology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
60.2 Sequencing of subject, verb, and object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
60.3 Early history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
60.4 Modern theories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
60.4.1 Generative grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
60.4.2 Categorial grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
60.4.3 Dependency grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
60.4.4 Stochastic/probabilistic grammars/network theories . . . . . . . . . . . . . . . . . . . . . 335
60.4.5 Functionalist grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
60.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
60.5.1 Syntactic terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
60.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
60.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
60.8 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
60.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

61 Technical standard 339


61.1 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
61.2 Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
61.3 Geographic levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
61.4 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
61.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
61.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

62 Telecommunication 341
62.1 Etymology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
62.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
62.2.1 Beacons and pigeons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
62.2.2 Telegraph and telephone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
62.2.3 Radio and television . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
62.2.4 Computers and the Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
62.3 Key concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
62.3.1 Basic elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
CONTENTS xxv

62.3.2 Analog versus digital communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344


62.3.3 Telecommunication networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
62.3.4 Communication channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
62.3.5 Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
62.4 Society . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
62.4.1 Economic impact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
62.4.2 Social impact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
62.4.3 Other impacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
62.5 Government . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
62.6 Modern media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
62.6.1 Worldwide equipment sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
62.6.2 Telephone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
62.6.3 Radio and television . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
62.6.4 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
62.6.5 Local area networks and wide area networks . . . . . . . . . . . . . . . . . . . . . . . . . 349
62.7 Transmission capacity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
62.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
62.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
62.9.1 Citations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
62.9.2 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
62.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

63 Timeout (computing) 354


63.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
63.2 Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

64 Transmission Control Protocol 356


64.1 Historical origin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
64.2 Network function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
64.3 TCP segment structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
64.4 Protocol operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
64.4.1 Connection establishment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
64.4.2 Connection termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
64.4.3 Resource usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
64.4.4 Data transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
64.4.5 Maximum segment size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
64.4.6 Selective acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
64.4.7 Window scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
64.4.8 TCP timestamps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
64.4.9 Out-of-band data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
64.4.10 Forcing data delivery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
64.5 Vulnerabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
xxvi CONTENTS

64.5.1 Denial of service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364


64.5.2 Connection hijacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
64.5.3 TCP veto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
64.6 TCP ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
64.7 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
64.8 TCP over wireless networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
64.9 Hardware implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
64.10Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
64.11Alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
64.12Checksum computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
64.12.1 TCP checksum for IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
64.12.2 TCP checksum for IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
64.12.3 Checksum offload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
64.13See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
64.14References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
64.15Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
64.16External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
64.16.1 RFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
64.16.2 Others . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

65 Transmission medium 370


65.1 Telecommunications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
65.1.1 Types of transmissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
65.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
65.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

66 Transport layer 372


66.1 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
66.2 Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
66.3 Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
66.4 Comparison of transport layer protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
66.5 Comparison of OSI transport protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
66.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
66.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

67 Tunneling protocol 375


67.1 Technical overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
67.2 Secure Shell tunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
67.3 Circumventing firewall policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
67.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
67.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
67.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
CONTENTS xxvii

68 User Datagram Protocol 378


68.1 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
68.2 Service ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
68.3 Packet structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
68.4 Checksum computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
68.4.1 IPv4 Pseudo Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
68.4.2 IPv6 Pseudo Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
68.5 Reliability and congestion control solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
68.6 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
68.7 Comparison of UDP and TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
68.8 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
68.9 Notes and references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
68.9.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
68.9.2 RFC references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
68.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

69 World Wide Web Consortium 382


69.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
69.2 Specification maturation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
69.2.1 Working draft (WD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
69.2.2 Candidate recommendation (CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.2.3 Proposed recommendation (PR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.2.4 W3C recommendation (REC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.2.5 Later revisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.2.6 Certification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.3 Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.4 Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.5 Criticism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
69.6 Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
69.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
69.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

70 X.25 386
70.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
70.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
70.2.1 Relation to the OSI Reference Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
70.2.2 User device support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
70.2.3 Error control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
70.3 Addressing and virtual circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
70.4 Billing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
70.5 X.25 packet types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
70.6 X.25 details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
xxviii CONTENTS

70.6.1 X.25 facilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389


70.6.2 X.25 protocol versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
70.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
70.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
70.9 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
70.10External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
70.11Text and image sources, contributors, and licenses . . . . . . . . . . . . . . . . . . . . . . . . . . 392
70.11.1 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
70.11.2 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
70.11.3 Content license . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Chapter 1

Algorithm

For other uses, see Algorithm (disambiguation). cisely defines a sequence of operations.”[11] which would
In mathematics and computer science, an algorithm include all computer programs, including programs that
( i /ˈælɡərɪðəm/ AL-gə-ri-dhəm) is a self-contained step- do not perform numeric calculations. Generally, a pro-
by-step set of operations to be performed. Algorithms gram is only an algorithm if it stops eventually.[12]
perform calculation, data processing, and/or automated
A prototypical example of an algorithm is Euclid’s algo-
reasoning tasks. rithm to determine the maximum common divisor of two
The words 'algorithm' and 'algorism' come from the integers; an example (there are others) is described by the
name al-Khwārizmī. Al-Khwārizmī (Persian: ‫ﺧﻮارزﻣﯽ‬, flow chart above and as an example in a later section.
c. 780–850) was a Persian mathematician, astronomer, Boolos & Jeffrey (1974, 1999) offer an informal meaning
geographer, and scholar. of the word in the following quotation:
An algorithm is an effective method that can be ex-
pressed within a finite amount of space and time[1]
No human being can write fast enough, or
and in a well-defined formal language[2] for calculat-
long enough, or small enough† ( †"smaller and
ing a function.[3] Starting from an initial state and ini-
smaller without limit ...you'd be trying to write
tial input (perhaps empty),[4] the instructions describe
on molecules, on atoms, on electrons”) to list
a computation that, when executed, proceeds through a
all members of an enumerably infinite set by
finite[5] number of well-defined successive states, eventu-
writing out their names, one after another, in
ally producing “output”[6] and terminating at a final end-
some notation. But humans can do something
ing state. The transition from one state to the next is
equally useful, in the case of certain enumer-
not necessarily deterministic; some algorithms, known as
ably infinite sets: They can give explicit instruc-
randomized algorithms, incorporate random input.[7]
tions for determining the nth member of the set,
The concept of algorithm has existed for centuries; how- for arbitrary finite n. Such instructions are to
ever, a partial formalization of what would become be given quite explicitly, in a form in which they
the modern algorithm began with attempts to solve the could be followed by a computing machine, or
Entscheidungsproblem (the “decision problem”) posed by a human who is capable of carrying out only
by David Hilbert in 1928. Subsequent formalizations very elementary operations on symbols.[13]
were framed as attempts to define "effective calculabil-
ity"[8] or “effective method";[9] those formalizations in-
An “enumerably infinite set” is one whose elements can
cluded the Gödel–Herbrand–Kleene recursive functions
be put into one-to-one correspondence with the integers.
of 1930, 1934 and 1935, Alonzo Church's lambda cal-
Thus, Boolos and Jeffrey are saying that an algorithm im-
culus of 1936, Emil Post's "Formulation 1" of 1936,
plies instructions for a process that “creates” output inte-
and Alan Turing's Turing machines of 1936–7 and 1939.
gers from an arbitrary “input” integer or integers that, in
Giving a formal definition of algorithms, corresponding
theory, can be arbitrarily large. Thus an algorithm can be
to the intuitive notion, remains a challenging problem.[10]
an algebraic equation such as y = m + n – two arbitrary
“input variables” m and n that produce an output y. But
various authors’ attempts to define the notion indicate that
1.1 Informal definition the word implies much more than this, something on the
order of (for the addition example):
For a detailed presentation of the various points of
view on the definition of “algorithm”, see Algorithm Precise instructions (in language understood
characterizations. by “the computer”)[14] for a fast, efficient,
“good”[15] process that specifies the “moves” of
An informal definition could be “a set of rules that pre- “the computer” (machine or human, equipped

1
2 CHAPTER 1. ALGORITHM

ENTRY and in a specified format.

The concept of algorithm is also used to define the notion


Euclid's algorithm for the of decidability. That notion is central for explaining how
greatest common divisor (gcd)
of two numbers formal systems come into being starting from a small set
of axioms and rules. In logic, the time that an algorithm
requires to complete cannot be measured, as it is not ap-
1 INPUT A, B parently related with our customary physical dimension.
From such uncertainties, that characterize ongoing work,
stems the unavailability of a definition of algorithm that
suits both concrete (in some sense) and abstract usage of
the term.

yes
2 B = 0?
1.2 Formalization
no
Algorithms are essential to the way computers process
data. Many computer programs contain algorithms that
yes detail the specific instructions a computer should perform
3 A > B?
(in a specific order) to carry out a specified task, such
as calculating employees’ paychecks or printing students’
no (< or =)
report cards. Thus, an algorithm can be considered to
4 B B-A be any sequence of operations that can be simulated by
a Turing-complete system. Authors who assert this the-
5 GOTO 2
sis include Minsky (1967), Savage (1987) and Gurevich
(2000):

6 A A-B
Minsky: “But we will also maintain, with
7 GOTO 2 Turing . . . that any procedure which could
“naturally” be called effective, can in fact be
realized by a (simple) machine. Although this
may seem extreme, the arguments . . . in its
8 PRINT A favor are hard to refute”.[19]

Gurevich: "...Turing’s informal argument


in favor of his thesis justifies a stronger thesis:
9 END every algorithm can be simulated by a Turing
machine ... according to Savage [1987], an al-
gorithm is a computational process defined by
Flow chart of an algorithm (Euclid’s algorithm) for calculating a Turing machine”.[20]
the greatest common divisor (g.c.d.) of two numbers a and b in
locations named A and B. The algorithm proceeds by successive
subtractions in two loops: IF the test B ≥ A yields “yes” (or true)
Typically, when an algorithm is associated with process-
(more accurately the number b in location B is greater than or ing information, data are read from an input source, writ-
equal to the number a in location A) THEN, the algorithm spec- ten to an output device, and/or stored for further process-
ifies B ← B − A (meaning the number b − a replaces the old ing. Stored data are regarded as part of the internal state
b). Similarly, IF A > B, THEN A ← A − B. The process termi- of the entity performing the algorithm. In practice, the
nates when (the contents of) B is 0, yielding the g.c.d. in A. (Al- state is stored in one or more data structures.
gorithm derived from Scott 2009:13; symbols and drawing style
from Tausworthe 1977).
For some such computational process, the algorithm must
be rigorously defined: specified in the way it applies in all
possible circumstances that could arise. That is, any con-
with the necessary internally contained in- ditional steps must be systematically dealt with, case-by-
formation and capabilities)[16] to find, de- case; the criteria for each case must be clear (and com-
code, and then process arbitrary input inte- putable).
gers/symbols m and n, symbols + and = ... Because an algorithm is a precise list of precise steps, the
and “effectively”[17] produce, in a “reasonable” order of computation is always crucial to the functioning
time,[18] output-integer y at a specified place of the algorithm. Instructions are usually assumed to be
1.3. IMPLEMENTATION 3

listed explicitly, and are described as starting “from the 1.3 Implementation
top” and going “down to the bottom”, an idea that is de-
scribed more formally by flow of control.
So far, this discussion of the formalization of an algo- Vcc
rithm has assumed the premises of imperative program-
ming. This is the most common conception, and it at-
tempts to describe a task in discrete, “mechanical” means.
Unique to this conception of formalized algorithms is the
assignment operation, setting the value of a variable. It Q
derives from the intuition of "memory" as a scratchpad.
There is an example below of such an assignment.
A
For some alternate conceptions of what constitutes an al-
gorithm see functional programming and logic program-
B
ming.
GND
1.2.1 Expressing algorithms
Logical NAND algorithm implemented electronically in 7400
Algorithms can be expressed in many kinds of notation, chip
including natural languages, pseudocode, flowcharts,
drakon-charts, programming languages or control tables Most algorithms are intended to be implemented as
(processed by interpreters). Natural language expressions computer programs. However, algorithms are also im-
of algorithms tend to be verbose and ambiguous, and are plemented by other means, such as in a biological neural
rarely used for complex or technical algorithms. Pseu- network (for example, the human brain implementing
docode, flowcharts, drakon-charts and control tables are arithmetic or an insect looking for food), in an electrical
structured ways to express algorithms that avoid many of circuit, or in a mechanical device.
the ambiguities common in natural language statements.
Programming languages are primarily intended for ex-
pressing algorithms in a form that can be executed by a 1.4 Computer algorithms
computer, but are often used as a way to define or docu-
ment algorithms.
In computer systems, an algorithm is basically an instance
There is a wide variety of representations possible and of logic written in software by software developers to be
one can express a given Turing machine program as effective for the intended “target” computer(s) to produce
a sequence of machine tables (see more at finite state output from given (perhaps null) input. An optimal al-
machine, state transition table and control table), as gorithm, even running in old hardware, would produce
flowcharts and drakon-charts (see more at state diagram), faster results than a non-optimal (higher time complex-
or as a form of rudimentary machine code or assembly ity) algorithm for the same purpose, running in more ef-
code called “sets of quadruples” (see more at Turing ma- ficient hardware; that is why algorithms, like computer
chine). hardware, are considered technology.
Representations of algorithms can be classed into three “Elegant” (compact) programs, “good” (fast) programs :
accepted levels of Turing machine description:[21] The notion of “simplicity and elegance” appears infor-
mally in Knuth and precisely in Chaitin:
1 High-level description "...prose to describe an algo-
rithm, ignoring the implementation details. At this Knuth: ". . .we want good algorithms in some
level we do not need to mention how the machine loosely defined aesthetic sense. One criterion .
manages its tape or head.” . . is the length of time taken to perform the al-
gorithm . . .. Other criteria are adaptability of
2 Implementation description "...prose used to define the algorithm to computers, its simplicity and
the way the Turing machine uses its head and the elegance, etc”[22]
way that it stores data on its tape. At this level we do
not give details of states or transition function.” Chaitin: " . . . a program is 'elegant,' by which
I mean that it’s the smallest possible program
3 Formal description Most detailed, “lowest level”, for producing the output that it does”[23]
gives the Turing machine’s “state table”.
Chaitin prefaces his definition with: “I'll show you can't
For an example of the simple algorithm “Add m+n” de- prove that a program is 'elegant'"—such a proof would
scribed in all three levels, see Algorithm#Examples. solve the Halting problem (ibid).
4 CHAPTER 1. ALGORITHM

A computer (or human “computor”[25] ) is a restricted


type of machine, a “discrete deterministic mechani-
cal device”[26] that blindly follows its instructions.[27]
Melzak’s and Lambek’s primitive models[28] reduced this
notion to four elements: (i) discrete, distinguishable lo-
cations, (ii) discrete, indistinguishable counters[29] (iii) an
agent, and (iv) a list of instructions that are effective rel-
ative to the capability of the agent.[30]
Minsky describes a more congenial variation of Lam-
bek’s “abacus” model in his “Very Simple Bases for
Computability".[31] Minsky’s machine proceeds sequen-
tially through its five (or six, depending on how one
counts) instructions, unless either a conditional IF–
THEN GOTO or an unconditional GOTO changes pro-
gram flow out of sequence. Besides HALT, Min-
sky’s machine includes three assignment (replacement,
substitution)[32] operations: ZERO (e.g. the contents
of location replaced by 0: L ← 0), SUCCESSOR
(e.g. L ← L+1), and DECREMENT (e.g. L ←
L − 1).[33] Rarely must a programmer write “code”
with such a limited instruction set. But Minsky
shows (as do Melzak and Lambek) that his machine is
Turing complete with only four general types of instruc-
tions: conditional GOTO, unconditional GOTO, assign-
ment/replacement/substitution, and HALT.[34]
Simulation of an algorithm: computer (computor) lan-
guage: Knuth advises the reader that “the best way to
learn an algorithm is to try it . . . immediately take pen
and paper and work through an example”.[35] But what
about a simulation or execution of the real thing? The
programmer must translate the algorithm into a language
that the simulator/computer/computor can effectively ex-
Flowchart examples of the canonical Böhm-Jacopini structures: ecute. Stone gives an example of this: when comput-
the SEQUENCE (rectangles descending the page), the WHILE- ing the roots of a quadratic equation the computor must
DO and the IF-THEN-ELSE. The three structures are made of know how to take a square root. If they don't, then the
the primitive conditional GOTO (IF test=true THEN GOTO step
algorithm, to be effective, must provide a set of rules for
xxx) (a diamond), the unconditional GOTO (rectangle), various
assignment operators (rectangle), and HALT (rectangle). Nest-
extracting a square root.[36]
ing of these structures inside assignment-blocks result in complex This means that the programmer must know a “language”
diagrams (cf Tausworthe 1977:100,114). that is effective relative to the target computing agent
(computer/computor).
But what model should be used for the simulation? Van
Algorithm versus function computable by an algorithm: Emde Boas observes “even if we base complexity theory
For a given function multiple algorithms may exist. This on abstract instead of concrete machines, arbitrariness of
is true, even without expanding the available instruction the choice of a model remains. It is at this point that
set available to the programmer. Rogers observes that the notion of simulation enters”.[37] When speed is being
“It is . . . important to distinguish between the notion measured, the instruction set matters. For example, the
of algorithm, i.e. procedure and the notion of function subprogram in Euclid’s algorithm to compute the remain-
computable by algorithm, i.e. mapping yielded by pro- der would execute much faster if the programmer had a
cedure. The same function may have several different "modulus" instruction available rather than just subtrac-
algorithms”.[24] tion (or worse: just Minsky’s “decrement”).
Unfortunately there may be a tradeoff between goodness Structured programming, canonical structures: Per the
(speed) and elegance (compactness)—an elegant pro- Church–Turing thesis, any algorithm can be computed
gram may take more steps to complete a computation by a model known to be Turing complete, and per
than one less elegant. An example that uses Euclid’s al- Minsky’s demonstrations, Turing completeness requires
gorithm appears below. only four instruction types—conditional GOTO, uncon-
ditional GOTO, assignment, HALT. Kemeny and Kurtz
Computers (and computors), models of computation:
1.5. EXAMPLES 5

observe that, while “undisciplined” use of unconditional this follows a simple algorithm, which can be stated in a
GOTOs and conditional IF-THEN GOTOs can result in high-level description English prose, as:
"spaghetti code", a programmer can write structured pro- High-level description:
grams using only these instructions; on the other hand “it
is also possible, and not too hard, to write badly structured
programs in a structured language”.[38] Tausworthe aug- 1. If there are no numbers in the set then there is no
ments the three Böhm-Jacopini canonical structures: [39] highest number.
SEQUENCE, IF-THEN-ELSE, and WHILE-DO, with
two more: DO-WHILE and CASE.[40] An additional 2. Assume the first number in the set is the largest num-
benefit of a structured program is that it lends itself to ber in the set.
[41]
proofs of correctness using mathematical induction.
3. For each remaining number in the set: if this number
Canonical flowchart symbols[42] : The graphical aide is larger than the current largest number, consider
called a flowchart offers a way to describe and document this number to be the largest number in the set.
an algorithm (and a computer program of one). Like pro-
gram flow of a Minsky machine, a flowchart always starts 4. When there are no numbers left in the set to iterate
at the top of a page and proceeds down. Its primary sym- over, consider the current largest number to be the
bols are only four: the directed arrow showing program largest number of the set.
flow, the rectangle (SEQUENCE, GOTO), the diamond
(IF-THEN-ELSE), and the dot (OR-tie). The Böhm– (Quasi-)formal description: Written in prose but much
Jacopini canonical structures are made of these primitive closer to the high-level language of a computer program,
shapes. Sub-structures can “nest” in rectangles, but only the following is the more formal coding of the algorithm
if a single exit occurs from the superstructure. The sym- in pseudocode or pidgin code:
bols, and their use to build the canonical structures, are
shown in the diagram. Algorithm LargestNumber Input: A list of numbers L.
Output: The largest number in the list L. if L.size = 0
return null largest ← L[0] for each item in L, do if item
> largest, then largest ← item return largest
1.5 Examples
• "←" is a shorthand for “changes to”. For instance, "largest
Further information: List of algorithms ← item" means that the value of largest changes to the
value of item.

• "return" terminates the algorithm and outputs the value


that follows.
1.5.1 Algorithm example

1.5.2 Euclid’s algorithm

Further information: Euclid’s algorithm


Euclid’s algorithm to compute the greatest common
divisor (GCD) to two numbers appears as Proposition
II in Book VII (“Elementary Number Theory”) of his
Elements.[43] Euclid poses the problem thus: “Given two
numbers not prime to one another, to find their greatest
common measure”. He defines “A number [to be] a mul-
titude composed of units": a counting number, a posi-
tive integer not including zero. To “measure” is to place
a shorter measuring length s successively (q times) along
longer length l until the remaining portion r is less than the
shorter length s.[44] In modern words, remainder r = l −
q×s, q being the quotient, or remainder r is the “modulus”,
An animation of the quicksort algorithm sorting an array of ran-
the integer-fractional part left over after the division.[45]
domized values. The red bars mark the pivot element; at the start
For Euclid’s method to succeed, the starting lengths must
of the animation, the element farthest to the right hand side is
chosen as the pivot. satisfy two requirements: (i) the lengths must not be zero,
AND (ii) the subtraction must be “proper”; i.e., a test
One of the simplest algorithms is to find the largest num- must guarantee that the smaller of the two numbers is sub-
ber in a list of numbers of random order. Finding the so- tracted from the larger (alternately, the two can be equal
lution requires looking at every number in the list. From so their subtraction yields zero).
6 CHAPTER 1. ALGORITHM

Computer language for Euclid’s algorithm

Only a few instruction types are required to execute Eu-


clid’s algorithm—some logical tests (conditional GOTO),
unconditional GOTO, assignment (replacement), and
subtraction.

• A location is symbolized by upper case letter(s), e.g.


S, A, etc.
• The varying quantity (number) in a location is writ-
ten in lower case letter(s) and (usually) associated
with the location’s name. For example, location L
at the start might contain the number l = 3009.

An inelegant program for Euclid’s algorithm

The following algorithm is framed as Knuth’s four-step


version of Euclid’s and Nicomachus’, but, rather than us-
The example-diagram of Euclid’s algorithm from T.L. Heath ing division to find the remainder, it uses successive sub-
(1908), with more detail added. Euclid does not go beyond a tractions of the shorter length s from the remaining length
third measuring, and gives no numerical examples. Nicomachus r until r is less than s. The high-level description, shown
gives the example of 49 and 21: “I subtract the less from the in boldface, is adapted from Knuth 1973:2–4:
greater; 28 is left; then again I subtract from this the same 21
(for this is possible); 7 is left; I subtract this from 21, 14 is left; INPUT:
from which I again subtract 7 (for this is possible); 7 is left, but 1 [Into two locations L and S put the numbers l and s
7 cannot be subtracted from 7.” Heath comments that, “The last
that represent the two lengths]: INPUT L, S 2 [Initial-
phrase is curious, but the meaning of it is obvious enough, as also
the meaning of the phrase about ending 'at one and the same
ize R: make the remaining length r equal to the start-
number'."(Heath 1908:300). ing/initial/input length l]: R ← L
E0: [Ensure r ≥ s.]

Euclid’s original proof adds a third requirement: the two 3 [Ensure the smaller of the two numbers is in S and the
lengths must not be prime to one another. Euclid stipu- larger in R]: IF R > S THEN the contents of L is the
lated this so that he could construct a reductio ad absur- larger number so skip over the exchange-steps 4, 5 and
dum proof that the two numbers’ common measure is in 6: GOTO step 6 ELSE swap the contents of R and S. 4
fact the greatest.[46] While Nicomachus’ algorithm is the L ← R (this first step is redundant, but is useful for later
same as Euclid’s, when the numbers are prime to one an- discussion). 5 R ← S 6 S ← L
other, it yields the number “1” for their common measure. E1: [Find remainder]: Until the remaining length r in
So, to be precise, the following is really Nicomachus’ al- R is less than the shorter length s in S, repeatedly subtract
gorithm. the measuring number s in S from the remaining length r
in R.
7 IF S > R THEN done measuring so GOTO 10 ELSE
measure again, 8 R ← R − S 9 [Remainder-loop]: GOTO
7.
E2: [Is the remainder zero?]: EITHER (i) the last mea-
sure was exact, the remainder in R is zero, and the pro-
gram can halt, OR (ii) the algorithm must continue: the
last measure left a remainder in R less than measuring
number in S.
10 IF R = 0 THEN done so GOTO step 15 ELSE CON-
TINUE TO step 11,
A graphical expression of Euclid’s algorithm to find the greatest E3: [Interchange s and r]: The nut of Euclid’s algo-
common divisor for 1599 and 650. rithm. Use remainder r to measure what was previously
1599 = 650×2 + 299 650 = 299×2 + 52 299 = 52×5 + 39 52 smaller number s; L serves as a temporary location.
= 39×1 + 13 39 = 13×3 + 0
11 L ← R 12 R ← S 13 S ← L 14 [Repeat the measuring
process]: GOTO 7
1.5. EXAMPLES 7

of instructions. The flowchart of “Elegant” can be found


at the top of this article. In the (unstructured) Basic lan-
guage, the steps are numbered, and the instruction LET
[] = [] is the assignment instruction symbolized by ←.
5 REM Euclid’s algorithm for greatest common divisor
6 PRINT “Type two integers greater than 0” 10 INPUT
A,B 20 IF B=0 THEN GOTO 80 30 IF A > B THEN
GOTO 60 40 LET B=B-A 50 GOTO 20 60 LET A=A-B
70 GOTO 20 80 PRINT A 90 END

The following version can be used with Object Oriented


languages:
// Euclid’s algorithm for greatest common divisor in-
teger euclidAlgorithm (int A, int B){ A=Math.abs(A);
B=Math.abs(B); while (B!=0){ if (A>B) A=A-B; else
B=B-A; } return A; }

How “Elegant” works: In place of an outer “Euclid loop”,


“Elegant” shifts back and forth between two “co-loops”,
an A > B loop that computes A ← A − B, and a B ≤
A loop that computes B ← B − A. This works because,
when at last the minuend M is less than or equal to the
subtrahend S ( Difference = Minuend − Subtrahend), the
minuend can become s (the new measuring length) and
the subtrahend can become the new r (the length to be
measured); in other words the “sense” of the subtraction
reverses.

1.5.3 Testing the Euclid algorithms

Does an algorithm do what its author wants it to do? A


few test cases usually suffice to confirm core function-
ality. One source[47] uses 3009 and 884. Knuth sug-
gested 40902, 24140. Another interesting case is the two
relatively prime numbers 14157 and 5950.
But exceptional cases must be identified and tested. Will
“Inelegant” is a translation of Knuth’s version of the algorithm
“Inelegant” perform properly when R > S, S > R, R = S?
with a subtraction-based remainder-loop replacing his use of di-
Ditto for “Elegant": B > A, A > B, A = B? (Yes to all).
vision (or a “modulus” instruction). Derived from Knuth 1973:2–
What happens when one number is zero, both numbers
4. Depending on the two numbers “Inelegant” may compute the
g.c.d. in fewer steps than “Elegant”. are zero? (“Inelegant” computes forever in all cases; “El-
egant” computes forever when A = 0.) What happens if
negative numbers are entered? Fractional numbers? If
OUTPUT: the input numbers, i.e. the domain of the function com-
15 [Done. S contains the greatest common divisor]: puted by the algorithm/program, is to include only posi-
PRINT S tive integers including zero, then the failures at zero indi-
cate that the algorithm (and the program that instantiates
DONE: it) is a partial function rather than a total function. A no-
16 HALT, END, STOP. table failure due to exceptions is the Ariane 5 Flight 501
rocket failure (4 June 1996).
Proof of program correctness by use of mathemati-
An elegant program for Euclid’s algorithm cal induction: Knuth demonstrates the application of
mathematical induction to an “extended” version of Eu-
The following version of Euclid’s algorithm requires only clid’s algorithm, and he proposes “a general method ap-
six core instructions to do what thirteen are required to plicable to proving the validity of any algorithm”.[48]
do by “Inelegant"; worse, “Inelegant” requires more types Tausworthe proposes that a measure of the complexity
8 CHAPTER 1. ALGORITHM

of a program be the length of its correctness proof.[49] not counted, or O(n) if it is counted.
Different algorithms may complete the same task with a
different set of instructions in less or more time, space,
1.5.4 Measuring and improving the Euclid or 'effort' than others. For example, a binary search al-
algorithms gorithm (with cost O(log n) ) outperforms a sequential
search (cost O(n) ) when used for table lookups on sorted
Elegance (compactness) versus goodness (speed): With lists or arrays.
only six core instructions, “Elegant” is the clear winner,
compared to “Inelegant” at thirteen instructions. How-
ever, “Inelegant” is faster (it arrives at HALT in fewer
steps). Algorithm analysis[50] indicates why this is the
case: “Elegant” does two conditional tests in every sub- 1.6.1 Formal versus empirical
traction loop, whereas “Inelegant” only does one. As the
algorithm (usually) requires many loop-throughs, on av- Main articles: Empirical algorithmics, Profiling (com-
erage much time is wasted doing a “B = 0?" test that is puter programming), and Program optimization
needed only after the remainder is computed.
Can the algorithms be improved?: Once the programmer The analysis and study of algorithms is a discipline of
judges a program “fit” and “effective”—that is, it com- computer science, and is often practiced abstractly with-
putes the function intended by its author—then the ques- out the use of a specific programming language or im-
tion becomes, can it be improved? plementation. In this sense, algorithm analysis resem-
The compactness of “Inelegant” can be improved by bles other mathematical disciplines in that it focuses on
the elimination of five steps. But Chaitin proved that the underlying properties of the algorithm and not on
compacting an algorithm cannot be automated by a the specifics of any particular implementation. Usually
generalized algorithm;[51] rather, it can only be done pseudocode is used for analysis as it is the simplest and
heuristically; i.e., by exhaustive search (examples to be most general representation. However, ultimately, most
found at Busy beaver), trial and error, cleverness, in- algorithms are usually implemented on particular hard-
sight, application of inductive reasoning, etc. Observe ware / software platforms and their algorithmic efficiency
that steps 4, 5 and 6 are repeated in steps 11, 12 and is eventually put to the test using real code. For the solu-
13. Comparison with “Elegant” provides a hint that these tion of a “one off” problem, the efficiency of a particular
steps, together with steps 2 and 3, can be eliminated. This algorithm may not have significant consequences (unless
reduces the number of core instructions from thirteen to n is extremely large) but for algorithms designed for fast
eight, which makes it “more elegant” than “Elegant”, at interactive, commercial or long life scientific usage it may
nine steps. be critical. Scaling from small n to large n frequently ex-
poses inefficient algorithms that are otherwise benign.
The speed of “Elegant” can be improved by moving the
“B=0?" test outside of the two subtraction loops. This Empirical testing is useful because it may uncover unex-
change calls for the addition of three instructions (B = 0?, pected interactions that affect performance. Benchmarks
A = 0?, GOTO). Now “Elegant” computes the example- may be used to compare before/after potential improve-
numbers faster; whether this is always the case for any ments to an algorithm after program optimization.
given A, B and R, S would require a detailed analysis.

1.6 Algorithmic analysis 1.6.2 Execution efficiency

Main article: Analysis of algorithms Main article: Algorithmic efficiency

It is frequently important to know how much of a par- To illustrate the potential improvements possible even in
ticular resource (such as time or storage) is theoretically well established algorithms, a recent significant innova-
required for a given algorithm. Methods have been devel- tion, relating to FFT algorithms (used heavily in the field
oped for the analysis of algorithms to obtain such quanti- of image processing), can decrease processing time up
tative answers (estimates); for example, the sorting algo- to 1,000 times for applications like medical imaging.[52]
rithm above has a time requirement of O(n), using the big In general, speed improvements depend on special prop-
O notation with n as the length of the list. At all times the erties of the problem, which are very common in prac-
algorithm only needs to remember two values: the largest tical applications.[53] Speedups of this magnitude enable
number found so far, and its current position in the input computing devices that make extensive use of image pro-
list. Therefore, it is said to have a space requirement of cessing (like digital cameras and medical equipment) to
O(1), if the space required to store the input numbers is consume less power.
1.7. CLASSIFICATION 9

1.7 Classification problems have no parallel algorithms, and are called


inherently serial problems.
There are various ways to classify algorithms, each with Deterministic or non-deterministic Deterministic al-
its own merits. gorithms solve the problem with exact decision
at every step of the algorithm whereas non-
1.7.1 By implementation deterministic algorithms solve problems via guess-
ing although typical guesses are made more accurate
One way to classify algorithms is by implementation through the use of heuristics.
means. Exact or approximate While many algorithms reach an
exact solution, approximation algorithms seek an
Recursion A recursive algorithm is one that invokes approximation that is close to the true solution. Ap-
(makes reference to) itself repeatedly until a cer- proximation may use either a deterministic or a ran-
tain condition (also known as termination condition) dom strategy. Such algorithms have practical value
matches, which is a method common to functional for many hard problems.
programming. Iterative algorithms use repetitive
constructs like loops and sometimes additional data Quantum algorithm They run on a realistic model of
structures like stacks to solve the given problems. quantum computation. The term is usually used for
Some problems are naturally suited for one imple- those algorithms which seem inherently quantum, or
mentation or the other. For example, towers of use some essential feature of quantum computation
Hanoi is well understood using recursive implemen- such as quantum superposition or quantum entan-
tation. Every recursive version has an equivalent glement.
(but possibly more or less complex) iterative version,
and vice versa.
1.7.2 By design paradigm
Logical An algorithm may be viewed as controlled
logical deduction. This notion may be expressed Another way of classifying algorithms is by their design
as: Algorithm = logic + control.[54] The logic com- methodology or paradigm. There is a certain number of
ponent expresses the axioms that may be used in paradigms, each different from the other. Furthermore,
the computation and the control component deter- each of these categories include many different types of
mines the way in which deduction is applied to the algorithms. Some common paradigms are:
axioms. This is the basis for the logic programming
paradigm. In pure logic programming languages the Brute-force or exhaustive search This is the naive
control component is fixed and algorithms are spec- method of trying every possible solution to see
ified by supplying only the logic component. The which is best.[55]
appeal of this approach is the elegant semantics: a
change in the axioms has a well-defined change in Divide and conquer A divide and conquer algorithm
the algorithm. repeatedly reduces an instance of a problem to one
or more smaller instances of the same problem (usu-
Serial, parallel or distributed Algorithms are usually ally recursively) until the instances are small enough
discussed with the assumption that computers exe- to solve easily. One such example of divide and
cute one instruction of an algorithm at a time. Those conquer is merge sorting. Sorting can be done on
computers are sometimes called serial computers. each segment of data after dividing data into seg-
An algorithm designed for such an environment is ments and sorting of entire data can be obtained in
called a serial algorithm, as opposed to parallel al- the conquer phase by merging the segments. A sim-
gorithms or distributed algorithms. Parallel algo- pler variant of divide and conquer is called a de-
rithms take advantage of computer architectures crease and conquer algorithm, that solves an iden-
where several processors can work on a problem at tical subproblem and uses the solution of this sub-
the same time, whereas distributed algorithms uti- problem to solve the bigger problem. Divide and
lize multiple machines connected with a network. conquer divides the problem into multiple subprob-
Parallel or distributed algorithms divide the prob- lems and so the conquer stage is more complex than
lem into more symmetrical or asymmetrical sub- decrease and conquer algorithms. An example of
problems and collect the results back together. The decrease and conquer algorithm is the binary search
resource consumption in such algorithms is not only algorithm.
processor cycles on each processor but also the com-
munication overhead between the processors. Some Search and enumeration Many problems (such as
sorting algorithms can be parallelized efficiently, but playing chess) can be modeled as problems on
their communication overhead is expensive. Itera- graphs. A graph exploration algorithm specifies
tive algorithms are generally parallelizable. Some rules for moving around a graph and is useful for
10 CHAPTER 1. ALGORITHM

such problems. This category also includes search such a problem if it can be proved that all restric-
algorithms, branch and bound enumeration and tions for integer values are superficial, i.e., the solu-
backtracking. tions satisfy these restrictions anyway. In the general
case, a specialized algorithm or an algorithm that
Randomized algorithm Such algorithms make some finds approximate solutions is used, depending on
choices randomly (or pseudo-randomly). They can the difficulty of the problem.
be very useful in finding approximate solutions for
problems where finding exact solutions can be im- Dynamic programming When a problem shows
practical (see heuristic method below). For some optimal substructures — meaning the optimal
of these problems, it is known that the fastest ap- solution to a problem can be constructed from op-
proximations must involve some randomness.[56] timal solutions to subproblems — and overlapping
Whether randomized algorithms with polynomial subproblems, meaning the same subproblems are
time complexity can be the fastest algorithms for used to solve many different problem instances,
some problems is an open question known as the P a quicker approach called dynamic programming
versus NP problem. There are two large classes of avoids recomputing solutions that have already
such algorithms: been computed. For example, Floyd–Warshall
algorithm, the shortest path to a goal from a
1. Monte Carlo algorithms return a correct answer with vertex in a weighted graph can be found by using
high-probability. E.g. RP is the subclass of these the shortest path to the goal from all adjacent
that run in polynomial time. vertices. Dynamic programming and memoization
go together. The main difference between dynamic
2. Las Vegas algorithms always return the correct an- programming and divide and conquer is that sub-
swer, but their running time is only probabilistically problems are more or less independent in divide and
bound, e.g. ZPP. conquer, whereas subproblems overlap in dynamic
programming. The difference between dynamic
Reduction of complexity This technique involves solv- programming and straightforward recursion is in
ing a difficult problem by transforming it into a bet- caching or memoization of recursive calls. When
ter known problem for which we have (hopefully) subproblems are independent and there is no repe-
asymptotically optimal algorithms. The goal is to tition, memoization does not help; hence dynamic
find a reducing algorithm whose complexity is not programming is not a solution for all complex
dominated by the resulting reduced algorithm’s. For problems. By using memoization or maintaining
example, one selection algorithm for finding the me- a table of subproblems already solved, dynamic
dian in an unsorted list involves first sorting the list programming reduces the exponential nature of
(the expensive portion) and then pulling out the mid- many problems to polynomial complexity.
dle element in the sorted list (the cheap portion).
The greedy method A greedy algorithm is similar to a
This technique is also known as transform and con-
dynamic programming algorithm in that it works
quer.
by examining substructures, in this case not of the
problem but of a given solution. Such algorithms
start with some solution, which may be given or
1.7.3 Optimization problems have been constructed in some way, and improve it
by making small modifications. For some problems
For optimization problems there is a more specific clas-
they can find the optimal solution while for others
sification of algorithms; an algorithm for such problems
they stop at local optima, that is, at solutions that
may fall into one or more of the general categories de-
cannot be improved by the algorithm but are not op-
scribed above as well as into one of the following:
timum. The most popular use of greedy algorithms
is for finding the minimal spanning tree where find-
Linear programming When searching for optimal so- ing the optimal solution is possible with this method.
lutions to a linear function bound to linear equal- Huffman Tree, Kruskal, Prim, Sollin are greedy al-
ity and inequality constraints, the constraints of the gorithms that can solve this optimization problem.
problem can be used directly in producing the op-
timal solutions. There are algorithms that can solve The heuristic method In optimization problems,
any problem in this category, such as the popular heuristic algorithms can be used to find a solu-
simplex algorithm.[57] Problems that can be solved tion close to the optimal solution in cases where
with linear programming include the maximum flow finding the optimal solution is impractical. These
problem for directed graphs. If a problem addition- algorithms work by getting closer and closer to the
ally requires that one or more of the unknowns must optimal solution as they progress. In principle, if
be an integer then it is classified in integer program- run for an infinite amount of time, they will find
ming. A linear programming algorithm can solve the optimal solution. Their merit is that they can
1.8. CONTINUOUS ALGORITHMS 11

find a solution very close to the optimal solution p. 107). This is closely related to the study of methods
in a relatively short time. Such algorithms include of hypercomputation.
local search, tabu search, simulated annealing, and
genetic algorithms. Some of them, like simulated
annealing, are non-deterministic algorithms while 1.8 Continuous algorithms
others, like tabu search, are deterministic. When a
bound on the error of the non-optimal solution is
known, the algorithm is further categorized as an The adjective “continuous” when applied to the word “al-
approximation algorithm. gorithm” can mean:

• An algorithm operating on data that represents con-


1.7.4 By field of study tinuous quantities, even though this data is repre-
sented by discrete approximations—such algorithms
See also: List of algorithms are studied in numerical analysis; or

• An algorithm in the form of a differential equation


Every field of science has its own problems and that operates continuously on the data, running on
needs efficient algorithms. Related problems in one an analog computer.[58]
field are often studied together. Some example
classes are search algorithms, sorting algorithms, merge
algorithms, numerical algorithms, graph algorithms,
string algorithms, computational geometric algorithms, 1.9 Legal issues
combinatorial algorithms, medical algorithms, machine
learning, cryptography, data compression algorithms and See also: Software patents for a general
parsing techniques. overview of the patentability of software, in-
cluding computer-implemented algorithms.
Fields tend to overlap with each other, and algorithm ad-
vances in one field may improve those of other, some-
times completely unrelated, fields. For example, dynamic Algorithms, by themselves, are not usually patentable. In
programming was invented for optimization of resource the United States, a claim consisting solely of simple ma-
consumption in industry, but is now used in solving a nipulations of abstract concepts, numbers, or signals does
broad range of problems in many fields. not constitute “processes” (USPTO 2006), and hence al-
gorithms are not patentable (as in Gottschalk v. Benson).
However, practical applications of algorithms are some-
1.7.5 By complexity times patentable. For example, in Diamond v. Diehr, the
application of a simple feedback algorithm to aid in the
See also: Complexity class and Parameterized complex- curing of synthetic rubber was deemed patentable. The
ity patenting of software is highly controversial, and there
are highly criticized patents involving algorithms, espe-
cially data compression algorithms, such as Unisys' LZW
Algorithms can be classified by the amount of time they patent.
need to complete compared to their input size. There is
a wide variety: some algorithms complete in linear time Additionally, some cryptographic algorithms have export
relative to input size, some do so in an exponential amount restrictions (see export of cryptography).
of time or even worse, and some never halt. Additionally,
some problems may have multiple algorithms of differ-
ing complexity, while other problems might have no algo- 1.10 Etymology
rithms or no known efficient algorithms. There are also
mappings from some problems to other problems. Ow- The words 'algorithm' and 'algorism' come from the
ing to this, it was found to be more suitable to classify name al-Khwārizmī. Al-Khwārizmī (Persian: ‫ﺧﻮارزﻣﯽ‬,
the problems themselves instead of the algorithms into c. 780–850) was a Persian mathematician, astronomer,
equivalence classes based on the complexity of the best geographer, and scholar in the House of Wisdom in
possible algorithms for them. Baghdad, whose name means 'the native of Khwarezm',
Burgin (2005, p. 24) uses a generalized definition of al- a region that was part of Greater Iran and is now in
gorithms that relaxes the common requirement that the Uzbekistan.[59][60] About 825, he wrote a treatise in the
output of the algorithm that computes a function must Arabic language, which was translated into Latin in the
be determined after a finite number of steps. He de- 12th century under the title Algoritmi de numero Indorum.
fines a super-recursive class of algorithms as “a class of This title means “Algoritmi on the numbers of the Indi-
algorithms in which it is possible to compute functions ans”, where “Algoritmi” was the translator’s Latinization
not computable by any Turing machine” (Burgin 2005, of Al-Khwarizmi’s name.[61] Al-Khwarizmi was the most
12 CHAPTER 1. ALGORITHM

widely read mathematician in Europe in the late Middle 1.11.4 Mechanical contrivances with dis-
Ages, primarily through his other book, the Algebra.[62] crete states
In late medieval Latin, algorismus, English 'algorism', the
corruption of his name, simply meant the “decimal num- The clock: Bolter credits the invention of the weight-
ber system”. In the 15th century, under the influence driven clock as “The key invention [of Europe in the Mid-
of the Greek word ἀριθμός 'number' (cf. 'arithmetic'), dle Ages]", in particular the verge escapement[68] that
the Latin word was altered to algorithmus, and the corre- provides us with the tick and tock of a mechanical clock.
sponding English term 'algorithm' is first attested in the “The accurate automatic machine”[69] led immediately
17th century; the modern sense was introduced in the to “mechanical automata" beginning in the 13th century
19th century.[63] and finally to “computational machines”—the difference
engine and analytical engines of Charles Babbage and
Countess Ada Lovelace, mid-19th century.[70] Lovelace
1.11 History: Development of the is credited with the first creation of an algorithm intended
for processing on a computer – Babbage’s analytical en-
notion of “algorithm” gine, the first device considered a real Turing-complete
computer instead of just a calculator – and is sometimes
1.11.1 Ancient Near East called “history’s first programmer” as a result, though a
full implementation of Babbage’s second device would
Algorithms were used in ancient Greece. Two exam- not be realized until decades after her lifetime.
ples are the Sieve of Eratosthenes, which was described
Logical machines 1870—Stanley Jevons' “logical abacus”
in Introduction to Arithmetic by Nicomachus,[64][65]:Ch 9.2
and “logical machine”: The technical problem was to re-
and the Euclidean algorithm, which was first described
duce Boolean equations when presented in a form similar
in Euclid’s Elements (c. 300 BC).[65]:Ch 9.1 Babylonian
to what are now known as Karnaugh maps. Jevons (1880)
clay tablets describe and employ algorithmic procedures
describes first a simple “abacus” of “slips of wood fur-
to compute the time and place of significant astronomical
[66] nished with pins, contrived so that any part or class of the
events.
[logical] combinations can be picked out mechanically .
. . More recently however I have reduced the system to a
1.11.2 Discrete and distinguishable sym- completely mechanical form, and have thus embodied the
whole of the indirect process of inference in what may be
bols called a Logical Machine" His machine came equipped
with “certain moveable wooden rods” and “at the foot are
Tally-marks: To keep track of their flocks, their sacks
21 keys like those of a piano [etc] . . .”. With this ma-
of grain and their money the ancients used tallying: accu-
chine he could analyze a "syllogism or any other simple
mulating stones or marks scratched on sticks, or making
logical argument”.[71]
discrete symbols in clay. Through the Babylonian and
Egyptian use of marks and symbols, eventually Roman This machine he displayed in 1870 before the Fellows of
numerals and the abacus evolved (Dilson, p. 16–41). the Royal Society.[72] Another logician John Venn, how-
Tally marks appear prominently in unary numeral system ever, in his 1881 Symbolic Logic, turned a jaundiced eye
arithmetic used in Turing machine and Post–Turing ma- to this effort: “I have no high estimate myself of the in-
chine computations. terest or importance of what are sometimes called log-
ical machines ... it does not seem to me that any con-
trivances at present known or likely to be discovered re-
1.11.3 Manipulation of symbols as “place ally deserve the name of logical machines"; see more at
holders” for numbers: algebra Algorithm characterizations. But not to be outdone he
too presented “a plan somewhat analogous, I apprehend,
The work of the ancient Greek geometers (Euclidean al- to Prof. Jevon’s abacus ... [And] [a]gain, correspond-
gorithm), the Indian mathematician Brahmagupta, and ing to Prof. Jevons’s logical machine, the following con-
the Islamic mathematics Al-Khwarizmi (from whose trivance may be described. I prefer to call it merely a
name the terms "algorism" and “algorithm” are derived), logical-diagram machine ... but I suppose that it could do
and Western European mathematicians culminated in very completely all that can be rationally expected of any
Leibniz's notion of the calculus ratiocinator (ca 1680): logical machine”.[73]
Jacquard loom, Hollerith punch cards, telegraphy and
A good century and a half ahead of his telephony—the electromechanical relay: Bell and Newell
time, Leibniz proposed an algebra of logic, an (1971) indicate that the Jacquard loom (1801), precursor
algebra that would specify the rules for manip- to Hollerith cards (punch cards, 1887), and “telephone
ulating logical concepts in the manner that or- switching technologies” were the roots of a tree lead-
dinary algebra specifies the rules for manipu- ing to the development of the first computers.[74] By the
lating numbers.[67] mid-19th century the telegraph, the precursor of the tele-
1.11. HISTORY: DEVELOPMENT OF THE NOTION OF “ALGORITHM” 13

phone, was in use throughout the world, its discrete and succeed). In rapid succession the following appeared:
distinguishable encoding of letters as “dots and dashes” a Alonzo Church, Stephen Kleene and J.B. Rosser's λ-
common sound. By the late 19th century the ticker tape calculus[80] a finely honed definition of “general recur-
(ca 1870s) was in use, as was the use of Hollerith cards sion” from the work of Gödel acting on suggestions
in the 1890 U.S. census. Then came the teleprinter (ca. of Jacques Herbrand (cf. Gödel’s Princeton lectures
1910) with its punched-paper use of Baudot code on tape. of 1934) and subsequent simplifications by Kleene.[81]
Telephone-switching networks of electromechanical Church’s proof[82] that the Entscheidungsproblem was
relays (invented 1835) was behind the work of George unsolvable, Emil Post's definition of effective calcu-
lability as a worker mindlessly following a list of in-
Stibitz (1937), the inventor of the digital adding device.
As he worked in Bell Laboratories, he observed the structions to move left or right through a sequence of
rooms and while there either mark or erase a paper or
“burdensome' use of mechanical calculators with gears.
“He went home one evening in 1937 intending to test observe the paper and make a yes-no decision about
the next instruction.[83] Alan Turing’s proof of that the
his idea... When the tinkering was over, Stibitz had
constructed a binary adding device”.[75] Entscheidungsproblem was unsolvable by use of his “a-
[automatic-] machine”[84] —in effect almost identical to
Davis (2000) observes the particular importance of the Post’s “formulation”, J. Barkley Rosser's definition of
electromechanical relay (with its two “binary states” open “effective method” in terms of “a machine”.[85] S. C.
and closed): Kleene's proposal of a precursor to "Church thesis" that
he called “Thesis I”,[86] and a few years later Kleene’s
It was only with the development, beginning in renaming his Thesis “Church’s Thesis”[87] and proposing
the 1930s, of electromechanical calculators us- “Turing’s Thesis”.[88]
ing electrical relays, that machines were built
having the scope Babbage had envisioned.”[76]
1.11.6 Emil Post (1936) and Alan Turing
(1936–37, 1939)
1.11.5 Mathematics during the 19th cen-
tury up to the mid-20th century Here is a remarkable coincidence of two men not know-
ing each other but describing a process of men-as-
Symbols and rules: In rapid succession the mathematics computers working on computations—and they yield vir-
of George Boole (1847, 1854), Gottlob Frege (1879), tually identical definitions.
and Giuseppe Peano (1888–1889) reduced arithmetic to
Emil Post (1936) described the actions of a “computer”
a sequence of symbols manipulated by rules. Peano’s The
(human being) as follows:
principles of arithmetic, presented by a new method (1888)
was “the first attempt at an axiomatization of mathemat-
ics in a symbolic language”.[77] "...two concepts are involved: that of a symbol
space in which the work leading from problem
But Heijenoort gives Frege (1879) this kudos: Frege’s is
to answer is to be carried out, and a fixed unal-
“perhaps the most important single work ever written in
terable set of directions.
logic. ... in which we see a " 'formula language', that
is a lingua characterica, a language written with special
symbols, “for pure thought”, that is, free from rhetorical His symbol space would be
embellishments ... constructed from specific symbols that
are manipulated according to definite rules”.[78] The work “a two way infinite sequence of spaces or
of Frege was further simplified and amplified by Alfred boxes... The problem solver or worker is to
North Whitehead and Bertrand Russell in their Principia move and work in this symbol space, being ca-
Mathematica (1910–1913). pable of being in, and operating in but one box
The paradoxes: At the same time a number of disturb- at a time.... a box is to admit of but two possi-
ing paradoxes appeared in the literature, in particular the ble conditions, i.e., being empty or unmarked,
Burali-Forti paradox (1897), the Russell paradox (1902– and having a single mark in it, say a vertical
03), and the Richard Paradox.[79] The resultant consid- stroke.
erations led to Kurt Gödel's paper (1931)—he specifi-
cally cites the paradox of the liar—that completely re- “One box is to be singled out and called the
duces rules of recursion to numbers. starting point. ...a specific problem is to be
Effective calculability: In an effort to solve the given in symbolic form by a finite number
Entscheidungsproblem defined precisely by Hilbert in of boxes [i.e., INPUT] being marked with a
1928, mathematicians first set about to define what was stroke. Likewise the answer [i.e., OUTPUT]
meant by an “effective method” or “effective calculation” is to be given in symbolic form by such a con-
or “effective calculability” (i.e., a calculation that would figuration of marked boxes....
14 CHAPTER 1. ALGORITHM

“A set of directions applicable to a general of states of mind which need be taken into ac-
problem sets up a deterministic process when count is finite...
applied to each specific problem. This process
terminates only when it comes to the direc- “Let us imagine that the operations performed
tion of type (C ) [i.e., STOP]".[89] See more by the computer to be split up into 'simple op-
at Post–Turing machine erations’ which are so elementary that it is not
easy to imagine them further divided.”[93]

Turing’s reduction yields the following:

“The simple operations must therefore include:

"(a) Changes of the symbol on one


of the observed squares
"(b) Changes of one of the squares
observed to another square within
L squares of one of the previously
observed squares.

“It may be that some of these change necessarily invoke


Alan Turing’s statue at Bletchley Park. a change of state of mind. The most general single oper-
ation must therefore be taken to be one of the following:
Alan Turing's work[90] preceded that of Stibitz (1937);
it is unknown whether Stibitz knew of the work of Tur- "(A) A possible change (a) of sym-
ing. Turing’s biographer believed that Turing’s use of bol together with a possible change
a typewriter-like model derived from a youthful inter- of state of mind.
est: “Alan had dreamt of inventing typewriters as a boy;
"(B) A possible change (b) of ob-
Mrs. Turing had a typewriter; and he could well have be-
served squares, together with a pos-
gun by asking himself what was meant by calling a type-
sible change of state of mind”
writer 'mechanical'".[91] Given the prevalence of Morse
code and telegraphy, ticker tape machines, and teletype-
writers we might conjecture that all were influences. “We may now construct a machine to do the
work of this computer.”[93]
Turing—his model of computation is now called a Turing
machine—begins, as did Post, with an analysis of a hu-
man computer that he whittles down to a simple set of A few years later, Turing expanded his analysis (thesis,
basic motions and “states of mind”. But he continues a definition) with this forceful expression of it:
step further and creates a machine as a model of compu-
tation of numbers.[92] “A function is said to be “effectively calcula-
ble” if its values can be found by some purely
“Computing is normally done by writing cer- mechanical process. Though it is fairly easy to
tain symbols on paper. We may suppose this get an intuitive grasp of this idea, it is never-
paper is divided into squares like a child’s arith- theless desirable to have some more definite,
metic book....I assume then that the computa- mathematical expressible definition . . . [he
tion is carried out on one-dimensional paper, discusses the history of the definition pretty
i.e., on a tape divided into squares. I shall also much as presented above with respect to Gödel,
suppose that the number of symbols which may Herbrand, Kleene, Church, Turing and Post]
be printed is finite.... . . . We may take this statement literally,
understanding by a purely mechanical process
“The behaviour of the computer at any moment one which could be carried out by a machine.
is determined by the symbols which he is ob- It is possible to give a mathematical descrip-
serving, and his “state of mind” at that moment. tion, in a certain normal form, of the struc-
We may suppose that there is a bound B to the tures of these machines. The development of
number of symbols or squares which the com- these ideas leads to the author’s definition of
puter can observe at one moment. If he wishes a computable function, and to an identification
to observe more, he must use successive obser- of computability † with effective calculability
vations. We will also suppose that the number ....
1.12. SEE ALSO 15

"† We shall use the expression 1.11.8 History after 1950


“computable function” to mean a
function calculable by a machine, A number of efforts have been directed toward further
and we let “effectively calculable” refinement of the definition of “algorithm”, and activ-
refer to the intuitive idea without ity is on-going because of issues surrounding, in particu-
particular identification with any lar, foundations of mathematics (especially the Church–
one of these definitions”.[94] Turing thesis) and philosophy of mind (especially ar-
guments about artificial intelligence). For more, see
Algorithm characterizations.
1.11.7 J. B. Rosser (1939) and S. C. Kleene
(1943) 1.12 See also
J. Barkley Rosser defined an 'effective [mathematical]
• Abstract machine
method' in the following manner (italicization added):
• Algorithm engineering
"'Effective method' is used here in the rather • Algorithm characterizations
special sense of a method each step of which
is precisely determined and which is certain • Algorithmic composition
to produce the answer in a finite number of • Algorithmic synthesis
steps. With this special meaning, three dif-
ferent precise definitions have been given to • Algorithmic trading
date. [his footnote #5; see discussion imme-
• Garbage in, garbage out
diately below]. The simplest of these to state
(due to Post and Turing) says essentially that an • Introduction to Algorithms
effective method of solving certain sets of prob-
lems exists if one can build a machine which will • List of algorithm general topics
then solve any problem of the set with no human • List of important publications in theoretical com-
intervention beyond inserting the question and puter science – Algorithms
(later) reading the answer. All three defini-
tions are equivalent, so it doesn't matter which • Numerical Mathematics Consortium
one is used. Moreover, the fact that all three
• Theory of computation
are equivalent is a very strong argument for the
correctness of any one.” (Rosser 1939:225–6) • Computability theory
• Computational complexity theory
Rosser’s footnote #5 references the work of (1) Church
and Kleene and their definition of λ-definability, in par-
ticular Church’s use of it in his An Unsolvable Problem 1.13 Notes
of Elementary Number Theory (1936); (2) Herbrand and
Gödel and their use of recursion in particular Gödel’s [1] “Any classical mathematical algorithm, for example, can
use in his famous paper On Formally Undecidable Propo- be described in a finite number of English words” (Rogers
sitions of Principia Mathematica and Related Systems I 1987:2).
(1931); and (3) Post (1936) and Turing (1936–7) in their [2] Well defined with respect to the agent that executes the
mechanism-models of computation. algorithm: “There is a computing agent, usually human,
Stephen C. Kleene defined as his now-famous “Thesis I” which can react to the instructions and carry out the com-
known as the Church–Turing thesis. But he did this in putations” (Rogers 1987:2).
the following context (boldface in original): [3] “an algorithm is a procedure for computing a function
(with respect to some chosen notation for integers) ... this
limitation (to numerical functions) results in no loss of
“12. Algorithmic theories... In setting up a com- generality”, (Rogers 1987:1).
plete algorithmic theory, what we do is to de-
scribe a procedure, performable for each set of [4] “An algorithm has zero or more inputs, i.e., quantities
values of the independent variables, which pro- which are given to it initially before the algorithm begins”
cedure necessarily terminates and in such man- (Knuth 1973:5).
ner that from the outcome we can read a defi- [5] “A procedure which has all the characteristics of an algo-
nite answer, “yes” or “no,” to the question, “is rithm except that it possibly lacks finiteness may be called
the predicate value true?"" (Kleene 1943:273) a 'computational method'" (Knuth 1973:5).
16 CHAPTER 1. ALGORITHM

[6] “An algorithm has one or more outputs, i.e. quanti- [27] A “robot": “A computer is a robot that performs any task
ties which have a specified relation to the inputs” (Knuth that can be described as a sequence of instructions.” cf
1973:5). Stone 1972:3

[7] Whether or not a process with random interior processes [28] Lambek’s “abacus” is a “countably infinite number of lo-
(not including the input) is an algorithm is debatable. cations (holes, wires etc.) together with an unlimited sup-
Rogers opines that: “a computation is carried out in a dis- ply of counters (pebbles, beads, etc). The locations are
crete stepwise fashion, without use of continuous methods distinguishable, the counters are not”. The holes have
or analogue devices . . . carried forward deterministically, unlimited capacity, and standing by is an agent who un-
without resort to random methods or devices, e.g., dice” derstands and is able to carry out the list of instructions”
Rogers 1987:2. (Lambek 1961:295). Lambek references Melzak who de-
fines his Q-machine as “an indefinitely large number of
[8] Kleene 1943 in Davis 1965:274 locations . . . an indefinitely large supply of counters
distributed among these locations, a program, and an op-
[9] Rosser 1939 in Davis 1965:225
erator whose sole purpose is to carry out the program”
[10] Moschovakis, Yiannis N. (2001). “What is an algo- (Melzak 1961:283). B-B-J (loc. cit.) add the stipula-
rithm?". In Engquist, B.; Schmid, W. Mathematics Un- tion that the holes are “capable of holding any number of
limited — 2001 and beyond. Springer. pp. 919–936 (Part stones” (p. 46). Both Melzak and Lambek appear in The
II). ISBN 9783540669135. Canadian Mathematical Bulletin, vol. 4, no. 3, September
1961.
[11] Stone 1973:4
[29] If no confusion results, the word “counters” can be
[12] Stone simply requires that “it must terminate in a finite dropped, and a location can be said to contain a single
number of steps” (Stone 1973:7–8). “number”.

[13] Boolos and Jeffrey 1974,1999:19 [30] “We say that an instruction is effective if there is a proce-
dure that the robot can follow in order to determine pre-
[14] cf Stone 1972:5 cisely how to obey the instruction.” (Stone 1972:6)
[15] Knuth 1973:7 states: “In practice we not only want algo- [31] cf Minsky 1967: Chapter 11 “Computer models” and
rithms, we want good algorithms ... one criterion of good- Chapter 14 “Very Simple Bases for Computability” pp.
ness is the length of time taken to perform the algorithm 255–281 in particular
... other criteria are the adaptability of the algorithm to
computers, its simplicity and elegance, etc.” [32] cf Knuth 1973:3.

[16] cf Stone 1973:6 [33] But always preceded by IF–THEN to avoid improper sub-
traction.
[17] Stone 1973:7–8 states that there must be, "...a procedure
that a robot [i.e., computer] can follow in order to deter- [34] However, a few different assignment instruc-
mine precisely how to obey the instruction.” Stone adds tions (e.g. DECREMENT, INCREMENT and
finiteness of the process, and definiteness (having no am- ZERO/CLEAR/EMPTY for a Minsky machine)
biguity in the instructions) to this definition. are also required for Turing-completeness; their exact
specification is somewhat up to the designer. The uncon-
[18] Knuth, loc. cit ditional GOTO is a convenience; it can be constructed
by initializing a dedicated location to zero e.g. the
[19] Minsky 1967, p. 105 instruction " Z ← 0 "; thereafter the instruction IF Z=0
THEN GOTO xxx is unconditional.
[20] Gurevich 2000:1, 3
[35] Knuth 1973:4
[21] Sipser 2006:157
[36] Stone 1972:5. Methods for extracting roots are not trivial:
[22] Knuth 1973:7
see Methods of computing square roots.
[23] Chaitin 2005:32
[37] Leeuwen, Jan (1990). Handbook of Theoretical Computer
[24] Rogers 1987:1–2 Science: Algorithms and complexity. Volume A. Elsevier.
p. 85. ISBN 978-0-444-88071-0.
[25] In his essay “Calculations by Man and Machine: Con-
ceptual Analysis” Seig 2002:390 credits this distinction [38] John G. Kemeny and Thomas E. Kurtz 1985 Back to
to Robin Gandy, cf Wilfred Seig, et al., 2002 Reflections Basic: The History, Corruption, and Future of the Lan-
on the foundations of mathematics: Essays in honor of guage, Addison-Wesley Publishing Company, Inc. Read-
Solomon Feferman, Association for Symbolic Logic, A. ing, MA, ISBN 0-201-13433-0.
K Peters Ltd, Natick, MA. [39] Tausworthe 1977:101
[26] cf Gandy 1980:126, Robin Gandy Church’s Thesis and [40] Tausworthe 1977:142
Principles for Mechanisms appearing on pp. 123–148 in
J. Barwise et al. 1980 The Kleene Symposium, North- [41] Knuth 1973 section 1.2.1, expanded by Tausworthe 1977
Holland Publishing Company. at pages 100ff and Chapter 9.1
1.13. NOTES 17

[42] cf Tausworthe 1977 [60] Oaks, Jeffrey A. “Was al-Khwarizmi an applied alge-
braist?". University of Indianapolis. Retrieved 2008-05-
[43] Heath 1908:300; Hawking’s Dover 2005 edition derives 30.
from Heath.
[61] Brezina, Corona (2006). Al-Khwarizmi: The Inventor Of
[44] " 'Let CD, measuring BF, leave FA less than itself.' This is Algebra. The Rosen Publishing Group. ISBN 978-1-
a neat abbreviation for saying, measure along BA succes- 4042-0513-0.
sive lengths equal to CD until a point F is reached such that
the length FA remaining is less than CD; in other words, [62] Foremost mathematical texts in history, according to Carl
let BF be the largest exact multiple of CD contained in B. Boyer.
BA” (Heath 1908:297)
[63] Oxford English Dictionary, Third Edition, 2012 s.v.
[45] For modern treatments using division in the algorithm,
see Hardy and Wright 1979:180, Knuth 1973:2 (Volume [64] “Eratosthenes”.
1), plus more discussion of Euclid’s algorithm in Knuth
1969:293–297 (Volume 2). [65] Cooke, Roger L. (2005). The History of Mathematics: A
Brief Course. John Wiley & Sons. ISBN 9781118460290.
[46] Euclid covers this question in his Proposition 1.
[66] Aaboe, Asger (2001), Episodes from the Early History of
[47] “Euclid’s Elements, Book VII, Proposition 2”. Astronomy, New York: Springer, pp. 40–62, ISBN 0-
Aleph0.clarku.edu. Retrieved May 20, 2012. 387-95136-9

[48] Knuth 1973:13–18. He credits “the formulation of [67] Davis 2000:18


algorithm-proving in terms of asertions and induction” to
R. W. Floyd, Peter Naur, C. A. R. Hoare, H. H. Goldstine [68] Bolter 1984:24
and J. von Neumann. Tausworth 1977 borrows Knuth’s
Euclid example and extends Knuth’s method in section 9.1 [69] Bolter 1984:26
Formal Proofs (pages 288–298). [70] Bolter 1984:33–34, 204–206.
[49] Tausworthe 1997:294
[71] All quotes from W. Stanley Jevons 1880 Elementary
[50] cf Knuth 1973:7 (Vol. I), and his more-detailed analyses Lessons in Logic: Deductive and Inductive, Macmillan and
on pp. 1969:294-313 (Vol II). Co., London and New York. Republished as a google-
book; cf Jevons 1880:199–201. Louis Couturat 1914 the
[51] Breakdown occurs when an algorithm tries to compact it- Algebra of Logic, The Open Court Publishing Company,
self. Success would solve the Halting problem. Chicago and London. Republished as a googlebook; cf
Couturat 1914:75–76 gives a few more details; interest-
[52] Gillian Conahan (January 2013). “Better Math Makes ingly he compares this to a typewriter as well as a piano.
Faster Data Networks”. discovermagazine.com. Jevons states that the account is to be found at Jan . 20,
[53] Haitham Hassanieh, Piotr Indyk, Dina Katabi, and Eric 1870 The Proceedings of the Royal Society.
Price, "ACM-SIAM Symposium On Discrete Algorithms [72] Jevons 1880:199–200
(SODA), Kyoto, January 2012. See also the sFFT Web
Page. [73] All quotes from John Venn 1881 Symbolic Logic, Macmil-
lan and Co., London. Republished as a googlebook. cf
[54] Kowalski 1979
Venn 1881:120–125. The interested reader can find a
[55] Carroll, Sue; Daughtrey, Taz (July 4, 2007). Fundamental deeper explanation in those pages.
Concepts for the Software Quality Engineer. American So-
[74] Bell and Newell diagram 1971:39, cf. Davis 2000
ciety for Quality. pp. 282 et seq. ISBN 978-0-87389-
720-4. [75] • Melina Hill, Valley News Correspondent, A Tin-
kerer Gets a Place in History, Valley News West
[56] For instance, the volume of a convex polytope (described
Lebanon NH, Thursday March 31, 1983, page 13.
using a membership oracle) can be approximated to high
accuracy by a randomized polynomial time algorithm, but [76] Davis 2000:14
not by a deterministic one: see Dyer, Martin; Frieze, Alan;
Kannan, Ravi (January 1991), “A Random Polynomial- [77] van Heijenoort 1967:81ff
time Algorithm for Approximating the Volume of Convex
Bodies”, J. ACM, New York, NY, USA: ACM, 38 (1): 1– [78] van Heijenoort’s commentary on Frege’s Begriffsschrift,
17, doi:10.1145/102782.102783. a formula language, modeled upon that of arithmetic, for
pure thought in van Heijenoort 1967:1
[57] George B. Dantzig and Mukund N. Thapa. 2003. Linear
Programming 2: Theory and Extensions. Springer-Verlag. [79] Dixon 1906, cf. Kleene 1952:36–40

[58] Tsypkin (1971). Adaptation and learning in automatic sys- [80] cf. footnote in Alonzo Church 1936a in Davis 1965:90
tems. Academic Press. p. 54. ISBN 978-0-08-095582-7. and 1936b in Davis 1965:110

[59] Hogendijk, Jan P. (1998). “al-Khwarzimi”. Pythagoras. [81] Kleene 1935–6 in Davis 1965:237ff, Kleene 1943 in
38 (2): 4–5. Archived from the original on April 12, 2009. Davis 1965:255ff
18 CHAPTER 1. ALGORITHM

[82] Church 1936 in Davis 1965:88ff • Church, Alonzo (1936a). “An Unsolvable Prob-
lem of Elementary Number Theory”. The Amer-
[83] cf. “Formulation I”, Post 1936 in Davis 1965:289–290
ican Journal of Mathematics. 58 (2): 345–363.
[84] Turing 1936–7 in Davis 1965:116ff doi:10.2307/2371045. JSTOR 2371045. Reprinted
in The Undecidable, p. 89ff. The first expression of
[85] Rosser 1939 in Davis 1965:226
“Church’s Thesis”. See in particular page 100 (The
[86] Kleene 1943 in Davis 1965:273–274 Undecidable) where he defines the notion of “effec-
tive calculability” in terms of “an algorithm”, and he
[87] Kleene 1952:300, 317 uses the word “terminates”, etc.
[88] Kleene 1952:376
• Church, Alonzo (1936b). “A Note on the Entschei-
[89] Turing 1936–7 in Davis 1965:289–290 dungsproblem”. The Journal of Symbolic Logic.
1 (1): 40–41. doi:10.2307/2269326. JSTOR
[90] Turing 1936 in Davis 1965, Turing 1939 in Davis
2269326. Church, Alonzo (1936). “Correction
1965:160
to a Note on the Entscheidungsproblem”. The
[91] Hodges, p. 96 Journal of Symbolic Logic. 1 (3): 101–102.
doi:10.2307/2269030. JSTOR 2269030. Reprinted
[92] Turing 1936–7:116
in The Undecidable, p. 110ff. Church shows that
[93] Turing 1936–7 in Davis 1965:136 the Entscheidungsproblem is unsolvable in about 3
pages of text and 3 pages of footnotes.
[94] Turing 1939 in Davis 1965:160
• Daffa', Ali Abdullah al- (1977). The Muslim con-
tribution to mathematics. London: Croom Helm.
1.14 References ISBN 0-85664-464-1.

• Axt, P (1959). “On a Subrecursive Hierarchy • Davis, Martin (1965). The Undecidable: Basic Pa-
and Primitive Recursive Degrees”. Transactions of pers On Undecidable Propositions, Unsolvable Prob-
the American Mathematical Society. 92: 85–105. lems and Computable Functions. New York: Raven
doi:10.2307/1993169. Press. ISBN 0-486-43228-9. Davis gives commen-
tary before each article. Papers of Gödel, Alonzo
• Bell, C. Gordon and Newell, Allen (1971), Com- Church, Turing, Rosser, Kleene, and Emil Post are
puter Structures: Readings and Examples, McGraw– included; those cited in the article are listed here by
Hill Book Company, New York. ISBN 0-07- author’s name.
004357-4.
• Davis, Martin (2000). Engines of Logic: Mathemati-
• Bellah, Robert Neelly (1985). Habits of the Heart: cians and the Origin of the Computer. New York:
Individualism and Commitment in American Life. W. W. Nortion. ISBN 0-393-32229-7. Davis of-
Berkeley: University of California Press. ISBN fers concise biographies of Leibniz, Boole, Frege,
978-0-520-25419-0. Cantor, Hilbert, Gödel and Turing with von Neu-
• Blass, Andreas; Gurevich, Yuri (2003). mann as the show-stealing villain. Very brief bios
“Algorithms: A Quest for Absolute Defini- of Joseph-Marie Jacquard, Babbage, Ada Lovelace,
tions” (PDF). Bulletin of European Association for Claude Shannon, Howard Aiken, etc.
Theoretical Computer Science. 81. Includes an
• This article incorporates public domain ma-
excellent bibliography of 56 references.
terial from the NIST document: Black, Paul E.
• Boolos, George; Jeffrey, Richard (1999) [1974]. “algorithm”. Dictionary of Algorithms and Data
Computability and Logic (4th ed.). Cambridge Uni- Structures.
versity Press, London. ISBN 0-521-20402-X.: cf.
Chapter 3 Turing machines where they discuss “cer- • Dean, Tim (2012). “Evolution and moral diver-
tain enumerable sets not effectively (mechanically) sity”. Baltic International Yearbook of Cognition,
enumerable”. Logic and Communication. 7.

• Burgin, Mark (2004). Super-Recursive Algorithms. • Dennett, Daniel (1995). Darwin’s Dangerous Idea.
Springer. ISBN 978-0-387-95569-8. New York: Touchstone/Simon & Schuster. ISBN
0-684-80290-2.
• Campagnolo, M.L., Moore, C., and Costa, J.F.
(2000) An analog characterization of the subrecur- • Yuri Gurevich, Sequential Abstract State Machines
sive functions. In Proc. of the 4th Conference on Capture Sequential Algorithms, ACM Transactions
Real Numbers and Computers, Odense University, on Computational Logic, Vol 1, no 1 (July 2000),
pp. 91–109 pages 77–111. Includes bibliography of 33 sources.
1.14. REFERENCES 19

• Hertzke, Allen D.; McRorie, Chris (1998). “The [QA248.M2943 Dartmouth College library. U.S.
Concept of Moral Ecology”. In Lawler, Peter Au- Dept. of Commerce, Office of Technical Services,
gustine; McConkey, Dale. Community and Political number OTS 60-51085.]
Thought Today. Westport, CT: Praeger.
• Minsky, Marvin (1967). Computation: Finite and
• Kleene, Stephen C. (1936). “General Re- Infinite Machines (First ed.). Prentice-Hall, Engle-
cursive Functions of Natural Numbers”. wood Cliffs, NJ. ISBN 0-13-165449-7. Minsky
Mathematische Annalen. 112 (5): 727–742. expands his "...idea of an algorithm—an effective
doi:10.1007/BF01565439. Presented to the procedure...” in chapter 5.1 Computability, Effective
American Mathematical Society, September 1935. Procedures and Algorithms. Infinite machines.
Reprinted in The Undecidable, p. 237ff. Kleene’s
definition of “general recursion” (known now as • Post, Emil (1936). “Finite Combinatory Processes,
mu-recursion) was used by Church in his 1935 pa- Formulation I”. The Journal of Symbolic Logic.
per An Unsolvable Problem of Elementary Number 1 (3): 103–105. doi:10.2307/2269031. JSTOR
Theory that proved the “decision problem” to be 2269031. Reprinted in The Undecidable, p. 289ff.
“undecidable” (i.e., a negative result). Post defines a simple algorithmic-like process of a
man writing marks or erasing marks and going from
• Kleene, Stephen C. (1943). “Recursive Pred- box to box and eventually halting, as he follows a
icates and Quantifiers”. American Mathemat- list of simple instructions. This is cited by Kleene as
ical Society Transactions. 54 (1): 41–73. one source of his “Thesis I”, the so-called Church–
doi:10.2307/1990131. JSTOR 1990131. Reprinted Turing thesis.
in The Undecidable, p. 255ff. Kleene refined his
definition of “general recursion” and proceeded in • Rogers, Jr, Hartley (1987). Theory of Recursive
his chapter “12. Algorithmic theories” to posit Functions and Effective Computability. The MIT
“Thesis I” (p. 274); he would later repeat this thesis Press. ISBN 0-262-68052-1.
(in Kleene 1952:300) and name it “Church’s The-
• Rosser, J.B. (1939). “An Informal Exposition of
sis"(Kleene 1952:317) (i.e., the Church thesis).
Proofs of Godel’s Theorem and Church’s Theo-
• Kleene, Stephen C. (1991) [1952]. Introduc- rem”. Journal of Symbolic Logic. 4: 53–60.
tion to Metamathematics (Tenth ed.). North- doi:10.2307/2269059. Reprinted in The Undecid-
Holland Publishing Company. ISBN 0-7204-2103- able, p. 223ff. Herein is Rosser’s famous defini-
9. Excellent—accessible, readable—reference tion of “effective method": "...a method each step
source for mathematical “foundations”. of which is precisely predetermined and which is
certain to produce the answer in a finite number of
• Knuth, Donald (1997). Fundamental Algorithms, steps... a machine which will then solve any problem
Third Edition. Reading, Massachusetts: Addison– of the set with no human intervention beyond insert-
Wesley. ISBN 0-201-89683-4. ing the question and (later) reading the answer” (p.
225–226, The Undecidable)
• Knuth, Donald (1969). Volume 2/Seminumerical Al-
gorithms, The Art of Computer Programming First • Santos-Lang, Christopher (2014). “Moral Ecol-
Edition. Reading, Massachusetts: Addison–Wesley. ogy Approaches to Machine Ethics”. In van Ry-
sewyk, Simon; Pontier, Matthijs. Machine Medical
• Kosovsky, N. K. Elements of Mathematical Logic
Ethics (PDF). Switzerland: Springer. pp. 111–127.
and its Application to the theory of Subrecursive Al-
doi:10.1007/978-3-319-08108-3_8.
gorithms, LSU Publ., Leningrad, 1981
• Scott, Michael L. (2009). Programming Language
• Kowalski, Robert (1979). “Algo-
Pragmatics (3rd ed.). Morgan Kaufmann Publish-
rithm=Logic+Control”. Communications
ers/Elsevier. ISBN 978-0-12-374514-9.
of the ACM. 22 (7): 424–436.
doi:10.1145/359131.359136. • Sipser, Michael (2006). Introduction to the Theory
of Computation. PWS Publishing Company. ISBN
• A. A. Markov (1954) Theory of algorithms. [Trans-
0-534-94728-X.
lated by Jacques J. Schorr-Kon and PST staff] Im-
print Moscow, Academy of Sciences of the USSR, • Sober, Elliott; Wilson, David Sloan (1998). Unto
1954 [i.e., Jerusalem, Israel Program for Scien- Others: The Evolution and Psychology of Unselfish
tific Translations, 1961; available from the Of- Behavior. Cambridge: Harvard University Press.
fice of Technical Services, U.S. Dept. of Com-
merce, Washington] Description 444 p. 28 cm. • Stone, Harold S. (1972). Introduction to Com-
Added t.p. in Russian Translation of Works of the puter Organization and Data Structures (1972 ed.).
Mathematical Institute, Academy of Sciences of the McGraw-Hill, New York. ISBN 0-07-061726-0.
USSR, v. 42. Original title: Teoriya algerifmov. Cf. in particular the first chapter titled: Algorithms,
20 CHAPTER 1. ALGORITHM

Turing Machines, and Programs. His succinct infor- 1.15 Further reading
mal definition: "...any sequence of instructions that
can be obeyed by a robot, is called an algorithm" (p. • Jean Luc Chabert (1999). A History of Algorithms:
4). From the Pebble to the Microchip. Springer Verlag.
ISBN 978-3-540-63369-3.
• Tausworthe, Robert C (1977). Standardized Devel-
opment of Computer Software Part 1 Methods. En- • Algorithmics.: The Spirit of Computing. Addison-
glewood Cliffs NJ: Prentice–Hall, Inc. ISBN 0-13- Wesley. 2004. ISBN 978-0-321-11784-7.
842195-1.
• Knuth, Donald E. (2000). Selected Papers on Anal-
• Turing, Alan M. (1936–37). “On Computable ysis of Algorithms. Stanford, California: Center for
Numbers, With An Application to the Entschei- the Study of Language and Information.
dungsproblem”. Proceedings of the London
Mathematical Society, Series 2. 42: 230–265. • Knuth, Donald E. (2010). Selected Papers on Design
doi:10.1112/plms/s2-42.1.230.. Corrections, ibid, of Algorithms. Stanford, California: Center for the
vol. 43(1937) pp. 544–546. Reprinted in The Study of Language and Information.
Undecidable, p. 116ff. Turing’s famous paper
completed as a Master’s dissertation while at King’s • Berlinski, David (2001). The Advent of the Al-
College Cambridge UK. gorithm: The 300-Year Journey from an Idea to
the Computer. Harvest Books. ISBN 978-0-15-
• Turing, Alan M. (1939). “Systems of Logic Based 601391-8.
on Ordinals”. Proceedings of the London Mathemat-
ical Society. 45: 161–228. doi:10.1112/plms/s2- • Thomas H. Cormen; Charles E. Leiserson; Ronald
45.1.161. Reprinted in The Undecidable, p. 155ff. L. Rivest; Clifford Stein (2009). Introduction To
Turing’s paper that defined “the oracle” was his PhD Algorithms, Third Edition. MIT Press. ISBN 978-
thesis while at Princeton USA. 0262033848.

• Wallach, Wendell; Allen, Colin (November 2008).


Moral Machines: Teaching Robots Right from 1.16 External links
Wrong. USA: Oxford University Press. ISBN 978-
0-19-537404-9.
• Hazewinkel, Michiel, ed. (2001), “Algorithm”,
• United States Patent and Trademark Office Encyclopedia of Mathematics, Springer, ISBN 978-
(2006), 2106.02 **>Mathematical Algorithms: 1-55608-010-4
2100 Patentability, Manual of Patent Examining
Procedure (MPEP). Latest revision August 2006 • Algorithms at DMOZ

• Weisstein, Eric W. “Algorithm”. MathWorld.


1.14.1 Secondary references
• Dictionary of Algorithms and Data Structures—
• Bolter, David J. (1984). Turing’s Man: Western Cul- National Institute of Standards and Technology
ture in the Computer Age (1984 ed.). The University
of North Carolina Press, Chapel Hill NC. ISBN 0- • Algorithms and Data Structures by Dr Nikolai
8078-1564-0., ISBN 0-8078-4108-0 pbk. Bezroukov

• Dilson, Jesse (2007). The Abacus ((1968,1994) Algorithm repositories


ed.). St. Martin’s Press, NY. ISBN 0-312-10409-
X., ISBN 0-312-10409-X (pbk.)
• The Stony Brook Algorithm Repository—State
• van Heijenoort, Jean (2001). From Frege to Gödel, University of New York at Stony Brook
A Source Book in Mathematical Logic, 1879–1931
• Netlib Repository—University of Tennessee and
((1967) ed.). Harvard University Press, Cambridge,
Oak Ridge National Laboratory
MA. ISBN 0-674-32449-8., 3rd edition 1976[?],
ISBN 0-674-32449-8 (pbk.) • Collected Algorithms of the ACM—Association for
Computing Machinery
• Hodges, Andrew (1983). Alan Turing: The Enigma
((1983) ed.). Simon and Schuster, New York. ISBN • The Stanford GraphBase—Stanford University
0-671-49207-1., ISBN 0-671-49207-1. Cf. Chap-
ter “The Spirit of Truth” for a history leading to, and • Combinatorica—University of Iowa and State Uni-
a discussion of, his proof. versity of New York at Stony Brook
1.16. EXTERNAL LINKS 21

• Library of Efficient Datastructures and Algorithms


(LEDA)—previously from Max-Planck-Institut für
Informatik

Lecture notes

• Algorithms Course Materials. Jeff Erickson.


University of Illinois.
Chapter 2

Analogy

For other uses, see Analogy (disambiguation). metaphors, similes, allegories, and parables, but not
metonymy. Phrases like and so on, and the like, as
if, and the very word like also rely on an analogical
Analogy (from Greek ἀναλογία, analogia,
“proportion”[1][2] ) is a cognitive process of transfer- understanding by the receiver of a message including
them. Analogy is important not only in ordinary lan-
ring information or meaning from a particular subject
(the analogue or source) to another (the target), or a guage and common sense (where proverbs and idioms
give many examples of its application) but also in
linguistic expression corresponding to such a process. In
a narrower sense, analogy is an inference or an argument science, philosophy, and the humanities. The concepts of
association, comparison, correspondence, mathematical
from one particular to another particular, as opposed to
deduction, induction, and abduction, where at least one and morphological homology, homomorphism, iconicity,
of the premises or the conclusion is general. The word isomorphism, metaphor, resemblance, and similarity are
analogy can also refer to the relation between the source closely related to analogy. In cognitive linguistics, the no-
and the target themselves, which is often, though not tion of conceptual metaphor may be equivalent to that of
necessarily, a similarity, as in the biological notion of analogy.
analogy. Analogy has been studied and discussed since classical
antiquity by philosophers, scientists, and lawyers. The
Increasing energy last few decades have shown a renewed interest in anal-
n =3 of orbits ogy, most notably in cognitive science.

n =2
2.1 Usage of the terms “source”
n =1
and “target”
With respect to the terms source and target there are two
distinct traditions of usage:

A photon is emitted • The logical and cultures and economics tradition


with energy E = hf speaks of an arrow, homomorphism, mapping, or
morphism from what is typically the more complex
domain or source to what is typically the less com-
plex codomain or target, using all of these words in
the sense of mathematical category theory.
Rutherford’s model of the atom (modified by Niels Bohr) made
an analogy between the atom and the solar system. • The tradition in cognitive psychology, in literary the-
ory, and in specializations within philosophy outside
Analogy plays a significant role in problem solving such of logic, speaks of a mapping from what is typically
as, decision making, perception, memory, creativity, the more familiar area of experience, the source, to
emotion, explanation, and communication. It lies be- what is typically the more problematic area of expe-
hind basic tasks such as the identification of places, ob- rience, the target.
jects and people, for example, in face perception and
facial recognition systems. It has been argued that
analogy is “the core of cognition”.[3] Specific analog- 2.2 Models and theories
ical language comprises exemplification, comparisons,

22
2.2. MODELS AND THEORIES 23

2.2.1 Identity of relation necessarily a relation, but also an idea, a pattern, a reg-
ularity, an attribute, an effect or a philosophy. These
In ancient Greek the word αναλογια (analogia) origi- authors also accepted that comparisons, metaphors and
nally meant proportionality, in the mathematical sense, “images” (allegories) could be used as arguments, and
and it was indeed sometimes translated to Latin as pro- sometimes they called them analogies. Analogies should
portio. From there analogy was understood as identity of also make those abstractions easier to understand and give
relation between any two ordered pairs, whether of math- confidence to the ones using them.
ematical nature or not. Kant’s Critique of Judgment held
The Middle Age saw an increased use and theorization of
to this notion. Kant argued that there can be exactly the
analogy. Roman lawyers had already used analogical rea-
same relation between two completely different objects.
soning and the Greek word analogia. Medieval lawyers
The same notion of analogy was used in the US-based
distinguished analogia legis and analogia iuris (see be-
SAT tests, that included “analogy questions” in the form
low). In Islamic logic, analogical reasoning was used for
“A is to B as C is to what?" For example, “Hand is to palm
the process of qiyas in Islamic sharia law and fiqh ju-
as foot is to ____?" These questions were usually given in
risprudence. In Christian theology, analogical arguments
the Aristotelian format: HAND : PALM : : FOOT : ____
were accepted in order to explain the attributes of God.
While most competent English speakers will immediately
Aquinas made a distinction between equivocal, univocal
give the right answer to the analogy question (sole), it is
and analogical terms, the last being those like healthy that
more difficult to identify and describe the exact relation
have different but related meanings. Not only a person
that holds both between pairs such as hand and palm, and
can be “healthy”, but also the food that is good for health
between foot and sole. This relation is not apparent in
(see the contemporary distinction between polysemy and
some lexical definitions of palm and sole, where the for-
homonymy). Thomas Cajetan wrote an influential trea-
mer is defined as the inner surface of the hand, and the
tise on analogy. In all of these cases, the wide Pla-
latter as the underside of the foot. Analogy and abstraction
tonic and Aristotelian notion of analogy was preserved.
are different cognitive processes, and analogy is often an
James Francis Ross in Portraying Analogy (1982), the
easier one. This analogy is not comparing all the proper-
first substantive examination of the topic since Cajetan’s
ties between a hand and a foot, but rather comparing the
De Nominum Analogia, demonstrated that analogy is a
relationship between a hand and its palm to a foot and its
systematic and universal feature of natural languages,
sole.[4] While a hand and a foot have many dissimilarities,
with identifiable and law-like characteristics which ex-
the analogy focuses on their similarity in having an inner
plain how the meanings of words in a sentence are in-
surface. A computer algorithm has achieved human-level
terdependent.
performance on multiple-choice analogy questions from
the SAT test. The algorithm measures the similarity of
relations between pairs of words (e.g., the similarity be- 2.2.3 Special case of induction
tween the pairs HAND:PALM and FOOT:SOLE) by sta-
tistical analysis of a large collection of text. It answers On the contrary, Ibn Taymiyya,[7][8][9] Francis Bacon and
SAT questions by selecting the choice with the highest later John Stuart Mill argued that analogy is simply a
relational similarity.[5] special case of induction.[6] In their view analogy is an
inductive inference from common known attributes to an-
other probable common attribute, which is known only
2.2.2 Shared abstraction about the source of the analogy, in the following form:

Premises a is C, D, E, F, G
b is C, D, E, F
Conclusion b is probably G.

This view does not accept analogy as an autonomous


mode of thought or inference, reducing it to induction.
However, autonomous analogical arguments are still use-
ful in science, philosophy and the humanities (see below),
which makes this reduction philosophically uninteresting.
Moreover, induction tries to achieve general conclusions,
while analogy looks for particular ones.
In several cultures, the Sun is the source of an analogy to God.
2.2.4 Shared structure
Greek philosophers such as Plato and Aristotle actually
used a wider notion of analogy. They saw analogy as Contemporary cognitive scientists use a wide notion of
a shared abstraction.[6] Analogous objects did not share analogy, extensionally close to that of Plato and Aristo-
24 CHAPTER 2. ANALOGY

selected and mapping from base to target occurs in a se-


rial manner.[13][14] Empirical evidence shows that human
analogical mapping performance is influenced by infor-
mation presentation order.[15]

2.2.5 High-level perception


Douglas Hofstadter and his team[16] challenged the
shared structure theory and mostly its applications in
According to Shelley (2003), the study of the coelacanth drew computer science. They argue that there is no line be-
heavily on analogies from other fish.
tween perception, including high-level perception, and
analogical thought. In fact, analogy occurs not only
after, but also before and at the same time as high-
tle, but framed by Gentner’s (1983) structure mapping level perception. In high-level perception, humans make
theory.[10] The same idea of mapping between source representations by selecting relevant information from
and target is used by conceptual metaphor and conceptual low-level stimuli. Perception is necessary for analogy,
blending theorists. Structure mapping theory concerns but analogy is also necessary for high-level perception.
both psychology and computer science. According to this Chalmers et al. conclude that analogy actually is high-
view, analogy depends on the mapping or alignment of level perception. Forbus et al. (1998) claim that this is
the elements of source and target. The mapping takes only a metaphor.[17] It has been argued (Morrison and
place not only between objects, but also between relations Dietrich 1995) that Hofstadter’s and Gentner’s groups do
of objects and between relations of relations. The whole not defend opposite views, but are instead dealing with
mapping yields the assignment of a predicate or a relation different aspects of analogy.[18]
to the target. Structure mapping theory has been applied
and has found considerable confirmation in psychology.
It has had reasonable success in computer science and ar- 2.2.6 Analogy and Complexity
tificial intelligence (see below). Some studies extended
the approach to specific subjects, such as metaphor and Antoine Cornuéjols[19] has presented analogy as a princi-
similarity.[11] ple of economy and computational complexity.
Keith Holyoak and Paul Thagard (1997) developed their Reasoning by analogy is a process of, from a given pair
multiconstraint theory within structure mapping theory. (x,f(x)), extrapolating the function f. In the standard
They defend that the "coherence" of an analogy depends modeling, analogical reasoning involves two “objects":
on structural consistency, semantic similarity and pur- the source and the target. The target is supposed to be
pose. Structural consistency is maximal when the anal- incomplete and in need for a complete description using
ogy is an isomorphism, although lower levels are admit- the source. The target has an existing part St and a miss-
ted. Similarity demands that the mapping connects sim- ing part Rt. We assume that we can isolate a situation of
ilar elements and relations of source and target, at any the source Ss, which corresponds to a situation of target
level of abstraction. It is maximal when there are iden- St, and the result of the source Rs, which correspond to
tical relations and when connected elements have many the result of the target Rt. With Bs, the relation between
identical attributes. An analogy achieves its purpose in- Ss and Rs, we want Bt, the relation between St and Rt.
sofar as it helps solve the problem at hand. The multicon- If the source and target are completely known:
straint theory faces some difficulties when there are mul-
tiple sources, but these can be overcome.[6] Hummel and Using Kolmogorov complexity K(x), defined as the size of
Holyoak (2005) recast the multiconstraint theory within a the smallest description of x and Solomonoff's approach
neural network architecture. A problem for the multicon- to induction, Rissanen (89),[20] Wallace & Boulton (68)
straint theory arises from its concept of similarity, which, proposed the principle of Minimum description length.
in this respect, is not obviously different from analogy it- This principle leads to minimize the complexity K(target|
self. Computer applications demand that there are some Source) of producing the target from the source.
identical attributes or relations at some level of abstrac-
This is unattractive in Artificial Intelligence, as it requires
tion. The model was extended (Doumas, Hummel, and a computation over abstract Turing machines. Suppose
Sandhofer, 2008) to learn relations from unstructured ex- that Ms and Mt are local theories of the source and the
amples (providing the only current account of how sym- target, available to the observer. The best analogy be-
bolic representations can be learned from examples).[12] tween a source case and a target case is the analogy that
Mark Keane and Brayshaw (1988) developed their Incre- minimizes:
mental Analogy Machine (IAM) to include working mem-
ory constraints as well as structural, semantic and prag- K(Ms) + K(Ss|Ms) + K(Bs|Ms) + K(Mt|Ms) +
matic constraints, so that a subset of the base analog is K(St|Mt) + K(Bt|Mt) (1).
2.3. APPLICATIONS AND TYPES 25

If the target is completely unknown: Linguistics


All models and descriptions Ms, Mt, Bs, Ss, and St leading
to the minimization of: • An analogy can be the linguistic process that reduces
word forms perceived as irregular by remaking them
in the shape of more common forms that are gov-
K(Ms) + K(Ss|Ms) + K(Bs|Ms) + K(Mt|Ms) + erned by rules. For example, the English verb help
K(St|Mt) (2) once had the preterite holp and the past participle
holpen. These obsolete forms have been discarded
are also those who allow to obtain the relationship Bt, and and replaced by helped by the power of analogy (or
thus the most satisfactory Rt for formula (1). by widened application of the productive Verb-ed
rule.) This is called leveling. However, irregular
The analogical hypothesis, which solves an analogy be- forms can sometimes be created by analogy; one ex-
tween a source case and a target case, has two parts: ample is the American English past tense form of
dive: dove, formed on analogy with words such as
• Analogy, like induction, is a principle of economy. drive: drove.
The best analogy between two cases is the one which
minimizes the amount of information necessary for • Neologisms can also be formed by analogy with ex-
the derivation of the source from the target (1). isting words. A good example is software, formed
Its most fundamental measure is the computational by analogy with hardware; other analogous neol-
complexity theory. ogisms such as firmware and vaporware have fol-
lowed. Another example is the humorous[21] term
• When solving or completing a target case with a underwhelm, formed by analogy with overwhelm.
source case, the parameters which minimize (2) are
postulated to minimize (1), and thus, produce the • Analogy is often presented as an alternative mech-
best response. anism to generative rules for explaining productive
formation of structures such as words. Others argue
that in fact they are the same mechanism, that rules
However, a cognitive agent may simply reduce the amount are analogies that have become entrenched as stan-
of information necessary for the interpretation of the dard parts of the linguistic system, whereas clearer
source and the target, without taking into account the cost cases of analogy have simply not (yet) done so (e.g.
of data replication. So, it may prefer to the minimization Langacker 1987.445–447). This view has obvious
of (2) the minimization of the following simplified for- resonances with the current views of analogy in cog-
mula: nitive science which are discussed above.

K(Ms) + K(Bs|Ms) + K(Mt|Ms)


2.3.2 In science

Analogues are often used in theoretical and applied sci-


2.3 Applications and types ences in the form of models or simulations which can
be considered as strong analogies. Other much weaker
2.3.1 In language analogies assist in understanding and describing func-
tional behaviours of similar systems. For instance, an
Logic analogy commonly used in electronics textbooks com-
pares electrical circuits to hydraulics. Another example is
Logicians analyze how analogical reasoning is used in the analog ear based on electrical, electronic or mechan-
arguments from analogy. ical devices.

Rhetoric Mathematics

• An analogy is a spoken or textual comparison be- Some types of analogies can have a precise mathematical
tween two words (or sets of words) to highlight some formulation through the concept of isomorphism. In de-
form of semantic similarity between them. Such tail, this means that given two mathematical structures of
analogies can be used to strengthen political and the same type, an analogy between them can be thought
philosophical arguments, even when the semantic of as a bijection between them which preserves some or
similarity is weak or non-existent (if crafted care- all of the relevant structure. For example, R2 and C are
fully for the audience). Analogies are sometimes isomorphic as vector spaces, but the complex numbers,
used to persuade those that cannot detect the flawed C , have more structure than R2 does: C is a field as well
or non-existent arguments. as a vector space.
26 CHAPTER 2. ANALOGY

Category theory takes the idea of mathematical analogy his Conversation Theory asserts there exists an analogy
much further with the concept of functors. Given two cat- exhibiting both similarities and differences between any
egories C and D, a functor F from C to D can be thought pair of the participants’ internal models or concepts.
of as an analogy between C and D, because F has to map
objects of C to objects of D and arrows of C to arrows
of D in such a way that the compositional structure of
the two categories is preserved. This is similar to the 2.3.3 In normative matters
structure mapping theory of analogy of Dedre Gentner, in
that it formalizes the idea of analogy as a function which Morality
satisfies certain conditions.
Analogical reasoning plays a very important part in
morality. This may be in part because morality is sup-
Artificial intelligence
posed to be impartial and fair. If it is wrong to do some-
thing in a situation A, and situation B is analogous to A in
Steven Phillips and William H. Wilson [22][23] use
all relevant features, then it is also wrong to perform that
category theory to mathematically demonstrate how the
action in situation B. Moral particularism accepts analog-
analogical reasoning in the human mind, that is free of the
ical moral reasoning, rejecting both deduction and induc-
spurious inferences that plague conventional artificial in-
tion, since only the former can do without moral princi-
telligence models, (called systematicity), could arise nat-
ples.
urally from the use of relationships between the internal
arrows that keep the internal structures of the categories
rather than the mere relationships between the objects
(called “representational states”). Thus, the mind may use Law
analogies between domains whose internal structures fit
according with a natural transformation and reject those In law, analogy is used to resolve issues on which there is
that do not. no previous authority. A distinction has to be made be-
See also case-based reasoning. tween analogous reasoning from written law and analogy
to precedent case law.

Anatomy

See also: Analogy (biology) Analogies from codes and statutes In civil law sys-
tems, where the preeminent source of law is legal codes
and statutes, a lacuna (a gap) arises when a specific issue
In anatomy, two anatomical structures are considered to is not explicitly dealt with in written law. Judges will try
be analogous when they serve similar functions but are to identify a provision whose purpose applies to the case
not evolutionarily related, such as the legs of vertebrates at hand. That process can reach a high degree of sophis-
and the legs of insects. Analogous structures are the re- tication, as judges sometimes not only look at a specific
sult of convergent evolution and should be contrasted with provision to fill lacunae (gaps), but at several provisions
homologous structures. (from which an underlying purpose can be inferred) or
at general principles of the law to identify the legislator's
value judgement from which the analogy is drawn. Be-
Engineering
sides the not very frequent filling of lacunae, analogy is
very commonly used between different provisions in or-
Often a physical prototype is built to model and represent
der to achieve substantial coherence. Analogy from pre-
some other physical object. For example, wind tunnels
vious judicial decisions is also common, although these
are used to test scale models of wings and aircraft, which
decisions are not binding authorities.
act as an analog to full-size wings and aircraft.
For example, the MONIAC (an analog computer) used
the flow of water in its pipes as an analog to the flow of
money in an economy. Analogies from precedent case law By contrast, in
common law systems, where precedent cases are the pri-
mary source of law, analogies to codes and statutes are
Cybernetics rare (since those are not seen as a coherent system, but
as incursions into the common law). Analogies are thus
Where there is dependence and hence interaction be- usually drawn from precedent cases: The judge finds that
tween a pair or more of biological or physical partici- the facts of another case are similar to the one at hand to
pants communication occurs and the stresses produced an extent that the analogous application of the rule estab-
describe internal models inside the participants. Pask in lished in the previous case is justified.
2.4. SEE ALSO 27

In gender science build critical thinking skills with analogies as one of the
main themes revolving around it. While Glynn focuses on
In the 19th century, there was increased attention to dif- using analogies to teach science, The Private Eye Project
ferences in gender. Scientists started to use an analogy can be used for any subject including writing, math, art,
between race and gender to explain gender differences. social studies, and invention. It is now used by thousands
In gender, the female represents a lower race than the of schools around the country.[28] There are also vari-
male. Researchers record the data of women’s bodies for ous pedagogic innovations now emerging that use visual
analysis. Nancy Leys Stepan believes that the analogy is analogies for cross-disciplinary teaching and research, for
so crucial in science that it shapes and influences scien- instance between science and the humanities.[29]
tific study. In her article “Race and Gender: The Role of
Analogy in Science”,[24] she states “The analogy guided
research, generated new hypotheses, and helped dissem- 2.4 See also
inate new, usually technical vocabularies. The analogy
defined what was problematic about these social groups,
• Conceptual metaphor
what aspects of them needed further investigation, and
which kinds of measurements and what data would be • Conceptual blending
significant for scientific inquiry.”
• Argument from analogy

2.3.4 In teaching strategies • False analogy

• Metaphor
Analogies as defined in rhetoric are a comparison be-
tween words, but an analogy can be used in teaching as • Simile
well. An analogy as used in teaching would be compar-
ing a topic that students are already familiar with, with • Hypocatastasis
a new topic that is being introduced so that students can
• Allegory
get a better understanding of the topic and relate back
to previous knowledge. Shawn Glynn, a professor in the • Argumentum e contrario
department of educational psychology and instructional
technology at the University of Georgia,[25] developed a • Parable
theory on teaching with analogies and developed steps to
explain the process of teaching with this method. The • Casuistry • Case-based reasoning
steps for teaching with analogies are as follows: Step one • Abductive reasoning
is introducing the new topic that is about to be taught and
giving some general knowledge on the subject. Step two • Duck test
is reviewing the concept that the students already know to
ensure they have the proper knowledge to assess the sim- • I know it when I see it
ilarities between the two concepts. Step three is finding
• Commonsense reasoning
relevant features within the analogy of the two concepts.
Step four is finding similarities between the two concepts
so students are able to compare and contrast them in or-
der to understand. Step five is indicating where the anal- 2.5 Notes
ogy breaks down between the two concepts. And finally,
step six is drawing a conclusion about the analogy and [1] ἀναλογία, Henry George Liddell, Robert Scott, A Greek-
comparison of the new material with the already learned English Lexicon, on Perseus Digital Library
material. Typically this method is used to learn topics in
[2] analogy, Online Etymology Dictionary
science.[26]
In 1989 Kerry Ruef, a teacher, began an entire program, [3] Hofstadter in Gentner et al. 2001.
which she titled The Private Eye Project. It is a method of [4] , Michael A. Martin, The Use of Analogies and Heuristics
teaching that revolves around using analogies in the class- in Teaching Introductory Statistical Methods
room to better explain topics. She thought of the idea to
use analogies as a part of curriculum because she was ob- [5] Turney 2006
serving objects once and she said, “my mind was noting
[6] Shelley 2003
what else each object reminded me of...” This led her to
teach with the question, “what does [the subject or topic] [7] Hallaq, Wael B. (1985–1986). “The Logic of Legal Rea-
remind you of?" The idea of comparing subjects and con- soning in Religious and Non-Religious Cultures: The
cepts led to the development of The Private Eye Project Case of Islamic Law and the Common Law”. Cleveland
as a method of teaching.[27] The program is designed to State Law Review. 34: 79–96 [93–5]
28 CHAPTER 2. ANALOGY

[8] Ruth Mas (1998). “Qiyas: A Study in Islamic Logic” [28] The Private Eye Project. The Private Eye Project. 2013.
(PDF). Folia Orientalia. 34: 113–128. ISSN 0015-5675.
[29] Mario Petrucci. “Crosstalk, Mutation, Chaos: bridge-
[9] John F. Sowa; Arun K. Majumdar (2003). “Analogical building between the sciences and literary studies using
reasoning”. Conceptual Structures for Knowledge Creation Visual Analogy”.
and Communication, Proceedings of ICCS 2003. Berlin:
Springer-Verlag., pp. 16–36

[10] See Dedre Gentner et al. 2001 2.6 References


[11] See Gentner et al. 2001 and Gentner’s publication page.
• Cajetan, Tommaso De Vio, (1498), De Nominum
[12] Doumas, Hummel, and Sandhofer, 2008 Analogia, P.N. Zammit (ed.), 1934, The Analogy
of Names, Koren, Henry J. and Bushinski, Edward
[13] Keane, M.T. and Brayshaw, M. (1988). The Incremental
A (trans.), 1953, Pittsburgh: Duquesne University
Analogical Machine: a computational model of analogy.
In D. Sleeman (Ed). European working session on learn-
Press.
ing. (pp.53–62). London: Pitman. • Chalmers, D.J. et al. (1991). Chalmers, D.J.,
[14] Keane, M.T. Ledgeway; Duff, S (1994). “Constraints French, R.M., Hofstadter, D., High-Level Percep-
on analogical mapping: a comparison of three models”. tion, Representation, and Analogy.
Cognitive Science. 18: 387–334. doi:10.1016/0364-
0213(94)90015-9. • Coelho, Ivo (2010). “Analogy.” ACPI Encyclope-
dia of Philosophy. Ed. Johnson J. Puthenpurackal.
[15] Keane, M.T. (1997). “What makes an analogy difficult? Bangalore: ATC. 1:64-68.
The effects of order and causal structure in analogical
mapping”. Journal of Experimental Psychology: Learning, • Cornuéjols, A. (1996). Analogie, principe
Memory and Cognition. 23: 946–967. doi:10.1037/0278- d’économie et complexité algorithmique. In Actes
7393.23.4.946. des 11èmes Journées Françaises de l’Apprentissage.
[16] See Chalmers et al. 1991
Sète.

[17] Forbus et al., 1998 • Cornuéjols, A. (1996). Analogy, principle of econ-


omy and computational complexity.* Doumas, L.
[18] Morrison and Dietrich, 1995 A. A., Hummel, J.E., and Sandhofer, C. (2008). A
[19] Cornuéjols, A. (1996). Analogie, principe d’économie et Theory of the Discovery and Predication of Rela-
complexité algorithmique. In Actes des 11èmes Journées tional Concepts. Psychological Review, 115, 1-43.
Françaises de l’Apprentissage. Sète.
• Forbus, K. et al. (1998). Analogy just
[20] Rissanen J. (1989) : Stochastical Complexity and Statistical looks like high-level perception.* Gentner, D.
Inquiry. World Scientific Publishing Company, 1989. (1983). Structure-mapping: A theoretical frame-
work for analogy. Cognitive Science, 7, 155–170.
[21] http://www.oxforddictionaries.com/us/definition/
(Reprinted in A. Collins & E. E. Smith (Eds.), Read-
american_english/underwhelm
ings in cognitive science: A perspective from psy-
[22] Phillips, Steven; Wilson, William H. (July 2010). chology and artificial intelligence. Palo Alto, CA:
“Categorial Compositionality: A Category The- Kaufmann).
ory Explanation for the Systematicity of Human
Cognition”. PLoS Computational Biology. 6 (7). • Gentner, D., Holyoak, K.J., Kokinov, B. (Eds.)
doi:10.1371/journal.pcbi.1000858. (2001). The Analogical Mind: Perspectives from
Cognitive Science. Cambridge, MA, MIT Press,
[23] Phillips, Steven; Wilson, William H. (August 2011).
ISBN 0-262-57139-0
“Categorial Compositionality II: Universal Constructions
and a General Theory of (Quasi-)Systematicity in Hu- • Hofstadter, D. (2001). Analogy as the Core of
man Cognition”. PLoS Computational Biology. 7 (8). Cognition, in Dedre Gentner, Keith Holyoak, and
doi:10.1371/journal.pcbi.1002102.
Boicho Kokinov (eds.) The Analogical Mind: Per-
[24] Stepan, Nancy Leys (Jun 1986). “Race and Gender: The spectives from Cognitive Science, Cambridge, MA:
Role of Analogy in Science”. Isis. 77 (2): 261–277. The MIT Press/Bradford Book, 2001, pp. 499–538.
doi:10.1086/354130. JSTOR 232652.
• Holland, J.H., Holyoak, K.J., Nisbett, R.E., and
[25] University of Georgia. Curriculum Vitae of Shawn M. Thagard, P. (1986). Induction: Processes of Infer-
Glynn. 2012. 16 October 2013 ence, Learning, and Discovery. Cambridge, MA,
[26] Glynn, Shawn M. Teaching with Analogies. 2008. MIT Press, ISBN 0-262-58096-9.

[27] Johnson, Katie. Educational Leadership: Exploring the • Holyoak, K.J., and Thagard, P. (1995). Mental
World with the Private Eye. September 1995. 16 October Leaps: Analogy in Creative Thought. Cambridge,
2013 . MA, MIT Press, ISBN 0-262-58144-2.
2.7. EXTERNAL LINKS 29

• Holyoak, K.J., and Thagard, P. (1997). The Ana- • Ross, J.F., (1958), A Critical Analysis of the Theory
logical Mind. of Analogy of St Thomas Aquinas, (Ann Arbor, MI:
University Microfilms Inc).
• Hummel, J.E., and Holyoak, K.J. (2005). Relational
Reasoning in a Neurally Plausible Cognitive Archi- • Shelley, C. (2003). Multiple analogies in Science
tecture and Philosophy. Amsterdam/Philadelphia: John
Benjamins Publishing Company.
• Itkonen, E. (2005). Analogy as Structure and Pro-
cess. Amsterdam/Philadelphia: John Benjamins • Turney, P.D.; Littman, M.L. (2005). “Corpus-
Publishing Company. based learning of analogies and semantic rela-
tions”. Machine Learning. 60 (1–3): 251–278.
• Juthe, A. (2005). “Argument by Analogy”, in Ar- doi:10.1007/s10994-005-0913-1.
gumentation (2005) 19: 1–27.
• Turney, P.D. (2006). “Similarity of semantic rela-
• Keane, M.T. Ledgeway; Duff, S (1994). “Con- tions”. Computational Linguistics. 32 (3): 379–416.
straints on analogical mapping: a comparison of doi:10.1162/coli.2006.32.3.379.
three models”. Cognitive Science. 18: 287–334.
doi:10.1016/0364-0213(94)90015-9.

• Keane, M.T. (1997). “What makes an analogy dif- 2.7 External links
ficult? The effects of order and causal structure in
analogical mapping”. Journal of Experimental Psy- • Stanford Encyclopedia of Philosophy “Analogy and
chology: Learning, Memory and Cognition. 123: Analogical Reasoning”, by Paul Bartha.
946–967.
• Stanford Encyclopedia of Philosophy “Medieval
• Kokinov, B. (1994). “A hybrid model of reasoning Theories of Analogy”, by E. Jennifer Ashworth.
by analogy.”
• Stanford Encyclopedia of Philosophy “Precedent and
• Kokinov, B. and Petrov, A. (2001). “Integration of Analogy in Legal Reasoning”, by Grant Lamond.
Memory and Reasoning in Analogy-Making.”
• Dictionary of the History of Ideas Analogy in Early
• Lamond, G. (2006). Precedent and Analogy in Le- Greek Thought.
gal Reasoning, in Stanford Encyclopedia of Philos-
• Dictionary of the History of Ideas Analogy in Patris-
ophy.
tic and Medieval Thought.
• Langacker, Ronald W. (1987). Foundations of Cog-
• Dedre Gentner’s publications page, most of them on
nitive grammar. Vol. I, Theoretical prerequisites.
analogy and available for download.
Stanford: Stanford University Press.
• Shawn Glynn’s publications page, all on teaching
• Little, J (2000). “Analogy in Science: Where Do with analogies and some available for download.
We Go From Here?". Rhetoric Society Quarterly.
30: 69–92. doi:10.1080/02773940009391170. • Keith Holyoak’s publications page, many on analogy
and available for download.
• Little, J (2008). “The Role of Analogy in
George Gamow’s Derivation of Drop Energy”. • Boicho Kokinov’s publications page, most of them
Technical Communication Quarterly. 17: 1–19. on analogy and available for download.
doi:10.1080/10572250701878876.
• The Private Eye Project’s publications page, all on
• Morrison, C., and Dietrich, E. (1995). Structure- teaching with analogies (and thinking by analogy)
Mapping vs. High-level Perception. and some available for download.

• Ross, J.F., (1982), Portraying Analogy. Cambridge: • jMapper – Java Library for Analogy/Metaphor Gen-
Cambridge University Press. eration

• Ross, J.F. (October 1970). “Analogy and The • Analogy games – Analogy used as the basis for a
Resolution of Some Cognitivity Problems”. The cultural game
Journal of Philosophy. 67 (20): 725–746.
doi:10.2307/2024008. JSTOR 2024008.

• Ross, J.F. (September 1961). “Analogy as a Rule


of Meaning for Religious Language”. Interna-
tional Philosophical Quarterly. 1 (3): 468–502.
doi:10.5840/ipq19611356.
Chapter 3

AppleTalk

AppleTalk was a proprietary suite of networking proto- were jockeying for position in the market, but even at this
cols developed by Apple Inc. for their Macintosh com- time Ethernet’s widespread acceptance suggested it was
puters. AppleTalk includes a number of features that al- to become a de facto standard.[3] It was at this show that
low local area networks to be connected with no prior Steve Jobs asked Gursharan Sidhu a seemingly innocuous
setup or the need for a centralized router or server of any question, “Why has networking not caught on?"[4]
sort. Connected AppleTalk-equipped systems automati-
Four months later, in October, AppleNet was cancelled.
cally assign addresses, update the distributed namespace, At the time, they announced that “Apple realized that
and configure any required inter-networking routing. It is
it’s not in the business to create a networking system.
a plug-n-play system. We built and used AppleNet in-house, but we realized
AppleTalk was released in 1985, and was the primary that if we had shipped it, we would have seen new stan-
protocol used by Apple devices through the 1980s and dards coming up.”[5] In January, Jobs announced that they
1990s. Versions were also released for the IBM PC and would instead be supporting IBM's Token Ring, which he
compatibles and the Apple IIGS. AppleTalk support was expected to come out in a “few months”.[5]
also available in most networked printers (especially laser
printers), some file servers, and a number of routers.
3.1.2 AppleBus
The rise of TCP/IP during the 1990s led to a reimplemen-
tation of most of these types of support on that protocol, Through this period, Apple was deep in development of
and AppleTalk became unsupported as of the release of the Macintosh computer. During development, engineers
Mac OS X v10.6 in 2009. Many of AppleTalk’s more had made the decision to use the Zilog 8530 serial con-
advanced autoconfiguration features have since been in- troller chip (SCC) instead of the lower cost and more
troduced in Bonjour, while Universal Plug and Play serves common UART to provide serial port connections.[6]
similar needs. The SCC cost about $5 more than a UART, but offered
much higher speeds up to 250 kilobits per second (or
higher with additional hardware) and internally supported
3.1 History a number of basic networking-like protocols like IBM’s
Bisync.[7]

3.1.1 AppleNet The SCC was chosen because it would allow multiple de-
vices to be attached to the port. Peripherals equipped
After the release of the Apple Lisa computer in January with similar SCCs could communicate using the built-in
1983, Apple invested considerable effort in the develop- protocols, interleaving their data with other peripherals
ment of a local area networking (LAN) system for the on the same bus. This would eliminate the need for more
machines. Known as AppleNet, it was based on the sem- ports on the back of the machine, and allowed for the
inal Xerox XNS protocol stack[1] but running on a cus- elimination of expansion slots for supporting more com-
tom 1 Mbit/s coaxial cable system rather than Xerox’s plex devices. The initial concept was known as Apple-
2.94 Mbit/s Ethernet. AppleNet was announced early in Bus, envisioning a system controlled by the host Macin-
1983 with a fall introduction at the target price of $500 tosh polling “dumb” devices in a fashion similar to the
for plug-in AppleNet cards for the Lisa and the Apple modern Universal Serial Bus.[8]
II.[2]
At that time, early LAN systems were just coming to 3.1.3 AppleBus networking
market, including Ethernet, Token Ring and ARCNET.
This was a topic of major commercial effort at the time, The Macintosh team had already begun work on what
dominating shows like the National Computer Confer- would become the LaserWriter, and had considered a
ence (NCC) in Anaheim in May 1983. All of the systems number of other options of how to share these expensive

30
3.1. HISTORY 31

machines and other resources. A series of memos from dressing system allowed for expansion to 255 nodes in a
Bob Belleville clarified these concepts, outlining the Mac, LAN (although only 32 could be used at that time), and
LaserWriter and a file server system which would become by using “bridges” (which came to be known as “routers”,
Macintosh Office.[4] By late 1983 it was clear that IBM’s although technically not the same) one could interconnect
Token Ring would not be ready in time for the launch of LANs into larger collections. “Zones” allowed devices to
the Mac, and might miss the launch of these other prod- be addressed within a bridge-connected internet. Addi-
ucts as well. In the end, Token Ring would not ship until tionally, AppleTalk was designed from the start to allow
October 1985.[9] use with any potential underlying physical link.[14]
Jobs’ earlier question to Sidhu had already sparked a num- The main advantage of AppleTalk was that it was com-
ber of ideas. When AppleNet was cancelled in Octo- pletely maintenance-free. To join a device to a net-
ber, Sidhu led an effort to develop a new networking sys- work, you simply plugged the adaptor into the machine,
tem based on the AppleBus hardware. This new system then connected a cable from it to any free port on any
would not have to conform to any existing preconcep- other adaptor. AppleTalk’s internal protocols negotiated
tions, and was designed to be worthy of the Mac - a sys- a working network address number, automatically gave
tem that was user-installable, had zero-configuration, and the computer a human-readable name, and collected up
no fixed network addresses - in short, a true plug-and- a list of the names and types of other machines on the
play network.[10] Considerable effort was needed, but by network so the user could browse the devices through
the time the Mac was released, the basic concepts had the GUI-based Chooser. AppleTalk was so easy to use
been outlined, and some of the low-level protocols were that ad-hoc networks tended to appear whenever multiple
on their way to completion. Sidhu mentioned the work to Macs were in the same room.[15] Apple would later use
Belleville only two hours after the Mac was announced.[4] this in an advertisement showing a network being created
The “new” AppleBus was announced in early 1984,[N 1] between two seats in an airplane.[16]
allowing direct connection from the Mac or Lisa through
a small box that plugged into the serial port and con-
nected via cables to the next computer upstream and
downstream. Adaptors for Apple II and Apple III were
also announced.[11] Apple also announced that AppleBus
networks could be attached to, and would appear to be 3.1.5 PhoneNet and other adaptors
a single node within, a Token Ring system.[5] Details of
how this would work were sketchy.[5] A thriving 3rd party market for AppleTalk devices devel-
oped over the next few years. One particularly notable
example was an alternate adaptor designed by BMUG
3.1.4 AppleTalk and commercialized by Farallon as PhoneNet in 1987.[17]
This was essentially a replacement for Apple’s connec-
Just prior to its release in early 1985, AppleBus was re- tor that had conventional phone jacks instead of Apple’s
named AppleTalk. The system had a number of limita- round connectors. PhoneNet allowed AppleTalk net-
tions, including a speed of only 230.4 kbit/s, a maximum
works to be connected together using normal telephone
distance of 1000 feet from end to end, and only 32 nodes wires, and with very little extra work, could run analog
per LAN.[12] But as the basic hardware was built into the
phones and AppleTalk on a single four-conductor phone
Mac, adding nodes only cost about $50 for the adaptor cable.
box. In comparison, Ethernet or Token Ring cards cost
hundreds or thousands of dollars. Additionally, the en- Other companies took advantage of the SCC’s ability to
tire networking stack required only about 6 kB of RAM, read external clocks in order to support higher transmis-
allowing it to run on any Mac.[13] sion speeds, up to 1 Mbit/s. In these systems the external
adaptor also included its own clock, and used that to sig-
The relatively slow speed of AppleTalk allowed further nal the SCC’s clock input pins. The best known such sys-
reductions in cost. Instead of using RS-422's balanced tem was Centram’s FlashTalk, which ran at 768 kbit/s,
transmit and receive circuits, the AppleTalk Personal and was intended to be used with their TOPS network-
Network cabling used a single common electrical ground, ing system.[18] A similar solution was the 850 kbit/s Day-
which limited speeds to about 500 kbit/s, but allowed naTalk, which used a separate box that plugged in be-
one conductor to be removed. This meant that com- tween the computer and a normal LocalTalk/PhoneNet
mon three-conductor cables could be used for wiring. box. Dayna also offered a PC expansion card that
Additionally, the adaptors were designed to be “self- ran up to 1.7 Mbit/s when talking to other Dayna PC
terminating”, meaning that nodes at the end of the net- cards.[19][20] Several other systems also existed with even
work could simply leave their last connector unconnected. higher performance, but these often required special ca-
There was no need for the wires to be connected back to- bling that was incompatible with LocalTalk/PhoneNet,
gether into a loop, nor the need for hubs or other devices. and also required patches to the networking stack that of-
The system was designed for future expansion; the ad- ten caused problems.
32 CHAPTER 3. APPLETALK

3.1.6 EtherTalk, TokenTalk and Apple- device in the “2nd Floor” zone to indicate its physical lo-
Share cation. Phase II also included changes to the underlying
inter-networking protocols to make them less “chatty”,
By 1987 Ethernet was clearly winning the standards bat- which had previously been a serious problem on networks
[25]
tle over Token Ring, and in the middle of that year that bridged over wide-area networks.
Apple introduced EtherTalk 1.0 for the newly released By this point Apple had a wide variety of commu-
Macintosh II computer. The package included both a nications products under development, and many of
NuBus card with Ethernet ports and a new Network these were announced along with AppleTalk Phase II.
control panel that allowed the user to select which physi- These included updates to EtherTalk and TokenTalk, Ap-
cal connection to use for networking (from “Built-in” or pleTalk software and LocalTalk hardware for the IBM
“EtherTalk”). The release’s new networking stack also PC, EtherTalk for Apple’s A/UX operating system allow-
expanded the system to allow a full 255 nodes per LAN. ing it to use LaserPrinters and other network resources,
With its release, AppleTalk Personal Network was re- and the Mac X.25 and MacX products.
named LocalTalk.[21] Token Ring would eventually be
supported with the similar TokenTalk product, which Ethernet had become almost universal by 1990, and it was
used the same Network control panel and underlying soft- time to build Ethernet into Macs direct from the factory.
ware. Many third party companies would introduce com- However, the physical wiring used by these networks was
patible Ethernet and Token Ring cards that used these not yet completely standardized. Apple solved this prob-
same drivers. lem using a single port on the back of the computer into
which the user could plug an adaptor for any given ca-
The appearance of EtherTalk also led to a problem: Net- bling system. This FriendlyNet system was based on
works with new and old Macs needed some way to com- the industry-standard Attachment Unit Interface or AUI,
municate between each other. This could be as sim- but deliberately chose a non-standard connector that was
ple as a network of Ethernet Mac IIs trying to talk to a smaller and easier to use, which they called “Apple AUI”,
LaserWriter. Apple had considered the problem, and Ap- or AAUI. FriendlyNet was first introduced on the Quadra
pleTalk included the possibility for a low-cost LocalTalk- 700 and Quadra 900 computers, and used across much of
to-Ethernet bridge, but they felt it would be a low-volume the Mac line for some time.[26] As with LocalTalk, a num-
product and left it to third parties.[22] A number of com- ber of 3rd party FriendlyNet adaptors quickly appeared.
panies responded, both existing communications vendors
like Hayes and Cisco Systems, as well as newly formed As 10BASE-T became the de facto cabling system for
companies like Kinetics. Contrary to Apple’s belief these Ethernet, second-generation Power Macintosh machines
would be low-volume, by the end of 1987, 130,000 such added a 10BASE-T port in addition to the AAUI, and
systems were in use. AppleTalk was at that time the most eventually dropped AAUI on Macs with the New World
used networking system in the world, with over three ROM, and 10BASE-T was then universal.
times the installations of any other vendor.[23]
1987 also marked the introduction of the AppleShare 3.1.8 The capital-I Internet
product, a dedicated file server that ran on any Mac with
512 kB of RAM or more. A common AppleShare ma- In 1988 Apple had released MacTCP, a system that al-
chine was the Mac Plus with an external SCSI hard drive. lowed the Mac to support TCP/IP on machines with
AppleShare was the #3 network operating system in the suitable Ethernet hardware. However, this left many
late 1980s, behind Novell NetWare and Microsoft’s MS- universities with the problem of supporting IP on their
Net.[24] AppleShare was effectively the replacement for many LocalTalk-equipped Macs. Stanford University pi-
the failed Macintosh Office efforts, which had been based oneered development of MacIP, which allowed IP pack-
on a dedicated file server device. ets to be routed over LocalTalk networks with the support
of a suitable “gateway” machine. These were initially cus-
tom devices, but it was soon common to include MacIP
3.1.7 AppleTalk Phase II and other devel- support in LocalTalk-to-Ethernet bridges.[26] MacTCP
opments would not become a standard part of the Mac OS un-
til 1994,[27] by which time it also supported SNMP and
A significant re-design was released in 1989 as Ap- PPP.
pleTalk Phase II. In many ways, Phase II can be con- For some time in the early 1990s, the Mac was a pri-
sidered an effort to make the earlier version (never called mary client on the rapidly expanding Internet. Among
Phase I) more generic. LANs could now support more the better known programs in wide use were Fetch, Eu-
than 255 nodes, and zones were no longer associated with dora, eXodus, NewsWatcher and the NCSA packages, es-
physical networks, but were entirely virtual constructs pecially NCSA Mosaic and its offspring, Netscape Navi-
used simply to organize nodes. For instance, one could gator.[28] Additionally, a number of server products ap-
now make a “Printers” zone that would list all the printers peared that allowed the Mac to host Internet content.
in an organization, or one might want to place that same Through this period, Macs had about 2 to 3 times as many
3.3. ADDRESSING 33

clients connected to the Internet as any other platform,[29] concept was to allow routers to provide the information
despite the relatively small overall marketshare. or “hardwire” the system to known addresses and names.
As the world quickly moved to IP for both LAN and On larger networks where AARP could cause problems
WAN uses, Apple was faced with maintaining two in- as new nodes searched for free addresses, the addition of
creasingly outdated code bases on an ever-wider group a router could reduce “chattiness.” Together AARP and
of machines as well as the introduction of the PowerPC NBP made AppleTalk an easy-to-use networking system.
based machines. This led to the Open Transport efforts, New machines were added to the network by plugging
which re-implemented both MacTCP and AppleTalk on them and optionally giving them a name. The NBP lists
were examined and displayed by a program known as the
an entirely new code base adapted from the Unix standard
STREAMS. Early versions had problems and did not be- Chooser which would display a list of machines on the lo-
cal network, divided into classes such as file-servers and
come stable for some time.[30] By that point, Apple was
deep in their ultimately doomed Copland efforts. printers.

3.1.9 Legacy and abandonment 3.3 Addressing


With the purchase of NeXT and subsequent development
of Mac OS X, AppleTalk was strictly a legacy system. An AppleTalk address was a 4-byte quantity. This con-
Support was added to OS X in order to provide support sisted of a two-byte network number, a one-byte node
for the large number of existing AppleTalk devices, no- number, and a one-byte socket number. Of these, only
tably laser printers and file shares, but alternate connec- the network number required any configuration, being ob-
tion solutions common in this era, notably USB for print- tained from a router. Each node dynamically chose its
ers, limited their demand. As Apple abandoned many of own node number, according to a protocol (originally the
these product categories, and all new systems were based LocalTalk Link Access Protocol LLAP and later the Ap-
on IP, AppleTalk became less and less common. Ap- pleTalk Address Resolution Protocol, AARP)[32] which
pleTalk support was finally removed from the MacOS in handled contention between different nodes accidentally
Mac OS X v10.6 in 2009.[31] choosing the same number. For socket numbers, a few
well-known numbers were reserved for special purposes
However, the loss of AppleTalk did not reduce the de- specific to the AppleTalk protocol itself. Apart from
sire for networking solutions that combined its ease-of- these, all application-level protocols were expected to use
use with IP routing. Apple has led development of many dynamically-assigned socket numbers at both the client
such efforts, from the introduction of the AirPort router and server end.
to the development of the Zero configuration networking
system and their implementation of it, Bonjour. Because of this dynamism, users could not be expected
to access services by specifying their address. Instead,
all services had names which, being chosen by humans,
could be expected to be meaningful to users, and also
3.2 Design could be sufficiently long to minimize the chance of con-
flicts.
The AppleTalk design rigorously followed the OSI model
As NBP names translated to an address, which included
of protocol layering. Unlike most of the early LAN a socket number as well as a node number, a name in Ap-
systems, AppleTalk was not built using the archetypal
pleTalk mapped directly to a service being provided by
Xerox XNS system. The intended target was not Eth- a machine, which was entirely separate from the name
ernet, and it did not have 48-bit addresses to route. Nev-
of the machine itself. Thus, services could be moved to
ertheless, many portions of the AppleTalk system have a different machine and, so long as they kept the same
direct analogs in XNS. service name, there was no need for users to do anything
One key differentiation for AppleTalk was it contained different in order to continue accessing the service. And
two protocols aimed at making the system completely the same machine could host any number of instances of
self-configuring. The AppleTalk address resolution pro- services of the same type, without any network connec-
tocol (AARP) allowed AppleTalk hosts to automatically tion conflicts.
generate their own network addresses, and the Name Contrast this with A records in the DNS, where a name
Binding Protocol (NBP) was a dynamic system for map- translates to a machine’s address, not including the port
ping network addresses to user-readable names. Al- number that might be providing a service. Thus, if people
though systems similar to AARP existed in other systems, are accustomed to using a particular machine name to ac-
Banyan VINES for instance, nothing like NBP has existed cess a particular service, their access will break when the
until recently. service is moved to a different machine. This can be mit-
Both AARP and NBP had defined ways to allow “con- igated somewhat by insistence on using CNAME records
troller” devices to override the default mechanisms. The indicating service rather than actual machine names to
34 CHAPTER 3. APPLETALK

refer to the service, but there is no way of guaranteeing Macintosh HFS filesystem. AFP is still in use in Mac
that users will follow such a convention. Some newer pro- OS X, even though most other AppleTalk protocols have
tocols, such as Kerberos and Active Directory use DNS been deprecated.
SRV records to identify services by name, which is much
closer to the AppleTalk model.
3.4.4 AppleTalk Session Protocol
3.4 Protocols ASP was an intermediate protocol, built on top of ATP,
which in turn was the foundation of AFP. It provided
3.4.1 AppleTalk Address Resolution Pro- basic services for requesting responses to arbitrary com-
tocol mands d performing out-of-band status queries. It also
allowed the server to send asynchronous attention mes-
AARP resolves AppleTalk addresses to link layer, usually sages to the client.
MAC, addresses. It is functionally equivalent to ARP.
AARP is a fairly simple system. When powered on, an
AppleTalk machine broadcasts an AARP probe packet 3.4.5 Datagram Delivery Protocol
asking for a network address, intending to hear back from
controllers such as routers. If no address is provided, one DDP was the lowest-level data-link-independent trans-
is picked at random from the “base subnet”, 0. It then port protocol. It provided a datagram service with no
broadcasts another packet saying “I am selecting this ad- guarantees of delivery. All application-level protocols,
dress”, and then waits to see if anyone else on the net- including the infrastructure protocols NBP, RTMP and
work complains. If another machine has that address, it ZIP, were built on top of DDP. AppleTalk’s DDP corre-
will pick another address, and keep trying until it finds sponds closely to the Network layer of the Open Systems
a free one. On a network with many machines it may Interconnection (OSI) communication model.
take several tries before a free address is found, so for
performance purposes the successful address is “written
down” in NVRAM and used as the default address in the
future. This means that in most real-world setups where
3.4.6 Name Binding Protocol
machines are added a few at a time, only one or two tries
are needed before the address effectively become con- Name Binding Protocol was a dynamic, distributed sys-
stant. tem for managing AppleTalk names. When a service
started up on a machine, it registered a name for itself
as chosen by a human administrator. At this point, NBP
3.4.2 AppleTalk Data Stream Protocol provided a system for checking that no other machine had
already registered the same name. Later, when a client
This was a comparatively late addition to the AppleTalk wanted to access that service, it used NBP to query ma-
protocol suite, done when it became clear that a TCP- chines to find that service. NBP provided browseability
style reliable connection-oriented transport was needed. (“what are the names of all the services available?") as
Significant differences from TCP were: well as the ability to find a service with a particular name.
Names were human readable, containing spaces, upper
• a connection attempt could be rejected and lower case letters, and including support for search-
ing.
• there were no “half-open” connections; once one
end initiated a tear-down of the connection, the
whole connection would be closed (i.e., ADSP is
full-duplex, not dual simplex). 3.4.7 AppleTalk Echo Protocol

AEP (AppleTalk Echo Protocol) is a transport layer pro-


3.4.3 Apple Filing Protocol tocol designed to test the reachability of network nodes.
AEP generates packets to be sent to the network node
The Apple Filing Protocol (AFP), formerly AppleTalk and is identified in the Type field of a packet as an AEP
Filing Protocol, is the protocol for communicating with packet. The packet is first passed to the source DDP. Af-
AppleShare file servers. Built on top of AppleTalk Ses- ter it is identified as an AEP packet, it is forwarded to the
sion Protocol (for legacy AFP over DDP) or the Data node where the packet is examined by the DDP at the des-
Stream Interface (for AFP over TCP), it provides ser- tination. After the packet is identified as an AEP packet,
vices for authenticating users (extensible to different au- the packet is then copied and a field in the packet is al-
thentication methods including two-way random-number tered to create an AEP reply packet, and is then returned
exchange) and for performing operations specific to the to the source node.
3.5. PHYSICAL IMPLEMENTATION 35

3.4.8 Printer Access Protocol termination for that connector.


The initial default hardware implementation for
PAP was the standard way of communicating with
PostScript printers. It was built on top of ATP. When
a PAP connection was opened, each end sent the other an
ATP request which basically meant “send me more data”.
The client’s response to the server was to send a block of
PostScript code, while the server could respond with any
diagnostic messages that might be generated as a result,
after which another “send-more-data” request was sent.
This use of ATP provided automatic flow control; each
end could only send data to the other end if there was an
outstanding ATP request to respond to.
PAP also provided for out-of-band status queries, han-
dled by separate ATP transactions. Even while it was
busy servicing a print job from one client, a PAP server
could continue to respond to status requests from any
number of other clients. This allowed other Macintoshes
on the LAN that were waiting to print to display status
messages indicating that the printer was busy, and what
the job was that it was busy with.
Farallon PhoneNET adapter.

3.4.9 Routing Table Maintenance Protocol

RTMP was the protocol by which routers kept each other


informed about the topology of the network. This was the
only part of AppleTalk that required periodic unsolicited
broadcasts: every 10 seconds, each router had to send out AppleTalk was a high-speed serial protocol known as
a list of all the network numbers it knew about and how LocalTalk that used the Macintosh's built-in RS-422
far away it thought they were. ports at 230.4 kbit/s. LocalTalk used a splitter box
in the RS-422 port to provide an upstream and down-
stream cable from a single port. The topology was a
3.4.10 Zone Information Protocol bus: cables were daisy-chained from each connected
machine to the next, up to the maximum of 32 permitted
ZIP was the protocol by which AppleTalk network num- on any LocalTalk segment. The system was slow by
bers were associated with zone names. A zone was a today’s standards, but at the time the additional cost and
subdivision of the network that made sense to humans complexity of networking on PC machines was such
(for example, “Accounting Department”); but while a that it was common that Macs were the only networked
network number had to be assigned to a topologically- personal computers in an office. Other larger computers,
contiguous section of the network, a zone could include such as UNIX or VAX workstations, would commonly
several different discontiguous portions of the network. be networked via Ethernet.
Other physical implementations were also available. One
common replacement for LocalTalk was PhoneNet, a
3.5 Physical implementation 3rd party solution (from a company called Farallon,
now called Netopia) that also used the RS-422 port and
was indistinguishable from LocalTalk as far as Apple’s
LocalTalk port drivers were concerned, but ran over
the two unused wires in standard four-wire phone ca-
bling. PhoneNet was considerably less expensive to in-
stall and maintain. Ethernet and Token Ring was also
supported, known as EtherTalk and TokenTalk respec-
Interior
tively. EtherTalk in particular gradually became the dom-
of Apple LocalTalk interface box. In 1989, these boxes inant implementation method for AppleTalk as Ethernet
typically cost US $90 each. The connectors feature became generally popular in the PC industry throughout
automatic electrical termination of the LocalTalk signal the 1990s. Besides AppleTalk and TCP/IP, any Ethernet
bus; insertion of a LocalTalk bus cable depresses a network could also simultaneously carry other protocols
normally closed switch behind the connector, disabling such as DECnet and IPX.
36 CHAPTER 3. APPLETALK

3.6 Networking model 3.9 See also


• Netatalk is a free, open-source implementation of
the AppleTalk suite of protocols.
3.7 Versions
• Network File System
• Remote File System

3.8 Cross-platform solutions • Samba


• Server Message Block

When AppleTalk was first introduced, the dominant of-


fice computing platform was the PC compatible running 3.10 Notes
MS-DOS. Apple introduced the AppleTalk PC Card in
early 1987, allowing PCs to join AppleTalk networks and [1] AppleBus is mentioned by name in Steve Jobs’ introduc-
print to LaserWriter printers.[33] A year later AppleShare tion of the Macintosh at the Boston Computer Society
PC was released, allowing PCs to access AppleShare file meeting in 1984. It appears just after the 7:20 mark in
servers.[34] the video.
The “TOPS Teleconnector”[35] MS-DOS networking sys-
tem over AppleTalk system enabled MS-DOS PCs to
communicate over AppleTalk network hardware; it com- 3.11 References
prised an AppleTalk interface card for the PC and a suite
of networking software allowing such functions as file, 3.11.1 Citations
drive and printer sharing. As well as allowing the con-
struction of a PC-only AppleTalk network, it allowed [1] John Markoff, “Apple plans slower, affordable local area
communication between PCs and Macs with TOPS soft- network”, InfoWorld, 14 February 1983, p. 14
ware installed. (Macs without TOPS installed could use
[2] Oppenheimer 2004, Slide 3.
the same network but only to communicate with other
Apple machines.) The Mac TOPS software did not match [3] David Ahl, “1983 National Computer Conference, May
the quality of Apple’s own either in ease of use or in ro- 16-19, Anaheim, California”, Creative Computing, August
bustness and freedom from crashes, but the DOS software 1983, p. 188
was relatively simple to use in DOS terms, and was robust.
[4] Sidhu, Andrews & Oppenheiner 1989, p. xxiii.
The BSD and Linux operating systems support Ap-
pleTalk through an open source project called Netatalk, [5] Bartimo 1984, p. 45.
which implements the complete protocol suite and allows [6] Oppenheimer 2004, Slide 6.
them to both act as native file or print servers for Macin-
tosh computers, and print to LocalTalk printers over the [7] Zilog Z8530 User’s Manual, Zilog, p. 1-1
network. [8] Oppenheimer 2004, Slide 9.
The Windows Server operating systems supported Ap-
[9] “Token-Ring Technical Summary”, Section 1.2
pleTalk starting with Windows NT and ending after
Windows Server 2003. Miramar included AppleTalk [10] Oppenheimer 2004, Slide 10.
in its PC MacLAN product which was discontinued
by CA in 2007. GroupLogic continues to bundle its [11] Jim Barimo, “Apple, waiting for IBM net, links micros
with AppleBus”, InfoWorld, 26 March 1984, pp 45-46
AppleTalk protocol with its ExtremeZ-IP server soft-
ware for Macintosh-Windows integration which supports [12] Oppenheimer 2004, Slide 15.
Windows 2008 Server and Windows Vista as well prior
versions. HELIOS Software GmbH offers a proprietary [13] Oppenheimer 2004, Slide 19.
implementation of the AppleTalk protocol stack, as part [14] Oppenheimer 2004, Slide 17.
of their HELIOS UB2 server. This is essentially a File
and Print Server suite that runs on a whole range of dif- [15] Lee Larson, “LocalTalk to EtherTalk?", Louisville Com-
ferent platforms. puter News, October 1999

In addition, Columbia University released the Columbia [16] “Apple Computer Ad - Powerbook Networking”
AppleTalk Package (CAP) which implemented the pro-
[17] Oppenheimer 2004, Slide 28.
tocol suite for various Unix flavors including Ultrix,
SunOS, *BSD and IRIX. This package is no longer ac- [18] Tim Brown, “AppleTalk Made Faster”, Network World,
tively maintained. 26 October 1987, p. 27
3.12. EXTERNAL LINKS 37

[19] John Battelle, “DaynaTalk accelerators ship”, MacWEEK,


23 May 1989

[20] “Get More Net Work Out Of Your Network”, InfoWorld,


11 December 1989

[21] Oppenheimer 2004, Slide 30.

[22] Oppenheimer 2004, Slide 31.

[23] Oppenheimer 2004, Slide 32.

[24] Laura DiDio, “Study finds NetWare to be OS of choice”,


Network World, 11 July 1988, p. 17.

[25] Oppenheimer 2004, Slide 34.

[26] Oppenheimer 2004, Slide 36.

[27] Oppenheimer 2004, Slide 43.

[28] Oppenheimer 2004, Slide 46.

[29] Oppenheimer 2004, Slide 51.

[30] Oppenheimer 2004, Slide 54.

[31] “Mac OS X v10.6: Mac 101 – Printing”. Retrieved on 2


September 2009.

[32] Sidhu, Andrews & Oppenheiner 1989.

[33] Mary Petrosky, “AppleShare airs at last”, Network World,


2 February 1987, p. 4

[34] “Apple Starts Shipping AppleShare PC Software”, In-


foWorld, 18 January 1988, p. 29

[35] Mark Stephens, “TOPS Teleconnector Connets PC’s with


Own Flashtalk Networks”, InfoWorld, 25 January 1988,
p. 12

3.11.2 Bibliography
• Sidhu, Gursharan; Andrews, Richard; Oppenheiner,
Alan (1989). Inside AppleTalk, Second Edition
(PDF). Addison-Wesley. ISBN 0-201-55021-0.

• Bartimo, Jim (26 March 1984). “Apple, waiting for


IBM net, links micros with AppleBus”. InfoWorld:
45.
• Oppenheimer, Alan (January 2004). “A History of
Macintosh Networking”. MacWorld Expo.

3.12 External links


• AppleTalk – Directory & Informational Resource
• System 7.x.x: AppleTalk and ADSP Versions
Chapter 4

ARPANET

For the producer, see Gerald Donald. For the seventh ing, as in the traditional telephone circuit, wherein each
episode of the second season of the television series The telephone call is allocated a dedicated, end to end, elec-
Americans, see Arpanet (The Americans). tronic connection between the two communicating sta-
See also: History of the Internet tions. Such stations might be telephones or computers.
The (temporarily) dedicated line is typically composed
The Advanced Research Projects Agency Network of many intermediary lines which are assembled into a
chain that stretches all the way from the originating station
(ARPANET) was an early packet switching network
and the first network to implement the protocol suite to the destination station. With packet switching, a data
system could use a single communication link to com-
TCP/IP. Both technologies became the technical foun-
dation of the Internet. ARPANET was initially funded municate with more than one machine by collecting data
by the Advanced Research Projects Agency (ARPA) of into datagrams and transmitting these as packets onto the
the United States Department of Defense.[1][2][3][4][5] attached network link, as soon as the link becomes idle.
Thus, not only can the link be shared, much as a single
The packet switching methodology employed in the post box can be used to post letters to different desti-
ARPANET was based on concepts and designs by Amer- nations, but each packet can be routed independently of
icans Leonard Kleinrock and Paul Baran, British scien- other packets.[7]
tist Donald Davies, and Lawrence Roberts of the Lincoln
Laboratory.[6] The TCP/IP communications protocols The earliest ideas for a computer network intended to al-
were developed for ARPANET by computer scientists low general communications among computer users were
Robert Kahn and Vint Cerf, and incorporated concepts formulated by computer scientist J. C. R. Licklider of
by Louis Pouzin for the French CYCLADES project. Bolt, Beranek and Newman (BBN), in April 1963, in
memoranda discussing the concept of the "Intergalactic
As the project progressed, protocols for internetworking Computer Network". Those ideas encompassed many
were developed by which multiple separate networks of the features of the contemporary Internet. In Octo-
could be joined into a network of networks. Access to ber 1963, Licklider was appointed head of the Behavioral
the ARPANET was expanded in 1981 when the National Sciences and Command and Control programs at the De-
Science Foundation (NSF) funded the Computer Sci- fense Department’s Advanced Research Projects Agency
ence Network (CSNET). In 1982, the Internet protocol (ARPA). He convinced Ivan Sutherland and Bob Taylor
suite (TCP/IP) was introduced as the standard network- that this network concept was very important and mer-
ing protocol on the ARPANET. In the early 1980s the ited development, although Licklider left ARPA before
NSF funded the establishment for national supercomput- any contracts were assigned for development.[8]
ing centers at several universities, and provided intercon-
nectivity in 1986 with the NSFNET project, which also Sutherland and Taylor continued their interest in cre-
created network access to the supercomputer sites in the ating the network, in part, to allow ARPA-sponsored
United States from research and education organizations. researchers at various corporate and academic locales
ARPANET was decommissioned in 1990. to utilize computers provided by ARPA, and, in part,
to quickly distribute new software and other computer
science results.[9] Taylor had three computer terminals
in his office, each connected to separate computers,
4.1 History which ARPA was funding: one for the System Develop-
ment Corporation (SDC) Q-32 in Santa Monica, one for
Project Genie at the University of California, Berkeley,
Packet switching—today the dominant basis for data and another for Multics at the Massachusetts Institute of
communications worldwide—was a new concept at the Technology. Taylor recalls the circumstance: “For each
time of the conception of the ARPANET. Prior to the of these three terminals, I had three different sets of user
advent of packet switching, both voice and data commu- commands. So, if I was talking online with someone at
nications had been based on the idea of circuit switch-

38
4.1. HISTORY 39

S.D.C., and I wanted to talk to someone I knew at Berke- magnetic-core memory, and a 16-channel Direct Multi-
ley, or M.I.T., about this, I had to get up from the S.D.C. plex Control (DMC) direct memory access unit.[23] The
terminal, go over and log into the other terminal and get DMC established custom interfaces with each of the host
in touch with them. I said, “Oh Man!", it’s obvious what computers and modems. In addition to the front-panel
to do: If you have these three terminals, there ought to lamps, the DDP-516 computer also features a special set
be one terminal that goes anywhere you want to go. That of 24 indicator lamps showing the status of the IMP com-
idea is the ARPANET”.[10] munication channels. Each IMP could support up to four
Meanwhile, since the early 1960s, Paul Baran at the local hosts, and could communicate with up to six remote
IMPs via leased lines. The network connected one com-
RAND Corporation had been researching systems that
could survive nuclear war and developed the idea of puter in Utah with three in California. Later, the De-
partment of Defense allowed the universities to join the
distributed adaptive message block switching.[11] Donald
Davies at the United Kingdom’s National Physical Labo- network for sharing hardware and software resources.
ratory (NPL) independently invented the same concept in
1965.[12][13] His work, presented by a colleague, initially
4.1.2 Debate on design goals
caught the attention of ARPANET developers at a con-
ference in Gatlinburg, Tennessee, in October 1967.[14]
In A Brief History of the Internet, the Internet Society de-
He gave the first public demonstration, having coined the
nies that ARPANET was designed to survive a nuclear
term packet switching, on 5 August 1968 and incorporated
attack:
it into the NPL network in England.[15] Larry Roberts
at ARPA applied Davies’ concepts of packet switching
for the ARPANET.[16] The NPL network followed by It was from the RAND study that the false ru-
ARPANET were the first two networks in the world to use mor started, claiming that the ARPANET was
packet switching,[17][18] and were themselves connected somehow related to building a network resis-
together in 1973.[19][20] The NPL network was using line tant to nuclear war. This was never true of the
speeds of 768 kbit/s, and the proposed line speed for ARPANET; only the unrelated RAND study
ARPANET was upgraded from 2.4 kbit/s to 50 kbit/s.[21] on secure voice considered nuclear war. How-
ever, the later work on Internetting did empha-
size robustness and survivability, including the
4.1.1 Creation capability to withstand losses of large portions
of the underlying networks.[24]
By mid-1968, Taylor had prepared a complete plan for
a computer network, and, after ARPA’s approval, a The RAND study was conducted by Paul Baran and pio-
Request for Quotation (RFQ) was issued for 140 poten- neered packet switching.[11] In an interview he confirmed
tial bidders. Most computer science companies regarded that while ARPANET did not exactly share his project’s
the ARPA–Taylor proposal as outlandish, and only twelve goal, his work had greatly contributed to the develop-
submitted bids to build a network; of the twelve, ARPA ment of ARPANET.[25] Minutes taken by Elmer Shapiro
regarded only four as top-rank contractors. At year’s end, of Stanford Research Institute at the ARPANET design
ARPA considered only two contractors, and awarded the meeting of 9–10 Oct. 1967 indicate that a version of
contract to build the network to BBN Technologies on 7 Baran’s routing method and suggestion of using a fixed
April 1969. The initial, seven-person BBN team were packet size was expected to be employed.[26]
much aided by the technical specificity of their response
to the ARPA RFQ, and thus quickly produced the first According to Stephen J. Lukasik, who as Deputy Direc-
working system. This team was led by Frank Heart. The tor and Director of DARPA (1967–1974) was “the per-
BBN-proposed network closely followed Taylor’s ARPA son who signed most of the checks for Arpanet’s devel-
plan: a network composed of small computers called opment":
Interface Message Processors (or IMPs), similar to the
later concept of routers, that functioned as gateways in- The goal was to exploit new computer tech-
terconnecting local resources. At each site, the IMPs nologies to meet the needs of military com-
performed store-and-forward packet switching functions, mand and control against nuclear threats,
and were interconnected with leased lines via telecom- achieve survivable control of US nuclear
munication data sets (modems), with initial data rates forces, and improve military tactical and man-
of 56kbit/s. The host computers were connected to the agement decision making.[27]
IMPs via custom serial communication interfaces. The
system, including the hardware and the packet switching
The ARPANET incorporated distributed computation
software, was designed and installed in nine months.[22]
(and frequent re-computation) of routing tables. This
The first-generation IMPs were built by BBN Technolo- was a major contribution to the survivability of the
gies using a rugged computer version of the Honeywell ARPANET in the face of significant destruction - even
DDP-516 computer configured with 24KB of expandable by a nuclear attack. Such auto-routing was technically
40 CHAPTER 4. ARPANET

quite challenging to construct at the time. The fact that it NLS system, a very important early hypertext sys-
was incorporated into the early ARPANET made many tem, and would run the Network Information Cen-
believe that this had been a design goal. ter (NIC), with the SDS 940 that ran NLS, named
The ARPANET was designed to survive subordinate- “Genie”, being the first host attached;
network losses, since the principal reason was that the • University of California, Santa Barbara (UCSB),
switching nodes and network links were unreliable, even with the Culler-Fried Interactive Mathematics Cen-
without any nuclear attacks. Resource scarcity supported ter’s IBM 360/75, running OS/MVT being the ma-
the creation of the ARPANET, according to Charles chine attached;
Herzfeld, ARPA Director (1965–1967):
• The University of Utah's Computer Science Depart-
ment, where Ivan Sutherland had moved, running a
The ARPANET was not started to create a
DEC PDP-10 operating on TENEX.
Command and Control System that would sur-
vive a nuclear attack, as many now claim. To
build such a system was, clearly, a major mili-The first successful message on the ARPANET was sent
tary need, but it was not ARPA’s mission to do by UCLA student programmer Charley Kline, at 10:30
pm on 29 October 1969, from Boelter Hall 3420.[32]
this; in fact, we would have been severely crit-
icized had we tried. Rather, the ARPANET Kline transmitted from the university’s SDS Sigma 7 Host
computer to the Stanford Research Institute’s SDS 940
came out of our frustration that there were only
a limited number of large, powerful research Host computer. The message text was the word login; on
computers in the country, and that many re- an earlier attempt the l and the o letters were transmitted,
search investigators, who should have access but the system then crashed. Hence, the literal first mes-
to them, were geographically separated from sage over the ARPANET was lo. About an hour later,
them.[28] after the programmers repaired the code that caused the
crash, the SDS Sigma 7 computer effected a full login.
The first permanent ARPANET link was established on
The ARPANET was operated by the military during the 21 November 1969, between the IMP at UCLA and the
two decades of its existence, until 1990.[29][30] IMP at the Stanford Research Institute. By 5 December
1969, the entire four-node network was established.[33]

4.1.3 ARPANET deployed


4.1.4 Growth and evolution
In March 1970, the ARPANET reached the East Coast of
the United States, when an IMP at BBN in Cambridge,
Massachusetts was connected to the network. There-
after, the ARPANET grew: 9 IMPs by June 1970 and 13
IMPs by December 1970, then 18 by September 1971
(when the network included 23 university and govern-
ment hosts); 29 IMPs by August 1972, and 40 by Septem-
ber 1973. By June 1974, there were 46 IMPs, and in
July 1975, the network numbered 57 IMPs. By 1981,
the number was 213 host computers, with another host
Historical document: First ARPANET IMP log: the first message connecting approximately every twenty days.[31]
ever sent via the ARPANET, 10:30 pm, 29 October 1969. This In 1973 a transatlantic satellite link connected
IMP Log excerpt, kept at UCLA, describes setting up a message the Norwegian Seismic Array (NORSAR) to the
transmission from the UCLA SDS Sigma 7 Host computer to the ARPANET, making Norway the first country outside the
SRI SDS 940 Host computer.
US to be connected to the network. At about the same
time a terrestrial circuit added a London IMP.[34]
The initial ARPANET consisted of four IMPs:[31]
In 1975, the ARPANET was declared “operational”.
The Defense Communications Agency took control since
• University of California, Los Angeles (UCLA),
ARPA was intended to fund advanced research.[31]
where Leonard Kleinrock had established a Net-
work Measurement Center, with an SDS Sigma 7 In September 1984 work was completed on restructuring
being the first computer attached to it; the ARPANET giving U.S. military sites their own Mili-
tary Network (MILNET) for unclassified defense depart-
• The Augmentation Research Center at Stanford ment communications.[35][36] Controlled gateways con-
Research Institute (now SRI International), where nected the two networks. The combination was called the
Douglas Engelbart had created the ground-breaking Defense Data Network (DDN).[37] Separating the civil
4.2. SOFTWARE AND PROTOCOLS 41

and military networks reduced the 113-node ARPANET ... it is somewhat fitting to end on the note that
by 68 nodes. The MILNET later became the NIPRNet. the ARPANET program has had a strong and
direct feedback into the support and strength
of computer science, from which the network,
4.1.5 Rules and etiquette itself, sprang.[44]

Because of its government funding, certain forms of traf- In the wake of ARPANET being formally decom-
fic were discouraged or prohibited. A 1982 handbook missioned on 28 February 1990, Vinton Cerf wrote
on computing at MIT’s AI Lab stated regarding network the following lamentation, entitled “Requiem of the
etiquette:[38] ARPANET":[45]

It is considered illegal to use the ARPANet It was the first, and being first, was best,
for anything which is not in direct support of
Government business ... personal messages but now we lay it down to ever rest.
to other ARPANet subscribers (for example,
to arrange a get-together or check and say Now pause with me a moment, shed some
a friendly hello) are generally not considered tears.
harmful ... Sending electronic mail over the For auld lang syne, for love, for years and years
ARPANet for commercial profit or political
purposes is both anti-social and illegal. By of faithful service, duty done, I weep.
sending such messages, you can offend many Lay down thy packet, now, O friend, and sleep.
people, and it is possible to get MIT in serious -Vinton Cerf
trouble with the Government agencies which
manage the ARPANet. Senator Albert Gore, Jr. began to craft the High Per-
formance Computing and Communication Act of 1991
(commonly referred to as “The Gore Bill”) after hearing
4.1.6 Technology the 1988 report toward a National Research Network sub-
mitted to Congress by a group chaired by Leonard Klein-
Support for inter-IMP circuits of up to 230.4 kbit/s was rock, professor of computer science at UCLA. The bill
added in 1970, although considerations of cost and IMP was passed on 9 December 1991 and led to the National
processing power meant this capability was not actively Information Infrastructure (NII) which Al Gore called the
used. "information superhighway". ARPANET was the subject
[46][47]
1971 saw the start of the use of the non-ruggedized (and of two IEEE Milestones, both dedicated in 2009.
therefore significantly lighter) Honeywell 316 as an IMP.
It could also be configured as a Terminal Interface Pro-
cessor (TIP), which provided terminal server support for 4.2 Software and protocols
up to 63 ASCII serial terminals through a multi-line con-
troller in place of one of the hosts.[39] The 316 featured a The starting point for host-to-host communication on the
greater degree of integration than the 516, which made it ARPANET in 1969 was the 1822 protocol, which defined
less expensive and easier to maintain. The 316 was con- the transmission of messages to an IMP.[48] The message
figured with 40 kB of core memory for a TIP. The size of format was designed to work unambiguously with a broad
core memory was later increased, to 32 kB for the IMPs, range of computer architectures. An 1822 message es-
and 56 kB for TIPs, in 1973. sentially consisted of a message type, a numeric host ad-
In 1975, BBN introduced IMP software running on the dress, and a data field. To send a data message to another
Pluribus multi-processor. These appeared in a few sites. host, the transmitting host formatted a data message con-
In 1981, BBN introduced IMP software running on its taining the destination host’s address and the data mes-
own C/30 processor product. sage being sent, and then transmitted the message through
the 1822 hardware interface. The IMP then delivered the
In 1983, TCP/IP protocols replaced NCP as the message to its destination address, either by delivering
ARPANET’s principal protocol, and the ARPANET then it to a locally connected host, or by delivering it to an-
became one subnet of the early Internet.[40][41] other IMP. When the message was ultimately delivered
The original IMPs and TIPs were phased out as the to the destination host, the receiving IMP would transmit
ARPANET was shut down after the introduction of the a Ready for Next Message (RFNM) acknowledgement to
NSFNet, but some IMPs remained in service as late as the sending, host IMP.
July 1990.[42][43] Unlike modern Internet datagrams, the ARPANET was
The ARPANET Completion Report, jointly published by designed to reliably transmit 1822 messages, and to in-
BBN and ARPA, concludes that: form the host computer when it loses a message; the
42 CHAPTER 4. ARPANET

contemporary IP is unreliable, whereas the TCP is re- 4.3 ARPANET in popular culture
liable. Nonetheless, the 1822 protocol proved inade-
quate for handling multiple connections among differ-
• Computer Networks: The Heralds of Resource Shar-
ent applications residing in a host computer. This prob-
ing, a 30-minute documentary film[50] featuring
lem was addressed with the Network Control Program
Fernando J. Corbato, J.C.R. Licklider, Lawrence
(NCP), which provided a standard method to establish
G. Roberts, Robert Kahn, Frank Heart, William
reliable, flow-controlled, bidirectional communications
R. Sutherland, Richard W. Watson, John R. Pasta,
links among different processes in different host com-
Donald W. Davies, and economist, George W.
puters. The NCP interface allowed application soft-
Mitchell.
ware to connect across the ARPANET by implementing
higher-level communication protocols, an early example
• “Scenario”, a February 1985 episode of the U.S.
of the protocol layering concept incorporated to the OSI
television sitcom Benson (season 6, episode 20), was
model.[40]
the first incidence of a popular TV show directly
In 1983, TCP/IP protocols replaced NCP as the referencing the Internet or its progenitors. The
ARPANET’s principal protocol, and the ARPANET then show includes a scene in which the ARPANET is
became one component of the early Internet.[41] accessed.[51]

• There is an electronic music artist known as


“Arpanet”, Gerald Donald, one of the members of
4.2.1 Network applications Drexciya. The artist’s 2002 album Wireless Internet
features commentary on the expansion of the inter-
NCP provided a standard set of network services that net via wireless communication, with songs such as
could be shared by several applications running on a sin- NTT DoCoMo, dedicated to the mobile communi-
gle host computer. This led to the evolution of applica- cations giant based in Japan.
tion protocols that operated, more or less, independently
of the underlying network service. When the ARPANET • Thomas Pynchon mentions ARPANET in his 2009
migrated to the Internet protocols in 1983, the major ap- novel Inherent Vice, which is set in Los Angeles in
plication protocols migrated with it. 1970, and in his 2013 novel Bleeding Edge.

• The 1993 television series The X-Files featured the


E-mail In 1971, Ray Tomlinson, of BBN sent the first ARPANET in a season 5 episode, titled "Unusual
network e-mail (RFC 524, RFC 561).[49] By 1973, Suspects". John Fitzgerald Byers offers to help Su-
e-mail constituted 75 percent of ARPANET traffic. san Modeski (known as Holly . . . “just like the
sugar”) by hacking into the ARPANET to obtain
sensitive information.[52]
File transfer By 1973, the File Transfer Protocol
(FTP) specification had been defined (RFC 354)
• In the spy-drama television series The Ameri-
and implemented, enabling file transfers over the
cans, a Russian scientist defector offers access to
ARPANET.
ARPANET to the Russians in a plea to not be repa-
triated (Season 2 Episode 5 “The Deal”). Episode
Voice traffic The Network Voice Protocol (NVP) spec- 7 of Season 2 is named 'ARPANET' and features
ifications were defined in 1977 (RFC 741), then im- Russian infiltration to bug the network.
plemented, but, because of technical shortcomings,
conference calls over the ARPANET never worked • In the television series Person of Interest, main char-
well; the contemporary Voice over Internet Protocol acter Harold Finch hacked ARPANET in 1980 us-
(packet voice) was decades away. ing a homemade computer during his first efforts to
built a prototype of the Machine.[53][54] This corre-
sponds with the real life virus that occurred in Octo-
ber of that year that temporarily halted ARPANET
4.2.2 Password protection functions.[55][56] The ARPANET hack was first dis-
cussed in the episode 2PiR where a computer sci-
The Purdy Polynomial hash algorithm was developed for ence teacher called it the most famous hack in his-
ARPANET to protect passwords in 1971 at the request of tory and one that was never solved. Finch later men-
Larry Roberts, head of ARPA at that time. It computed tioned it to Person of Interest Caleb Phipps and his
a polynomial of degree 224 + 17 modulo the 64-bit prime role was first indicated when he showed knowledge
p = 264 - 59. The algorithm was later used by DEC to that it was done by “a kid with a homemade com-
hash passwords in their OpenVMS operating system, and puter” which Phipps, who had researched the hack,
is still being used for this purpose. had never heard before.
4.5. REFERENCES 43

4.4 See also [12] Scantlebury, Roger (25 June 2013). "Internet pioneers air-
brushed from history". The Guardian. Retrieved 1 August
2015.
• .arpa, a top-level domain used exclusively for tech-
nical infrastructure purposes [13] "Packets of data were the key...". NPL. Retrieved 1 Au-
gust 2015.
• AMPRNet, AMateur Packet Radio Network
[14] Isaacson, Walter (2014). The Innovators: How a Group of
• Computer Networks: The Heralds of Resource Shar- Hackers, Geniuses, and Geeks Created the Digital Revolu-
ing—1972 documentary film tion. Simon & Schuster. p. 237. ISBN 9781476708690.

• NPL network [15] “The accelerator of the modern age”. BBC News. 5 Au-
gust 2008. Retrieved 19 May 2009.
• Project Cybersyn—1970 Chilean national net
[16] Cambell-Kelly, Martin (Autumn 2008). “Pioneer Pro-
project
files: Donald Davies”. Computer Resurrection (44). ISSN
• Usenet, “A Poor Man’s ARPAnet” 0958-7403.

[17] Roberts, Lawrence G. (November 1978). “The Evolution


of Packet Switching”. Retrieved 9 April 2016.
4.5 References [18] “Donald Davies”. thocp.net; “Donald Davies”. inter-
nethalloffame.org.
[1] L.A Lievrouw - Handbook of New Media: Student Edi-
tion (p.253) (edited by L.A Lievrouw, S.M. Livingstone), [19] C. Hempstead; W. Worthington. Encyclopedia of 20th-
published by SAGE 2006 (abridged, reprint, revised), 475 Century Technology. Routledge 8 Aug 2005, 992 pages,
pages, ISBN 1412918731 [Retrieved 2015-08-15] (edited by C. Hempstead, W. Worthington),. Retrieved
2015-08-15.(source: Gatlinburg, ... Association for Com-
[2] G. Schneider; J. Evans; K. Pinard. The Internet - Il- puting Machinery)
lustrated. published by Cengage Learning 26 Oct 2009,
296 pages, ISBN 0538750987, Available Titles Skills As- [20] M. Ziewitz & I. Brown (2013). Research Handbook on
sessment Manager (SAM) - Office 2010 Series Illustrated Governance of the Internet. Edward Elgar Publishing. p.
(Course Technology). Retrieved 2015-08-15. 7. ISBN 1849805040. Retrieved 2015-08-16.

[3] K.G. Coffman & A.M. Odlyzco - Optical Fiber Telecom- [21] “Brief History of the Internet”. Internet Society. Re-
munications IV-B: Systems and Impairments published by trieved April 9, 2016.
Academic Press 22 May 2002, 1022 pages, Optics and [22] “IMP – Interface Message Processor”, Living Internet
Photonics, ISBN 0080513190, (edited by I. Kaminow &
T. Li) [Retrieved 2015-08-15] [23] Wise, Adrian. “Honeywell DDP-516”. Old-
Computers.com. Retrieved 21 September 2008.
[4] R. Oppliger. Internet and Intranet Security (p.12). Artech
House, 1 Jan 2001, 403 pages, Artech House computer se- [24] “A Brief History of the Internet”. Internet Society.
curity series, ISBN 1580531660. Retrieved 2015-08-15. Archived from the original on 18 September 2008. Re-
trieved 20 September 2008.
[5] (ed. by H. Bidgoli). The Internet Encyclopedia, G – O.
published by John Wiley & Sons 11 May 2004, 840 pages, [25] Brand, Stewart (March 2001). “Founding Father”. Wired
ISBN 0471689963, Volume 2 of The Internet Encyclope- (9.03). Retrieved 31 December 2011.
dia. Retrieved 2015-08-15.
[26] “Shapiro: Computer Network Meeting of October 9-10,
[6] “Lawrence Roberts Manages The ARPANET Program”. 1967”. stanford.edu.
Living Internet.com. Retrieved 6 November 2008.
[27] Lukasik, Stephen J. (2011). “Why the Arpanet Was
[7] “Packet Switching History”, Living Internet, retrieved 26 Built”. IEEE Annals of the History of Computing. 33 (3):
August 2012 4–20. doi:10.1109/MAHC.2010.11.

[28] “Charles Herzfeld on ARPANET and Computers”.


[8] “J.C.R. Licklider And The Universal Network”, Living
About.com. Retrieved 21 December 2008.
Internet
[29] Janet Abbate (2000) Inventing the Internet pp.194-5
[9] “IPTO – Information Processing Techniques Office”, Liv-
ing Internet [30] Vernon W. Ruttan (2005) Is War Necessary for Economic
Growth? p.125
[10] John Markoff (20 December 1999). “An Internet Pio-
neer Ponders the Next Revolution”. The New York Times. [31] “ARPANET – The First Internet”, Living Internet
Archived from the original on 22 September 2008. Re-
trieved 20 September 2008. [32] Jessica Savio (1 April 2011). “Browsing history: A her-
itage site has been set up in Boelter Hall 3420, the room
[11] “Paul Baran and the Origins of the Internet”. RAND cor- the first Internet message originated in”. Daily Bruin.
poration. Retrieved 29 March 2011. UCLA.
44 CHAPTER 4. ARPANET

[33] Chris Sutton (2 September 2004). “Internet Began 35 [53] Season 2, Episode 11 “2πR”
Years Ago at UCLA with First Message Ever Sent Be-
tween Two Computers”. UCLA. Archived from the orig- [54] Season 3, Episode 12 “Aletheia”
inal on 8 March 2008.
[55] “BBC News - SCI/TECH - Hacking: A history”.
[34] “NORSAR and the Internet”. NORSAR (Norway Seis- bbc.co.uk.
mic Array Research). Retrieved 25 August 2012.
[56] “Hobbes’ Internet Timeline - the definitive ARPAnet &
[35] DEFENSE DATA NETWORK NEWSLETTER DDN- Internet history”. zakon.org.
NEWS 26, 6 May 1983

[36] ARPANET INFORMATION BROCHURE (NIC


50003) Defense Communications Agency, December 4.6 Further reading
1985.
• Norberg, Arthur L.; O'Neill, Judy E. (1996). Trans-
[37] Fritz E. Froehlich; Allen Kent (1990). “ARPANET, the
forming Computer Technology: Information Pro-
Defense Data Network, and Internet”. The Froehlich/Kent
Encyclopedia of Telecommunications. 1. CRC Press. pp. cessing for the Pentagon, 1962–1982. Johns Hop-
341–375. ISBN 978-0-8247-2900-4. kins University. pp. 153–196. ISBN 978-0-8018-
6369-1.
[38] Stacy, Christopher C. (7 September 1982). Getting Started
Computing at the AI Lab. AI Lab, Massachusetts Institute • A History of the ARPANET: The First Decade
of Technology. p. 9. (PDF) (Report). Arlington, VA: Bolt, Beranek &
Newman Inc. 1 April 1981.
[39] Kirstein, Peter T. (July–September 2009). “The Early
Days of the Arpanet”. IEEE Annals of the History of Com- • Hafner, Katie; Lyon, Matthew (1996). Where Wiz-
puting. 31 (3): 67. doi:10.1109/mahc.2009.35. ISSN ards Stay Up Late: The Origins of the Internet. Si-
1058-6180.
mon and Schuster. ISBN 0-7434-6837-6.
[40] “NCP – Network Control Program”, Living Internet
• Abbate, Janet (11 June 1999). Inventing the Internet.
[41] “TCP/IP Internet Protocol”, Living Internet Cambridge, MA: MIT Press. pp. 36–111. ASIN
B003VPWY6E. ISBN 0-262-01172-7.
[42] “NSFNET – National Science Foundation Network”, Liv-
ing Internet • Banks, Michael A. (2008). On the Way to the Web:
The Secret History of the Internet and Its Founders.
[43] “Digital Communication”.
APress/Springer Verlag. ISBN 1-4302-0869-4.
[44] “III”. A History of the ARPANET: The First Decade
(PDF) (Report). Arlington, VA: Bolt, Beranek & New- • Salus, Peter H. (1 May 1995). Casting the Net:
man Inc. 1 April 1981. p. 132. section 2.3.4 from ARPANET to Internet and Beyond. Addison-
Wesley. ISBN 978-0-201-87674-1.
[45] Abbate, Janet (11 June 1999). Inventing the Internet.
Cambridge, MA: MIT Press. ASIN B003VPWY6E. • Waldrop, M. Mitchell (23 August 2001). The
ISBN 0-262-01172-7. Dream Machine: J. C. R. Licklider and the Rev-
olution That Made Computing Personal. New
[46] "Milestones:Birthplace of the Internet, 1969”. IEEE
York: Viking. ASIN B00008MNVW. ISBN 0-670-
Global History Network. IEEE. Retrieved 4 August 2011.
89976-3.
[47] "Milestones:Inception of the ARPANET, 1969”. IEEE
Global History Network. IEEE. Retrieved 4 August 2011. • “The Computer History Museum, SRI International,
and BBN Celebrate the 40th Anniversary of First
[48] Interface Message Processor: Specifications for the Inter- ARPANET Transmission”. Computer History Mu-
connection of a Host and an IMP, Report No. 1822, Bolt seum. 27 October 2009.
Beranek and Newman, Inc. (BBN)

[49] Tomlinson, Ray. “The First Network Email”. BBN. Re-


trieved 6 March 2012.
4.6.1 Oral histories

[50] Steven King (Producer), Peter Chvany (Director/Editor) • “Oral history interview with Robert E. Kahn”. Uni-
(1972). Computer Networks: The Heralds of Resource versity of Minnesota, Minneapolis: Charles Bab-
Sharing. Retrieved 20 December 2011. bage Institute. 24 April 1990. Retrieved 15 May
2008. Focuses on Kahn’s role in the development of
[51] “Scenario”, Benson, Season 6, Episode 132 of 158, Amer-
computer networking from 1967 through the early
ican Broadcasting Company (ABC), Witt/Thomas/Harris
Productions, 22 February 1985 1980s. Beginning with his work at Bolt Beranek and
Newman (BBN), Kahn discusses his involvement
[52] The X-Files Season 5, Ep. 3 “Unusual Suspects”. as the ARPANET proposal was being written and
4.7. EXTERNAL LINKS 45

then implemented, and his role in the public demon- Sharing. Proceedings of the Spring Joint Computer
stration of the ARPANET. The interview continues Conference, Atlantic City, New Jersey.
into Kahn’s involvement with networking when he
moves to IPTO in 1972, where he was responsible • Heart, Frank; Kahn, Robert; Ornstein, Severo;
for the administrative and technical evolution of the Crowther, William; Walden, David (1970). The
ARPANET, including programs in packet radio, the Interface Message Processor for the ARPA Com-
development of a new network protocol (TCP/IP), puter Network (PDF). 1970 Spring Joint Computer
and the switch to TCP/IP to connect multiple net- Conference. AFIPS Proc. 36. pp. 551–567.
works. doi:10.1145/1476936.1477021.

• “Oral history interview with Vinton Cerf”. Univer- • Carr, Stephen; Crocker, Stephen; Cerf, Vinton
sity of Minnesota, Minneapolis: Charles Babbage (1970). Host-Host Communication Protocol in the
Institute. 24 April 1990. Retrieved 1 July 2008. ARPA Network. 1970 Spring Joint Computer
Cerf describes his involvement with the ARPA net- Conference. AFIPS Proc. 36. pp. 589–598.
work, and his relationships with Bolt Beranek and doi:10.1145/1476936.1477024. RFC 33 .
Newman, Robert Kahn, Lawrence Roberts, and the
Network Working Group. • Ornstein, Severo; Heart, Frank; Crowther, William;
Russell, S. B.; Rising, H. K.; Michel, A. (1972).
• “Oral history interview with Paul Baran”. University The Terminal IMP for the ARPA Computer Network.
of Minnesota, Minneapolis: Charles Babbage Insti- 1972 Spring Joint Computer Conference. AFIPS
tute. 5 March 1990. Retrieved 1 July 2008. Baran Proc. 40. pp. 243–254.
describes his work at RAND, and discusses his in-
teraction with the group at ARPA who were respon- • McQuillan, John; Crowther, William; Cosell,
sible for the later development of the ARPANET. Bernard; Walden, David; Heart, Frank (1972).
Improvements in the Design and Performance of the
• “Oral history interview with Leonard Kleinrock”.
ARPA Network. 1972 Fall Joint Computer Confer-
University of Minnesota, Minneapolis: Charles
ence part II. AFIPS Proc. 41. pp. 741–754.
Babbage Institute. 3 April 1990. Retrieved 1
July 2008. Kleinrock discusses his work on the • Feinler, Elizabeth J.; Postel, Jonathan B. (January
ARPANET. 1978). ARPANET Protocol Handbook, NIC 7104.
Menlo Park: Network Information Center (NIC),
• “Oral history interview with Larry Roberts”. Uni-
SRI International. ASIN B000EN742K.
versity of Minnesota, Minneapolis: Charles Bab-
bage Institute. 4 April 1989. Retrieved 1 July 2008.
• Roberts, Larry (November 1978). “The
• “Oral history interview with Stephen Lukasik”. Uni- Evolution of Packet Switching”. Proceed-
versity of Minnesota, Minneapolis: Charles Bab- ings of the IEEE. 66 (11): 1307–1313.
bage Institute. 17 October 1991. Retrieved 1 July doi:10.1109/PROC.1978.11141.
2008. Lukasik discusses his tenure at the Advanced
• Roberts, Larry (September 1986). “The
Research Projects Agency (ARPA), the develop-
ARPANET & Computer Networks”. ACM.
ment of computer networks and the ARPANET.

4.6.2 Detailed technical reference works 4.7 External links


• Roberts, Larry; Marrill, Tom (October 1966).
• “ARPANET Maps 1969 to 1977”. California State
Toward a Cooperative Network of Time-Shared
University, Dominguez Hills (CSUDH). 4 January
Computers. Fall AFIPS Conference.
1978. Retrieved 17 May 2012.
• Roberts, Larry (October 1967). Multiple computer
networks and intercomputer communication. ACM • Walden, David C. (February 2003). “Looking back
Symposium on Operating System Principles. at the ARPANET effort, 34 years later”. Living In-
ternet. East Sandwich, Massachusetts: livinginter-
• Davies, D. W.; Bartlett, K. A.; Scantlebury, R. A.; net.com. Retrieved 17 August 2005.
Wilkinson, P. T. (October 1967). A digital com-
munications network for computers giving rapid re- • “Images of ARPANET from 1964 onwards”. The
sponse at remote terminals. ACM Symposium on Computer History Museum. Retrieved 29 August
Operating Systems Principles. 2004. Timeline.

• Roberts, Larry; Wessler, Barry (May 1970). • “Paul Baran and the Origins of the Internet”. RAND
Computer Network Development to Achieve Resource Corporation. Retrieved 3 September 2005.
46 CHAPTER 4. ARPANET

• Kleinrock, Leonard. “The Day the Infant Inter-


net Uttered its First Words”. UCLA. Retrieved 11
November 2004. Personal anecdote of the first mes-
sage ever sent over the ARPANET
• “Doug Engelbart’s Role in ARPANET History”.
2008. Retrieved 3 September 2009.
• “Internet Milestones: Timeline of Notable Internet
Pioneers and Contributions”. Retrieved 6 January
2012. Timeline.

• Waldrop, Mitch (April 2008). “DARPA and the In-


ternet Revolution”. 50 years of Bridging the Gap.
DARPA. pp. 78–85. Retrieved 26 August 2012.

• “A picture of the ARPANET team”.


• “Robert X Cringely: A Brief History of the Inter-
net”.
Chapter 5

Asynchronous Transfer Mode

Asynchronous Transfer Mode (ATM) is, according to


the ATM Forum, “a telecommunications concept defined
by ANSI and ITU (formerly CCITT) standards for car-
riage of a complete range of user traffic, including voice,
data, and video signals”.[1] ATM was developed to meet
the needs of the Broadband Integrated Services Digital
Network, as defined in the late 1980s,[2] and designed to
unify telecommunication and computer networks. It was
designed for a network that must handle both traditional
high-throughput data traffic (e.g., file transfers), and real-
time, low-latency content such as voice and video. The
reference model for ATM approximately maps to the IBM Turboways ATM 155 PCI network interface card
three lowest layers of the ISO-OSI reference model:
network layer, data link layer, and physical layer.[3] ATM
is a core protocol used over the SONET/SDH backbone
of the public switched telephone network (PSTN) and
Integrated Services Digital Network (ISDN), but its use
is declining in favour of all IP.
ATM provides functionality that is similar to both circuit
switching and packet switching networks: ATM uses
asynchronous time-division multiplexing,[4][5] and en-
codes data into small, fixed-sized packets (ISO-OSI
frames) called cells. This differs from approaches such as
the Internet Protocol or Ethernet that use variable sized
packets and frames. ATM uses a connection-oriented
model in which a virtual circuit must be established be-
Marconi ForeRunnerLE 25 ATM PCI network interface card
tween two endpoints before the actual data exchange
begins.[5] These virtual circuits may be “permanent”, i.e.
dedicated connections that are usually preconfigured by 5.1.1 Cell size
the service provider, or “switched”, i.e. set up on a per-
call basis using signalling and disconnected when the call
If a speech signal is reduced to packets, and it is forced to
is terminated.
share a link with bursty data traffic (traffic with some large
ATM eventually became dominated by Internet Protocol data packets) then no matter how small the speech packets
(IP) only technology (and Wireless or Mobile ATM never could be made, they would always encounter full-size data
got any foothold). packets. Under normal queuing conditions the cells might
experience maximum queuing delays. To avoid this issue,
all ATM packets, or “cells,” are the same small size. In
addition, the fixed cell structure means that ATM can be
5.1 Layer 2 – Datagrams readily switched by hardware without the inherent delays
introduced by software switched and routed frames.
In the ISO-OSI reference model data link layer (layer Thus, the designers of ATM utilized small data cells to re-
2), the basic transfer units are generically called frames. duce jitter (delay variance, in this case) in the multiplex-
In ATM these frames are of a fixed (53 octets or bytes) ing of data streams. Reduction of jitter (and also end-
length and specifically called “cells”. to-end round-trip delays) is particularly important when

47
48 CHAPTER 5. ASYNCHRONOUS TRANSFER MODE

carrying voice traffic, because the conversion of digitized payloads because the small size (and therefore short trans-
voice into an analogue audio signal is an inherently real- mission times) simplify voice applications with respect to
time process, and to do a good job, the decoder (codec) echo cancellation. Most of the European parties eventu-
that does this needs an evenly spaced (in time) stream of ally came around to the arguments made by the Ameri-
data items. If the next data item is not available when it cans, but France and a few others held out for a shorter
is needed, the codec has no choice but to produce silence cell length. With 32 bytes, France would have been able
or guess — and if the data is late, it is useless, because to implement an ATM-based voice network with calls
the time period when it should have been converted to a from one end of France to the other requiring no echo
signal has already passed. cancellation. 48 bytes (plus 5 header bytes = 53) was
At the time of the design of ATM, 155 Mbit/s chosen as a compromise between the two sides. 5-byte
headers were chosen because it was thought that 10% of
Synchronous Digital Hierarchy (SDH) with 135 Mbit/s
payload was considered a fast optical network link, and the payload was the maximum price to pay for routing
information.[2] ATM multiplexed these 53-byte cells in-
many plesiochronous digital hierarchy (PDH) links in the
digital network were considerably slower, ranging from stead of packets which reduced worst-case cell contention
jitter by a factor of almost 30, reducing the need for echo
1.544 to 45 Mbit/s in the USA, and 2 to 34 Mbit/s in
Europe. cancellers.

At this rate, a typical full-length 1500 byte (12000-bit)


data packet would take 77.42 µs to transmit. In a lower- 5.1.2 The structure of an ATM cell
speed link, such as a 1.544 Mbit/s T1 line, a 1500 byte
packet would take up to 7.8 milliseconds. An ATM cell consists of a 5-byte header and a 48-byte
A queuing delay induced by several such data packets payload. The payload size of 48 bytes was chosen as de-
might exceed the figure of 7.8 ms several times over, scribed above.
in addition to any packet generation delay in the shorter ATM defines two different cell formats: UNI (User-
speech packet. This was clearly unacceptable for speech Network Interface) and NNI (Network-Network Inter-
traffic, which needs to have low jitter in the data stream face). Most ATM links use UNI cell format.
being fed into the codec if it is to produce good-quality
sound. A packet voice system can produce this low jitter
GFC = Generic Flow Control (4 bits) (default:
in a number of ways:
4-zero bits)
VPI = Virtual Path Identifier (8 bits UNI, or 12
• Have a playback buffer between the network and the
bits NNI)
codec, one large enough to tide the codec over al-
most all the jitter in the data. This allows smoothing VCI = Virtual Channel identifier (16 bits)
out the jitter, but the delay introduced by passage PT = Payload Type (3 bits)
through the buffer would require echo cancellers
even in local networks; this was considered too ex- PT bit 3 (msbit): Network manage-
pensive at the time. Also, it would have increased ment cell. If 0, user data cell and
the delay across the channel, and conversation is dif- the following apply:
ficult over high-delay channels. PT bit 2: Explicit forward conges-
tion indication (EFCI); 1 = network
• Build a system that can inherently provide low jitter
congestion experienced
(and minimal overall delay) to traffic that needs it.
PT bit 1 (lsbit): ATM user-to-user
• Operate on a 1:1 user basis (i.e., a dedicated pipe). (AAU) bit. Used by AAL5 to indi-
cate packet boundaries.
The design of ATM aimed for a low-jitter network inter- CLP = Cell Loss Priority (1-bit)
face. However, “cells” were introduced into the design to
provide short queuing delays while continuing to support HEC = Header Error Control (8-bit CRC,
datagram traffic. ATM broke up all packets, data, and polynomial = X8 + X2 + X + 1)
voice streams into 48-byte chunks, adding a 5-byte rout-
ing header to each one so that they could be reassembled ATM uses the PT field to designate various special kinds
later. The choice of 48 bytes was political rather than of cells for operations, administration and management
technical.[6] When the CCITT (now ITU-T) was stan- (OAM) purposes, and to delineate packet boundaries in
dardizing ATM, parties from the United States wanted some ATM adaptation layers (AAL). If the most signifi-
a 64-byte payload because this was felt to be a good com- cant bit of the PT field is 0, this is a user data cell, and the
promise in larger payloads optimized for data transmis- other two bits are used to indicate network congestion and
sion and shorter payloads optimized for real-time appli- as a general purpose header bit available for ATM adap-
cations like voice; parties from Europe wanted 32-byte tation layers.
5.1. LAYER 2 – DATAGRAMS 49

If the msbit of the PT bit is 1, this is a management cell,least 576 bytes. SAR performance limits mean that the
and the other two bits indicate the type. (Network man- fastest IP router ATM interfaces are STM16 - STM64
agement segment, network management end-to-end, re- which actually compares, while as of 2004 POS can op-
source management, and reserved for future use.) erate at OC-192 (STM64) with higher speeds expected
Several ATM link protocols use the HEC field to drive in the future.
a CRC-based framing algorithm, which allows locating On slower or congested links (622 Mbit/s and be-
the ATM cells with no overhead beyond what is other- low), ATM does make sense, and for this reason most
wise needed for header protection. The 8-bit CRC is asymmetric digital subscriber line (ADSL) systems use
used to correct single-bit header errors and detect multi- ATM as an intermediate layer between the physical link
bit header errors. When multi-bit header errors are de- layer and a Layer 2 protocol like PPP or Ethernet.
tected, the current and subsequent cells are dropped until At these lower speeds, ATM provides a useful ability to
a cell with no header errors is found. carry multiple logical circuits on a single physical or vir-
A UNI cell reserves the GFC field for a local flow con- tual medium, although other techniques exist, such as
trol/submultiplexing system between users. This was in- Multi-link PPP and Ethernet VLANs, which are optional
tended to allow several terminals to share a single network in VDSL implementations. DSL can be used as an ac-
connection, in the same way that two Integrated Services cess method for an ATM network, allowing a DSL ter-
Digital Network (ISDN) phones can share a single basic mination point in a telephone central office to connect to
rate ISDN connection. All four GFC bits must be zero many internet service providers across a wide-area ATM
by default. network. In the United States, at least, this has allowed
The NNI cell format replicates the UNI format almost DSL providers to provide DSL access to the customers
exactly, except that the 4-bit GFC field is re-allocated to of many internet service providers. Since one DSL ter-
mination point can support multiple ISPs, the economic
the VPI field, extending the VPI to 12 bits. Thus, a sin-
gle NNI ATM interconnection is capable of addressing feasibility of DSL is substantially improved.
almost 212 VPs of up to almost 216 VCs each (in practice
some of the VP and VC numbers are reserved).
5.1.4 Why virtual circuits?
ATM operates as a channel-based transport layer, using
5.1.3 Cells in practice
virtual circuits (VCs). This is encompassed in the con-
ATM supports different types of services via AALs. cept of the Virtual Paths (VP) and Virtual Channels. Ev-
Standardized AALs include AAL1, AAL2, and AAL5, ery ATM cell has an 8- or 12-bit Virtual Path Identifier
and the rarely used AAL3 and AAL4. AAL1 is used for (VPI) and 16-bit Virtual Channel Identifier (VCI) pair
constant bit rate (CBR) services and circuit emulation. defined in its header.[7] The VCI, together with the VPI,
Synchronization is also maintained at AAL1. AAL2 is used to identify the next destination of a cell as it passes
through AAL4 are used for variable bitrate (VBR) ser- through a series of ATM switches on its way to its desti-
vices, and AAL5 for data. Which AAL is in use for a nation. The length of the VPI varies according to whether
the cell is sent on the user-network interface (on the edge
given cell is not encoded in the cell. Instead, it is nego-
tiated by or configured at the endpoints on a per-virtual- of the network), or if it is sent on the network-network
interface (inside the network).
connection basis.
Following the initial design of ATM, networks have be- As these cells traverse an ATM network, switching takes
come much faster. A 1500 byte (12000-bit) full-size place by changing the VPI/VCI values (label swapping).
Ethernet frame takes only 1.2 µs to transmit on a 10 Although the VPI/VCI values are not necessarily consis-
Gbit/s network, reducing the need for small cells to re- tent from one end of the connection to the other, the con-
duce jitter due to contention. Some consider that this cept of a circuit is consistent (unlike IP, where any given
makes a case for replacing ATM with Ethernet in the packet could get to its destination by a different route than
network backbone. However, it should be noted that the the others).[8] ATM switches use the VPI/VCI fields to
increased link speeds by themselves do not alleviate jit- identify the Virtual Channel Link (VCL) of the next net-
ter due to queuing. Additionally, the hardware for im- work that a cell needs to transit on its way to its final des-
plementing the service adaptation for IP packets is ex- tination. The function of the VCI is similar to that of the
pensive at very high speeds. Specifically, at speeds of data link connection identifier (DLCI) in frame relay and
OC-3 and above, the cost of segmentation and reassem- the Logical Channel Number & Logical Channel Group
bly (SAR) hardware makes ATM less competitive for IP Number in X.25.
than Packet Over SONET (POS); because of its fixed 48- Another advantage of the use of virtual circuits comes
byte cell payload, ATM is not suitable as a data link layer with the ability to use them as a multiplexing layer, al-
directly underlying IP (without the need for SAR at the lowing different services (such as voice, Frame Relay,
data link level) since the OSI layer on which IP operates n* 64 channels, IP). The VPI is useful for reducing the
must provide a maximum transmission unit (MTU) of at switching table of some virtual circuits which have com-
50 CHAPTER 5. ASYNCHRONOUS TRANSFER MODE

mon paths. single cell will invalidate the whole packet). As a result,
schemes such as Partial Packet Discard (PPD) and Early
Packet Discard (EPD) have been created that will discard
5.1.5 Using cells and virtual circuits for a whole series of cells until the next packet starts. This
traffic engineering reduces the number of useless cells in the network, sav-
ing bandwidth for full packets. EPD and PPD work with
Another key ATM concept involves the traffic contract. AAL5 connections as they use the end of packet marker:
When an ATM circuit is set up each switch on the circuit the ATM User-to-ATM User (AUU) Indication bit in the
is informed of the traffic class of the connection. Payload Type field of the header, which is set in the last
ATM traffic contracts form part of the mechanism by cell of a SAR-SDU.
which "quality of service" (QoS) is ensured. There are
four basic types (and several variants) which each have a Traffic shaping
set of parameters describing the connection.
Traffic shaping usually takes place in the network inter-
1. CBR - Constant bit rate: a Peak Cell Rate (PCR) is face card (NIC) in user equipment, and attempts to ensure
specified, which is constant. that the cell flow on a VC will meet its traffic contract,
i.e. cells will not be dropped or reduced in priority at the
2. VBR - Variable bit rate: an average or Sustainable UNI. Since the reference model given for traffic policing
Cell Rate (SCR) is specified, which can peak at a in the network is the GCRA, this algorithm is normally
certain level, a PCR, for a maximum interval before used for shaping as well, and single and dual leaky bucket
being problematic. implementations may be used as appropriate.
3. ABR - Available bit rate: a minimum guaranteed
rate is specified.
5.1.6 Types of virtual circuits and paths
4. UBR - Unspecified bit rate: traffic is allocated to all
remaining transmission capacity. ATM can build virtual circuits and virtual paths either
statically or dynamically. Static circuits (permanent vir-
VBR has real-time and non-real-time variants, and serves tual circuits or PVCs) or paths (permanent virtual paths or
for “bursty” traffic. Non-real-time is sometimes abbrevi- PVPs) require that the circuit is composed of a series of
ated to vbr-nrt. segments, one for each pair of interfaces through which
it passes.
Most traffic classes also introduce the concept of Cell
Delay Variation Tolerance (CDVT), which defines the PVPs and PVCs, though conceptually simple, require sig-
“clumping” of cells in time. nificant effort in large networks. They also do not support
the re-routing of service in the event of a failure. Dynam-
ically built PVPs (soft PVPs or SPVPs) and PVCs (soft
Traffic policing PVCs or SPVCs), in contrast, are built by specifying the
characteristics of the circuit (the service “contract”) and
To maintain network performance, networks may apply the two end points.
traffic policing to virtual circuits to limit them to their
Finally, ATM networks create and remove switched vir-
traffic contracts at the entry points to the network, i.e. the
tual circuits (SVCs) on demand when requested by an
user–network interfaces (UNIs) and network-to-network
end piece of equipment. One application for SVCs is to
interfaces (NNIs): Usage/Network Parameter Control
carry individual telephone calls when a network of tele-
(UPC and NPC).[9] The reference model given by the
phone switches are inter-connected using ATM. SVCs
ITU-T and ATM Forum for UPC and NPC is the generic
were also used in attempts to replace local area networks
cell rate algorithm (GCRA),[10][11] which is a version of
with ATM.
the leaky bucket algorithm. CBR traffic will normally be
policed to a PCR and CDVt alone, whereas VBR traffic
will normally be policed using a dual leaky bucket con- 5.1.7 Virtual circuit routing
troller to a PCR and CDVt and an SCR and Maximum
Burst Size (MBS). The MBS will normally be the packet Most ATM networks supporting SPVPs, SPVCs, and
(SAR-SDU) size for the VBR VC in cells. SVCs use the Private Network Node Interface or the
If the traffic on a virtual circuit is exceeding its traffic Private Network-to-Network Interface (PNNI) protocol.
contract, as determined by the GCRA, the network can PNNI uses the same shortest-path-first algorithm used by
either drop the cells or mark the Cell Loss Priority (CLP) OSPF and IS-IS to route IP packets to share topology in-
bit (to identify a cell as potentially redundant). Basic formation between switches and select a route through a
policing works on a cell by cell basis, but this is sub- network. PNNI also includes a very powerful summa-
optimal for encapsulated packet traffic (as discarding a rization mechanism to allow construction of very large
5.4. SEE ALSO 51

networks, as well as a call admission control (CAC) al- cells are transmitted from base stations to mobile termi-
gorithm which determines the availability of sufficient nals. Mobility functions are performed at an ATM switch
bandwidth on a proposed route through a network in or- in the core network, known as “crossover switch”,[18]
der to satisfy the service requirements of a VC or VP. which is similar to the MSC (mobile switching center) of
GSM Networks. The advantage of Wireless ATM is its
high bandwidth and high speed handoffs done at Layer
5.1.8 Call admission and connection estab- 2. In the early 1990s, Bell Labs and NEC[19] Research
lishment Labs worked actively in this field. Andy Hopper from
Cambridge University Computer Laboratory also worked
A network must establish a connection before two par- in this area.[20] There was a Wireless ATM Forum formed
ties can send cells to each other. In ATM this is called to standardize the technology behind Wireless ATM Net-
a virtual circuit (VC). It can be a permanent virtual cir- works. The forum was supported by several telecom-
cuit (PVC), which is created administratively on the end munication companies, including NEC, Fujitsu, AT&T,
points, or a switched virtual circuit (SVC), which is cre- etc. Mobile ATM aimed to provide high speed multi-
ated as needed by the communicating parties. SVC cre- media communications technology, capable of delivering
ation is managed by signaling, in which the requesting broadband mobile communications beyond that of GSM
party indicates the address of the receiving party, the type and WLANs.
of service requested, and whatever traffic parameters may
be applicable to the selected service. “Call admission” is
then performed by the network to confirm that the re- 5.4 See also
quested resources are available and that a route exists for
the connection.
• VoATM

5.1.9 Reference model


5.5 Notes
ATM defines three layers:[12]
[1] ATM Forum, The User Network Interface (UNI), v. 3.1,
1. ATM adaptation layer (AAL) ISBN 0-13-393828-X, Prentice Hall PTR, 1995, page 2.

[2] Ayanoglu, Ender; Akar, Nail. “B-ISDN (Broadband Inte-


2. ATM layer, roughly corresponding to the OSI data
grated Services Digital Network)". Center for Pervasive
link layer
Communications and Computing, UC Irvine. Retrieved 3
3. physical layer, equivalent to the OSI physical layer June 2011.

[3] McDysan, David E. and Spohn, Darrel L., ATM : Theory


and Application, ISBN 0-07-060362-6, McGraw-Hill se-
5.2 Deployment ries on computer communications, 1995, page 563.

[4] “Recommendation I.150, B-ISDN asynchronous transfer


ATM became popular with telephone companies and mode functional characteristics”. ITU.
many computer makers in the 1990s. However, even
by the end of the decade, the better price/performance [5] McDysan (1999), p. 287.
of Internet Protocol-based products was competing with [6] D. Stevenson, “Electropolitical Correctness and High-
ATM technology for integrating real-time and bursty net- Speed Networking, or, Why ATM is like a Nose”,
work traffic.[13] Companies such as FORE Systems fo- Proceedings of TriCom '93, April 1993.
cused on ATM products, while other large vendors such
as Cisco Systems provided ATM as an option.[14] After [7] Cisco Systems Guide to ATM Technology (2000). Section
the burst of the dot-com bubble, some still predicted that “Operation of an ATM Switch”. Retrieved 2 June 2011.
“ATM is going to dominate”.[15] However, in 2005 the [8] Cisco Systems Guide to ATM Technology (2000). Section
ATM Forum, which had been the trade organization pro- “ATM Cell Header Formats”. Retrieved 2 June 2011.
moting the technology, merged with groups promoting
other technologies, and eventually became the Broadband [9] ITU-T, Traffic control and congestion control in B ISDN,
Forum.[16] Recommendation I.371, International Telecommunica-
tion Union, 2004, page 17

[10] ITU-T, Traffic control and congestion control in B ISDN,


5.3 Wireless ATM or Mobile ATM Recommendation I.371, International Telecommunica-
tion Union, 2004, Annex A, page 87.

Wireless ATM,[17] or Mobile ATM, consists of an ATM [11] ATM Forum, The User Network Interface (UNI), v. 3.1,
core network with a wireless access network. ATM ISBN 0-13-393828-X, Prentice Hall PTR, 1995.
52 CHAPTER 5. ASYNCHRONOUS TRANSFER MODE

[12] “Guide to ATM Technology for the Catalyst 8540 MSR, 5.7 External links
Catalyst 8510 MSR, and LightStream 1010 ATM Switch
Routers” (PDF). Customer Order Number: DOC-786275. • “ATM forum”. Archived from the original on 1 July
Cisco Systems. 2000. Retrieved 19 July 2011.
2005.
[13] Steve Steinberg (October 1996). “Netheads vs Bellheads”. • ATM Info and resources
Wired. 4 (10). Retrieved 24 September 2011.
• ATM ChipWeb - Chip and NIC database
[14] “What’s in store for FORE?". Network World. 16
• A tutorial from Juniper web site
September 1996. p. 12. Retrieved 24 September 2011.
• ATM Tutorial
[15] “Optical Ethernet firms brave stormy industry seas”. Net-
work World. 7 May 2001. p. 14. Retrieved 24 September • Vuskovic Marko, Broadband Communication Net-
2011. works Lectures, San Diego State University.

[16] “About the Broadband Forum: Forum History”. Re- • ATM at Cisco DocWiki
trieved 24 September 2011.

[17] Wireless ATM

[18] Book on Wireless ATM Networks - Chai Keong Toh,


Kluwer Academic Press 1997

[19] WATMnet: a prototype wireless ATM system for multi-


media personal communication, D. Raychaudhuri,at.al

[20] Cambridge Mobile ATM work

5.6 References

• Black, Uyless D. (1998). ATM—Volume III: Inter-


networking with ATM. Toronto: Prentice Hall. ISBN
0-13-784182-5.

• De Prycker, Martin (1993). Asynchronous Transfer


Mode. Solutions for Broadband ISDN. Prentice Hall.

• Joel, Amos E., Jr. (1993). Asynchronous Transfer


Mode. IEEE Press.

• Golway, Tom (1997). Planning and Managing ATM


Network. New York: Manning. ISBN 978-0-13-
262189-2.

• McDysan, David E.; Darren L. Spohn (1999). ATM


Theory and Applications. Montreal: McGraw-Hill.
ISBN 0-07-045346-2.

• Neelakanta, P. S. (2000). A Textbook on ATM


Telecommunications, Principles and implementation.
CRC Press. ISBN 0-8493-1805-X.

• ATM Cell formats- Cisco Systems

• Asynchronous Transfer Mode (ATM) - Cisco Sys-


tems
Chapter 6

AX.25

AX.25 (Amateur X.25) is a data link layer protocol de- repeaters, receiving, decoding and retransmitting packets
rived from the X.25 protocol suite and designed for use from local stations. They allow multi-hop connections to
by amateur radio operators.[1] It is used extensively on be established between two stations unable to communi-
amateur packet radio networks. cate directly.
AX.25 v2.0 and later occupies the data link layer, the sec- The AX.25 specification does define a complete, al-
ond layer of the OSI model. It is mainly responsible for beit point to point only network layer protocol, but this
establishing connections and transferring data encapsu- has seen little use outside of keyboard-to-keyboard or
lated in frames between nodes and detecting errors in- keyboard-to-BBS connections. NET/ROM, ROSE, and
troduced by the communications channel. As AX.25 is TexNet exist to provide routing between nodes. In princi-
a pre-OSI-model protocol, the original specification was ple, a variety of layer 3 protocols can be used with AX.25,
not written to cleanly separate into OSI layers. This was including the ubiquitous Internet protocol. This approach
rectified with version 2.0 (1984), which assumes compli- is used by AMPRNet, which is an amateur radio TCP/IP
ance with OSI level 2. network using AX.25 UI-frames at the datalink layer.
In practice, it is not uncommon to find an AX.25 data
link layer as the transport for some other network layer,
such as IPv4, with TCP used on top of that. Note that, 6.2 Implementations
like Ethernet, AX.25 frames are not engineered to sup-
port switching. For this reason, AX.25 supports a some- Traditionally, amateur radio operators have connected to
what limited form of source routing. Although possible AX.25 networks through the use of a terminal node con-
to build AX.25 switches in a manner not unlike how Eth- troller, which contains a microprocessor and an imple-
ernet switches work, this has not yet been accomplished. mentation of the protocol in firmware. These devices al-
low network resources to be accessed using only a dumb
terminal and a transceiver.
6.1 Specification More recently, AX.25 implementations have appeared
for personal computers. For example, the Linux kernel
AX.25 does not define a physical layer implementation. includes native support for AX.25 networking.[4]
In practice 1200 baud Bell 202 tones and 9600 baud
G3RUH DFSK[2] are almost exclusively used on VHF
and UHF. On HF the standard transmission mode is 300 6.2.1 KISS-mode framing
baud Bell 103 tones, although very little use of AX.25 on
HF exists today. At the physical layer, AX.25 defines only See full article at KISS (TNC)
a “physical layer state machine” and some timers related
to transmitter and receiver switching delays. AX.25 is often used with a TNC that implements the
KISS[5] framing as a low-cost alternative to using expen-
At the datalink level, AX.25 specifies HDLC (ISO sive and uncommon HDLC controller cards.
3309)[3] frames transmitted with NRZI encoding. Media
access control follows the Carrier sense multiple access The KISS framing is not part of the AX.25 protocol itself
approach with collision recovery (CSMA/CR). nor is it sent over the air. It merely serves to encapsulate
the protocol frames in a way that can successfully pass
AX.25 supports both virtual-circuit connected and over a serial link to the TNC. The KISS framing is de-
datagram-style connectionless modes of operation. The rived from SLIP, and makes many of the same assump-
latter is used to great effect by the Automatic Packet Re- tions, such as there only being two “endpoints” involved
porting System. in the conversation. With SLIP, these were the two SLIP-
A simple source routing mechanism using digipeaters is connected hosts; with KISS, it is assumed that the KISS
available at the datalink level. Digipeaters act as simplex framing link is over serial with only the host computer

53
54 CHAPTER 6. AX.25

and the PC involved. Among other things, this makes it • new radio level modulations would need different
awkward to address multiple TNCs without having mul- radio gear than what is currently in use and the re-
tiple (serial) data channels. sulting system would be incompatible with the ex-
Alternatives to KISS do exist that address these limita- isting one – thus requiring a large initial investment
tions, such as 6PACK.[6] in new radio gear,

• adoption of newer line codings potentially including


forward error correction takes more effort than the
6.3 Applications 1,200 bit/s AFSK of Bell 202. Previously sufficient
small 8-bit microprocessors with 128 bytes of RAM
AX.25 has most frequently been used to establish direct, would not be enough, and new ones might cost USD
point-to-point links between packet radio stations, with- 30 instead of USD 3. Phil Karn did demo decod-
out any additional network layers. This is sufficient for ing of this new modulation of his by running it on a
keyboard-to-keyboard contacts between stations and for Pentium II machine – some 10 years later, mid-level
accessing local bulletin board systems and DX clusters. embedded microprocessors are capable enough to
do the same with under USD 50 system cost.[8]
In recent years, the Automatic Packet Reporting System
(APRS) has become a popular application.
Despite these limitations, an extension to the AX.25 pro-
For tunneling of AX.25 packets over IP, AXIP and AX- tocol, supporting forward error correction, has been cre-
UDP are used to encapsulate AX.25 into IP or UDP pack- ated by the TAPR. This extension is called FX.25.
ets.
Small gadget transmitters do not need to know what is
being transmitted. There is only a need to monitor chan-
nel occupation by radio receiver RSSI (Received Signal
6.4 Limitations Strength Indication) to know when not to send. Transmit-
ting interleaved Reed-Solomon FEC signal in some smart
At the speeds commonly used to transmit packet radio modulation needs a lot fewer resources than reception of
data (rarely higher than 9,600 bit/s, and typically 1,200 the same signal, thus a sufficient microprocessor might
bit/s),[7] the use of additional network layers with AX.25 cost just USD 5 instead of USD 30 and a system cost
is impractical due to the data overhead involved. This is might stay below USD 50, transmitter included. How-
not a limitation of AX.25 per se, but places constraints on ever, in recent years, the ability to receive as well as send
the sophistication of applications designed to use it. using cheap microcontrollers (such as the Atmel AVR or
The AX.25 protocol identifies each message by sender the Motorola 68HC08 families) have been demonstrated.
and destination station call-sign plus SSID value in range It seems, however, that any new system that is not com-
0 through 15. At ITU WARC2003 meeting earlier ra- patible with the current Bell 202 modulation is unlikely to
dio amateur station call-sign specification was amended be widely adopted. The current modulation seems to ful-
so that earlier maximum length of 6 character was raised fill sufficient need that little motivation exists to move to a
to 7 characters. However AX.25 has a built in hard limit superior design, especially if the new design requires sig-
of 6 characters, which means a 7 character call-sign can- nificant hardware purchases. However, as existing Bell
not be used in an AX.25 network. 202 modem chips become obsolete without replacement,
AX.25 lacks an explicit port (or SAP); the SSID often this consideration becomes less overwhelming.
assumes this role. Thus there can be only one service
per AX.25 station SSID address, which is often kludged
around with varying degrees of success. 6.5 See also
Some amateurs, notably Phil Karn KA9Q, have argued
that AX.25 is not well-suited to operation over noisy, • Packet Radio
limited-bandwidth radio links, citing its lack of forward
error correction (FEC) and automatic data compression. • Automatic Packet Reporting System (APRS)
However, a viable widely adopted successor to AX.25 has
yet to emerge. Likely reasons may include:
6.6 References
• a large existing deployment of recycled narrowband
FM radios and especially existing APRS applica- [1] “AX.25 Link Access Protocol for Amateur Packet Radio”
tions, (PDF). Tucson Amateur Packet Radio. 1997. Retrieved
2014-01-15.
• easy availability of cheap, low-power FM transmit-
ters, especially for the 430 MHz UHF band, to [2] James Miller G3RUH (1995). “9600 Baud Packet Radio
match existing legacy radio gear, Modem Design”. Retrieved 2012-02-03.
6.7. FURTHER READING 55

[3] ISO/IEC 3309: “Information technology. Telecommuni-


cations and information exchange between systems. High-
level Data Link Control (HDLC) procedures. Frame
structure” (1984).

[4] John Ackermann (2002). “Linux AX.25 Configuration”.


febo.com. Archived from the original on 11 March 2008.
Retrieved 2008-03-05.

[5] Mike Chepponis; Phil Karn. “The KISS TNC: A simple


Host-to-TNC communications protocol”. Archived from
the original on 25 July 2008. Retrieved 2008-08-18.

[6] “6PACK a “real time” PC to TNC protocol”. Retrieved


2009-05-28.

[7] Jeff Tranter (1997). “Packet Radio Under Linux”. Linux


Journal. Archived from the original on 22 November
2008. Retrieved 2009-01-01.

[8] “Bugblat Cortino”. Retrieved 2009-12-01.

6.7 Further reading


• Terry L. Fox, WB4JFI (1984). AX.25 Ama-
teur Packet-Radio Link-Layer Protocol, Version 2.0
(PDF). Newington, CT: ARRL. p. 18. ISBN 0-
87259-011-9.
• Rich Roznoy, K1OF, ed. (1997). Packet: Speed,
More Speed and Applications (2nd Edition). New-
ington, CT: American Radio Relay League, Inc.
ISBN 0-87259-605-2.

• AMPRNet – a project to construct a global, radio-


based network using TCP/IP over AX.25 links

• Linux-AX25.org – Site dedicated to packet radio on


Linux

• AX.25 Layer 2 – This web site has been established


to be a concise repository for AX.25 layer 2 design
activities.
• APRS – Bob Bruninga’s official APRS website.
Chapter 7

Communicating sequential processes

In computer science, communicating sequential pro- X to the COPY process, and east to the ASSEMBLE pro-
cesses (CSP) is a formal language for describing patterns cess, and executes these three processes concurrently.[5]
of interaction in concurrent systems.[1] It is a member
Following the publication of the original version of CSP,
of the family of mathematical theories of concurrency Hoare, Stephen Brookes, and A. W. Roscoe developed
known as process algebras, or process calculi, based on
and refined the theory of CSP into its modern, process
message passing via channels. CSP was highly influential algebraic form. The approach taken in developing CSP
in the design of the occam programming language,[1][2]
into a process algebra was influenced by Robin Milner's
and also influenced the design of programming languages work on the Calculus of Communicating Systems (CCS),
such as Limbo[3] and Go.[4]
and vice versa. The theoretical version of CSP was ini-
CSP was first described in a 1978 paper by Tony Hoare,[5] tially presented in a 1984 article by Brookes, Hoare,
but has since evolved substantially.[6] CSP has been prac- and Roscoe,[12] and later in Hoare’s book Communicat-
tically applied in industry as a tool for specifying and ver- ing Sequential Processes,[10] which was published in 1985.
ifying the concurrent aspects of a variety of different sys- In September 2006, that book was still the third-most
tems, such as the T9000 Transputer,[7] as well as a secure cited computer science reference of all time according
ecommerce system.[8] The theory of CSP itself is also to Citeseer (albeit an unreliable source due to the nature
still the subject of active research, including work to in- of its sampling). The theory of CSP has undergone a
crease its range of practical applicability (e.g., increasing few minor changes since the publication of Hoare’s book.
the scale of the systems that can be tractably analyzed).[9] Most of these changes were motivated by the advent of
automated tools for CSP process analysis and verification.
Roscoe’s The Theory and Practice of Concurrency[1] de-
scribes this newer version of CSP.
7.1 History
The version of CSP presented in Hoare’s original 1978 7.1.1 Applications
paper was essentially a concurrent programming language
rather than a process calculus. It had a substantially dif- An early and important application of CSP was its use
ferent syntax than later versions of CSP, did not possess for specification and verification of elements of the IN-
mathematically defined semantics,[10] and was unable to MOS T9000 Transputer, a complex superscalar pipelined
represent unbounded nondeterminism.[11] Programs in processor designed to support large-scale multiprocess-
the original CSP were written as a parallel composition ing. CSP was employed in verifying the correctness of
of a fixed number of sequential processes communicat- both the processor pipeline, and the Virtual Channel Pro-
ing with each other strictly through synchronous message- cessor which managed off-chip communications for the
passing. In contrast to later versions of CSP, each process processor.[7]
was assigned an explicit name, and the source or destina-
tion of a message was defined by specifying the name of Industrial application of CSP to software design has usu-
the intended sending or receiving process. For example, ally focused on dependable and safety-critical systems.
the process For example, the Bremen Institute for Safe Systems and
Daimler-Benz Aerospace modeled a fault management
COPY = *[c:character; west?c → east!c] system and avionics interface (consisting of some 23,000
repeatedly receives a character from the process named lines of code) intended for use on the International Space
west, and then sends that character to process named east. Station in CSP, and analyzed the model to confirm that
The parallel composition their design was free of deadlock and livelock.[13][14] The
modeling and analysis process was able to uncover a num-
[west::DISASSEMBLE || X::COPY || east::ASSEMBLE] ber of errors that would have been difficult to detect using
assigns the names west to the DISASSEMBLE process, testing alone. Similarly, Praxis High Integrity Systems

56
7.2. INFORMAL DESCRIPTION 57

applied CSP modeling and analysis during the develop- Prefix The prefix operator combines an event and a pro-
ment of software (approximately 100,000 lines of code) cess to produce a new process. For example,
for a secure smart-card Certification Authority to verify
that their design was secure and free of deadlock. Praxis
claims that the system has a much lower defect rate than
comparable systems.[8] a→P
Since CSP is well-suited to modeling and analyzing sys-
tems that incorporate complex message exchanges, it has is the process which is willing to communicate
also been applied to the verification of communications a with its environment, and, after a , behaves
and security protocols. A prominent example of this like the process P .
sort of application is Lowe’s use of CSP and the FDR
refinement-checker to discover a previously unknown at- Deterministic Choice The deterministic (or external)
tack on the Needham-Schroeder public-key authentica- choice operator allows the future evolution of a pro-
tion protocol, and then to develop a corrected protocol cess to be defined as a choice between two compo-
able to defeat the attack.[15] nent processes, and allows the environment to re-
solve the choice by communicating an initial event
for one of the processes. For example,
7.2 Informal description
As its name suggests, CSP allows the description of sys- (a → P ) □ (b → Q)
tems in terms of component processes that operate in-
dependently, and interact with each other solely through is the process which is willing to communicate
message-passing communication. However, the “Sequen- the initial events a and b , and subsequently
tial” part of the CSP name is now something of a mis- behaves as either P or Q depending on which
nomer, since modern CSP allows component processes to initial event the environment chooses to com-
be defined both as sequential processes, and as the parallel municate. If both a and b were communicated
composition of more primitive processes. The relation- simultaneously the choice would be resolved
ships between different processes, and the way each pro- nondeterministically.
cess communicates with its environment, are described
using various process algebraic operators. Using this al- Nondeterministic Choice The nondeterministic (or in-
gebraic approach, quite complex process descriptions can ternal) choice operator allows the future evolution
be easily constructed from a few primitive elements. of a process to be defined as a choice between two
component processes, but does not allow the envi-
ronment any control over which one of the compo-
7.2.1 Primitives nent processes will be selected. For example,

CSP provides two classes of primitives in its process al-


gebra:
(a → P ) ⊓ (b → Q)
Events Events represent communications or interac-
tions. They are assumed to be indivisible and instan- can behave like either (a → P ) or (b → Q)
taneous. They may be atomic names (e.g. on, off), . It can refuse to accept a or b , and is only
compound names (e.g. valve.open, valve.close), or obliged to communicate if the environment of-
input/output events (e.g. mouse?xy, screen!bitmap). fers both a and b . Nondeterminism can be in-
advertently introduced into a nominally deter-
Primitive processes ministic choice if the initial events of both sides
of the choice are identical. So, for example,
Primitive processes represent fundamental behaviors:
examples include STOP (the process that commu-
nicates nothing, also called deadlock), and SKIP
(which represents successful termination). (a → a → ST OP ) □ (a → b → ST OP )

is equivalent to
7.2.2 Algebraic operators

CSP has a wide range of algebraic operators. The princi-


pal ones are: a → ((a → ST OP ) ⊓ (b → ST OP ))
58 CHAPTER 7. COMMUNICATING SEQUENTIAL PROCESSES

Interleaving The interleaving operator represents com- 7.2.3 Examples


pletely independent concurrent activity. The process
One of the archetypal CSP examples is an abstract repre-
sentation of a chocolate vending machine and its interac-
tions with a person wishing to buy some chocolate. This
P ||| Q vending machine might be able to carry out two differ-
ent events, “coin” and “choc” which represent the inser-
behaves as both P and Q simultaneously. The tion of payment and the delivery of a chocolate respec-
events from both processes are arbitrarily in- tively. A machine which demands payment before offer-
terleaved in time. ing a chocolate can be written as:

Interface Parallel The interface parallel operator repre-


sents concurrent activity that requires synchroniza- VendingMachine = coin → choc → STOP
tion between the component processes: any event in
the interface set can only occur when all component A person who might choose to use a coin or card to make
processes are able to engage in that event. For ex- payments could be modelled as:
ample, the process

Person = (coin → STOP)□(card → STOP)

P |[{a}]| Q These two processes can be put in parallel, so that they


can interact with each other. The behaviour of the com-
requires that P and Q must both be able to per- posite process depends on the events that the two compo-
form event a before that event can occur. So, nent processes must synchronise on. Thus,
for example, the process

VendingMachine |[{coin, card}]| Person ≡ coin → choc → STOP

(a → P ) |[{a}]| (a → Q) whereas if synchronization was only required on “coin”,


we would obtain
a

VendingMachine |[{coin}]| Person ≡ (coin → choc → STOP) □ (card → ST

P |[{a}]| Q If we abstract this latter composite process by hiding the


“coin” and “card” events, i.e.
while

((coin → choc → STOP ) □ (card → STOP))\{coin, card}

(a → P ) |[{a, b}]| (b → Q) we get the nondeterministic process

will simply deadlock.


(choc → STOP) ⊓ STOP
Hiding The hiding operator provides a way to abstract This is a process which either offers a “choc” event and
processes, by making some events unobservable. A then stops, or just stops. In other words, if we treat the
trivial example of hiding is abstraction as an external view of the system (e.g., some-
one who does not see the decision reached by the person),
nondeterminism has been introduced.
(a → P ) \ {a}

which, assuming that the event a doesn't appear


7.3 Formal definition
in P , simply reduces to
7.3.1 Syntax
The syntax of CSP defines the “legal” ways in which pro-
P cesses and events may be combined. Let e be an event,
7.4. TOOLS 59

and X be a set of events. Then the basic syntax of CSP where Σ∗ is the set of all possible finite sequences of
can be defined as: events.
The stable failures model extends the traces model with
refusal sets, which are sets of events X ⊆ Σ that a pro-
P roc ::= STOP
cess can refuse to perform. A failure is a pair (s, X) ,
| SKIP
consisting of a trace s , and a refusal set X which iden-
| e → Proc (prefixing)
tifies the events that a process may refuse once it has
| Proc □ Proc (external choice)
executed the trace s . The observed behavior of a pro-
| Proc ⊓ Proc (nondeterministic choice)
cess in the stable failures model is described by the pair
| Proc ||| Proc (interleaving)
(traces (P ) , failures (P )) . For example,
| Proc |[{X}]| Proc (interface parallel)
| Proc \ X (hiding) • failures ((a → STOP) □ (b → STOP)) =
| Proc; Proc (sequential composition) {(⟨⟩, ∅) , (⟨a⟩, {a, b}) , (⟨b⟩, {a, b})}
| if b then Proc else P roc (boolean conditional)
• failures ((a → STOP) ⊓ (b → STOP)) =
| Proc ▷ Proc (timeout)
{(⟨⟩, {a}) , (⟨⟩, {b}) , (⟨a⟩, ∅) , (⟨b⟩, ∅) , (⟨a⟩, {a, b}) , (⟨b⟩, {a, b
| Proc △ Proc (interrupt)
Note that, in the interests of brevity, the syntax presented The failures/divergence model further extends the fail-
above omits the div process, which represents divergence, ures model to handle divergence. The semantics of
as well as various operators such as alphabetized parallel, a process in the failures/divergences model is a pair
piping, and indexed choices. (failures⊥ (P ) , divergences (P )) where divergences (P )
is defined as the set of all traces that can lead to di-
vergent behavior and failures⊥ (P ) = failures (P ) ∪
7.3.2 Formal semantics {(s, X) | s ∈ divergences (P )} .

CSP has been imbued with several different formal se-


mantics, which define the meaning of syntactically cor- 7.4 Tools
rect CSP expressions. The theory of CSP includes mutu-
ally consistent denotational semantics, algebraic seman- Over the years, a number of tools for analyzing and
tics, and operational semantics. understanding systems described using CSP have been
produced. Early tool implementations used a variety
Denotational semantics of machine-readable syntaxes for CSP, making input
files written for different tools incompatible. However,
The three major denotational models of CSP are the most CSP tools have now standardized on the machine-
traces model, the stable failures model, and the fail- readable dialect of CSP devised by Bryan Scattergood,
[16]
ures/divergences model. Semantic mappings from pro- sometimes referred to as CSPM. The CSPM dialect
cess expressions to each of these three models provide of CSP possesses a formally defined operational seman-
the denotational semantics for CSP.[1] tics, which includes an embedded functional program-
ming language.
The traces model defines the meaning of a process ex-
pression as the set of sequences of events (traces) that the The most well-known CSP tool is probably Fail-
process can be observed to perform. For example, ures/Divergence Refinement 2 (FDR2), which is a com-
mercial product developed by Formal Systems (Europe)
• traces (STOP) = {⟨⟩} since STOP per- Ltd. FDR2 is often described as a model checker,
forms no events but is technically a refinement checker, in that it con-
verts two CSP process expressions into Labelled Transi-
• traces (a → b → STOP) =
tion Systems (LTSs), and then determines whether one
{⟨⟩, ⟨a⟩, ⟨a, b⟩} since the process
of the processes is a refinement of the other within
(a → b → STOP) can be observed to
some specified semantic model (traces, failures, or
have performed no events, the event a ,
failures/divergence).[17] FDR2 applies various state-space
or the sequence of events a followed by b
compression algorithms to the process LTSs in order to
reduce the size of the state-space that must be explored
More formally, the meaning of a process P in the traces during a refinement check. FDR2 has been succeeded
model is defined as traces (P ) ⊆ Σ∗ such that: by FDR3, a completely re-written version incorporating
amongst other things parallel execution and an integrated
1. ⟨⟩ ∈ traces (P ) (i.e. traces (P ) contains the empty type checker. It is released by the University of Oxford,
sequence) which also released FDR2 in the period 2008-12.[18]
2. s1 ⌢ s2 ∈ traces (P ) =⇒ s1 ∈ traces (P ) (i.e. The Adelaide Refinement Checker (ARC) [19] is a CSP re-
traces (P ) is prefix-closed) finement checker developed by the Formal Modelling and
60 CHAPTER 7. COMMUNICATING SEQUENTIAL PROCESSES

Verification Group at The University of Adelaide. ARC • HCSP


differs from FDR2 in that it internally represents CSP
processes as Ordered Binary Decision Diagrams (OB- • Wright, an architecture description language
DDs), which alleviates the state explosion problem of ex-
• TCOZ, an integration of Timed CSP and Object Z
plicit LTS representations without requiring the use of
state-space compression algorithms such as those used in • Circus, an integration of CSP and Z based on the
FDR2. Unifying Theories of Programming
The ProB project,[20] which is hosted by the Institut für
Informatik, Heinrich-Heine-Universität Düsseldorf, was • CML (COMPASS Modelling Language), a combi-
originally created to support analysis of specifications nation of Circus and VDM developed for the mod-
constructed in the B method. However, it also includes elling of Systems of Systems (SoS)
support for analysis of CSP processes both through re- • CspCASL, an extension of CASL that integrates
finement checking, and LTL model-checking. ProB can CSP
also be used to verify properties of combined CSP and B
specifications. A ProBE CSP Animator is integrated in • LOTOS, an international standard[25] that incorpo-
FDR3. rates features of CSP and CCS.
The Process Analysis Toolkit (PAT) [21][22] is a CSP anal-
ysis tool developed in the School of Computing at the
National University of Singapore. PAT is able to perform 7.6 Comparison with the Actor
refinement checking, LTL model-checking, and simula-
tion of CSP and Timed CSP processes. The PAT process
Model
language extends CSP with support for mutable shared
variables, asynchronous message passing, and a variety In as much as it is concerned with concurrent processes
of fairness and quantitative time related process con- that exchange messages, the Actor model is broadly sim-
structs such as deadline and waituntil. The underlying ilar to CSP. However, the two models make some funda-
design principle of the PAT process language is to com- mentally different choices with regard to the primitives
bine a high-level specification language with procedural they provide:
programs (e.g. an event in PAT may be a sequential pro-
gram or even an external C# library call) for greater ex- • CSP processes are anonymous, while actors have
pressiveness. Mutable shared variables and asynchronous identities.
channels provide a convenient syntactic sugar for well-
known process modelling patterns used in standard CSP. • CSP message-passing fundamentally involves a ren-
The PAT syntax is similar, but not identical, to CSPM.[23] dezvous between the processes involved in send-
The principal differences between the PAT syntax and ing and receiving the message, i.e. the sender can-
standard CSPM are the use of semicolons to terminate not transmit a message until the receiver is ready
process expressions, the inclusion of syntactic sugar for to accept it. In contrast, message-passing in actor
variables and assignments, and the use of slightly differ- systems is fundamentally asynchronous, i.e. mes-
ent syntax for internal choice and parallel composition. sage transmission and reception do not have to hap-
pen at same time, and senders may transmit mes-
CSPsim[24] is a lazy simulator. It does not model check
sages before receivers are ready to accept them.
CSP, but is useful for exploring very large (potentially
These approaches may be considered duals of each
infinite) systems.
other, in the sense that rendezvous-based systems
can be used to construct buffered communications
that behave as asynchronous messaging systems,
7.5 Related formalisms while asynchronous systems can be used to con-
struct rendezvous-style communications by using a
Several other specification languages and formalisms message/acknowledgement protocol to synchronize
have been derived from, or inspired by, the classic un- senders and receivers.
timed CSP, including:
• CSP uses explicit channels for message passing,
whereas actor systems transmit messages to named
• Timed CSP, which incorporates timing information
destination actors. These approaches may also be
for reasoning about real-time systems
considered duals of each other, in the sense that
• Receptive Process Theory, a specialization of CSP processes receiving through a single channel effec-
that assumes an asynchronous (i.e. nonblocking) tively have an identity corresponding to that chan-
send operation nel, while the name-based coupling between actors
may be broken by constructing actors that behave as
• CSPP channels.
7.8. FURTHER READING 61

7.7 See also 7.8 Further reading


• Trace theory, the general theory of traces. • Hoare, C. A. R. (2004) [1985]. Communicating
Sequential Processes. Prentice Hall International.
• Trace monoid and history monoid, the mathematical ISBN 0-13-153271-5.
formalism of which CSP is an example.
• This book has been updated by Jim Davies at
• occam was the first language implementing a CSP the Oxford University Computing Laboratory
model. and the new edition is available for download
as a PDF file at the Using CSP website.
• Ease programming language combines the process
constructs of CSP with logically shared data struc- • Roscoe, A. W. (1997). The Theory and Practice of
tures. Concurrency. Prentice Hall. ISBN 0-13-674409-5.
• Some links relating to this book are available
• JCSP is a blending of CSP and occam concepts in a here. The full text is available for download
Java thread support API. as a PS or PDF file from Bill Roscoe’s list of
academic publications.
• XC is a language developed by XMOS which was
heavily influenced by CSP and occam

• Limbo is a language that implements concurrency 7.9 References


inside the Inferno operating system, in a style in-
spired by CSP. [1] Roscoe, A. W. (1997). The Theory and Practice of Con-
currency. Prentice Hall. ISBN 0-13-674409-5.
• Plan 9 from Bell Labs and Plan 9 from User Space
include the libthread library which allows the use of [2] INMOS (1995-05-12). occam 2.1 Reference Manual
(PDF). SGS-THOMSON Microelectronics Ltd., INMOS
a CSP-inspired concurrency model from C.
document 72 occ 45 03
• VerilogCSP is a set of macros added to Verilog [3] “Resources about threaded programming in the Bell Labs
HDL to support communicating sequential pro- CSP style”. Retrieved 2010-04-15.
cesses channel communications.
[4] “Language Design FAQ: Why build concurrency on the
• SystemVerilogCSP[26] is a package for ideas of CSP?".
SystemVerilog that enables abstract CSP-like [5] Hoare, C. A. R. (1978). “Communicating sequential pro-
communication actions in SystemVerilog. cesses”. Communications of the ACM. 21 (8): 666–677.
doi:10.1145/359576.359585.
• Go is a programming language by Google incorpo-
rating ideas from CSP.[4][27] [6] Abdallah, Ali E.; Jones, Cliff B.; Sanders, Jeff W. (2005).
Communicating Sequential Processes: The First 25 Years.
• Joyce is a programming language based on the prin- LNCS. 3525. Springer.
ciples of CSP, developed by Brinch Hansen around [7] Barrett, G. (1995). “Model checking in practice:
1989. The T9000 Virtual Channel Processor”. IEEE Trans-
actions on Software Engineering. 21 (2): 69–78.
• SuperPascal is a programming language also devel- doi:10.1109/32.345823.
oped by Brinch Hansen, influenced by CSP and his
earlier work with Joyce. [8] Hall, A; Chapman, R. (2002). “Correctness by construc-
tion: Developing a commercial secure system” (PDF).
• Ada implements features of CSP such as the ren- IEEE Software. 19 (1): 18–25. doi:10.1109/52.976937.
dezvous. [9] Creese, S. (2001). “Data Independent Induction: CSP
Model Checking of Arbitrary Sized Networks”. D. Phil.
• DirectShow is the video framework inside DirectX, Oxford University.
it uses the CSP concepts to implement the audio and
video filters. [10] Hoare, C. A. R. (1985). Communicating Sequential Pro-
cesses. Prentice Hall. ISBN 0-13-153289-8.
• OpenComRTOS is a formally developed network-
[11] Clinger, William (June 1981). “Foundations of Actor Se-
centric distributed RTOS based on a pragmatic su- mantics”. Mathematics Doctoral Dissertation. MIT.
perset of CSP.
[12] Brookes, Stephen; Hoare, C. A. R.; Roscoe, A. W.
• Input/output automaton (1984). “A Theory of Communicating Sequential Pro-
cesses”. Journal of the ACM. 31 (3): 560–599.
• Parallel programming model doi:10.1145/828.833.
62 CHAPTER 7. COMMUNICATING SEQUENTIAL PROCESSES

[13] Buth, B.; M. Kouvaras; J. Peleska; H. Shi (December [27] Origins of Go concurrency style. Talk by Rob Pike at OS-
1997). “Deadlock analysis for a fault-tolerant system”. CON’s Emerging Languages Camp 2010.
Proceedings of the 6th International Conference on Alge-
braic Methodology and Software Technology (AMAST’97).
pp. 60–75.
7.10 External links
[14] Buth, B.; J. Peleska; H. Shi (January 1999). “Combin-
ing methods for the livelock analysis of a fault-tolerant • A PDF version of Hoare’s CSP book - Copyright re-
system”. Proceedings of the 7th International Confer- striction apply, see the page text before download-
ence on Algebraic Methodology and Software Technology
ing.
(AMAST’98). pp. 124–139.

[15] Lowe, G. (1996). “Breaking and fixing the Needham-


• WoTUG, a User Group for CSP and occam style
Schroeder public-key protocol using FDR”. Tools and systems, contains some information about CSP and
Algorithms for the Construction and Analysis of Systems useful links.
(TACAS). Springer-Verlag. pp. 147–166.
• CSP Citations from CiteSeer
[16] Scattergood, J.B. (1998). “The Semantics and Implemen-
tation of Machine-Readable CSP”. D.Phil. Oxford Uni- • LuaCSP, a framework that allows you to create CSP
versity Computing Laboratory. Occam-like Lua-based programming language em-
beddable in your application.
[17] A.W. Roscoe (1994). “Model-checking CSP”. In A Clas-
sical Mind: essays in Honour of C.A.R. Hoare. Prentice • scala-gopher is an implementation of CSP in scala
Hall.

[18] Introduction to FDR3

[19] Parashkevov, Atanas N.; Yantchev, Jay (1996). “ARC - a


tool for efficient refinement and equivalence checking for
CSP”. IEEE Int. Conf. on Algorithms and Architectures for
Parallel Processing ICA3PP '96. pp. 68–75. CiteSeerX:
10.1.1.45.3212.

[20] Leuschel, Michael; Fontaine, Marc (2008). “Probing


the Depths of CSP-M: A new FDR-compliant Validation
Tool” (PDF). ICFEM 2008. Springer-Verlag. Retrieved
2008-11-26.

[21] Sun, Jun; Liu, Yang; Dong, Jin Song (2009). “PAT:
Towards Flexible Verification under Fairness” (PDF).
Proceedings of the 20th International Conference on
Computer-Aided Verification (CAV 2009). Lecture Notes
in Computer Science. Springer. Retrieved 2009-06-16.

[22] Sun, Jun; Liu, Yang; Dong, Jin Song (2008). “Model
Checking CSP Revisited: Introducing a Process Analy-
sis Toolkit” (PDF). Proceedings of the Third International
Symposium on Leveraging Applications of Formal Meth-
ods, Verification and Validation (ISoLA 2008). Commu-
nications in Computer and Information Science. Springer.
pp. 307–322. Retrieved 2009-01-15.

[23] Sun, Jun; Liu, Yang; Dong, Jin Song; Chen, Chun-
qing (2009). “Integrating Specifications and Programs
for System Specification and Verification” (PDF). IEEE
Int. Conf. on Theoretical Aspects of Software Engineering
TASE '09. Retrieved 2009-04-13.

[24] Brooke, Phillip; Paige, Richard (2007). “Lazy Explo-


ration and Checking of CSP Models with CSPsim”. Com-
municating Process Architectures 2007.

[25] ISO 8807, Language of Temporal Ordering Specification

[26] Saifhashemi, A.; Beerel, P. (June 2011). “SystemVer-


ilogCSP: Modeling Digital Asynchronous Circuits Using
SystemVerilog Interfaces”. Proceedings of Communicat-
ing Process Architectures 2011 - WoTUG- 33 (CPA2011).
Chapter 8

Communication

Communication (from Latin commūnicāre, meaning “to Nonverbal communication describes the process of con-
share”[1] ) is the act of conveying intended meanings from
veying meaning in the form of non-word messages. Ex-
one entity or group to another through the use of mutually
amples of nonverbal communication include haptic com-
understood signs and semiotic rules. munication, chronemic communication, gestures, body
The basic steps of communication are: language, facial expression, eye contact, and how one
dresses. Nonverbal communication also relates to in-
tent of a message. Examples of intent are voluntary,
1. the forming of communicative intent intentional movements like shaking a hand or winking,
as well as involuntary, such as sweating.[2] Speech also
2. message composition contains nonverbal elements known as paralanguage, e.g.
rhythm, intonation, tempo, and stress. There may even
3. message encoding and decoding.
be a pheromone component. Research has shown that
4. transmission of the encoded message as a sequence up to 55% of human communication may occur through
of signals using a specific channel or medium non-verbal facial expressions, and a further 38% through
para-language.[3] It affects communication most at the
5. reception of signals subconscious level and establishes trust. Likewise, writ-
ten texts include nonverbal elements such as handwrit-
6. reconstruction of the original message ing style, spatial arrangement of words and the use of
emoticons to convey emotion.
7. interpretation and making sense of the reconstructed
Nonverbal communication demonstrates one of Wazlaw-
message.
ick’s laws: you cannot not communicate. Once proximity
has formed awareness, living creatures begin interpreting
The study of communication can be divided into: any signals received.[4] Some of the functions of nonver-
bal communication in humans are to complement and il-
• information theory which studies the quantification, lustrate, to reinforce and emphasize, to replace and sub-
storage, and communication of information in gen- stitute, to control and regulate, and to contradict the de-
eral; notative message.

• communication studies which concerns human com-


munication;
8.2 Verbal communication
• biosemiotics which examines the communication of
organisms in general. Effective verbal or spoken communication is dependent
on a number of factors and cannot be fully isolated from
The channel of communication can be visual, auditory, other important interpersonal skills such as non-verbal
tactile (such as in Braille) and haptic, olfactory, kinesic, communication, listening skills and clarification. Human
electromagnetic, or biochemical. Human communication language can be defined as a system of symbols (some-
is unique for its extensive use of abstract language. times known as lexemes) and the grammars (rules) by
which the symbols are manipulated. The word “lan-
guage” also refers to common properties of languages.
Language learning normally occurs most intensively dur-
8.1 Nonverbal communication ing human childhood. Most of the thousands of hu-
man languages use patterns of sound or gesture for sym-
Main article: Nonverbal communication bols which enable communication with others around
them. Languages tend to share certain properties, al-

63
64 CHAPTER 8. COMMUNICATION

though there are exceptions. There is no defined line be- of tautologies in the universe.[7] This process, which re-
tween a language and a dialect. Constructed languages quires a vast repertoire of skills in interpersonal process-
such as Esperanto, programming languages, and various ing, listening, observing, speaking, questioning, analyz-
mathematical formalism is not necessarily restricted to ing, gestures, and evaluating enables collaboration and
the properties shared by human languages. Communica- cooperation.[8]
tion is two-way process not merely one way Misunderstandings can be anticipated and solved through
An Effective Communication Process*: formulations, questions and answers, paraphrasing, ex-
amples, and stories of strategic talk. Written commu-
1. Use standard terminology when communicating in- nication can be clarified by planning follow-up talks on
formation. critical written communication as part of the everyday
way of doing business. A few minutes spent talking in
2. Request and provide clarification when needed. the present will save valuable time later by avoiding mis-
understandings in advance. A frequent method for this
3. Ensure statements are direct and unambiguous.
purpose is reiterating what one heard in one’s own words
4. Inform the appropriate individuals when the mission and asking the other person if that really was what was
or plans change. meant (paraphrasing).[9]

5. Communicate all information needed by those indi-


viduals or teams external to the team.
8.4 Business communication
6. Use nonverbal communication appropriately.
7. Use proper order when communicating Main article: Business communication
information.[5]
Business communications is used for a wide variety of
″* for formal English-speaking groups activities including, but not limited to: strategic com-
munications planning, media relations, public relations
(which can include social media, broadcast and written
8.3 Written communication and its communications, and more), brand management, reputa-
tion management, speech-writing, customer-client rela-
historical development tions, and internal/employee communications.

Over time the forms of and ideas about communication Companies with limited resources may choose to engage
have evolved through the continuing progression of tech- in only a few of these activities, while larger organizations
nology. Advances include communications psychology may employ a full spectrum of communications. Since it
and media psychology, an emerging field of study. is difficult to develop such a broad range of skills, com-
munications professionals often specialize in one or two
The progression of written communication can be divided of these areas but usually have at least a working knowl-
into three “information communication revolutions":[6] edge of most of them. By far, the most important qual-
ifications communications professionals can possess are
1. Written communication first emerged through the excellent writing ability, good 'people' skills, and the ca-
use of pictographs. The pictograms were made in pacity to think critically and strategically.
stone, hence written communication was not yet mo-
bile. Pictograms began to develop standardized and
simplified forms.
8.5 Family communication
2. The next step occurred when writing began to ap-
pear on paper, papyrus, clay, wax, and other me- Family communication is the study and of the communi-
dia with common shared writing systems, leading to cation perspective in a broadly defined family, with inti-
adaptable alphabets. Communication became mo- macy and trusting relationship.[10] The main goal of fam-
bile. ily communication is to understand the interactions of
3. The final stage is characterized by the trans- family and the pattern of behaviors of family members
fer of information through controlled waves of in different circumstances.
electromagnetic radiation (i.e., radio, microwave, Family communication study looks at topics such as fam-
infrared) and other electronic signals. ily rules, family roles or family dialectics and how those
factors could affect the communication between family
Communication is thus a process by which meaning is members. Researchers develop theories to understand
assigned and conveyed in an attempt to create shared un- communication behaviors. Family communication study
derstanding. Gregory Bateson called it “the replication also digs deep into certain time periods of family life such
8.7. BARRIERS TO EFFECTIVE HUMAN COMMUNICATION 65

as marriage, parenthood or divorce and how communica- • System design. System design faults refer to prob-
tion stands in those situations. It is important for family lems with the structures or systems in place in an
members to understand communication as a trusted way organization. Examples might include an organiza-
which leads to a well constructed family. tional structure which is unclear and therefore makes
it confusing to know whom to communicate with.
Other examples could be inefficient or inappropriate
information systems, a lack of supervision or train-
8.6 Interpersonal communication ing, and a lack of clarity in roles and responsibilities
which can lead to staff being uncertain about what
In simple terms, interpersonal communication is the com- is expected of them.
munication between one person and another (or others).
It is often referred to as face-to-face communication be- • Attitudinal barriers. Attitudinal barriers come
tween two (or more) people. Both verbal and nonverbal about as a result of problems with staff in an organi-
communication, or body language, play a part in how one zation. These may be brought about, for example, by
person understands another. In verbal interpersonal com- such factors as poor management, lack of consulta-
munication there are two types of messages being sent: a tion with employees, personality conflicts which can
content message and a relational message. Content mes- result in people delaying or refusing to communi-
sages are messages about the topic at hand and relational cate, the personal attitudes of individual employees
messages are messages about the relationship itself.[11] which may be due to lack of motivation or dissatis-
This means that relational messages come across in how faction at work, brought about by insufficient train-
one says something and it demonstrates a person’s feel- ing to enable them to carry out particular tasks, or
ings, whether positive or negative, towards the individ- simply resistance to change due to entrenched atti-
ual they are talking to, indicating not only how they feel tudes and ideas.
about the topic at hand, but also how they feel about their
• Ambiguity of words/phrases. Words sounding the
relationship with the other individual.[11] When texting or
same but having different meaning can convey a dif-
posting something on social media the relational message
ferent meaning altogether. Hence the communica-
is lost and can cause people to misinterpret the message.
tor must ensure that the receiver receives the same
Computer-mediated communication is a largely studied
meaning. It is better if such words are avoided by
topic for this reason along with many others.
using alternatives whenever possible.

• Individual linguistic ability. The use of jargon,


difficult or inappropriate words in communication
8.7 Barriers to effective human can prevent the recipients from understanding the
communication message. Poorly explained or misunderstood mes-
sages can also result in confusion. However, re-
Barriers to effective communication can retard or distort search in communication has shown that confusion
the message and intention of the message being conveyed can lend legitimacy to research when persuasion
which may result in failure of the communication pro- fails.[13][14]
cess or an effect that is undesirable. These include fil-
• Physiological barriers. These may result from
tering, selective perception, information overload, emo-
individuals’ personal discomfort, caused—for
tions, language, silence, communication apprehension,
example—by ill health, poor eyesight or hearing
gender differences and political correctness[12]
difficulties.
This also includes a lack of expressing “knowledge-
appropriate” communication, which occurs when a per- • Bypassing. These happens when the communica-
son uses ambiguous or complex legal words, medical jar- tors (sender and the receiver) do not attach the same
gon, or descriptions of a situation or environment that is symbolic meanings to their words. It is when the
not understood by the recipient. sender is expressing a thought or a word but the re-
ceiver take it in a different meaning. For example-
ASAP, Rest room
• Physical barriers. Physical barriers are often due
to the nature of the environment. An example of • Technological multi-tasking and absorbency.
this is the natural barrier which exists if staff are With a rapid increase in technologically-driven com-
located in different buildings or on different sites. munication in the past several decades, individuals
Likewise, poor or outdated equipment, particularly are increasingly faced with condensed communica-
the failure of management to introduce new tech- tion in the form of e-mail, text, and social updates.
nology, may also cause problems. Staff shortages This has, in turn, led to a notable change in the
are another factor which frequently causes commu- way younger generations communicate and perceive
nication difficulties for an organization. their own self-efficacy to communicate and connect
66 CHAPTER 8. COMMUNICATION

with others. With the ever-constant presence of an- • Paralinguistics are the voice involved in communi-
other “world” in one’s pocket, individuals are multi- cation other than actual language and involves tones,
tasking both physically and cognitively as constant pitch, vocal cues etc. It also include sounds from
reminders of something else happening somewhere throat and all these are greatly influenced by cultural
else bombard them. Though perhaps too new of an differences across borders.
advancement to yet see long-term effects, this is a
• Proxemics deals with the concept of space element
notion currently explored by such figures as Sherry
in communication. Proxemics explains four zones
Turkle.[15]
of spaces namely intimate personal, social and pub-
lic. This concept differs with different culture as the
• Fear of being criticized. This is a major factor that
permissible space vary in different countries.
prevents good communication. If we exercise sim-
ple practices to improve our communication skill, • Artifactics studies about the non verbal signals or
we can become effective communicators. For ex- communication which emerges from personal ac-
ample, read an article from the newspaper or collect cessories such as dresses or fashion accessories worn
some news from the television and present it in front and it varies with culture as people of different coun-
of the mirror. This will not only boost your confi- tries follow different dressing codes.
dence, but also improve your language and vocabu-
lary. • Chronemics deal with the time aspects of com-
munication and also include importance given to
the time. some issues explaining this conceptpt
are pauses, silences and response lag during an
8.7.1 Cultural aspects interaction. This aspect of communication is also
influenced by cultural differences as it is well known
Cultural differences exist within countries that there is a great difference in the value given by
(tribal/regional differences, dialects etc.), between different cultures to time.
religious groups and in organisations or at an organisa-
tional level - where companies, teams and units may have • Kinesics mainly deals with the body languages such
different expectations, norms and idiolects. Families as postures, gestures, head nods, leg movements etc.
and family groups may also experience the effect of In different countiessame gestures and postures are
cultural barriers to communication within and between used to convey different messages. Sometimes even
different family members or groups. For example: a particular kinesic indicating something good in a
words, colours and symbols have different meanings in country may have a negative meaning in any other
different cultures. In most parts of the world, nodding culture.
your head means agreement, shaking your head means
no, except in some parts of the world.[16] So in order to have an effective communication across
world it is desirable to have a knowledge of cultural vari-
Communication to a great extent is influenced by cul-
ables effecting communication.
ture and cultural variables.[17][18][19][20] Understanding
cultural aspects of communication refers to having knowl- According to Michael Walsh and Ghil'ad Zuckermann,
edge of different cultures in order to communicate ef- Western conversational interaction is typically “dyadic”,
fectively with cross culture people. Cultural aspects of between two particular people, where eye contact is im-
communication are of great relevance in today’s world portant and the speaker controls the interaction; and
which is now a global village, thanks to globalisation. “contained” in a relatively short, defined time frame.
Cultural aspects of communication are the cultural dif- However, traditional Aboriginal conversational interac-
ferences which influences communication across borders. tion is “communal”, broadcast to many people, eye con-
Impact of cultural differences on communication compo- tact is not important, the listener controls the interaction;
nents are explained below: and “continuous”, spread over a longer, indefinite time
frame.[21][22]
1) Verbal communication refers to form of communica-
tion which uses spoken and written words for expressing
and transferring views and ideas. Language is the most
important tool of verbal communication and it is the area 8.8 Nonhuman communication
where cultural difference play its role. All countries have
different languages and to have a better understanding of See also: Biocommunication (science), Interspecies
different culture it is required to have knowledge of lan- communication, and Biosemiotics
guages of different countries.
2) Non verbal communication is a very wide concept and Every information exchange between living organisms —
it includes all the other forms of communication which i.e. transmission of signals that involve a living sender
do not uses written or spoken words. Non verbal com- and receiver can be considered a form of communi-
munication takes following forms: cation; and even primitive creatures such as corals are
8.9. MODELS OF COMMUNICATION 67

competent to communicate. Nonhuman communication organism to react. This implies that fungal organisms can
also include cell signaling, cellular communication, and differentiate between molecules taking part in biotic mes-
chemical transmissions between primitive organisms like sages and similar molecules being irrelevant in the situa-
bacteria and within the plant and fungal kingdoms. tion. So far five different primary signalling molecules are
known to coordinate different behavioral patterns such as
filamentation, mating, growth, and pathogenicity. Behav-
8.8.1 Animals ioral coordination and production of signaling substances
is achieved through interpretation processes that enables
The broad field of animal communication encompasses the organism to differ between self or non-self, a biotic
most of the issues in ethology. Animal communication indicator, biotic message from similar, related, or non-
can be defined as any behavior of one animal that af- related species, and even filter out “noise”, i.e. similar
fects the current or future behavior of another animal. molecules without biotic content.[26]
The study of animal communication, called zoo semiotics
(distinguishable from anthroposemiotics, the study of hu-
man communication) has played an important part in the 8.8.3 Bacteria quorum sensing
development of ethology, sociobiology, and the study of
animal cognition. Animal communication, and indeed Communication is not a tool used only by humans, plants
the understanding of the animal world in general, is a and animals, but it is also used by microorganisms like
rapidly growing field, and even in the 21st century so bacteria. The process is called quorum sensing. Through
far, a great share of prior understanding related to di- quorum sensing, bacteria are able to sense the density of
verse fields such as personal symbolic name use, animal cells, and regulate gene expression accordingly. This can
emotions, animal culture and learning, and even sexual be seen in both gram positive and gram negative bacte-
conduct, long thought to be well understood, has been ria. This was first observed by Fuqua et al. in marine
[27]
revolutionized. A special field of animal communication microorganisms like V. harveyi and V. fischeri.
has been investigated in more detail such as vibrational
communication.[23]
8.9 Models of communication
8.8.2 Plants and fungi Main article: Models of communication
The first major model for communication was intro-
Communication is observed within the plant organism,
i.e. within plant cells and between plant cells, between
plants of the same or related species, and between plants
and non-plant organisms, especially in the root zone.
Plant roots communicate with rhizome bacteria, fungi,
and insects within the soil. These interactions are gov-
erned by syntactic, pragmatic, and semantic rules, and
are possible because of the decentralized “nervous sys-
tem” of plants. The original meaning of the word “neu-
ron” in Greek is “vegetable fiber” and recent research has
shown that most of the microorganism plant communica-
tion processes are neuron-like.[24] Plants also communi- Shannon and Weaver Model of Communication
cate via volatiles when exposed to herbivory attack behav-
ior, thus warning neighboring plants.[25] In parallel they duced by Claude Shannon and Warren Weaver for Bell
produce other volatiles to attract parasites which attack Laboratories in 1949[28] The original model was designed
these herbivores. In stress situations plants can overwrite to mirror the functioning of radio and telephone tech-
the genomes they inherited from their parents and revert nologies. Their initial model consisted of three primary
to that of their grand- or great-grandparents. parts: sender, channel, and receiver. The sender was the
Fungi communicate to coordinate and organize their part of a telephone a person spoke into, the channel was
growth and development such as the formation of the telephone itself, and the receiver was the part of the
Marcelia and fruiting bodies. Fungi communicate with phone where one could hear the other person. Shannon
their own and related species as well as with non fungal and Weaver also recognized that often there is static that
organisms in a great variety of symbiotic interactions, es- interferes with one listening to a telephone conversation,
pecially with bacteria, unicellular eukaryote, plants and which they deemed noise.
insects through biochemicals of biotic origin. The bio- In a simple model, often referred to as the transmission
chemicals trigger the fungal organism to react in a spe- model or standard view of communication, information
cific manner, while if the same chemical molecules are or content (e.g. a message in natural language) is sent in
not part of biotic messages, they do not trigger the fungal some form (as spoken language) from an emisor/ sender/
68 CHAPTER 8. COMMUNICATION

Transactional model of communication

Communication major dimensions scheme

Communication code scheme

Interactional Model of Communication

Linear Communication Model

2. A transmitter, which encodes the message into sig-


nals

3. A channel, to which signals are adapted for trans-


mission
Berlo’s Sender-Message-Channel-Receiver Model of Communi- 4. A noise source, which distorts the signal while it
cation propagates through the channel

5. A receiver, which 'decodes’ (reconstructs) the mes-


encoder to a destination/ receiver/ decoder. This com- sage from the signal.
mon conception of communication simply views com-
munication as a means of sending and receiving infor- 6. A destination, where the message arrives.
mation. The strengths of this model are simplicity, gen-
erality, and quantifiability. Claude Shannon and Warren Shannon and Weaver argued that there were three levels
Weaver structured this model based on the following el- of problems for communication within this theory.
ements:
The technical problem: how accurately can the
1. An information source, which produces a message. message be transmitted?
8.9. MODELS OF COMMUNICATION 69

The semantic problem: how precisely is the secondary phenomena that followed the primary acquisi-
meaning 'conveyed'? tion of communicative competences within social inter-
actions.
The effectiveness problem: how effectively
does the received meaning affect behavior? In light of these weaknesses, Barnlund (2008) proposed
a transactional model of communication.[32] The basic
Daniel Chandler[29] critiques the transmission model by premise of the transactional model of communication is
stating: that individuals are simultaneously engaging in the send-
ing and receiving of messages.

It assumes communicators are isolated individ- In a slightly more complex form a sender and a receiver
uals. are linked reciprocally. This second attitude of commu-
nication, referred to as the constitutive model or construc-
No allowance for differing purposes. tionist view, focuses on how an individual communicates
No allowance for differing interpretations. as the determining factor of the way the message will be
interpreted. Communication is viewed as a conduit; a
No allowance for unequal power relations. passage in which information travels from one individual
No allowance for situational contexts. to another and this information becomes separate from
the communication itself. A particular instance of com-
munication is called a speech act. The sender’s personal
In 1960, David Berlo expanded on Shannon and Weaver’s
filters and the receiver’s personal filters may vary depend-
(1949) linear model of communication and created
ing upon different regional traditions, cultures, or gen-
the SMCR Model of Communication.[30] The Sender-
der; which may alter the intended meaning of message
Message-Channel-Receiver Model of communication
contents. In the presence of "communication noise" on
separated the model into clear parts and has been ex-
the transmission channel (air, in this case), reception and
panded upon by other scholars.
decoding of content may be faulty, and thus the speech
Communication is usually described along a few major act may not achieve the desired effect. One problem
dimensions: Message (what type of things are commu- with this encode-transmit-receive-decode model is that
nicated), source / emisor / sender / encoder (by whom), the processes of encoding and decoding imply that the
form (in which form), channel (through which medium), sender and receiver each possess something that functions
destination / receiver / target / decoder (to whom), and as a codebook, and that these two code books are, at the
Receiver. Wilbur Schram (1954) also indicated that we very least, similar if not identical. Although something
should also examine the impact that a message has (both like code books is implied by the model, they are nowhere
desired and undesired) on the target of the message.[31] represented in the model, which creates many conceptual
Between parties, communication includes acts that confer difficulties.
knowledge and experiences, give advice and commands,
Theories of coregulation describe communication as a
and ask questions. These acts may take many forms, in
creative and dynamic continuous process, rather than
one of the various manners of communication. The form
a discrete exchange of information. Canadian media
depends on the abilities of the group communicating. To-
scholar Harold Innis had the theory that people use dif-
gether, communication content and form make messages
ferent types of media to communicate and which one
that are sent towards a destination. The target can be one-
they choose to use will offer different possibilities for the
self, another person or being, another entity (such as a
shape and durability of society (Wark, McKenzie 1997).
corporation or group of beings).
His famous example of this is using ancient Egypt and
Communication can be seen as processes of information looking at the ways they built themselves out of media
transmission with three levels of semiotic rules: with very different properties stone and papyrus. Pa-
pyrus is what he called 'Space Binding'. it made possible
1. Pragmatic (concerned with the relations between the transmission of written orders across space, empires
signs/expressions and their users) and enables the waging of distant military campaigns and
colonial administration. The other is stone and 'Time
2. Semantic (study of relationships between signs and Binding', through the construction of temples and the
symbols and what they represent) and pyramids can sustain their authority generation to gen-
eration, through this media they can change and shape
3. Syntactic (formal properties of signs and symbols). communication in their society (Wark, McKenzie 1997).

Therefore, communication is social interaction where at


least two interacting agents share a common set of signs
and a common set of semiotic rules. This commonly held
rule in some sense ignores autocommunication, including
intrapersonal communication via diaries or self-talk, both
70 CHAPTER 8. COMMUNICATION

8.10 Noise • Four Cs of 21st century learning


• Human communication
In any communication model, noise is interference with
the decoding of messages sent over a channel by an en- • Inter Mirifica
coder. There are many examples of noise:
• Intercultural communication
• Environmental noise. Noise that physically dis- • Ishin-denshin
rupts communication, such as standing next to loud
speakers at a party, or the noise from a construction • Sign system
site next to a classroom making it difficult to hear • Small talk
the professor.
• SPEAKING
• Physiological-impairment noise. Physical mal-
adies that prevent effective communication, such • Telecommunication
as actual deafness or blindness preventing messages
• Telepathy
from being received as they were intended.
• Understanding
• Semantic noise. Different interpretations of the
meanings of certain words. For example, the word • 21st century skills
“weed” can be interpreted as an undesirable plant in
a yard, or as a euphemism for marijuana.

• Syntactical noise. Mistakes in grammar can dis- 8.13 References


rupt communication, such as abrupt changes in verb
tense during a sentence. [1] Harper, Douglas. “communication”. Online Etymology
Dictionary. Retrieved 2013-06-23.
• Organizational noise. Poorly structured commu-
[2] “Types of Body Language”. www.simplybodylanguage.
nication can prevent the receiver from accurate in-
com. Retrieved 2016-02-08.
terpretation. For example, unclear and badly stated
directions can make the receiver even more lost. [3] Mehrabian, A. (1972). Nonverbal communication.
Transaction Publishers.
• Cultural noise. Stereotypical assumptions can
cause misunderstandings, such as unintentionally of- [4] Wazlawick, Paul (1970’s) opus
fending a non-Christian person by wishing them a [5] “Effective Communication.” Be Influenced, Figure 7-1
“Merry Christmas”. Presents a Communication Model. SHANNON’S COMMU-
NICATIONS MODEL(n.d.): n. pag. Web.
• Psychological noise. Certain attitudes can also
make communication difficult. For instance, great [6] Xin Li. “Complexity Theory – the Holy Grail of 21st Cen-
anger or sadness may cause someone to lose focus on tury”. Lane Dept of CSEE, West Virginia University.
the present moment. Disorders such as autism may
[7] Bateson, Gregory (1960) Steps to an Ecology of Mind
also severely hamper effective communication.[33]
[8] “communication”. The office of superintendent of Public
Instruction. Washington.
8.11 Communication as academic [9] Heyman, Richard. Why Didn't You Say That in the First
discipline Place? How to Be Understood at Work.

[10] Turner, L. H., & West, R. L. (2013). Perspectives on fam-


Main article: Communication studies ily communication. Boston, MA: McGraw-Hill.

[11] Trenholm, Sarah; Jensen, Arthur (2013). Interpersonal


Communication Seventh Edition. New York: Oxford Uni-
versity Press. pp. 360–361.
8.12 See also [12] Robbins, S., Judge, T., Millett, B., & Boyle, M. (2011).
Organisational Behaviour. 6th ed. Pearson, French’s For-
• Advice est, NSW p315-317.

• Augmentative and alternative communication [13] What Should Be Included in a Project Plan - Retrieved
December 18th, 2009
• Communication rights
[14] J. Scott Armstrong (1980). “Bafflegab Pays” (PDF). Psy-
• Data communication chology Today: 12.
8.14. FURTHER READING 71

[15] “Technology can sometimes hinder communication, TR [32] Barnlund, D. C. (2008). A transactional model of com-
staffers observe - The Collegian”. The Collegian. Re- munication. In. C. D. Mortensen (Eds.), Communication
trieved 2016-01-11. theory (2nd ed., pp47-57). New Brunswick, New Jersey:
Transaction.
[16] Nageshwar Rao, Rajendra P.Das, Communication skills,
Himalaya Publishing House, 9789350516669, p.48 [33] Roy M. Berko, et al., Communicating. 11th ed. (Boston,
MA: Pearson Education, Inc., 2010) 9-12
[17] http://expertscolumn.com/content/
communication-and-cognitive-components-culture

[18] http://www.beyondintractability.org/bi-essay/ 8.14 Further reading


cross-cultural-communication

[19] http://www.studymode.com/essays/ • Innis, Harold. Empire and Communications. Rev.


by Mary Q. Innis; foreword by Marshall McLuhan.
Important-Components-Of-Cross-Cultural-Communication-595745.
html Toronto, Ont.: University of Toronto Press, 1972.
xii, 184 p. N.B.: “Here he [i.e. Innis] develops his
[20] http://www.ijdesign.org/ojs/index.php/IJDesign/article/ theory that the history of empires is determined to
view/313/155
a large extent by their means of communication.”—
[21] Zuckermann, Ghil'ad; et al. (2015), ENGAGING - A From the back cover of the book’s pbk. ed. ISBN
Guide to Interacting Respectfully and Reciprocally with 0-8020-6119-2 pbk
Aboriginal and Torres Strait Islander People, and their Arts
Practices and Intellectual Property (PDF), Australian Gov-
ernment: Indigenous Culture Support, p. 12, retrieved 25
June 2016

[22] Walsh, Michael (1997), Cross cultural communication


problems in Aboriginal Australia, Australian National Uni-
versity, North Australia Research Unit, pp. 7–9, retrieved
25 June 2016

[23] Randall J.A. (2014). Vibrational Communication: Spi-


ders to Kangaroo Rats. In: Witzany, G. (ed). Biocommu-
nication of Animals, Springer, Dordrecht. pp. 103-133.
ISBN 978-94-007-7413-1.

[24] Baluska, F.; Marcuso, Stefano; Volkmann, Dieter (2006).


Communication in plants: neuronal aspects of plant life.
Taylor & Francis US. p. 19. ISBN 3-540-28475-3. ...the
emergence of plant neurobiology as the most recent area
of plant sciences.

[25] Ian T. Baldwin, Jack C. Schultz (1983). “Rapid Changes


in Tree Leaf Chemistry Induced by Damage: Evidence for
Communication Between Plants”. Science. 221 (4607):
277–279. doi:10.1126/science.221.4607.277.

[26] Witzany, G (ed) (2012). Biocommunication of Fungi.


Springer. ISBN 978-94-007-4263-5

[27] Anand, Sandhya. Quorum Sensing- Communication Plan


For Microbes. Article dated 2010-12-28, retrieved on
2012-04-03.

[28] Shannon, C. E., & Weaver, W. (1949). The mathematical


theory of communication. Urbana, Illinois: University of
Illinois Press

[29] Daniel Chandler, “The Transmission Model of Commu-


nication”, Aber.ac.uk

[30] Berlo, D. K. (1960). The process of communication. New


York, New York: Holt, Rinehart, & Winston.

[31] Schramm, W. (1954). How communication works. In W.


Schramm (Ed.), The process and effects of communication
(pp. 3–26). Urbana, Illinois: University of Illinois Press.
Chapter 9

Communications protocol

In telecommunications, a communication protocol is using a shared transmission medium. Transmission is not


a system of rules that allow two or more entities of a necessarily reliable, and individual systems may use dif-
communications system to transmit information via any ferent hardware or operating systems.
kind of variation of a physical quantity. These are the
To implement a networking protocol, the protocol soft-
rules or standard that defines the syntax, semantics and ware modules are interfaced with a framework imple-
synchronization of communication and possible error re-
mented on the machine’s operating system. This frame-
covery methods. Protocols may be implemented by work implements the networking functionality of the op-
hardware, software, or a combination of both.[1]
erating system.[6] The best known frameworks are the
Communicating systems use well-defined formats TCP/IP model and the OSI model.
(protocol) for exchanging various messages. Each mes- At the time the Internet was developed, layering had
sage has an exact meaning intended to elicit a response proven to be a successful design approach for both com-
from a range of possible responses pre-determined piler and operating system design and, given the similar-
for that particular situation. The specified behavior is ities between programming languages and communica-
typically independent of how it is to be implemented. tions protocols, layering was applied to the protocols as
Communications protocols have to be agreed upon by the well.[7] This gave rise to the concept of layered protocols
parties involved.[2] To reach agreement, a protocol may which nowadays forms the basis of protocol design.[8]
be developed into a technical standard. A programming
language describes the same for computations, so there Systems typically do not use a single protocol to han-
is a close analogy between protocols and program- dle a transmission. Instead they use a set of cooperating
ming languages: protocols are to communications what protocols, sometimes called a protocol family or protocol
programming languages are to computations.[3] suite.[9] Some of the best known protocol suites include:
IPX/SPX, X.25, AX.25, AppleTalk and TCP/IP.
The protocols can be arranged based on functionality in
9.1 Communicating systems groups, for instance there is a group of transport proto-
cols. The functionalities are mapped onto the layers, each
The information exchanged between devices through a layer solving a distinct class of problems relating to, for
network, or other media is governed by rules and con- instance: application-, transport-, internet- and network
ventions that can be set out in technical specifications interface-functions.[10] To transmit a message, a protocol
called communications protocol standards. The nature has to be selected from each layer, so some sort of multi-
of a communication, the actual data exchanged and any plexing and demultiplexing takes place. The selection of
state-dependent behaviors, is defined by these specifica- the next protocol is accomplished by extending the mes-
tions. sage with a protocol selector for each layer.[11]

In digital computing systems, the rules can be expressed


by algorithms and data structures. Expressing the algo-
rithms in a portable programming language makes the 9.2 Basic requirements of proto-
protocol software operating-system independent. cols
Operating systems usually contain a set of cooperating
processes that manipulate shared data to communicate Messages are sent and received on communicating sys-
with each other. This communication is governed by tems to establish communications. Protocols should
well-understood protocols, which can be embedded in the therefore specify rules governing the transmission. In
process code itself.[4][5] general, much of the following should be addressed:[12]
In contrast, because there is no common memory, com-
municating systems have to communicate with each other • Data formats for data exchange. Digital message

72
9.3. PROTOCOLS AND PROGRAMMING LANGUAGES 73

bitstrings are exchanged. The bitstrings are divided a permanently broken link, the retransmission has no
in fields and each field carries information relevant effect so the number of retransmissions is limited.
to the protocol. Conceptually the bitstring is divided Exceeding the retry limit is considered an error.[18]
into two parts called the header area and the data
area. The actual message is stored in the data area, • Direction of information flow needs to be addressed
so the header area contains the fields with more rel- if transmissions can only occur in one direction at a
evance to the protocol. Bitstrings longer than the time as on half-duplex links. This is known as Media
maximum transmission unit (MTU) are divided in Access Control. Arrangements have to be made to
pieces of appropriate size.[13] accommodate the case when two parties want to gain
control at the same time.[19]
• Address formats for data exchange. Addresses are
used to identify both the sender and the intended • Sequence control. We have seen that long bitstrings
receiver(s). The addresses are stored in the header are divided in pieces, and then sent on the net-
area of the bitstrings, allowing the receivers to deter- work individually. The pieces may get lost or de-
mine whether the bitstrings are intended for them- layed or take different routes to their destination on
selves and should be processed or should be ignored. some types of networks. As a result, pieces may
A connection between a sender and a receiver can be arrive out of sequence. Retransmissions can result
identified using an address pair (sender address, re- in duplicate pieces. By marking the pieces with se-
ceiver address). Usually some address values have quence information at the sender, the receiver can
special meanings. An all-1s address could be taken determine what was lost or duplicated, ask for nec-
to mean an addressing of all stations on the network, essary retransmissions and reassemble the original
so sending to this address would result in a broad- message.[20]
cast on the local network. The rules describing the
• Flow control is needed when the sender transmits
meanings of the address value are collectively called
faster than the receiver or intermediate network
an addressing scheme.[14]
equipment can process the transmissions. Flow con-
• Address mapping. Sometimes protocols need to map trol can be implemented by messaging from receiver
addresses of one scheme on addresses of another to sender.[21]
scheme. For instance to translate a logical IP ad-
dress specified by the application to an Ethernet Getting the data across a network is only part of the prob-
hardware address. This is referred to as address lem for a protocol. The data received has to be evalu-
mapping.[15] ated in the context of the progress of the conversation,
so a protocol has to specify rules describing the context.
• Routing. When systems are not directly connected, These kind of rules are said to express the syntax of the
intermediary systems along the route to the intended communications. Other rules determine whether the data
receiver(s) need to forward messages on behalf of is meaningful for the context in which the exchange takes
the sender. On the Internet, the networks are con- place. These kind of rules are said to express the seman-
nected using routers. This way of connecting net- tics of the communications.
works is called internetworking.

• Detection of transmission errors is necessary on net-


works which cannot guarantee error-free operation. 9.3 Protocols and programming
In a common approach, CRCs of the data area are languages
added to the end of packets, making it possible for
the receiver to detect differences caused by errors.
The receiver rejects the packets on CRC differences Protocols are to communications what algorithms
[3][22]
or pro-
and arranges somehow for retransmission. [16] gramming languages are to computations.
This analogy has important consequences for both the de-
• Acknowledgements of correct reception of packets sign and the development of protocols. One has to con-
is required for connection-oriented communication. sider the fact that algorithms, programs and protocols are
Acknowledgements are sent from receivers back to just different ways of describing expected behavior of in-
their respective senders.[17] teracting objects. A familiar example of a protocolling
• Loss of information - timeouts and retries. Packets language is the HTML language used to describe web
may be lost on the network or suffer from long de- pages which are the actual web protocols.
lays. To cope with this, under some protocols, a In programming languages the association of identifiers
sender may expect an acknowledgement of correct to a value is termed a definition. Program text is struc-
reception from the receiver within a certain amount tured using block constructs and definitions can be local
of time. On timeouts, the sender must assume the to a block. The localized association of an identifier to a
packet was not received and retransmit it. In case of value established by a definition is termed a binding and
74 CHAPTER 9. COMMUNICATIONS PROTOCOL

the region of program text in which a binding is effective gle universal protocol would be very hard to design and
is known as its scope.[23] The computational state is kept implement correctly. Instead, the IETF decided to reduce
using two components: the environment, used as a record complexity by assuming a relatively simple network ar-
of identifier bindings, and the store, which is used as a chitecture allowing decomposition of the single universal
record of the effects of assignments.[24] networking protocol into two generic protocols, TCP and
In communications, message values are transferred using IP, and two classes of specific protocols, one dealing with
transmission media. By analogy, the equivalent of a store the low-level network details and one dealing with the
would be a collection of transmission media, instead of high-level details of common network applications (re-
mote login, file transfer, email and web browsing). ISO
a collection of memory locations. A valid assignment
in a protocol (as an analog of programming language) choose a similar but more general path, allowing other
network architectures, to standardize protocols.
could be Ethernet:='message' , meaning a message is to
be broadcast on the local ethernet.
On a transmission medium there can be many receivers.
For instance a mac-address identifies an ether network 9.5 Protocol design
card on the transmission medium (the 'ether'). In
our imaginary protocol, the assignment ethernet[mac- Communicating systems operate in parallel. The pro-
address]:=message value could therefore make sense.[25] gramming tools and techniques for dealing with parallel
By extending the assignment statement of an existing pro- processes are collectively called concurrent programming.
gramming language with the semantics described, a pro- Concurrent programming only deals with the synchro-
tocolling language could easily be imagined. nization of communication. The syntax and semantics of
the communication governed by a low-level protocol usu-
Operating systems provide reliable communication and
ally have modest complexity, so they can be coded with
synchronization facilities for communicating objects con-
relative ease. High-level protocols with relatively large
fined to the same system by means of system libraries. A
complexity could however merit the implementation of
programmer using a general purpose programming lan-
language interpreters. An example of the latter case is
guage (like C or ADA) can use the routines in the libraries
the HTML language.
to implement a protocol, instead of using a dedicated pro-
Concurrent programming has traditionally been a topic
tocolling language.
in operating systems theory texts.[28] Formal verifica-
tion seems indispensable, because concurrent programs
are notorious for the hidden and sophisticated bugs
9.4 Universal protocols they contain.[29] A mathematical approach to the study
of concurrency and communication is referred to as
Despite their numbers, networking protocols show little Communicating Sequential Processes (CSP).[30] Concur-
variety, because all networking protocols use the same rency can also be modelled using finite state machines
underlying principles and concepts, in the same way. like Mealy and Moore machines. Mealy and Moore ma-
So, the use of a general purpose programming language chines are in use as design tools in digital electronics sys-
would yield a large number of applications only differ- tems, which we encounter in the form of hardware used in
ing in the details.[27] A suitably defined (dedicated) pro- telecommunications or electronic devices in general.[31]
tocolling language would therefore have little syntax, per-
This kind of design can be a bit of a challenge to say
haps just enough to specify some parameters or optional
the least, so it is important to keep things simple. For
modes of operation, because its virtual machine would
the Internet protocols, in particular and in retrospect, this
have incorporated all possible principles and concepts
meant a basis for protocol design was needed to allow de-
making the virtual machine itself a universal protocol.
composition of protocols into much simpler, cooperating
The protocolling language would have some syntax and
protocols.
a lot of semantics describing this universal protocol and
would therefore in effect be a protocol, hardly differing
from this universal networking protocol. In this (net- 9.5.1 A basis for protocol design
working) context a protocol is a language.
The notion of a universal networking protocol provides Systems do not use a single protocol to handle a trans-
a rationale for standardization of networking protocols; mission. Instead they use a set of cooperating protocols,
assuming the existence of a universal networking proto- sometimes called a protocol family or protocol suite.[9] To
col, development of protocol standards using a consensus cooperate the protocols have to communicate with each
model (the agreement of a group of experts) might be a other, so some kind of conceptual framework is needed to
viable way to coordinate protocol design efforts. make this communication possible. Also note that soft-
Networking protocols operate in very heterogeneous en- ware is needed to implement both the 'xfer-mechanism'
vironments consisting of very different network technolo- and a protocol (no protocol, no communication).
gies and a (possibly) very rich set of applications, so a sin- In literature there are numerous references to the analo-
9.5. PROTOCOL DESIGN 75

gies between computer communication and program- Protocol layering


ming. By analogy we could say that the aforemen-
tioned 'xfer-mechanism' is comparable to a cpu; a
'xfer-mechanism' performs communications and a cpu
performs computations and the 'framework' introduces
something that allows the protocols to be designed in-
dependent of one another by providing separate execu- A B
tion environments for them. Furthermore, it is repeatedly
stated that protocols are to computer communication what
programming languages are to computation.[32][33]

9.5.2 Layering

TCP/IP - model
HTTP POP3
Application

UDP
Transport
TCP
Figure 3. Message flows using a protocol suite. Black loops show
Internet the actual messaging loops, red loops are the effective communi-
IP
cations between layers enabled by the lower layers.
Network interface
Ethernet protocol Protocol layering now forms the basis of protocol
design.[8] It allows the decomposition of single, complex
protocols into simpler, cooperating protocols, but it is
Figure 2. The TCP/IP model or Internet layering scheme and its also a functional decomposition, because each protocol
relation to some common protocols. belongs to a functional class, called a protocol layer.[34]
The protocol layers each solve a distinct class of commu-
The communications protocols in use on the Internet are nication problems. The Internet protocol suite consists
designed to function in very diverse and complex settings. of the following layers: application-, transport-, internet-
To ease design, communications protocols are structured and network interface-functions.[10] Together, the layers
using a layering scheme as a basis. Instead of using a sin- make up a layering scheme or model.
gle universal protocol to handle all transmission tasks, a
set of cooperating protocols fitting the layering scheme In computations, we have algorithms and data, and in
is used.[34] The layering scheme in use on the Internet is communications, we have protocols and messages, so the
called the TCP/IP model. The actual protocols are col- analog of a data flow diagram would be some kind of mes-
lectively called the Internet protocol suite. The group re- sage flow diagram.[22] To visualize protocol layering and
sponsible for this design is called the Internet Engineering protocol suites, a diagram of the message flows in and
Task Force (IETF). between two systems, A and B, is shown in figure 3.
The systems both make use of the same protocol suite.
Typically, a hardware delivery mechanism layer is used
to build a connectionless packet delivery system on top of The vertical flows (and protocols) are in system and the
horizontal message flows (and protocols) are between sys-
which a reliable transport layer is built, on top of which is
the application software. Layers below and above these tems. The message flows are governed by rules, and data
can be defined, and protocols are very often stacked to formats specified by protocols. The blue lines therefore
give tunnelling, for example the internet protocol can be mark the boundaries of the (horizontal) protocol layers.
tunnelled across an ATM network protocol to provide The vertical protocols are not layered because they don't
connectivity by layering the internet protocol on top of obey the protocol layering principle which states that a
the ATM protocol transport layer. layered protocol is designed so that layer n at the destina-
The number of layers of a layering scheme and the way tion receives exactly the same object sent by layer n at the
the layers are defined can have a drastic impact on the source. The horizontal protocols are layered protocols and
protocols involved. This is where the analogies come all belong to the protocol suite. Layered protocols allow
into play for the TCP/IP model, because the designers the protocol designer to concentrate on one layer at a time,
of TCP/IP employed the same techniques used to con- without worrying about how other layers perform.[33]
quer the complexity of programming language compilers The vertical protocols need not be the same protocols on
(design by analogy) in the implementation of its protocols both systems, but they have to satisfy some minimal as-
and its layering scheme.[35] sumptions to ensure the protocol layering principle holds
76 CHAPTER 9. COMMUNICATIONS PROTOCOL

for the layered protocols. This can be achieved using a


technique called Encapsulation.[36]
A B
Usually, a message or a stream of data is divided into
small pieces, called messages or streams, packets, IP data-
grams or network frames depending on the layer in which
the pieces are to be transmitted. The pieces contain a
header area and a data area. The data in the header area
identifies the source and the destination on the network R
of the packet, the protocol, and other data meaningful to
the protocol like CRC’s of the data to be sent, data length,
and a timestamp.[37][38]
The rule enforced by the vertical protocols is that the
pieces for transmission are to be encapsulated in the •
data area of all lower protocols on the sending side and Figure 4. Message flows in the presence of a router
the reverse is to happen on the receiving side. The re-
sult is that at the lowest level the piece looks like this:
'Header1,Header2,Header3,data' and in the layer directly Physical networks are interconnected by routers.
above it: 'Header2,Header3,data' and in the top layer: Routers forward packets between interconnected
'Header3,data', both on the sending and receiving side. networks making it possible for hosts to reach hosts
This rule therefore ensures that the protocol layering prin- on other physical networks. The message flows be-
ciple holds and effectively virtualizes all but the lowest tween two communicating system A and B in the
transmission lines, so for this reason some message flows presence of a router R are illustrated in figure 4.
are coloured red in figure 3. Datagrams are passed from router to router until a
router is reached that can deliver the datagram on
To ensure both sides use the same protocol, the pieces
a physically attached network (called direct deliv-
also carry data identifying the protocol in their header.
ery).[45] To decide whether a datagram is to be deliv-
The design of the protocol layering and the network (or ered directly or is to be sent to a router closer to the
Internet) architecture are interrelated, so one cannot be destination, a table called the IP routing table is con-
designed without the other.[39] Some of the more impor- sulted. The table consists of pairs of networkids and
tant features in this respect of the Internet architecture the paths to be taken to reach known networks. The
and the network services it provides are described next. path can be an indication that the datagram should
be delivered directly or it can be the address of a
• The Internet offers universal interconnection, which router known to be closer to the destination.[46] A
means that any pair of computers connected to the special entry can specify that a default router is cho-
Internet is allowed to communicate. Each computer sen when there are no known paths.[47]
is identified by an address on the Internet. All the in-
terconnected physical networks appear to the user as • All networks are treated equal. A LAN, a WAN or
a single large network. This interconnection scheme a point-to-point link between two computers are all
is called an internetwork or internet.[40] considered as one network.[48]

• Conceptually, an Internet addresses consists of a • A Connectionless packet delivery (or packet-


netid and a hostid. The netid identifies a network and switched) system (or service) is offered by the
the hostid identifies a host. The term host is mislead- Internet, because it adapts well to different hard-
ing in that an individual computer can have multiple ware, including best-effort delivery mechanisms
network interfaces each having its own Internet ad- like the ethernet. Connectionless delivery means
dress. An Internet Address identifies a connection that the messages or streams are divided into
to the network, not an individual computer.[41] The pieces that are multiplexed separately on the high
netid is used by routers to decide where to send a speed intermachine connections allowing the
packet.[42] connections to be used concurrently. Each piece
carries information identifying the destination.
• Network technology independence is achieved us- The delivery of packets is said to be unreliable,
ing the low-level address resolution protocol (ARP) because packets may be lost, duplicated, delayed
which is used to map Internet addresses to physi- or delivered out of order without notice to the
cal addresses. The mapping is called address res- sender or receiver. Unreliability arises only when
olution. This way physical addresses are only used resources are exhausted or underlying networks
by the protocols of the network interface layer.[43] fail.[49] The unreliable connectionless delivery
The TCP/IP protocols can make use of almost any system is defined by the Internet Protocol (IP). The
underlying communication technology.[44] protocol also specifies the routing function, which
9.5. PROTOCOL DESIGN 77

chooses a path over which data will be sent.[50] ate. The bottom module directly interacts with the bot-
It is also possible to use TCP/IP protocols on tom module of system B, so the message is sent across.
connection oriented systems. Connection oriented On the receiving system B the reverse happens, so ulti-
systems build up virtual circuits (paths for exclusive mately (and assuming there were no transmission errors
use) between senders and receivers. Once built or protocol violations etc.) the message gets delivered in
up the IP datagrams are sent as if they were data its original form to the topmodule of system B.[54]
through the virtual circuits and forwarded (as data) On protocol errors, a receiving module discards the piece
to the IP protocol modules. This technique, called it has received and reports back the error condition to the
tunneling, can be used on X.25 networks and ATM original source of the piece on the same layer by handing
networks.[51] the error message down or in case of the bottom module
sending it across.[55]
• A reliable stream transport service using the unre- The division of the message or stream of data into pieces
liable connectionless packet delivery service is de- and the subsequent reassembly are handled in the layer
fined by the transmission control protocol (TCP). that introduced the division/reassembly. The reassembly
The services are layered as well and the application is done at the destination (i.e. not on any intermediate
programs residing in the layer above it, called the routers).[56]
application services, can make use of TCP.[52] Pro-
[57]
grams wishing to interact with the packet delivery TCP/IP software is organized in four layers.
system itself can do so using the user datagram pro-
tocol (UDP).[53] • Application layer. At the highest layer, the services
available across a TCP/IP internet are accessed by
application programs. The application chooses the
Software layering
style of transport to be used which can be a sequence
of individual messages or a continuous stream of
Having established the protocol layering and the proto-
bytes. The application program passes data to the
cols, the protocol designer can now resume with the soft-
transport layer for delivery.
ware design. The software has a layered organization and
its relationship with protocol layering is visualized in fig- • Transport layer. The transport layer provides com-
ure 5. munication from one application to another. The
transport layer may regulate flow of information and
provide reliable transport, ensuring that data arrives
without error and in sequence. To do so, the re-
A B ceiving side sends back acknowledgments and the
A B sending side retransmits lost pieces called packets.
The stream of data is divided into packets by the
module and each packet is passed along with a des-
tination address to the next layer for transmission.
The layer must accept data from many applications
concurrently and therefore also includes codes in the
packet header to identify the sending and receiving
application program.

• Internet layer. The Internet layer handles the com-


munication between machines. Packets to be sent
are accepted from the transport layer along with an
Figure 5: Protocol and software layering
identification of the receiving machine. The packets
are encapsulated in IP datagrams and the datagram
The software modules implementing the protocols are headers are filled. A routing algorithm is used to
represented by cubes. The information flow between the determine if the datagram should be delivered di-
modules is represented by arrows. The (top two horizon- rectly or sent to a router. The datagram is passed to
tal) red arrows are virtual. The blue lines mark the layer the appropriate network interface for transmission.
boundaries. Incoming datagrams are checked for validity and
To send a message on system A, the top module inter- the routing algorithm is used to decide whether the
acts with the module directly below it and hands over the datagram should be processed locally or forwarded.
message to be encapsulated. This module reacts by en- If the datagram is addressed to the local machine,
capsulating the message in its own data area and filling the datagram header is deleted and the appropriate
in its header data in accordance with the protocol it im- transport protocol for the packet is chosen. ICMP
plements and interacts with the module below it by hand- error and control messages are handled as well in
ing over this newly formed message whenever appropri- this layer.
78 CHAPTER 9. COMMUNICATIONS PROTOCOL

• Network interface layer. The network interface layer TCP/IP model, in other words some of the protocols be-
is responsible for accepting IP datagrams and trans- have in ways not described by the model.[62] To improve
mitting them over a specific network. A network in- on the model, an offending protocol could, perhaps be
terface may consist of a device driver or a complex split up into two protocols, at the cost of one or two extra
subsystem that uses its own data link protocol. layers, but there is a hidden caveat, because the model is
also used to provide a conceptual view on the suite for
Program translation has been divided into four subprob- the intended users. There is a trade-off to be made here
lems: compiler, assembler, link editor, and loader. As a between preciseness [63]
for the designer and clarity for the
result, the translation software is layered as well, allowing intended user.
the software layers to be designed independently. Noting
that the ways to conquer the complexity of program trans-
lation could readily be applied to protocols because of the 9.5.3 Formal specification
analogy between programming languages and protocols,
the designers of the TCP/IP protocol suite were keen on Formal ways for describing the syntax of the communica-
imposing the same layering on the software framework. tions are Abstract Syntax Notation One (an ISO standard)
This can be seen in the TCP/IP layering by considering or Augmented Backus-Naur form (an IETF standard).
the translation of a pascal program (message) that is com- Finite state machine models[64][65] and communicating
piled (function of the application layer) into an assem- finite-state machines[66] are used to formally describe the
bler program that is assembled (function of the transport possible interactions of the protocol.
layer) to object code (pieces) that is linked (function of the
Internet layer) together with library object code (routing
table) by the link editor, producing relocatable machine
code (datagram) that is passed to the loader which fills in 9.6 Protocol development
the memory locations (ethernet addresses) to produce ex-
ecutable code (network frame) to be loaded (function of For communication to take place, protocols have to be
the network interface layer) into physical memory (trans- agreed upon. Recall that in digital computing systems,
mission medium). To show just how closely the analogy the rules can be expressed by algorithms and datastruc-
fits, the terms between parentheses in the previous sen- tures, raising the opportunity for hardware independence.
tence denote the relevant analogs and the terms written Expressing the algorithms in a portable programming lan-
cursively denote data representations. Program transla- guage, makes the protocol software operating system in-
tion forms a linear sequence, because each layer’s out- dependent. The source code could be considered a pro-
put is passed as input to the next layer. Furthermore, the tocol specification. This form of specification, however
translation process involves multiple data representations. is not suitable for the parties involved.
We see the same thing happening in protocol software For one thing, this would enforce a source on all parties
where multiple protocols define the data representations and for another, proprietary software producers would
of the data passed between the software modules.[35] not accept this. By describing the software interfaces of
The network interface layer uses physical addresses and the modules on paper and agreeing on the interfaces, im-
all the other layers only use IP addresses. The bound- plementers are free to do it their way. This is referred to
ary between network interface layer and Internet layer is as source independence. By specifying the algorithms on
called the high-level protocol address boundary.[58] The paper and detailing hardware dependencies in an unam-
modules below the application layer are generally con- biguous way, a paper draft is created, that when adhered
sidered part of the operating system. Passing data be- to and published, ensures interoperability between soft-
tween these modules is much less expensive than passing ware and hardware.
data between an application program and the transport Such a paper draft can be developed into a protocol stan-
layer. The boundary between application layer and trans- dard by getting the approval of a standards organization.
port layer is called the operating system boundary.[59] To get the approval the paper draft needs to enter and
successfully complete the standardization process. This
Strict layering activity is referred to as protocol development. The mem-
bers of the standards organization agree to adhere to the
Strictly adhering to a layered model, a practice known standard on a voluntary basis. Often the members are in
as strict layering, is not always the best approach to control of large market-shares relevant to the protocol and
networking.[60] Strict layering, can have a serious impact in many cases, standards are enforced by law or the gov-
on the performance of the implementation, so there is at ernment, because they are thought to serve an important
least a trade-off between simplicity and performance.[61] public interest, so getting approval can be very important
Another, perhaps more important point can be shown by for the protocol.
considering the fact that some of the protocols in the It should be noted though that in some cases protocol stan-
Internet Protocol Suite cannot be expressed using the dards are not sufficient to gain widespread acceptance i.e.
9.6. PROTOCOL DEVELOPMENT 79

sometimes the source code needs to be disclosed and en- tions also do research and development for standards of
forced by law or the government in the interest of the the future. In practice, the standards organizations men-
public. tioned, cooperate closely with each other.[67]

9.6.1 The need for protocol standards 9.6.3 The standardization process

The need for protocol standards can be shown by look- The standardization process starts off with ISO commis-
ing at what happened to the bi-sync protocol (BSC) in- sioning a sub-committee workgroup. The workgroup is-
vented by IBM. BSC is an early link-level protocol used sues working drafts and discussion documents to inter-
to connect two separate nodes. It was originally not in- ested parties (including other standards bodies) in order
tended to be used in a multinode network, but doing so re- to provoke discussion and comments. This will generate
vealed several deficiencies of the protocol. In the absence a lot of questions, much discussion and usually some dis-
of standardization, manufacturers and organizations felt agreement on what the standard should provide and if it
free to 'enhance' the protocol, creating incompatible ver- can satisfy all needs (usually not). All conflicting views
sions on their networks. In some cases, this was delib- should be taken into account, often by way of compro-
erately done to discourage users from using equipment mise, to progress to a draft proposal of the working group.
from other manufacturers. There are more than 50 vari- The draft proposal is discussed by the member coun-
ants of the original bi-sync protocol. One can assume, tries’ standard bodies and other organizations within each
that a standard would have prevented at least some of this country. Comments and suggestions are collated and na-
from happening.[6] tional views will be formulated, before the members of
In some cases, protocols gain market dominance with- ISO vote on the proposal. If rejected, the draft proposal
out going through a standardization process. Such pro- has to consider the objections and counter-proposals to
tocols are referred to as de facto standards. De facto create a new draft proposal for another vote. After a lot
standards are common in emerging markets, niche mar- of feedback, modification, and compromise the proposal
kets, or markets that are monopolized (or oligopolized). reaches the status of a draft international standard, and
They can hold a market in a very negative grip, especially ultimately an international standard.
when used to scare away competition. From a historical The process normally takes several years to complete.
perspective, standardization should be seen as a measure The original paper draft created by the designer will dif-
to counteract the ill-effects of de facto standards. Posi- fer substantially from the standard, and will contain some
tive exceptions exist; a 'de facto standard' operating sys- of the following 'features’:
tem like GNU/Linux does not have this negative grip on
its market, because the sources are published and main-
• Various optional modes of operation, for example
tained in an open way, thus inviting competition. Stan-
to allow for setup of different packet sizes at startup
dardization is therefore not the only solution for open sys-
time, because the parties could not reach consensus
tems interconnection.
on the optimum packet size.
• Parameters that are left undefined or allowed to take
9.6.2 Standards organizations on values of a defined set at the discretion of the
implementor. This often reflects conflicting views
Some of the standards organizations of relevance for of some of the members.
communications protocols are the International Orga-
nization for Standardization (ISO), the International • Parameters reserved for future use, reflecting that
Telecommunication Union (ITU), the Institute of Elec- the members agreed the facility should be provided,
trical and Electronics Engineers (IEEE), and the Internet but could not reach agreement on how this should be
Engineering Task Force (IETF). The IETF maintains the done in the available time.
protocols in use on the Internet. The IEEE controls many
• Various inconsistencies and ambiguities will in-
software and hardware protocols in the electronics in-
evitably be found when implementing the standard.
dustry for commercial and consumer devices. The ITU
is an umbrella organization of telecommunication engi-
neers designing the public switched telephone network International standards are reissued periodically to han-
(PSTN), as well as many radio communications systems. dle the [68] deficiencies and reflect changing views on the
For marine electronics the NMEA standards are used. subject.
The World Wide Web Consortium (W3C) produces pro-
tocols and standards for Web technologies.
9.6.4 Future of standardization (OSI)
International standards organizations are supposed to be
more impartial than local organizations with a national or A lesson learned from ARPANET (the predecessor of
commercial self-interest to consider. Standards organiza- the Internet) is that standardization of protocols is not
80 CHAPTER 9. COMMUNICATIONS PROTOCOL

enough, because protocols also need a framework to op- • The session layer may provide the following ser-
erate. It is therefore important to develop a general- vices to the presentation layer: establishment and re-
purpose, future-proof framework suitable for structured lease of session connections, normal and expedited
protocols (such as layered protocols) and their standard- data exchange, a quarantine service which allows the
ization. This would prevent protocol standards with over- sending presentation entity to instruct the receiving
lapping functionality and would allow clear definition of session entity not to release data to its presentation
the responsibilities of a protocol at the different levels entity without permission, interaction management
(layers).[69] This gave rise to the OSI Open Systems Inter- so presentation entities can control whose turn it is to
connection reference model (RM/OSI), which is used as a perform certain control functions, resynchronization
framework for the design of standard protocols and ser- of a session connection, reporting of unrecoverable
vices conforming to the various layer specifications.[70] exceptions to the presentation entity.[74]
In the OSI model, communicating systems are assumed
• The transport layer provides reliable and transpar-
to be connected by an underlying physical medium pro-
ent data transfer in a cost-effective way as required
viding a basic (and unspecified) transmission mechanism.
by the selected quality of service. It may support the
The layers above it are numbered (from one to seven); the
multiplexing of several transport connections on to
nth layer is referred to as (n)-layer. Each layer provides
one network connection or split one transport con-
service to the layer above it (or at the top to the applica-
nection into several network connections.[75]
tion process) using the services of the layer immediately
below it. The layers communicate with each other by
• The network layer does the setup, maintenance and
means of an interface, called a service access point. Cor-
release of network paths between transport peer en-
responding layers at each system are called peer entities.
tities. When relays are needed, routing and relay
To communicate, two peer entities at a given layer use an
functions are provided by this layer. The quality
(n)-protocol, which is implemented by using services of
of service is negotiated between network and trans-
the (n-1)-layer. When systems are not directly connected,
port entities at the time the connection is set up.
intermediate peer entities (called relays) are used. An ad-
This layer is also responsible for network congestion
dress uniquely identifies a service access point. The ad-
control.[76]
dress naming domains need not be restricted to one layer,
so it is possible to use just one naming domain for all • The data link layer does the setup, maintenance and
layers.[71] For each layer there are two types of standards: release of data link connections. Errors occurring in
protocol standards defining how peer entities at a given the physical layer are detected and may be corrected.
layer communicate, and service standards defining how a Errors are reported to the network layer. The ex-
given layer communicates with the layer above it. change of data link units (including flow control) is
In the original version of RM/OSI, the layers and their defined by this layer.[77]
functionality are (from highest to lowest layer):
• The physical layer describes details like the electri-
cal characteristics of the physical connection, the
• The application layer may provide the following transmission techniques used, and the setup, main-
services to the application processes: identification tenance and clearing of physical connections.[78]
of the intended communication partners, establish-
ment of the necessary authority to communicate,
determination of availability and authentication of In contrast to the TCP/IP layering scheme, which as-
the partners, agreement on privacy mechanisms for sumes a connectionless network, RM/OSI assumed a
the communication, agreement on responsibility for connection-oriented network. Connection-oriented net-
error recovery and procedures for ensuring data in- works are more suitable for wide area networks and con-
tegrity, synchronization between cooperating appli- nectionless networks are more suitable for local area
cation processes, identification of any constraints on networks. Using connections to communicate implies
syntax (e.g. character sets and data structures), de- some form of session and (virtual) circuits, hence the
termination of cost and acceptable quality of ser- (in the TCP/IP model lacking) session layer. The con-
vice, selection of the dialogue discipline, including stituent members of ISO were mostly concerned with
required logon and logoff procedures.[72] wide area networks, so development of RM/OSI concen-
trated on connection oriented networks and connection-
• The presentation layer may provide the following less networks were only mentioned in an addendum to
services to the application layer: a request for the RM/OSI.[79] At the time, the IETF had to cope with this
establishment of a session, data transfer, negotiation and the fact that the Internet needed protocols which sim-
of the syntax to be used between the application lay- ply were not there. As a result, the IETF developed its
ers, any necessary syntax transformations, format- own standardization process based on “rough consensus
ting and special purpose transformations (e.g. data and running code”.[80]
compression and data encryption).[73] The standardization process is described by RFC2026.
9.9. NOTES 81

Nowadays, the IETF has become a standards organiza- • File Transfer Protocol (FTP)
tion for the protocols in use on the Internet. RM/OSI has
extended its model to include connectionless services and • Internet Message Access Protocol (IMAP)
because of this, both TCP and IP could be developed into
international standards. Other instances of high level interaction protocols are:

• General Inter-ORB Protocol (GIOP)


9.7 Taxonomies
• Java remote method invocation (RMI)
Classification schemes for protocols usually focus on do- • Distributed Component Object Model (DCOM)
main of use and function. As an example of domain
of use, connection-oriented protocols and connectionless • Dynamic Data Exchange (DDE)
protocols are used on connection-oriented networks and
• SOAP
connectionless networks respectively. For an example of
function consider a tunneling protocol, which is used to
encapsulate packets in a high-level protocol, so the pack-
ets can be passed across a transport system using the high- 9.9 Notes
level protocol.
[1] Licesio J. Rodríguez-Aragón: Tema 4: Internet y Telein-
A layering scheme combines both function and domain
formática. retrieved 2013-04-24. (Spanish)
of use. The dominant layering schemes are the ones pro-
posed by the IETF and by ISO. Despite the fact that the [2] Protocol, Encyclopedia Britannica, retrieved 2012-09-24
underlying assumptions of the layering schemes are dif-
ferent enough to warrant distinguishing the two, it is a [3] Comer 2000, Sect. 11.2 - The Need For Multiple Pro-
common practice to compare the two by relating com- tocols, p. 177, “They (protocols) are to communication
mon protocols to the layers of the two schemes.[81] For what programming languages are to computation”
an example of this practice see: List of network proto- [4] Ben-Ari 1982, chapter 2 - The concurrent programming
cols. abstraction, p. 18-19, states the same.
The layering scheme from the IETF is called Internet lay-
[5] Ben-Ari 1982, Section 2.7 - Summary, p. 27, summarizes
ering or TCP/IP layering. The functionality of the layers the concurrent programming abstraction.
has been described in the section on software layering and
an overview of protocols using this scheme is given in the [6] Marsden 1986, Section 6.1 - Why are standards neces-
article on Internet protocols. sary?, p. 64-65, uses BSC as an example to show the need
for both standard protocols and a standard framework.
The layering scheme from ISO is called the OSI model
or ISO layering. The functionality of the layers has been [7] Comer 2000, Sect. 11.2 - The Need For Multiple Proto-
described in the section on the future of standardization cols, p. 177, explains this by drawing analogies between
and an overview of protocols using this scheme is given computer communication and programming languages.
in the article on OSI protocols.
[8] Sect. 11.10 - The Disadvantage Of Layering, p. 192,
states: layering forms the basis for protocol design.

9.8 Examples of protocols [9] Comer 2000, Sect. 11.2 - The Need For Multiple Proto-
cols, p. 177, states the same.

Main article: Lists of network protocols [10] Comer 2000, Sect. 11.3 - The Conceptual Layers Of Pro-
tocol Software, p. 178, “Each layer takes responsibility for
handling one part of the problem.”
The Internet Protocol is used in concert with other proto-
cols within the Internet Protocol Suite. Prominent mem- [11] Comer 2000, Sect. 11.11 - The Basic Idea Behind Multi-
bers of which include: plexing And Demultiplexing, p. 192, states the same.

[12] Marsden 1986, Chapter 3 - Fundamental protocol con-


• Transmission Control Protocol (TCP) cepts and problem areas, p. 26-42, explains much of the
following.
• User Datagram Protocol (UDP)
[13] Comer 2000, Sect. 7.7.4 - Datagram Size, Network
• Internet Control Message Protocol (ICMP) MTU, and Fragmentation, p. 104, Explains fragmenta-
tion and the effect on the header of the fragments.
• Hypertext Transfer Protocol (HTTP)
[14] Comer 2000, Chapter 4 - Classful Internet Addresses, p.
• Post Office Protocol (POP) 64-67;71.
82 CHAPTER 9. COMMUNICATIONS PROTOCOL

[15] Marsden 1986, Section 14.3 - Layering concepts and gen- [34] Comer 2000, Sect. 11.2 - The Need For Multiple Proto-
eral definitions, p. 187, explains address mapping. cols, p. 177, introduces the decomposition in layers.

[16] Marsden 1986, Section 3.2 - Detection and transmission [35] Comer 2000, Sect. 11.2 - The need for multiple proto-
errors, p. 27, explains the advantages of backward error cols, p. 178, explains similarities protocol software and
correction. compiler, assembler, linker, loader.

[17] Marsden 1986, Section 3.3 - Acknowledgement, p. 28- [36] Comer 2000, Glossary of Internetworking terms, p.686:
33, explains the advantages of positive only acknowledge- term encapsulation.
ment and mentions datagram protocols as exceptions.
[37] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Ref-
[18] Marsden 1986, Section 3.4 - Loss of information - time- erence Model, p. 184, Describes the transformations of
outs and retries, p. 33-34. messages or streams that can be observed in the protocol
layers.
[19] Marsden 1986, Section 3.5 - Direction of information
flow, p. 34-35, explains master/slave and the negotiations [38] Comer 2000, Sect. 2.4.10 - Ethernet Frame Format, p.
to gain control. 30, Ethernet frames are used as an example for adminis-
trative data for the protocol itself.
[20] Marsden 1986, Section 3.6 - Sequence control, p. 35-36,
explains how packets get lost and how sequencing solves [39] Comer 2000, Sect. 11.4 - Functionality Of The Layers, p.
this. 181, states the same about the software organization.

[21] Marsden 1986, Section 3.7 - Flow control, p. 36-38. [40] Comer 2000, Sect. 3.3 - Network-Level Interconnection,
p. 55, explains universal interconnection and internet-
[22] Comer 2000, Sect. 1.3 - Internet Services, p. 3, “Proto- working.
cols are to communication what algorithms are to compu-
tation” [41] Comer 2000, Sect. 4.4 - Addresses Specify Network Con-
nections, p. 86, explains this.
[23] Tennent 1981, Section 2.3.1 - Definitions, p.15, defines
scope and binding. [42] Comer 2000, Sect. 4.3 - The Original Classful Addressing
Scheme, p. 64, explains the address scheme, netid and
[24] Tennent 1981, Section 2.3.2 Environments and stores,
routing.
p.16, the semantics of blocks and definitions are de-
scribed using environments and stores. [43] Comer 2000, Sect. 5.13 - Summary, p. 86, explains ARP.
[25] Hoare (1985), Ch. 4 - Communication, p. 133, In the [44] Comer 2000, Sect. 2.11 - Other Technologies Over
introduction: a communication is an event described by a Which TCP/IP Has Been Used, p. 46, states the same.
pair c.v where c is the name of the communication channel
and v is the value of the message. [45] Comer 2000, Sect. 8.3.2 - Indirect Delivery, p. 118, states
the same.
[26] Tanenbaum, Andrew S. (2003). Computer networks.
Prentice Hall Professional. p. 235. ISBN 978-0-13- [46] Comer 2000, Sect. 8.5 - Next-Hop Routing, p. 120, gives
066102-9. Retrieved 22 June 2011. details on the routing table.

[27] Comer 2000, Foreword To The First Edition By The Late [47] Comer 2000, Sect. 8.6 - Default Routes, p. 121, explains
Jon Postel, xxv, “The principles of architecture, layering, default routing and its use.
multiplexing, encapsulation, addressing and address map-
ping, routing, and naming are quite similar in any protocol [48] Comer 2000, Sect. 3.8 - All Networks Are Equal, p. 59,
suite, though of course, different in detail.”. states the same.

[28] Ben-Ari 1982, in his preface, p. xiii. [49] Comer 2000, Sect. 7.5 - Connectionless Delivery System,
p. 97, explains the delivery system.
[29] Ben-Ari 1982, in his preface, p. xiv.
[50] Comer 2000, Sect. 7.6 - Purposes Of The Internet Proto-
[30] Hoare 1985, Chapter 4 - Communication, p. 133, deals col, p. 97, states the same.
with communication.
[51] Comer 2000, Sect. 2.11.1 - X25NET And Tunnels, p.
[31] S. Srinivasan, NPTEL courses:::: Electronics & Com- 46-47, explains tunneling X.25 and mentions ATM.
munication Engineering :: Digital Circuits and Sys-
tems, available online: http://nptel.iitm.ac.in/video.php? [52] Comer 2000, Sect. 13.1 - Introduction, p. 209, introduces
courseId=1005&p=3 TCP.

[32] Comer 2000, Sect. 11.2 - The Need For Multiple Pro- [53] Comer 2000, Sect. 12.10 - Summary, p. 206, explains
tocols, p. 177, states more or less the same, using other UDP.
analogies.
[54] Comer 2000, Sect. 11.3 - The Conceptual Layers Of Pro-
[33] Comer 2000, Sect. 11.7 - The Protocol Layering Princi- tocol Software, p. 179, the first two paragraphs describe
ple, p. 187, explains layered protocols. the sending of a message through successive layers.
9.10. REFERENCES 83

[55] Comer 2000, Sect. 9.3 - Error Reporting vs. Error Cor- [76] Marsden 1986, Section 14.8 - The network layer, p. 192,
rection, p. 131, describes the ICMP protocol that is used explains this.
to handle datagram errors.
[77] Marsden 1986, Section 14.9 - The data link layer, p. 194,
[56] Comer 2000, Sect. 7.7.5 - Reassembly Of Fragments, p. explains this.
104, describes reassembly of datagrams.
[78] Marsden 1986, Section 14.10 - The physical layer, p. 195,
[57] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Refer- explains this.
ence Model, p. 184, explains functionality of the layers.
[79] Marsden 1986, Section 14.11 - Connectionless mode and
[58] Comer 2000, Sect. 11.9.1 - High-Level Protocol Bound- RM/OSI, p. 195, mentions this.
ary, p. 191, describes the boundary.
[80] Comer 2000, Section 1.9 - Internet Protocols And Stan-
[59] Comer 2000, Sect. 11.9.1 - Operating System Boundary, dardization, p. 12, explains why the IETF did not use ex-
p. 192, describes the operating system boundary. isting protocols.
[60] IETF 1989, Sect 1.3.1 - Organization, p. 15, 2nd para-
[81] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Refer-
graph: many design choices involve creative “breaking”
ence Model, p. 183, states the same.
of strict layering.

[61] Comer 2000, Sect. 11.10 - The Disadvantage Of Layer-


ing, p. 192, explains why “strict layering can be extremely
inefficient” giving examples of optimizations.
9.10 References
[62] IETF 1989, Sect 1.3.1 - Organization, p. 15, 2nd para- • Radia Perlman: Interconnections: Bridges, Routers,
graph, explaining why “strict layering is an imperfect Switches, and Internetworking Protocols. 2nd Edi-
model” tion. Addison-Wesley 1999, ISBN 0-201-63448-
[63] IETF 1989, Sect 1.3.1 - Organization, p. 15, states: This
1. In particular Ch. 18 on “network design folk-
layerist organization was chosen for simplicity and clarity. lore”, which is also available online at http://www.
informit.com/articles/article.aspx?p=20482
[64] Bochmann, G. (1978). “Finite state description of com-
munication protocols”. Computer Networks (1976). 2 (4– • Gerard J. Holzmann: Design and Validation of Com-
5): 361–201. doi:10.1016/0376-5075(78)90015-6. puter Protocols. Prentice Hall, 1991, ISBN 0-13-
539925-4. Also available online at http://spinroot.
[65] Comer 2000, Glossary of Internetworking Terms and Ab- com/spin/Doc/Book91.html
breviations, p. 704, term protocol.

[66] Brand, Daniel; Zafiropulo, Pitro (1983). “On Communi-


• Douglas E. Comer (2000). Internetworking with
cating Finite-State Machines”. Journal of the ACM. 30 TCP/IP - Principles, Protocols and Architecture (4th
(2): 323. doi:10.1145/322374.322380. ed.). Prentice Hall. ISBN 0-13-018380-6. In par-
ticular Ch.11 Protocol layering. Also has a RFC
[67] Marsden 1986, Section 6.3 - Advantages of standardisa- guide and a Glossary of Internetworking Terms and
tion, p. 66-67, states the same. Abbreviations.
[68] Marsden 1986, Section 6.4 - Some problems with stan-
• Internet Engineering Task Force abbr. IETF (1989):
dardisation, p. 67, follows HDLC to illustrate the process.
RFC1122, Requirements for Internet Hosts -- Com-
[69] Marsden 1986, Section 6.1 - Why are standards neces- munication Layers, R. Braden (ed.), Available on-
sary?, p. 65, explains lessons learned from ARPANET. line at http://tools.ietf.org/html/rfc1122. Describes
TCP/IP to the implementors of protocolsoftware. In
[70] Marsden 1986, Section 14.1 - Introduction, p. 181, intro- particular the introduction gives an overview of the
duces OSI. design goals of the suite.
[71] Marsden 1986, Section 14.3 - Layering concepts and gen-
eral definitions, p. 183-185, explains terminology.
• M. Ben-Ari (1982): Principles of concurrent pro-
gramming 10th Print. Prentice Hall International,
[72] Marsden 1986, Section 14.4 - The application layer, p. ISBN 0-13-701078-8.
188, explains this.
• C.A.R. Hoare (1985): Communicating sequential
[73] Marsden 1986, Section 14.5 - The presentation layer, p. processes 10th Print. Prentice Hall International,
189, explains this. ISBN 0-13-153271-5. Available online via http:
[74] Marsden 1986, Section 14.6 - The session layer, p. 190, //www.usingcsp.com
explains this.
• R.D. Tennent (1981): Principles of programming
[75] Marsden 1986, Section 14.7 - The transport layer, p. 191, languages 10th Print. Prentice Hall International,
explains this. ISBN 0-13-709873-1.
84 CHAPTER 9. COMMUNICATIONS PROTOCOL

• Brian W Marsden (1986): Communication network


protocols 2nd Edition. Chartwell Bratt, ISBN 0-
86238-106-1.

• Andrew S. Tanenbaum (1984): Structured computer


organization 10th Print. Prentice Hall International,
ISBN 0-13-854605-3.

9.11 See also


• Application programming interface

9.12 External links


• Javvin’s Protocol Dictionary

• Overview of protocols in telecontrol field with OSI


Reference Model

• List of Data Communication Protocols


• PDF-Chart showing the Protocols and the OSI ref-
erence layer
• Blog to discuss ideas about modeling and testing of
communication protocols
Chapter 10

Communications system

an optical fiber. The light forms a carrier signal that is


modulated to carry information.
A radio communication system is composed of several
communications subsystems that give exterior communi-
cations capabilities.[1][2][3] A radio communication sys-
Communication system tem comprises a transmitting conductor[4] in which elec-
trical oscillations[5][6][7] or currents are produced and
which is arranged to cause such currents or oscillations
to be propagated through the free space medium from
one point to another remote therefrom and a receiv-
ing conductor[4] at such distant point adapted to be ex-
cited by the oscillations or currents propagated from the
transmitter.[8][9][10][11]
Power line communication systems operate by impress-
An electronic communications system using electronic signals ing a modulated carrier signal on power wires. Differ-
ent types of powerline communications use different fre-
In telecommunication, a communications system is quency bands, depending on the signal transmission char-
a collection of individual communications networks, acteristics of the power wiring used. Since the power
transmission systems, relay stations, tributary stations, wiring system was originally intended for transmission
and data terminal equipment (DTE) usually capable of of AC power, the power wire circuits have only a lim-
interconnection and interoperation to form an integrated ited ability to carry higher frequencies. The propagation
whole. The components of a communications system problem is a limiting factor for each type of power line
serve a common purpose, are technically compatible, communications.
use common procedures, respond to controls, and oper-
ate in union. Telecommunications is a method of com-
munication (e.g., for sports broadcasting, mass media, 10.1.2 By Technology
journalism, etc.). A communications subsystem is a
functional unit or operational assembly that is smaller A duplex communication system is a system composed of
than the larger assembly under consideration... two connected parties or devices which can communicate
with one another in both directions. The term duplex is
used when describing communication between two par-
ties or devices. Duplex systems are employed in nearly all
10.1 Types communications networks, either to allow for a commu-
nication “two-way street” between two connected parties
10.1.1 By media or to provide a “reverse path” for the monitoring and re-
mote adjustment of equipment in the field. An Antenna
An optical communication system is any form of is basically a small length of a qwert conductor that is
telecommunication that uses light as the transmission used to radiate or receive electromagnetic waves. It acts
medium. Equipment consists of a transmitter, which en- as a conversion device.At the transmitting end it converts
codes a message into an optical signal, a channel, which high frequency current into electromagnetic waves.At the
carries the signal to its destination, and a receiver, which receiving end it transforms electromagnetic waves into
reproduces the message from the received optical sig- electrical signals that is fed into the input of the receiver.
nal. Fiber-optic communication systems transmit infor- several types of antenna are used in communication.
mation from one place to another by sending light through Examples of communications subsystems include the

85
86 CHAPTER 10. COMMUNICATIONS SYSTEM

Defense Communications System (DCS). [7] John Stone Stone, U.S. Patent 577,214

[8] Nikola Tesla, U.S. Patent 649,621


10.1.3 By Application area [9] Nikola Tesla, U.S. Patent 787,412

A tactical communications system is a communications [10] John Stone Stone, U.S. Patent 714,756
system that (a) is used within, or in direct support of
[11] John Stone Stone, U.S. Patent 716,955
tactical forces (b) is designed to meet the requirements
of changing tactical situations and varying environmental
conditions, (c) provides securable communications, such
as voice, data, and video, among mobile users to facilitate 10.4 References
command and control within, and in support of, tactical
forces, and (d) usually requires extremely short installa- • Hansell, Clarence W., U.S. Patent 2,389,432, "Com-
tion times, usually on the order of hours, in order to meet munication system by pulses through the Earth".
the requirements of frequent relocation.
• This article incorporates public domain material
An Emergency communication system is any system (typ- from the General Services Administration document
ically computer based) that is organized for the pri- “Federal Standard 1037C” (in support of MIL-STD-
mary purpose of supporting the two way communica- 188).
tion of emergency messages between both individuals and
groups of individuals. These systems are commonly de-
signed to integrate the cross-communication of messages
between are variety of communication technologies.
An Automatic call distributor (ACD) is a communication
system that automatically queues, assigns and connects
callers to handlers. This is used often in customer ser-
vice (such as for product or service complaints), ordering
by telephone (such as in a ticket office), or coordination
services (such as in air traffic control).
A Voice Communication Control System (VCCS) is es-
sentially an ACD with characteristics that make it more
adapted to use in critical situations (no waiting for dial-
tone, or lengthy recorded announcements, radio and tele-
phone lines equally easily connected to, individual lines
immediately accessible etc..)

10.2 See also


Automatic call distributor

10.3 Notes
[1] Schwartz, M., Bennett, W. R., & Stein, S. (1996). Com-
munication systems and techniques. New York: IEEE
Press.

[2] Rappaport, T. S. (1996). Wireless communications: prin-


ciples and practice. Upper Saddle River, N.J.: Prentice
Hall PTR.

[3] Radio Communications System (RCS) www.fas.org/man/


dod-101/sys/ship/weaps/radio.htm

[4] John Stone Stone, U.S. Patent 717,512

[5] John Stone Stone, U.S. Patent 726,476

[6] John Stone Stone, U.S. Patent 726,368


Chapter 11

Compiler

This article is about the computing term. For the anime, code generation, and code optimization. Program faults
see Compiler (anime). caused by incorrect compiler behavior can be very diffi-
“Compile” and “compiling” redirect here. For the cult to track down and work around; therefore, compiler
software company, see Compile (publisher). For other implementors invest significant effort to ensure compiler
uses, see Compilation. correctness.

A compiler is a computer program (or a set of programs)


that transforms source code written in a programming 11.1 History
language (the source language) into another computer
language (the target language), with the latter often hav- Main article: History of compiler construction
ing a binary form known as object code.[1] The most com- Software for early computers was primarily written in
mon reason for converting source code is to create an
executable program.
void public class OddEven {
usage (char *name) private int input;
{ public OddEven() {
printf ("Usage:\n"); input = Integer.parseInt()
printf ("%s -a [-c file", }
name}; public void calculate() {

Language 1 source code Language 2 source code


#ifdef LOFI if (input % 2 == 0)
printf ("[-g] [-s] "); System.out.println("Even");
#endif else

The name “compiler” is primarily used for programs that


printf ("[-g what] [-r] System.out.printin("Odd");
[-u file [type]]"); }
#ifdef LOFI public void main(String[] args) {
printf (" [-z size] "); }
#endif }

translate source code from a high-level programming lan-


guage to a lower level language (e.g., assembly language Compiler front-end for language 2
Compiler front-end for language 1
or machine code). If the compiled program can run on Lexical Analyzer (Scanner) Lexical Analyzer (Scanner)
a computer whose CPU or operating system is different Syntax/Semantic Syntax/Semantic
from the one on which the compiler runs, the compiler Analyzer (Parser) Analyzer (Parser)

is known as a cross-compiler. More generally, compilers Intermediate-code Intermediate-code


Generator Generator
are a specific type of translator.
Non-optimized intermediate code Non-optimized intermediate code
While all programs that take a set of programming spec-
ifications and translate them, i.e. create a means to exe-
Intermediate code optimizer
cute those specifications, are technically “compilers”, the Optimized intermediate code
term generally means a program that produces a separate
executable from the compiler (that may require a run time
Target-1 Target-2
library or subsystem to operate), a compiler that merely Code Generator Code Generator
executes the original specifications is usually referred to Target-1 machine code Target-2 machine code
as an "interpreter", although because of differing meth-
ods of analyzing what represents compilation and what
represents interpretation, there is some overlap between
the two terms.
A diagram of the operation of a typical multi-language, multi-
A program that translates from a low level language to target compiler
a higher level one is a decompiler. A program that
translates between high-level languages is usually called assembly language. Although the first high level language
a source-to-source compiler or transpiler. A language is nearly as old as the first computer, the limited memory
rewriter is usually a program that translates the form of capacity of early computers led to substantial technical
expressions without a change of language. The term challenges when the first compilers were designed.
compiler-compiler is sometimes used to refer to a parser
generator, a tool often used to help create the lexer and The first high-level programming language (Plankalkül)
parser. A compiler is likely to perform many or all of was proposed by Konrad Zuse in 1943. The first compiler
the following operations: lexical analysis, preprocessing, was written by Grace Hopper, in 1952, for the A-0 pro-
parsing, semantic analysis (syntax-directed translation), gramming language; the A-0 functioned more as a loader
or linker than the modern notion of a compiler. The

87
88 CHAPTER 11. COMPILER

first autocode and its compiler were developed by Alick spite of its simplicity, the PL/0 compiler introduced sev-
Glennie in 1952 for the Mark 1 computer at the Univer- eral influential concepts to the field:
sity of Manchester and is considered by some to be the
first compiled programming language.[2] The FORTRAN 1. Program development by stepwise refinement (also
team led by John Backus at IBM is generally credited as the title of a 1971 paper by Wirth)[8]
having introduced the first complete compiler in 1957.
COBOL was an early language to be compiled on multi- 2. The use of a recursive descent parser
ple architectures, in 1960.[3]
3. The use of Extended Backus–Naur Form (EBNF) to
In many application domains the idea of using a higher specify the syntax of a language
level language quickly caught on. Because of the expand-
ing functionality supported by newer programming lan- 4. A code generator producing portable P-code
guages and the increasing complexity of computer archi-
5. The use of tombstone diagrams in the formal de-
tectures, compilers have become more complex.
scription of the bootstrapping problem.
Early compilers were written in assembly language. The
first self-hosting compiler – capable of compiling its own
source code in a high-level language – was created in 11.2 Compiler output
1962 for Lisp by Tim Hart and Mike Levin at MIT.[4]
Since the 1970s it has become common practice to im-
One classification of compilers is by the platform on
plement a compiler in the language it compiles, although
which their generated code executes. This is known as
both Pascal and C have been popular choices for imple-
the target platform.
mentation language. Building a self-hosting compiler is a
bootstrapping problem—the first such compiler for a lan- A native or hosted compiler is one which output is in-
guage must be compiled either by hand or by a compiler tended to directly run on the same type of computer and
written in a different language, or (as in Hart and Levin’s operating system that the compiler itself runs on. The
Lisp compiler) compiled by running the compiler in an output of a cross compiler is designed to run on a different
interpreter. platform. Cross compilers are often used when develop-
ing software for embedded systems that are not intended
to support a software development environment.
11.1.1 Compilation The output of a compiler that produces code for a virtual
machine (VM) may or may not be executed on the same
Compilers enabled the development of programs that platform as the compiler that produced it. For this reason
are machine-independent. Before the development of such compilers are not usually classified as native or cross
FORTRAN, the first high-level language, in the 1950s,[5] compilers.
machine-dependent assembly language was widely used.
While assembly language produces more abstraction than The lower level language that is the target of a compiler
machine code on the same architecture, just as with ma- may itself be a high-level programming language. C, of-
chine code, it has to be modified or rewritten if the pro- ten viewed as some sort of portable assembler, can also be
gram is to be executed on different computer hardware the target language of a compiler. E.g.: Cfront, the orig-
architecture. inal compiler for C++ used C as target language. The
C created by such a compiler is usually not intended to
With the advent of high-level programming languages be read and maintained by humans. So indent style and
that followed FORTRAN, such as COBOL, C, and pretty C intermediate code are irrelevant. Some features
BASIC, programmers could write machine-independent of C turn it into a good target language. E.g.: C code with
source programs. A compiler translates the high-level #line directives can be generated to support debugging of
source programs into target programs in machine lan- the original source.
guages for the specific hardware. Once the target pro-
gram is generated, the user can execute the program.
11.2.1 Compiled versus interpreted lan-
guages
11.1.2 Compilers in education
Higher-level programming languages usually appear with
Compiler construction and compiler optimization are a type of translation in mind: either designed as compiled
taught at universities and schools as part of a computer language or interpreted language. However, in practice
science curriculum.[6] Such courses are usually supple- there is rarely anything about a language that requires it
mented with the implementation of a compiler for an to be exclusively compiled or exclusively interpreted, al-
educational programming language. A well-documented though it is possible to design languages that rely on re-
example is Niklaus Wirth's PL/0 compiler, which Wirth interpretation at run time. The categorization usually re-
used to teach compiler construction in the 1970s.[7] In flects the most popular or widespread implementations of
11.3. COMPILER CONSTRUCTION 89

a language — for instance, BASIC is sometimes called an bytecode is then compiled using a JIT com-
interpreted language, and C a compiled one, despite the piler to native machine code just when the ex-
existence of BASIC compilers and C interpreters. ecution of the program is required.[9]
Interpretation does not replace compilation completely.
It only hides it from the user and makes it gradual. Even • hardware compilers (also known as syntheses tools)
though an interpreter can itself be interpreted, a directly are compilers whose output is a description of the
executed program is needed somewhere at the bottom of hardware configuration instead of a sequence of in-
the stack (see machine language). Modern trends toward structions.
just-in-time compilation and bytecode interpretation at
times blur the traditional categorizations of compilers and • The output of these compilers target computer
interpreters. hardware at a very low level, for example
a field-programmable gate array (FPGA) or
Some language specifications spell out that implementa- structured application-specific integrated cir-
tions must include a compilation facility; for example, cuit (ASIC).[10] Such compilers are said to be
Common Lisp. However, there is nothing inherent in the hardware compilers, because the source code
definition of Common Lisp that stops it from being inter- they compile effectively controls the final con-
preted. Other languages have features that are very easy figuration of the hardware and how it operates.
to implement in an interpreter, but make writing a com- The output of the compilation is only an inter-
piler much harder; for example, APL, SNOBOL4, and connection of transistors or lookup tables.
many scripting languages allow programs to construct ar-
bitrary source code at runtime with regular string opera- • An example of hardware compiler is
tions, and then execute that code by passing it to a spe- XST,[11][12] the Xilinx Synthesis Tool used
cial evaluation function. To implement these features in for configuring FPGAs. Similar tools are
a compiled language, programs must usually be shipped available from Altera,[13] Synplicity, Synopsys
with a runtime library that includes a version of the com- and other hardware vendors.
piler itself.

11.2.2 Special type of compilers 11.3 Compiler construction


While the typical compiler outputs machine code, there Compilers bridge source programs in high-level lan-
are several other types: guages with the underlying hardware. A compiler veri-
fies code syntax, generates efficient object code, performs
• A source-to-source compiler is a type of compiler
run-time organization, and formats the output according
that takes a high level language as its input and
to assembler and linker conventions.
outputs a high level language. For example, an
automatic parallelizing compiler will frequently take In the early days, the approach taken to compiler design
in a high level language program as an input and then used to be directly affected by the complexity of the pro-
transform the code and annotate it with parallel code cessing, the experience of the person(s) designing it, and
annotations (e.g. OpenMP) or language constructs the resources available.
(e.g. Fortran’s DOALL statements). A compiler for a relatively simple language written by one
• Bytecode compilers that compile to assembly lan- person might be a single, monolithic piece of software.
guage of a theoretical machine, like some Prolog When the source language is large and complex, and high
implementations quality output is required, the design may be split into a
number of relatively independent phases. Having sepa-
• This Prolog machine is also known as the rate phases means development can be parceled up into
Warren Abstract Machine (or WAM). small parts and given to different people. It also becomes
• Bytecode compilers for Java, Python are also much easier to replace a single phase by an improved one,
examples of this category. or to insert new phases later (e.g., additional optimiza-
• Just-in-time compiler (JIT compiler) is the last part tions).
of a multi-pass compiler chain in which some com- The division of the compilation processes into phases
pilation stages are deferred to run-time. Examples was championed by the Production Quality Compiler-
are implemented in Smalltalk, Java and Microsoft Compiler Project (PQCC) at Carnegie Mellon University.
.NET's Common Intermediate Language (CIL) sys- This project introduced the terms front end, middle end,
tems. and back end.
• Applications are first compiled using a byte- All but the smallest of compilers have more than two
code compiler and delivered in a machine- phases. The point at which these ends meet is not always
independent intermediate representation. This clearly defined.
90 CHAPTER 11. COMPILER

11.3.1 One-pass versus multi-pass compil- checking by collecting type information. Generates
ers errors and warnings, if any, highlighting them on the
source code. Aspects of the front end include lex-
Classifying compilers by number of passes has its back- ical analysis, syntax analysis, and semantic analy-
ground in the hardware resource limitations of comput- sis. Eventually generates an intermediate represen-
ers. Compiling involves performing lots of work and tation or IR of the source code for processing by the
early computers did not have enough memory to contain middle-end. This IR is usually a lower level of repre-
one program that did all of this work. So compilers were sentation of the program with respect to the source
split up into smaller programs which each made a pass code.
over the source (or some representation of it) performing
some of the required analysis and translations. • The middle end performs optimizations on a form
other than the source code or machine code. This
The ability to compile in a single pass has classically been source code/machine code independence is intended
seen as a benefit because it simplifies the job of writing a to enable generic optimizations to be shared be-
compiler and one-pass compilers generally perform com- tween versions of the compiler supporting differ-
pilations faster than multi-pass compilers. Thus, partly ent languages and target processors. Examples of
driven by the resource limitations of early systems, many middle end optimizations are removal of useless
early languages were specifically designed so that they or unreachable code, discovery and propagation of
could be compiled in a single pass (e.g., Pascal). constant values, relocation of computation to a less
In some cases the design of a language feature may re- frequently executed place (e.g., out of a loop), or
quire a compiler to perform more than one pass over the specialization of computation based on the context.
source. For instance, consider a declaration appearing on Eventually it may generate another IR for to be used
line 20 of the source which affects the translation of a in the back end.
statement appearing on line 10. In this case, the first pass
needs to gather information about declarations appearing • The back end takes the output from the middle end.
after statements that they affect, with the actual transla- It may perform more analysis, transformations and
tion happening during a subsequent pass. optimizations that are for a particular computer.
Generates the target-dependent assembly code, per-
The disadvantage of compiling in a single pass is that forming register allocation in process. Performs op-
it is not possible to perform many of the sophisticated timizations of the target code utilization of the hard-
optimizations needed to generate high quality code. It ware, like figuring out how to keep parallel execution
can be difficult to count exactly how many passes an op- units busy by filling delay slots. Although most
timizing compiler makes. For instance, different phases algorithms for optimization are NP-hard, heuristic
of optimization may analyse one expression many times techniques are well-developed and currently imple-
but only analyse another expression once. mented in production-quality compilers.[14] Typi-
Splitting a compiler up into small programs is a technique cally the output of a back end is machine code spe-
used by researchers interested in producing provably cor- cialized for a particular processor and operating sys-
rect compilers. Proving the correctness of a set of small tem.
programs often requires less effort than proving the cor-
rectness of a larger, single, equivalent program. This front/middle/back-end approach makes it possible
to combine front ends for different languages with back
ends for different CPUs. Practical examples of this ap-
11.3.2 Three phases compiler structure proach are the GNU Compiler Collection, LLVM,[15] and
the Amsterdam Compiler Kit, which have multiple front-
Regardless of the exact number of stages which a com-
ends, shared analysis and multiple back-ends.
piler is built of, it is common practice to classify them
into three phases. These phases are named after the
Production Quality Compiler-Compiler Project phases
11.3.3 Front end
mentioned before.
The compiler frontend analyzes the source code to build
an internal representation of the program, called the
intermediate representation or IR. It also manages the
symbol table, a data structure mapping each symbol in
Compiler design
the source code to associated information such as loca-
tion, type and scope.
While the frontend can be a single monolithic function or
• The front end verifies syntax and semantics accord- program, as in a scannerless parser, it is more commonly
ing to a specific source language. Performs type implemented and analyzed as several phases, which may
11.3. COMPILER CONSTRUCTION 91

2. Lexical analysis breaks the source code text into


small pieces called tokens. Each token is a single
atomic unit of the language, for instance a keyword,
identifier or symbol name. The token syntax is typ-
ically a regular language, so a finite state automaton
constructed from a regular expression can be used
to recognize it. This phase is also called lexing or
scanning, and the software doing lexical analysis is
called a lexical analyzer or scanner. This may not be
a separate step – it can be combined with the parsing
step in scannerless parsing, in which case parsing is
done at the character level, not the token level.
3. Preprocessing. Some languages, e.g., C, require a
Lexer and parser example for C. Starting from the sequence of
preprocessing phase which supports macro substi-
characters “if(net>0.0)total+=net*(1.0+tax/100.0);", the scan-
ner composes a sequence of tokens, and categorizes each of them, tution and conditional compilation. Typically the
for example as identifier, reserved word, number literal, or op- preprocessing phase occurs before syntactic or se-
erator. The latter sequence is transformed by the parser into mantic analysis; e.g. in the case of C, the prepro-
a syntax tree, which is then treated by the remaining compiler cessor manipulates lexical tokens rather than syn-
phases. The scanner and parser handles the regular and prop- tactic forms. However, some languages such as
erly context-free parts of the grammar for C, respectively. Scheme support macro substitutions based on syn-
tactic forms.
execute sequentially or concurrently. This method is fa- 4. Syntax analysis involves parsing the token sequence
vored due to its modularity and separation of concerns. to identify the syntactic structure of the program.
Most commonly today, the frontend is broken into three This phase typically builds a parse tree, which re-
phases: lexical analysis (also known as lexing), pars- places the linear sequence of tokens with a tree
ing, and semantic analysis. Lexical analysis and parsing structure built according to the rules of a formal
comprise the syntactic analysis (word syntax and phrase grammar which define the language’s syntax. The
syntax, respectively), and in simple cases these modules parse tree is often analyzed, augmented, and trans-
(the lexer and parser) can be automatically generated formed by later phases in the compiler.
from a grammar for the language, though in more com-
5. Semantic analysis is the phase in which the com-
plex cases these require manual modification. The lex-
piler adds semantic information to the parse tree and
ical grammar and phrase grammar are usually context-
builds the symbol table. This phase performs se-
free grammars, which simplifies analysis significantly,
mantic checks such as type checking (checking for
with context-sensitivity handled at the semantic analy-
type errors), or object binding (associating variable
sis phase. The semantic analysis phase is generally more
and function references with their definitions), or
complex and written by hand, but can be partially or fully
definite assignment (requiring all local variables to
automated using attribute grammars. These phases them-
be initialized before use), rejecting incorrect pro-
selves can be further broken down – lexing as scanning
grams or issuing warnings. Semantic analysis usu-
and evaluating, parsing as first building a concrete syntax
ally requires a complete parse tree, meaning that this
tree (CST, parse tree), and then transforming it into an
phase logically follows the parsing phase, and logi-
abstract syntax tree (AST, syntax tree).
cally precedes the code generation phase, though it
In some cases additional phases are used, notably line re- is often possible to fold multiple phases into one pass
construction and preprocessing, but these are rare. A de- over the code in a compiler implementation.
tailed list of possible phases includes:

1. Line reconstruction: Languages which strop their 11.3.4 Back end


keywords or allow arbitrary spaces within identifiers
require a phase before parsing, which converts the The term back end is sometimes confused with code gen-
input character sequence to a canonical form ready erator because of the overlapped functionality of gener-
for the parser. The top-down, recursive-descent, ating assembly code. Some literature uses middle end to
table-driven parsers used in the 1960s typically read distinguish the generic analysis and optimization phases
the source one character at a time and did not re- in the back end from the machine-dependent code gener-
quire a separate tokenizing phase. Atlas Autocode, ators.
and Imp (and some implementations of ALGOL The main phases of the back end include the following:
and Coral 66) are examples of stropped languages
which compilers would have a Line Reconstruction 1. Analysis: This is the gathering of program infor-
phase. mation from the intermediate representation derived
92 CHAPTER 11. COMPILER

from the input; data-flow analysis is used to build according to its language specification.[16] Techniques in-
use-define chains, together with dependence analy- clude developing the compiler using formal methods and
sis, alias analysis, pointer analysis, escape analysis, using rigorous testing (often called compiler validation)
etc. Accurate analysis is the basis for any compiler on an existing compiler.
optimization. The call graph and control flow graph
are usually also built during the analysis phase.
2. Optimization: the intermediate language represen- 11.4 Conferences and organiza-
tation is transformed into functionally equivalent but tions
faster (or smaller) forms. Popular optimizations are
inline expansion, dead code elimination, constant
propagation, loop transformation, register allocation A number of conferences in the field of programming lan-
and even automatic parallelization. guages present advances in compiler construction as one
of their main topics.
3. Code generation: the transformed intermediate lan-
ACM SIGPLAN supports a number of conferences, in-
guage is translated into the output language, usually
cluding:
the native machine language of the system. This in-
volves resource and storage decisions, such as de-
ciding which variables to fit into registers and mem- • Programming Language Design and Implementa-
ory and the selection and scheduling of appropriate tion (PLDI)
machine instructions along with their associated ad-
dressing modes (see also Sethi-Ullman algorithm). • Principles of Programming Languages (POPL)
Debug data may also need to be generated to facili-
• Object-Oriented Programming, Systems, Lan-
tate debugging.
guages, and Applications (OOPSLA)
Compiler analysis is the prerequisite for any compiler op- • International Conference on Functional Program-
timization, and they tightly work together. For example, ming (ICFP)
dependence analysis is crucial for loop transformation.
In addition, the scope of compiler analysis and optimiza- The European Joint Conferences on Theory and Practice
tions vary greatly, from as small as a basic block to the of Software (ETAPS) sponsors the International Confer-
procedure/function level, or even over the whole program ence on Compiler Construction, with papers from both
(interprocedural optimization). Obviously, a compiler the academic and industrial sectors.[17]
can potentially do a better job using a broader view. But
that broad view is not free: large scope analysis and op- Asian Symposium on Programming Languages and Sys-
timizations are very costly in terms of compilation time tems (APLAS) is organized by the Asian Association for
and memory space; this is especially true for interproce- Foundation of Software (AAFS).
dural analysis and optimizations.
Interprocedural analysis and optimizations are common
in modern commercial compilers from HP, IBM, SGI, 11.5 Related techniques
Intel, Microsoft, and Sun Microsystems. The open source
GCC was criticized for a long time for lacking powerful Main article: Translator (computing)
interprocedural optimizations, but it is changing in this
respect. Another open source compiler with full analy- Assembly language is a type of low-level language and
sis and optimization infrastructure is Open64, which is a program that compiles it is more commonly known
used by many organizations for research and commercial as an assembler, with the inverse program known as a
purposes. disassembler.
Due to the extra time and space needed for compiler anal- A program that translates from a low level language to a
ysis and optimizations, some compilers skip them by de- higher level one is a decompiler.
fault. Users have to use compilation options to explicitly
tell the compiler which optimizations should be enabled. A program that translates between high-level languages
is usually called a language translator, source to source
translator, language converter, or language rewriter. The
11.3.5 Compiler correctness last term is usually applied to translations that do not in-
volve a change of language.
Main article: Compiler correctness A program that translates into an object code format that
is not supported on the compilation machine is called a
Compiler correctness is the branch of software engineer- cross compiler and is commonly used to prepare code for
ing that deals with trying to show that a compiler behaves embedded applications.
11.8. REFERENCES 93

11.6 See also [12] Xilinx® Inc. “XST Synthesis Overview”. Xilinx.com.
Xilinx® Inc. Retrieved 20 June 2016.
• Abstract interpretation [13] Altera Corporation. “Spectra-Q™ Engine”. altera.com.
Altera Corporation. Retrieved 20 June 2016.
• Binary recompiler
[14] LLVM community. “The LLVM Target-Independent
• Bottom-up parsing Code Generator”. LLVM Documentation. Retrieved 17
June 2016.
• Compile and go loader
[15] Lattner, Chris. “LLVM”. In Brown, Amy; Wilson, Greg.
• Compile farm The Architecture of Open Source Applications (1 ed.).
• List of compilers [16] Chlipala, Adam. “Syntactic Proofs of Compositional
Compiler Correctness” (PDF). Harvard University Cam-
• List of important publications in computer science bridge, Massachusetts, USA.
§ Compilers
[17] ETAPS - European Joint Conferences on Theory and
• Metacompilation Practice of Software. Cf. “CC” (Compiler Construction)
subsection.

11.7 Notes
11.8 References
[1] “Definition of:compiler". PC Magazine.
1. Compiler textbook references A collection of refer-
[2] Knuth, D. E., & Pardo, L. T. (1980). The early develop- ences to mainstream Compiler Construction Text-
ment of programming languages. A history of computing
books
in the twentieth century, 197-273.

[3] “IP: The World’s First COBOL Compilers”. interesting-


2. Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey
people.org. 12 June 1997. D. (1986). Compilers: Principles, Techniques,
and Tools (1st ed.). Addison-Wesley. ISBN
[4] T. Hart and M. Levin. “The New Compiler, AIM-39 - 9780201100884.
CSAIL Digital Archive - Artificial Intelligence Laboratory
Series” (PDF). publications.ai.mit.edu. 3. Allen, Frances E. (September 1981). “A History
of Language Processor Technology in IBM” (PDF).
[5] Sheridan, Peter B (1959). “The arithmetic translator- IBM Journal of Research and Development. IBM.
compiler of the IBM FORTRAN automatic coding sys- 25 (5). doi:10.1147/rd.255.0535. (subscription re-
tem”. Communications of the ACM. ACM. 2 (2): 9–21.
quired (help)).
doi:10.1145/368280.368289.
4. Allen, Randy; Kennedy, Ken (2001). Optimizing
[6] Chakraborty, P., Saxena, P. C., Katti, C. P., Pahwa,
G., Taneja, S. A new practicum in compiler construc- Compilers for Modern Architectures. Morgan Kauf-
tion. Computer Applications in Engineering Education, In mann Publishers. ISBN 1-55860-286-0.
Press. http://onlinelibrary.wiley.com/doi/10.1002/cae.
20566/pdf
5. Appel, Andrew Wilson (2002). Modern Compiler
Implementation in Java (2nd ed.). Cambridge Uni-
[7] “The PL/0 compiler/interpreter”. versity Press. ISBN 0-521-82060-X.

[8] “The ACM Digital Library”. 6. Appel, Andrew Wilson (1998). Modern Compiler
Implementation in ML. Cambridge University Press.
[9] Aycock, John (June 2003). “A Brief History of Just-in- ISBN 0-521-58274-1.
time”. ACM Comput. Surv. New York, NY, USA. 35 (2):
93–113. doi:10.1145/857076.857077. 7. Bornat, Richard (1979). Understanding and Writ-
ing Compilers: A Do It Yourself Guide (PDF).
[10] Swartz, Jordan S.; Betz, Vaugh; Rose, Jonathan. “A Fast
Routability-Driven Router for FPGAs” (PDF). Depart- Macmillan Publishing. ISBN 0-333-21732-2.
ment of Electrical and Computer Engineering, University
8. Cooper, Keith D.; Torczon, Linda (2004). Engi-
of Toronto.
neering a Compiler. Morgan Kaufmann. ISBN 1-
[11] Lysaght, Patrick; Blodget, Brandon; Mason, Jeff; Young, 55860-699-8.
Jay; Bridgford, Brendan (2006). “Invited paper: En-
hanced architectures, design methodologies and cad tools 9. Leverett, Bruce W.; Cattell, R. G. G.; Newcomer,
for dynamic reconfiguration of xilinx fpgas”. 2006 In- Joseph M.; Hobbs, S.O.; Reiner, A.H.; Schatz, B.R.;
ternational Conference on Field Programmable Logic and Wulf, W.A. (August 1980). “An Overview of the
Applications. IEEE. Production – Quality Compiler – Compiler Project”.
94 CHAPTER 11. COMPILER

Computer. Carnegie-Mellon University. 13 (8): 38–


49. doi:10.1109/MC.1980.1653748. ISSN 0018-
9162. (subscription required (help)).

10. McKeeman, William Marshall; Horning, James J.;


Wortman, David B. (1970). A Compiler Generator.
Englewood Cliffs, NJ: Prentice-Hall. ISBN 0-13-
155077-2.

11. Muchnick, Steven (1997). Advanced Compiler De-


sign and Implementation. Morgan Kaufmann Pub-
lishers. ISBN 1-55860-320-4.
12. Scott, Michael Lee (2005). Programming Language
Pragmatics (2nd ed.). Morgan Kaufmann. ISBN 0-
12-633951-1.
13. Srikant, Y. N.; Shankar, Priti (2003). The Compiler
Design Handbook: Optimizations and Machine Code
Generation. CRC Press. ISBN 0-8493-1240-X.

14. Terry, Patrick D. (1997). Compilers and Compiler


Generators: An Introduction with C++. Interna-
tional Thomson Computer Press. ISBN 1-85032-
298-8.

15. Wirth, Niklaus (1996). Compiler Construction


(PDF). Addison-Wesley. ISBN 0-201-40353-6.

11.9 External links


• Compilers at DMOZ
• Incremental Approach to Compiler Construction –
a PDF Tutorial
• Compile-Howto

• Basics of Compiler Design by Torben Ægidius Mo-


gensen

• Short animation on YouTube explaining the key


conceptual difference between compilers and inter-
preters

• Syntax Analysis & LL1 Parsing on YouTube


• Let’s Build a Compiler, by Jack Crenshaw

• Forum about compiler development


Chapter 12

Computer hardware

For other uses, see Hardware.


Computer hardware (or simply hardware in comput-

Von Neumann architecture scheme

garian mathematician John von Neumann. This de-


scribes a design architecture for an electronic digital
computer with subdivisions of a processing unit con-
sisting of an arithmetic logic unit and processor reg-
isters, a control unit containing an instruction register
and program counter, a memory to store both data and
instructions, external mass storage, and input and output
mechanisms.[3] The meaning of the term has evolved to
PDP-11 CPU board mean a stored-program computer in which an instruction
fetch and a data operation cannot occur at the same time
ing contexts) is the collection of physical elements that because they share a common bus. This is referred to as
constitutes a computer system. Computer hardware is the Von Neumann bottleneck and often limits the perfor-
the physical parts or components of a computer, such mance of the system.[4]
as the monitor, keyboard, computer data storage, hard
disk drive (HDD), graphic cards, sound cards, memory
(RAM), motherboard, and so on, all of which are tangi-
ble physical objects.[1] By contrast, software is instruc-
tions that can be stored and run by hardware.
Software is any set of machine-readable instructions that
directs a computer’s processor to perform specific oper- 12.2 Sales
ations. A combination of hardware and software forms a
usable computing system.[2]
For the third consecutive year, U.S. business-to-business
channel sales (sales through distributors and commercial
resellers) increased, ending 2013 up nearly 6 percent at
12.1 Von Neumann architecture $61.7 billion. The impressive growth was the fastest sales
increase since the end of the recession. Sales growth ac-
Main article: Von Neumann architecture celerated in the second half of the year peaking in fourth
The template for all modern computers is the Von Neu- quarter with a 6.9 percent increase over the fourth quarter
mann architecture, detailed in a 1945 paper by Hun- of 2012.[5]

95
96 CHAPTER 12. COMPUTER HARDWARE

12.3 Different systems computers are usually small enough to fit under a desk;
however, in recent years more compact designs have be-
There are a number of different types of computer system come more commonplace, such as the all-in-one style de-
in use today. signs from Apple, namely the iMac. A case can be either
big or small, but the form factor of motherboard for which
it is designed matters more. Laptops are computers that
12.3.1 Personal computer usually come in a clamshell form factor; however, in more
recent years, deviations from this form factor, such as
2
laptops that have a detachable screen that become tablet
8 computers in their own right, have started to emerge.
3

4
5 10 Power supply
9
12 Main article: Power supply unit (computer)
6 11 16
15

7
14 A power supply unit (PSU) converts alternating current
1
13 (AC) electric power to low-voltage DC power for the in-
ternal components of the computer. Laptops are capable
of running from a built-in battery, normally for a period
Basic hardware components of a modern personal computer, of hours.[6]
including a monitor, a motherboard, a CPU, a RAM, two
expansion cards, a power supply, an optical disc drive, a hard
disk drive, a keyboard and a mouse Mainboard

Main article: Motherboard

The motherboard is the main component of a computer.


It is a large rectangular board with integrated circuitry
that connects the other parts of the computer including
the CPU, the RAM, the disk drives (CD, DVD, hard disk,
or any others) as well as any peripherals connected via the
ports or the expansion slots.
Components directly attached to or to part of the moth-
erboard include:

• The CPU (Central Processing Unit), which per-


forms most of the calculations which enable a com-
puter to function, and is sometimes referred to as
the brain of the computer. It is usually cooled by
a heatsink and fan, or water-cooling system. Most
newer CPUs include an on-die Graphics Processing
Inside a custom-built computer: power supply at the bottom has Unit (GPU). The clock speed of CPUs governs how
its own cooling fan
fast it executes instructions, and is measured in GHz;
typical values lie between 1 GHz and 5 GHz. Many
The personal computer, also known as the PC, is one of
modern computers have the option to overclock the
the most common types of computer due to its versatility
CPU which enhances performance at the expense of
and relatively low price. Laptops are generally very sim-
greater thermal output and thus a need for improved
ilar, although they may use lower-power or reduced size
cooling.
components.
• The chipset, which includes the north bridge, medi-
Case ates communication between the CPU and the other
components of the system, including main memory.
Main article: Computer case • Random-Access Memory (RAM), which stores
the code and data that are being actively accessed
The computer case is a plastic or metal enclosure that by the CPU. RAM usually comes on DIMMs in the
houses most of the components. Those found on desktop sizes 2GB, 4GB, and 8GB, but can be much larger.
12.3. DIFFERENT SYSTEMS 97

• Read-Only Memory (ROM), which stores the usefulness depends on being readable by other systems;
BIOS that runs when the computer is powered on the majority of machines have an optical disk drive, and
or otherwise begins execution, a process known as virtually all have a USB port.
Bootstrapping, or "booting" or “booting up.” The
BIOS (Basic Input Output System) includes boot
firmware and power management firmware. Newer Input and output peripherals
motherboards use Unified Extensible Firmware In-
terface (UEFI) instead of BIOS. Main article: Peripheral

• Buses that connect the CPU to various internal com-


Input and output devices are typically housed externally
ponents and to expand cards for graphics and sound.
to the main computer chassis. The following are either
• The CMOS battery, which powers the memory for standard or very common to many computer systems.
date and time in the BIOS chip. This battery is gen-
erally a watch battery.
Input Input devices allow the user to enter information
• The video card (also known as the graphics card), into the system, or control its operation. Most personal
which processes computer graphics. More powerful computers have a mouse and keyboard, but laptop sys-
graphics cards are better suited to handle strenuous tems typically use a touchpad instead of a mouse. Other
tasks, such as playing intensive video games. input devices include webcams, microphones, joysticks,
and image scanners.

Expansion cards
Output device Output devices display information in
Main article: Expansion card a human readable form. Such devices could include
printers, speakers, monitors or a Braille embosser.
An expansion card in computing is a printed circuit board
that can be inserted into an expansion slot of a computer 12.3.2 Mainframe computer
motherboard or backplane to add functionality to a com-
puter system via the expansion bus. Expansions cards can
be used to obtain or expand on features not offered by the
motherboard.

Storage devices

Main article: Computer data storage

A storage device is any computing hardware that is used


for storing, porting and extracting data files and objects.
It can hold and store information both temporarily and
permanently, and can be internal or external to a com-
puter, server or any similar computing device. It refers
to computer components and recording media that retain
digital data. Data storage is a core function and funda-
mental component of computers.

Fixed media Data is stored by a computer using a va-


riety of media. Hard disk drives are found in virtually all
older computers, due to their high capacity and low cost,
but solid-state drives are faster and more power efficient,
although currently more expensive than hard drives, so
are often found in more expensive computers. Some sys- An IBM System z9 mainframe
tems may use a disk array controller for greater perfor-
mance or reliability. A mainframe computer is a much larger computer that
typically fills a room and may cost many hundreds or
thousands of times as much as a personal computer. They
Removable media To transfer data between comput- are designed to perform large numbers of calculations for
ers, a USB flash drive or optical disc may be used. Their governments and large enterprises.
98 CHAPTER 12. COMPUTER HARDWARE

12.3.3 Departmental computing 12.5 See also


Main article: Minicomputer • Electronic hardware

• List of computer hardware manufacturers


In the 1960s and 1970s, more and more departments
started to use cheaper and dedicated systems for specific • Computer architecture
purposes like process control and laboratory automation. • Open-source computing hardware

12.6 References
12.3.4 Supercomputer
[1] “Parts of computer”. Microsoft. Retrieved 5 December
2013.
Main article: Supercomputer
[2] Smither, Roger. “Use of computers in audiovisual
A supercomputer is superficially similar to a mainframe, archives”. UNESCO. Retrieved 5 December 2013.
but is instead intended for extremely demanding compu- [3] von Neumann, John (1945). “First Draft of a Report on
tational tasks. As of June 2016, the fastest supercom- the EDVAC” (PDF).
puter in the world is the Sunway TaihuLight, in Jiangsu,
China.[7] [4] Markgraf, Joey D. (2007). “The Von Neumann bottle-
neck”. Archived from the original on 2011-06-09. Re-
The term supercomputer does not refer to a specific tech- trieved 24 August 2011.
nology. Rather it indicates the fastest computers avail-
able at any given time. In mid 2011, the fastest super- [5] “US B2B Channel sales reach nearly $62 Billion in 2013,
computers boasted speeds exceeding one petaflop, or 1 According to The NPD Group”. NPD Group. February
4, 2014.
quadrillion (10^15 or 1,000 trillion) floating point opera-
tions per second. Super computers are fast but extremely [6] “How long should a laptop battery last?". Computer Hope.
costly so they are generally used by large organizations to Retrieved 9 December 2013.
execute computationally demanding tasks involving large
data sets. Super computers typically run military and sci- [7] Alba, Davey. “China’s Tianhe-2 Caps Top 10 Supercom-
puters”. IEEE. Retrieved 9 December 2013.
entific applications. Although they cost millions of dol-
lars, they are also being used for commercial applica-
tions where huge amounts of data must be analyzed. For
example, large banks employ supercomputers to calcu- 12.7 External links
late the risks and returns of various investment strategies,
and healthcare organizations use them to analyze giant • Media related to Computer hardware at Wikimedia
databases of patient data to determine optimal treatments Commons
for various diseases and problems incurring to the coun-
try. • Learning materials related to Computer hardware at
Wikiversity

12.4 Hardware upgrade

When using computer hardware, an upgrade means


adding new hardware to a computer that improves its per-
formance, adds capacity or new features. For example,
a user could perform a hardware upgrade to replace the
hard drive with a SSD to get a boost in performance or
increase the amount of files that may be stored. Also, the
user could increase the RAM so the computer may run
more smoothly. The user could add a USB 3.0 expansion
card in order to fully use USB 3.0 devices, or could up-
grade the GPU for extra rendering power. Performing
such hardware upgrades may be necessary for older com-
puters to meet a programs’ system requirements.
Chapter 13

Concurrent computing

For a more theoretical discussion, see Concurrency be useful for tackling complexity, regardless of whether
(computer science). the parts can be executed in parallel.[4]:1
For example, concurrent processes can be executed on
Concurrent computing is a form of computing in which one core by interleaving the execution steps of each pro-
several computations are executed during overlapping cess via time-sharing slices: only one process runs at a
time periods —concurrently— instead of sequentially time, and if it does not complete during its time slice, it is
(one completing before the next starts). This is a prop- paused, another process begins or resumes, and then later
erty of a system —this may be an individual program, the original process is resumed. In this way, multiple pro-
a computer, or a network— and there is a separate exe- cesses are part-way through execution at a single instant,
cution point or “thread of control” for each computation but only one process is being executed at that instant.
(“process”). A concurrent system is one where a compu- Concurrent computations may be executed in
tation can advance without waiting for all other computa-
parallel,[2][5] for example by assigning each process
tions to complete; where more than one computation can to a separate processor or processor core, or distributing
advance at the same time.[1] a computation across a network, but in general, the lan-
As a programming paradigm, concurrent computing is a guages, tools and techniques for parallel programming
form of modular programming, namely factoring an over- may not be suitable for concurrent programming, and
all computation into subcomputations that may be exe- vice versa.
cuted concurrently. Pioneers in the field of concurrent
The exact timing of when tasks in a concurrent system
computing include Edsger Dijkstra, Per Brinch Hansen, are executed depend on the scheduling, and tasks need
and C.A.R. Hoare.
not always be executed concurrently. For example, given
two tasks, T1 and T2:

13.1 Introduction
• T1 may be executed and finished before T2 or vice
versa (serial and sequential);
See also: Parallel computing

Concurrent computing is related to but distinct from • T1 and T2 may be executed alternately (serial and
parallel computing, though these concepts are frequently concurrent);
confused,[2][3] and both can be described as “multiple
processes executing during the same period of time".
In parallel computing, execution occurs at the same • T1 and T2 may be executed simultaneously at the
physical instant, for example on separate processors same instant of time (parallel and concurrent).
of a multi-processor machine, with the goal of speed-
ing up computations—parallel computing is impossi-
ble on a (one-core) single processor, as only one com- The word “sequential” is used as an antonym for both
putation can occur at any instant (during any single “concurrent” and “parallel"; when these are explicitly dis-
clock cycle).[lower-alpha 1] By contrast, concurrent comput- tinguished, concurrent/sequential and parallel/serial are
ing consists of process lifetimes overlapping, but execu- used as opposing pairs.[6] A schedule in which tasks ex-
tion need not happen at the same instant. The goal here ecute one at a time (serially, no parallelism), without in-
is to model processes in the outside world that happen terleaving (sequentially, no concurrency: no task begins
concurrently, such as multiple clients accessing a server until the prior task ends) is called a serial schedule. A
at the same time. Structuring software systems as com- set of tasks that can be scheduled serially is serializable,
posed of multiple concurrent, communicating parts can which simplifies concurrency control.

99
100 CHAPTER 13. CONCURRENT COMPUTING

13.1.1 Coordinating access to shared re- 13.2 Models


sources
There are several models of concurrent computing, which
The main challenge in designing concurrent programs can be used to understand and analyze concurrent sys-
is concurrency control: ensuring the correct sequencing tems. These models include:
of the interactions or communications between differ-
ent computational executions, and coordinating access • Actor model
to resources that are shared among executions.[5] Po-
tential problems include race conditions, deadlocks, and • Object-capability model for security
resource starvation. For example, consider the following • Petri nets
algorithm to make withdrawals from a checking account
represented by the shared resource balance: • Process calculi such as
1 bool withdraw(int withdrawal) 2 { 3 if (balance >= • Ambient calculus
withdrawal) 4 { 5 balance -= withdrawal; 6 return true;
• Calculus of communicating systems (CCS)
7 } 8 return false; 9 }
• Communicating sequential processes (CSP)
Suppose balance = 500, and two concurrent threads make • π-calculus
the calls withdraw(300) and withdraw(350). If line 3 in • Join-calculus
both operations executes before line 5 both operations
will find that balance >= withdrawal evaluates to true, • Input/output automaton
and execution will proceed to subtracting the withdrawal
amount. However, since both processes perform their
withdrawals, the total amount withdrawn will end up be- 13.3 Implementation
ing more than the original balance. These sorts of prob-
lems with shared resources need the use of concurrency A number of different methods can be used to imple-
control, or non-blocking algorithms. ment concurrent programs, such as implementing each
Because concurrent systems rely on the use of shared computational execution as an operating system process,
resources (including communication media), concurrent or implementing the computational processes as a set of
computing in general needs the use of some form of threads within a single operating system process.
arbiter somewhere in the implementation to mediate ac-
cess to these resources.
13.3.1 Interaction and communication
Unfortunately, while many solutions exist to the problem
of a conflict over one resource, many of those “solutions” In some concurrent computing systems, communication
have their own concurrency problems such as deadlock between the concurrent components is hidden from the
when more than one resource is involved. programmer (e.g., by using futures), while in others it
must be handled explicitly. Explicit communication can
be divided into two classes:

13.1.2 Advantages Shared memory communication Concurrent compo-


nents communicate by altering the contents of
shared memory locations (exemplified by Java and
• Increased program throughput—parallel execution C#). This style of concurrent programming usu-
of a concurrent program allows the number of tasks ally needs the use of some form of locking (e.g.,
completed in a given time to increase. mutexes, semaphores, or monitors) to coordinate
between threads. A program that properly imple-
ments any of these is said to be thread-safe.
• High responsiveness for input/output—
input/output-intensive programs mostly wait Message passing communication Concurrent compo-
for input or output operations to complete. Con- nents communicate by exchanging messages (exem-
current programming allows the time that would be plified by Scala, Erlang and occam). The exchange
spent waiting to be used for another task. of messages may be carried out asynchronously,
or may use a synchronous “rendezvous” style in
which the sender blocks until the message is re-
• More appropriate program structure—some prob- ceived. Asynchronous message passing may be re-
lems and problem domains are well-suited to rep- liable or unreliable (sometimes referred to as “send
resentation as concurrent tasks or processes. and pray”). Message-passing concurrency tends to
13.6. LANGUAGES SUPPORTING IT 101

be far easier to reason about than shared-memory • Process


concurrency, and is typically considered a more ro-
bust form of concurrent programming. A wide va- • Thread
riety of mathematical theories to understand and
analyze message-passing systems are available, in- At the network level, networked systems are generally
cluding the actor model, and various process calculi. concurrent by their nature, as they consist of separate de-
Message passing can be efficiently implemented via vices.
symmetric multiprocessing, with or without shared
memory cache coherence.
13.6 Languages supporting it
Shared memory and message passing concurrency have
different performance characteristics. Typically (al- Concurrent programming languages are programming
though not always), the per-process memory overhead languages that use language constructs for concurrency.
and task switching overhead is lower in a message passing These constructs may involve multi-threading, support
system, but the overhead of message passing is greater for distributed computing, message passing, shared
than for a procedure call. These differences are often resources (including shared memory) or futures and
overwhelmed by other performance factors. promises. Such languages are sometimes described as
Concurrency Oriented Languages or Concurrency Ori-
ented Programming Languages (COPL).[8]
13.4 History Today, the most commonly used programming languages
that have specific constructs for concurrency are Java
Concurrent computing developed out of earlier work on and C#. Both of these languages fundamentally use a
railroads and telegraphy, from the 19th and early 20th shared-memory concurrency model, with locking pro-
century, and some terms date to this period, such as vided by monitors (although message-passing models can
semaphores. These arose to address the question of how and have been implemented on top of the underlying
to handle multiple trains on the same railroad system shared-memory model). Of the languages that use a
(avoiding collisions and maximizing efficiency) and how message-passing concurrency model, Erlang is probably
to handle multiple transmissions over a given set of wires the most widely used in industry at present.
(improving efficiency), such as via time-division multi-
plexing (1870s). Many concurrent programming languages have been de-
veloped more as research languages (e.g. Pict) rather than
The academic study of concurrent algorithms started in as languages for production use. However, languages
the 1960s, with Dijkstra (1965) credited with being the such as Erlang, Limbo, and occam have seen industrial
first paper in this field, identifying and solving mutual ex- use at various times in the last 20 years. Languages in
clusion.[7] which concurrency plays an important role include:

• Ada—general purpose, with native support for mes-


13.5 Prevalence sage passing and monitor based concurrency

Concurrency is pervasive in computing, occurring from • Alef—concurrent, with threads and message pass-
low-level hardware on a single chip to world-wide net- ing, for system programming in early versions of
works. Examples follow. Plan 9 from Bell Labs

At the programming language level: • Alice—extension to Standard ML, adds support for
concurrency via futures
• Channel
• Ateji PX—extension to Java with parallel primitives
• Coroutine inspired from π-calculus

• Futures and promises • Axum—domain specific, concurrent, based on actor


model and .NET Common Language Runtime using
At the operating system level: a C-like syntax

• C++—std::thread
• Computer multitasking, including both cooperative
multitasking and preemptive multitasking • Cω (C omega)—for research, extends C#, uses
asynchronous communication
• Time-sharing, which replaced sequential batch
processing of jobs with concurrent use of a • C#—supports concurrent computing since version
system 5.0 using lock, yield, async and await keywords
102 CHAPTER 13. CONCURRENT COMPUTING

• Clojure—modern Lisp for the JVM • Join Java—concurrent, based on Java language
• Concurrent Clean—functional programming, simi- • Joule—dataflow-based, communicates by message
lar to Haskell passing

• Concurrent Collections (CnC)—Achieves implicit • Joyce—concurrent, teaching, built on Concurrent


parallelism independent of memory model by ex- Pascal with features from CSP by Per Brinch Hansen
plicitly defining flow of data and control
• LabVIEW—graphical, dataflow, functions are
• Concurrent Haskell—lazy, pure functional language nodes in a graph, data is wires between the nodes;
operating concurrent processes on shared memory includes object-oriented language

• Concurrent ML—concurrent extension of Standard • Limbo—relative of Alef, for system programming


ML in Inferno (operating system)

• Concurrent Pascal—by Per Brinch Hansen • MultiLisp—Scheme variant extended to support


parallelism
• Curry
• Modula-2—for system programming, by N. Wirth
• D—multi-paradigm system programming language as a successor to Pascal with native support for
with explicit support for concurrent programming coroutines
(actor model)
• Modula-3—modern member of Algol family with
• E—uses promises to preclude deadlocks extensive support for threads, mutexes, condition
variables
• ECMAScript—promises available in various li-
braries, proposed for inclusion in standard in EC- • Newsqueak—for research, with channels as first-
MAScript 6 class values; predecessor of Alef

• Eiffel—through its SCOOP mechanism based on • Node.js—a server-side runtime environment for
the concepts of Design by Contract JavaScript

• Elixir—dynamic and functional meta-programming • occam—influenced heavily by communicating se-


aware language running on the Erlang VM. quential processes (CSP)

• Erlang—uses asynchronous message passing with • occam-π—a modern variant of occam, which
nothing shared incorporates ideas from Milner’s π-calculus

• FAUST—real-time functional, for signal process- • Orc—heavily concurrent, nondeterministic, based


ing, compiler provides automatic parallelization via on Kleene algebra
OpenMP or a specific work-stealing scheduler • Oz-Mozart—multiparadigm, supports shared-state
• Fortran—coarrays and do concurrent are part of and message-passing concurrency, and futures
Fortran 2008 standard • ParaSail—object-oriented, parallel, free of pointers,
• Go—for system programming, with a concurrent race conditions
programming model based on CSP • Pict—essentially an executable implementation of
• Hume—functional, concurrent, for bounded space Milner’s π-calculus
and time environments where automata processes • Perl with AnyEvent and Coro
are described by synchronous channels patterns and
message passing • Python with Twisted, greenlet and gevent

• Io—actor-based concurrency • Reia—uses asynchronous message passing between


shared-nothing objects
• Janus—features distinct askers and tellers to logical
variables, bag channels; is purely declarative • Red/System—for system programming, based on
Rebol
• Java—Thread class or Runnable interface.
• Ruby with Concurrent Ruby and Celluloid
• JavaScript—via web workers, in a browser environ-
ment, promises, and callbacks. • Rust—for system programming, focus on massive
concurrency, using message-passing with move se-
• JoCaml—concurrent and distributed channel based, mantics, shared immutable memory, and shared
extension of OCaml, implements the Join-calculus mutable memory that is provably free of race con-
of processes ditions.[9]
13.8. NOTES 103

• SALSA—actor-based with token-passing, join, and • Sheaf (mathematics)


first-class continuations for distributed computing
over the Internet • Software transactional memory
• Transaction processing
• Scala—general purpose, designed to express com-
mon programming patterns in a concise, elegant, • Java ConcurrentMap
and type-safe way

• SequenceL—general purpose functional, main de-


sign objectives are ease of programming, code 13.8 Notes
clarity-readability, and automatic parallelization for
performance on multicore hardware, and provably [1] This is discounting parallelism internal to a processor
core, such as pipelining or vectorized instructions. A one-
free of race conditions
core, one-processor machine may be capable of some par-
• SR—for research allelism, such as with a coprocessor, but the processor
alone is not.
• Stackless Python

• StratifiedJS—combinator-based concurrency, based


on JavaScript
13.9 References
• SuperPascal—concurrent, for teaching, built on [1] Operating System Concepts 9th edition, Abraham Silber-
Concurrent Pascal and Joyce by Per Brinch Hansen schatz. “Chapter 4: Threads”

[2] “Concurrency is not Parallelism”, Waza conference Jan 11,


• Unicon—for research
2012, Rob Pike (slides) (video)
• Termite Scheme—adds Erlang-like concurrency to [3] “Parallelism vs. Concurrency”. Haskell Wiki.
Scheme
[4] Schneider, Fred B. On Concurrent Programming.
• TNSDL—for developing telecommunication ex- Springer. ISBN 9780387949420.
changes, uses asynchronous message passing
[5] Ben-Ari, Mordechai (2006). Principles of Concurrent
• VHSIC Hardware Description Language and Distributed Programming (2nd ed.). Addison-Wesley.
(VHDL)—IEEE STD-1076 ISBN 978-0-321-31283-9.

[6] Patterson & Hennessy 2013, p. 503.


• XC—concurrency-extended subset of C language
developed by XMOS, based on communicating [7] “PODC Influential Paper Award: 2002”, ACM Symposium
sequential processes, built-in constructs for pro- on Principles of Distributed Computing, retrieved 2009-08-
grammable I/O 24

[8] Armstrong, Joe (2003). “Making reliable distributed sys-


Many other languages provide support for concurrency in tems in the presence of software errors”.
the form of libraries, at levels roughly comparable with
[9] Blum, Ben (2012). “Typesafe Shared Mutable State”. Re-
the above list. trieved 2012-11-14.

• Patterson, David A.; Hennessy, John L. (2013).


13.7 See also Computer Organization and Design: The Hard-
ware/Software Interface. The Morgan Kaufmann
• List of important publications in concurrent, paral- Series in Computer Architecture and Design (5 ed.).
lel, and distributed computing Morgan Kaufmann. ISBN 978-0-12407886-4.

• Chu space

• Critical section 13.10 Further reading


• Flow-based programming • Dijkstra, E. W. (1965). “Solution of a prob-
lem in concurrent programming control”.
• Multitasking
Communications of the ACM. 8 (9): 569.
• Parallel computing doi:10.1145/365559.365617.

• Ptolemy Project • Herlihy, Maurice (2008) [2008]. The Art of Multi-


processor Programming. Morgan Kaufmann. ISBN
• Race condition 978-0123705914.
104 CHAPTER 13. CONCURRENT COMPUTING

• Downey, Allen B. (2005) [2005]. The Little Book


of Semaphores (PDF). Green Tea Press. ISBN 1-
4414-1868-7.

• Filman, Robert E.; Daniel P. Friedman (1984). Co-


ordinated Computing: Tools and Techniques for Dis-
tributed Software. New York: McGraw-Hill. p.
370. ISBN 0-07-022439-0.

• Leppäjärvi, Jouni (2008). A pragmatic, historically


oriented survey on the universality of synchronization
primitives (PDF). University of Oulu.
• Taubenfeld, Gadi (2006). Synchronization Algo-
rithms and Concurrent Programming. Pearson /
Prentice Hall. p. 433. ISBN 0-13-197259-6.

13.11 External links


• Concurrent Systems Virtual Library
Chapter 14

Connection-oriented communication

Connection-oriented (CO-mode[1] ) communication is 14.2 Virtual circuit switching


a network communication mode in telecommunications
and computer networking, where a communication ses- Packet switched communication may also be connection-
sion or a semi-permanent connection is established be- oriented, which is called virtual circuit mode communi-
fore any useful data can be transferred, and where a cation. Due to the packet switching, the communication
stream of data is delivered in the same order as it was may suffer from variable bit rate and delay, due to vary-
sent. The alternative to connection-oriented transmis- ing traffic load and packet queue lengths. Connection-
sion is connectionless communication, for example the oriented communication are not necessarily reliable pro-
datagram mode communication used by the IP and UDP tocols.
protocols, where data may be delivered out of order, since
different packets are routed independently, and may be Because they can keep track of a conversation,
delivered over different paths. connection-oriented protocols are sometimes described
as stateful.
Connection-oriented communication may be a circuit
switched connection, or a packet-mode virtual circuit
connection. In the latter case, it may use either a trans- 14.2.1 Transport layer connection mode
port layer virtual circuit protocol such as the TCP proto- communication
col, allowing data to be delivered in order although the
lower layer switching is connectionless, or it may be a Connection-oriented transport layer protocols provide
data link layer or network layer switching mode, where connection-oriented communications over connection-
all data packets belonging to the same traffic stream are less communications systems. A connection-oriented
delivered over the same path, and traffic flows are iden- transport layer protocol, such as TCP, may be based
tified by some connection identifier rather than by com- on a connectionless network layer protocol (such as IP),
plete routing information, allowing fast hardware based but still achieves in-order delivery of a byte-stream, by
switching. means of segment sequence numbering on the sender
Connection-oriented protocol services are often but not side, packet buffering and data packet reordering on the
always reliable network services, that provide acknowl- receiver side. The sequence numbering requires two-way
edgment after successful delivery, and automatic repeat synchronization of segment counters during a three-step
request functions in case of missing data or detected bit- connection establishment phase.
errors. ATM, Frame Relay and MPLS are examples of a
connection-oriented, unreliable protocol.
14.2.2 Datalink and network layer virtual
circuit switching
In a connection-oriented packet switched data link layer
14.1 Circuit switching or network layer protocol, all data is sent over the same
path during a communication session. The protocol iden-
Circuit switched communication, for example the public tifies traffic flows only by a channel/data stream num-
switched telephone network, ISDN, SONET/SDH and ber, often denoted virtual circuit identifier (VCI), rather
optical mesh networks, are intrinsically connection- than by complete routing information for each packet
oriented communications systems. Circuit mode com- (source and destination addresses) used in connectless
munication provides guarantees that data will arrive with datagram switching such as conventional IP routers. In
constant bandwidth and at constant delay and in-order de- connection-oriented communication, routing information
livery of a bit stream or byte stream is provided. The may be provided to the network nodes during the connec-
switches are reconfigured during a circuit establishment tion establishment phase, where the VCI is defined in ta-
phase. bles in each node. Thus, the actual packet switching and

105
106 CHAPTER 14. CONNECTION-ORIENTED COMMUNICATION

data transfer can be taken care of by fast hardware, as • Ip addresses


opposed to slow software based routing. Typically, this
connection identifier is a small integer (10 bits for Frame Some connection-oriented protocols have been designed
Relay, 24 bits for ATM, for example). This makes net- or altered to accommodate both connection-oriented and
work switches substantially faster (as routing tables are connectionless data.[3]
just simple look-up tables, and are trivial to implement in
hardware). The impact is so great, in fact, that even char-
acteristically connectionless protocols, such as IP traffic,
are being tagged with connection-oriented header prefixes
14.4 See also
(e.g., as with MPLS, or IPv6's built-in Flow ID field).
• Statistical time division multiplexing
ATM and Frame Relay, for example, are both examples
of a connection-oriented, unreliable data link layer pro- • Packet
tocols. There are also reliable connectionless protocols
as well, such as AX.25 network layer protocol, when it • Segment
passes data in I-frames. But this combination is rare,
and reliable-connectionless is uncommon in modern net-
works. 14.5 References
Connection-oriented protocols handle real-time traffic
[1] Information Processing Systems - Open Systems Inter-
substantially more efficiently than connectionless proto-
connection, “Transport Service Definition”, International
cols, especially with short constant length packets, which Organization for Standardization, International Standard
is why ATM has yet to be replaced with Ethernet for car- 8072, June 1986.
rying real-time, isochronous traffic streams, especially in
heavily aggregated networks like backbones, where the [2] Ramos-Escano; et al. (2005-06-02). “US Patent Applica-
motto “bandwidth is cheap” fails to deliver on its promise. tion Publication 2005/0117529 A1”. Retrieved 2008-05-
Experience has also shown that over-provisioning band- 19.
width does not resolve all quality of service issues. Hence, [3] Ramos-Escano; et al. (2005-06-02). “US Patent Applica-
(10-)gigabit Ethernet is not expected to replace ATM at tion Publication 2005/0117529 A1”. Retrieved 2008-05-
this time. 19.
Some connection-oriented protocols have been designed
or altered to accommodate both connection-oriented and
connectionless data.[2]

14.3 Examples
Examples of connection-oriented packet mode commu-
nication, i.e. virtual circuit mode communication:

• Asynchronous Transfer Mode


• Connection-oriented Ethernet
• DCCP
• Frame Relay
• GPRS
• IPX/SPX
• Multiprotocol Label Switching
• SCTP
• Transmission Control Protocol
• TIPC
• X.25 is a connection-oriented reliable network pro-
tocol.
Chapter 15

Connectionless communication

Connectionless communication, often referred to as (and hence cache) routing-related information, avoiding
CL-mode communication,[1] is a data transmission re-computation for every packet. Network components
method used in packet switching networks by which each could also reserve capacity for the transfer of the subse-
data unit is individually addressed and routed based on quent data units of a video download, for example.
information carried in each unit, rather than in the setup Distinction between connectionless and connection-
information of a prearranged, fixed data channel as in
oriented transmission may take place at several layers of
connection-oriented communication. the OSI Reference Model:
Under connectionless communication between two net-
work end points, a message can be sent from one end • Transport Layer: TCP is a connection-oriented
point to another without prior arrangement. The device at transport protocol. UDP is connectionless.
one end of the communication transmits data addressed
to the other, without first ensuring that the recipient is • Network Layer.
available and ready to receive the data. Some proto-
cols allow for error correction by requested retransmis- • Data Link Layer: The IEEE 802.2 protocol at the
sion. Internet Protocol (IP) and User Datagram Protocol Logical Link Control sublayer of the data link layer
(UDP) are connectionless protocols. may provide both connectionless and connection-
oriented services. In fact, some network protocols
A packet transmitted in a connectionless mode is fre- (such as SNA's Path Control in its early stages) re-
quently called a datagram. quire a connection-oriented data link layer. Others
Connectionless protocols are usually described as (like IP) do not. (After the appearance of APPN,
stateless protocols because the end points have no SNA could operate on a connectionless data link ser-
protocol-defined way to remember where they are in a vice as well.)
“conversation” of message exchanges.
In connection-oriented communication the communicat-
ing peers must first establish a logical or physical data 15.1 Notable connectionless proto-
channel or connection in a dialog preceding the exchange cols
of user data.
The connectionless communications has the advantage • Internet Protocol (IP)
over connection-oriented communications in that it has
low overhead. It also allows for multicast and broadcast • User Datagram Protocol (UDP)
operations in which the same data are transmitted to sev-
• Internet Control Message Protocol (ICMP)
eral recipients in a single transmission.
In connectionless transmissions the service provider usu- • Internetwork Packet Exchange (IPX)
ally cannot guarantee that there will be no loss, error in- • TIPC
sertion, misdelivery, duplication, or out-of-sequence de-
livery of the packet. However, the effect of errors may • NetBEUI
be reduced by implementing error correction within an
application protocol. • Hypertext Transfer Protocol (HTTP)
In connectionless mode no optimizations are possible
when sending several data units between the same two
peers. By establishing a connection at the beginning of 15.2 References
such a data exchange the components (routers, bridges)
along the network path would be able to pre-compute [1] Information Processing Systems - Open Systems Inter-
connection, “Transport Service Definition - Addendum

107
108 CHAPTER 15. CONNECTIONLESS COMMUNICATION

1: Connectionless-mode Transmission”, International Or-


ganization for Standardization, International Standard
8072/AD 1, December 1986.

• This article incorporates public domain material


from the General Services Administration document
“Federal Standard 1037C”.
Chapter 16

Data flow diagram

16.2 Theory

Data flow diagram example

Data flow diagram example.[1]

Function
A data flow diagram (DFD) is a graphical representa-
tion of the “flow” of data through an information system,
modelling its process aspects. A DFD is often used as
a preliminary step to create an overview of the system,
which can later be elaborated.[2] DFDs can also be used
for the visualization of data processing (structured de-
sign). File/Database
A DFD shows what kind of information will be input to
and output from the system, where the data will come
from and go to, and where the data will be stored. It does
not show information about the timing of process or infor-
mation about whether processes will operate in sequence
or in parallel (which is shown on a flowchart). Input/Output

16.1 History
Flow
Larry Constantine, the original developer of structured
design,[3] based on Martin and Estrin’s “Data Flow
Data flow diagram - Yourdon/DeMarco notation
Graph” model of computation.
Starting in the 1970s, data flow diagrams (DFD) became Data flow diagrams are also known as bubble charts.[5]
a popular way to visualize the major steps and data in- DFD is a designing tool used in the top-down approach
volved in software system processes. DFDs were usually to Systems Design. This context-level DFD is next “ex-
used to show data flow in a computer system, although ploded”, to produce a Level 1 DFD that shows some of
they could in theory be applied to business process mod- the detail of the system being modeled. The Level 1 DFD
eling. DFD were useful to document the major data flows shows how the system is divided into sub-systems (pro-
or to explore a new high-level design in terms of data cesses), each of which deals with one or more of the data
flow.[4] flows to or from an external agent, and which together

109
110 CHAPTER 16. DATA FLOW DIAGRAM

provide all of the functionality of the system as a whole. • Data island


It also identifies internal data stores that must be present
in order for the system to do its job, and shows the flow • Dataflow
of data between the various parts of the system. • Directed acyclic graph
Data flow diagrams are one of the three essential per-
• Functional flow block diagram
spectives of the structured-systems analysis and design
method SSADM. The sponsor of a project and the end • Function model
users will need to be briefed and consulted throughout all
stages of a system’s evolution. With a data flow diagram, • IDEF0
users are able to visualize how the system will operate, • Logical Data Flow
what the system will accomplish, and how the system will
be implemented. The old system’s dataflow diagrams can • Pipeline
be drawn up and compared with the new system’s data
flow diagrams to draw comparisons to implement a more • Structured Analysis and Design Technique
efficient system. Data flow diagrams can be used to pro- • Structure chart
vide the end user with a physical idea of where the data
they input ultimately has an effect upon the structure of • System context diagram
the whole system from order to dispatch to report. How
• Value stream mapping
any system is developed can be determined through a data
flow diagram model. • Workflow
In the course of developing a set of levelled data flow di-
agrams the analyst/designer is forced to address how the
system may be decomposed into component sub-systems, 16.4 References
and to identify the transaction data in the data model.
[1] John Azzolini (2000). Introduction to Systems Engineer-
Data flow diagrams can be used in both Analysis and De-
ing Practices. July 2001.
sign phase of the SDLC.
There are different notations to draw data flow diagrams [2] Bruza, P. D., Van der Weide, Th. P., “The Semantics of
Data Flow Diagrams”, University of Nijmegen, 1993.
(Yourdon & Coad and Gane & Sarson[6] ), defining differ-
ent visual representations for processes, data stores, data [3] W. Stevens, G. Myers, L. Constantine, “Structured De-
flow, and external entities.[7] sign”, IBM Systems Journal, 13 (2), 115-139, 1974.

[4] Craig Larman, “Applying UML and Patterns”, Pearson


Education, ISBN 978-81-7758-979-5
16.2.1 Physical DFD
[5] Introduced by Clive Finkelstein in Australia, CACI in the
A physical DFD shows how the system is actually imple- UK, and later writers such as James Martin
mented, either at the moment (Current Physical DFD), or
[6] Chris Gane and Trish Sarson. Structured Systems Analy-
how the designer intends it to be in the future (Required
sis: Tools and Techniques. McDonnell Douglas Systems
Physical DFD). Thus, a Physical DFD may be used to
Integration Company, 1977
describe the set of data items that appear on each piece
of paper that move around an office, and the fact that a [7] How to draw Data Flow Diagrams
particular set of pieces of paper are stored together in a
filing cabinet. It is quite possible that a Physical DFD
will include references to data that are duplicated, or re- 16.5 Further reading
dundant, and that the data stores, if implemented as a set
of database tables, would constitute an un-normalised (or • Scott W. Ambler. The Object Primer 3rd Edition
de-normalised) relational database. In contrast, a Logical Agile Model Driven Development with UML 2
DFD attempts to capture the data flow aspects of a system
in a form that has neither redundancy nor duplication.
16.6 External links
16.3 See also • DFD Template in Visio

• Activity diagram • Yourdon/DeMarco and Gane & Sarson DFDs

• Business Process Model and Notation • Case study "Current physical dataflow diagram for
Acme Fashion Supplies" ..and accompanying ele-
• Control flow diagram mentary process descriptions
16.6. EXTERNAL LINKS 111

• "Yourdon’s chapter on DFDs"

• Example of using presentation "DataFlow Power-


Point Diagram"
Chapter 17

Data structure

17.1 Overview
hash
keys function buckets Data structures are generally based on the ability of a
00 computer to fetch and store data at any place in its mem-
01 521-8976 ory, specified by a pointer—a bit string, representing a
John Smith memory address, that can be itself stored in memory and
02 521-1234
03
manipulated by the program. Thus, the array and record
Lisa Smith data structures are based on computing the addresses of
: :
data items with arithmetic operations; while the linked
13
Sandra Dee data structures are based on storing addresses of data
14 521-9655 items within the structure itself. Many data structures use
15 both principles, sometimes combined in non-trivial ways
(as in XOR linking).
A hash table. The implementation of a data structure usually requires
writing a set of procedures that create and manipulate in-
stances of that structure. The efficiency of a data struc-
ture cannot be analyzed separately from those operations.
This observation motivates the theoretical concept of an
abstract data type, a data structure that is defined indi-
Not to be confused with data type. rectly by the operations that may be performed on it, and
the mathematical properties of those operations (includ-
In computer science, a data structure is a particular ing their space and time cost).
way of organizing data in a computer so that it can be
used efficiently.[1][2] Data structures can implement one
or more particular abstract data types (ADT), which spec- 17.2 Examples
ify the operations that can be performed on a data struc-
ture and the computional complexity of those operations.
Main article: List of data structures
In comparison, a data structure is a concrete implemen-
tation of the specification provided by an ADT.
There are numerous types of data structures, generally
Different kinds of data structures are suited to differ-
built upon simpler primitive data types:
ent kinds of applications, and some are highly special-
ized to specific tasks. For example, relational databases
commonly use B-tree indexes for data retrieval,[3] while • An array is a number of elements in a specific order,
compiler implementations usually use hash tables to look typically all of the same type. Elements are accessed
up identifiers. using an integer index to specify which element is
required (Depending on the language, individual el-
Data structures provide a means to manage large amounts ements may either all be forced to be the same type,
of data efficiently for uses such as large databases and or may be of almost any type). Typical implementa-
internet indexing services. Usually, efficient data struc- tions allocate contiguous memory words for the ele-
tures are key to designing efficient algorithms. Some for- ments of arrays (but this is not always a necessity).
mal design methods and programming languages empha- Arrays may be fixed-length or resizable.
size data structures, rather than algorithms, as the key or-
ganizing factor in software design. Data structures can be • A linked list (also just called list) is a linear collection
used to organize the storage and retrieval of information of data elements of any type, called nodes, where
stored in both main memory and secondary memory. each node has itself a value, and points to the next

112
17.4. SEE ALSO 113

node in the linked list. The principal advantage of a such as C++, Java and Smalltalk may use classes for this
linked list over an array, is that values can always be purpose.
efficiently inserted and removed without relocating Many known data structures have concurrent versions that
the rest of the list. Certain other operations, such allow multiple computing threads to access the data struc-
as random access to a certain element, are however ture simultaneously.
slower on lists than on arrays.

• A record (also called tuple or struct) is an aggregate


data structure. A record is a value that contains other 17.4 See also
values, typically in fixed number and sequence and
typically indexed by names. The elements of records • Abstract data type
are usually called fields or members.
• Concurrent data structure
• A union is a data structure that specifies which of a
number of permitted primitive types may be stored • Data model
in its instances, e.g. float or long integer. Contrast
with a record, which could be defined to contain a • Dynamization
float and an integer; whereas in a union, there is only
• Linked data structure
one value at a time. Enough space is allocated to
contain the widest member datatype. • List of data structures
• A tagged union (also called variant, variant record, • Persistent data structure
discriminated union, or disjoint union) contains an
additional field indicating its current type, for en- • Plain old data structure
hanced type safety.

• A class is a data structure that contains data fields,


like a record, as well as various methods which op-
17.5 References
erate on the contents of the record. In the context
of object-oriented programming, records are known [1] Paul E. Black (ed.), entry for data structure in Dictionary
of Algorithms and Data Structures. U.S. National Institute
as plain old data structures to distinguish them from
of Standards and Technology. 15 December 2004. Online
classes. version Accessed May 21, 2009.

[2] Entry data structure in the Encyclopædia Britannica


17.3 Language support (2009) Online entry accessed on May 21, 2009.

[3] Gavin Powell (2006). “Chapter 8: Building Fast-


Most assembly languages and some low-level languages, Performing Database Models”. Beginning Database De-
such as BCPL (Basic Combined Programming Lan- sign ISBN 978-0-7645-7490-0. Wrox Publishing.
guage), lack built-in support for data structures. On the
[4] “The GNU C Manual”. Free Software Foundation. Re-
other hand, many high-level programming languages and
trieved 15 October 2014.
some higher-level assembly languages, such as MASM,
have special syntax or other built-in support for cer- [5] “Free Pascal: Reference Guide”. Free Pascal. Retrieved
tain data structures, such as records and arrays. For 15 October 2014.
example, the C and Pascal languages support structs
and records, respectively, in addition to vectors (one-
dimensional arrays) and multi-dimensional arrays.[4][5] 17.6 Further reading
Most programming languages feature some sort of library
mechanism that allows data structure implementations to • Peter Brass, Advanced Data Structures, Cambridge
be reused by different programs. Modern languages usu- University Press, 2008.
ally come with standard libraries that implement the most
common data structures. Examples are the C++ Standard • Donald Knuth, The Art of Computer Programming,
Template Library, the Java Collections Framework, and vol. 1. Addison-Wesley, 3rd edition, 1997.
Microsoft's .NET Framework.
• Dinesh Mehta and Sartaj Sahni Handbook of
Modern languages also generally support modular pro- Data Structures and Applications, Chapman and
gramming, the separation between the interface of a li- Hall/CRC Press, 2007.
brary module and its implementation. Some provide
opaque data types that allow clients to hide implemen- • Niklaus Wirth, Algorithms and Data Structures,
tation details. Object-oriented programming languages, Prentice Hall, 1985.
114 CHAPTER 17. DATA STRUCTURE

17.7 External links


• course on data structures

• Data structures Programs Examples in c,java


• UC Berkeley video course on data structures

• Descriptions from the Dictionary of Algorithms and


Data Structures
• Data structures course

• An Examination of Data Structures from .NET per-


spective

• Schaffer, C. Data Structures and Algorithm Analysis


Chapter 18

De facto standard

A de facto standard is a custom, convention, product, music distribution, then replaced it — it is now
or system that has achieved a dominant position by pub- supported by the vast majority of music play-
lic acceptance or market forces (such as early entrance to ers, audio transport, audio storage and non-
the market). De facto is a Latin phrase that means in fact commercial media. WAV and MP3 are also
(literally by or from fact) in the sense of “in practice but "de jure ISO formats”.
not necessarily ordained by law” or “in practice or actual-
ity, but not officially established”, as opposed to de jure. • with consolidation by uniqueness and efficiency:

The term de facto standard is used in contrast with oblig- • HTML (computer file format) started as "de
atory standards (also known as "de jure standards”); or to facto" (1993-1995) and became the "de jure"
express the dominant voluntary standard, when there is standard (1995–present day).
more than one standard available for the same use. • PDF (computer file format) was first created
In social sciences, a voluntary standard that is also a de in 1993 by Adobe. Adobe internal standards
facto standard is a typical solution to a coordination prob- were part of its software quality systems, but
lem.[1] The choice of a de facto standard tends to be stable they were neither published nor coordinated by
in situations in which all parties can realize mutual gains, a standards body. With the Acrobat Reader
but only by making mutually consistent decisions. In con- program available for free, and continued sup-
trast, an enforced "de jure standard” is a solution to the port of the format, PDF eventually became the
prisoner’s problem.[1] de facto standard for printable documents. In
2005, PDF/A became a de jure standard as
ISO 19005-1:2005.[3] In 2008 Adobe’s PDF
1.7 became ISO 32000-1:2008.[4][5]
18.1 Examples
Examples of long-time de facto but never de jure stan-
A selection of well-known and illustrative examples of de dards (for computer file formats):
facto and de jure standards are:
• AutoCAD DXF: a de facto ASCII format for import
• with consolidation by tradition of use: and export of CAD drawings and fragments in the
1980s and 1990s. In the 2000s, XML based stan-
• The driver’s seat side in a given country starts dards emerged as de facto standards.
as a user/industry preference, turning to a local
tradition, then a traffic code local norm. • Microsoft Word DOC (over all other old PC word
processors): one of the best known de facto stan-
• The QWERTY system was one of several op-
dards. Due to the market dominance of Word, it
tions for the layout of letters on typewriter (and
is supported by all office applications that intend to
later keyboard) keys. It was developed to pre-
compete with it, typically by reverse engineering the
vent adjacent keys from jamming on early and
undocumented file format. Microsoft has repeatedly
later mechanical typewriters, often attributed
internally changed the file specification between ver-
to the typist’s speed.[2] It became a de facto
sions of Word to suit their own needs, while contin-
standard because it was used on the most com-
uing to reuse the same file extension identifier for
mercially successful early typewriters.
different versions.
• The ASCII text character set, standardized in
1963 is still in use. Document files containing Other examples:
ASCII usually have the TXT extension.
• The MP3 audio format started as an alterna- • Most American-made spark plugs require a 13/16-
tive to CD WAV (lossless format) for Internet inch socket to remove or install.

115
116 CHAPTER 18. DE FACTO STANDARD

• The 1/2-inch (12.7 mm) spacing of the rollers in a 18.3 See also
bicycle chain.
• Dominant design
• The IBM Personal Computer (PC). By one year
after its 1981 release, John Dvorak described • Free market
the PC as rapidly becoming a “de facto stan- • Format war
dard microcomputer”.[6] With the MS-DOS and
Microsoft Windows operating systems, it gained a • Monopoly
large share of the personal computer market. Be-
cause of the great influence of the IBM PC on the • Real versus nominal value
personal computer market, competing products like
the Rainbow 100 were eventually withdrawn.
18.4 References
• Interpreted programming languages such as PHP
that have multiple implementations tend to also have [1] Ullmann-Margalit, Edna (1977). The Emergence of
a de facto standard. In PHP’s case the de facto stan- Norms. Oxford: Clarendon Press. ISBN 0-19-824411-
dard is the binaries available from php.net, rather 8.
than the Phalanger implementation for example. [2] QWERTY

[3] “ISO 19005-1:2005 - Document management -- Elec-


tronic document file format for long-term preservation --
18.2 Standards battles Part 1: Use of PDF 1.4 (PDF/A-1)". Retrieved 17 April
2015.
There are many examples of de facto consolidation (of [4] “ISO 32000-1:2008 - Document management -- Portable
a standard) by market forces and competition, in a two- document format -- Part 1: PDF 1.7”. Retrieved 17 April
sided market, after a dispute. Examples: 2015.

[5] “Adobe - Release PDF for Industry Standardization


• Alternating current over direct current: see War of FAQ”. Retrieved 17 April 2015.
Currents.
[6] Zussman, John Unger (1982-08-23). “Let’s keep those
systems open”. InfoWorld. p. 29. Retrieved 29 January
• VHS over Betamax (see videotape format war): 2015.
when the VHS format for videotape recording was
introduced, other recording formats were already
available in the market. Regardless of whether Be-
tamax was superior from a technical point of view
or not, the VHS format won the format war due to
superior marketing tactics by its proponents. The
market could not support two competing formats;
VHS became the de facto standard and Betamax was
eventually withdrawn.

• Blu-ray Disc over HD DVD (see high definition op-


tical disc format war).

Examples of standards that are “in dispute” for turns de


facto:

• OASIS's OpenDocument format (a de facto


standard for UNIX users (Apache OpenOffice,
LibreOffice, Calligra, KOffice et al. use it as
default file format)) vs Microsoft’s Office Open
XML format (a de facto standard for MS-Windows
users).

• Adobe Flash vs Scalable Vector Graphics (SVG), for


vector graphics web page animations.
Chapter 19

Distributed Component Object Model

“Dcom” redirects here. For the doctoral degree, see won out over both of them. Microsoft, at one point, at-
Doctor of Commerce. For other uses, see DCOM tempted and failed to head this off by adding an extra http
(disambiguation). transport to DCE/RPC called ncacn_http (Network Com-
puting Architecture connection-oriented protocol). This
Distributed Component Object Model (DCOM) is was later resurrected to support a Microsoft Exchange
2003 connection over HTTP.
a proprietary Microsoft technology for communica-
tion among software components distributed across net- DCOM is supported natively in Windows NT 4.0, Win-
worked computers. DCOM, which originally was called dows 2000, Windows XP, and Windows Server 2003, as
“Network OLE", extends Microsoft's COM, and provides well as Windows 7, Windows 8, Windows 10, Windows
the communication substrate under Microsoft's COM+ Server 2008, Windows Server 2008 R2, Windows Server
application server infrastructure. 2012, Windows Server 2012 R2 and the Windows Server
The addition of the “D” to COM was due to exten- 2016 Technical Preview.
sive use of DCE/RPC (Distributed Computing Environ-
ment/Remote Procedure Calls) – more specifically Mi-
crosoft’s enhanced version, known as MSRPC. 19.1 Hardening
In terms of the extensions it added to COM, DCOM had
to solve the problems of As part of the initiative that began at Microsoft as part
of Secure Development Lifecycle to re-architect inse-
cure code, DCOM saw some significant security-focused
• Marshalling – serializing and deserializing the argu-
changes in Windows XP Service Pack 2.[1]
ments and return values of method calls “over the
wire”.
• Distributed garbage collection – ensuring that refer- 19.2 Alternative versions and im-
ences held by clients of interfaces are released when,
for example, the client process crashed, or the net- plementations
work connection was lost.
COMsource: Its source code is available, along with full
• It had to combine Hundreds/Tens of Thousands of and complete documentation, sufficient to use and also
objects held in the client’s browser with a single implement an interoperable version of DCOM. Accord-
transmission in order to minimize bandwidth utiliza- ing to that documentation, COMsource comes directly
tion. from the Windows NT 4.0 source code, and even includes
the source code for a Windows NT Registry Service.
One of the key factors in solving these problems is the
use of DCE/RPC as the underlying RPC mechanism be- The Wine Team is also implementing DCOM for binary
hind DCOM. DCE/RPC has strictly defined rules regard- interoperability purposes; they are not currently inter-
ing marshalling and who is responsible for freeing mem- ested in the networking side of DCOM, which is provided
ory. by MSRPC. They are restricted to implementing NDR
(Network Data Representation) through Microsoft’s API,
DCOM was a major competitor to CORBA. Proponents but are committed to making it as compatible as possible
of both of these technologies saw them as one day be- with MSRPC.
coming the model for code and service-reuse over the
Internet. However, the difficulties involved in getting ei- TangramCOM is a separate project from Wine, fo-
ther of these technologies to work over Internet firewalls, cusing on implementing DCOM on Linux-based smart-
and on unknown and insecure machines, meant that nor- phones.
mal HTTP requests in combination with web browsers The Samba Team is also implementing DCOM for

117
118 CHAPTER 19. DISTRIBUTED COMPONENT OBJECT MODEL

over-the-wire interoperability purposes: unlike the Wine


Team, they are not currently interested in binary-
interoperability, as the Samba MSRPC implementation is
far from binary-interoperable with Microsoft’s MSRPC.

19.3 See also


• ActiveX

• Component Object Model

• Dynamic Data Exchange (DDE)


• .NET Remoting

• OLE for Process Control

19.4 References
[1] DCOM Security Enhancements

19.5 External links


• DCOM Remote Protocol Specification

• The Open Groups COMsource


• COMsource

• TangramCOM
• EntireX DCOM
Chapter 20

Duplex (telecommunications)

A duplex communication system is a point-to-point sys- 20.1 Half-duplex


tem composed of two connected parties or devices that
can communicate with one another in both directions.
“Duplex” comes from "duo" that means “double”, and
"plex" that means “structure” or “parts of"; thus, a du-
plex system has two clearly defined data transmissions,
with each path carrying information in only one direc-
tion: A to B over one path, and B to A over the other.
There are two types of duplex communication systems:
full-Duplex and half-Duplex.
In a full duplex system, both parties can communicate
with each other simultaneously. An example of a full-
duplex device is a telephone; the parties at both ends of a
call can speak and be heard by the other party simultane-
ously. The earphone reproduces the speech of the remote
party as the microphone transmits the speech of the local
A simple illustration of a half-duplex communication system
party, because there is a two-way communication channel
between them, or more strictly speaking, because there
are two communication paths/channels between them. A half-duplex (HDX) system provides communication in
both directions, but only one direction at a time (not si-
In a half-duplex system, there are still two clearly defined multaneously). Typically, once a party begins receiving
paths/channels, and each party can communicate with the a signal, it must wait for the transmitter to stop transmit-
other but not simultaneously; the communication is one ting, before replying.
direction at a time. An example of a half-duplex device
is a walkie-talkie two-way radio that has a "push-to-talk" An example of a half-duplex system is a two-party system
button; when the local user wants to speak to the remote such as a walkie-talkie, wherein one must use “over” or
person they push this button, which turns on the trans- another previously designated keyword to indicate the end
mitter but turns off the receiver, so they cannot hear the of transmission, and ensure that only one party transmits
remote person. To listen to the other person they release at a time, because both parties transmit and receive on
the button, which turns on the receiver but turns off the the same frequency. A good analogy for a half-duplex
transmitter. system would be a one-lane road with traffic controllers at
each end, such as a two-lane bridge under re-construction.
Duplex systems are employed in many communications Traffic can flow in both directions, but only one direction
networks, either to allow for a communication “two-way at a time, regulated by the traffic controllers.
street” between two connected parties or to provide a “re-
verse path” for the monitoring and remote adjustment of Half-duplex systems are usually used to conserve
equipment in the field. bandwidth, since only a single communication channel
is needed, which is shared alternately between the two
Systems that do not need the duplex capability may in- directions. For example, a walkie-talkie requires only a
stead use simplex communication, in which one device single frequency for bidirectional communication, while
transmits and the others can only “listen”. Examples are a cell phone, which is a full-duplex device, requires two
broadcast radio and television, garage door openers, baby frequencies to carry the two simultaneous voice channels,
monitors, wireless microphones, and surveillance cam- one in each direction.
eras. In these devices the communication is only in one
direction. In automatically run communications systems, such as
two-way data-links, the time allocations for communica-
tions in a half-duplex system can be firmly controlled by

119
120 CHAPTER 20. DUPLEX (TELECOMMUNICATIONS)

the hardware. Thus, there is no waste of the channel for capacity is available in both directions because the send
switching. For example, station A on one end of the data and receive functions are separate. Third, since there is
link could be allowed to transmit for exactly one second, only one transmitter on each twisted pair, stations (nodes)
then station B on the other end could be allowed to trans- do not need to wait for others to complete their transmis-
mit for exactly one second, and then the cycle repeats. sions.
In half-duplex systems, if more than one party transmits Some computer-based systems of the 1960s and 1970s
at the same time, a collision occurs, resulting in lost mes- required full-duplex facilities, even for half-duplex opera-
sages. tion, since their poll-and-response schemes could not tol-
erate the slight delays in reversing the direction of trans-
mission in a half-duplex line.
20.2 Full-duplex
20.3 Full-duplex emulation
Where channel access methods are used in point-to-
multipoint networks (such as cellular networks) for divid-
ing forward and reverse communication channels on the
same physical communications medium, they are known
A simple illustration of a full-duplex communication system.
as duplexing methods, such as time-division duplexing and
Full-duplex is not common in handheld radios as shown here due frequency-division duplexing.
to the cost and complexity of common duplexing methods, but is
used in telephones, cellphones and cordless phones.
20.3.1 Time-division duplexing
A full-duplex (FDX) system, or sometimes called double-
duplex, allows communication in both directions, and, Time-division duplexing (TDD) is the application of time-
unlike half-duplex, allows this to happen simultaneously. division multiplexing to separate outward and return sig-
Land-line telephone networks are full-duplex, since they nals. It emulates full duplex communication over a half
allow both callers to speak and be heard at the same duplex communication link.
time, with the transition from four to two wires being Time-division duplexing has a strong advantage in the
achieved by a hybrid coil in a telephone hybrid. Modern case where there is asymmetry of the uplink and downlink
cell phones are also full-duplex.[1] data rates. As the amount of uplink data increases, more
A good analogy for a full-duplex system is a two-lane road communication capacity can be dynamically allocated,
with one lane for each direction. Moreover, in most full- and as the traffic load becomes lighter, capacity can be
duplex mode systems carrying computer data, transmit- taken away. The same applies in the downlink direction.
ted data does not appear to be sent until it has been re- For radio systems that aren't moving quickly, another ad-
ceived and an acknowledgment is sent back by the other vantage is that the uplink and downlink radio paths are
party; that way, such systems implement reliable trans- likely to be very similar. This means that techniques such
mission methods. as beamforming work well with TDD systems.
Two-way radios can be designed as full-duplex systems, Examples of time-division duplexing systems are:
transmitting on one frequency and receiving on another;
this is also called frequency-division duplex. Frequency-
• UMTS 3G supplementary air interfaces TD-CDMA
division duplex systems can extend their range by using
for indoor mobile telecommunications.
sets of simple repeater stations because the communica-
tions transmitted on any single frequency always travel in • The Chinese TD-LTE 4-G, TD-SCDMA 3-G mo-
the same direction. bile communications air interface.
Full-duplex Ethernet connections work by making simul- • DECT wireless telephony
taneous use of two physical twisted pairs inside the same
jacket, which are directly connected to each networked • Half-duplex packet switched networks based on
device: one pair is for receiving packets, while the other carrier sense multiple access, for example 2-wire or
pair is for sending packets. This effectively makes the hubbed Ethernet, Wireless local area networks and
cable itself a collision-free environment and doubles the Bluetooth, can be considered as time-division du-
maximum total transmission capacity supported by each plexing systems, albeit not TDMA with fixed frame-
Ethernet connection. lengths.
Full-duplex has also several benefits over the use of half- • IEEE 802.16 WiMAX
duplex. First, there are no collisions so time is not wasted
by having to retransmit frames. Second, full transmission • PACTOR
20.4. SEE ALSO 121

• ISDN BRI U interface, variants using the time- sound coming out of the speaker, originating from the
compression multiplex (TCM) line system far end, re-enters the microphone and is sent back to the
far end. The sound then reappears at the original source
• G.fast, a digital subscriber line (DSL) standard un- end, but delayed. This feedback path may be acoustic,
der development by the ITU-T through the air, or it may be mechanically coupled, for
example in a telephone handset. Echo cancellation is a
signal-processing operation that subtracts the far-end sig-
20.3.2 Frequency-division duplexing
nal from the microphone signal before it is sent back over
the network.
Frequency-division duplexing (FDD) means that the
transmitter and receiver operate at different carrier fre- Echo cancellation is important to the V.32, V.34, V.56,
quencies. The term is frequently used in ham radio opera- and V.90 modem standards.[2]
tion, where an operator is attempting to contact a repeater Echo cancelers are available as both software and hard-
station. The station must be able to send and receive a ware implementations. They can be independent compo-
transmission at the same time, and does so by slightly al- nents in a communications system or integrated into the
tering the frequency at which it sends and receives. This communication system’s central processing unit. Devices
mode of operation is referred to as duplex mode or offset that do not eliminate echo sometimes will not produce
mode. good full-duplex performance.
Uplink and downlink sub-bands are said to be separated
by the frequency offset. Frequency-division duplexing
can be efficient in the case of symmetric traffic. In this 20.4 See also
case time-division duplexing tends to waste bandwidth
during the switch-over from transmitting to receiving, has • Duplex mismatch
greater inherent latency, and may require more complex
circuitry. • Four-wire circuit
Another advantage of frequency-division duplexing is • Multiplexing
that it makes radio planning easier and more efficient,
since base stations do not “hear” each other (as they trans- • Duplexer
mit and receive in different sub-bands) and therefore will
normally not interfere with each other. On the converse, • Communications channel
with time-division duplexing systems, care must be taken • Crossband operation
to keep guard times between neighboring base stations
(which decreases spectral efficiency) or to synchronize • Push to talk
base stations, so that they will transmit and receive at
the same time (which increases network complexity and • Simplex communication
therefore cost, and reduces bandwidth allocation flexibil- • Radio resource management
ity as all base stations and sectors will be forced to use
the same uplink/downlink ratio)
Examples of frequency-division duplexing systems are: 20.5 References
• ADSL and VDSL [1] “Cell phone Frequencies”. HowStuffWorks.

• Most cellular systems, including the [2] Greenstein, Shane; Stango, Victor (2006). Standards and
UMTS/WCDMA use frequency-division duplexing Public Policy. Cambridge University Press. pp. 129–132.
mode and the cdma2000 system. ISBN 978-1-139-46075-0.

• IEEE 802.16 WiMax also uses frequency-division


duplexing mode. 20.6 Further reading

20.3.3 Echo cancellation • Tanenbaum, Andrew S. (2003). Computer Net-


works. Prentice Hall. ISBN 0-13-038488-7.
Main article: Echo cancellation
See also: Modem § Using digital lines and PCM
(V.90/92)

Full-duplex audio systems like telephones can create


echo, which needs to be removed. Echo occurs when the
Chapter 21

Dynamic Data Exchange

In computing, Dynamic Data Exchange (DDE) is a was established by a simple, three-segment model. Each
method of interprocess communication under Microsoft program was known to DDE by its “application” name.
Windows or OS/2. It allows one program to subscribe Each application could further organize information by
to items made available by another program, for example groups known as “topic” and each topic could serve up
a cell in a Microsoft Excel spreadsheet, and be notified individual pieces of data as an “item”. For example, if a
whenever that item changes. DDE was partially super- user wanted to pull a value from Microsoft Excel which
seded by Object Linking and Embedding (OLE), but re- was contained in a spreadsheet called “Book1.xls” in the
mains used for simple interprocess communication tasks. cell in the first row and first column, the application would
be “Excel”, the topic “Book1.xls” and the item “r1c1”.
A common use of DDE is for custom-developed appli-
21.1 History cations to control off-the-shelf software. For example,
a custom in-house application might use DDE to open a
Microsoft Excel spreadsheet and fill it with data, by open-
Dynamic Data Exchange was first introduced in 1987
ing a DDE conversation with Excel and sending it DDE
with the release of Windows 2.0 as a method of
commands. Today, however, one could also use the Excel
interprocess communication so that one program could
object model with OLE Automation (part of COM). The
communicate with or control another program, somewhat
technique is, however, still in use, particularly for distri-
like Sun’s RPC (Remote Procedure Call).[1] It used the
bution of financial data.[2] DDE has also been widely used
“Windows Messaging Layer” functionality within Win-
in the SAS programming language for manipulating Ex-
dows. DDE continues to work even in modern versions
cel and transferring data between SAS and Excel and can
of Windows, but has been superseded by newer technolo-
be used to format Excel workbooks from within a SAS
gies. Windows for Workgroups introduced a remoting
program.
version called NetDDE.
OLE and OLE Automation are more advanced than
DDE, but have proven to be bulky and difficult to code.
OLE is far more sophisticated and capable than DDE be- 21.3 NetDDE
cause it is built on top of Microsoft’s Component Object
Model, but also suffers from COM’s problems of a higher California-based company Wonderware (acquired by
performance penalty and a much steeper learning curve. French company Schneider Electric from Invensys Plc
COM that works between networked machines is known in January 2014) developed an extension for DDE called
as DCOM (Distributed COM). .NET Remoting provides NetDDE that could be used to initiate and maintain the
a layered architecture for interprocess communication in network connections needed for DDE conversations be-
the .NET Framework. However, legacy DDE is still used tween DDE-aware applications running on different com-
in several places inside Windows, e.g. for Shell file asso- puters in a network and transparently exchange data. A
ciations and for the copy, cut and paste functions. DDE conversation is an interaction between client and
server applications. NetDDE could be used along with
DDE and the DDE management library (DDEML) in ap-
plications.
21.2 Overview
/Windows/SYSTEM32 DDESHARE.EXE (DDE Share
The primary function of DDE is to allow Windows appli- Manager) NDDEAPIR.EXE (NDDEAPI Server Side)
cations to share data. For example, a cell in Microsoft Ex- NDDENB32.DLL (Network DDE NetBIOS Interface)
cel could be linked to a value in another application and NETDDE.EXE (Network DDE - DDE Communication)
when the value changed, it would be automatically up- Microsoft licensed a basic (NetBIOS Frames protocol
dated in the Excel spreadsheet. The data communication only) version of the product for inclusion in various ver-

122
21.7. EXTERNAL LINKS 123

sions of Windows from Windows for Workgroups to


Windows XP. In addition, Wonderware also sold an en-
hanced version of NetDDE to their own customers that
included support for TCP/IP. The technology is exten-
sively used in the SCADA field. Basic Windows applica-
tions using NetDDE are Clipbook Viewer, WinChat and
Microsoft Hearts.
NetDDE was still included with Windows Server 2003
and Windows XP Service Pack 2, although it was disabled
by default. It has been removed entirely in Windows
Vista.[3] However, this will not prevent existing versions
of NetDDE from being installed and functioning on later
versions of Windows.

21.4 See also


• ActiveX

• Component Object Model (COM)


• Distributed Component Object Model (DCOM)

• Microsoft .NET
• Object Linking and Embedding (OLE)

• Observer pattern

21.5 Notes
[1] Net DDE to DOT NET Remoting 12 Jan, 2006

[2] Joel Spolsky - comment on Fog Creek Software discussion


forum

[3] NetDDE has been removed in Windows Vista.

21.6 References
• Charles Petzold. “Dynamic Data Exchange” in Pro-
gramming for Windows 95. Microsoft Press.

21.7 External links


• MSDN: About Dynamic Data Exchange (DDE)
• NetDDE

• Dynamic Data Exchange (DDE) and NetDDE FAQ


• Clojure Bindings for DDE, for use in Clojure or Java
Applications
Chapter 22

Error detection and correction

Not to be confused with error handling. data, and attaches a fixed number of check bits (or par-
ity data), which are derived from the data bits by some
deterministic algorithm. If only error detection is re-
In information theory and coding theory with applications
in computer science and telecommunication, error de- quired, a receiver can simply apply the same algorithm
tection and correction or error control are techniques to the received data bits and compare its output with the
that enable reliable delivery of digital data over unreliablereceived check bits; if the values do not match, an error
communication channels. Many communication chan- has occurred at some point during the transmission. In a
nels are subject to channel noise, and thus errors may be system that uses a non-systematic code, the original mes-
introduced during transmission from the source to a re- sage is transformed into an encoded message that has at
ceiver. Error detection techniques allow detecting such least as many bits as the original message.
errors, while error correction enables reconstruction of Good error control performance requires the scheme to
the original data in many cases. be selected based on the characteristics of the com-
munication channel. Common channel models include
memory-less models where errors occur randomly and
22.1 Definitions with a certain probability, and dynamic models where
errors occur primarily in bursts. Consequently, error-
detecting and correcting codes can be generally distin-
The general definitions of the terms are as follows:
guished between random-error-detecting/correcting and
burst-error-detecting/correcting. Some codes can also be
• Error detection is the detection of errors caused suitable for a mixture of random errors and burst errors.
by noise or other impairments during transmission
from the transmitter to the receiver. If the channel capacity cannot be determined, or is highly
variable, an error-detection scheme may be combined
• Error correction is the detection of errors and recon- with a system for retransmissions of erroneous data. This
struction of the original, error-free data. is known as automatic repeat request (ARQ), and is most
notably used in the Internet. An alternate approach for
error control is hybrid automatic repeat request (HARQ),
22.2 History which is a combination of ARQ and error-correction cod-
ing.
The modern development of error-correcting codes in
1947 is due to Richard W. Hamming.[1] A description of
Hamming’s code appeared in Claude Shannon's A Mathe- 22.4 Implementation
matical Theory of Communication[2] and was quickly gen-
eralized by Marcel J. E. Golay.[3] Error correction may generally be realized in two differ-
ent ways:

22.3 Introduction • Automatic repeat request (ARQ) (sometimes also re-


ferred to as backward error correction): This is an
The general idea for achieving error detection and cor- error control technique whereby an error detection
rection is to add some redundancy (i.e., some extra data) scheme is combined with requests for retransmis-
to a message, which receivers can use to check consis- sion of erroneous data. Every block of data received
tency of the delivered message, and to recover data de- is checked using the error detection code used, and
termined to be corrupted. Error-detection and correction if the check fails, retransmission of the data is re-
schemes can be either systematic or non-systematic: In quested – this may be done repeatedly, until the data
a systematic scheme, the transmitter sends the original can be verified.

124
22.5. ERROR DETECTION SCHEMES 125

• Forward error correction (FEC): The sender en- stations.[4][5]


codes the data using an error-correcting code (ECC)
prior to transmission. The additional information
(redundancy) added by the code is used by the re- 22.5.2 Parity bits
ceiver to recover the original data. In general, the re-
constructed data is what is deemed the “most likely” Main article: Parity bit
original data.
A parity bit is a bit that is added to a group of source
ARQ and FEC may be combined, such that minor er- bits to ensure that the number of set bits (i.e., bits with
rors are corrected without retransmission, and major er- value 1) in the outcome is even or odd. It is a very sim-
rors are corrected via a request for retransmission: this is ple scheme that can be used to detect single or any other
called hybrid automatic repeat-request (HARQ). odd number (i.e., three, five, etc.) of errors in the output.
An even number of flipped bits will make the parity bit
appear correct even though the data is erroneous.
22.5 Error detection schemes Extensions and variations on the parity bit mechanism
are horizontal redundancy checks, vertical redundancy
Error detection is most commonly realized using a suit- checks, and “double,” “dual,” or “diagonal” parity (used
able hash function (or checksum algorithm). A hash func- in RAID-DP).
tion adds a fixed-length tag to a message, which enables
receivers to verify the delivered message by recomputing
the tag and comparing it with the one provided. 22.5.3 Checksums
There exists a vast variety of different hash function de- Main article: Checksum
signs. However, some are of particularly widespread use
because of either their simplicity or their suitability for
detecting certain kinds of errors (e.g., the cyclic redun- A checksum of a message is a modular arithmetic sum
dancy check's performance in detecting burst errors). of message code words of a fixed word length (e.g., byte
values). The sum may be negated by means of a ones’-
A random-error-correcting code based on minimum dis- complement operation prior to transmission to detect er-
tance coding can provide a strict guarantee on the num- rors resulting in all-zero messages.
ber of detectable errors, but it may not protect against
a preimage attack. A repetition code, described in the Checksum schemes include parity bits, check digits,
section below, is a special case of error-correcting code: and longitudinal redundancy checks. Some checksum
although rather inefficient, a repetition code is suitable in schemes, such as the Damm algorithm, the Luhn algo-
some applications of error correction and detection due rithm, and the Verhoeff algorithm, are specifically de-
to its simplicity. signed to detect errors commonly introduced by humans
in writing down or remembering identification numbers.

22.5.1 Repetition codes


22.5.4 Cyclic redundancy checks (CRCs)
Main article: Repetition code
Main article: Cyclic redundancy check

A repetition code is a coding scheme that repeats the bits


A cyclic redundancy check (CRC) is a non-secure hash
across a channel to achieve error-free communication.
Given a stream of data to be transmitted, the data are di- function designed to detect accidental changes to digital
vided into blocks of bits. Each block is transmitted some data in computer networks; as a result, it is not suitable
predetermined number of times. For example, to send for detecting maliciously introduced errors. It is char-
the bit pattern “1011”, the four-bit block can be repeated acterized by specification of what is called a generator
three times, thus producing “1011 1011 1011”. How- polynomial, which is used as the divisor in a polynomial
ever, if this twelve-bit pattern was received as “1010 1011 long division over a finite field, taking the input data as
1011” – where the first block is unlike the other two – it the dividend, such that the remainder becomes the result.
can be determined that an error has occurred. A cyclic code has favorable properties that make it well
A repetition code is very inefficient, and can be suscep- suited for detecting burst errors. CRCs are particularly
tible to problems if the error occurs in exactly the same easy to implement in hardware, and are therefore com-
place for each group (e.g., “1010 1010 1010” in the pre- monly used in digital networks and storage devices such
vious example would be detected as correct). The advan- as hard disk drives.
tage of repetition codes is that they are extremely simple, Even parity is a special case of a cyclic redundancy check,
and are in fact used in some transmissions of numbers where the single-bit CRC is generated by the divisor x +
126 CHAPTER 22. ERROR DETECTION AND CORRECTION

1. or the error persists beyond a predetermined number of


retransmissions.
Three types of ARQ protocols are Stop-and-wait ARQ,
22.5.5 Cryptographic hash functions
Go-Back-N ARQ, and Selective Repeat ARQ.
Main article: Cryptographic hash function ARQ is appropriate if the communication channel has
varying or unknown capacity, such as is the case on
the Internet. However, ARQ requires the availability
The output of a cryptographic hash function, also known
of a back channel, results in possibly increased latency
as a message digest, can provide strong assurances about
due to retransmissions, and requires the maintenance of
data integrity, whether changes of the data are acciden-
buffers and timers for retransmissions, which in the case
tal (e.g., due to transmission errors) or maliciously intro-
of network congestion can put a strain on the server and
duced. Any modification to the data will likely be de-
overall network capacity.[6]
tected through a mismatching hash value. Furthermore,
given some hash value, it is infeasible to find some input For example, ARQ is used on shortwave radio data links
data (other than the one given) that will yield the same in the form of ARQ-E, or combined with multiplexing as
hash value. If an attacker can change not only the mes- ARQ-M.
sage but also the hash value, then a keyed hash or message
authentication code (MAC) can be used for additional se-
curity. Without knowing the key, it is infeasible for the 22.6.2 Error-correcting code
attacker to calculate the correct keyed hash value for a
modified message. An error-correcting code (ECC) or forward error correc-
tion (FEC) code is a process of adding redundant data,
or parity data, to a message, such that it can be recov-
22.5.6 Error-correcting codes ered by a receiver even when a number of errors (up to
the capability of the code being used) were introduced,
Main article: Forward error correction either during the process of transmission, or on storage.
Since the receiver does not have to ask the sender for re-
transmission of the data, a backchannel is not required
Any error-correcting code can be used for error detection. in forward error correction, and it is therefore suitable
A code with minimum Hamming distance, d, can detect up for simplex communication such as broadcasting. Error-
to d − 1 errors in a code word. Using minimum-distance- correcting codes are frequently used in lower-layer com-
based error-correcting codes for error detection can be munication, as well as for reliable storage in media such
suitable if a strict limit on the minimum number of errors as CDs, DVDs, hard disks, and RAM.
to be detected is desired.
Error-correcting codes are usually distinguished between
Codes with minimum Hamming distance d = 2 are de- convolutional codes and block codes:
generate cases of error-correcting codes, and can be used
to detect single errors. The parity bit is an example of a • Convolutional codes are processed on a bit-by-bit
single-error-detecting code. basis. They are particularly suitable for implemen-
tation in hardware, and the Viterbi decoder allows
optimal decoding.
22.6 Error correction • Block codes are processed on a block-by-block basis.
Early examples of block codes are repetition codes,
22.6.1 Automatic repeat request (ARQ) Hamming codes and multidimensional parity-check
codes. They were followed by a number of effi-
Main article: Automatic repeat request cient codes, Reed–Solomon codes being the most
notable due to their current widespread use. Turbo
codes and low-density parity-check codes (LDPC)
Automatic Repeat reQuest (ARQ) is an error control
are relatively new constructions that can provide al-
method for data transmission that makes use of error-
most optimal efficiency.
detection codes, acknowledgment and/or negative ac-
knowledgment messages, and timeouts to achieve reliable Shannon’s theorem is an important theorem in forward
data transmission. An acknowledgment is a message sent error correction, and describes the maximum information
by the receiver to indicate that it has correctly received a rate at which reliable communication is possible over a
data frame. channel that has a certain error probability or signal-to-
Usually, when the transmitter does not receive the ac- noise ratio (SNR). This strict upper limit is expressed in
knowledgment before the timeout occurs (i.e., within a terms of the channel capacity. More specifically, the the-
reasonable amount of time after sending the data frame), orem says that there exist codes such that with increas-
it retransmits the frame until it is either correctly received ing encoding length the probability of error on a discrete
22.7. APPLICATIONS 127

memoryless channel can be made arbitrarily small, pro- 22.7.1 Internet


vided that the code rate is smaller than the channel ca-
pacity. The code rate is defined as the fraction k/n of k In a typical TCP/IP stack, error control is performed at
source symbols and n encoded symbols. multiple levels:
The actual maximum code rate allowed depends on the
• Each Ethernet frame carries a CRC-32 checksum.
error-correcting code used, and may be lower. This is
Frames received with incorrect checksums are dis-
because Shannon’s proof was only of existential nature,
carded by the receiver hardware.
and did not show how to construct codes which are both
optimal and have efficient encoding and decoding algo- • The IPv4 header contains a checksum protecting the
rithms. contents of the header. Packets with mismatching
checksums are dropped within the network or at the
receiver.
22.6.3 Hybrid schemes
• The checksum was omitted from the IPv6 header in
Main article: Hybrid ARQ order to minimize processing costs in network rout-
ing and because current link layer technology is as-
sumed to provide sufficient error detection (see also
Hybrid ARQ is a combination of ARQ and forward error RFC 3819).
correction. There are two basic approaches:[6]
• UDP has an optional checksum covering the payload
and addressing information from the UDP and IP
• Messages are always transmitted with FEC parity
headers. Packets with incorrect checksums are dis-
data (and error-detection redundancy). A receiver
carded by the operating system network stack. The
decodes a message using the parity information, and
checksum is optional under IPv4, only, because the
requests retransmission using ARQ only if the par-
Data-Link layer checksum may already provide the
ity data was not sufficient for successful decoding
desired level of error protection.
(identified through a failed integrity check).
• TCP provides a checksum for protecting the pay-
• Messages are transmitted without parity data (only load and addressing information from the TCP and
with error-detection information). If a receiver de- IP headers. Packets with incorrect checksums are
tects an error, it requests FEC information from the discarded within the network stack, and eventually
transmitter using ARQ, and uses it to reconstruct the get retransmitted using ARQ, either explicitly (such
original message. as through triple-ack) or implicitly due to a timeout.

The latter approach is particularly attractive on an erasure


channel when using a rateless erasure code. 22.7.2 Deep-space telecommunications
Development of error-correction codes was tightly cou-
pled with the history of deep-space missions due to
22.7 Applications the extreme dilution of signal power over interplane-
tary distances, and the limited power availability aboard
Applications that require low latency (such as telephone space probes. Whereas early missions sent their data
conversations) cannot use Automatic Repeat reQuest uncoded, starting from 1968 digital error correction
(ARQ); they must use forward error correction (FEC). was implemented in the form of (sub-optimally de-
By the time an ARQ system discovers an error and re- coded) convolutional codes and Reed–Muller codes.[8]
transmits it, the re-sent data will arrive too late to be any The Reed–Muller code was well suited to the noise the
good. spacecraft was subject to (approximately matching a bell
Applications where the transmitter immediately forgets curve), and was implemented at the Mariner spacecraft
the information as soon as it is sent (such as most televi- for missions between 1969 and 1977.
sion cameras) cannot use ARQ; they must use FEC be- The Voyager 1 and Voyager 2 missions, which started in
cause when an error occurs, the original data is no longer1977, were designed to deliver color imaging amongst
available. (This is also why FEC is used in data storage scientific information of Jupiter and Saturn.[9] This
systems such as RAID and distributed data store). resulted in increased coding requirements, and thus
Applications that use ARQ must have a return channel; the spacecraft were supported by (optimally Viterbi-
applications having no return channel cannot use ARQ. decoded) convolutional codes that could be concatenated
Applications that require extremely low error rates (such with an outer Golay (24,12,8) code.
as digital money transfers) must use ARQ. Reliability and The Voyager 2 craft additionally supported an implemen-
inspection engineering also make use of the theory of tation of a Reed–Solomon code: the concatenated Reed–
error-correcting codes.[7] Solomon–Viterbi (RSV) code allowed for very powerful
128 CHAPTER 22. ERROR DETECTION AND CORRECTION

error correction, and enabled the spacecraft’s extended archive formats, include a checksum (most often CRC32)
journey to Uranus and Neptune. Both craft use V2 RSV to detect corruption and truncation and can employ re-
coding due to ECC system upgrades after 1989. dundancy and/or parity files to recover portions of cor-
The CCSDS currently recommends usage of error cor- rupted data. Reed Solomon codes are used in compact
rection codes with performance similar to the Voyager discs to correct errors caused by scratches.
2 RSV code as a minimum. Concatenated codes are in- Modern hard drives use CRC codes to detect and Reed–
creasingly falling out of favor with space missions, and are Solomon codes to correct minor errors in sector reads,
replaced by more powerful codes such as Turbo codes or and to recover data from sectors that have “gone bad” and
LDPC codes. store that data in the spare sectors.[10] RAID systems use
The different kinds of deep space and orbital missions a variety of error correction techniques to correct errors
that are conducted suggest that trying to find a “one size when a hard drive completely fails. Filesystems such as
fits all” error correction system will be an ongoing prob- ZFS or Btrfs, as well as some RAID implementations,
lem for some time to come. For missions close to Earth support data scrubbing and resilvering, which allows bad
the nature of the channel noise is different from that blocks to be detected and (hopefully) recovered before
which a spacecraft on an interplanetary mission expe- they are used. The recovered data may be re-written to
riences. Additionally, as a spacecraft increases its dis- exactly the same physical location, to spare blocks else-
tance from Earth, the problem of correcting for noise gets where on the same piece of hardware, or to replacement
larger. hardware.

22.7.3 Satellite broadcasting (DVB) 22.7.5 Error-correcting memory


The demand for satellite transponder bandwidth contin- Main article: ECC memory
ues to grow, fueled by the desire to deliver television (in-
cluding new channels and High Definition TV) and IP
data. Transponder availability and bandwidth constraints DRAM memory may provide increased protection
have limited this growth, because transponder capacity against soft errors by relying on error correcting codes.
is determined by the selected modulation scheme and Such error-correcting memory, known as ECC or EDAC-
Forward error correction (FEC) rate. protected memory, is particularly desirable for high fault-
tolerant applications, such as servers, as well as deep-
Overview space applications due to increased radiation.

• QPSK coupled with traditional Reed Solomon and Error-correcting memory controllers traditionally use
Viterbi codes have been used for nearly 20 years for Hamming codes, although some use triple modular re-
the delivery of digital satellite TV. dundancy.
Interleaving allows distributing the effect of a single cos-
• Higher order modulation schemes such as 8PSK,
mic ray potentially upsetting multiple physically neigh-
16QAM and 32QAM have enabled the satellite in-
boring bits across multiple words by associating neighbor-
dustry to increase transponder efficiency by several
ing bits to different words. As long as a single event upset
orders of magnitude.
(SEU) does not exceed the error threshold (e.g., a sin-
• This increase in the information rate in a transpon- gle error) in any particular word between accesses, it can
der comes at the expense of an increase in the carrier be corrected (e.g., by a single-bit error correcting code),
power to meet the threshold requirement for existing and the illusion of an error-free memory system may be
antennas. maintained.[11]

• Tests conducted using the latest chipsets demon- In addition to hardware providing features required for
strate that the performance achieved by using Turbo ECC memory to operate, operating systems usually con-
Codes may be even lower than the 0.8 dB figure as- tain related reporting facilities that are used to provide
sumed in early designs. notifications when soft errors are transparently recov-
ered. An increasing rate of soft errors might indicate
that a DIMM module needs replacing, and such feed-
22.7.4 Data storage back information would not be easily available without
the related reporting capabilities. An example is the
Error detection and correction codes are often used to Linux kernel's EDAC subsystem (previously known as
improve the reliability of data storage media. A “parity bluesmoke), which collects the data from error-checking-
track” was present on the first magnetic tape data stor- enabled components inside a computer system; beside
age in 1951. The “Optimal Rectangular Code” used in collecting and reporting back the events related to ECC
group code recording tapes not only detects but also cor- memory, it also supports other checksumming errors, in-
rects single-bit errors. Some file formats, particularly cluding those detected on the PCI bus.[12][13][14]
22.10. FURTHER READING 129

A few systems also support memory scrubbing. [13] “EDAC Project”. bluesmoke.sourceforge.net. Retrieved
2014-08-12.

[14] “Documentation/edac.txt”. Linux kernel documentation.


22.8 See also kernel.org. 2014-06-16. Retrieved 2014-08-12.

• Berger code
• Burst error-correcting code 22.10 Further reading
• Forward error correction • Shu Lin; Daniel J. Costello, Jr. (1983). Error
Control Coding: Fundamentals and Applications.
• Link adaptation
Prentice Hall. ISBN 0-13-283796-X.
• List of algorithms for error detection and correction
• List of error-correcting codes
22.11 External links
• List of hash functions
• The on-line textbook: Information Theory, In-
• Reliability (computer networking)
ference, and Learning Algorithms, by David J.C.
MacKay, contains chapters on elementary error-
correcting codes; on the theoretical limits of
22.9 References error-correction; and on the latest state-of-the-
art error-correcting codes, including low-density
[1] Thompson, Thomas M. (1983), From Error-Correcting parity-check codes, turbo codes, and fountain codes.
Codes through Sphere Packings to Simple Groups, The
Carus Mathematical Monographs (#21), The Mathemati- • Compute parameters of linear codes – an on-line
cal Association of America, p. vii, ISBN 0-88385-023-0 interface for generating and computing parameters
(e.g. minimum distance, covering radius) of linear
[2] Shannon, C.E. (1948), “A Mathematical Theory of Com-
error-correcting codes.
munication”, Bell System Tech. Journal, p. 418, 27

[3] Golay, Marcel J. E. (1949), “Notes on Digital Coding”, • ECC Page


Proc.I.R.E. (I.E.E.E.), p. 657, 37
• SoftECC: A System for Software Memory Integrity
[4] Frank van Gerwen. “Numbers (and other mysterious) sta- Checking
tions”. Retrieved 12 March 2012.
• A Tunable, Software-based DRAM Error Detection
[5] Gary Cutlack (25 August 2010). “Mysterious Russian and Correction Library for HPC
'Numbers Station' Changes Broadcast After 20 Years”.
Gizmodo. Retrieved 12 March 2012. • Detection and Correction of Silent Data Corruption
for Large-Scale High-Performance Computing
[6] A. J. McAuley, Reliable Broadband Communication Us-
ing a Burst Erasure Correcting Code, ACM SIGCOMM,
1990.

[7] Ben-Gal I.; Herer Y.; Raz T. (2003). “Self-correcting in-


spection procedure under inspection errors” (PDF). IIE
Transactions on Quality and Reliability, 34(6), pp. 529-
540.

[8] K. Andrews et al., The Development of Turbo and LDPC


Codes for Deep-Space Applications, Proceedings of the
IEEE, Vol. 95, No. 11, Nov. 2007.

[9] Huffman, William Cary; Pless, Vera S. (2003). Funda-


mentals of Error-Correcting Codes. Cambridge University
Press. ISBN 978-0-521-78280-7.

[10] My Hard Drive Died. Scott A. Moulton

[11] “Using StrongArm SA-1110 in the On-Board Computer


of Nanosatellite”. Tsinghua Space Center, Tsinghua Uni-
versity, Beijing. Retrieved 2009-02-16.

[12] Jeff Layton. “Error Detection and Correction”. Linux


Magazine. Retrieved 2014-08-12.
Chapter 23

File Transfer Protocol

“FTP” redirects here. For other uses, see FTP (disam- 23.2.1 Communication and data transfer
biguation).

PC1 21
The File Transfer Protocol (FTP) is a standard network
protocol used to transfer computer files between a client PASV
and server on a computer network. A S
FTP is built on a client-server model architecture and uses
separate control and data connections between the client PC2
and the server.[1] FTP users may authenticate themselves
with a clear-text sign-in protocol, normally in the form of PC1 21
a username and password, but can connect anonymously
if the server is configured to allow it. For secure trans- PORT PS1
mission that protects the username and password, and en- A S
crypts the content, FTP is often secured with SSL/TLS
(FTPS). SSH File Transfer Protocol (SFTP) is sometimes PC2 PS1
also used instead, but is technologically different.
The first FTP client applications were command-line pro- PC1 21
grams developed before operating systems had graphical
user interfaces, and are still shipped with most Windows,
Unix, and Linux operating systems.[2][3] Many FTP A S
clients and automation utilities have since been developed
for desktops, servers, mobile devices, and hardware, and PC2 PS1
FTP has been incorporated into productivity applications,
such as web page editors. Illustration of starting a passive connection using port 21

FTP may run in active or passive mode, which determines


23.1 History of FTP server how the data connection is established.[5] In both cases,
the client creates a TCP control connection from a ran-
dom, usually an unprivileged, port N to the FTP server
The original specification for the File Transfer Protocol
command port 21.
was written by Abhay Bhushan and published as RFC 114
on 16 April 1971. Until 1980, FTP ran on NCP, the pre-
decessor of TCP/IP.[2] The protocol was later replaced by • In active mode, the client starts listening for incom-
a TCP/IP version, RFC 765 (June 1980) and RFC 959 ing data connections from the server on port M. It
(October 1985), the current specification. Several pro- sends the FTP command PORT M to inform the
posed standards amend RFC 959, for example RFC 1579 server on which port it is listening. The server then
(February 1994) enables Firewall-Friendly FTP (passive initiates a data channel to the client from its port 20,
mode), RFC 2228 (June 1997) proposes security exten- the FTP server data port.
sions, RFC 2428 (September 1998) adds support for IPv6
• In situations where the client is behind a firewall and
and defines a new type of passive mode.[4]
unable to accept incoming TCP connections, passive
mode may be used. In this mode, the client uses
the control connection to send a PASV command
23.2 Protocol overview to the server and then receives a server IP address
and server port number from the server,[5][6] which

130
23.2. PROTOCOL OVERVIEW 131

the client then uses to open a data connection from Some FTP software also implements a DEFLATE-based
an arbitrary client port to the server IP address and compressed mode, sometimes called “Mode Z” after the
server port number received.[7] command that enables it. This mode was described in an
Internet Draft, but not standardized.[9]
Both modes were updated in September 1998 to support
IPv6. Further changes were introduced to the passive
mode at that time, updating it to extended passive mode.[8] 23.2.2 Login
The server responds over the control connection with
FTP login utilizes a normal username and password
three-digit status codes in ASCII with an optional text
scheme for granting access.[2] The username is sent to
message. For example, “200” (or “200 OK”) means that
the server using the USER command, and the password is
the last command was successful. The numbers represent
sent using the PASS command.[2] If the information pro-
the code for the response and the optional text represents
vided by the client is accepted by the server, the server
a human-readable explanation or request (e.g. <Need ac-
will send a greeting to the client and the session will
count for storing file>).[1] An ongoing transfer of file data
commence.[2] If the server supports it, users may log in
over the data connection can be aborted using an interrupt
without providing login credentials, but the same server
message sent over the control connection.
may authorize only limited access for such sessions.[2]
While transferring data over the network, four data rep-
resentations can be used:[2][3][4]
23.2.3 Anonymous FTP
• ASCII mode: Used for text. Data is converted,
if needed, from the sending host’s character repre- A host that provides an FTP service may provide
sentation to “8-bit ASCII” before transmission, and anonymous FTP access.[2] Users typically log into the ser-
(again, if necessary) to the receiving host’s charac- vice with an 'anonymous’ (lower-case and case-sensitive
ter representation. As a consequence, this mode is in some FTP servers) account when prompted for user
inappropriate for files that contain data other than name. Although users are commonly asked to send their
plain text. email address instead of a password,[3] no verification is
actually performed on the supplied data.[10] Many FTP
• Image mode (commonly called Binary mode): The hosts whose purpose is to provide software updates will
sending machine sends each file byte for byte, and allow anonymous logins.[3]
the recipient stores the bytestream as it receives it.
(Image mode support has been recommended for all
implementations of FTP).
23.2.4 NAT and firewall traversal
• EBCDIC mode: Used for plain text between hosts
using the EBCDIC character set. FTP normally transfers data by having the server connect
back to the client, after the PORT command is sent by
• Local mode: Allows two computers with identical the client. This is problematic for both NATs and fire-
setups to send data in a proprietary format without walls, which do not allow connections from the Internet
the need to convert it to ASCII. towards internal hosts.[11] For NATs, an additional com-
plication is that the representation of the IP addresses and
For text files, different format control and record structure port number in the PORT command refer to the internal
options are provided. These features were designed to host’s IP address and port, rather than the public IP ad-
facilitate files containing Telnet or ASA. dress and port of the NAT.

Data transfer can be done in any of three modes:[1][2] There are two approaches to this problem. One is that
the FTP client and FTP server use the PASV command,
which causes the data connection to be established from
• Stream mode: Data is sent as a continuous stream, the FTP client to the server.[11] This is widely used by
relieving FTP from doing any processing. Rather, modern FTP clients. Another approach is for the NAT
all processing is left up to TCP. No End-of-file in- to alter the values of the PORT command, using an
dicator is needed, unless the data is divided into application-level gateway for this purpose.[11]
records.

• Block mode: FTP breaks the data into several blocks


(block header, byte count, and data field) and then 23.2.5 Differences from HTTP
passes it on to TCP.[4]
HTTP essentially fixes the bugs in FTP that made it in-
• Compressed mode: Data is compressed using a sim- convenient to use for many small ephemeral transfers as
ple algorithm (usually run-length encoding). are typical in web pages.
132 CHAPTER 23. FILE TRANSFER PROTOCOL

FTP has a stateful control connection which maintains a tion of the username and password that must be used to
current working directory and other flags, and each trans- access this resource.
fer requires a secondary connection through which the More details on specifying a username and password may
data are transferred. In “passive” mode this secondary be found in the browsers’ documentation (e.g., Firefox[13]
connection is from client to server, whereas in the default and Internet Explorer[14] ). By default, most web browsers
“active” mode this connection is from server to client. use passive (PASV) mode, which more easily traverses
This apparent role reversal when in active mode, and ran- end-user firewalls.
dom port numbers for all transfers, is why firewalls and
NAT gateways have such a hard time with FTP. HTTP
is stateless and multiplexes control and data over a single
connection from client to server on well-known port num- 23.4 Security
bers, which trivially passes through NAT gateways and is
simple for firewalls to manage. FTP was not designed to be a secure protocol, and has
many security weaknesses.[15] In May 1999, the authors
Setting up an FTP control connection is quite slow due
of RFC 2577 listed a vulnerability to the following prob-
to the round-trip delays of sending all of the required
lems:
commands and awaiting responses, so it is customary to
bring up a control connection and hold it open for multiple
• Brute force attack
file transfers rather than drop and re-establish the session
afresh each time. In contrast, HTTP originally dropped • FTP bounce attack
the connection after each transfer because doing so was so
cheap. While HTTP has subsequently gained the ability • Packet capture
to reuse the TCP connection for multiple transfers, the • Port stealing
conceptual model is still of independent requests rather
than a session. • Spoofing attack
When FTP is transferring over the data connection, the • Username protection
control connection is idle. If the transfer takes long
enough, the firewall or NAT may decide that the control FTP does not encrypt its traffic; all transmissions are in
connection is dead and stop tracking it, effectively break- clear text, and usernames, passwords, commands and data
ing the connection and confusing the download. The can be read by anyone able to perform packet capture
single HTTP connection is only idle between requests (sniffing) on the network.[2][15] This problem is common
and it is normal and expected for such connections to be to many of the Internet Protocol specifications (such as
dropped after a time-out. SMTP, Telnet, POP and IMAP) that were designed prior
to the creation of encryption mechanisms such as TLS or
SSL.[4]
23.3 Web browser support Common solutions to this problem include:

Most common web browsers can retrieve files hosted on 1. Using the secure versions of the insecure protocols,
FTP servers, although they may not support protocol ex- e.g., FTPS instead of FTP and TelnetS instead of
tensions such as FTPS.[3][12] When an FTP—rather than Telnet.
an HTTP—URL is supplied, the accessible contents on
the remote server are presented in a manner that is sim- 2. Using a different, more secure protocol that can
ilar to that used for other web content. A full-featured handle the job, e.g. SSH File Transfer Protocol or
FTP client can be run within Firefox in the form of an Secure Copy Protocol.
extension called FireFTP.
3. Using a secure tunnel such as Secure Shell (SSH) or
virtual private network (VPN).
23.3.1 Syntax
23.4.1 FTP over SSH
FTP URL syntax is described in RFC 1738, tak-
ing the form: ftp://{[}user{[}:password{]}@{]}host{[}: FTP over SSH is the practice of tunneling a normal FTP
port{]}/url-path (the bracketed parts are optional). session over a Secure Shell connection.[15] Because FTP
For example, the URL ftp://public.ftp-servers.example. uses multiple TCP connections (unusual for a TCP/IP
com/mydirectory/myfile.txt represents the file my- protocol that is still in use), it is particularly difficult to
file.txt from the directory mydirectory on the server tunnel over SSH. With many SSH clients, attempting to
public.ftp-servers.example.com as an FTP resource. The set up a tunnel for the control channel (the initial client-to-
URL ftp://user001:[email protected]. server connection on port 21) will protect only that chan-
example.com/mydirectory/myfile.txt adds a specifica- nel; when data is transferred, the FTP software at either
23.6. FTP COMMANDS 133

end sets up new TCP connections (data channels) and thus 23.5.4 Simple File Transfer Protocol
have no confidentiality or integrity protection.
Simple File Transfer Protocol (the first protocol abbrevi-
Otherwise, it is necessary for the SSH client software to
ated SFTP), as defined by RFC 913, was proposed as an
have specific knowledge of the FTP protocol, to mon-
(unsecured) file transfer protocol with a level of complex-
itor and rewrite FTP control channel messages and au-
ity intermediate between TFTP and FTP. It was never
tonomously open new packet forwardings for FTP data
widely accepted on the Internet, and is now assigned His-
channels. Software packages that support this mode in-
toric status by the IETF. It runs through port 115, and
clude:
often receives the initialism of SFTP. It has a command
• Tectia ConnectSecure (Win/Linux/Unix) of SSH set of 11 commands and support three types of data trans-
[16]

Communications Security's software suite mission: ASCII, binary and continuous. For systems with
a word size that is a multiple of 8 bits, the implementa-
tion of binary and continuous is the same. The proto-
col also supports login with user ID and password, hier-
23.5 Derivatives archical folders and file management (including rename,
delete, upload, download, download with overwrite, and
23.5.1 FTPS download with append).

Main article: FTPS


23.6 FTP commands
Explicit FTPS is an extension to the FTP standard that
allows clients to request FTP sessions to be encrypted. Main article: List of FTP commands
This is done by sending the “AUTH TLS” command. The
server has the option of allowing or denying connections
that do not request TLS. This protocol extension is de-
fined in RFC 4217. Implicit FTPS is an outdated stan- 23.7 FTP reply codes
dard for FTP that required the use of a SSL or TLS con-
nection. It was specified to use different ports than plain
FTP. Main article: List of FTP server return codes

Below is a summary of FTP reply codes that may be re-


23.5.2 SSH File Transfer Protocol turned by an FTP server. These codes have been stan-
dardized in RFC 959 by the IETF. The reply code is a
Main article: SSH File Transfer Protocol three-digit value. The first digit is used to indicate one of
three possible outcomes — success, failure, or to indicate
The SSH file transfer protocol (chronologically the sec- an error or incomplete reply:
ond of the two protocols abbreviated SFTP) transfers files
and has a similar command set for users, but uses the • 2yz – Success reply
Secure Shell protocol (SSH) to transfer files. Unlike FTP,
it encrypts both commands and data, preventing pass- • 4yz or 5yz – Failure reply
words and sensitive information from being transmitted
• 1yz or 3yz – Error or Incomplete reply
openly over the network. It cannot interoperate with FTP
software.
The second digit defines the kind of error:

23.5.3 Trivial File Transfer Protocol • x0z – Syntax. These replies refer to syntax errors.

Main article: Trivial File Transfer Protocol • x1z – Information. Replies to requests for informa-
tion.
Trivial File Transfer Protocol (TFTP) is a simple, lock- • x2z – Connections. Replies referring to the control
step FTP that allows a client to get from or put a file onto a and data connections.
remote host. One of its primary uses is in the early stages
of booting from a local area network, because TFTP is • x3z – Authentication and accounting. Replies for
very simple to implement. TFTP lacks security and most the login process and accounting procedures.
of the advanced features offered by more robust file trans- • x4z – Not defined.
fer protocols such as File Transfer Protocol. TFTP was
first standardized in 1981 and the current specification for • x5z – File system. These replies relay status codes
the protocol can be found in RFC 1350. from the server file system.
134 CHAPTER 23. FILE TRANSFER PROTOCOL

The third digit of the reply code is used to provide ad- [9] Preston, J. (January 2005). Deflate transmission mode for
ditional detail for each of the categories defined by the FTP. IETF. I-D draft-preston-ftpext-deflate-03.txt. https:
second digit. //tools.ietf.org/html/draft-preston-ftpext-deflate-03.txt.
Retrieved 27 January 2016.

[10] RFC 1635 (Informational) How to Use Anonymous FTP.


23.8 See also P. & Emtage, A. & Marine, A. (May 1994).

[11] Gleason, Mike (2005). “The File Transfer Protocol and


• Comparison of FTP client software Your Firewall/NAT”. Ncftp.com.
• Comparison of FTP server software [12] Matthews, J. (2005). Computer Networking: Internet Pro-
tocols in Action (1st ed.). Danvers, MA: John Wiley &
• Curl-loader – FTP/S loading/testing open-source
Sons Inc.
software
[13] “Accessing FTP servers | How to | Firefox Help”. Sup-
• File eXchange Protocol (FXP) port.mozilla.com. 2012-09-05. Retrieved 2013-01-16.
• File Service Protocol (FSP) [14] “How to Enter FTP Site Password in Internet Explorer”.
Support.microsoft.com. 2011-09-23. Retrieved 2015-
• FTAM 03-28. Written for IE versions 6 and earlier. Might work
• FTPFS with newer versions.

[15] “Securing FTP using SSH”. Nurdletech.com.


• List of file transfer protocols
[16] http://ssh.com/index.php/products/
• List of FTP commands
tectia-pci-point-to-point-encryption.html
• List of FTP server return codes

• Managed File Transfer 23.10 Further reading


• OBEX
• RFC 697 – CWD Command of FTP. July 1975.
• Shared file access
• RFC 959 – (Standard) File Transfer Protocol (FTP).
• TCP Wrapper J. Postel, J. Reynolds. October 1985.

• RFC 1579 – (Informational) Firewall-Friendly FTP.


23.9 References February 1994.

• RFC 1635 – (Informational) How to Use Anony-


[1] Forouzan, B.A. (2000). TCP/IP: Protocol Suite (1st ed.). mous FTP. May 1994.
New Delhi, India: Tata McGraw-Hill Publishing Com-
pany Limited. • RFC 1639 – FTP Operation Over Big Address
Records (FOOBAR). June 1994.
[2] Kozierok, Charles M. (2005). “The TCP/IP Guide v3.0”.
Tcpipguide.com.
• RFC 1738 – Uniform Resource Locators (URL).
[3] Dean, Tamara (2010). Network+ Guide to Networks. Del- December 1994.
mar. pp. 168–171.
• RFC 2228 – (Proposed Standard) FTP Security Ex-
[4] Clark, M.P. (2003). Data Networks IP and the Internet tensions. October 1997.
(1st ed.). West Sussex, England: John Wiley & Sons Ltd.
• RFC 2389 – (Proposed Standard) Feature negotia-
[5] “Active FTP vs. Passive FTP, a Definitive Explanation”. tion mechanism for the File Transfer Protocol. Au-
Slacksite.com. Archived from the original on 2014-12- gust 1998.
31.
• RFC 2428 – (Proposed Standard) Extensions for
[6] Parker, Don (September 2005). “Understanding the FTP
IPv6, NAT, and Extended passive mode. Septem-
Protocol”. Windowsnetworking.com.
ber 1998.
[7] RFC 959 (Standard) File Transfer Protocol (FTP). Postel,
J. & Reynolds, J. (October 1985). • RFC 2577 – (Informational) FTP Security Consid-
erations. May 1999.
[8] RFC 2428 (Proposed Standard) Extensions for IPv6,
NAT, and Extended Passive Mode. Allman, M. & Metz, • RFC 2640 – (Proposed Standard) Internationaliza-
C. & Ostermann, S. (September 1998). tion of the File Transfer Protocol. July 1999.
23.10. FURTHER READING 135

• RFC 3659 – (Proposed Standard) Extensions to


FTP. P. Hethmon. March 2007.
• RFC 5797 – (Proposed Standard) FTP Command
and Extension Registry. March 2010.
• RFC 7151 - (Proposed Standard) File Transfer Pro-
tocol HOST Command for Virtual Hosts. March
2014.

• IANA FTP Commands and Extensions registry –


The official registry of FTP Commands and Exten-
sions
Chapter 24

Finite-state machine

“State machine” redirects here. For infinite state ma- FSMs are studied in the more general field of automata
chines, see State transition system. For fault-tolerance theory.
methodology, see State machine replication.
“SFSM” redirects here. For the Italian railway company,
see Circumvesuviana.
“Finite Automata” redirects here. For the electro-
24.1 Example: coin-operated turn-
industrial group, see Finite Automata (band). stile
A finite-state machine (FSM) or finite-state automa-
ton (FSA, plural: automata), or simply a state machine,
is a mathematical model of computation used to design Push Coin

both computer programs and sequential logic circuits. It Un-


is conceived as an abstract machine that can be in one Locked locked
of a finite number of states. The machine is in only one
state at a time; the state it is in at any given time is called Push Coin

the current state. It can change from one state to another


when initiated by a triggering event or condition; this is
called a transition. A particular FSM is defined by a list of State diagram for a turnstile
its states, and the triggering condition for each transition.
The behavior of state machines can be observed in An example of a very simple mechanism that can be mod-
many devices in modern society that perform a prede- eled by a state machine is a turnstile.[2][3] A turnstile, used
termined sequence of actions depending on a sequence to control access to subways and amusement park rides, is
of events with which they are presented. Simple exam- a gate with three rotating arms at waist height, one across
ples are vending machines, which dispense products when the entryway. Initially the arms are locked, blocking the
the proper combination of coins is deposited, elevators, entry, preventing patrons from passing through. Deposit-
which drop riders off at upper floors before going down, ing a coin or token in a slot on the turnstile unlocks the
traffic lights, which change sequence when cars are wait- arms, allowing a single customer to push through. After
ing, and combination locks, which require the input of the customer passes through, the arms are locked again
combination numbers in the proper order. until another coin is inserted.
Finite-state machines can model a large number of prob-Considered as a state machine, the turnstile has two states:
lems, among which are electronic design automation, Locked and Unlocked.[2] There are two inputs that affect
communication protocol design, language parsing and its state: putting a coin in the slot (coin) and pushing the
arm (push). In the locked state, pushing on the arm has
other engineering applications. In biology and artificial
intelligence research, state machines or hierarchies ofno effect; no matter how many times the input push is
state machines have been used to describe neurological given, it stays in the locked state. Putting a coin in – that
is, giving the machine a coin input – shifts the state from
systems. In linguistics, they are used to describe simple
parts of the grammars of natural languages. Locked to Unlocked. In the unlocked state, putting addi-
tional coins in has no effect; that is, giving additional coin
Considered as an abstract model of computation, the fi-
inputs does not change the state. However, a customer
nite state machine has less computational power than
pushing through the arms, giving a push input, shifts the
some other models of computation such as the Turing
[1] state back to Locked.
machine. That is, there are tasks that no FSM can do,
but some Turing machines can. This is because the FSM The turnstile state machine can be represented by a state
memory is limited by the number of states. transition table, showing for each state the new state and
the output (action) resulting from each input

136
24.3. REPRESENTATIONS 137

• Exit action: performed when exiting the state.

24.3 Representations

Fig. 1 UML state chart example (a toaster oven)

A turnstile

It can also be represented by a directed graph called a


state diagram (above). Each of the states is represented
by a node (circle). Edges (arrows) show the transitions
from one state to another. Each arrow is labeled with the
input that triggers that transition. Inputs that don't cause
a change of state (such as a coin input in the Unlocked
state) are represented by a circular arrow returning to the
original state. The arrow into the Locked node from the
black dot indicates it is the initial state.

24.2 Concepts and terminology


Fig. 2 SDL state machine example

A state is a description of the status of a system that is


For an introduction, see State diagram.
waiting to execute a transition. A transition is a set of ac-
tions to be executed when a condition is fulfilled or when
an event is received. For example, when using an audio
system to listen to the radio (the system is in the “radio”
state), receiving a “next” stimulus results in moving to 24.3.1 State/Event table
the next station. When the system is in the “CD” state,
the “next” stimulus results in moving to the next track.Several state transition table types are used. The most
Identical stimuli trigger different actions depending on common representation is shown below: the combination
the current state. of current state (e.g. B) and input (e.g. Y) shows the next
state (e.g. C). The complete action’s information is not
In some finite-state machine representations, it is also directly described in the table and can only be added us-
possible to associate actions with a state: ing footnotes. A FSM definition including the full actions
information is possible using state tables (see also virtual
• Entry action: performed when entering the state, finite-state machine).
138 CHAPTER 24. FINITE-STATE MACHINE

SDL embeds basic data types called Abstract Data Types,


state 1 an action language, and an execution semantic in order to
opened make the finite state machine executable.

E: open
door 24.3.4 Other state diagrams
There are a large number of variants to represent an FSM
transition such as the one in figure 3.

close
open
24.4 Usage
In addition to their use in modeling reactive systems
transition condition
presented here, finite state automata are significant
in many different areas, including electrical engineer-
ing, linguistics, computer science, philosophy, biology,
2
mathematics, and logic. Finite state machines are a class
closed
of automata studied in automata theory and the theory of
E: close computation. In computer science, finite state machines
entry action door are widely used in modeling of application behavior, de-
sign of hardware digital systems, software engineering,
compilers, network protocols, and the study of computa-
tion and languages.
Fig. 3 Example of a simple finite state machine

24.3.2 UML state machines 24.5 Classification


The Unified Modeling Language has a notation for de- The state machines can be subdivided into Transducers,
scribing state machines. UML state machines overcome Acceptors, Classifiers and Sequencers.[4]
the limitations of traditional finite state machines while
retaining their main benefits. UML state machines in-
troduce the new concepts of hierarchically nested states 24.5.1 Acceptors and recognizers
and orthogonal regions, while extending the notion of
actions. UML state machines have the characteristics of
both Mealy machines and Moore machines. They sup- 1 2 3 4
Start n_found i_found c_found
port actions that depend on both the state of the system n i c

and the triggering event, as in Mealy machines, as well


as entry and exit actions, which are associated with states
rather than transitions, as in Moore machines. not_n not_i not_c not_e e

6 7

24.3.3 SDL state machines Error Success

The Specification and Description Language is a standard


from ITU that includes graphical symbols to describe ac-
tions in the transition: Fig. 4 Acceptor FSM: parsing the string “nice”

Acceptors (also called recognizers and sequence detec-


• send an event
tors) produce binary output, indicating whether or not re-
• receive an event ceived input is accepted. Each state of an FSM is either
“accepting” or “not accepting”. Once all input has been
• start a timer received, if the current state is an accepting state, the in-
put is accepted; otherwise it is rejected. As a rule, input
• cancel a timer is a series of symbols (characters); actions are not used.
• start another concurrent state machine The example in figure 4 shows a finite state machine that
accepts the string “nice”. In this FSM, the only accepting
• decision state is state 7.
24.5. CLASSIFICATION 139

A machine could also be described as defining a language, Classifier is a generalization that, similar to acceptor,
that would contain every string accepted by the machine produces single output when terminates but has more than
but none of the rejected ones; that language is “accepted” two terminal states.
by the machine. By definition, the languages accepted by
FSMs are the regular languages—; a language is regular
if there is some FSM that accepts it. 24.5.2 Transducers
The problem of determining the language accepted by
a given FSA is an instance of the algebraic path prob-
1
lem—itself a generalization of the shortest path problem opened
to graphs with edges weighted by the elements of an (ar-
bitrary) semiring.[5][6][7]
close
sensor opened

Start state
open
4 2
The start state is usually shown drawn with an arrow opening closing
“pointing at it from any where” (Sipser (2006) p. 34).
close

Accept (or final) states sensor closed


open
3
closed

Fig. 6 Transducer FSM: Moore model example

Main article: Finite-state transducer

Transducers generate output based on a given input


and/or a state using actions. They are used for control
Fig. 5: Representation of a finite-state machine; this example applications and in the field of computational linguistics.
shows one that determines whether a binary number has an even
number of 0s, where S1 is an accepting state. In control applications, two types are distinguished:

Accept states (also referred to as accepting or final Moore machine The FSM uses only entry actions, i.e.,
states) are those at which the machine reports that the output depends only on the state. The advantage
input string, as processed so far, is a member of the lan- of the Moore model is a simplification of the be-
guage it accepts. Accepting states are usually represented haviour. Consider an elevator door. The state ma-
by double circles. chine recognizes two commands: “command_open”
The start state can also be an accepting state, in which and “command_close”, which trigger state changes.
case the automaton accepts the empty string. If the start The entry action (E:) in state “Opening” starts a mo-
state is not an accepting state and there are no connecting tor opening the door, the entry action in state “Clos-
edges to any of the accepting states, then the automaton ing” starts a motor in the other direction closing the
is accepting nothing. door. States “Opened” and “Closed” stop the mo-
tor when fully opened or closed. They signal to the
An example of an accepting state appears in Fig.5: outside world (e.g., to other state machines) the sit-
a deterministic finite automaton (DFA) that detects uation: “door is open” or “door is closed”.
whether the binary input string contains an even number
of 0s.
S 1 (which is also the start state) indicates the state at Mealy machine The FSM uses only input actions, i.e.,
which an even number of 0s has been input. S1 is there- output depends on input and state. The use of a
fore an accepting state. This machine will finish in an Mealy FSM leads often to a reduction of the num-
accept state, if the binary string contains an even number ber of states. The example in figure 7 shows a
of 0s (including any binary string containing no 0s). Ex- Mealy FSM implementing the same behaviour as in
amples of strings accepted by this DFA are ε (the empty the Moore example (the behaviour depends on the
string), 1, 11, 11…, 00, 010, 1010, 10110, etc… implemented FSM execution model and will work,
140 CHAPTER 24. FINITE-STATE MACHINE

sensor closed states, orthogonal regions, state actions, and transition


1 2 actions.[12]
opened closed

I: I:

sensor opened 24.7 FSM logic

Fig. 7 Transducer FSM: Mealy model example


INPUTS
e.g., for virtual FSM but not for event-driven FSM).
There are two input actions (I:): “start motor to close
the door if command_close arrives” and “start mo-
tor in the other direction to open the door if com- State
mand_open arrives”. The “opening” and “closing” transition
intermediate states are not shown.
conditions
24.5.3 Generators

The sequencers or generators are a subclass of afore-


mentioned types that have a single-letter input alphabet.
They produce only one sequence, which can be inter- State
preted as output sequence of transducer or classifier out-
puts.

24.5.4 Determinism
Output
A further distinction is between deterministic (DFA)
and non-deterministic (NFA, GNFA) automata. In de- conditions
terministic automata, every state has exactly one tran-
sition for each possible input. In non-deterministic au-
tomata, an input can lead to one, more than one or no
transition for a given state. This distinction is relevant in OUTPUTS
practice, but not in theory, as there exists an algorithm
(the powerset construction) that can transform any NFA Fig. 8 FSM Logic (Mealy)
into a more complex DFA with identical functionality.
The next state and output of an FSM is a function of the
The FSM with only one state is called a combinatorial
input and of the current state. The FSM logic is shown in
FSM and uses only input actions. This concept is useful
Figure 8.
in cases where a number of FSM are required to work
together, and where it is convenient to consider a purely
combinatorial part as a form of FSM to suit the design
tools.[8] 24.8 Mathematical model
In accordance with the general classification, the follow-
24.6 Alternative semantics ing formal definitions are found:

• A deterministic finite state machine or acceptor


There are other sets of semantics available to represent
deterministic finite state machine is a quintuple
state machines. For example, there are tools for model-
(Σ, S, s0 , δ, F ) , where:
ing and designing logic for embedded controllers.[9] They
combine hierarchical state machines, flow graphs, and • Σ is the input alphabet (a finite, non-empty set
truth tables into one language, resulting in a different for- of symbols).
malism and set of semantics.[10] Figure 8 illustrates this • S is a finite, non-empty set of states.
mix of state machines and flow graphs with a set of states
to represent the state of a stopwatch and a flow graph to • s0 is an initial state, an element of S .
control the ticks of the watch. These charts, like Harel’s • δ is the state-transition function: δ : S × Σ →
original state machines,[11] support hierarchically nested S (in a nondeterministic finite automaton it
24.10. IMPLEMENTATION 141

would be δ : S × Σ → P(S) , i.e., δ would Optimizing an FSM means finding the machine with
return a set of states). the minimum number of states that performs the same
• F is the set of final states, a (possibly empty) function. The fastest known algorithm doing this is
subset of S . the Hopcroft minimization algorithm.[15][16] Other tech-
niques include using an implication table, or the Moore
For both deterministic and non-deterministic FSMs, it reduction procedure. Additionally, acyclic FSAs can be
is conventional to allow δ to be a partial function, i.e. minimized in linear time.[17]
δ(q, x) does not have to be defined for every combina-
tion of q ∈ S and x ∈ Σ . If an FSM M is in a state
q , the next symbol is x and δ(q, x) is not defined, then 24.10 Implementation
M can announce an error (i.e. reject the input). This is
useful in definitions of general state machines, but less
useful when transforming the machine. Some algorithms 24.10.1 Hardware applications
in their default form may require total functions.
A finite-state machine is a restricted Turing machine
where the head can only perform “read” operations, and
always moves from left to right.[13]

• A finite state transducer is a sextuple


(Σ, Γ, S, s0 , δ, ω) , where:
• Σ is the input alphabet (a finite non-empty set
of symbols).
• Γ is the output alphabet (a finite, non-empty
set of symbols).
Fig. 9 The circuit diagram for a 4-bit TTL counter, a type of
• S is a finite, non-empty set of states. state machine
• s0 is the initial state, an element of S . In a
nondeterministic finite automaton, s0 is a set In a digital circuit, an FSM may be built using a
of initial states. programmable logic device, a programmable logic con-
• δ is the state-transition function: δ : S × Σ → troller, logic gates and flip flops or relays. More specif-
S. ically, a hardware implementation requires a register to
store state variables, a block of combinational logic that
• ω is the output function.
determines the state transition, and a second block of
If the output function is a function of a state and input combinational logic that determines the output of an
alphabet ( ω : S × Σ → Γ ) that definition corre- FSM. One of the classic hardware implementations is the
sponds to the Mealy model, and can be modelled as a Richards controller.
Mealy machine. If the output function depends only on A particular case of Moore FSM, when output is directly
a state ( ω : S → Γ ) that definition corresponds to connected to the state flip-flops, that is when output func-
the Moore model, and can be modelled as a Moore ma- tion is simple identity, is known as Medvedev FSM.[18] It
chine. A finite-state machine with no output function at is advised in chip design that no logic is placed between
all is known as a semiautomaton or transition system. primary I/O and registers to minimize interchip delays,
If we disregard the first output symbol of a Moore ma- which are usually long and limit the FSM frequencies.
chine, ω(s0 ) , then it can be readily converted to an Through state encoding for low power state machines may
output-equivalent Mealy machine by setting the output be optimized to minimize power consumption.
function of every Mealy transition (i.e. labeling every
edge) with the output symbol given of the destination
Moore state. The converse transformation is less straight- 24.10.2 Software applications
forward because a Mealy machine state may have differ-
ent output labels on its incoming transitions (edges). Ev- The following concepts are commonly used to build soft-
ery such state needs to be split in multiple Moore machine ware applications with finite state machines:
states, one for every incident output symbol.[14]
• Automata-based programming

24.9 Optimization • Event-driven FSM

• Virtual FSM (VFSM)


Main article: DFA minimization
• State design pattern
142 CHAPTER 24. FINITE-STATE MACHINE

24.10.3 Finite automata and compilers 24.12 References


Finite automata are often used in the frontend of pro- [1] Belzer, Jack; Holzman, Albert George; Kent, Allen
gramming language compilers. Such a frontend may (1975). Encyclopedia of Computer Science and Technol-
comprise several finite state machines that implement a ogy, Vol. 25. USA: CRC Press. p. 73. ISBN 0-8247-
lexical analyzer and a parser. Starting from a sequence of 2275-2.
characters, the lexical analyzer builds a sequence of lan-
[2] Koshy, Thomas (2004). Discrete Mathematics With Appli-
guage tokens (such as reserved words, literals, and identi-
cations. Academic Press. p. 762. ISBN 0-12-421180-1.
fiers) from which the parser builds a syntax tree. The lexi-
cal analyzer and the parser handle the regular and context- [3] Wright, David R. (2005). “Finite State Machines” (PDF).
free parts of the programming language’s grammar.[19] CSC215 Class Notes. Prof. David R. Wright website, N.
Carolina State Univ. Retrieved July 14, 2012.

[4] Keller, Robert M. (2001). “Classifiers, Acceptors, Trans-


24.11 See also ducers, and Sequencers” (PDF). Computer Science: Ab-
straction to Implementation (PDF). Harvey Mudd College.
• Abstract state machines (ASM) p. 480.

• Artificial intelligence (AI) [5] Pouly, Marc; Kohlas, Jürg (2011). Generic Inference: A
Unifying Theory for Automated Reasoning. John Wiley &
• Abstract State Machine Language (AsmL) Sons. Chapter 6. Valuation Algebras for Path Problems,
p. 223 in particular. ISBN 978-1-118-01086-0.
• Behavior model
[6] Storer, J. A. (2001). An Introduction to Data Structures
• Communicating finite-state machine and Algorithms. Springer Science & Business Media. p.
337. ISBN 978-0-8176-4253-2.
• Control system
[7] http://www.iam.unibe.ch/~{}run/talks/
• Control table 2008-06-05-Bern-Jonczy.pdf, p. 34
• Decision tables [8] Brutscheck, M., Berger, S., Franke, M., Schwarzbacher,
A., Becker, S.: Structural Division Procedure for Effi-
• DEVS: Discrete Event System Specification
cient IC Analysis. IET Irish Signals and Systems Con-
• Extended finite-state machine (EFSM) ference, (ISSC 2008), pp.18-23. Galway, Ireland, 18–19
June 2008.
• Finite state machine with datapath
[9] Tiwari, A. (2002). Formal Semantics and Analysis Meth-
• Hidden Markov model ods for Simulink Stateflow Models.

• Petri net [10] Hamon, G. (2005). A Denotational Semantics for State-


flow. International Conference on Embedded Software.
• Pushdown automaton Jersey City, NJ: ACM. pp. 164–172. CiteSeerX:
10.1.1.89.8817.
• Quantum finite automata (QFA)
[11] Harel, D. (1987). A Visual Formalism for Complex Sys-
• Recognizable language tems. Science of Computer Programming , 231–274.

• Sequential logic [12] Alur, R., Kanade, A., Ramesh, S., & Shashidhar, K. C.
(2008). Symbolic analysis for improving simulation cov-
• Specification and Description Language erage of Simulink/Stateflow models. International Con-
ference on Embedded Software (pp. 89–98). Atlanta,
• State diagram GA: ACM.
• State pattern [13] Black, Paul E (12 May 2008). “Finite State Machine”.
Dictionary of Algorithms and Data Structures. U.S.
• SCXML
National Institute of Standards and Technology.
• Transition system
[14] Anderson, James Andrew; Head, Thomas J. (2006).
• Tree automaton Automata theory with modern applications. Cambridge
University Press. pp. 105–108. ISBN 978-0-521-84887-
• Turing machine 9.

• UML state machine [15] Hopcroft, John E. (1971). An n log n algorithm for mini-
mizing states in a finite automaton (PDF) (Technical Re-
• YAKINDU Statechart Tools port). CS-TR-71-190. Stanford Univ.
24.13. FURTHER READING 143

[16] Almeida, Marco; Moreira, Nelma; Reis, Rogerio (2007). • Ginsburg, S., An Introduction to Mathematical Ma-
On the performance of automata minimization algorithms chine Theory. Addison-Wesley, 1962.
(PDF) (Technical Report). DCC-2007-03. Porto Univ.

[17] Revuz, D. (1992). “Minimization of Acyclic automata in


Linear Time”. Theoretical Computer Science. Elsevier. 24.13.2 Finite state machines (automata
92: 181–189. doi:10.1016/0304-3975(92)90142-3. theory) in theoretical computer
[18] Kaeslin, Hubert (2008). “Mealy, Moore, Medvedev-type
science
and combinatorial output bits”. Digital Integrated Circuit
Design: From VLSI Architectures to CMOS Fabrication. • Arbib, Michael A. (1969). Theories of Abstract Au-
Cambridge University Press. p. 787. ISBN 978-0-521- tomata (1st ed.). Englewood Cliffs, N.J.: Prentice-
88267-5. Hall, Inc. ISBN 0-13-913368-2.

[19] Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). • Bobrow, Leonard S.; Arbib, Michael A. (1974).
Compilers: Principles, Techniques, and Tools (1st ed.). Discrete Mathematics: Applied Algebra for Computer
Addison-Wesley. ISBN 978-0-201-10088-4. and Information Science (1st ed.). Philadelphia: W.
B. Saunders Company, Inc. ISBN 0-7216-1768-9.

24.13 Further reading • Booth, Taylor L. (1967). Sequential Machines and


Automata Theory (1st ed.). New York: John Wiley
and Sons, Inc. Library of Congress Card Catalog
24.13.1 General Number 67-25924.
• Sakarovitch, Jacques (2009). Elements of automata • Boolos, George; Jeffrey, Richard (1999) [1989].
theory. Translated from the French by Reuben Computability and Logic (3rd ed.). Cambridge,
Thomas. Cambridge University Press. ISBN 978- England: Cambridge University Press. ISBN 0-
0-521-84425-3. Zbl 1188.68177 521-20402-X.
• Wagner, F., “Modeling Software with Finite State
• Brookshear, J. Glenn (1989). Theory of Computa-
Machines: A Practical Approach”, Auerbach Pub-
tion: Formal Languages, Automata, and Complexity.
lications, 2006, ISBN 0-8493-8086-3.
Redwood City, California: Benjamin/Cummings
• ITU-T, Recommendation Z.100 Specification and Publish Company, Inc. ISBN 0-8053-0143-7.
Description Language (SDL)
• Davis, Martin; Sigal, Ron; Weyuker, Elaine J.
• Samek, M., Practical Statecharts in C/C++, CMP (1994). Computability, Complexity, and Languages
Books, 2002, ISBN 1-57820-110-1. and Logic: Fundamentals of Theoretical Computer
Science (2nd ed.). San Diego: Academic Press, Har-
• Samek, M., Practical UML Statecharts in C/C++,
court, Brace & Company. ISBN 0-12-206382-1.
2nd Edition, Newnes, 2008, ISBN 0-7506-8706-1.
• Gardner, T., Advanced State Management, 2007 • Hopcroft, John; Ullman, Jeffrey (1979).
Introduction to Automata Theory, Languages,
• Cassandras, C., Lafortune, S., “Introduction to Dis- and Computation (1st ed.). Reading Mass:
crete Event Systems”. Kluwer, 1999, ISBN 0-7923- Addison-Wesley. ISBN 0-201-02988-X.
8609-4.
• Hopcroft, John E.; Motwani, Rajeev; Ullman, Jef-
• Timothy Kam, Synthesis of Finite State Machines: frey D. (2001). Introduction to Automata Theory,
Functional Optimization. Kluwer Academic Pub- Languages, and Computation (2nd ed.). Reading
lishers, Boston 1997, ISBN 0-7923-9842-4 Mass: Addison-Wesley. ISBN 0-201-44124-1.
• Tiziano Villa, Synthesis of Finite State Machines: • Hopkin, David; Moss, Barbara (1976). Automata.
Logic Optimization. Kluwer Academic Publishers, New York: Elsevier North-Holland. ISBN 0-444-
Boston 1997, ISBN 0-7923-9892-0 00249-9.
• Carroll, J., Long, D., Theory of Finite Automata with
• Kozen, Dexter C. (1997). Automata and Com-
an Introduction to Formal Languages. Prentice Hall,
putability (1st ed.). New York: Springer-Verlag.
Englewood Cliffs, 1989.
ISBN 0-387-94907-0.
• Kohavi, Z., Switching and Finite Automata Theory.
McGraw-Hill, 1978. • Lewis, Harry R.; Papadimitriou, Christos H. (1998).
Elements of the Theory of Computation (2nd ed.).
• Gill, A., Introduction to the Theory of Finite-state Upper Saddle River, New Jersey: Prentice-Hall.
Machines. McGraw-Hill, 1962. ISBN 0-13-262478-8.
144 CHAPTER 24. FINITE-STATE MACHINE

• Linz, Peter (2006). Formal Languages and Au- • McCluskey, E. J. (1965). Introduction to the Theory
tomata (4th ed.). Sudbury, MA: Jones and Bartlett. of Switching Circuits (1st ed.). New York: McGraw-
ISBN 978-0-7637-3798-6. Hill Book Company, Inc. Library of Congress Card
Catalog Number 65-17394.
• Minsky, Marvin (1967). Computation: Finite and
Infinite Machines (1st ed.). New Jersey: Prentice- • Hill, Fredrick J.; Peterson, Gerald R. (1965). Intro-
Hall. duction to the Theory of Switching Circuits (1st ed.).
New York: McGraw-Hill Book Company. Library
• Papadimitriou, Christos (1993). Computational of Congress Card Catalog Number 65-17394.
Complexity (1st ed.). Addison Wesley. ISBN 0-201-
53082-1.
24.13.6 Finite Markov chain processes
• Pippenger, Nicholas (1997). Theories of Com-
putability (1st ed.). Cambridge, England: Cam- “We may think of a Markov chain
bridge University Press. ISBN 0-521-55380-6. as a process that moves successively
through a set of states s1 , s2 , …, sr.
• Rodger, Susan; Finley, Thomas (2006). JFLAP: An … if it is in state si it moves on to
Interactive Formal Languages and Automata Pack- the next stop to state sj with prob-
age (1st ed.). Sudbury, MA: Jones and Bartlett. ability pij. These probabilities can
ISBN 0-7637-3834-4. be exhibited in the form of a tran-
sition matrix” (Kemeny (1959), p.
• Sipser, Michael (2006). Introduction to the Theory 384)
of Computation (2nd ed.). Boston Mass: Thomson
Course Technology. ISBN 0-534-95097-3.
Finite Markov-chain processes are also known as
• Wood, Derick (1987). Theory of Computation (1st subshifts of finite type.
ed.). New York: Harper & Row, Publishers, Inc.
ISBN 0-06-047208-1. • Booth, Taylor L. (1967). Sequential Machines and
Automata Theory (1st ed.). New York: John Wiley
and Sons, Inc. Library of Congress Card Catalog
24.13.3 Abstract state machines in theo- Number 67-25924.
retical computer science • Kemeny, John G.; Mirkil, Hazleton; Snell, J. Lau-
rie; Thompson, Gerald L. (1959). Finite Mathe-
• Gurevich, Yuri (July 2000). “Sequential Abstract matical Structures (1st ed.). Englewood Cliffs, N.J.:
State Machines Capture Sequential Algorithms” Prentice-Hall, Inc. Library of Congress Card Cat-
(PDF). ACM Transactions on Computational Logic. alog Number 59-12841. Chapter 6 “Finite Markov
1 (1): 77–111. doi:10.1145/343369.343384. Chains”.

24.13.4 Machine learning using finite-


state algorithms
24.14 External links

• Mitchell, Tom M. (1997). Machine Learning (1st • Finite State Automata at DMOZ
ed.). New York: WCB/McGraw-Hill Corporation. • Modeling a Simple AI behavior using a Finite State
ISBN 0-07-042807-7. Machine Example of usage in Video Games

• Free On-Line Dictionary of Computing description


24.13.5 Hardware engineering: state min- of Finite State Machines
imization and synthesis of sequen- • NIST Dictionary of Algorithms and Data Structures
tial circuits description of Finite State Machines

• Booth, Taylor L. (1967). Sequential Machines and • Interactive FSM: Control Circuit, demonstrates the
Automata Theory (1st ed.). New York: John Wiley logic flow of the Finite State Machines.
and Sons, Inc. Library of Congress Card Catalog
• FSM simulator, simulates DFAs, NFAs and ε-
Number 67-25924.
NFAs, including generated by regular expression.
• Booth, Taylor L. (1971). Digital Networks and Com-
puter Systems (1st ed.). New York: John Wiley and
Sons, Inc. ISBN 0-471-08840-4.
Chapter 25

General Inter-ORB Protocol

In distributed computing, General Inter-ORB Proto- 25.2 Messages


col (GIOP) is the message protocol by which object re-
quest brokers (ORBs) communicate in CORBA. Stan-
dards associated with the protocol are maintained by the 25.3 Further reading
Object Management Group (OMG). The current version
of GIOP is 2.0.2. The GIOP architecture provides sev- • “The official CORBA standard from the OMG
eral concrete protocols, including: group”.

1. Internet InterORB Protocol (IIOP) — The Inter-


net Inter-Orb Protocol is an implementation of the 25.4 References
GIOP for use over the Internet, and provides a
mapping between GIOP messages and the TCP/IP
[1] http://www.omg.org/library/iiop4.html
layer.[1]
[2] Linda Rising (23 July 2001). Design Patterns in Com-
2. SSL InterORB Protocol (SSLIOP) — SSLIOP munications Software. Cambridge University Press. p.
is IIOP over SSL, providing encryption and 445. ISBN 978-0-521-79040-6. In addition to the stan-
authentication. dard GIOP and IIOP protocols, the CORBA specification
allows ORB implementors to define Environment Spe-
3. HyperText InterORB Protocol (HTIOP) — HTIOP cific Inter-ORB Protocols (ESIOP)s... Only one ESIOP
is IIOP over HTTP, providing transparent proxy by- protocol is defined in the CORBA 2.x family of specifi-
passing. cations: the DCE Common Inter-ORB Protocol (DCE-
CIOP). The OMG is attempting to standardize other pro-
4. Zipped IOP (ZIOP) — A zipped version of GIOP tocols for such domains, such as wireless and mobile sys-
that reduces the bandwidth usage tems, which have unique performance characteristics and
optimization points.

[3] Zahir Tari; Omran Bukhres (7 April 2004).


25.1 Environment Specific Inter- Fundamentals of Distributed Object Systems: The
CORBA Perspective. John Wiley & Sons. p. 178. ISBN
ORB Protocols 978-0-471-46411-2. ESIOP (Environment Specific
Inter-ORB Protocol) is a concrete GIOP protocol which
As an alternative to GIOP, CORBA includes the concept is used to communicate in a particular environment.
of an Environment Specific Inter-ORB Protocol (ES- An ESIOP is optimized for a specific environment and
IOP). While GIOP is defined to meet general-purpose may be chosen over TCP/IP... An example of ESIOP is
DCE-CIOP (DCE-Common Inter-ORB Protocol) which
needs of most CORBA implementations, an ESIOP at-
makes use of a subset of DCE-RPC facilities and parts of
tempts to address special requirements. For example, an GIOP specification.
ESIOP might use an alternative protocol encoding to im-
prove efficiency over networks with limited bandwidth or [4] Kim, Dong Jin; Namgoong, Han; Lew, Young-Chul (5
high latency. ESIOPs can also be used to layer CORBA December 1997). Danthine, Andre; Diot, Christophe,
on top of some non-CORBA technology stack, such as eds. A bridge for heterogeneous communication between
Distributed Computing Environment (DCE).[2][3] CORBA and DCE. From Multimedia Services to Net-
work Services: 4th International COST 237 Workshop,
DCE Common Inter-ORB Protocol (DCE-CIOP) is an Lisboa, Portugal, December 15-19, 1997. Proceed-
ESIOP for use in DCE. It maps CORBA to DCE RPC ings. Springer. p. 45–58. ISBN 978-3-540-63935-
and CDR (Command Data Representation).[2][4]:48[3] 0. The other approach is using Environment Specific
DCE-CIOP is defined in chapter 16 of the CORBA 2.6.1 Inter-ORB Protocol(ESIOP), the DCE Common Inter-
standard.[5] ORB Protocol(DCE-CIOP). DCE-CIOP messages repre-

145
146 CHAPTER 25. GENERAL INTER-ORB PROTOCOL

sent OMG IDL types by using the Common Data Repre-


sentation(CDR) transfer syntax.

[5] “The DCE ESIOP”. The Common Object Request Bro-


ker: Architecture and Specification: Revision 2.6.1 (PDF).
OMG. May 2002. p. 557. Retrieved 2016-05-11.
This chapter specifies an Environment-Specific Inter-
ORB Protocol (ESIOP) for the OSF DCE environment,
the DCE Common Inter-ORB Protocol (DCE-CIOP).
Chapter 26

HTML

".htm” and ".html” redirect here. For other uses, see


HTM (disambiguation).

HyperText Markup Language (HTML) is the stan-


dard markup language for creating web pages and web
applications. With Cascading Style Sheets (CSS), and
JavaScript, it forms a triad of cornerstone technologies
for the World Wide Web.[1] Web browsers receive HTML
documents from a webserver or from local storage and
render them into multimedia web pages. HTML de-
scribes the structure of a web page semantically and orig-
inally included cues for the appearance of the document.
HTML elements are the building blocks of HTML pages.
With HTML constructs, images and other objects, such
as interactive forms may be embedded into the rendered
page. It provides a means to create structured docu-
ments by denoting structural semantics for text such as
headings, paragraphs, lists, links, quotes and other items.
HTML elements are delineated by tags, written using The historic logo made by the W3C
angle brackets. Tags such as <img /> and <input /> in-
troduce content into the page directly. Others such as
<p>...</p> surround and provide information about doc-
ument text and may include other tags as sub-elements.
Browsers do not display the HTML tags, but use them to
interpret the content of the page.
HTML can embed programs written in a scripting lan-
guage such as JavaScript which affect the behavior and
content of web pages. Inclusion of CSS defines the look
and layout of content. The World Wide Web Consor-
tium (W3C), maintainer of both the HTML and the CSS
standards, has encouraged the use of CSS over explicit An example website written in HTML Code
presentational HTML since 1997.[2]

and wrote the browser and server software in late 1990.


That year, Berners-Lee and CERN data systems engineer
26.1 History Robert Cailliau collaborated on a joint request for fund-
ing, but the project was not formally adopted by CERN.
26.1.1 Development In his personal notes[4] from 1990 he listed[5] “some of
the many areas in which hypertext is used” and put an
In 1980, physicist Tim Berners-Lee, then a contractor at encyclopedia first.
CERN, proposed and prototyped ENQUIRE, a system The first publicly available description of HTML was
for CERN researchers to use and share documents. In a document called “HTML Tags”, first mentioned on
1989, Berners-Lee wrote a memo proposing an Internet- the Internet by Tim Berners-Lee in late 1991.[6][7] It
based hypertext system.[3] Berners-Lee specified HTML describes 18 elements comprising the initial, relatively

147
148 CHAPTER 26. HTML

cluded an SGML Document Type Definition to define


the grammar.[9] The draft expired after six months, but
was notable for its acknowledgment of the NCSA Mo-
saic browser’s custom tag for embedding in-line images,
reflecting the IETF’s philosophy of basing standards on
successful prototypes.[10] Similarly, Dave Raggett's com-
peting Internet-Draft, “HTML+ (Hypertext Markup For-
mat)", from late 1993, suggested standardizing already-
implemented features like tables and fill-out forms.[11]
After the HTML and HTML+ drafts expired in early
1994, the IETF created an HTML Working Group, which
in 1995 completed “HTML 2.0”, the first HTML specifi-
cation intended to be treated as a standard against which
future implementations should be based.[12]
Further development under the auspices of the IETF
was stalled by competing interests. Since 1996, the
HTML specifications have been maintained, with in-
put from commercial software vendors, by the World
Wide Web Consortium (W3C).[13] However, in 2000,
HTML also became an international standard (ISO/IEC
15445:2000). HTML 4.01 was published in late 1999,
with further errata published through 2001. In 2004,
development began on HTML5 in the Web Hypertext
Application Technology Working Group (WHATWG),
Tim Berners-Lee which became a joint deliverable with the W3C in 2008,
and completed and standardized on 28 October 2014.[14]

simple design of HTML. Except for the hyperlink tag,


these were strongly influenced by SGMLguid, an in-house 26.1.2 HTML versions timeline
Standard Generalized Markup Language (SGML)-based
documentation format at CERN. Eleven of these ele- November 24, 1995 HTML 2.0 was published as IETF
ments still exist in HTML 4.[8] RFC 1866. Supplemental RFCs added capabilities:
HTML is a markup language that web browsers use to in-
terpret and compose text, images, and other material into • November 25, 1995: RFC 1867 (form-based
visual or audible web pages. Default characteristics for file upload)
every item of HTML markup are defined in the browser, • May 1996: RFC 1942 (tables)
and these characteristics can be altered or enhanced by
the web page designer’s additional use of CSS. Many of • August 1996: RFC 1980 (client-side image
the text elements are found in the 1988 ISO technical maps)
report TR 9537 Techniques for using SGML, which in • January 1997: RFC 2070
turn covers the features of early text formatting languages (internationalization)
such as that used by the RUNOFF command developed in
the early 1960s for the CTSS (Compatible Time-Sharing
January 14, 1997 HTML 3.2[15] was published as a
System) operating system: these formatting commands
W3C Recommendation. It was the first version de-
were derived from the commands used by typesetters to
veloped and standardized exclusively by the W3C,
manually format documents. However, the SGML con-
as the IETF had closed its HTML Working Group
cept of generalized markup is based on elements (nested
on September 12, 1996.[16]
annotated ranges with attributes) rather than merely print
effects, with also the separation of structure and markup; Initially code-named “Wilbur”,[17] HTML 3.2 dropped
HTML has been progressively moved in this direction math formulas entirely, reconciled overlap among
with CSS. various proprietary extensions and adopted most of
Berners-Lee considered HTML to be an application of Netscape's visual markup tags. Netscape’s blink el-
SGML. It was formally defined as such by the Internet ement and Microsoft's marquee element were omit-
Engineering Task Force (IETF) with the mid-1993 pub- ted due to a mutual agreement between the two
lication of the first proposal for an HTML specifica- companies.[13] A markup for mathematical formu-
tion: “Hypertext Markup Language (HTML)" Internet- las similar to that in HTML was not standardized
Draft by Berners-Lee and Dan Connolly, which in- until 14 months later in MathML.
26.1. HISTORY 149

December 18, 1997 HTML 4.0[18] was published as a


W3C Recommendation. It offers three variations:
• Strict, in which deprecated elements are for-
bidden
• Transitional, in which deprecated elements are
allowed
• Frameset, in which mostly only frame related
elements are allowed.
Initially code-named “Cougar”,[17] HTML 4.0 adopted
many browser-specific element types and attributes,
but at the same time sought to phase out Netscape’s
visual markup features by marking them as
deprecated in favor of style sheets. HTML 4 is
an SGML application conforming to ISO 8879 –
SGML.[19]
April 24, 1998 HTML 4.0[20] was reissued with minor
edits without incrementing the version number. Logo of HTML5

December 24, 1999 HTML 4.01[21] was published as a


W3C Recommendation. It offers the same three replaced by a second version[31] one month later,
variations as HTML 4.0 and its last errata were pub- followed by six further drafts published by IETF
lished on May 12, 2001. itself[32] that finally led to HTML 2.0 in RFC 1866.
May 2000 ISO/IEC 15445:2000[22][23] ("ISO HTML”, November 1993 HTML+ was published by the IETF as
based on HTML 4.01 Strict) was published as an Internet Draft and was a competing proposal to
an ISO/IEC international standard. In the ISO the Hypertext Markup Language draft. It expired in
this standard falls in the domain of the ISO/IEC May 1994.
JTC1/SC34 (ISO/IEC Joint Technical Committee
1, Subcommittee 34 – Document description and April 1995 (authored March 1995) HTML 3.0[33]
[22] was proposed as a standard to the IETF, but the
processing languages).
proposal expired five months later (28 September
After HTML 4.01, there was no new version of HTML 1995)[34] without further action. It included many
for many years as development of the parallel, of the capabilities that were in Raggett’s HTML+
XML-based language XHTML occupied the W3C’s proposal, such as support for tables, text flow around
HTML Working Group through the early and mid- figures and the display of complex mathematical
2000s. formulas.[34]
October 28, 2014 HTML5[24] was published as a W3C
W3C began development of its own Arena browser
Recommendation.[25]
as a test bed for HTML 3 and Cascading Style
Sheets,[35][36][37] but HTML 3.0 did not succeed for
HTML draft version timeline several reasons. The draft was considered very large
at 150 pages and the pace of browser development,
October 1991 HTML Tags,[6] an informal CERN docu- as well as the number of interested parties, had out-
ment listing 18 HTML tags, was first mentioned in stripped the resources of the IETF.[13] Browser ven-
public. dors, including Microsoft and Netscape at the time,
chose to implement different subsets of HTML 3’s
June 1992 First informal draft of the HTML DTD,[26] draft features as well as to introduce their own exten-
with seven[27][28][29] subsequent revisions (July 15, sions to it.[13] (see Browser wars). These included
August 6, August 18, November 17, November 19, extensions to control stylistic aspects of documents,
November 20, November 22) contrary to the “belief [of the academic engineer-
November 1992 HTML DTD 1.1 (the first with a ver- ing community] that such things as text color, back-
sion number, based on RCS revisions, which start ground texture, font size and font face were defi-
with 1.1 rather than 1.0), an informal draft[29] nitely outside the scope of a language when their
only intent was to specify how a document would be
June 1993 Hypertext Markup Language[30] was pub- organized.”[13] Dave Raggett, who has been a W3C
lished by the IETF IIIR Working Group as an Inter- Fellow for many years, has commented for example:
net Draft (a rough proposal for a standard). It was “To a certain extent, Microsoft built its business on
150 CHAPTER 26. HTML

the Web by extending HTML features.”[13] • XHTML 1.0,[49] published January 26, 2000, as a
W3C Recommendation, later revised and repub-
January 2008 HTML5 was published as a Working lished August 1, 2002. It offers the same three
Draft (link) by the W3C.[38] variations as HTML 4.0 and 4.01, reformulated in
XML, with minor restrictions.
Although its syntax closely resembles that of SGML,
HTML5 has abandoned any attempt to be an SGML
application and has explicitly defined its own “html” • XHTML 1.1,[50] published May 31, 2001, as a W3C
serialization, in addition to an alternative XML- Recommendation. It is based on XHTML 1.0 Strict,
based XHTML5 serialization.[39] but includes minor changes, can be customized, is
reformulated using modules from Modularization of
2011 HTML5 – Last Call On 14 February 2011, the XHTML, which was published April 10, 2001, as a
W3C extended the charter of its HTML Working W3C Recommendation.
Group with clear milestones for HTML5. In May
2011, the working group advanced HTML5 to “Last
• XHTML 2.0 was a working draft, but work on it was
Call”, an invitation to communities inside and out-
abandoned in 2009 in favor of work on HTML5 and
side W3C to confirm the technical soundness of the
XHTML5.[51][52][53] XHTML 2.0 was incompatible
specification. The W3C developed a comprehen-
with XHTML 1.x and, therefore, would be more ac-
sive test suite to achieve broad interoperability for
curately characterized as an XHTML-inspired new
the full specification by 2014, which was the target
language than an update to XHTML 1.x.
date for recommendation.[40] In January 2011, the
WHATWG renamed its “HTML5” living standard
to “HTML”. The W3C nevertheless continues its • An XHTML syntax, known as “XHTML5.1”, is
project to release HTML5.[41] being defined alongside HTML5 in the HTML5
draft.[54]
2012 HTML5 – Candidate Recommendation In July
2012, WHATWG and W3C decided on a degree of
separation. W3C will continue the HTML5 specifi-
cation work, focusing on a single definitive standard,
which is considered as a “snapshot” by WHATWG.
26.2 Markup
The WHATWG organization will continue its work
with HTML5 as a “Living Standard”. The con- HTML markup consists of several key components, in-
cluding those called tags (and their attributes), character-
cept of a living standard is that it is never complete
based data types, character references and entity refer-
and is always being updated and improved. New
ences. HTML tags most commonly come in pairs like
features can be added but functionality will not be
removed.[42] <h1> and </h1>, although some represent empty elements
and so are unpaired, for example <img>. The first tag in
In December 2012, W3C designated HTML5 as a such a pair is the start tag, and the second is the end tag
Candidate Recommendation.[43] The criterion (they are also called opening tags and closing tags).
for advancement to W3C Recommendation is
Another important component is the HTML document
“two 100% complete and fully interoperable
type declaration, which triggers standards mode render-
implementations”.[44][45]
ing.
The following is an example of the classic Hello
2014 HTML5 – Proposed Recommendation and Recommendation
In September 2014, W3C moved HTML5 to Pro- world program, a common test employed for comparing
posed Recommendation.[46] programming languages, scripting languages and markup
languages. This example is made using 9 lines of code:
On 28 October 2014, HTML5 was released as a stable
<!DOCTYPE html> <html> <head> <title>This is
W3C Recommendation,[47] meaning the specifica-
[48] a title</title> </head> <body> <p>Hello world!</p>
tion process is complete.
</body> </html>

XHTML versions (The text between <html> and </html> describes the web
page, and the text between <body> and </body> is the
Main article: XHTML visible page content. The markup text "<title>This is a ti-
tle</title>" defines the browser page title.)
XHTML is a separate language that began as a reformula- The Document Type Declaration <!DOCTYPE html> is
tion of HTML 4.01 using XML 1.0. It is no longer being for HTML5. If a declaration is not included, various
developed as a separate standard. browsers will revert to "quirks mode" for rendering.[55]
26.2. MARKUP 151

26.2.1 Elements <h3>Heading level 3</h3> <h4>Heading level 4</h4>


<h5>Heading level 5</h5> <h6>Heading level 6</h6>
Main article: HTML element
Paragraphs:
HTML documents imply a structure of nested HTML el- <p>Paragraph 1</p> <p>Paragraph 2</p>
ements. These are indicated in the document by HTML
tags, enclosed in angle brackets thus: <p>[56]
Line breaks:<br>. The difference between <br> and <p>
In the simple, general case, the extent of an element is is that “br” breaks a line without altering the semantic
indicated by a pair of tags: a “start tag” <p> and “end tag” structure of the page, whereas “p” sections the page into
</p>. The text content of the element, if any, is placed paragraphs. Note also that “br” is an empty element in
between these tags. that, although it may have attributes, it can take no content
Tags may also enclose further tag markup between the and it may not have an end tag.
start and end, including a mixture of tags and text. This <p>This <br> is a paragraph <br> with <br> line
indicates further (nested) elements, as children of the par- breaks</p>
ent element.
The start tag may also include attributes within the tag. This is a link in HTML. To create a link the <a> tag is
These indicate other information, such as identifiers for used. The href= attribute holds the URL address of the
sections within the document, identifiers used to bind link.
style information to the presentation of the document,
and for some tags such as the <img> used to embed im- <a href="https://www.wikipedia.org/">A link to
ages, the reference to the image resource. Wikipedia!</a>

Some elements, such as the line break <br>, do not permit


any embedded content, either text or further tags. These Comments:
require only a single empty tag (akin to a start tag) and do <!-- This is a comment -->
not use an end tag.
Many tags, particularly the closing end tag for the very Comments can help in the understanding of the markup
commonly used paragraph element <p>, are optional. An and do not display in the webpage.
HTML browser or other agent can infer the closure for the
There are several types of markup elements used in
end of an element from the context and the structural rules
HTML:
defined by the HTML standard. These rules are complex
and not widely understood by most HTML coders.
Structural markup indicates the purpose of text
The general form of an HTML element For example, <h2>Golf</h2> establishes “Golf”
is therefore: <tag attribute1="value1” at- as a second-level heading. Structural markup does
tribute2="value2">''content''</tag>. Some HTML not denote any specific rendering, but most web
elements are defined as empty elements and take the form browsers have default styles for element formatting.
<tag attribute1="value1” attribute2="value2">. Empty Content may be further styled using Cascading
elements may enclose no content, for instance, the <br> Style Sheets (CSS).[57]
tag or the inline <img> tag. The name of an HTML
element is the name used in the tags. Note that the end Presentational markup indicates the appearance of
tag’s name is preceded by a slash character, "/", and that the text, regardless of its purpose
For example, <b>boldface</b> indicates that visual
in empty elements the end tag is neither required nor
output devices should render “boldface” in bold
allowed. If attributes are not mentioned, default values
text, but gives little indication what devices that
are used in each case.
are unable to do this (such as aural devices that
read the text aloud) should do. In the case of both
<b>bold</b> and <i>italic</i>, there are other
Element examples elements that may have equivalent visual render-
ings but that are more semantic in nature, such as
Header of the HTML document:<head>...</head>. The <strong>strong text</strong> and <em>emphasised
title is included in the head, for example: text</em> respectively. It is easier to see how an
<head> <title>The Title</title> </head> aural user agent should interpret the latter two
elements. However, they are not equivalent to their
presentational counterparts: it would be undesirable
Headings: HTML headings are defined with the <h1> to for a screen-reader to emphasize the name of a
<h6> tags: book, for instance, but on a screen such a name
<h1>Heading level 1</h1> <h2>Heading level 2</h2> would be italicized. Most presentational markup
152 CHAPTER 26. HTML

elements have become deprecated under the HTML may be specified; for example class="notation im-
4.0 specification in favor of using CSS for styling. portant” puts the element into both the “notation”
and the “important” classes.
Hypertext markup makes parts of a document into
links to other documents • An author may use the style attribute to assign pre-
An anchor element creates a hyperlink in the doc- sentational properties to a particular element. It is
ument and its href attribute sets the link’s target considered better practice to use an element’s id or
URL. For example, the HTML markup, <a class attributes to select the element from within a
href="http://www.google.com/">Wikipedia</a>, stylesheet, though sometimes this can be too cum-
will render the word "Wikipedia" as a hyperlink. bersome for a simple, specific, or ad hoc styling.
To render an image as a hyperlink, an “img”
element is inserted as content into the “a” el- • The title attribute is used to attach subtextual expla-
ement. Like “br”, “img” is an empty element nation to an element. In most browsers this attribute
with attributes but no content or closing tag. <a is displayed as a tooltip.
href="http://example.org"><img src="image.gif”
alt="descriptive text” width="50” height="50” • The lang attribute identifies the natural language
border="0"></a>. of the element’s contents, which may be different
from that of the rest of the document. For example,
in an English-language document:
Attributes <p>Oh well, <span lang="fr">c'est la vie</span>,
as they say in France.</p>
Main article: HTML attribute

Most of the attributes of an element are name-value pairs, The abbreviation element, abbr, can be used to demon-
separated by "=" and written within the start tag of an strate some of these attributes :
element after the element’s name. The value may be en- <abbr id="anId” class="jargon” style="color:purple;"
closed in single or double quotes, although values consist- title="Hypertext Markup Language">HTML</abbr>
ing of certain characters can be left unquoted in HTML
(but not XHTML) .[58][59] Leaving attribute values un-
quoted is considered unsafe.[60] In contrast with name- This example displays as HTML; in most browsers, point-
value pair attributes, there are some attributes that af- ing the cursor at the abbreviation should display the title
fect the element simply by their presence in the start tag text “Hypertext Markup Language.”
of the element,[6] like the ismap attribute for the imgMost elements take the language-related attribute dir to
element.[61] specify text direction, such as with “rtl” for right-to-left
[62]
There are several common attributes that may appear in text in, for example, Arabic, Persian or Hebrew.
many elements :
26.2.2 Character and entity references
• The id attribute provides a document-wide unique
identifier for an element. This is used to identify See also: List of XML and HTML character entity
the element so that stylesheets can alter its presen- references and Unicode and HTML
tational properties, and scripts may alter, animate
or delete its contents or presentation. Appended to
As of version 4.0, HTML defines a set of 252 character
the URL of the page, it provides a globally unique
entity references and a set of 1,114,050 numeric charac-
identifier for the element, typically a sub-section
ter references, both of which allow individual characters
of the page. For example, the ID “Attributes” in
to be written via simple markup, rather than literally. A
http://en.wikipedia.org/wiki/HTML#Attributes
literal character and its markup counterpart are consid-
• The class attribute provides a way of classifying ered equivalent and are rendered identically.
similar elements. This can be used for semantic The ability to “escape” characters in this way allows for
or presentation purposes. For example, an HTML the characters < and & (when written as &lt; and &amp;,
document might semantically use the designation respectively) to be interpreted as character data, rather
class="notation” to indicate that all elements with than markup. For example, a literal < normally indicates
this class value are subordinate to the main text of the start of a tag, and & normally indicates the start of
the document. In presentation, such elements might a character entity reference or numeric character refer-
be gathered together and presented as footnotes on ence; writing it as &amp; or &#x26; or &#38; allows &
a page instead of appearing in the place where they to be included in the content of an element or in the value
occur in the HTML source. Class attributes are used of an attribute. The double-quote character ("), when not
semantically in microformats. Multiple class values used to quote an attribute value, must also be escaped as
26.3. SEMANTIC HTML 153

&quot; or &#x22; or &#34; when it appears within the at- An example of an HTML 4 doctype
tribute value itself. Equivalently, the single-quote charac- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
ter ('), when not used to quote an attribute value, must also 4.01//EN” "http://www.w3.org/TR/html4/strict.dtd">
be escaped as &#x27; or &#39; (or as &apos; in HTML5
or XHTML documents[63][64] ) when it appears within the
attribute value itself. If document authors overlook the This declaration references the DTD for the “strict” ver-
need to escape such characters, some browsers can be sion of HTML 4.01. SGML-based validators read the
very forgiving and try to use context to guess their in- DTD in order to properly parse the document and to per-
tent. The result is still invalid markup, which makes the form validation. In modern browsers, a valid doctype ac-
document less accessible to other browsers and to other tivates standards mode as opposed to quirks mode.
user agents that may try to parse the document for search In addition, HTML 4.01 provides Transitional and
and indexing purposes for example. Frameset DTDs, as explained below. Transitional type
Escaping also allows for characters that are not eas- is the most inclusive, incorporating current tags as well as
ily typed, or that are not available in the document’s older or “deprecated” tags, with the Strict DTD exclud-
character encoding, to be represented within element and ing deprecated tags. Frameset has all tags necessary to
attribute content. For example, the acute-accented e (é), make frames on a page along with the tags included in
a character typically found only on Western European transitional type.
and South American keyboards, can be written in any
HTML document as the entity reference &eacute; or as
the numeric references &#xE9; or &#233;, using charac-
ters that are available on all keyboards and are supported
26.3 Semantic HTML
in all character encodings. Unicode character encodings
such as UTF-8 are compatible with all modern browsers Main article: Semantic HTML
and allow direct access to almost all the characters of the
world’s writing systems.[65] Semantic HTML is a way of writing HTML that empha-
sizes the meaning of the encoded information over its pre-
sentation (look). HTML has included semantic markup
26.2.3 Data types from its inception,[67] but has also included presentational
markup, such as <font>, <i> and <center> tags. There are
HTML defines several data types for element content, also the semantically neutral span and div tags. Since the
such as script data and stylesheet data, and a plethora of late 1990s when Cascading Style Sheets were beginning
types for attribute values, including IDs, names, URIs, to work in most browsers, web authors have been encour-
numbers, units of length, languages, media descriptors, aged to avoid the use of presentational HTML markup
colors, character encodings, dates and times, and so on. with a view to the separation of presentation and con-
All of these data types are specializations of character tent.[68]
data.
In a 2001 discussion of the Semantic Web, Tim Berners-
Lee and others gave examples of ways in which intelli-
26.2.4 Document type declaration gent software “agents” may one day automatically crawl
the web and find, filter and correlate previously unrelated,
[69]
HTML documents are required to start with a Document published facts for the benefit of human users. Such
Type Declaration (informally, a “doctype”). In browsers, agents are not commonplace even now, but some of the
the doctype helps to define the rendering mode— ideas of Web 2.0, mashups and price comparison web-
particularly whether to use quirks mode. sites may be coming close. The main difference between
these web application hybrids and Berners-Lee’s seman-
The original purpose of the doctype was to enable pars- tic agents lies in the fact that the current aggregation and
ing and validation of HTML documents by SGML tools hybridization of information is usually designed in by web
based on the Document Type Definition (DTD). The developers, who already know the web locations and the
DTD to which the DOCTYPE refers contains a machine- API semantics of the specific data they wish to mash,
readable grammar specifying the permitted and prohib- compare and combine.
ited content for a document conforming to such a DTD.
Browsers, on the other hand, do not implement HTML as An important type of web agent that does crawl and
an application of SGML and by consequence do not read read web pages automatically, without prior knowledge
the DTD. of what it might find, is the web crawler or search-engine
spider. These software agents are dependent on the se-
HTML5 does not define a DTD; therefore, in HTML5 the mantic clarity of web pages they find as they use various
doctype declaration is simpler and shorter:[66] techniques and algorithms to read and index millions of
<!DOCTYPE html> web pages a day and provide web users with search fa-
cilities without which the World Wide Web’s usefulness
154 CHAPTER 26. HTML

would be greatly reduced. 26.4.2 HTML e-mail


In order for search-engine spiders to be able to rate the
Main article: HTML email
significance of pieces of text they find in HTML doc-
uments, and also for those creating mashups and other
hybrids as well as for more automated agents as they are Most graphical email clients allow the use of a subset
developed, the semantic structures that exist in HTML of HTML (often ill-defined) to provide formatting and
need to be widely and uniformly applied to bring out the semantic markup not available with plain text. This may
meaning of published text.[70] include typographic information like coloured headings,
emphasized and quoted text, inline images and diagrams.
Presentational markup tags are deprecated in current
Many such clients include both a GUI editor for compos-
HTML and XHTML recommendations and are illegal in
ing HTML e-mail messages and a rendering engine for
HTML5.
displaying them. Use of HTML in e-mail is criticized by
Good semantic HTML also improves the accessibility some because of compatibility issues, because it can help
of web documents (see also Web Content Accessibility disguise phishing attacks, because of accessibility issues
Guidelines). For example, when a screen reader or audio for blind or visually impaired people, because it can con-
browser can correctly ascertain the structure of a docu- fuse spam filters and because the message size is larger
ment, it will not waste the visually impaired user’s time than plain text.
by reading out repeated or irrelevant information when it
has been marked up correctly.
26.4.3 Naming conventions
The most common filename extension for files contain-
26.4 Delivery ing HTML is .html. A common abbreviation of this is
.htm, which originated because some early operating sys-
tems and file systems, such as DOS and the limitations
HTML documents can be delivered by the same means
imposed by FAT data structure, limited file extensions to
as any other computer file. However, they are most often
three letters.[74]
delivered either by HTTP from a web server or by email.

26.4.4 HTML Application


26.4.1 HTTP
Main article: HTML Application
Main article: Hypertext Transfer Protocol
An HTML Application (HTA; file extension ".hta”) is a
Microsoft Windows application that uses HTML and Dy-
The World Wide Web is composed primarily of HTML
namic HTML in a browser to provide the application’s
documents transmitted from web servers to web browsers
graphical interface. A regular HTML file is confined to
using the Hypertext Transfer Protocol (HTTP). However,
the security model of the web browser’s security, commu-
HTTP is used to serve images, sound, and other content,
nicating only to web servers and manipulating only web-
in addition to HTML. To allow the web browser to know
page objects and site cookies. An HTA runs as a fully
how to handle each document it receives, other informa-
trusted application and therefore has more privileges, like
tion is transmitted along with the document. This meta
creation/editing/removal of files and Windows Registry
data usually includes the MIME type (e.g. text/html or
entries. Because they operate outside the browser’s se-
application/xhtml+xml) and the character encoding (see
curity model, HTAs cannot be executed via HTTP, but
Character encoding in HTML).
must be downloaded (just like an EXE file) and executed
In modern browsers, the MIME type that is sent with the from local file system.
HTML document may affect how the document is ini-
tially interpreted. A document sent with the XHTML
MIME type is expected to be well-formed XML; syntax 26.5 HTML4 variations
errors may cause the browser to fail to render it. The
same document sent with the HTML MIME type might
be displayed successfully, since some browsers are more HTML is precisely what we were trying to PREVENT—
lenient with HTML. ever-breaking links, links going outward only, quotes you
can't follow to their origins, no version management, no
The W3C recommendations state that XHTML 1.0 doc- rights management.
uments that follow guidelines set forth in the recommen- [75]
dation’s Appendix C may be labeled with either MIME Ted Nelson
Type.[71] XHTML 1.1 also states that XHTML 1.1 doc- Since its inception, HTML and its associated protocols
uments should[72] be labeled with either MIME type.[73] gained acceptance relatively quickly. However, no clear
26.5. HTML4 VARIATIONS 155

standards existed in the early years of the language. formed XHTML 1.0 document that adheres to Appendix
Though its creators originally conceived of HTML as C (see below) into a valid HTML 4.01 document. To
a semantic language devoid of presentation details,[76] make this translation requires the following steps:
practical uses pushed many presentational elements and
attributes into the language, driven largely by the vari- 1. The language for an element should be specified
ous browser vendors. The latest standards surrounding with a lang attribute rather than the XHTML
HTML reflect efforts to overcome the sometimes chaotic xml:lang attribute. XHTML uses XML’s built in
development of the language[77] and to create a ratio- language-defining functionality attribute.
nal foundation for building both meaningful and well-
presented documents. To return HTML to its role as a se- 2. Remove the XML namespace (xmlns=URI).
mantic language, the W3C has developed style languages HTML has no facilities for namespaces.
such as CSS and XSL to shoulder the burden of presenta-
tion. In conjunction, the HTML specification has slowly 3. Change the document type declaration from
reined in the presentational elements. XHTML 1.0 to HTML 4.01. (see DTD section for
There are two axes differentiating various variations of further explanation).
HTML as currently specified: SGML-based HTML ver-
4. If present, remove the XML declaration. (Typ-
sus XML-based HTML (referred to as XHTML) on one
ically this is: <?xml version="1.0” encoding="utf-
axis, and strict versus transitional (loose) versus frameset
8"?>).
on the other axis.
5. Ensure that the document’s MIME type is set
26.5.1 SGML-based versus XML-based to text/html. For both HTML and XHTML, this
comes from the HTTP Content-Type header sent by
HTML the server.
One difference in the latest HTML specifications lies 6. Change the XML empty-element syntax to an
in the distinction between the SGML-based specifica- HTML style empty element (<br/> to <br>).
tion and the XML-based specification. The XML-based
specification is usually called XHTML to distinguish it
clearly from the more traditional definition. However, Those are the main changes necessary to translate a doc-
the root element name continues to be “html” even in the ument from XHTML 1.0 to HTML 4.01. To translate
XHTML-specified HTML. The W3C intended XHTML from HTML to XHTML would also require the addition
1.0 to be identical to HTML 4.01 except where limi- of any omitted opening or closing tags. Whether coding
tations of XML over the more complex SGML require in HTML or XHTML it may just be best to always in-
workarounds. Because XHTML and HTML are closely clude the optional tags within an HTML document rather
related, they are sometimes documented in parallel. In than remembering which tags can be omitted.
such circumstances, some authors conflate the two names A well-formed XHTML document adheres to all the syn-
as (X)HTML or X(HTML). tax requirements of XML. A valid document adheres to
Like HTML 4.01, XHTML 1.0 has three sub- the content specification for XHTML, which describes
specifications: strict, transitional and frameset. the document structure.

Aside from the different opening declarations for a doc- The W3C recommends several conventions to ensure an
ument, the differences between an HTML 4.01 and easy migration between HTML and XHTML (see HTML
XHTML 1.0 document—in each of the corresponding Compatibility Guidelines). The following steps can be
DTDs—are largely syntactic. The underlying syntax of applied to XHTML 1.0 documents only:
HTML allows many shortcuts that XHTML does not,
such as elements with optional opening or closing tags, • Include both xml:lang and lang attributes on any el-
and even empty elements which must not have an end ements assigning language.
tag. By contrast, XHTML requires all elements to have an
opening tag and a closing tag. XHTML, however, also in- • Use the empty-element syntax only for elements
troduces a new shortcut: an XHTML tag may be opened specified as empty in HTML.
and closed within the same tag, by including a slash before
the end of the tag like this: <br/>. The introduction of • Include an extra space in empty-element tags: for
this shorthand, which is not used in the SGML declaration example <br /> instead of <br>.
for HTML 4.01, may confuse earlier software unfamiliar
• Include explicit close tags for elements that per-
with this new convention. A fix for this is to include a
mit content but are left empty (for example,
space before closing the tag, as such: <br />.[78]
<div></div>, not <div />).
To understand the subtle differences between HTML and
XHTML, consider the transformation of a valid and well- • Omit the XML declaration.
156 CHAPTER 26. HTML

By carefully following the W3C’s compatibility guide- • align (Deprecated. use CSS instead.), border,
lines, a user agent should be able to interpret the docu- vspace and hspace attributes on img and ob-
ment equally as HTML or XHTML. For documents that ject (caution: the object element is only sup-
are XHTML 1.0 and have been made compatible in this ported in Internet Explorer (from the major
way, the W3C permits them to be served either as HTML browsers)) elements
(with a text/html MIME type), or as XHTML (with an
• align (Deprecated. use CSS instead.) attribute
application/xhtml+xml or application/xml MIME type).
on legend and caption elements
When delivered as XHTML, browsers should use an
XML parser, which adheres strictly to the XML speci- • align (Deprecated. use CSS instead.) and bg-
fications for parsing the document’s contents. color (Deprecated. use CSS instead.) on table
element
• nowrap (Obsolete), bgcolor (Deprecated. use
26.5.2 Transitional versus strict
CSS instead.), width, height on td and th ele-
ments
HTML 4 defined three different versions of the language:
Strict, Transitional (once called Loose) and Frameset. • bgcolor (Deprecated. use CSS instead.) at-
The Strict version is intended for new documents and tribute on tr element
is considered best practice, while the Transitional and • clear (Obsolete) attribute on br element
Frameset versions were developed to make it easier to
transition documents that conformed to older HTML • compact attribute on dl, dir and menu elements
specification or didn't conform to any specification to a • type (Deprecated. use CSS instead.), com-
version of HTML 4. The Transitional and Frameset ver- pact (Deprecated. use CSS instead.) and start
sions allow for presentational markup, which is omitted (Deprecated. use CSS instead.) attributes on
in the Strict version. Instead, cascading style sheets are ol and ul elements
encouraged to improve the presentation of HTML docu-
ments. Because XHTML 1 only defines an XML syntax • type and value attributes on li element
for the language defined by HTML 4, the same differ- • width attribute on pre element
ences apply to XHTML 1 as well.
• Additional elements in Transitional specification
The Transitional version allows the following parts of the
vocabulary, which are not included in the Strict version: • menu (Deprecated. use CSS instead.) list
(no substitute, though unordered list is recom-
• A looser content model
mended)
• Inline elements and plain text are allowed di-
• dir (Deprecated. use CSS instead.) list (no
rectly in: body, blockquote, form, noscript and
substitute, though unordered list is recom-
noframes
mended)
• Presentation related elements • isindex (Deprecated.) (element requires
• underline (u)(Deprecated. can confuse a visi- server-side support and is typically added to
tor with a hyperlink.) documents server-side, form and input ele-
• strike-through (s) ments can be used as a substitute)
• center (Deprecated. use CSS instead.) • applet (Deprecated. use the object element in-
• font (Deprecated. use CSS instead.) stead.)
• basefont (Deprecated. use CSS instead.)
• The language (Obsolete) attribute on script ele-
• Presentation related attributes ment (redundant with the type attribute).
• background (Deprecated. use CSS instead.) • Frame related entities
and bgcolor (Deprecated. use CSS instead.)
attributes for body (required element accord- • iframe
ing to the W3C.) element.
• noframes
• align (Deprecated. use CSS instead.) at-
tribute on div, form, paragraph (p) and head- • target (Deprecated in the map, link and form
ing (h1...h6) elements elements.) attribute on a, client-side image-
• align (Deprecated. use CSS instead.), noshade map (map), link, form and base elements
(Deprecated. use CSS instead.), size (Depre-
cated. use CSS instead.) and width (Depre- The Frameset version includes everything in the Transi-
cated. use CSS instead.) attributes on hr ele- tional version, as well as the frameset element (used in-
ment stead of body) and the frame element.
26.7. HYPERTEXT FEATURES NOT IN HTML 157

26.5.3 Frameset versus transitional other, i.e., the work on HTML5 started with an older
WHATWG draft, and later the WHATWG living stan-
In addition to the above transitional differences, the dard was based on HTML5 drafts in 2011.[79][80]
frameset specifications (whether XHTML 1.0 or HTML
4.01) specify a different content model, with frameset re-
placing body, that contains either frame elements, or op- 26.7 Hypertext features not in
tionally noframes with a body.
HTML
26.5.4 Summary of specification versions HTML lacks some of the features found in earlier hy-
pertext systems, such as source tracking, fat links and
As this list demonstrates, the loose versions of the specifi- others.[81] Even some hypertext features that were in early
cation are maintained for legacy support. However, con- versions of HTML have been ignored by most popular
trary to popular misconceptions, the move to XHTML web browsers until recently, such as the link element and
does not imply a removal of this legacy support. Rather in-browser Web page editing.
the X in XML stands for extensible and the W3C is
modularizing the entire specification and opening it up Sometimes Web services or browser manufacturers rem-
to independent extensions. The primary achievement edy these shortcomings. For instance, wikis and content
in the move from XHTML 1.0 to XHTML 1.1 is the management systems allow surfers to edit the Web pages
modularization of the entire specification. The strict they visit.
version of HTML is deployed in XHTML 1.1 through
a set of modular extensions to the base XHTML 1.1
specification. Likewise, someone looking for the loose 26.8 WYSIWYG editors
(transitional) or frameset specifications will find simi-
lar extended XHTML 1.1 support (much of it is con- There are some WYSIWYG editors (What You See Is
tained in the legacy or frame modules). The modu- What You Get), in which the user lays out everything as it
larization also allows for separate features to develop is to appear in the HTML document using a graphical user
on their own timetable. So for example, XHTML 1.1 interface (GUI), often similar to word processors. The
will allow quicker migration to emerging XML standards editor renders the document rather than show the code,
such as MathML (a presentational and semantic math so authors do not require extensive knowledge of HTML.
language based on XML) and XForms—a new highly
advanced web-form technology to replace the existing The WYSIWYG editing model has been criticized,[82][83]
HTML forms. primarily because of the low quality of the gener-
ated code; there are voices advocating a change to the
In summary, the HTML 4 specification primarily reined WYSIWYM model (What You See Is What You Mean).
in all the various HTML implementations into a single
clearly written specification based on SGML. XHTML WYSIWYG editors remain a controversial topic because
1.0, ported this specification, as is, to the new XML de- of their perceived flaws such as:
fined specification. Next, XHTML 1.1 takes advantage
of the extensible nature of XML and modularizes the • Relying mainly on layout as opposed to meaning, of-
whole specification. XHTML 2.0 was intended to be the ten using markup that does not convey the intended
first step in adding new features to the specification in a meaning but simply copies the layout.[84]
standards-body-based approach.
• Often producing extremely verbose and redundant
code that fails to make use of the cascading nature
26.6 HTML5 variations of HTML and CSS.

• Often producing ungrammatical markup, called tag


26.6.1 WHATWG HTML versus HTML5 soup or semantically incorrect markup (such as
<em> for italics).
Main article: HTML5
• As a great deal of the information in HTML docu-
ments is not in the layout, the model has been criti-
The WHATWG considers their work as living standard cized for its “what you see is all you get"-nature.[85]
HTML for what constitutes the state of the art in ma-
jor browser implementations by Apple (Safari), Google
(Chrome), Mozilla (Firefox), Opera (Opera), and others.
HTML5 is specified by the HTML Working Group of 26.9 See also
the W3C following the W3C process. As of 2013 both
specifications are similar and mostly derived from each • Breadcrumb (navigation)
158 CHAPTER 26. HTML

• Comparison of HTML parsers they were specifications. Internet-Drafts are focal points
for discussion, usually in a working group... Once an
• Dynamic web page Internet-Draft has been published with an RFC number,
it is a specification to which implementers may claim con-
• HTML decimal character rendering formance. It is expected that the authors of the RFC and
the community at large will begin correcting the specifi-
• List of document markup languages
cation with field experience.
• List of XML and HTML character entity references
[11] “HTML+ Internet-Draft — Abstract”. Browser writers
• Microdata (HTML) are experimenting with extensions to HTML and it is now
appropriate to draw these ideas together into a revised
• Microformat document format. The new format is designed to allow a
gradual roll over from HTML, adding features like tables,
• Polyglot HTML captioned figures and fill-out forms for querying remote
databases or mailing questionnaires.
• Semantic HTML
[12] Berners-Lee, Tim; Connelly, Daniel (November 1995).
• W3C (X)HTML Validator “RFC 1866 – Hypertext Markup Language – 2.0”. Inter-
net Engineering Task Force. Retrieved 1 December 2010.
This document thus defines an HTML 2.0 (to distinguish
26.10 References it from the previous informal specifications). Future (gen-
erally upwardly compatible) versions of HTML with new
features will be released with higher version numbers.
[1] Flanagan, David. JavaScript - The definitive guide (6 ed.).
p. 1. JavaScript is part of the triad of technologies that [13] Raggett, Dave (1998). Raggett on HTML 4. Retrieved July
all Web developers must learn: HTML to specify the con- 9, 2007.
tent of web pages, CSS to specify the presentation of web
pages, and JavaScript to specify the behaviour of web [14] “HTML5 – Hypertext Markup Language – 5.0”. Internet
pages. Engineering Task Force. 28 October 2014. Retrieved 25
November 2014. This document recommends HTML 5.0
[2] “HTML 4.0 Specification — W3C Recommendation after completion.
— Conformance: requirements and recommendations”.
World Wide Web Consortium. December 18, 1997. Re- [15] “HTML 3.2 Reference Specification”. World Wide Web
trieved July 6, 2015. Consortium. January 14, 1997. Retrieved November 16,
2008.
[3] Tim Berners-Lee, “Information Management: A Pro-
posal.” CERN (March 1989, May 1990). W3.org [16] “IETF HTML WG”. Retrieved June 16, 2007. Note: This
working group is closed
[4] Tim Berners-Lee, “Design Issues”
[17] Arnoud Engelfriet. “Introduction to Wilbur”. Web De-
[5] Tim Berners-Lee, “Design Issues” sign Group. Retrieved June 16, 2007.
[6] “Tags used in HTML”. World Wide Web Consortium. [18] “HTML 4.0 Specification”. World Wide Web Consor-
November 3, 1992. Retrieved November 16, 2008. tium. December 18, 1997. Retrieved November 16,
2008.
[7] “First mention of HTML Tags on the www-talk mailing
list”. World Wide Web Consortium. October 29, 1991. [19] “HTML 4 – 4 Conformance: requirements and recom-
Retrieved April 8, 2007. mendations”. Retrieved December 30, 2009.
[8] “Index of elements in HTML 4”. World Wide Web Con- [20] “HTML 4.0 Specification”. World Wide Web Consor-
sortium. December 24, 1999. Retrieved April 8, 2007. tium. April 24, 1998. Retrieved November 16, 2008.
[9] Tim Berners-Lee (December 9, 1991). “Re:
[21] “HTML 4.01 Specification”. World Wide Web Consor-
SGML/HTML docs, X Browser (archived www-
tium. December 24, 1999. Retrieved November 16,
talk mailing list post)". Retrieved June 16, 2007. SGML
2008.
is very general. HTML is a specific application of the
SGML basic syntax applied to hypertext documents with [22] ISO (2000). “ISO/IEC 15445:2000 – Information tech-
simple structure. nology – Document description and processing languages
– HyperText Markup Language (HTML)". Retrieved De-
[10] Raymond, Eric. “IETF and the RFC Standards Process”.
cember 26, 2009.
The Art of Unix Programming. In IETF tradition, stan-
dards have to arise from experience with a working proto- [23] Cs.Tcd.Ie. Cs.Tcd.Ie (2000-05-15). Retrieved on 2012-
type implementation — but once they become standards, 02-16.
code that does not conform to them is considered broken
and mercilessly scrapped. ...Internet-Drafts are not spec- [24] “HTML5: A vocabulary and associated APIs for HTML
ifications; software implementers and vendors are specif- and XHTML”. World Wide Web Consortium. 28 Octo-
ically barred from claiming compliance with them as if ber 2014. Retrieved 31 October 2014.
26.10. REFERENCES 159

[25] “Open Web Platform Milestone Achieved with HTML5 [43] “HTML5”. W3.org. 2012-12-17. Retrieved 2013-06-15.
Recommendation” (Press release). World Wide Web
Consortium. 28 October 2014. Retrieved 31 October [44] “When Will HTML5 Be Finished?". FAQ. WHAT Work-
2014. ing Group. Retrieved 29 November 2009.

[26] Connolly, Daniel (6 June 1992). “MIME as a hypertext [45] “HTML5: A vocabulary and associated APIs for HTML
architecture”. CERN. Retrieved 24 October 2010. and XHTML (Editor’s Draft).”. World Wide Web Con-
sortium. Retrieved 12 April 2010.
[27] Connolly, Daniel (15 July 1992). “HTML DTD en-
closed”. CERN. Retrieved 24 October 2010. [46] “Call for Review: HTML5 Proposed Recommendation
Published W3C News”. W3.org. 2014-09-16. Retrieved
[28] Connolly, Daniel (18 August 1992). “document type dec- 2014-09-27.
laration subset for Hyper Text Markup Language as de-
fined by the World Wide Web project”. CERN. Retrieved [47] “Open Web Platform Milestone Achieved with HTML5
24 October 2010. Recommendation”. W3C. 28 October 2014. Retrieved
29 October 2014.
[29] Connolly, Daniel (24 November 1992). “Document Type
Definition for the Hyper Text Markup Language as used [48] “HTML5 specification finalized, squabbling over specs
by the World Wide Web application”. CERN. Retrieved continues”. Ars Technica. 2014-10-29. Retrieved 2014-
24 October 2010. See section “Revision History” 10-29.

[30] Berners-Lee, Tim; Connolly, Daniel (June 1993). “Hyper [49] “XHTML 1.0: The Extensible HyperText Markup Lan-
Text Markup Language (HTML) Internet Draft version guage (Second Edition)". World Wide Web Consortium.
1.1”. IETF IIIR Working Group. Retrieved 18 September January 26, 2000. Retrieved November 16, 2008.
2010. [50] “XHTML 1.1 – Module-based XHTML — Second Edi-
[31] Berners-Lee, Tim; Connolly, Daniel (June 1993). tion”. World Wide Web Consortium. February 16, 2007.
“Hypertext Markup Language (HTML) Internet Draft Retrieved November 16, 2008.
version 1.2”. IETF IIIR Working Group. Retrieved 18 [51] “XHTM 2.0”. World Wide Web Consortium. July 26,
September 2010. 2006. Retrieved November 16, 2008.
[32] Berners-Lee, Tim; Connolly, Daniel (28 November [52] “XHTML 2 Working Group Expected to Stop Work End
1994). “HyperText Markup Language Specification – of 2009, W3C to Increase Resources on HTML5”. World
2.0 INTERNET DRAFT”. IETF. Retrieved 24 October Wide Web Consortium. July 17, 2009. Retrieved Novem-
2010. ber 16, 2008.
[33] “HTML 3.0 Draft (Expired!) Materials”. World Wide [53] “W3C XHTML FAQ”.
Web Consortium. December 21, 1995. Retrieved
November 16, 2008. [54] “HTML5”. W3C. 19 October 2013.

[34] “HyperText Markup Language Specification Version 3.0”. [55] Activating Browser Modes with Doctype. Hsivonen.iki.fi.
Retrieved June 16, 2007. Retrieved on 2012-02-16.

[35] Raggett, Dave (28 March 1995). “HyperText Markup [56] “HTML Elements”. w3schools. Retrieved 16 March
Language Specification Version 3.0”. HTML 3.0 Internet 2015.
Draft Expires in six months. World Wide Web Consor-
tium. Retrieved 17 June 2010. [57] “CSS Introduction”. W3schools. Retrieved 16 March
2015.
[36] Bowers, Neil. “Weblint: Just Another Perl Hack”.
[58] “On SGML and HTML”. World Wide Web Consortium.
[37] Lie, Håkon Wium; Bos, Bert (April 1997). Cascading Retrieved November 16, 2008.
style sheets: designing for the Web. Addison Wesley Long-
man. p. 263. Retrieved 9 June 2010. [59] “XHTML 1.0 – Differences with HTML 4”. World Wide
Web Consortium. Retrieved November 16, 2008.
[38] “HTML5”. World Wide Web Consortium. June 10,
2008. Retrieved November 16, 2008. [60] Korpela, Jukka (July 6, 1998). “Why attribute values
should always be quoted in HTML”. Cs.tut.fi. Retrieved
[39] “HTML5, one vocabulary, two serializations”. Retrieved November 16, 2008.
February 25, 2009.
[61] “Objects, Images, and Applets in HTML documents”.
[40] “W3C Confirms May 2011 for HTML5 Last Call, Targets World Wide Web Consortium. December 24, 1999. Re-
2014 for HTML5 Standard”. World Wide Web Consor- trieved November 16, 2008.
tium. 14 February 2011. Retrieved 18 February 2011.
[62] “H56: Using the dir attribute on an inline element to re-
[41] Hickson, Ian. “HTML Is the New HTML5”. Retrieved solve problems with nested directional runs”. Techniques
21 January 2011. for WCAG 2.0. W3C. Retrieved 18 September 2010.

[42] “HTML5 gets the splits.”. netmagazine.com. Retrieved [63] “Character Entity Reference Chart”. World Wide Web
23 July 2012. Consortium. October 24, 2012.
160 CHAPTER 26. HTML

[64] “The Named Character Reference &apos;". World Wide [79] Hickson, Ian (2011-01-19). “HTML is the new HTML5”.
Web Consortium. January 26, 2000. The WHATWG blog. Retrieved 2013-01-14.

[65] “The Unicode Standard: A Technical Introduction”. Re- [80] “HTML5 — Smile, it’s a Snapshot!". W3C Blog. 2012-
trieved 2010-03-16. 12-17. Retrieved 2013-01-14.

[66] “HTML: The Markup Language (an HTML language ref- [81] Jakob Nielsen (January 3, 2005). “Reviving Advanced
erence)". Retrieved 2013-08-19. Hypertext”. Retrieved June 16, 2007.

[67] Berners-Lee, Tim; Fischetti, Mark (2000). Weaving the [82] Sauer, C.: WYSIWIKI – Questioning WYSIWYG in the
Web: The Original Design and Ultimate Destiny of the Internet Age. In: Wikimania (2006)
World Wide Web by Its Inventor. San Francisco: Harper.
ISBN 978-0-06-251587-2. [83] Spiesser, J., Kitchen, L.: Optimization of HTML auto-
matically generated by WYSIWYG programs. In: 13th
[68] Raggett, Dave (2002). “Adding a touch of style”. W3C. International Conference on World Wide Web, pp. 355—
Retrieved October 2, 2009. This article notes that pre- 364. WWW '04. ACM, New York, NY (New York, NY,
sentational HTML markup may be useful when targeting U.S., May 17–20, 2004)
browsers “before Netscape 4.0 and Internet Explorer 4.0”.
See the list of web browsers to confirm that these were [84] XHTML Reference: blockquote. Xhtml.com. Retrieved
both released in 1997. on 2012-02-16.

[69] Tim Berners-Lee, James Hendler and Ora Lassila (2001). [85] Doug Engelbart’s INVISIBLE REVOLUTION . Invisi-
“The Semantic Web”. Scientific American. Retrieved blerevolution.net. Retrieved on 2012-02-16.
October 2, 2009.

[70] Nigel Shadbolt, Wendy Hall and Tim Berners-Lee (2006).


“The Semantic Web Revisited” (PDF). IEEE Intelligent 26.11 External links
Systems. Retrieved October 2, 2009.
• WHATWG's HTML Living Standard
[71] “XHTML 1.0 The Extensible HyperText Markup Lan-
guage (Second Edition)". World Wide Web Consor- • W3C's HTML 5.1, the upcoming version of HTML
tium. 2002 [2000]. Retrieved December 7, 2008.
XHTML Documents which follow the guidelines set forth • W3C's HTML5, the most recent finished specifica-
in Appendix C, “HTML Compatibility Guidelines” may tion (28 October 2014)
be labeled with the Internet Media Type “text/html”
[RFC2854], as they are compatible with most HTML • W3C's HTML 4.01 specification (24 December
browsers. Those documents, and any other document 1999)
conforming to this specification, may also be labeled with
the Internet Media Type “application/xhtml+xml” as de- • Dave Raggett’s Introduction to HTML
fined in [RFC3236].
• Tim Berners-Lee Gives the Web a New Definition
[72] “RFC 2119: Key words for use in RFCs to Indicate Re-
quirement Levels”. Harvard University. 1997. Retrieved
December 7, 2008. 3. SHOULD This word, or the ad-
jective “RECOMMENDED”, mean that there may exist
valid reasons in particular circumstances to ignore a par-
ticular item, but the full implications must be understood
and carefully weighed before choosing a different course.

[73] “XHTML 1.1 – Module-based XHTML — Second Edi-


tion”. World Wide Web Consortium. 2007. Retrieved
December 7, 2008. XHTML 1.1 documents SHOULD
be labeled with the Internet Media Type text/html as de-
fined in [RFC2854] or application/xhtml+xml as defined
in [RFC3236].

[74] “Naming Files, Paths, and Namespaces”. Microsoft. Re-


trieved 16 March 2015.

[75] Ted Nelson (29 January 1999). “Ted Nelson’s Computer


Paradigm, Expressed as One-Liners”. Xanadu. Retrieved
26 July 2010.

[76] HTML Design Constraints, W3C Archives

[77] WWW:BTB – HTML, Pris Sears

[78] Freeman, E (2005). Head First HTML. O'Reilly.


Chapter 27

Hypertext Transfer Protocol

The Hypertext Transfer Protocol (HTTP) is an ample, may be the client and an application running on
application protocol for distributed, collaborative, a computer hosting a web site may be the server. The
hypermedia information systems.[1] HTTP is the foun- client submits an HTTP request message to the server.
dation of data communication for the World Wide The server, which provides resources such as HTML files
Web. and other content, or performs other functions on behalf
of the client, returns a response message to the client. The
Hypertext is structured text that uses logical links
(hyperlinks) between nodes containing text. HTTP is the response contains completion status information about
the request and may also contain requested content in its
protocol to exchange or transfer hypertext.
message body.
Development of HTTP was initiated by Tim Berners-
Lee at CERN in 1989. Standards development of HTTP A web browser is an example of a user agent (UA). Other
was coordinated by the Internet Engineering Task Force types of user agent include the indexing software used by
(IETF) and the World Wide Web Consortium (W3C), search providers (web crawlers), voice browsers, mobile
culminating in the publication of a series of Requests for apps, and other software that accesses, consumes, or dis-
Comments (RFCs). The first definition of HTTP/1.1, plays web content.
the version of HTTP in common use, occurred in RFC HTTP is designed to permit intermediate network el-
2068 in 1997, although this was obsoleted by RFC 2616 ements to improve or enable communications between
in 1999. clients and servers. High-traffic websites often bene-
A later version, the successor HTTP/2, was standardized fit from web cache servers that deliver content on be-
half of upstream servers to improve response time. Web
in 2015, and is now supported by major web servers.
browsers cache previously accessed web resources and
reuse them when possible to reduce network traffic.
HTTP proxy servers at private network boundaries can
27.1 Technical overview facilitate communication for clients without a globally
routable address, by relaying messages with external
servers.
HTTP is an application layer protocol designed within
the framework of the Internet Protocol Suite. Its defini-
tion presumes an underlying and reliable transport layer
protocol,[2] and Transmission Control Protocol (TCP) is
commonly used. However HTTP can be adapted to use
unreliable protocols such as the User Datagram Protocol
(UDP), for example in HTTPU and Simple Service Dis-
covery Protocol (SSDP).
HTTP resources are identified and located on the network
by uniform resource locators (URLs), using the uniform
resource identifier (URI) schemes http and https. URIs
and hyperlinks in Hypertext Markup Language (HTML)
documents form inter-linked hypertext documents.
URL beginning with the HTTP scheme and the WWW domain HTTP/1.1 is a revision of the original HTTP (HTTP/1.0).
name label. In HTTP/1.0 a separate connection to the same server
is made for every resource request. HTTP/1.1 can
HTTP functions as a request–response protocol in the reuse a connection multiple times to download images,
client–server computing model. A web browser, for ex- scripts, stylesheets, etc after the page has been deliv-

161
162 CHAPTER 27. HYPERTEXT TRANSFER PROTOCOL

ered. HTTP/1.1 communications therefore experience were HTTP/1.1 compliant.[9] The HTTP/1.1 standard as
less latency as the establishment of TCP connections defined in RFC 2068 was officially released in January
presents considerable overhead. 1997. Improvements and updates to the HTTP/1.1 stan-
dard were released under RFC 2616 in June 1999.
In 2007, the HTTPbis Working Group was formed, in
27.2 History part, to revise and clarify the HTTP/1.1 specification. In
June 2014, the WG released an updated six-part specifi-
cation obsoleting RFC 2616:

• RFC 7230, HTTP/1.1: Message Syntax and Routing

• RFC 7231, HTTP/1.1: Semantics and Content

• RFC 7232, HTTP/1.1: Conditional Requests

• RFC 7233, HTTP/1.1: Range Requests

• RFC 7234, HTTP/1.1: Caching

• RFC 7235, HTTP/1.1: Authentication

HTTP/2 was published as RFC 7540 in May 2015.


Tim Berners-Lee

The term hypertext was coined by Ted Nelson in 1965


in the Xanadu Project, which was in turn inspired by 27.3 HTTP session
Vannevar Bush's vision (1930s) of the microfilm-based
information retrieval and management "memex" system An HTTP session is a sequence of network request-
described in his essay As We May Think (1945). Tim response transactions. An HTTP client initiates a request
Berners-Lee and his team at CERN are credited with by establishing a Transmission Control Protocol (TCP)
inventing the original HTTP along with HTML and the connection to a particular port on a server (typically port
associated technology for a web server and a text-based 80, occasionally port 8080; see List of TCP and UDP port
web browser. Berners-Lee first proposed the “World- numbers). An HTTP server listening on that port waits
WideWeb” project in 1989 — now known as the World for a client’s request message. Upon receiving the request,
Wide Web. The first version of the protocol had only one the server sends back a status line, such as “HTTP/1.1 200
method, namely GET, which would request a page from OK”, and a message of its own. The body of this mes-
a server.[3] The response from the server was always an sage is typically the requested resource, although an error
HTML page.[4] message or other information may also be returned.[1]
The first documented version of HTTP was HTTP V0.9
(1991). Dave Raggett led the HTTP Working Group
(HTTP WG) in 1995 and wanted to expand the protocol 27.4 HTTP Authentication
with extended operations, extended negotiation, richer
meta-information, tied with a security protocol which be-
HTTP provides multiple authentication schemes such as
came more efficient by adding additional methods and Basic access authentication and Digest access authentica-
header fields.[5][6] RFC 1945 officially introduced and tion which operate via a challenge-response mechanism
recognized HTTP V1.0 in 1996. whereby the server identifies and issues a challenge be-
The HTTP WG planned to publish new standards in fore serving the requested content.
December 1995[7] and the support for pre-standard HTTP provides a general framework for access control
HTTP/1.1 based on the then developing RFC 2068 and authentication, via an extensible set of challenge-
(called HTTP-NG) was rapidly adopted by the major response authentication schemes, which can be used by
browser developers in early 1996. By March 1996, pre- a server to challenge a client request and by a client to
standard HTTP/1.1 was supported in Arena,[8] Netscape provide authentication information.[10]
2.0,[8] Netscape Navigator Gold 2.01,[8] Mosaic 2.7,
Lynx 2.5, and in Internet Explorer 2.0. End-user adop-
tion of the new browsers was rapid. In March 1996, 27.4.1 Authentication Realms
one web hosting company reported that over 40% of
browsers in use on the Internet were HTTP 1.1 compli- The HTTP Authentication spec also provides an arbi-
ant. That same web hosting company reported that by trary, implementation specific construct for further divid-
June 1996, 65% of all browsers accessing their servers ing resources common to a given root URI. The realm
27.5. REQUEST METHODS 163

value string, if present, is combined with the canonical written in response headers, without having to trans-
root URI to form the protection space component of the port the entire content.
challenge. This in effect allows the server to define sepa-
rate authentication scopes under one root URI[10] POST The POST method requests that the server ac-
cept the entity enclosed in the request as a new sub-
ordinate of the web resource identified by the URI.
The data POSTed might be, for example, an annota-
27.5 Request methods tion for existing resources; a message for a bulletin
board, newsgroup, mailing list, or comment thread;
a block of data that is the result of submitting a web
form to a data-handling process; or an item to add
to a database.[14]

PUT The PUT method requests that the enclosed entity


be stored under the supplied URI. If the URI refers
to an already existing resource, it is modified; if the
URI does not point to an existing resource, then the
server can create the resource with that URI.[15]

DELETE The DELETE method deletes the specified


resource.

TRACE The TRACE method echoes the received re-


quest so that a client can see what (if any) changes or
An HTTP 1.1 request made using telnet. The request message, additions have been made by intermediate servers.
response header section, and response body are highlighted.
OPTIONS The OPTIONS method returns the HTTP
HTTP defines methods (sometimes referred to as verbs) methods that the server supports for the specified
to indicate the desired action to be performed on the iden- URL. This can be used to check the functionality of
tified resource. What this resource represents, whether a web server by requesting '*' instead of a specific
pre-existing data or data that is generated dynamically, resource.
depends on the implementation of the server. Of-
ten, the resource corresponds to a file or the output of CONNECT [16] The CONNECT method converts the
an executable residing on the server. The HTTP/1.0 request connection to a transparent TCP/IP tun-
specification[11] defined the GET, POST and HEAD nel, usually to facilitate SSL-encrypted commu-
methods and the HTTP/1.1 specification[12] added 5 nication (HTTPS) through an unencrypted HTTP
new methods: OPTIONS, PUT, DELETE, TRACE and proxy.[17][18] See HTTP CONNECT tunneling.
CONNECT. By being specified in these documents their
semantics are well known and can be depended on. Any PATCH The PATCH method applies partial modifica-
client can use any method and the server can be config- tions to a resource.[19]
ured to support any combination of methods. If a method
is unknown to an intermediate it will be treated as an un- All general-purpose HTTP servers are required to im-
safe and non-idempotent method. There is no limit to the plement at least the GET and HEAD methods,[20] and,
number of methods that can be defined and this allows whenever possible, also the OPTIONS method.
for future methods to be specified without breaking exist-
ing infrastructure. For example, WebDAV defined 7 new
methods and RFC 5789 specified the PATCH method. 27.5.1 Safe methods

GET The GET method requests a representation of the Some of the methods (for example, HEAD, GET, OP-
specified resource. Requests using GET should only TIONS and TRACE) are, by convention, defined as safe,
retrieve data and should have no other effect. (This which means they are intended only for information re-
is also true of some other HTTP methods.)[1] The trieval and should not change the state of the server. In
W3C has published guidance principles on this dis- other words, they should not have side effects, beyond
tinction, saying, "Web application design should be relatively harmless effects such as logging, caching, the
serving of banner advertisements or incrementing a web
informed by the above principles, but also by the rel-
evant limitations.”[13] See safe methods below. counter. Making arbitrary GET requests without regard
to the context of the application’s state should therefore
HEAD The HEAD method asks for a response identical be considered safe. However, this is not mandated by the
to that of a GET request, but without the response standard, and it is explicitly acknowledged that it cannot
body. This is useful for retrieving meta-information be guaranteed.
164 CHAPTER 27. HYPERTEXT TRANSFER PROTOCOL

By contrast, methods such as POST, PUT, DELETE and 27.5.3 Security


PATCH are intended for actions that may cause side ef-
fects either on the server, or external side effects such The TRACE method can be used as part of a class of
as financial transactions or transmission of email. Such attacks known as cross-site tracing; for that reason, com-
methods are therefore not usually used by conforming mon security advice is for it to be disabled in the server
web robots or web crawlers; some that do not conform configuration.[21] Microsoft IIS supports a proprietary
tend to make requests without regard to context or con- “TRACK” method, which behaves similarly, and which
sequences. is likewise recommended to be disabled.[21]
Despite the prescribed safety of GET requests, in practice
their handling by the server is not technically limited in
any way. Therefore, careless or deliberate programming 27.5.4 Summary table
can cause non-trivial changes on the server. This is dis-
couraged, because it can cause problems for web caching,
search engines and other automated agents, which can
27.6 Status codes
make unintended changes on the server.
See also: List of HTTP status codes

In HTTP/1.0 and since, the first line of the HTTP re-


sponse is called the status line and includes a numeric sta-
tus code (such as "404") and a textual reason phrase (such
as “Not Found”). The way the user agent handles the re-
27.5.2 Idempotent methods and web appli- sponse primarily depends on the code and secondarily on
cations the other response header fields. Custom status codes can
be used since, if the user agent encounters a code it does
not recognize, it can use the first digit of the code to de-
Methods PUT and DELETE are defined to be termine the general class of the response.[22]
idempotent, meaning that multiple identical requests The standard reason phrases are only recommendations
should have the same effect as a single request (note that and can be replaced with “local equivalents” at the web
idempotence refers to the state of the system after the developer's discretion. If the status code indicated a
request has completed, so while the action the server problem, the user agent might display the reason phrase
takes (e.g. deleting a record) or the response code it to the user to provide further information about the na-
returns may be different on subsequent requests, the ture of the problem. The standard also allows the user
system state will be the same every time). Methods agent to attempt to interpret the reason phrase, though
GET, HEAD, OPTIONS and TRACE, being prescribed this might be unwise since the standard explicitly specifies
as safe, should also be idempotent, as HTTP is a stateless that status codes are machine-readable and reason phrases
protocol.[1] are human-readable. HTTP status code is primarily di-
In contrast, the POST method is not necessarily idem- vided into five groups for better explanation of request
potent, and therefore sending an identical POST request and responses between client and server as named: Infor-
multiple times may further affect state or cause further mational 1XX, Successful 2XX, Redirection 3XX, Client
side effects (such as financial transactions). In some cases Error 4XX and Server Error 5XX.
this may be desirable, but in other cases this could be due
to an accident, such as when a user does not realize that
their action will result in sending another request, or they
did not receive adequate feedback that their first request 27.7 Persistent connections
was successful. While web browsers may show alert di-
alog boxes to warn users in some cases where reloading Main article: HTTP persistent connection
a page may re-submit a POST request, it is generally up
to the web application to handle cases where a POST re- In HTTP/0.9 and 1.0, the connection is closed after a
quest should not be submitted more than once. single request/response pair. In HTTP/1.1 a keep-alive-
Note that whether a method is idempotent is not enforced mechanism was introduced, where a connection could
by the protocol or web server. It is perfectly possible to be reused for more than one request. Such persistent
write a web application in which (for example) a database connections reduce request latency perceptibly, because
insert or other non-idempotent action is triggered by a the client does not need to re-negotiate the TCP 3-Way-
GET or other request. Ignoring this recommendation, Handshake connection after the first request has been
however, may result in undesirable consequences, if a sent. Another positive side effect is that in general the
user agent assumes that repeating the same request is safe connection becomes faster with time due to TCP’s slow-
when it isn't. start-mechanism.
27.11. RESPONSE MESSAGE 165

Version 1.1 of the protocol also made bandwidth op- 27.11 Response message
timization improvements to HTTP/1.0. For example,
HTTP/1.1 introduced chunked transfer encoding to allow The response message consists of the following:
content on persistent connections to be streamed rather
than buffered. HTTP pipelining further reduces lag time, • A status line which includes the status code and rea-
allowing clients to send multiple requests before waiting son message (e.g., HTTP/1.1 200 OK, which indi-
for each response. Another addition to the protocol was cates that the client’s request succeeded).
byte serving, where a server transmits just the portion of
a resource explicitly requested by a client. • Response header fields (e.g., Content-Type:
text/html).
• An empty line.
27.8 HTTP session state • An optional message body.

HTTP is a stateless protocol. A stateless protocol does The status line and other header fields must all end
not require the HTTP server to retain information or sta- with <CR><LF>. The empty line must consist of only
tus about each user for the duration of multiple requests. <CR><LF> and no other whitespace.[27] This strict re-
However, some web applications implement states or quirement for <CR><LF> is relaxed somewhat within
server side sessions using for instance HTTP cookies or message bodies for consistent use of other system line-
hidden variables within web forms. breaks such as <CR> or <LF> alone.[29]

27.9 Encrypted connections 27.12 Example session


Below is a sample conversation between an HTTP client
The most popular way of establishing an encrypted HTTP
and an HTTP server running on www.example.com, port
connection is HTTP Secure.[23] Two other methods for
80.
establishing an encrypted HTTP connection also ex-
ist: Secure Hypertext Transfer Protocol, and using the
HTTP/1.1 Upgrade header to specify an upgrade to TLS. 27.12.1 Client request
Browser support for these two is, however, nearly non-
existent.[24][25][26] GET /index.html HTTP/1.1 Host: www.example.com

A client request (consisting in this case of the request line


27.10 Request message and only one header field) is followed by a blank line, so
that the request ends with a double newline, each in the
The request message consists of the following: form of a carriage return followed by a line feed. The
“Host” field distinguishes between various DNS names
sharing a single IP address, allowing name-based virtual
• A request line (e.g., GET /images/logo.png
hosting. While optional in HTTP/1.0, it is mandatory in
HTTP/1.1, which requests a resource called
HTTP/1.1.
/images/logo.png from the server).

• Request header fields (e.g., Accept-Language: en). 27.12.2 Server response


• An empty line. HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34
GMT Content-Type: text/html; charset=UTF-8
• An optional message body.
Content-Encoding: UTF-8 Content-Length: 138 Last-
Modified: Wed, 08 Jan 2003 23:11:55 GMT Server:
The request line and other header fields must each end Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: “3f80f-
with <CR><LF> (that is, a carriage return character fol- 1b6-3e1cb03b” Accept-Ranges: bytes Connection:
lowed by a line feed character). The empty line must con- close <html> <head> <title>An Example Page</title>
sist of only <CR><LF> and no other whitespace.[27] In </head> <body> Hello World, this is a very simple
the HTTP/1.1 protocol, all header fields except Host are HTML document. </body> </html>
optional.
A request line containing only the path name is accepted The ETag (entity tag) header field is used to determine
by servers to maintain compatibility with HTTP clients if a cached version of the requested resource is identi-
before the HTTP/1.0 specification in RFC 1945.[28] cal to the current version of the resource on the server.
166 CHAPTER 27. HYPERTEXT TRANSFER PROTOCOL

Content-Type specifies the Internet media type of the data • List of HTTP header fields
conveyed by the HTTP message, while Content-Length
indicates its length in bytes. The HTTP/1.1 webserver • List of HTTP status codes
publishes its ability to respond to requests for certain byte • Representational state transfer (REST)
ranges of the document by setting the field Accept-Ranges:
bytes. This is useful, if the client needs to have only cer- • Variant object
tain portions[30] of a resource sent by the server, which
• Waka (protocol) – An HTTP replacement proposed
is called byte serving. When Connection: close is sent, it
by Roy Fielding
means that the web server will close the TCP connection
immediately after the transfer of this response. • Web cache
Most of the header lines are optional. When Content-
• WebSocket
Length is missing the length is determined in other ways.
Chunked transfer encoding uses a chunk size of 0 to mark • Wireshark
the end of the content. Identity encoding without Content-
Length reads content until the socket is closed.
A Content-Encoding like gzip can be used to compress the 27.15 Notes
transmitted data.
[1] Fielding, Roy T.; Gettys, James; Mogul, Jeffrey C.;
Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.;
Berners-Lee, Tim (June 1999). Hypertext Transfer Proto-
27.13 Similar protocols col -- HTTP/1.1. IETF. RFC 2616. https://tools.ietf.org/
html/rfc2616.
The Gopher protocol was a content delivery protocol that
was displaced by HTTP in the early 1990s. The SPDY [2] “Overall Operation”. p. 12. sec. 1.4. RFC 2616. https:
//tools.ietf.org/html/rfc2616#section-1.4.
protocol is an alternative to HTTP developed at Google,
it is superseded by the new HTTP protocol, HTTP/2. [3] Berners-Lee, Tim. “HyperText Transfer Protocol”.
World Wide Web Consortium. Retrieved 31 August
2010.
27.14 See also [4] Tim Berners-Lee. “The Original HTTP as defined in
1991”. World Wide Web Consortium. Retrieved 24 July
• Basic access authentication 2010.

• Constrained Application Protocol – A semantically [5] Raggett, Dave. “Dave Raggett’s Bio”. World Wide Web
similar protocol to HTTP but used UDP or UDP- Consortium. Retrieved 11 June 2010.
like messages targeted for devices with limited pro- [6] Raggett, Dave; Berners-Lee, Tim. “Hypertext Transfer
cessing capability. Re-uses HTTP and other internet Protocol Working Group”. World Wide Web Consor-
concepts like Internet media type and web linking tium. Retrieved 29 September 2010.
(RFC 5988)[31]
[7] Raggett, Dave. “HTTP WG Plans”. World Wide Web
• Content negotiation Consortium. Retrieved 29 September 2010.

• Curl-loader – HTTP/S loading and testing open- [8] Simon Spero. “Progress on HTTP-NG”. World Wide
source software Web Consortium. Retrieved 11 June 2010.

[9] “HTTP/1.1”. Webcom.com Glossary entry. Retrieved


• Digest access authentication
2009-05-29.
• Fiddler (software) [10] Fielding, Roy T.; Reschke, Julian F. (June 2014).
Hypertext Transfer Protocol (HTTP/1.1): Authentication.
• HTTP compression
IETF. RFC 7235. https://tools.ietf.org/html/rfc7235.
• HTTP/2 – developed by the IETF’s Hypertext [11] Berners-Lee, Tim; Fielding, Roy T.; Nielsen, Henrik
Transfer Protocol Bis (httpbis) working group.[32] Frystyk. “Method Definitions”. Hypertext Transfer Pro-
tocol -- HTTP/1.0. IETF. pp. 30-32. sec. 8. RFC 1945.
• HTTP-MPLEX – A backwards compatible en-
https://tools.ietf.org/html/rfc1945#section-8.
hancement to HTTP to improve page and web ob-
ject retrieval time in congested networks proposed [12] “Method Definitions”. pp. 51-57. sec. 9. RFC 2616.
by Robert Mattson https://tools.ietf.org/html/rfc2616#section-9.

• HTTPS [13] Jacobs, Ian (2004). “URIs, Addressability, and the use
of HTTP GET and POST”. Technical Architecture Group
• List of file transfer protocols finding. W3C. Retrieved 26 September 2010.
27.17. EXTERNAL LINKS 167

[14] “POST”. p. 54. sec. 9.5. RFC 2616. https://tools.ietf. 27.17 External links
org/html/rfc2616#section-9.5.

[15] “PUT”. p. 55. sec. 9.6. RFC 2616. https://tools.ietf.org/ • “Change History for HTTP”. W3.org. Retrieved
html/rfc2616#section-9.6. 2010-08-01. A detailed technical history of HTTP.

[16] “CONNECT”. Hypertext Transfer Protocol -- HTTP/1.1. • “Design Issues for HTTP”. W3.org. Retrieved
IETF. June 1999. p. 57. sec. 9.9. RFC 2616. https: 2010-08-01. Design Issues by Berners-Lee when he
//tools.ietf.org/html/rfc2616#section-9.9. Retrieved 23 was designing the protocol.
February 2014.
• “Classic HTTP Documents”. W3.org. 1998-05-14.
[17] Khare, Rohit; Lawrence, Scott (May 2000). Upgrading Retrieved 2010-08-01. list of other classic docu-
to TLS Within HTTP/1.1. IETF. RFC 2817. https://tools. ments recounting the early protocol history
ietf.org/html/rfc2817.

[18] “Vulnerability Note VU#150227: HTTP proxy default


configurations allow arbitrary TCP connections”. US-
CERT. 2002-05-17. Retrieved 2007-05-10.

[19] Dusseault, Lisa; Snell, James M. (March 2010). PATCH


Method for HTTP. IETF. RFC 5789. https://tools.ietf.
org/html/rfc5789.

[20] “Method”. p. 36. sec. 5.1.1. RFC 2616. https://tools.


ietf.org/html/rfc2616#section-5.1.1.

[21] “Cross Site Tracing”. OWASP. Retrieved 2016-06-22.

[22] “Status-Line”. p. 39. sec. 6.1. RFC 2616. https://tools.


ietf.org/html/rfc2616#section-6.1.

[23] Canavan, John (2001). Fundamentals of Networking Se-


curity. Norwood, MA: Artech House. pp. 82–83. ISBN
9781580531764.

[24] Zalewski, Michal. “Browser Security Handbook”. Re-


trieved 30 April 2015.

[25] “Chromium Issue 4527: implement RFC 2817: Upgrad-


ing to TLS Within HTTP/1.1”. Retrieved 30 April 2015.

[26] “Mozilla Bug 276813 - [RFE] Support RFC 2817 / TLS


Upgrade for HTTP 1.1”. Retrieved 30 April 2015.

[27] “HTTP Message”. p. 31. sec. 4. RFC 2616. https:


//tools.ietf.org/html/rfc2616#section-4.

[28] “Apache Week. HTTP/1.1”. 090502 apacheweek.com

[29] “Canonicalization and Text Defaults”. sec. 3.7.1. RFC


2616. https://tools.ietf.org/html/rfc2616#section-3.7.1.

[30] Luotonen, Ari; Franks, John (February 22, 1996). Byte


Range Retrieval Extension to HTTP. IETF. I-D draft-
ietf-http-range-retrieval-00. https://tools.ietf.org/html/
draft-ietf-http-range-retrieval-00.

[31] Nottingham, Mark (October 2010). Web Linking. IETF.


RFC 5988. https://tools.ietf.org/html/rfc5988.

[32] “Hypertext Transfer Protocol Bis (httpbis) – Charter”.


IETF. 2012.

27.16 References
• HTTP 0.9 – As Implemented in 1991
Chapter 28

Implementation

Implementation is the realization of an application, or methodology and enlisting professional advice can help
execution of a plan, idea, model, design, specification, but often it is the number of tasks, poor planning and
standard, algorithm, or policy. inadequate resourcing that causes problems with an im-
plementation project, rather than any of the tasks being
particularly difficult. Similarly with the cultural issues it
is often the lack of adequate consultation and two-way
28.1 Industry-specific definitions communication that inhibits achievement of the desired
results.
28.1.1 Computer science

In computer science, an implementation is a realization 28.1.3 Political science


of a technical specification or algorithm as a program,
software component, or other computer system through Main article: political science
computer programming and deployment. Many imple-
mentations may exist for a given specification or standard. In political science, implementation refers to the carrying
For example, web browsers contain implementations of out of public policy. Legislatures pass laws that are then
World Wide Web Consortium-recommended specifica- carried out by public servants working in bureaucratic
tions, and software development tools contain implemen- agencies. This process consists of rule-making, rule-
tations of programming languages. administration and rule-adjudication. Factors impacting
A special case occurs in object-oriented programming, implementation include the legislative intent, the admin-
when a concrete class implements an interface; in this istrative capacity of the implementing bureaucracy, in-
case the concrete class is an implementation of the inter- terest group activity and opposition, and presidential or
face and it includes methods which are implementations executive support.
of those methods specified by the interface.

28.1.4 Social and health sciences


28.1.2 Information technology
Implementation is defined as a specified set of activities
Main article: Information technology designed to put into practice an activity or program of
known dimensions. According to this definition, imple-
mentation processes are purposeful and are described in
In the information technology industry, implementation
sufficient detail such that independent observers can de-
refers to post-sales process of guiding a client from pur-
tect the presence and strength of the “specific set of activ-
chase to use of the software or hardware that was pur-
ities” related to implementation. In addition, the activity
chased. This includes requirements analysis, scope anal-
or program being implemented is described in sufficient
ysis, customizations, systems integrations, user policies,
detail so that independent observers can detect its pres-
user training and delivery. These steps are often overseen
ence and strength.”[1]
by a project manager using project management method-
ologies. Software Implementations involve several pro-
fessionals that are relatively new to the knowledge based 28.1.5 Water and natural resources
economy such as business analysts, technical analysts,
solutions architects, and project managers. In water and natural resources, implementation refers to
To implement a system successfully, a large number of the actualization of best management practices with the
inter-related tasks need to be carried out in an appro- ultimate goals of conserving natural resources and im-
priate sequence. Utilising a well-proven implementation proving the quality of water bodies.

168
28.3. SEE ALSO 169

Types: • What are the most efficient ways of storing this data?

• What database management system should we


• Direct changeover
use?[2]
• Parallel running or as known as parallel
• Pilot introduction or as known as pilot
28.3 See also
• Well-trade
• Application software
• Phased implementation

28.2 Role of end users 28.4 References


[1] The National Implementation Research Network
System implementation generally benefits from high lev-
els of user involvement and management support. User [2] Laudon, K., & Laudon, J. (2010). “Management Infor-
participation in the design and operation of information mation Systems: Managing the Digital Firm.” Eleventh
systems has several positive results. First, if users are Edition (11 ed.). New Jersey: Prentice Hall.
heavily involved in systems design, they move opportu-
nities to mold the system according to their priorities and
business requirements, and more opportunities to control
the outcome. Second, they are more likely to react pos-
itively to the change process. Incorporating user knowl-
edge and expertise leads to better solutions.
The relationship between users and information systems
specialists has traditionally been a problem area for in-
formation systems implementation efforts. Users and in-
formation systems specialists tend to have different back-
grounds, interests, and priorities. This is referred to as the
user-designer communications gap. These differences
lead to divergent organizational loyalties, approaches to
problem solving, and vocabularies.[2] Examples of these
differences or concerns are below:

28.2.1 User concerns


• Will the system deliver the information I need for
my work?
• How quickly can I access the data?
• How easily can I retrieve the data?
• How much clerical support will I need to enter data
into the system?
• How will the operation of the system fit into my daily
business schedule?[2]

28.2.2 Designer concerns


• How much disk storage space will the master file
consume?
• How many lines of program code will it take to per-
form this function?
• How can we cut down on CPU time when we run
the system?
Chapter 29

Information

For the criminal process, see Information (formal crimi- content of a message.
nal charge). Information can be encoded into various forms for
Information (shortened as info) is that which informs.
transmission and interpretation (for example, information
may be encoded into a sequence of signs, or transmitted

101 0111 via a sequence of signals). It can also be encrypted for


safe storage and communication.

110 1001 Information resolves uncertainty. The uncertainty of an

110 1011 event is measured by its probability of occurrence and


is inversely proportional to that. The more uncertain an

110 1001 event, the more information is required to resolve uncer-


tainty of that event. The bit is a typical unit of informa-

111 0000 tion, but other units such as the nat may be used. Exam-
ple: information in one “fair” coin flip: log2 (2/1) = 1 bit,
110 0101 and in two fair coin flips is log2 (4/1) = 2 bits.

110 0100 The concept that information is the message has dif-
ferent meanings in different contexts.[2] Thus the con-

110 1001 cept of information becomes closely related to no-


tions of constraint, communication, control, data, form,
110 0001 education, knowledge, meaning, understanding, mental
stimuli, pattern, perception, representation, and entropy.

Wikipedia 29.1 Etymology

The ASCII codes for the word "Wikipedia" represented in binary,


See also: History of the word and concept “information”
the numeral system most commonly used for encoding textual
computer information The English word was apparently derived from the Latin
stem (information-) of the nominative (informatio): this
In other words, it is the answer to a question of some kind. noun is derived from the verb informare (to inform) in
It is also that from which data and knowledge can be de- the sense of “to give form to the mind”, “to discipline”,
rived, as data represents values attributed to parameters, “instruct”, “teach”. Inform itself comes (via French in-
and knowledge signifies understanding of real things or former) from the Latin verb informare, which means to
abstract concepts.[1] As it regards data, the information’s give form, or to form an idea of. Furthermore, Latin itself
existence is not necessarily coupled to an observer (it ex- already contained the word informatio meaning concept
ists beyond an event horizon, for example), while in the or idea, but the extent to which this may have influenced
case of knowledge, the information requires a cognitive the development of the word information in English is not
observer. clear.
At its most fundamental, information is any propaga- The ancient Greek word for form was μορφή (morphe; cf.
tion of cause and effect within a system. Information is morph) and also εἶδος (eidos) “kind, idea, shape, set”, the
conveyed either as the content of a message or through di- latter word was famously used in a technical philosophical
rect or indirect observation of some thing. That which is sense by Plato (and later Aristotle) to denote the ideal
perceived can be construed as a message in its own right, identity or essence of something (see Theory of Forms).
and in that sense, information is always conveyed as the “Eidos” can also be associated with thought, proposition,

170
29.4. AS REPRESENTATION AND COMPLEXITY 171

or even concept. uses the information to guide the bee to the flower, where
The ancient Greek word for information is πληροφορία, the bee often finds nectar or pollen, which are causal in-
which transliterates (plērophoria) from πλήρης (plērēs) puts, serving a nutritional function.
“fully” and φέρω (phorein) frequentative of (pherein) to
carry-through. It literally means “fully bears” or “conveys
fully”. In modern Greek language the word Πληροφορία 29.4 As representation and com-
is still in daily use and has the same meaning as the word
information in English. Unfortunately biblical scholars plexity
have translated (plērophoria) into “full assurance” creat-
ing a connotative meaning of the word. In addition to its The cognitive scientist and applied mathematician
primary meaning, the word Πληροφορία as a symbol has Ronaldo Vigo argues that information is a concept that in-
deep roots in Aristotle’s semiotic triangle. In this regard it volves at least two related entities in order to make quan-
can be interpreted to communicate information to the one titative sense. These are, any dimensionally defined cate-
decoding that specific type of sign. This is something that gory of objects S, and any of its subsets R. R, in essence,
occurs frequently with the etymology of many words in is a representation of S, or, in other words, conveys rep-
ancient and modern Greek language where there is a very resentational (and hence, conceptual) information about
strong denotative relationship between the signifier, e.g. S. Vigo then defines the amount of information that R
the word symbol that conveys a specific encoded interpre- conveys about S as the rate of change in the complexity
tation, and the signified, e.g. a concept whose meaning of S whenever the objects in R are removed from S. Un-
the interpreter attempts to decode. der “Vigo information”, pattern, invariance, complexity,
representation, and information—five fundamental con-
structs of universal science—are unified under a novel
framework.[5][6][7] Among other things, the
29.2 Information theory approach mathematical framework aims to overcome the limitations of Shannon-
Weaver information when attempting to characterize and
Main article: Information theory measure subjective information.

From the stance of information theory, information is


taken as an ordered sequence of symbols from an alpha- 29.5 As an influence which leads to
bet, say an input alphabet χ, and an output alphabet ϒ.
Information processing consists of an input-output func- a transformation
tion that maps any input sequence from χ into an output
sequence from ϒ. The mapping may be probabilistic or Information is any type of pattern that influences the for-
deterministic. It may have memory or be memoryless.[3] mation or transformation of other patterns.[8][9] In this
sense, there is no need for a conscious mind to perceive,
much less appreciate, the pattern. Consider, for exam-
ple, DNA. The sequence of nucleotides is a pattern that
29.3 As sensory input influences the formation and development of an organism
without any need for a conscious mind.
Often information can be viewed as a type of input to an
organism or system. Inputs are of two kinds; some in- Systems theory at times seems to refer to information in
puts are important to the function of the organism (for this sense, assuming information does not necessarily in-
example, food) or system (energy) by themselves. In his volve any conscious mind, and patterns circulating (due
book Sensory Ecology[4] Dusenbery called these causal in- to feedback) in the system can be called information. In
puts. Other inputs (information) are important only be- other words, it can be said that information in this sense is
cause they are associated with causal inputs and can be something potentially perceived as representation, though
used to predict the occurrence of a causal input at a later not created or presented for that purpose. For example,
time (and perhaps another place). Some information is Gregory Bateson defines[10] “information” as a “difference
important because of association with other information that makes a difference”.
but eventually there must be a connection to a causal in- If, however, the premise of “influence” implies that in-
put. In practice, information is usually carried by weak formation has been perceived by a conscious mind and
stimuli that must be detected by specialized sensory sys- also interpreted by it, the specific context associated with
tems and amplified by energy inputs before they can be this interpretation may cause the transformation of the in-
functional to the organism or system. For example, light formation into knowledge. Complex definitions of both
is often a causal input to plants but provides information “information” and “knowledge” make such semantic and
to animals. The colored light reflected from a flower is logical analysis difficult, but the condition of “transfor-
too weak to do much photosynthetic work but the visual mation” is an important point in the study of informa-
system of the bee detects it and the bee’s nervous system tion as it relates to knowledge, especially in the business
172 CHAPTER 29. INFORMATION

discipline of knowledge management. In this practice, cosmic void can be conceived of as the absence of mate-
tools and processes are used to assist a knowledge worker rial information in space (setting aside the virtual particles
in performing research and making decisions, including that pop in and out of existence due to quantum fluctu-
steps such as: ations, as well as the gravitational field and the dark en-
ergy). Nothingness can be understood then as that within
• reviewing information in order to effectively derive which no space, time, energy, matter, or any other type
value and meaning of information could exist, which would be possible if
symmetry and structure break within the manifold of the
• referencing metadata if any is available multiverse (i.e. the manifold would have tears or holes).
• establishing a relevant context, often selecting from Another link is demonstrated by the Maxwell’s demon
many possible contexts thought experiment. In this experiment, a direct relation-
• deriving new knowledge from the information ship between information and another physical property,
entropy, is demonstrated. A consequence is that it is im-
• making decisions or recommendations from the re- possible to destroy information without increasing the en-
sulting knowledge. tropy of a system; in practical terms this often means gen-
erating heat. Another more philosophical outcome is that
Stewart (2001) argues that the transformation of informa- information could be thought of as interchangeable with
tion into knowledge is a critical one, lying at the core of energy. Toyabe et al. experimentally showed in nature
value creation and competitive advantage for the modern that information can be converted into work.[12] Thus, in
enterprise. the study of logic gates, the theoretical lower bound of
The Danish Dictionary of Information Terms [11]
argues thermal energy released by an AND gate is higher than
that information only provides an answer to a posed ques- for the NOT gate (because information is destroyed in an
tion. Whether the answer provides knowledge depends AND gate and simply converted in a NOT gate). Physical
on the informed person. So a generalized definition of information is of particular importance in the theory of
the concept should be: “Information” = An answer to a quantum computers.
specific question”. In Thermodynamics, information is any kind of event that
When Marshall McLuhan speaks of media and their ef- affects the state of a dynamic system that can interpret the
fects on human cultures, he refers to the structure of information.
artifacts that in turn shape our behaviors and mindsets.
Also, pheromones are often said to be “information” in
this sense. 29.7 The application of informa-
tion study
29.6 As a property in physics The information cycle (addressed as a whole or
in its distinct components) is of great concern to
Main article: Physical information Information Technology, Information Systems, as well
as Information Science. These fields deal with
Information has a well-defined meaning in physics. In those processes and techniques pertaining to informa-
2003 J. D. Bekenstein claimed that a growing trend in tion capture (through sensors) and generation (through
physics was to define the physical world as being made computation, formulation or composition), processing
up of information itself (and thus information is defined (including encoding, encryption, compression, pack-
in this way) (see Digital physics). Examples of this in- aging), transmission (including all telecommunication
clude the phenomenon of quantum entanglement, where methods), presentation (including visualization / display
particles can interact without reference to their separation methods), storage (such as magnetic or optical, including
or the speed of light. Material information itself cannot holographic methods), etc. Information does not cease to
travel faster than light even if that information is transmit-exist, it may only get scrambled beyond any possibility of
ted indirectly. This could lead to all attempts at physically retrieval (within Information Theory, see lossy compres-
observing a particle with an “entangled” relationship to sion; in Physics, the black hole information paradox gets
another being slowed down, even though the particles are solved with the aid of the holographic principle).
not connected in any other way other than by the infor- Information Visualization (shortened as InfoVis) de-
mation they carry. pends on the computation and digital representation of
The mathematical universe hypothesis suggests a new data, and assists users in pattern recognition and anomaly
paradigm, in which virtually everything, from particles detection.
and fields, through biological entities and consciousness,
to the multiverse itself, could be described by mathe- • Partial map of the Internet, with nodes representing
matical patterns of information. By the same token, the IP addresses
29.10. SEMIOTICS 173

• Galactic (including dark) matter distribution in a cu- may also be retained for their informational value. Sound
bic section of the Universe records management ensures that the integrity of records
is preserved for as long as they are required.
• Information embedded in an abstract mathematical
object with symmetry breaking nucleus The international standard on records management, ISO
15489, defines records as “information created, received,
• Visual representation of a strange attractor, with and maintained as evidence and information by an orga-
converted data of its fractal structure nization or person, in pursuance of legal obligations or in
the transaction of business”. The International Commit-
Information Security (shortened as InfoSec) is the on- tee on Archives (ICA) Committee on electronic records
going process of exercising due diligence to protect in- defined a record as, “a specific piece of recorded infor-
formation, and information systems, from unauthorized mation generated, collected or received in the initiation,
access, use, disclosure, destruction, modification, disrup- conduct or completion of an activity and that comprises
tion or distribution, through algorithms and procedures sufficient content, context and structure to provide proof
focused on monitoring and detection, as well as incident or evidence of that activity”.
response and repair. Records may be maintained to retain corporate mem-
Information Analysis is the process of inspecting, trans- ory of the organization or to meet legal, fiscal or
forming, and modelling information, by converting accountability requirements imposed on the organiza-
raw data into actionable knowledge, in support of the tion. Willis (2005) expressed the view that sound
decision-making process. management of business records and information deliv-
ered "...six key requirements for good corporate gover-
Information Quality (InfoQ) is the potential of a dataset nance...transparency; accountability; due process; com-
to achieve a specific (scientific or practical) goal using a pliance; meeting statutory and common law require-
given empirical analysis method.. ments; and security of personal and corporate informa-
Information Communication represents the convergence tion.”
of informatics, telecommunication and audio-visual me-
dia & content.
29.10 Semiotics
29.8 Technologically mediated in- Beynon-Davies[15][16] explains the multi-faceted concept
formation of information in terms of signs and signal-sign systems.
Signs themselves can be considered in terms of four inter-
It is estimated that the world’s technological capacity to dependent levels, layers or branches of semiotics: prag-
store information grew from 2.6 (optimally compressed) matics, semantics, syntax, and empirics. These four lay-
exabytes in 1986 – which is the informational equivalent ers serve to connect the social world on the one hand with
to less than one 730-MB CD-ROM per person (539 MB the physical or technical world on the other.
per person) – to 295 (optimally compressed) exabytes in Pragmatics is concerned with the purpose of communica-
2007.[13] This is the informational equivalent of almost tion. Pragmatics links the issue of signs with the context
61 CD-ROM per person in 2007.[14] within which signs are used. The focus of pragmatics is
The world’s combined technological capacity to receive on the intentions of living agents underlying communica-
information through one-way broadcast networks was the tive behaviour. In other words, pragmatics link language
informational equivalent of 174 newspapers per person to action.
per day in 2007.[13] Semantics is concerned with the meaning of a message
The world’s combined effective capacity to exchange in- conveyed in a communicative act. Semantics considers
formation through two-way telecommunication networks the content of communication. Semantics is the study of
was the informational equivalent of 6 newspapers per per- the meaning of signs - the association between signs and
son per day in 2007.[14] behaviour. Semantics can be considered as the study of
the link between symbols and their referents or concepts
– particularly the way in which signs relate to human be-
havior.
29.9 As records
Syntax is concerned with the formalism used to represent
Records are specialized forms of information. Essen- a message. Syntax as an area studies the form of commu-
tially, records are information produced consciously or nication in terms of the logic and grammar of sign sys-
as by-products of business activities or transactions and tems. Syntax is devoted to the study of the form rather
retained because of their value. Primarily, their value is than the content of signs and sign-systems.
as evidence of the activities of the organization but they Empirics[17] is the study of the signals used to carry a
174 CHAPTER 29. INFORMATION

message; the physical characteristics of the medium of • Information entropy


communication. Empirics is devoted to the study of com-
munication channels and their characteristics, e.g., sound, • Informatics
light, electronic transmission etc.. • Information geometry
Nielsen (2008) discusses the relationship between semi-
• Information inequity
otics and information in relation to dictionaries. The con-
cept of lexicographic information costs is introduced and • Information infrastructure
refers to the efforts users of dictionaries need to make in
order to, first, find the data sought and, secondly, under- • Information management
stand the data so that they can generate information. • Information mapping
Communication normally exists within the context of
• Information overload
some social situation. The social situation sets the con-
text for the intentions conveyed (pragmatics) and the form • Information processing
in which communication takes place. In a communica-
tive situation intentions are expressed through messages • Information processor
which comprise collections of inter-related signs taken • Information sensitivity
from a language which is mutually understood by the
agents involved in the communication. Mutual under- • Information superhighway
standing implies that agents involved understand the cho-
• Information systems
sen language in terms of its agreed syntax (syntactics) and
semantics. The sender codes the message in the language • Information theory
and sends the message as signals along some communi-
cation channel (empirics). The chosen communication • Information Quality (InfoQ)
channel will have inherent properties which determine • Infosphere
outcomes such as the speed with which communication
can take place and over what distance. • Lexicographic information cost
• Library science
29.11 See also • Philosophy of information
• Prediction
• Abstraction
• Propaganda model
• Accuracy and precision
• Quantum information
• Anti-information
• Receiver operating characteristic
• Classified information
• Relevance
• Complexity
• Satisficing
• Complex adaptive system
• Shannon–Hartley theorem
• Complex system
• Cybernetics
29.12 Further reading
• Data storage device#Recording medium
• Exformation • Alan Liu (2004). The Laws of Cool: Knowledge
Work and the Culture of Information, University of
• Free Information Infrastructure Chicago Press
• Freedom of information • Bekenstein, Jacob D. (2003, August). Information
in the holographic universe. Scientific American.
• Gregory Bateson
• Gleick, James (2011). The Information: A History,
• Information and communication technologies a Theory, a Flood. Pantheon, New York, NY.
• Information architecture • Shu-Kun Lin (2008). 'Gibbs Paradox and the Con-
• Information broker cepts of Information, Symmetry, Similarity and
Their Relationship', Entropy, 10 (1), 1-5. Available
• Information continuum online at Entropy journal website.
29.14. EXTERNAL LINKS 175

• Luciano Floridi, (2005). 'Is Information Meaningful [10] Bateson, Gregory (1972). ^ Form, Substance, and Dif-
Data?', Philosophy and Phenomenological Research, ference, in Steps to an Ecology of Mind. University of
70 (2), pp. 351 – 370. Available online at PhilSci Chicago Press. pp. 448–466.
Archive [11] Informationsordbogen.dk
• Luciano Floridi, (2005). 'Semantic Conceptions of [12] http://www.nature.com/news/2010/101114/full/news.
Information', The Stanford Encyclopedia of Philos- 2010.606.html
ophy (Winter 2005 Edition), Edward N. Zalta (ed.).
Available online at Stanford University [13] “The World’s Technological Capacity to Store, Commu-
nicate, and Compute Information”, Martin Hilbert and
• Luciano Floridi, (2010). Information: A Very Short Priscila López (2011), Science (journal), 332(6025), 60-
Introduction, Oxford University Press, Oxford. 65; free access to the article through here: martinhilbert.
net/WorldInfoCapacity.html
• Sandro Nielsen: 'The Effect of Lexicographical In-
formation Costs on Dictionary Making and Use', [14] “video animation on The World’s Technological Capacity
Lexikos 18/2008, 170-189. to Store, Communicate, and Compute Information from
1986 to 2010
• Stewart, Thomas, (2001). Wealth of Knowledge.
[15] Beynon-Davies P. (2002). Information Systems: an in-
Doubleday, New York, NY, 379 p.
troduction to informatics in Organisations. Palgrave, Bas-
• Young, Paul. The Nature of Information (1987). ingstoke, UK. ISBN 0-333-96390-3
Greenwood Publishing Group, Westport, Ct. ISBN [16] Beynon-Davies P. (2009). Business Information Systems.
0-275-92698-2. Palgrave, Basingstoke. ISBN 978-0-230-20368-6

[17] en.wikiversity.org/wiki/Semiotics
29.13 References
[1] http://www.merriam-webster.com/dictionary/ 29.14 External links
information
• Semantic Conceptions of Information Review by
[2] A short overview is found in: Luciano Floridi (2010). Luciano Floridi for the Stanford Encyclopedia of
Information - A Very Short Introduction. Oxford Univer-
Philosophy
sity Press. ISBN 0-19-160954-4. The goal of this volume
is to provide an outline of what information is... • Principia Cybernetica entry on negentropy
[3] Stephen B. Wicker, Saejoon Kim (2003). Fundamentals • Fisher Information, a New Paradigm for Science:
of Codes, Graphs, and Iterative Decoding. Springer. pp.
Introduction, Uncertainty principles, Wave equa-
1 ff. ISBN 1-4020-7264-3.
tions, Ideas of Escher, Kant, Plato and Wheeler.
[4] Dusenbery, David B. (1992). Sensory Ecology. W.H. This essay is continually revised in the light of on-
Freeman., New York. ISBN 0-7167-2333-6. going research.
[5] Vigo, R. (2011). “Representational information: • How Much Information? 2003 an attempt to es-
a new general notion and measure of informa- timate how much new information is created each
tion”. Information Sciences. 181: 4847–4859. year (study was produced by faculty and students at
doi:10.1016/j.ins.2011.05.020. the School of Information Management and Systems
[6] Vigo, R (2013). “Complexity over Uncertainty in Gen- at the University of California at Berkeley)
eralized Representational Information Theory (GRIT): A
Structure-Sensitive General Theory of Information”. In-
• (Danish) Informationsordbogen.dk The Danish Dic-
formation. 4 (1): 1–30. doi:10.3390/info4010001. tionary of Information Terms / Informationsordbo-
gen
[7] Vigo, R. (2014). Mathematical Principles of Human
Conceptual Behavior: The Structural Nature of Concep-
tual Representation and Processing. Scientific Psychol-
ogy Series, Routledge, New York and London; ISBN
0415714362.

[8] Shannon, Claude E. (1949). The Mathematical Theory of


Communication.

[9] Casagrande, David (1999). “Information as verb: Re-


conceptualizing information for cognitive and ecological
models” (PDF). Journal of Ecological Anthropology. 3
(1): 4–13. doi:10.5038/2162-4593.3.1.1.
Chapter 30

Institute of Electrical and Electronics


Engineers

“IEEE” redirects here. It is not to be confused with IEE.


Warning: Page using Template:Infobox organization
with unknown parameter “tax_exempt” (this message is
shown only in preview).

The Institute of Electrical and Electronics Engineers


(IEEE, pronounced “I triple E”)[2] is a professional as-
sociation with its corporate office in New York City and
its operations center in Piscataway, New Jersey. It was
formed in 1963 from the amalgamation of the American
Institute of Electrical Engineers and the Institute of Radio
Engineers. Today, it is the world’s largest association of
technical professionals with more than 400,000 members
in chapters around the world. Its objectives are the edu-
cational and technical advancement of electrical and elec-
tronic engineering, telecommunications, computer engi-
neering and allied disciplines.

30.1 Name
IEEE stands for the “Institute of Electrical and Electron-
ics Engineers”. The association is chartered under this
full legal name. IEEE’s membership has long been com-
posed of engineers and scientists. Allied professionals The IEEE corporate office is on the 17th floor of 3 Park Avenue
who are members include computer scientists, software in New York City
developers, information technology professionals, physi-
cists, and medical doctors, in addition to IEEE’s electrical
tems. The IRE concerned mostly radio engineering, and
and electronics engineering core. For this reason the or-
was formed from two smaller organizations, the Society
ganization no longer goes by the full name, except on legal
of Wireless and Telegraph Engineers and the Wireless In-
business documents, and is referred to simply as IEEE.
stitute. With the rise of electronics in the 1930s, electron-
The IEEE is dedicated to advancing technological inno- ics engineers usually became members of the IRE, but the
vation and excellence. It has about 430,000 members in applications of electron tube technology became so ex-
about 160 countries, slightly less than half of whom reside tensive that the technical boundaries differentiating the
in the United States.[3][4] IRE and the AIEE became difficult to distinguish. Af-
ter World War II, the two organizations became increas-
ingly competitive, and in 1961, the leadership of both the
30.2 History IRE and the AIEE resolved to consolidate the two orga-
nizations. The two organizations formally merged as the
The major interests of the AIEE were wire communica- IEEE on January 1, 1963.
tions (telegraphy and telephony) and light and power sys- Notable presidents of IEEE and its founding organi-

176
30.4. PUBLICATIONS 177

zations include Elihu Thomson (AIEE, 1889–1890), by various engineering societies as a formal repository
Alexander Graham Bell (AIEE, 1891–1892), Charles of topic articles, oral histories, first-hand histories, Land-
Proteus Steinmetz (AIEE, 1901–1902), Robert H. Mar- marks + Milestones and archival documents. The IEEE
riott (IRE, 1912), Lee De Forest (IRE, 1930), Frederick History Center is annexed to Stevens University Hobo-
E. Terman (IRE, 1941), William R. Hewlett (IRE, 1954), ken, NJ.
Ernst Weber (IRE, 1959; IEEE, 1963), and Ivan Getting In 2016, the IEEE acquired GlobalSpec, adding the pro-
(IEEE, 1978). vision of engineering data for a profit to its organizational
portfolio.[7]

30.3 Organization
30.4 Publications
The IEEE is incorporated under the Not-for-Profit Cor-
poration Law of the state of New York.[5] It was formed
Main article: List of Institute of Electrical and Electron-
in 1963 by the merger of the Institute of Radio Engineers
ics Engineers publications
(IRE, founded 1912) and the American Institute of Elec-
trical Engineers (AIEE, founded 1884).
IEEE produces over 30% of the world’s literature in the
IEEE’s Constitution defines the purposes of the organi-
electrical and electronics engineering and computer sci-
zation as “scientific and educational, directed toward the
ence fields, publishing well over 100 peer-reviewed jour-
advancement of the theory and practice of Electrical,
nals.[8]
Electronics, Communications and Computer Engineer-
ing, as well as Computer Science, the allied branches The published content in these journals as well as the con-
of engineering and the related arts and sciences.”[1] In tent from several hundred annual conferences sponsored
pursuing these goals, the IEEE serves as a major pub- by the IEEE are available in the IEEE online digital li-
lisher of scientific journals and organizer of conferences, brary, IEEE Xplore, for subscription-based access and in-
workshops, and symposia (many of which have associ- dividual publication purchases.[9]
ated published proceedings). It is also a leading standards In addition to journals and conference proceedings, the
development organization for the development of indus- IEEE also publishes tutorials and the standards that are
trial standards (having developed over 900 active indus- produced by its standardization committees.
try technical standards) in a broad range of disciplines,
including electric power and energy, biomedical technol-
ogy and healthcare, information technology, information
assurance, telecommunications, consumer electronics,
30.5 Educational activities
transportation, aerospace, and nanotechnology. IEEE de-
velops and participates in educational activities such as The IEEE provides learning opportunities within the en-
accreditation of electrical engineering programs in insti- gineering sciences, research, and technology. The goal
tutes of higher learning. The IEEE logo is a diamond- of the IEEE education programs is to ensure the growth
shaped design which illustrates the right hand grip rule of skill and knowledge in the electricity-related technical
embedded in Benjamin Franklin's kite, and it was created professions and to foster individual commitment to con-
at the time of the 1963 merger.[6] tinuing education among IEEE members, the engineering
and scientific communities, and the general public.
IEEE has a dual complementary regional and technical
structure – with organizational units based on geogra- IEEE offers educational opportunities such as IEEE e
[10] [11]
phy (e.g., the IEEE Philadelphia Section, the IEEE Bue- Learning Library, the Education Partners Program,
[12]
naventura Section, IEEE South Africa Section ) and tech- Standards in Education and Continuing Education
[13]
nical focus (e.g., the IEEE Computer Society). It man- Units (CEUs).
ages a separate organizational unit (IEEE-USA) which IEEE eLearning Library is a collection of online edu-
recommends policies and implements programs specifi- cational courses designed for self-paced learning. Ed-
cally intended to benefit the members, the profession and ucation Partners, exclusive for IEEE members, offers
the public in the United States. on-line degree programs, certifications and courses at a
The IEEE includes 39 technical Societies, organized 10% discount. The Standards in Education website ex-
around specialized technical fields, with more than 300 plains what standards are and the importance of devel-
local organizations that hold regular meetings. oping and using them. The site includes tutorial mod-
ules and case illustrations to introduce the history of stan-
The IEEE Standards Association is in charge of the stan- dards, the basic terminology, their applications and im-
dardization activities of the IEEE. pact on products, as well as news related to standards,
The IEEE History Center became a feeder organiza- book reviews and links to other sites that contain in-
tion to the Engineering and Technology History Wiki formation on standards. Currently, twenty-nine states
(ETHW) in 2015. The new ETHW is a cooperative effort in the United States require Professional Development
178 CHAPTER 30. INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS

Hours (PDH) to maintain a Professional Engineering li- 802.11 Wireless Networking standard.
cense, encouraging engineers to seek Continuing Educa-
tion Units (CEUs) for their participation in continuing
education programs. CEUs readily translate into Pro- 30.8 Membership and member
fessional Development Hours (PDHs), with 1 CEU be-
ing equivalent to 10 PDHs. Countries outside the United grades
States, such as South Africa, similarly require continuing
professional development (CPD) credits, and it is antic- Most IEEE members are electrical and electronics en-
ipated that IEEE Expert Now courses will feature in the gineers, but the organization’s wide scope of interests
CPD listing for South Africa. has attracted people in other disciplines as well (e.g.,
IEEE also sponsors a website [14]
designed to help young computer science, software engineering, mechanical
people better understand engineering, and how an engi- engineering, civil engineering, biology, physics, and
neering career can be made part of their future. Stu- mathematics).
dents of age 8–18, parents, and teachers can explore An individual can join the IEEE as a student member,
the site to prepare for an engineering career, ask experts professional member, or associate member. In order to
engineering-related questions, play interactive games, ex- qualify for membership, the individual must fulfill certain
plore curriculum links, and review lesson plans. This academic or professional criteria and abide to the code of
website also allows students to search for accredited engi- ethics and bylaws of the organization. There are several
neering degree programs in Canada and the United States; categories and levels of IEEE membership and affiliation:
visitors are able to search by state/province/territory,
country, degree field, tuition ranges, room and board • Student Members: Student membership is avail-
ranges, size of student body, and location (rural, subur- able for a reduced fee to those who are enrolled in
ban, or urban). an accredited institution of higher education as un-
Through the Student Activities Committee, IEEE facili- dergraduate or graduate students in technology or
tates partnership between student activities and all other engineering.
IEEE entities.[15]
• Graduate Student Members: Graduate Student
Membership is discounted but members at this level
have greater privileges than do Student Members.
30.6 IEEE Conferences
• Members: Ordinary or professional Membership
requires that the individual have graduated from a
The Institute of Electrical and Electronics Engineers technology or engineering program of an appropri-
sponsors more than 1,600 annual conferences and meet- ately accredited institution of higher education or
ings worldwide. IEEE is also highly involved in the tech- have demonstrated professional competence in tech-
nical program development of numerous events includ- nology or engineering through at least six years of
ing trade events, training workshops, job fairs, and other professional work experience. An associate mem-
programs.[16] bership is available to an individual whose area of
expertise falls outside the scope of the IEEE or who
does not, at the time of enrollment, meet all the re-
30.7 Standards and development quirements for full membership. Students and As-
sociates have all the privileges of members, except
process the right to vote and hold certain offices.

Main article: IEEE Standards Association • Society Affiliates: Some IEEE Societies also allow
a person who is not an IEEE member to become a
Society Affiliate of a particular Society within the
IEEE is one of the leading standards-making organiza- IEEE, which allows a limited form of participation
tions in the world. IEEE performs its standards mak- in the work of a particular IEEE Society.
ing and maintaining functions through the IEEE Stan-
dards Association (IEEE-SA). IEEE standards affect a • Senior Members: Upon meeting certain require-
wide range of industries including: power and energy, ments, a professional member can apply for Senior
biomedical and healthcare, Information Technology (IT), Membership, which is the highest level of recogni-
telecommunications, transportation, nanotechnology, in- tion that a professional member can directly apply
formation assurance, and many more. In 2013, IEEE had for. Applicants for Senior Member must have at
over 900 active standards, with over 500 standards under least three letters of recommendation from Senior,
development. One of the more notable IEEE standards is Fellow, or Honorary members and fulfill other rig-
the IEEE 802 LAN/MAN group of standards which in- orous requirements of education, achievement, re-
cludes the IEEE 802.3 Ethernet standard and the IEEE markable contribution, and experience in the field.
30.9. AWARDS 179

The Senior Members are a selected group, and cer- • IEEE Medal for Environmental and Safety Tech-
tain IEEE officer positions are available only to Se- nologies
nior (and Fellow) Members. Senior Membership is
also one of the requirements for those who are nom- • IEEE Medal in Power Engineering
inated and elevated to the grade IEEE Fellow, a dis- • IEEE Richard W. Hamming Medal (for information
tinctive honor. technology)
• Fellow Members: The Fellow grade of member- • IEEE Heinrich Hertz Medal (for electromagnetics)
ship is the highest level of membership, and cannot
be applied for directly by the member – instead the • IEEE Jun-ichi Nishizawa Medal for materials and
candidate must be nominated by others. This grade device sciences
of membership is conferred by the IEEE Board of
Directors in recognition of a high level of demon- • IEEE John von Neumann Medal (for computer-
strated extraordinary accomplishment. related technology)

• Honorary Members: Individuals who are not • IEEE Jack S. Kilby Signal Processing Medal
IEEE members but have demonstrated exceptional • IEEE Dennis J. Picard Medal for Radar Technolo-
contributions, such as being a recipient of an IEEE gies and Applications
Medal of Honor, may receive Honorary Membership
from the IEEE Board of Directors. • IEEE Robert N. Noyce Medal (for microelectron-
ics)
• Life Members , Life Senior Members and Life
Fellows: Members who have reached the age of • IEEE Medal for Innovations in Healthcare Technol-
65 and whose number of years of membership plus ogy
their age in years adds up to at least 100 are recog-
nized as Life Members , Life Senior Members or Life • IEEE/RSE Wolfson James Clerk Maxwell Award
Fellows, as appropriate. • IEEE Centennial Medal

30.9 Awards 30.9.2 Technical field awards


• IEEE Biomedical Engineering Award
Through its awards program, the IEEE recognizes contri-
butions that advance the fields of interest to the IEEE. For • IEEE Cledo Brunetti Award (for nanotechnology
nearly a century, the IEEE Awards Program has paid trib- and miniaturization)
ute to technical professionals whose exceptional achieve-
ments and outstanding contributions have made a lasting • IEEE Claude E. Shannon Award in Information
impact on technology, society and the engineering pro- Theory
fession.
• IEEE Components, Packaging, and Manufacturing
Funds for the awards program, other than those provided Technologies Award
by corporate sponsors for some awards, are administered
by the IEEE Foundation. • IEEE Control Systems Award

• IEEE Electromagnetics Award


30.9.1 Medals • IEEE James L. Flanagan Speech and Audio Pro-
cessing Award
• IEEE Medal of Honor
• IEEE Andrew S. Grove Award (for solid-state de-
• IEEE Edison Medal vices)
• IEEE Founders Medal (for leadership, planning, and • IEEE Herman Halperin Electric Transmission and
administration) Distribution Award
• IEEE James H. Mulligan, Jr. Education Medal • IEEE Masaru Ibuka Consumer Electronics Award
• IEEE Alexander Graham Bell Medal (for commu- • IEEE Innovation in Societal Infrastructure Award
nications engineering)
• IEEE Internet Award
• IEEE Simon Ramo Medal (for systems engineering)
• IEEE Reynold B. Johnson Data Storage Device
• IEEE Medal for Engineering Excellence Technology Award
180 CHAPTER 30. INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS

• IEEE Reynold B. Johnson Information Storage Sys- 30.9.3 Recognitions


tems Award
• IEEE Haraden Pratt Award
• IEEE Richard Harold Kaufmann Award (for
industrial systems engineering) • IEEE Richard M. Emberson Award
• IEEE Corporate Innovation Recognition
• IEEE Joseph F. Keithley Award in Instrumentation
and Measurement • IEEE Ernst Weber Engineering Leadership Recog-
nition
• IEEE Gustav Robert Kirchhoff Award (for
electronic circuits and systems) • IEEE Honorary Membership

• IEEE Leon K. Kirchmayer Graduate Teaching


Award 30.9.4 Prize paper awards

• IEEE Koji Kobayashi Computers and Communica- • IEEE Donald G. Fink Prize Paper Award
tions Award • IEEE W.R.G. Baker Award
• IEEE William E. Newell Power Electronics Award
30.9.5 Scholarships
• IEEE Daniel E. Noble Award (for emerging tech-
nologies) • IEEE Life Members Graduate Study Fellowship
in Electrical Engineering was established by the
• IEEE Donald O. Pederson Award in Solid-State Cir-
IEEE in 2000. The fellowship is awarded annually
cuits
to a first year, full-time graduate student obtaining
• IEEE Frederik Philips Award (for management of their masters for work in the area of electrical engi-
research and development) neering, at an engineering school/program of recog-
nized standing worldwide.[17]
• IEEE Photonics Award • IEEE Charles LeGeyt Fortescue Graduate
Scholarship was established by the IRE in 1939
• IEEE Emanuel R. Piore Award (for information
to commemorate Charles Legeyt Fortescue's contri-
processing systems in computer science)
butions to electrical engineering. The scholarship
• IEEE Judith A. Resnik Award (for space engineer- is awarded for one year of full-time graduate work
ing) obtaining their masters in electrical engineering an
ANE engineering school of recognized standing in
• IEEE Robotics and Automation Award the United States.[18]

• IEEE Frank Rosenblatt Award (for biologically and


linguistically motivated computational paradigms 30.9.6 Student Activities
such as neural networks
IEEE offers many student awards, competitions, and
• IEEE David Sarnoff Award (for electronics) other opportunities to get actively involved.

• IEEE Charles Proteus Steinmetz Award (for • Competitions


standardization)
• IEEEXtreme Programming Competition
• IEEE Marie Sklodowska-Curie Award (for nuclear
• IEEEmadC
and plasma engineering)
• Student Branch Awards
• IEEE Eric E. Sumner Award (for communications
technology) • Scholarships, Grants, and Fellowships

• IEEE Undergraduate Teaching Award

• IEEE Nikola Tesla Award (for power technology)


30.10 Societies

• IEEE Kiyo Tomiyasu Award (for technologies hold- Various technical areas are addressed by IEEE’s 39 soci-
ing the promise of innovative applications) eties, each one focused on a certain knowledge area. They
provide specialized publications, conferences, business
• IEEE Transportation Technologies Award networking and sometimes other services.[19][20]
30.11. TECHNICAL COUNCILS 181

• IEEE Aerospace and Electronic Systems Society • IEEE Systems, Man & Cybernetics Society
• IEEE Antennas & Propagation Society • IEEE Ultrasonics, Ferroelectrics & Frequency Con-
trol Society
• IEEE Broadcast Technology Society
• IEEE Technology and Engineering Management
• IEEE Circuits and Systems Society Society
• IEEE Communications Society • IEEE Vehicular Technology Society
• IEEE Components, Packaging & Manufacturing
Technology Society
30.11 Technical councils
• IEEE Computational Intelligence Society
• IEEE Computer Society IEEE technical councils are collaborations of several
IEEE societies on a broader knowledge area. There are
• IEEE Consumer Electronics Society currently seven technical councils:[19][21]
• IEEE Control Systems Society
• IEEE Biometrics Council
• IEEE Dielectrics & Electrical Insulation Society
• IEEE Council on Electronic Design Automation
• IEEE Education Society
• IEEE Nanotechnology Council
• IEEE Electromagnetic Compatibility Society
• IEEE Sensors Council
• IEEE Electron Devices Society
• IEEE Council on Superconductivity
• IEEE Engineering in Medicine and Biology Society
• IEEE Systems Council
• IEEE Geoscience and Remote Sensing Society
• IEEE Council on RFID (CRFID)
• IEEE Industrial Electronics Society
• IEEE Industry Applications Society
30.12 Technical committees
• IEEE Information Theory Society
To allow a quick response to new innovations, IEEE
• IEEE Instrumentation & Measurement Society
can also organize technical committees on top of their
• IEEE Intelligent Transportation Systems Society societies and technical councils. There are currently two
such technical committees:[19]
• IEEE Magnetics Society
• IEEE Microwave Theory and Techniques Society • IEEE Committee on Earth Observation (ICEO)

• IEEE Nuclear and Plasma Sciences Society


• IEEE Oceanic Engineering Society
30.13 Organizational units
• IEEE Photonics Society • Technical Activities Board (TAB)
• IEEE Power Electronics Society
• IEEE Power & Energy Society 30.14 IEEE Foundation
• IEEE Product Safety Engineering Society
The IEEE Foundation is a charitable foundation estab-
• IEEE Professional Communication Society lished in 1973 to support and promote technology educa-
tion, innovation and excellence.[22] It is incorporated sep-
• IEEE Reliability Society arately from the IEEE, although it has a close relationship
to it. Members of the Board of Directors of the founda-
• IEEE Robotics and Automation Society
tion are required to be active members of IEEE, and one
• IEEE Signal Processing Society third of them must be current or former members of the
IEEE Board of Directors.
• IEEE Society on Social Implications of Technology
Initially, the IEEE Foundation’s role was to accept and
• IEEE Solid-State Circuits Society administer donations for the IEEE Awards program, but
182 CHAPTER 30. INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS

donations increased beyond what was necessary for this [13] IEEE – IEEE Continuing Education Units
purpose, and the scope was broadened. In addition to so-
[14] Welcome to TryEngineering.org
liciting and administering unrestricted funds, the founda-
tion also administers donor-designated funds supporting [15] http://www.ieee.org/membership_services/membership/
particular educational, humanitarian, historical preserva- students/activities_committee.html
tion, and peer recognition programs of the IEEE.[22] As
of the end of 2014, the foundation’s total assets were [16] “IEEE Conferences & Events”. www.ieee.org. Retrieved
2015-10-22.
nearly $45 million, split equally between unrestricted and
donor-designated funds.[23] [17] IEEE Life Member Graduate Study Fellowship. Re-
trieved on 2010-01-23.

[18] Charles LeGeyt Fortescue Graduate Scholarship. Re-


30.15 See also trieved on 2010-01-23.

• Glossary of electrical and electronics engineering [19] “IEEE Societies & Communities”. IEEE. Retrieved
November 7, 2010.
• Certified Software Development Professional
[20] “IEEE Society Memberships”. IEEE. Retrieved Novem-
(CSDP) Program of the IEEE Computer Society
ber 7, 2010.
• Eta Kappa Nu, the electrical and computer engi- [21] “IEEE Technical Councils”. IEEE. Retrieved November
neering honor society of the IEEE 8, 2010.
• Institution of Engineering and Technology [22] IEEE Foundation Home page
• Association of Scientists, Developers and Faculties [23] IEEE Foundation Overview page

• How many SCIgen papers in Computer Science?

• IEEE Cloud Computing 30.17 External links


• Official IEEE website
30.16 Notes and references
• Engineering and Technology History Wiki – a
Mediawiki-based website containing information
[1] “IEEE Technical Activities Board Operations Manual”
about the history of various engineering societies,
(PDF). IEEE. Retrieved December 7, 2010., section 1.3
Technical activities objectives including IEEE, its members, their professions, and
their technologies.
[2] http://www.ieee.org/about/ieee_history.html
• IEEE Xplore – the IEEE Xplore Digital Library,
[3] “IEEE at a Glance > IEEE Quick Facts”. IEEE. Decem- with over 2.6 million technical documents available
ber 31, 2010. Retrieved August 14, 2013. online for purchase.
[4] “IEEE 2013 Annual Report”. IEEE. March 2014. Re- • IEEE.tv – a video content website operated by the
trieved March 24, 2014. IEEE.
[5] “IEEE Technical Activities Board Operations Manual”
• IEEE Fellows Directory – A comprehensive online
(PDF). IEEE. Retrieved November 10, 2010., section 1.1
IEEE Incorporation
directory of IEEE Fellows.

[6] “IEEE – Master Brand and Logos”. www.ieee.org. Re- • IEEE eLearning Library – an online library of more
trieved 2011-01-28. than 200 self-study multimedia short courses and tu-
torials in technical fields of interest to the IEEE.
[7] “IEEE Acquires GlobalSpec and the Engineering360 Plat-
form from IHS to Create Powerful New Resource for the
Global Engineering Community”. IEEE. April 29, 2016.
Retrieved 2016-04-29.

[8] About IEEE

[9] IEEE’s online digital library

[10] IEEE – IEEE Expert Now

[11] IEEE – IEEE Education Partners Program

[12] IEEE – The IEEE Standards Education pages have moved


Chapter 31

Interaction protocol

Interaction protocols are possible communication sce-


narios between individual agents in multi-agent systems.
FIPA defines markup for interaction protocol diagrams
and several standard interaction protocols, including
Dutch auction, English auction and reply-response.

183
Chapter 32

International Organization for


Standardization

“ISO” redirects here. For other uses, see ISO (disam- 32.2 Name and abbreviations
biguation).
The three official languages of the ISO are English,
The International Organization for Standardization French, and Russian.[3] The name of the organization
(ISO) is an international standard-setting body composed in French is Organisation internationale de normalisa-
of representatives from various national standards orga- tion, and in Russian, Международная организация по
nizations. стандартизации. According to the ISO, as its name
in different languages would have different abbreviations
Founded on 23 February 1947, the organization pro-
(“IOS” in English, “OIN” in French, etc.), the organiza-
motes worldwide proprietary, industrial and commercial
tion adopted “ISO” as its abbreviated name in reference
standards. It is headquartered in Geneva, Switzerland,[4]
to the Greek word isos (ἴσος, meaning equal).[6] How-
and as of 2015 works in 196 countries.[5]
ever, during the founding meetings of the new organiza-
It was one of the first organizations granted general con- tion, this Greek word was not invoked, so this explanation
sultative status with the United Nations Economic and So- may have been imagined later.[7]
cial Council.
Both the name “ISO” and the logo are registered trade-
marks, and their use is restricted.[8]

32.3 History
32.1 Overview

ISO, the International Organization for Standardization,


is an independent, non-governmental organization, the
members of which are the standards organizations of the
162 member countries. It is the world’s largest developer
of voluntary international standards and facilitates world
trade by providing common standards between nations.
Nearly twenty thousand standards have been set covering
Plaque marking the building in Prague where the ISO’s predeces-
everything from manufactured products and technology
sor, the ISA, was founded.
to food safety, agriculture and healthcare.[4] (Click to enlarge / read.)
Use of the standards aids in the creation of products
and services that are safe, reliable and of good quality. The organization today known as ISO began in 1926 as
The standards help businesses increase productivity while the International Federation of the National Standardiz-
minimizing errors and waste. By enabling products from ing Associations (ISA). It was suspended in 1942[9] dur-
different markets to be directly compared, they facili- ing World War II, but after the war ISA was approached
tate companies in entering new markets and assist in the by the recently formed United Nations Standards Coor-
development of global trade on a fair basis. The stan- dinating Committee (UNSCC) with a proposal to form
dards also serve to safeguard consumers and the end-users a new global standards body. In October 1946, ISA and
of products and services, ensuring that certified products UNSCC delegates from 25 countries met in London and
conform to the minimum standards set internationally.[4] agreed to join forces to create the new International Or-

184
32.6. FINANCING 185

ganization for Standardization; the new organization of-


ficially began operations in February 1947.[10]

32.4 Structure
ISO is a voluntary organization whose members are rec-
ognized authorities on standards, each one representing
one country. Members meet annually at a General As-
sembly to discuss ISO’s strategic objectives. The orga- ISO member countries with a national standards body and ISO
nization is coordinated by a Central Secretariat based in voting rights.
Geneva.[11] Correspondent members (countries without a national standards
body).
A Council with a rotating membership of 20 member
Subscriber members (countries with small economies).
bodies provides guidance and governance, including set- Non-member countries with ISO 3166-1 codes.
[11][12]
ting the Central Secretariat’s annual budget.
The Technical Management Board is responsible for
over 250 technical committees, who develop the ISO
• Member bodies are national bodies considered the
standards.[11][13][14][15]
most representative standards body in each country.
These are the only members of ISO that have voting
rights.
32.4.1 IEC joint committees
• Correspondent members are countries that do not
ISO has formed joint committees with the International have their own standards organization. These mem-
Electrotechnical Commission (IEC) to develop standards bers are informed about ISO’s work, but do not par-
and terminology in the areas of electrical, electronic and ticipate in standards promulgation.
related technologies.
• Subscriber members are countries with small
economies. They pay reduced membership fees,
ISO/IEC JTC 1 but can follow the development of standards.

Information technology
Participating members are called “P” members, as op-
posed to observing members, who are called “O” mem-
Main article: ISO/IEC JTC 1 bers.

ISO/IEC Joint Technical Committee 1 (JTC 1) was cre-


ated in 1987 to "[d]evelop, maintain, promote and facili- 32.6 Financing
tate IT standards”.[16]
ISO is funded by a combination of:[18]
ISO/IEC JTC 2
• Organizations that manage the specific projects or
Joint Project Committee – Energy efficiency and re- loan experts to participate in the technical work.
newable energy sources – Common terminology
• Subscriptions from member bodies. These subscrip-
tions are in proportion to each country’s gross na-
ISO/IEC Joint Technical Committee 2 (JTC 2) was tional product and trade figures.
created in 2009 for the purpose of "[s]tandardization
in the field of energy efficiency and renewable energy • Sale of standards.
sources”.[17]

32.7 International Standards and


32.5 Membership other publications
ISO has 162 national members,[2] out of the 206 total See also: List of International Organization for Stan-
countries in the world. dardization standards
ISO has three membership categories:[2]
186 CHAPTER 32. INTERNATIONAL ORGANIZATION FOR STANDARDIZATION

ISO’s main products are international standards. ISO also to existing standards due to minor technical flaws,
publishes technical reports, technical specifications, pub- usability improvements, or limited-applicability ex-
licly available specifications, technical corrigenda, and tensions. They are generally issued with the expec-
guides.[19][20] tation that the affected standard will be updated or
withdrawn at its next scheduled review.[19]
International standards These are designated using
the format ISO[/IEC] [/ASTM] [IS] nnnnn[- ISO guides
p]:[yyyy] Title, where nnnnn is the number of the
standard, p is an optional part number, yyyy is the
These are meta-standards covering “matters related to in-
year published, and Title describes the subject.
ternational standardization”.[19] They are named using the
IEC for International Electrotechnical Commission
format “ISO[/IEC] Guide N:yyyy: Title”.
is included if the standard results from the work
For example:
of ISO/IEC JTC1 (the ISO/IEC Joint Technical
Committee). ASTM (American Society for Testing
and Materials) is used for standards developed in • ISO/IEC Guide 2:2004 Standardization and related
cooperation with ASTM International. yyyy and activities — General vocabulary
IS are not used for an incomplete or unpublished • ISO/IEC Guide 65:1996 General requirements for
standard and may under some circumstances be left bodies operating product certification
off the title of a published work.

Technical reports These are issued when a technical A standard published by ISO/IEC is the last stage
committee or subcommittee has collected data of a of a long process that commonly starts with the pro-
different kind from that normally published as an In- posal of new work within a committee. Here are
ternational Standard,[19] such as references and ex- some abbreviations used for marking a standard with its
planations. The naming conventions for these are status:[21][22][23][24][25][26][27]
the same as for standards, except TR prepended in-
stead of IS in the report’s name. • PWI – Preliminary Work Item
For example:
• NP or NWIP – New Proposal / New Work Item Pro-
posal (e.g., ISO/IEC NP 23007)
• ISO/IEC TR 17799:2000 Code of Practice for In-
formation Security Management • AWI – Approved new Work Item (e.g., ISO/IEC
• ISO/TR 19033:2000 Technical product documenta- AWI 15444-14)
tion — Metadata for construction documentation • WD – Working Draft (e.g., ISO/IEC WD 27032)
Technical and publicly available specifications • CD – Committee Draft (e.g., ISO/IEC CD 23000-
Technical specifications may be produced when 5)
“the subject in question is still under development
or where for any other reason there is the future • FCD – Final Committee Draft (e.g., ISO/IEC FCD
but not immediate possibility of an agreement to 23000-12)
publish an International Standard”. A publicly • DIS – Draft International Standard (e.g., ISO/IEC
available specification is usually “an intermediate DIS 14297)
specification, published prior to the development
of a full International Standard, or, in IEC may be • FDIS – Final Draft International Standard (e.g.,
a 'dual logo' publication published in collaboration ISO/IEC FDIS 27003)
with an external organization”.[19] By convention,
both types of specification are named in a manner • PRF – Proof of a new International Standard (e.g.,
similar to the organization’s technical reports. ISO/IEC PRF 18018)
For example: • IS – International Standard (e.g., ISO/IEC 13818-
1:2007)
• ISO/TS 16952-1:2006 Technical product documen-
tation — Reference designation system — Part 1:
General application rules Abbreviations used for
amendments:[21][22][23][24][25][26][27][28]
• ISO/PAS 11154:2006 Road vehicles — Roof load
carriers • NP Amd – New Proposal Amendment (e.g.,
ISO/IEC 15444-2:2004/NP Amd 3)
Technical corrigenda ISO also sometimes issues “tech-
nical corrigenda” (where “corrigenda” is the plu- • AWI Amd – Approved new Work Item Amendment
ral of corrigendum). These are amendments made (e.g., ISO/IEC 14492:2001/AWI Amd 4)
32.7. INTERNATIONAL STANDARDS AND OTHER PUBLICATIONS 187

• WD Amd – Working Draft Amendment (e.g., ISO The TC/SC may set up working groups (WG) of experts
11092:1993/WD Amd 1) for the preparation of a working drafts. Subcommittees
may have several working groups, which can have several
• CD Amd / PDAmd – Committee Draft Amend- Sub Groups (SG).[31]
ment / Proposed Draft Amendment (e.g., ISO/IEC
13818-1:2007/CD Amd 6) It is possible to omit certain stages, if there is a docu-
ment with a certain degree of maturity at the start of a
• FPDAmd / DAM (DAmd) – Final Proposed Draft standardization project, for example a standard developed
Amendment / Draft Amendment (e.g., ISO/IEC by another organization. ISO/IEC directives allow also
14496-14:2003/FPDAmd 1) the so-called “Fast-track procedure”. In this procedure a
document is submitted directly for approval as a draft In-
• FDAM (FDAmd) – Final Draft Amendment (e.g., ternational Standard (DIS) to the ISO member bodies or
ISO/IEC 13818-1:2007/FDAmd 4) as a final draft International Standard (FDIS) if the doc-
ument was developed by an international standardizing
• PRF Amd – (e.g., ISO 12639:2004/PRF Amd 1)
body recognized by the ISO Council.[23]
• Amd – Amendment (e.g., ISO/IEC 13818- The first step—a proposal of work (New Proposal)
1:2007/Amd 1:2007) is approved at the relevant subcommittee or techni-
cal committee (e.g., SC29 and JTC1 respectively in
Other abbreviations:[25][26][28][29] the case of Moving Picture Experts Group - ISO/IEC
JTC1/SC29/WG11). A working group (WG) of experts
is set up by the TC/SC for the preparation of a working
• TR – Technical Report (e.g., ISO/IEC TR
draft. When the scope of a new work is sufficiently clar-
19791:2006)
ified, some of the working groups (e.g., MPEG) usually
• DTR – Draft Technical Report (e.g., ISO/IEC DTR make open request for proposals—known as a “call for
19791) proposals”. The first document that is produced for exam-
ple for audio and video coding standards is called a ver-
• TS – Technical Specification (e.g., ISO/TS ification model (VM) (previously also called a “simula-
16949:2009) tion and test model”). When a sufficient confidence in the
stability of the standard under development is reached, a
• DTS – Draft Technical Specification (e.g., ISO/DTS working draft (WD) is produced. This is in the form of
11602-1) a standard but is kept internal to working group for revi-
sion. When a working draft is sufficiently solid and the
• PAS – Publicly Available Specification
working group is satisfied that it has developed the best
• TTA – Technology Trends Assessment (e.g., technical solution to the problem being addressed, it be-
ISO/TTA 1:1994) comes committee draft (CD). If it is required, it is then
sent to the P-members of the TC/SC (national bodies) for
• IWA – International Workshop Agreement (e.g., ballot.
IWA 1:2005)
The CD becomes final committee draft (FCD) if the
• Cor – Technical Corrigendum (e.g., ISO/IEC number of positive votes is above the quorum. Succes-
13818-1:2007/Cor 1:2008) sive committee drafts may be considered until consensus
is reached on the technical content. When it is reached,
• Guide – a guidance to technical committees for the the text is finalized for submission as a draft International
preparation of standards Standard (DIS). The text is then submitted to national
bodies for voting and comment within a period of five
International Standards are developed by ISO technical months. It is approved for submission as a final draft In-
committees (TC) and subcommittees (SC) by a process ternational Standard (FDIS) if a two-thirds majority of
with six steps:[23][30] the P-members of the TC/SC are in favour and not more
than one-quarter of the total number of votes cast are neg-
ative. ISO will then hold a ballot with National Bodies
• Stage 1: Proposal stage where no technical changes are allowed (yes/no ballot),
• Stage 2: Preparatory stage within a period of two months. It is approved as an In-
ternational Standard (IS) if a two-thirds majority of the
• Stage 3: Committee stage P-members of the TC/SC is in favour and not more than
one-quarter of the total number of votes cast are nega-
• Stage 4: Enquiry stage tive. After approval, only minor editorial changes are in-
troduced into the final text. The final text is sent to the
• Stage 5: Approval stage
ISO Central Secretariat, which publishes it as the Inter-
• Stage 6: Publication stage national Standard.[21][23]
188 CHAPTER 32. INTERNATIONAL ORGANIZATION FOR STANDARDIZATION

32.8 Products named after ISO of Office Open XML process by saying “I think it de-
values the confidence people have in the standards set-
The fact that many of the ISO-created standards are ubiq- ting process,” and Shuttleworth alleged that ISO did not
uitous has led, on occasion, to common use of “ISO” to carry out its responsibility. He also noted that Microsoft
describe the actual product that conforms to a standard. had intensely lobbied many countries that traditionally
Some examples of this are: had not participated in ISO and stacked technical com-
mittees with Microsoft employees, solution providers and
resellers sympathetic to Office Open XML.
• Many CD images end in the file extension "ISO" to
signify that they are using the ISO 9660 standard
file system as opposed to another file system—hence When you have a process built on trust and
CD images are commonly referred to as “ISOs”. when that trust is abused, ISO should halt the
Virtually all computers with CD-ROM drives that process... ISO is an engineering old boys club
can read CDs use this standard. Some DVD-ROMs and these things are boring so you have to have
also use ISO 9660 file systems. a lot of passion … then suddenly you have an
investment of a lot of money and lobbying and
• Photographic film’s sensitivity to light (its "film you get artificial results. The process is not
speed") is described by ISO 6, ISO 2240 and ISO set up to deal with intensive corporate lobbying
5800. Hence, the film’s speed is often referred to as and so you end up with something being a stan-
by its ISO number. dard that is not clear.[36]

• As it was originally defined in ISO 518, the flash


hot shoe found on cameras is often called the “ISO 32.10 See also
shoe”.

32.11 Notes and references


32.9 Criticism
[1] The three official full names of the ISO can be found at the
beginning of the foreword sections of the PDF document:
With the exception of a small number of isolated “ISO/IEC Guide 2:2004 Standardization and related ac-
standards,[32] ISO standards are normally not available tivities — General vocabulary” (PDF). Archived (PDF)
free of charge, but for a purchase fee,[33] which has been from the original on 21 July 2011.
seen by some as too expensive for small open source
projects.[34] [2] “ISO members”. International Organization for Standard-
ization. Archived from the original on 9 February 2015.
The ISO/IEC JTC1 fast-track procedures (“Fast-track” as
used by OOXML and “PAS” as used by OpenDocument) [3] “How to use the ISO Catalogue”. ISO.org. Archived from
have garnered criticism in relation to the standardization the original on 4 October 2007.
of Office Open XML (ISO/IEC 29500). Martin Bryan,
[4] “About ISO”. ISO. Archived from the original on 4 Oc-
outgoing Convenor of ISO/IEC JTC1/SC34 WG1, is
tober 2007.
quoted as saying:
[5] The number of membre working countries an be found on
the first page of the report. “Annual Report 2013” (PDF).
I would recommend my successor that it is
ISO. Retrieved 18 June 2014.
perhaps time to pass WG1’s outstanding stan-
dards over to OASIS, where they can get ap- [6] “About ISO - Our name”. ISO. Archived from the original
proval in less than a year and then do a PAS on 19 September 2012.
submission to ISO, which will get a lot more at-
tention and be approved much faster than stan- [7] “Friendship among equals” (PDF). ISO. (page 20)
dards currently can be within WG1. [8] “ISO name and logo”. ISO. Archived from the original on
19 September 2012.
The disparity of rules for PAS, Fast-Track
[9] “A Brief History of ISO”. University of Pittsburgh.
and ISO committee generated standards is fast
making ISO a laughing stock in IT circles. The [10] Friendship among equals - Recollections from ISO’s first
days of open standards development are fast fifty years (PDF), International Organization for Stan-
disappearing. Instead we are getting 'standard- dardization, 1997, pp. 15–18, ISBN 92-67-10260-5,
ization by corporation'.[35] archived (PDF) from the original on 26 October 2012

[11] “Structure and governance”. International Organization


Computer security entrepreneur and Ubuntu investor, for Standardization. Archived from the original on 19
Mark Shuttleworth, commented on the Standardization September 2012.
32.12. FURTHER READING 189

[12] “Council”. International Organization for Standardiza- [30] ISO (2008), ISO/IEC Directives, Part 1 - Procedures for the
tion. Archived from the original on 3 November 2012. technical work, Sixth edition, 2008 (PDF), archived (PDF)
from the original on 14 July 2010
[13] “Technical committees”. International Organization for
Standardization. Archived from the original on 19 [31] ISO, IEC (5 November 2009). “ISO/IEC JTC 1/SC 29,
September 2012. SC 29/WG 11 Structure (ISO/IEC JTC 1/SC 29/WG 11 -
Coding of Moving Pictures and Audio)". Archived from
[14] “Who develops ISO standards?". International Organiza- the original on 28 January 2001.
tion for Standardization. Archived from the original on 19
September 2012. [32] “Freely Available Standards”. ISO. 1 February 2011.

[15] “Governance of technical work”. International Organiza- [33] “Shopping FAQs”. ISO. Archived from the original on 5
tion for Standardization. Archived from the original on 19 October 2007.
September 2012.
[34] Jelliffe, Rick (1 August 2007). “Where to get ISO Stan-
[16] “ISO/IEC JTC 1”. International Organization for Stan- dards on the Internet free”. oreillynet.com. Archived
dardization. Archived from the original on 15 December from the original on 24 November 2007. The lack of free
2011. online availability has effectively made ISO standard ir-
relevant to the (home/hacker section of the) Open Source
[17] “ISO/IEC JPC 2 Joint Project Committee - Energy effi- community
ciency and renewable energy sources - Common termi-
nology”. International Organization for Standardization. [35] “Report on WG1 activity for December 2007 Meeting
Archived from the original on 6 October 2012. of ISO/IEC JTC1/SC34/WG1 in Kyoto”. iso/jtc1 sc34.
Archived from the original on 12 August 2007.
[18] “General information on ISO”. ISO. Archived from the
original on 5 October 2007. [36] “Ubuntu’s Shuttleworth blames ISO for OOXML’s win”.
ZDNet.com. 1 April 2008. Archived from the original on
[19] The ISO directives are published in two distinct parts: 4 April 2008.
• “ISO/IEC Directives, Part 1: Procedures for the
technical work” (PDF). ISO/IEC. 2012. Archived
(PDF) from the original on 13 June 2012. 32.12 Further reading
• “ISO/IEC Directives, Part 2: Rules for the structure
and drafting of International Standards” (PDF). • JoAnne Yates and Craig N. Murphy, “Coordinating
ISO/IEC. 2011. Archived (PDF) from the original International Standards: The Formation of the
on 16 October 2011. ISO” (PDF). Archived (PDF) from the original on
22 September 2010. MIT Innovations and En-
[20] ISO. “ISO/IEC Directives and ISO supplement”.
Archived from the original on 16 May 2008.
trepreneurship Seminar Series, Fall 2006.

[21] “About MPEG”. chiariglione.org. Archived from the • Kuert, Willy (1997). “Friendship Among Equals
original on 21 February 2010. - Recollections from ISO’s first fifty years” (PDF).
ISO. Archived (PDF) from the original on 26 Octo-
[22] ISO. “International harmonized stage codes”. Archived ber 2012.
from the original on 4 October 2007.

[23] ISO. “Stages of the development of International Stan-


dards”. Archived from the original on 12 August 2007. 32.13 External links
[24] “The ISO27k FAQ - ISO/IEC acronyms and committees”.
IsecT Ltd. Archived from the original on 24 November • Official website
2005.
• Publicly Available Standards, with free access
[25] ISO (2007). “ISO/IEC Directives Supplement — Proce- to a small subset of the standards.
dures specific to ISO” (PDF). Archived (PDF) from the • Advanced search for standards and/or projects
original on 12 January 2012.
• Concept Database, a terminological database
[26] ISO (2007). “List of abbreviations used throughout ISO of ISO standards.
Online”. Archived from the original on 12 August 2007.
• ISO/IEC JTC1
[27] “US Tag Committee Handbook” (DOC). March 2008.
• Certification Bodies TRA Certification
[28] ISO/IEC JTC1 (2 November 2009), Letter Ballot on the
JTC 1 Standing Document on Technical Specifications and • Personnel Certification
Technical Reports (PDF)

[29] ISO. “ISO deliverables”. Archived from the original on


12 August 2007.
Chapter 33

International Telecommunication Union

“ITU” redirects here. For other uses, see ITU (disam- ITU also organizes worldwide and regional exhibitions
biguation). and forums, such as ITU TELECOM WORLD, bringing
For the hospital department, see Intensive care unit. together representatives of government and the telecom-
The International Telecommunication Union (ITU; munications and ICT industry to exchange ideas, knowl-
edge and technology.
ITU, based in Geneva, Switzerland, is a member of the
United Nations Development Group.[2] ITU has been
an intergovernmental public-private partnership organi-
zation since its inception. Its membership includes 193
Member States and around 700 public and private sector
companies as well as international and regional telecom-
munication entities, known as Sector Members and As-
sociates, which undertake most of the work of each
Sector.[3]

33.1 History

Monument in Bern, Switzerland. The text reads: “Union Télé-


ITU was formed in 1865 at the International Tele-
graphique Internationale fondée à Paris en 1865 sur l'initiative graph Convention; this makes it one of the oldest
du gouvernement français. Érigé par décision de l'Union Télé- intergovernmental organizations in the world.[4][5] ITU
graphique prise à la conférence internationale de Lisbonne en became a United Nations specialized agency in 1947.[5]
1908.” (In English: “International Telegraph Union founded at
Paris in 1865 on the initiative of the French government. [This
monument] erected by a decision of the Telegraph Union made
at the international conference at Lisbon in 1908.”)
33.2 ITU sectors
The ITU comprises three sectors, each managing a dif-
French: Union Internationale des Télécommunications), ferent aspect of the matters handled by the Union, as
originally the International Telegraph Union (French: well as ITU Telecom.[6] The sectors were created dur-
Union Télégraphique Internationale), is a specialized ing the restructuring of ITU at its 1992 Plenipotentiary
agency of the United Nations (UN) that is responsible for Conference.[7]
issues that concern information and communication tech-
nologies.[1]
Radiocommunication (ITU-R) Established in 1927 as
The ITU coordinates the shared global use of the radio the International Radio Consultative Committee or
spectrum, promotes international cooperation in assign- CCIR (from its French name “Comité consultatif
ing satellite orbits, works to improve telecommunication international pour la radio”), this sector manages the
infrastructure in the developing world, and assists in the international radio-frequency spectrum and satellite
development and coordination of worldwide technical orbit resources. In 1992, the CCIR became the ITU-
standards. The ITU is active in areas including broad- R.
band Internet, latest-generation wireless technologies,
aeronautical and maritime navigation, radio astronomy, Standardization (ITU-T) Standardization was the orig-
satellite-based meteorology, convergence in fixed-mobile inal purpose of ITU since its inception. Established
phone, Internet access, data, voice, TV broadcasting, and in 1956 as the International Telephone and Tele-
next-generation networks. graph Consultative Committee or CCITT (from its

190
33.4. LEADERSHIP 191

French name “Comité consultatif international télé-


phonique et télégraphique”), this sector standardizes
global telecommunications (except for radio).[7] In
1993, the CCITT became the ITU-T.
Development (ITU-D) Established in 1992, this sector
helps spread equitable, sustainable and affordable
access to information and communication technolo-
gies (ICT).
ITU Telecom ITU Telecom organizes major events for
the world’s ICT community.

A permanent General Secretariat, headed by the Secre-


tary General, manages the day-to-day work of the Union International Telecommunication Union – anniversary 150
years. Post of Azerbaijan, 2015.
and its sectors.

the Constitution and Convention, the consolidated basic


33.3 Legal framework of ITU texts include the Optional Protocol on the settlement of
disputes, the Decisions, Resolutions and Recommenda-
tions in force, as well as the General Rules of Confer-
ences, Assemblies and Meetings of the Union.

33.4 Leadership
The ITU is headed by a Secretary-General, who is elected
to a four-year term by the member states at the ITU
Plenipotentiary Conference.
On 23 October 2014 Houlin Zhao was elected 19th
Secretary-General of the ITU at the Plenipotentiary Con-
ference in Busan, Republic of Korea. His four-year man-
International Telecommunication Union – 100th anniversary. date started on 1 January 2015, and he was formally in-
U.S. stamp, 1965. augurated on 15 January 2015.[10]

33.5 Directors and Secretaries-


General of ITU

33.6 Membership

International Telecommunication Union – anniversary 125


years. Post of USSR, 1990.

The basic texts of the ITU[8] are adopted by the ITU


Plenipotentiary Conference.[9] The founding document International Telecommunication Union member states
of the ITU was the 1865 International Telegraph Con-
vention, which has since been amended several times and Membership of ITU is open to governments, which may
is now entitled the “Constitution and Convention of the join the Union as Member States, as well as to pri-
International Telecommunication Union”. In addition to vate organizations like carriers, equipment manufactur-
192 CHAPTER 33. INTERNATIONAL TELECOMMUNICATION UNION

ers, funding bodies, research and development organiza- (WCIT-12) in Dubai. WCIT-12 was a treaty-
tions and international and regional telecommunication level conference to address International Telecom-
organizations, which may join ITU as non-voting Sector munications Regulations, the international rules for
Members.[11] telecommunications, including international tariffs.[17]
There are 193 Member States of the ITU, which are all The previous conference to update [18] the Regulations
UN member states, plus Vatican City. [12]
The most re- (ITRs) was held in Melbourne in 1988.
cent member state to join the ITU is South Sudan, which In August 2012, ITU called for a public consultation on a
became a member on 14 July 2011.[13] draft document ahead of the conference.[19] It is claimed
The Republic of China (Taiwan) was blocked from mem- the proposal would allow government restriction or block-
bership by the People’s Republic of China, but never- ing of information disseminated via the internet and cre-
theless received a country code, being listed as “Tai- ate a global regime of monitoring internet communica-
wan, China”.[14] Palestine was admitted as an observer tions, including the demand that those who send and re-
in 2010.[15] ceive information identify themselves. It would also allow
governments to shut down the internet if there is the be-
lief that it may interfere in the internal affairs of other
33.6.1 Regional groupings states or that information of a sensitive nature might be
shared.[20]
Member states of the ITU are organized into six regional Telecommunications ministers from 193 countries at-
groups: tended the conference in Dubai.[20]

• Asia-Pacific Telecommunity (APT)


33.8.1 Changes to international telecom-
• Arab Spectrum Management Group (ASMG) munication regulations
• African Telecommunications Union (ATU)
The current regulatory structure was based on voice
• European Conference of Postal and Telecommuni- telecommunications, when the Internet was still in its
cations Administrations (CEPT) infancy.[21] In 1988, telecommunications operated under
regulated monopolies in most countries. As the Internet
• Inter-American Telecommunication Commission has grown, organizations such as ICANN have come into
(CITEL) existence to manage key resources such as Internet ad-
dresses and Domain Names. Some outside the United
• Regional Commonwealth in the Field of Commu-
States believe that the United States exerts too much in-
nications (RCC - representing former Soviet re-
fluence over the governance of the Internet.[22]
publics)

33.8.2 Proposed changes to the treaty and


33.7 World Summit on the Infor- concerns
mation Society
Current proposals look to take into account the preva-
lence of data communications. Proposals under consid-
Main article: World Summit on the Information Society
eration would establish regulatory oversight by the UN
over security, fraud, traffic accounting as well as traffic
The ITU was one of the UN agencies responsible for flow, management of Internet Domain Names and IP ad-
convening the World Summit on the Information Society dresses, and other aspects of the Internet that are cur-
(WSIS), along with UNESCO, UNCTAD and UNDP.[16] rently governed either by community-based approaches
The Summit was held as two conferences in 2003 and such as Regional Internet Registries, ICANN, or largely
2005 in Geneva and Tunis, respectively, with the aim of national regulatory frameworks.[23] The move by the ITU
bridging the digital divide. and some countries has alarmed many within the United
States and within the Internet community.[24][25] Indeed,
some European telecommunication services have pro-
33.8 World Conference on Inter- posed a so-called “sender pays” model that would require
sources of Internet traffic to pay destinations, similar to
national Telecommunications the way funds are transferred between countries using the
2012 (WCIT-12) telephone.[26][27]
The WCIT-12 activity has been attacked by Google,
In December 2012, the ITU facilitated The World which has characterized it as a threat to the "...free and
Conference on International Telecommunications 2012 open internet.”[28]
33.9. SEE ALSO 193

On 22 November 2012, the European Parliament passed 33.9 See also


a resolution urging member states to prevent ITU WCIT-
12 activity that would “negatively impact the internet, its
architecture, operations, content and security, business
relations, internet governance and the free flow of infor-
mation online”.[29] The resolution asserted that “the ITU
[...] is not the appropriate body to assert regulatory au-
thority over the internet”.[30]
On 5 December 2012, the lower chamber of the United
States Congress passed a resolution opposing U.N. gov-
ernance of the Internet by a rare unanimous 397–0 vote.
The resolution warned that "... proposals have been put
forward for consideration at the [WCIT-12] that would
fundamentally alter the governance and operation of the
Internet ... [and] would attempt to justify increased gov-
ernment control over the Internet ...”, and stated that the International Telecommunications Union, Geneva
policy of the United States is "... to promote a global In-
ternet free from government control and preserve and ad-
vance the successful Multistakeholder Model that governs
• Federal Communications Commission (FCC)
the Internet today.” The same resolution had previously
been passed unanimously by the upper chamber of the
• Internet Engineering Task Force
Congress in September.[31]
On 14 December 2012, an amended version of the • Internet Governance Forum
Regulations was signed by 89 of the 152 countries. Coun-
tries that did not sign included the United States, Japan, • ICANN
Canada, Germany, New Zealand, India and the United
Kingdom. The Head of the U.S. Delegation, Terry • American Registry for Internet Numbers (ARIN)
Kramer, said “We cannot support a treaty that is not sup-
portive of the multistakeholder model of Internet gov- • RIPE
ernance”. [32][33][34] The disagreement appeared to be
over some language in the revised ITRs referring to ITU • AfriNIC
roles in addressing unsolicited bulk communications, net-
work security, and a resolution on Internet governance • Latin America and Caribbean Network Information
that called for government participation in Internet topics Centre (LACNIC)
at various ITU forums.[35] Despite the significant num-
ber countries not signing, the ITU organisation came out • Internet Society
with a press release: "New global telecoms treaty agreed
in Dubai". • H.331

• ITU Radiocommunication Sector (ITU-R)


• Bulleted list item
• ITU Telecommunication Development Sector (ITU-
D)

33.8.3 WCIT-12 conference participation • ITU Telecommunication Standardization Sector


(ITU-T)
The conference itself was managed by the International
Telecommunication Union (ITU). While certain parts of • ITU-R Recommendations
civil society and industry were able to advise and observe,
active participation was restricted to member states.[36] • ITU-T Recommendations
The Electronic Frontier Foundation expressed concern
at this, calling for a more transparent multi-stakeholder • X.509
process.[37] Some leaked contributions can be found on
the wcitleaks.org web site. Google-affiliated researchers • World Information Society Day
have suggested that the ITU should completely reform its
processes to align itself with the openness and partici- • Working Group on Internet Governance (WGIG)
pation of other multistakeholder organizations concerned
with the Internet.[38] • Child Online Protection (COP)
194 CHAPTER 33. INTERNATIONAL TELECOMMUNICATION UNION

33.10 References [22] “Russia calls for internet revolution”. Indrus.in. 29 May
2012. Retrieved 12 October 2012.
[1] International Telecommunication Union [23] Internet Society. International Telecommunication Regu-
[2] “UNDG Members”. Undg.org. Retrieved 15 May 2012. lations

[24] Mcdowell, Robert M. (21 February 2012). “Robert


[3] “About ITU”. International Telecommunication Union.
McDowell:The U.N. Threat to Internet Freedom”. The
Retrieved 2011-03-20.
Wall Street Journal. Retrieved 12 October 2012.
[4] Norman A. Graham; Robert S. Jordan (22 October 2013).
[25] L. Gordon Crovitz (17 June 2012). “Crovitz: The U.N.'s
The International Civil Service: Changing Role and Con-
Internet Power Grab”. The Wall Street Journal. Retrieved
cepts. Elsevier. p. 105. ISBN 978-1-4831-4799-4.
12 October 2012.
[5] Carl Malamud (1992). Exploring the Internet: A Technical
[26] McCullagh, Declan (7 June 2012). "CNET:U.N. could
Travelogue. Carl Malamud. p. 384. ISBN 978-0-13-
tax U.S.-based Web sites, leaked docs show<". CNET.
296898-0.
Retrieved 12 October 2012.
[6] “Sector Members, Associates and Academia”. ITU. Re-
[27] Trivedi, Shamik (28 June 2012). “FOR APPLE AND
trieved 15 May 2014.
GOOGLE, IS AN UNAVOIDABLE U.N. 'TAX' COM-
[7] Deutsches Institut für Normung (1998). An Introduction ING?". Tax Notes Today – 2012 TNT 126-5.
to Standards and Standardization. Beuth Verlag. p. 266. [28] “Google attacks UN net conference”. BBC News. 21
ISBN 9783410141495. Retrieved 15 May 2014. November 2012. Retrieved 21 November 2012.
[8] “Basic texts of the International Telecommunication [29] “European Parliament warns against UN internet control”.
Union”. Itu.int. Retrieved 15 May 2012. BBC News. 22 November 2012. Retrieved 23 November
2012.
[9] PP10contributions. “2010 Plenipotentiary Conference”.
Itu.int. Retrieved 15 May 2012. [30] “European Parliament resolution on the forthcoming
World Conference on International Telecommunica-
[10] “ITU Management team inauguration on 15 January
tions (WCIT-12) of the International Telecommunication
2015”. Retrieved 25 March 2015.
Union, and the possible expansion of the scope of inter-
[11] “Constitution of ITU: Chapter I – Basic Provisions”. Re- national telecommunication regulations”. 22 November
trieved 14 April 2013. 2012. Retrieved 23 November 2012.

[12] “International Telecommunication Union Member [31] “House approves resolution to keep Internet control out of
States”. International Telecommunication Union. UN hands”. The Hill. 5 December 2012.
Retrieved 18 July 2013.
[32] “U.S. Rejects Telecommunications Treaty”. The New
[13] New Country, New Number – Country code 211 officially York Times. 14 December 2012.
assigned to South Sudan ITU Pressroom, 14 July 2011 [33] “Japan, West snub rules for Net curbs”. Japan Times. 16
[14] “ITU-T : International Numbering Resources : National December 2012.
Numbering Plans : China, Taiwan”. Itu.int. 26 January [34] “WCIT-12 Final Acts Signatories”. International
2007. Retrieved 15 May 2012. Telecommunication Union. Retrieved 16 December
2012.
[15] “Palestine ITU status”. Itu.int. 20 October 2010. Re-
trieved 15 May 2012. [35] Siy, Sherwin. (14 December 2012) On the Results at the
WCIT. Public Knowledge. Retrieved on 28 April 2014.
[16] “World Summit on the Information Society”. itu.int. Re-
trieved 11 October 2012. [36] “Convention of the ITU”. Itu.int. Retrieved 12 October
2012.
[17] “World Conference on International Telecommunications
2012”. Itu.int. Retrieved 12 October 2012. [37] “EFF Joins Coalition Denouncing Secretive WCIT Plan-
ning Process”. Eff.org. 17 May 2012. Retrieved 12 Oc-
[18] “International Telecommunication Regulations” (PDF).
tober 2012.
Retrieved 12 October 2012.
[38] “Ryan/Glick: The ITU Treaty Negotiations: A Call for
[19] “ITU opens public consultation on internet regulation Openness and Participation”. Ssrn.com. Retrieved 12
treaty”. 16 August 2012. Retrieved November 2012. October 2012.
Check date values in: |access-date= (help)

[20] “United Nations wants control of web kill switch”.


news.com.au. 12 November 2012. Retrieved November
2012. Check date values in: |access-date= (help)

[21] Global Internet usage


Chapter 34

Internet

This article is about the worldwide computer network. email, Internet telephony, Internet television music, dig-
For other uses, see Internet (disambiguation). ital newspapers, and video streaming websites. News-
Not to be confused with the World Wide Web. paper, book, and other print publishing are adapting to
website technology, or are reshaped into blogging, web
The Internet is the global system of interconnected feeds and online news aggregators (e.g., Google News).
computer networks that use the Internet protocol suite The entertainment industry was initially the fastest grow-
(TCP/IP) to link billions of devices worldwide. It is a net- ing segment on the Internet. The Internet has enabled and
work of networks that consists of millions of private, pub- accelerated new forms of personal interactions through
lic, academic, business, and government networks of lo- instant messaging, Internet forums, and social network-
cal to global scope, linked by a broad array of electronic, ing. Online shopping has grown exponentially both for
wireless, and optical networking technologies. The Inter- major retailers and small businesses and entrepreneurs, as
net carries an extensive range of information resources it enables firms to extend their "bricks and mortar" pres-
and services, such as the inter-linked hypertext docu- ence to serve a larger market or even sell goods and ser-
ments and applications of the World Wide Web (WWW), vices entirely online. Business-to-business and financial
electronic mail, voice over IP telephony, and peer-to-peer services on the Internet affect supply chains across entire
networks for file sharing. industries.

The origins of the Internet date back to research com- The Internet has no centralized governance in either tech-
missioned by the United States federal government in nological implementation or policies for access and us-
the 1960s to build robust, fault-tolerant communication age; each constituent network sets its own policies.[7]
Only the overreaching definitions of the two principal
via computer networks.[1] The primary precursor net-
work, the ARPANET, initially served as a backbone for name spaces in the Internet, the Internet Protocol address
space and the Domain Name System (DNS), are directed
interconnection of regional academic and military net-
works in the 1980s. The funding of the National Science by a maintainer organization, the Internet Corporation
for Assigned Names and Numbers (ICANN). The tech-
Foundation Network as a new backbone in the 1980s,
as well as private funding for other commercial exten- nical underpinning and standardization of the core proto-
cols is an activity of the Internet Engineering Task Force
sions, led to worldwide participation in the development
of new networking technologies, and the merger of many (IETF), a non-profit organization of loosely affiliated in-
networks.[2] The linking of commercial networks and ternational participants that anyone may associate with by
enterprises by the early 1990s marks the beginning of contributing technical expertise.[8]
the transition to the modern Internet,[3] and generated
a sustained exponential growth as generations of institu-
tional, personal, and mobile computers were connected 34.1 Terminology
to the network. Although the Internet was widely used by
academia since the 1980s, the commercialization incor- See also: Capitalization of “Internet”
porated its services and technologies into virtually every
aspect of modern life.
The term Internet, when used to refer to the specific global
Internet use grew rapidly in the West from the mid-1990s system of interconnected Internet Protocol (IP) networks,
and from the late 1990s in the developing world.[4] In the is a proper noun[9] and may be written with an initial
20 years since 1995, Internet use has grown 100-times, capital letter. In common use and the media, it is of-
measured for the period of one year, to over one third ten not capitalized, viz. the internet. Some guides specify
of the world population.[5][6] Most traditional commu- that the word should be capitalized when used as a noun,
nications media, including telephony, radio, television, but not capitalized when used as an adjective.[10] The In-
paper mail and newspapers are being reshaped or rede- ternet is also often referred to as the Net, as a short form
fined by the Internet, giving birth to new services such as of network. Historically, as early as 1849, the word inter-

195
196 CHAPTER 34. INTERNET

Kleinrock, and the NLS system at SRI International (SRI)


by Douglas Engelbart in Menlo Park, California, on 29
October 1969.[22] The third site was the Culler-Fried In-
teractive Mathematics Center at the University of Cali-
fornia, Santa Barbara, followed by the University of Utah
Graphics Department. In an early sign of future growth,
fifteen sites were connected to the young ARPANET
by the end of 1971.[23][24] These early years were docu-
mented in the 1972 film Computer Networks: The Heralds
of Resource Sharing.
Early international collaborations on the ARPANET were
rare. European developers were concerned with develop-
ing the X.25 networks.[25] Notable exceptions were the
Norwegian Seismic Array (NORSAR) in June 1973, fol-
The Internet Messenger by Buky Schwartz in Holon, Israel. lowed in 1973 by Sweden with satellite links to the Tanum
Earth Station and Peter T. Kirstein's research group in the
United Kingdom, initially at the Institute of Computer
netted was used uncapitalized as an adjective, meaning
Science, University of London and later at University
interconnected or interwoven.[11] The designers of early
College London.[26][27][28] In December 1974, RFC 675
computer networks used internet both as a noun and as a
(Specification of Internet Transmission Control Program),
verb in shorthand form of internetwork or internetwork-
by Vinton Cerf, Yogen Dalal, and Carl Sunshine, used the
ing, meaning interconnecting computer networks.[12]
term internet as a shorthand for internetworking and later
The terms Internet and World Wide Web are often used in- RFCs repeated this use.[29] Access to the ARPANET was
terchangeably in everyday speech; it is common to speak expanded in 1981 when the National Science Foundation
of "going on the Internet" when invoking a web browser (NSF) funded the Computer Science Network (CSNET).
to view web pages. However, the World Wide Web or In 1982, the Internet Protocol Suite (TCP/IP) was stan-
the Web is only one of a large number of Internet ser- dardized, which permitted worldwide proliferation of in-
vices. The Web is a collection of interconnected doc- terconnected networks.
uments (web pages) and other web resources, linked by
hyperlinks and URLs.[13] As another point of compari-
son, Hypertext Transfer Protocol, or HTTP, is the lan-
guage used on the Web for information transfer, yet it is
just one of many languages or protocols that can be used
for communication on the Internet.[14] The term Interweb
is a portmanteau of Internet and World Wide Web typi-
cally used sarcastically to parody a technically unsavvy
user.

34.2 History
T3 NSFNET Backbone, c. 1992.
Main articles: History of the Internet and History of the
World Wide Web TCP/IP network access expanded again in 1986 when
the National Science Foundation Network (NSFNet) pro-
Research into packet switching started in the early vided access to supercomputer sites in the United States
1960s,[15] and packet switched networks such as the for researchers, first at speeds of 56 kbit/s and later at
ARPANET, CYCLADES,[16][17] the Merit Network,[18] 1.5 Mbit/s and 45 Mbit/s.[30] Commercial Internet ser-
NPL network,[19] Tymnet, and Telenet, were devel- vice providers (ISPs) emerged in the late 1980s and early
oped in the late 1960s and 1970s using a variety of 1990s. The ARPANET was decommissioned in 1990.
protocols.[20] The ARPANET project led to the develop- By 1995, the Internet was fully commercialized in the
ment of protocols for internetworking, by which multiple U.S. when the NSFNet was decommissioned, removing
separate networks could be joined into a single network the last restrictions on use of the Internet to carry com-
of networks.[21] ARPANET development began with two mercial traffic.[31] The Internet rapidly expanded in Eu-
network nodes which were interconnected between the rope and Australia in the mid to late 1980s[32][33] and to
Network Measurement Center at the University of Cali- Asia in the late 1980s and early 1990s.[34] The beginning
fornia, Los Angeles (UCLA) Henry Samueli School of of dedicated transatlantic communication between the
Engineering and Applied Science directed by Leonard NSFNET and networks in Europe was established with
34.3. GOVERNANCE 197

a low-speed satellite relay between Princeton University all telecommunicated information was carried over the
and Stockholm, Sweden in December 1988.[35] Although Internet.[46]
other network protocols such as UUCP had global reach
well before this time, this marked the beginning of the
Internet as an intercontinental network. 34.3 Governance
Slightly over a year later in March 1990, the first high-
speed T1 (1.5 Mbit/s) link between the NSFNET and Main article: Internet governance
Europe was installed between Cornell University and The Internet is a global network comprising many vol-
CERN, allowing much more robust communications than
were capable with satellites.[36] Six months later Tim
Berners-Lee would begin writing WorldWideWeb, the
first web browser after two years of lobbying CERN man-
agement. By Christmas 1990, Berners-Lee had built all
the tools necessary for a working Web: the HyperText
Transfer Protocol (HTTP) 0.9,[37] the HyperText Markup
Language (HTML), the first Web browser (which was
also a HTML editor and could access Usenet news-
groups and FTP files), the first HTTP server software
(later known as CERN httpd), the first web server (http:
//info.cern.ch), and the first Web pages that described the
project itself. Public commercial use of the Internet be-
gan in mid-1989 with the connection of MCI Mail and
Compuserve's email capabilities to the 500,000 users of
the Internet. [38] Just months later on January 1, 1990,
PSInet launched an alternate Internet backbone for com- ICANN headquarters in the Playa Vista neighborhood of Los An-
mercial use; one of the networks that would grow into geles, California, United States.
the commercial Internet we know today. In 1991 the
Commercial Internet eXchange was founded, allowing untarily interconnected autonomous networks. It oper-
PSInet to communicate with the other commercial net- ates without a central governing body. The technical
works CERFnet and Alternet. Since 1995 the Internet underpinning and standardization of the core protocols
has tremendously impacted culture and commerce, in- (IPv4 and IPv6) is an activity of the Internet Engineering
cluding the rise of near instant communication by email, Task Force (IETF), a non-profit organization of loosely
instant messaging, telephony (Voice over Internet Pro- affiliated international participants that anyone may asso-
tocol or VoIP), two-way interactive video calls, and the ciate with by contributing technical expertise. To main-
World Wide Web[39] with its discussion forums, blogs, tain interoperability, the principal name spaces of the
social networking, and online shopping sites. Increas- Internet are administered by the Internet Corporation
ing amounts of data are transmitted at higher and higher for Assigned Names and Numbers (ICANN). ICANN
speeds over fiber optic networks operating at 1-Gbit/s, is governed by an international board of directors drawn
10-Gbit/s, or more. from across the Internet technical, business, academic,
The Internet continues to grow, driven by ever greater and other non-commercial communities. ICANN coor-
amounts of online information and knowledge, com- dinates the assignment of unique identifiers for use on
merce, entertainment and social networking.[42] During the Internet, including domain names, Internet Protocol
the late 1990s, it was estimated that traffic on the pub- (IP) addresses, application port numbers in the transport
lic Internet grew by 100 percent per year, while the protocols, and many other parameters. Globally unified
mean annual growth in the number of Internet users was name spaces are essential for maintaining the global reach
thought to be between 20% and 50%.[43] This growth of the Internet. This role of ICANN distinguishes it as
is often attributed to the lack of central administration, perhaps the only central coordinating body for the global
which allows organic growth of the network, as well Internet.[47]
as the non-proprietary nature of the Internet protocols, Regional Internet Registries (RIRs) allocate IP addresses:
which encourages vendor interoperability and prevents
any one company from exerting too much control over • African Network Information Center (AfriNIC) for
the network.[44] As of 31 March 2011, the estimated to- Africa
tal number of Internet users was 2.095 billion (30.2%
of world population).[45] It is estimated that in 1993 • American Registry for Internet Numbers (ARIN)
the Internet carried only 1% of the information flowing for North America
through two-way telecommunication, by 2000 this fig-
ure had grown to 51%, and by 2007 more than 97% of • Asia-Pacific Network Information Centre (APNIC)
for Asia and the Pacific region
198 CHAPTER 34. INTERNET

• Latin American and Caribbean Internet Addresses PoP #3 Tier 1 Networks


Registry (LACNIC) for Latin America and the
Transit

Tier 2 Networks
Caribbean region
Transit

Peering

PoP #2 PoP #1
IXP Tier 2 ISP
• Réseaux IP Européens – Network Coordination Transit
Transit

Centre (RIPE NCC) for Europe, the Middle East,


and Central Asia Tier 3 Network Tier 3 Network
(single homed ISP)
(multi-homed ISP)

The National Telecommunications and Information Ad-


Internet users
ministration, an agency of the United States Depart- (business, consumers, etc)
ment of Commerce, continues to have final approval over
changes to the DNS root zone.[48][49][50] The Internet So-
Packet routing across the Internet involves several tiers of Internet
ciety (ISOC) was founded in 1992 with a mission to “as-
service providers.
sure the open development, evolution and use of the Inter-
net for the benefit of all people throughout the world”.[51]
Its members include individuals (anyone may join) as of scope. End-users who only access the Internet when
well as corporations, organizations, governments, and needed to perform a function or obtain information, rep-
universities. Among other activities ISOC provides an resent the bottom of the routing hierarchy. At the top
administrative home for a number of less formally orga- of the routing hierarchy are the tier 1 networks, large
nized groups that are involved in developing and man- telecommunication companies that exchange traffic di-
aging the Internet, including: the Internet Engineering rectly with each other via peering agreements. Tier 2
Task Force (IETF), Internet Architecture Board (IAB), and lower level networks buy Internet transit from other
Internet Engineering Steering Group (IESG), Internet providers to reach at least some parties on the global
Research Task Force (IRTF), and Internet Research Internet, though they may also engage in peering. An
Steering Group (IRSG). On 16 November 2005, the ISP may use a single upstream provider for connectiv-
United Nations-sponsored World Summit on the Infor- ity, or implement multihoming to achieve redundancy
mation Society in Tunis established the Internet Gover- and load balancing. Internet exchange points are ma-
nance Forum (IGF) to discuss Internet-related issues. jor traffic exchanges with physical connections to mul-
tiple ISPs. Large organizations, such as academic insti-
tutions, large enterprises, and governments, may perform
34.4 Infrastructure the same function as ISPs, engaging in peering and pur-
chasing transit on behalf of their internal networks. Re-
See also: List of countries by number of Internet users search networks tend to interconnect with large subnet-
and List of countries by Internet connection speeds works such as GEANT, GLORIAD, Internet2, and the
The communications infrastructure of the Internet con- UK’s national research and education network, JANET.
Both the Internet IP routing structure and hypertext links
of the World Wide Web are examples of scale-free net-
works.[52] Computers and routers use routing tables in
their operating system to direct IP packets to the next-
hop router or destination. Routing tables are maintained
by manual configuration or automatically by routing pro-
tocols. End-nodes typically use a default route that points
toward an ISP providing transit, while ISP routers use the
Border Gateway Protocol to establish the most efficient
routing across the complex connections of the global In-
ternet.

2007 map showing submarine fiberoptic telecommunication ca-


34.4.2 Access
bles around the world.
Common methods of Internet access by users include
sists of its hardware components and a system of software dial-up with a computer modem via telephone circuits,
layers that control various aspects of the architecture. broadband over coaxial cable, fiber optics or copper
wires, Wi-Fi, satellite and cellular telephone technology
(3G, 4G). The Internet may often be accessed from com-
34.4.1 Routing and service tiers puters in libraries and Internet cafes. Internet access
points exist in many public places such as airport halls
Internet service providers establish the worldwide con- and coffee shops. Various terms are used, such as public
nectivity between individual networks at various levels Internet kiosk, public access terminal, and Web payphone.
34.5. PROTOCOLS 199

Many hotels also have public terminals, though these are simply informative, experimental, or historical, or doc-
usually fee-based. These terminals are widely accessed ument the best current practices (BCP) when implement-
for various usages, such as ticket booking, bank deposit, ing Internet technologies.
or online payment. Wi-Fi provides wireless access to the The Internet standards describe a framework known as
Internet via local computer networks. Hotspots provid- the Internet protocol suite. This is a model architec-
ing such access include Wi-Fi cafes, where users need to ture that divides methods into a layered system of proto-
bring their own wireless devices such as a laptop or PDA. cols, originally documented in RFC 1122 and RFC 1123.
These services may be free to all, free to customers only, The layers correspond to the environment or scope in
or fee-based.
which their services operate. At the top is the application
Grassroots efforts have led to wireless community net- layer, space for the application-specific networking meth-
works. Commercial Wi-Fi services covering large city ods used in software applications. For example, a web
areas are in place in New York, London, Vienna, Toronto, browser program uses the client-server application model
San Francisco, Philadelphia, Chicago and Pittsburgh. and a specific protocol of interaction between servers and
The Internet can then be accessed from such places as clients, while many file-sharing systems use a peer-to-
a park bench.[53] Apart from Wi-Fi, there have been ex- peer paradigm. Below this top layer, the transport layer
periments with proprietary mobile wireless networks like connects applications on different hosts with a logical
Ricochet, various high-speed data services over cellu- channel through the network with appropriate data ex-
lar phone networks, and fixed wireless services. High- change methods.
end mobile phones such as smartphones in general come Underlying these layers are the networking technologies
with Internet access through the phone network. Web that interconnect networks at their borders and hosts via
browsers such as Opera are available on these advanced the physical connections. The Internet layer enables com-
handsets, which can also run a wide variety of other In- puters to identify and locate each other via Internet Pro-
ternet software. More mobile phones have Internet access tocol (IP) addresses, and routes their traffic via interme-
than PCs, though this is not as widely used.[54] An Inter- diate (transit) networks. Last, at the bottom of the archi-
net access provider and protocol matrix differentiates the tecture is the link layer, which provides connectivity be-
methods used to get online. tween hosts on the same network link, such as a physical
connection in the form of a local area network (LAN) or a
dial-up connection. The model, also known as TCP/IP, is
34.4.3 Structure designed to be independent of the underlying hardware,
which the model, therefore, does not concern itself with
Many computer scientists describe the Internet as a in any detail. Other models have been developed, such
“prime example of a large-scale, highly engineered, yet as the OSI model, that attempt to be comprehensive in
highly complex system”.[55] The structure was found to be every aspect of communications. While many similar-
highly robust to random failures,[56] yet, very vulnerable ities exist between the models, they are not compatible
to intentional attacks.[57] The Internet structure and its us- in the details of description or implementation; indeed,
age characteristics have been studied extensively and the TCP/IP protocols are usually included in the discussion
possibility of developing alternative structures has been of OSI networking.
investigated.[58]

Data Application

34.5 Protocols
UDP UDP Transport
header data
While the hardware components in the Internet infras-
tructure can often be used to support other software sys- IP
IP data Internet
tems, it is the design and the standardization process of header
the software that characterizes the Internet and provides
the foundation for its scalability and success. The respon- Frame Frame
Frame data Link
header footer
sibility for the architectural design of the Internet soft-
ware systems has been assumed by the Internet Engineer-
ing Task Force (IETF).[59] The IETF conducts standard- As user data is processed through the protocol stack, each ab-
setting work groups, open to any individual, about the straction layer adds encapsulation information at the sending
various aspects of Internet architecture. Resulting contri- host. Data is transmitted over the wire at the link level between
butions and standards are published as Request for Com- hosts and routers. Encapsulation is removed by the receiving host.
ments (RFC) documents on the IETF web site. The prin- Intermediate relays update link encapsulation at each hop, and
cipal methods of networking that enable the Internet are inspect the IP layer for routing purposes.
contained in specially designated RFCs that constitute the
Internet Standards. Other less rigorous documents are The most prominent component of the Internet model is
200 CHAPTER 34. INTERNET

the Internet Protocol (IP), which provides addressing sys-


tems (IP addresses) for computers on the Internet. IP
enables internetworking and, in essence, establishes the
Internet itself. Internet Protocol Version 4 (IPv4) is the
initial version used on the first generation of the Internet
and is still in dominant use. It was designed to address
up to ~4.3 billion (109 ) Internet hosts. However, the ex-
plosive growth of the Internet has led to IPv4 address ex-
haustion, which entered its final stage in 2011,[60] when
the global address allocation pool was exhausted. A new
protocol version, IPv6, was developed in the mid-1990s,
which provides vastly larger addressing capabilities and
more efficient routing of Internet traffic. IPv6 is currently
in growing deployment around the world, since Internet
address registries (RIRs) began to urge all resource man- This NeXT Computer was used by Tim Berners-Lee at CERN and
agers to plan rapid adoption and conversion.[61] became the world’s first Web server.
IPv6 is not directly interoperable by design with IPv4. In
essence, it establishes a parallel version of the Internet
not directly accessible with IPv4 software. Thus, trans- to share and exchange business logic and data.
lation facilities must exist for internetworking or nodes World Wide Web browser software, such as Microsoft's
must have duplicate networking software for both net- Internet Explorer, Mozilla Firefox, Opera, Apple's
works. Essentially all modern computer operating sys- Safari, and Google Chrome, lets users navigate from one
tems support both versions of the Internet Protocol. Net- web page to another via hyperlinks embedded in the doc-
work infrastructure, however, is still lagging in this devel- uments. These documents may also contain any combi-
opment. Aside from the complex array of physical con- nation of computer data, including graphics, sounds, text,
nections that make up its infrastructure, the Internet is video, multimedia and interactive content that runs while
facilitated by bi- or multi-lateral commercial contracts, the user is interacting with the page. Client-side soft-
e.g., peering agreements, and by technical specifications ware can include animations, games, office applications
or protocols that describe the exchange of data over the and scientific demonstrations. Through keyword-driven
network. Indeed, the Internet is defined by its intercon- Internet research using search engines like Yahoo! and
nections and routing policies. Google, users worldwide have easy, instant access to a
vast and diverse amount of online information. Com-
pared to printed media, books, encyclopedias and tra-
34.6 Services ditional libraries, the World Wide Web has enabled the
decentralization of information on a large scale.
The Internet carries many network services, most promi- The Web has also enabled individuals and organizations
nently mobile apps such as social media apps, the World to publish ideas and information to a potentially large
Wide Web, electronic mail, multiplayer online games, audience online at greatly reduced expense and time de-
Internet telephony, and file sharing services. lay. Publishing a web page, a blog, or building a web-
site involves little initial cost and many cost-free services
are available. However, publishing and maintaining large,
34.6.1 World Wide Web professional web sites with attractive, diverse and up-to-
date information is still a difficult and expensive proposi-
Many people use the terms Internet and World Wide Web, tion. Many individuals and some companies and groups
or just the Web, interchangeably, but the two terms are use web logs or blogs, which are largely used as easily up-
not synonymous. The World Wide Web is the primary datable online diaries. Some commercial organizations
application that billions of people use on the Internet, and encourage staff to communicate advice in their areas of
it has changed their lives immeasurably.[62][63] However, specialization in the hope that visitors will be impressed
the Internet provides many other services. The Web is by the expert knowledge and free information, and be at-
a global set of documents, images and other resources, tracted to the corporation as a result.
logically interrelated by hyperlinks and referenced with One example of this practice is Microsoft, whose product
Uniform Resource Identifiers (URIs). URIs symbol- developers publish their personal blogs in order to pique
ically identify services, servers, and other databases, the public’s interest in their work. Collections of personal
and the documents and resources that they can provide. web pages published by large service providers remain
Hypertext Transfer Protocol (HTTP) is the main access popular and have become increasingly sophisticated.
protocol of the World Wide Web. Web services also use Whereas operations such as Angelfire and GeoCities have
HTTP to allow software systems to communicate in order existed since the early days of the Web, newer offerings
34.6. SERVICES 201

from, for example, Facebook and Twitter currently have no “extra features” may be line-powered only and oper-
large followings. These operations often brand them- ate during a power failure; VoIP can never do so without a
selves as social network services rather than simply as web backup power source for the phone equipment and the In-
page hosts. ternet access devices. VoIP has also become increasingly
Advertising on popular web pages can be lucrative, and popular for gaming applications, as a form of commu-
e-commerce or the sale of products and services directly nication between players. Popular VoIP clients for gam-
via the Web continues to grow. ing include Ventrilo and Teamspeak. Modern video game
consoles also offer VoIP chat features.
When the Web developed in the 1990s, a typical web
page was stored in completed form on a web server, for-
matted in HTML, complete for transmission to a web 34.6.3 Data transfer
browser in response to a request. Over time, the process
of creating and serving web pages has become dynamic, File sharing is an example of transferring large amounts
creating a flexible design, layout, and content. Websites of data across the Internet. A computer file can be
are often created using content management software emailed to customers, colleagues and friends as an attach-
with, initially, very little content. Contributors to these ment. It can be uploaded to a website or File Transfer
systems, who may be paid staff, members of an organiza- Protocol (FTP) server for easy download by others. It can
tion or the public, fill underlying databases with content be put into a “shared location” or onto a file server for in-
using editing pages designed for that purpose while ca- stant use by colleagues. The load of bulk downloads to
sual visitors view and read this content in HTML form. many users can be eased by the use of "mirror" servers
There may or may not be editorial, approval and secu- or peer-to-peer networks. In any of these cases, access
rity systems built into the process of taking newly entered to the file may be controlled by user authentication, the
content and making it available to the target visitors. transit of the file over the Internet may be obscured by
encryption, and money may change hands for access to
the file. The price can be paid by the remote charging of
34.6.2 Communication funds from, for example, a credit card whose details are
also passed – usually fully encrypted – across the Inter-
Email is an important communications service available net. The origin and authenticity of the file received may
on the Internet. The concept of sending electronic text be checked by digital signatures or by MD5 or other mes-
messages between parties in a way analogous to mail- sage digests. These simple features of the Internet, over
ing letters or memos predates the creation of the Inter- a worldwide basis, are changing the production, sale, and
net. Pictures, documents, and other files are sent as email distribution of anything that can be reduced to a com-
attachments. Emails can be cc-ed to multiple email ad- puter file for transmission. This includes all manner of
dresses. print publications, software products, news, music, film,
Internet telephony is another common communications video, photography, graphics and the other arts. This in
service made possible by the creation of the Internet. turn has caused seismic shifts in each of the existing in-
VoIP stands for Voice-over-Internet Protocol, referring dustries that previously controlled the production and dis-
to the protocol that underlies all Internet communication. tribution of these products.
The idea began in the early 1990s with walkie-talkie-like Streaming media is the real-time delivery of digital me-
voice applications for personal computers. In recent years dia for the immediate consumption or enjoyment by
many VoIP systems have become as easy to use and as end users. Many radio and television broadcasters pro-
convenient as a normal telephone. The benefit is that, vide Internet feeds of their live audio and video produc-
as the Internet carries the voice traffic, VoIP can be free tions. They may also allow time-shift viewing or listening
or cost much less than a traditional telephone call, espe- such as Preview, Classic Clips and Listen Again features.
cially over long distances and especially for those with These providers have been joined by a range of pure In-
always-on Internet connections such as cable or ADSL. ternet “broadcasters” who never had on-air licenses. This
VoIP is maturing into a competitive alternative to tradi- means that an Internet-connected device, such as a com-
tional telephone service. Interoperability between differ- puter or something more specific, can be used to ac-
ent providers has improved and the ability to call or re- cess on-line media in much the same way as was pre-
ceive a call from a traditional telephone is available. Sim- viously possible only with a television or radio receiver.
ple, inexpensive VoIP network adapters are available that The range of available types of content is much wider,
eliminate the need for a personal computer. from specialized technical webcasts to on-demand popu-
Voice quality can still vary from call to call, but is of- lar multimedia services. Podcasting is a variation on this
ten equal to and can even exceed that of traditional calls. theme, where – usually audio – material is downloaded
Remaining problems for VoIP include emergency tele- and played back on a computer or shifted to a portable
phone number dialing and reliability. Currently, a few media player to be listened to on the move. These tech-
VoIP providers provide an emergency service, but it is niques using simple equipment allow anybody, with little
not universally available. Older traditional phones with censorship or licensing control, to broadcast audio-visual
202 CHAPTER 34. INTERNET

material worldwide.
Others - 17%

Digital media streaming increases the demand for net-


English - 27%
work bandwidth. For example, standard image quality
needs 1 Mbit/s link speed for SD 480p, HD 720p quality Korean - 2%

requires 2.5 Mbit/s, and the top-of-the-line HDX quality Russian - 3%

needs 4.5 Mbit/s for 1080p.[64] French - 3%

Webcams are a low-cost extension of this phenomenon. Arabic - 3%

While some webcams can give full-frame-rate video, the German - 4%

picture either is usually small or updates slowly. Inter-


Portuguese - 4%
net users can watch animals around an African water-
hole, ships in the Panama Canal, traffic at a local round- Japanese - 5%
Chinese - 25%
about or monitor their own premises, live and in real time. Spanish - 8%
Video chat rooms and video conferencing are also pop-
ular with many uses being found for personal webcams,
with and without two-way sound. YouTube was founded Internet users by language[68]
on 15 February 2005 and is now the leading website for
free streaming video with a vast number of users. It
uses a flash-based web player to stream and show video Others - 11%
files. Registered users may upload an unlimited amount
Portuguese - 2%
of video and build their own personal profile. YouTube
Arabic - 3%
claims that its users watch hundreds of millions, and up-
load hundreds of thousands of videos daily. Currently, Japanese - 4%

YouTube also uses an HTML5 player.[65] French - 4%

Chinese - 4%
English - 55%

34.7 Social impact Spanish - 5%

The Internet has enabled new forms of social interaction, German - 5%

activities, and social associations. This phenomenon has Russian - 6%


given rise to the scholarly study of the sociology of the
Internet. April 2013

Website content languages[69]


34.7.1 Users
See also: Global Internet usage and English on the Inter- users reading blogs, and 2 billion videos viewed daily on
net YouTube.[71] In 2014 the world’s Internet users surpassed
Internet usage has seen tremendous growth. From 2000 3 billion or 43.6 percent of world population, but two-
thirds of the users came from richest countries, with 78.0
80

70
percent of Europe countries population using the Inter-
73
76
78*

net, followed by 57.4 percent of the Americas.[72]


71
67
63
60 61
59
54
50
46
51 The prevalent language for communication on the Inter-
40
36
38
42
38
40* net has been English. This may be a result of the origin
36
30 31
26
30
33

27
30
32* of the Internet, as well as the language’s role as a lingua
24 24
20
17
16
18
21
23

15
17
21 franca. Early computer systems were limited to the char-
14
10 11
5
7 8
11
12

6
7
8 9
12
acters in the American Standard Code for Information
3 4
0
1996
2
0 1
1998
1
2

2000
3

2002 2004 2006 2008 2010 2012 2014


Interchange (ASCII), a subset of the Latin alphabet.
* Estimate

After English (27%), the most requested languages on


Internet users per 100 inhabitants the World Wide Web are Chinese (25%), Spanish (8%),
Japanese (5%), Portuguese and German (4% each),
Source: International Telecommunications Union.[66][67] Arabic, French and Russian (3% each), and Korean
(2%).[68] By region, 42% of the world’s Internet users
to 2009, the number of Internet users globally rose from are based in Asia, 24% in Europe, 14% in North Amer-
394 million to 1.858 billion.[70] By 2010, 22 percent of ica, 10% in Latin America and the Caribbean taken to-
the world’s population had access to computers with 1 gether, 6% in Africa, 3% in the Middle East and 1%
billion Google searches every day, 300 million Internet in Australia/Oceania.[73] The Internet’s technologies have
34.7. SOCIAL IMPACT 203

developed enough in recent years, especially in the use doctoral is available from websites. Examples range from
of Unicode, that good facilities are available for develop- CBeebies, through school and high-school revision guides
ment and communication in the world’s widely used lan- and virtual universities, to access to top-end scholarly lit-
guages. However, some glitches such as mojibake (incor- erature through the likes of Google Scholar. For distance
rect display of some languages’ characters) still remain. education, help with homework and other assignments,
In an American study in 2005, the percentage of men us- self-guided learning, whiling away spare time, or just
ing the Internet was very slightly ahead of the percentage looking up more detail on an interesting fact, it has never
of women, although this difference reversed in those un- been easier for people to access educational information
at any level from anywhere. The Internet in general and
der 30. Men logged on more often, spent more time on-
line, and were more likely to be broadband users, whereas the World Wide Web in particular are important enablers
of both formal and informal education. Further, the In-
women tended to make more use of opportunities to com-
municate (such as email). Men were more likely to use ternet allows universities, in particular, researchers from
the social and behavioral sciences, to conduct research re-
the Internet to pay bills, participate in auctions, and for
recreation such as downloading music and videos. Men motely via virtual laboratories, with profound changes in
reach and generalizability of findings as well as in com-
and women were equally likely to use the Internet for
shopping and banking.[74] More recent studies indicate munication between scientists and in the publication of
that in 2008, women significantly outnumbered men on results.[86]
most social networking sites, such as Facebook and Mys- The low cost and nearly instantaneous sharing of ideas,
pace, although the ratios varied with age.[75] In addition, knowledge, and skills have made collaborative work dra-
women watched more streaming content, whereas men matically easier, with the help of collaborative software.
downloaded more.[76] In terms of blogs, men were more Not only can a group cheaply communicate and share
likely to blog in the first place; among those who blog, ideas but the wide reach of the Internet allows such groups
men were more likely to have a professional blog, whereas more easily to form. An example of this is the free
women were more likely to have a personal blog.[77] software movement, which has produced, among other
According to forecasts by Euromonitor International, things, Linux, Mozilla Firefox, and OpenOffice.org. In-
44% of the world’s population will be users of the In- ternet chat, whether using an IRC chat room, an instant
ternet by 2020.[78] Splitting by country, in 2012 Iceland, messaging system, or a social networking website, allows
Norway, Sweden, the Netherlands, and Denmark had the colleagues to stay in touch in a very convenient way while
highest Internet penetration by the number of users, with working at their computers during the day. Messages can
be exchanged even more quickly and conveniently than
93% or more of the population with access.[79]
via email. These systems may allow files to be exchanged,
Several neologisms exist that refer to Internet users: drawings and images to be shared, or voice and video con-
Netizen (as in as in “citizen of the net”)[80] refers to tact between team members.
those actively involved in improving online communi-
ties, the Internet in general or surrounding political af- Content management systems allow collaborating teams
fairs and rights such as free speech,[81][82] Internaut refers to work on shared sets of documents simultaneously with-
to operators or technically highly capable users of the out accidentally destroying each other’s work. Business
Internet,[83][84] digital citizen refers to a person using the and project teams can share calendars as well as docu-
Internet in order to engage in society, politics, and gov- ments and other information. Such collaboration occurs
ernment participation.[85] in a wide variety of areas including scientific research,
software development, conference planning, political ac-
tivism and creative writing. Social and political collabo-
34.7.2 Usage ration is also becoming more widespread as both Internet
access and computer literacy spread.
The Internet allows greater flexibility in working hours The Internet allows computer users to remotely access
and location, especially with the spread of unmetered other computers and information stores easily from any
high-speed connections. The Internet can be accessed al- access point. Access may be with computer security,
most anywhere by numerous means, including through i.e. authentication and encryption technologies, depend-
mobile Internet devices. Mobile phones, datacards, ing on the requirements. This is encouraging new ways of
handheld game consoles and cellular routers allow users working from home, collaboration and information shar-
to connect to the Internet wirelessly. Within the limita- ing in many industries. An accountant sitting at home
tions imposed by small screens and other limited facilities can audit the books of a company based in another coun-
of such pocket-sized devices, the services of the Inter- try, on a server situated in a third country that is remotely
net, including email and the web, may be available. Ser- maintained by IT specialists in a fourth. These accounts
vice providers may restrict the services offered and mo- could have been created by home-working bookkeepers,
bile data charges may be significantly higher than other in other remote locations, based on information emailed
access methods. to them from offices all over the world. Some of these
Educational material at all levels from pre-school to post- things were possible before the widespread use of the In-
204 CHAPTER 34. INTERNET

ternet, but the cost of private leased lines would have ticular has been criticised in the past for not doing enough
made many of them infeasible in practice. An office to aid victims of online abuse.[88]
worker away from their desk, perhaps on the other side For organizations, such a backlash can cause overall
of the world on a business trip or a holiday, can access brand damage, especially if reported by the media. How-
their emails, access their data using cloud computing, or ever, this is not always the case, as any brand damage
open a remote desktop session into their office PC us- in the eyes of people with an opposing opinion to that
ing a secure virtual private network (VPN) connection presented by the organization could sometimes be out-
on the Internet. This can give the worker complete ac- weighed by strengthening the brand in the eyes of others.
cess to all of their normal files and data, including email
Furthermore, if an organization or individual gives in to
and other applications, while away from the office. It has demands that others perceive as wrong-headed, that can
been referred to among system administrators as the Vir-
then provoke a counter-backlash.
tual Private Nightmare,[87] because it extends the secure
perimeter of a corporate network into remote locations Some websites, such as Reddit, have rules forbidding
and its employees’ homes. the posting of personal information of individuals (also
known as doxxing), due to concerns about such postings
leading to mobs of large numbers of Internet users direct-
ing harassment at the specific individuals thereby identi-
34.7.3 Social networking and entertain- fied. In particular, the Reddit rule forbidding the post-
ment ing of personal information is widely understood to imply
that all identifying photos and names must be censored in
See also: Social networking service § Social impact Facebook screenshots posted to Reddit. However, the in-
terpretation of this rule in relation to public Twitter posts
Many people use the World Wide Web to access news, is less clear, and in any case, like-minded people online
weather and sports reports, to plan and book vacations have many other ways they can use to direct each other’s
and to pursue their personal interests. People use chat, attention to public social media posts they disagree with.
messaging and email to make and stay in touch with Children also face dangers online such as cyberbullying
friends worldwide, sometimes in the same way as some and approaches by sexual predators, who sometimes pose
previously had pen pals. Social networking websites such as children themselves. Children may also encounter ma-
as Facebook, Twitter, and Myspace have created new terial which they may find upsetting, or material which
ways to socialize and interact. Users of these sites are their parents consider to be not age-appropriate. Due to
able to add a wide variety of information to pages, to naivety, they may also post personal information about
pursue common interests, and to connect with others. It themselves online, which could put them or their fam-
is also possible to find existing acquaintances, to allow ilies at risk unless warned not to do so. Many parents
communication among existing groups of people. Sites choose to enable Internet filtering, and/or supervise their
like LinkedIn foster commercial and business connec- children’s online activities, in an attempt to protect their
tions. YouTube and Flickr specialize in users’ videos and children from inappropriate material on the Internet. The
photographs. While social networking sites were initially most popular social networking websites, such as Face-
for individuals only, today they are widely used by busi- book and Twitter, commonly forbid users under the age
nesses and other organizations to promote their brands, of 13. However, these policies are typically trivial to cir-
to market to their customers and to encourage posts to cumvent by registering an account with a false birth date,
"go viral". “Black hat” social media techniques are also and a significant number of children aged under 13 join
employed by some organizations, such as spam accounts such sites anyway. Social networking sites for younger
and astroturfing. children, which claim to provide better levels of protec-
[89]
A risk for both individuals and organizations writing posts tion for children, also exist.
(especially public posts) on social networking websites, is The Internet has been a major outlet for leisure activity
that especially foolish or controversial posts occasionally since its inception, with entertaining social experiments
lead to an unexpected and possibly large-scale backlash such as MUDs and MOOs being conducted on university
on social media from other Internet users. This is also servers, and humor-related Usenet groups receiving much
a risk in relation to controversial offline behavior, if it traffic. Today, many Internet forums have sections de-
is widely made known. The nature of this backlash can voted to games and funny videos. Over 6 million people
range widely from counter-arguments and public mock- use blogs or message boards as a means of communica-
ery, through insults and hate speech, to, in extreme cases, tion and for the sharing of ideas. The Internet pornogra-
rape and death threats. The online disinhibition effect de- phy and online gambling industries have taken advantage
scribes the tendency of many individuals to behave more of the World Wide Web, and often provide a significant
stridently or offensively online than they would in per- source of advertising revenue for other websites.[90] Al-
son. A significant number of feminist women have been though many governments have attempted to restrict both
the target of various forms of harassment in response to industries’ use of the Internet, in general, this has failed
posts they have made on social media, and Twitter in par-
34.7. SOCIAL IMPACT 205

to stop their widespread popularity.[91] processes spanning the entire value chain: purchasing,
Another area of leisure activity on the Internet is supply chain management, marketing, sales, customer
multiplayer gaming.[92] This form of recreation creates service, and business relationship. E-commerce seeks to
communities, where people of all ages and origins en- add revenue streams using the Internet to build and en-
joy the fast-paced world of multiplayer games. These hance relationships with clients and partners. Accord-
range from MMORPG to first-person shooters, from ing to International Data Corporation, the size of world-
role-playing video games to online gambling. While on- wide e-commerce, when global business-to-business and
line gaming has been around since the 1970s, modern -consumer transactions are combined, equate to $16 tril-
lion for 2013. A report by Oxford Economics adds those
modes of online gaming began with subscription services
such as GameSpy and MPlayer.[93] Non-subscribers were two together to estimate the total size of the digital econ-
omy at $20.4 trillion, equivalent to roughly 13.8% of
limited to certain types of game play or certain games.
Many people use the Internet to access and download global sales.[99]
music, movies and other works for their enjoyment and While much has been written of the economic advantages
relaxation. Free and fee-based services exist for all of of Internet-enabled commerce, there is also evidence that
these activities, using centralized servers and distributed some aspects of the Internet such as maps and location-
peer-to-peer technologies. Some of these sources exer- aware services may serve to reinforce economic inequal-
cise more care with respect to the original artists’ copy- ity and the digital divide.[100] Electronic commerce may
rights than others. be responsible for consolidation and the decline of mom-
Internet usage has been correlated to users’ loneliness. [94] and-pop, brick and mortar businesses resulting in in-
[101][102][103]
Lonely people tend to use the Internet as an outlet for their creases in income inequality.
feelings and to share their stories with others, such as in Author Andrew Keen, a long-time critic of the social
the "I am lonely will anyone speak to me" thread. transformations caused by the Internet, has recently fo-
Cybersectarianism is a new organizational form which cused on the economic effects of consolidation from In-
ternet businesses. Keen cites a 2013 Institute for Lo-
involves: “highly dispersed small groups of practition-
ers that may remain largely anonymous within the larger cal Self-Reliance report saying brick-and-mortar retail-
ers employ 47 people for every $10 million in sales while
social context and operate in relative secrecy, while still
linked remotely to a larger network of believers who share Amazon employs only 14. Similarly, the 700-employee
room rental start-up Airbnb was valued at $10 billion in
a set of practices and texts, and often a common devo-
tion to a particular leader. Overseas supporters provide 2014, about half as much as Hilton Hotels, which em-
funding and support; domestic practitioners distribute ploys 152,000 people. And car-sharing Internet startup
tracts, participate in acts of resistance, and share infor- Uber employs 1,000 full-time employees and is valued
mation on the internal situation with outsiders. Collec- at $18.2 billion, about the same valuation as Avis and
tively, members and practitioners of such sects construct Hertz combined,
[104]
which together employ almost 60,000
viable virtual communities of faith, exchanging personal people.
testimonies and engaging in the collective study via email,
on-line chat rooms, and web-based message boards.”[95]
34.7.5 Telecommuting
In particular, the British government has raised concerns
about the prospect of young British Muslims being indoc-
Telecommuting is the performance within a traditional
trinated into Islamic extremism by material on the Inter-
worker and employer relationship when it is facilitated
net, being persuaded to join terrorist groups such as the
by tools such as groupware, virtual private networks,
so-called "Islamic State", and then potentially committing
conference calling, videoconferencing, and voice over IP
acts of terrorism on returning to Britain after fighting in
(VOIP) so that work may be performed from any loca-
Syria or Iraq.
tion, most conveniently the worker’s home. It can be
Cyberslacking can become a drain on corporate re- efficient and useful for companies as it allows workers
sources; the average UK employee spent 57 minutes a day to communicate over long distances, saving significant
surfing the Web while at work, according to a 2003 study amounts of travel time and cost. As broadband Internet
by Peninsula Business Services.[96] Internet addiction dis- connections become commonplace, more workers have
order is excessive computer use that interferes with daily adequate bandwidth at home to use these tools to link
life.[97] Psychologist, Nicolas Carr believe that Internet their home to their corporate intranet and internal com-
use has other effects on individuals, for instance improv- munication networks.
ing skills of scan-reading and interfering with the deep
thinking that leads to true creativity.[98]
34.7.6 Crowdsourcing
34.7.4 Electronic business The Internet provides a particularly good venue for
crowdsourcing, because individuals tend to be more open
Electronic business (e-business) encompasses business in web-based projects where they are not being physically
206 CHAPTER 34. INTERNET

judged or scrutinized and thus can feel more comfortable his 2004 thesis:
sharing.
As the globally evolving Internet provides
ever new access points to virtual discourse
34.7.7 Collaborative publishing forums, it also promotes new civic relations
and associations within which communicative
Wikis have also been used in the academic community
power may flow and accumulate. Thus, tradi-
for sharing and dissemination of information across in-
[105] tionally … national-embedded peripheries get
stitutional and international boundaries. In those set-
entangled into greater, international periph-
tings, they have been found useful for collaboration on
eries, with stronger combined powers... The
grant writing, strategic planning, departmental documen-
Internet, as a consequence, changes the topol-
tation, and committee work.[106] The United States Patent
ogy of the “centre-periphery” model, by stim-
and Trademark Office uses a wiki to allow the public to
ulating conventional peripheries to interlink
collaborate on finding prior art relevant to examination
into “super-periphery” structures, which en-
of pending patent applications. Queens, New York has
close and “besiege” several centres at once.[113]
used a wiki to allow citizens to collaborate on the design
and planning of a local park.[107] The English Wikipedia
has the largest user base among wikis on the World Wide Berdal, therefore, extends the Habermasian notion of the
Web[108] and ranks in the top 10 among all Web sites in public sphere to the Internet, and underlines the inher-
terms of traffic.[109] ent global and civic nature that interwoven Internet tech-
nologies provide. To limit the growing civic potential of
the Internet, Berdal also notes how “self-protective mea-
34.7.8 Politics and political revolutions sures” are put in place by those threatened by it:

See also: Internet censorship, Culture of fear, and Mass If we consider China’s attempts to filter
surveillance “unsuitable material” from the Internet, most
The Internet has achieved new relevance as a politi- of us would agree that this resembles a self-
protective measure by the system against the
growing civic potentials of the Internet. Never-
theless, both types represent limitations to “pe-
ripheral capacities”. Thus, the Chinese govern-
ment tries to prevent communicative power to
build up and unleash (as the 1989 Tiananmen
Square uprising suggests, the government may
find it wise to install “upstream measures”).
Even though limited, the Internet is proving
to be an empowering tool also to the Chinese
periphery: Analysts believe that Internet pe-
titions have influenced policy implementation
in favour of the public’s online-articulated will
…[113]

Banner in Bangkok during the 2014 Thai coup d'état, inform- Incidents of politically motivated Internet censorship
ing the Thai public that 'like' or 'share' activities on social media
have now been recorded in many countries, including
could result in imprisonment (observed June 30, 2014).
western democracies.
cal tool. The presidential campaign of Howard Dean
in 2004 in the United States was notable for its success
34.7.9 Philanthropy
in soliciting donation via the Internet. Many political
groups use the Internet to achieve a new method of or- The spread of low-cost Internet access in developing
ganizing for carrying out their mission, having given rise
countries has opened up new possibilities for peer-to-
to Internet activism, most notably practiced by rebels in
peer charities, which allow individuals to contribute
the Arab Spring.[110][111] The New York Times suggested small amounts to charitable projects for other individu-
that social media websites, such as Facebook and Twit- als. Websites, such as DonorsChoose and GlobalGiving,
ter, helped people organize the political revolutions inallow small-scale donors to direct funds to individual
Egypt, by helping activists organize protests, communi- projects of their choice. A popular twist on Internet-
cate grievances, and disseminate information.[112] based philanthropy is the use of peer-to-peer lending for
The potential of the Internet as a civic tool of commu- charitable purposes. Kiva pioneered this concept in 2005,
nicative power was explored by Simon R. B. Berdal in offering the first web-based service to publish individual
34.8. SECURITY 207

loan profiles for funding. Kiva raises funds for local in- Assistance For Law Enforcement Act, all phone calls
termediary microfinance organizations which post stories and broadband Internet traffic (emails, web traffic, in-
and updates on behalf of the borrowers. Lenders can con- stant messaging, etc.) are required to be available for
tribute as little as $25 to loans of their choice, and receive unimpeded real-time monitoring by Federal law enforce-
their money back as borrowers repay. Kiva falls short of ment agencies.[118][119][120] Packet capture is the moni-
being a pure peer-to-peer charity, in that loans are dis- toring of data traffic on a computer network. Comput-
bursed before being funded by lenders and borrowers do ers communicate over the Internet by breaking up mes-
not communicate with lenders themselves.[114][115] sages (emails, images, videos, web pages, files, etc.) into
small chunks called “packets”, which are routed through a
However, the recent spread of low-cost Internet access
in developing countries has made genuine international network of computers, until they reach their destination,
where they are assembled back into a complete “message”
person-to-person philanthropy increasingly feasible. In
2009, the US-based nonprofit Zidisha tapped into this again. Packet Capture Appliance intercepts these pack-
ets as they are traveling through the network, in order to
trend to offer the first person-to-person microfinance
platform to link lenders and borrowers across interna- examine their contents using other programs. A packet
capture is an information gathering tool, but not an anal-
tional borders without intermediaries. Members can fund
loans for as little as a dollar, which the borrowers then ysis tool. That is it gathers “messages” but it does not ana-
use to develop business activities that improve their fam- lyze them and figure out what they mean. Other programs
ilies’ incomes while repaying loans to the members with are needed to perform traffic analysis and sift through in-
interest. Borrowers access the Internet via public cyber- tercepted data looking for important/useful information.
cafes, donated laptops in village schools, and even smart Under the Communications Assistance For Law Enforce-
phones, then create their own profile pages through which ment Act all U.S. telecommunications providers are re-
they share photos and information about themselves and quired to install packet sniffing technology to allow Fed-
their businesses. As they repay their loans, borrowers eral law enforcement and intelligence agencies to inter-
continue to share updates and dialogue with lenders via cept all of their customers’ broadband Internet and voice
their profile pages. This direct web-based connection al- over Internet protocol (VoIP) traffic.[121]
lows members themselves to take on many of the com- The large amount of data gathered from packet captur-
munication and recording tasks traditionally performed ing requires surveillance software that filters and reports
by local organizations, bypassing geographic barriers and relevant information, such as the use of certain words
dramatically reducing the cost of microfinance services or phrases, the access of certain types of web sites, or
to the entrepreneurs.[116] communicating via email or chat with certain parties.[122]
Agencies, such as the Information Awareness Office,
NSA, GCHQ and the FBI, spend billions of dollars per
34.8 Security year to develop, purchase, implement, and operate sys-
tems for interception and analysis of data.[123] Similar
systems are operated by Iranian secret police to identify
Main article: Internet security
and suppress dissidents. The required hardware and soft-
ware was allegedly installed by German Siemens AG and
Internet resources, hardware, and software components Finnish Nokia.[124]
are the target of malicious attempts to gain unauthorized
control to cause interruptions or access private infor-
mation. Such attempts include computer viruses which 34.8.2 Censorship
copy with the help of humans, computer worms which
copy themselves automatically, denial of service attacks, Main articles: Internet censorship and Internet freedom
ransomware, botnets, and spyware that reports on the ac- See also: Culture of fear
tivity and typing of users. Usually, these activities con-
stitute cybercrime. Defense theorists have also specu-
lated about the possibilities of cyber warfare using similar Some governments, such as those of Burma, Iran, North
methods on a large scale. Korea, the Mainland China, Saudi Arabia and the United
Arab Emirates restrict access to content on the Internet
within their territories, especially to political and religious
34.8.1 Surveillance content, with domain name and keyword filters.[129]
In Norway, Denmark, Finland, and Sweden, major Inter-
Main article: Computer and network surveillance net service providers have voluntarily agreed to restrict
See also: Signals intelligence and Mass surveillance access to sites listed by authorities. While this list of for-
bidden resources is supposed to contain only known child
The vast majority of computer surveillance involves the pornography sites, the content of the list is secret.[130]
monitoring of data and traffic on the Internet.[117] In the Many countries, including the United States, have en-
United States for example, under the Communications acted laws against the possession or distribution of certain
208 CHAPTER 34. INTERNET

34.9.2 Energy use


In 2011, researchers estimated the energy used by the
Internet to be between 170 and 307 GW, less than two
percent of the energy used by humanity. This estimate
included the energy needed to build, operate, and period-
ically replace the estimated 750 million laptops, a billion
smart phones and 100 million servers worldwide as well
as the energy that routers, cell towers, optical switches,
Wi-Fi transmitters and cloud storage devices use when
Internet censorship and surveillance by transmitting Internet traffic.[134][135]
country[125][126][127][128]

Pervasive
Substantial 34.10 See also
Selective
Changing situation • Darknet
Little or none
Not classified or no data • Deep web
• Freenet
• Index of Internet-related articles
material, such as child pornography, via the Internet, but • Internet metaphors
do not mandate filter software. Many free or commer-
cially available software programs, called content-control • "Internets"
software are available to users to block offensive websites
• Open Systems Interconnection
on individual computers or networks, in order to limit ac-
cess by children to pornographic material or depiction of • Outline of the Internet
violence.

34.11 References
34.9 Performance [1] “IPTO -- Information Processing Techniques Office”, The
Living Internet, Bill Stewart (ed), January 2000.

As the Internet is a heterogeneous network, the physi- [2] “Internet History -- One Page Summary”, The Living In-
ternet, Bill Stewart (ed), January 2000.
cal characteristics, including for example the data trans-
fer rates of connections, vary widely. It exhibits emergent [3] “So, who really did invent the Internet?", Ian Peter, The
phenomena that depend on its large-scale organization. Internet History Project, 2004. Retrieved 27 June 2014.

[4] Wilson, David Stokes, Nicholas (2006). Small business


management and entrepreneurship. London: Thomson
Learning. p. 107. ISBN 9781844802241. However,
34.9.1 Outages users of the Internet were restricted largely to researchers
and academics until the development of the World Wide
An Internet blackout or outage can be caused by local Web by Tim Berners-Lee in 1989.
signalling interruptions. Disruptions of submarine com- [5] “The Open Market Internet Index”. Treese.org. 1995-11-
munications cables may cause blackouts or slowdowns to 11. Retrieved 2013-06-15.
large areas, such as in the 2008 submarine cable disrup-
tion. Less-developed countries are more vulnerable due [6] “World Stats”. Internet World Stats. Miniwatts Marketing
to a small number of high-capacity links. Land cables Group. 30 June 2012.
are also vulnerable, as in 2011 when a woman digging [7] “Who owns the Internet?", Jonathan Strickland, How Stuff
for scrap metal severed most connectivity for the nation Works. Retrieved 27 June 2014.
of Armenia.[131] Internet blackouts affecting almost en-
tire countries can be achieved by governments as a form [8] “The Tao of IETF: A Novice’s Guide to Internet Engineer-
ing Task Force”, P. Hoffman and S. Harris, RFC 4677,
of Internet censorship, as in the blockage of the Internet
September 2006.
in Egypt, whereby approximately 93%[132] of networks
were without access in 2011 in an attempt to stop mobi- [9] The Chicago Manual of Style, 16th Edition: “capitalize
lization for anti-government protests.[133] World Wide Web and Internet”
34.11. REFERENCES 209

[10] “7.76 Terms like 'web' and 'Internet'", Chicago Manual [26] “NORSAR and the Internet”. NORSAR. Archived from
of Style, University of Chicago, 16th edition (registration the original on 2012-12-17.
required)
[27] "#3 1982: the ARPANET community grows” in 40 maps
[11] “internetted”. Oxford English Dictionary (3rd ed.). that explain the internet, Timothy B. Lee, Vox Conversa-
Oxford University Press. September 2005. (Subscription tions, 2 June 2014. Retrieved 27 June 2014.
or UK public library membership required.) nineteenth-
century use as an adjective. [28] Kirstein, Peter T. “Early experiences with the ARPANET
and Internet in the UK”. Department of Computer Sci-
[12] “internetwork”. Oxford English Dictionary (3rd ed.). ence, Systems and Networks Research Group, University
Oxford University Press. September 2005. (Subscription College London. Retrieved 13 April 2016; Cade Metz
or UK public library membership required.) (25 December 2012). “How the Queen of England Beat
Everyone to the Internet”. Wired Magazine. Retrieved 27
[13] “HTML 4.01 Specification”. HTML 4.01 Specification.
June 2014.
World Wide Web Consortium. Retrieved August 13,
2008. [T]he link (or hyperlink, or Web link) [is] the basic [29] Leiner, Barry M.; Cerf, Vinton G.; Clark, David D.;
hypertext construct. A link is a connection from one Web Kahn, Robert E.; Kleinrock, Leonard; Lynch, Daniel C.;
resource to another. Although a simple concept, the link Postel, Jon; Roberts, Larry G.; Wolff, Stephen (2003).
has been one of the primary forces driving the success of
“A Brief History of Internet”: 1011. arXiv:cs/9901011 .
the Web.
Bibcode:1999cs........1011L. Retrieved 28 May 2009.
[14] “The Difference Between the Internet and the World
Wide Web”. Webopedia.com. QuinStreet Inc. 2010-06- [30] NSFNET: A Partnership for High-Speed Networking, Final
24. Retrieved 2014-05-01. Report 1987–1995, Karen D. Frazer, Merit Network, Inc.,
1995
[15] “Brief History of the Internet”. Internet Society. Re-
trieved 9 April 2016. It happened that the work at MIT [31] Harris, Susan R.; Gerich, Elise (April 1996). “Retiring
(1961-1967), at RAND (1962-1965), and at NPL (1964- the NSFNET Backbone Service: Chronicling the End of
1967) had all proceeded in parallel without any of the an Era”. ConneXions. 10 (4).
researchers knowing about the other work. The word
“packet” was adopted from the work at NPL [32] Ben Segal (1995). “A Short History of Internet Protocols
at CERN”.
[16] “A Technical History of CYCLADES”. Technical Histo-
ries of the Internet & other Network Protocols. Computer [33] Réseaux IP Européens (RIPE)
Science Department, University of Texas Austin. 11 June
2002. Archived from the original on 1 September 2013. [34] “Internet History in Asia”. 16th APAN Meet-
ings/Advanced Network Conference in Busan. Retrieved
[17] Zimmermann, H. (August 1977). “The Cyclades Expe- 25 December 2005.
rience: Results and Impacts”. Proc. IFIP'77 Congress.
Toronto: 465–469. [35] The History of NORDUnet

[18] A Chronicle of Merit’s Early History, John Mulcahy, 1989, [36] ftp://ftp.cuhk.edu.hk/pub/doc/internet/Internet.
Merit Network, Ann Arbor, Michigan Monthly.Report/imr9002.txt

[19] Ward, Mark (29 October 2009). “Celebrating 40 years of [37] Berners-Lee, Tim. “The Original HTTP as defined in
the net”. BBC News. 1991”. W3C.org.

[20] Kim, Byung-Keun (2005). Internationalising the Internet [38] https://books.google.com/books?id=


the Co-evolution of Influence and Technology. Edward El- wDAEAAAAMBAJ&pg=PT31&lpg=PT31&
gar. pp. 51–55. ISBN 1845426754. dq=compuserve+to+mci+mail+internet&source=
bl&ots=O0PGdOm7ZZ&sig=Cz9Uu_Wt1y_
[21] “Brief History of the Internet: The Initial Internetting 5G_v4EJU8n5KmQQM&hl=en&sa=X&ved=
Concepts”, Barry M. Leiner, et al., Internet Society, Re- 0ahUKEwiK8KvN-bfOAhUO3WMKHQcrBdsQ6AEIQDAH#
trieved 27 June 2014. v=onepage&q=compuserve%20to%20mci%20mail%
[22] “Roads and Crossroads of Internet History” by Gregory 20internet&f=false
Gromov. 1995
[39] How the web went world wide, Mark Ward, Technology
[23] Hafner, Katie (1998). Where Wizards Stay Up Late: The Correspondent, BBC News. Retrieved 24 January 2011
Origins Of The Internet. Simon & Schuster. ISBN 0-684-
83267-4. [40] “Total Midyear Population for the World: 1950-2050”,
International Programs Center for Demographic and Eco-
[24] Ronda Hauben (2001). “From the ARPANET to the In- nomic Studies, U.S. Census Bureau. Retrieved 24 May
ternet”. Retrieved 28 May 2009. 2014.

[25] “Events in British Telecomms History”. Events in British [41] ICT Facts and Figures 2005, 2010, 2014, Telecommuni-
TelecommsHistory. Archived from the original on 5 April cation Development Bureau, International Telecommuni-
2003. Retrieved 25 November 2005. cation Union (ITU). Retrieved 24 May 2015.
210 CHAPTER 34. INTERNET

[42] “Brazil, Russia, India and China to Lead Internet Growth [57] R. Cohen, K. Erez, D. ben-Avraham, S. Havlin;
Through 2011”. Clickz.com. Archived from the original Erez, K; Ben-Avraham, D; Havlin, S (2001).
on 4 October 2008. Retrieved 28 May 2009. “Breakdown of the Internet under intentional attack”.
Phys. Rev. Lett. 86 (16): 3682–5. arXiv:cond-
[43] Coffman, K. G; Odlyzko, A. M. (2 October 1998). “The
mat/0010251 . Bibcode:2001PhRvL..86.3682C.
size and growth rate of the Internet” (PDF). AT&T Labs.
doi:10.1103/PhysRevLett.86.3682. PMID 11328053.
Retrieved 21 May 2007.

[44] Comer, Douglas (2006). The Internet book. Prentice Hall. [58] Jesdanun, Anick (16 April 2007). “Internet Makeover?
p. 64. ISBN 0-13-233553-0. Some argue it’s time”. Seattletimes.nwsource.com. Re-
trieved 8 August 2011.
[45] “World Internet Users and Population Stats”. Internet
World Stats. Miniwatts Marketing Group. 22 June 2011. [59] “IETF Home Page”. Ietf.org. Retrieved 20 June 2009.
Retrieved 23 June 2011.
[60] Huston, Geoff. “IPv4 Address Report, daily generated”.
[46] Hilbert, Martin; López, Priscila (April 2011). “The Retrieved 20 May 2009.
World’s Technological Capacity to Store, Commu-
nicate, and Compute Information” (PDF). Science. [61] “Notice of Internet Protocol version 4 (IPv4) Address De-
332 (6025): 60–65. Bibcode:2011Sci...332...60H. pletion” (PDF). Retrieved 7 August 2009.
doi:10.1126/science.1200970. PMID 21310967.
[62] "World Wide Web Timeline". Pews Research Center. 11
[47] Klein, Hans. (2004). “ICANN and Non-Territorial March 2014. Retrieved 1 August 2015.
Sovereignty: Government Without the Nation State.” In-
ternet and Public Policy Project. Georgia Institute of [63] "Website Analytics Tool". Retrieved 1 August 2015.
Technology.
[64] Morrison, Geoff (18 November 2010). “What to know
[48] Packard, Ashley (2010). Digital Media Law. Wiley- before buying a 'connected' TV – Technology & science
Blackwell. p. 65. ISBN 978-1-4051-8169-3. – Tech and gadgets – Tech Holiday Guide”. MSNBC. Re-
trieved 8 August 2011.
[49] “Bush administration annexes internet”, Kieren Mc-
Carthy, The Register, 1 July 2005 [65] “YouTube Fact Sheet”. YouTube, LLC. Archived from
the original on 4 July 2010. Retrieved 20 January 2009.
[50] Mueller, Milton L. (2010). Networks and States: The
Global Politics of Internet Governance. MIT Press. p. 61. [66] “Individuals using the Internet 2005 to 2014”, Key ICT
ISBN 978-0-262-01459-5. indicators for developed and developing countries and
the world (totals and penetration rates), International
[51] “Internet Society (ISOC) All About The Internet: History
Telecommunication Union (ITU). Retrieved 25 May
of the Internet”. ISOC. Retrieved 2013-12-19.
2015.
[52] A. L. Barab´asi, R. Albert; Barabási, Albert-László
(2002). “Statistical mechanics of complex net- [67] “Internet users per 100 inhabitants 1997 to 2007”, ICT
works”. Rev. Mod. Phys. 74: 47–94. arXiv:cond- Data and Statistics (IDS), International Telecommunica-
tion Union (ITU). Retrieved 25 May 2015.
mat/0106096 . Bibcode:2002RvMP...74...47A.
doi:10.1103/RevModPhys.74.47. [68] “Number of Internet Users by Language”, Internet World
Stats, Miniwatts Marketing Group, 31 May 2011. Re-
[53] Pasternak, Sean B. (7 March 2006). “Toronto Hy-
trieved 22 April 2012
dro to Install Wireless Network in Downtown Toronto”.
Bloomberg. Retrieved 8 August 2011. [69] “Usage of content languages for websites”. W3Techs.com.
[54] “By 2013, mobile phones will overtake PCs as the most Retrieved 26 April 2013.
common Web access device worldwide”, according to a
[70] Internet users graphs, Market Information and Statistics,
forecast in “Gartner Highlights Key Predictions for IT Or-
International Telecommunications Union
ganizations and Users in 2010 and Beyond”, Gartner, Inc.,
13 January 2010 [71] “Google Earth demonstrates how technology benefits RI`s
[55] Willinger, Walter; Govindan, Ramesh; Jamin, Sugih; civil society, govt”. Antara News. 2011-05-26. Retrieved
Paxson, Vern; Shenker, Scott (2002). “Scaling phe- 2012-11-19.
nomena in the Internet: Critically examining critical-
[72] Steve Dent. “There are now 3 billion internet users, mostly
ity”. Proceedings of the National Academy of Sciences.
in rich countries”. Retrieved 25 November 2014.
99 (99): 2573–2580. Bibcode:2002PNAS...99.2573W.
doi:10.1073/pnas.012583099. [73] World Internet Usage Statistics News and Population Stats
[56] R. Cohen, K. Erez, D. ben-Avraham, S. Havlin; Erez, updated for 30 June 2010. Retrieved 20 February 2011.
Keren; Ben-Avraham, Daniel; Havlin, Shlomo (2000). [74] How men and women use the Internet Pew Research Cen-
“Resilience of the Internet to random breakdowns”. ter 28 December 2005
Phys. Rev. Lett. 85 (21): 4625. arXiv:cond-
mat/0007048 . Bibcode:2000PhRvL..85.4626C. [75] “Rapleaf Study on Social Network Users”. Archived from
doi:10.1103/PhysRevLett.85.4626. the original on 20 March 2009.
34.11. REFERENCES 211

[76] “Women Ahead Of Men In Online Tv, Dvr, Games, And [95] Patricia M. Thornton, “The New Cybersects: Resistance
Social Media.”. Entrepreneur.com. 1 May 2008. Re- and Repression in the Reform era. " In Elizabeth Perry
trieved 8 August 2011. and Mark Selden, eds., Chinese Society: Change, Conflict
and Resistance (second edition) (London and New York:
[77] “Technorati’s State of the Blogosphere”. Technorati. Re- Routledge, 2003), pp. 149–50.
trieved 8 August 2011.
[96] “Net abuse hits small city firms”. The Scotsman. Edin-
[78] “Special Report: The Telecom Consumer in 2020”, Pavel burgh. 11 September 2003. Retrieved 7 August 2009.
Marceux, Euromonitor International, 27 August 2013.
[97] Prieto-Gutierrez, J.J. y Moreno-Cámara, A. Las Redes
Retrieved 7 June 2015.
Sociales de Internet, ¿Una nueva adicción? / The use of
Social Networking Websites is a New Addiction? Revista
[79] “Percentage of Individuals using the Internet 2000-2012”,
Argentina de Clínica Psicológica 24 (II), 149-156[3]
International Telecommunications Union (Geneva), June
2013, retrieved 22 June 2013 [98] The Shallows: What the Internet Is Doing to Our Brains,
Nicholas Carr, W. W. Norton, 7 June 2010, 276 pp.,
[80] Seese, Michael. Scrappy Information Security. p. 130. ISBN 0-393-07222-3, ISBN 978-0-393-07222-8
ISBN 978-1-60005-132-6. Retrieved 5 June 2015.
[99] “The New Digital Economy: How it will transform busi-
[81] netizen, Dictionary.com ness”, Oxford Economics, 2 July 2011

[82] The Net and Netizens by Michael Hauben, Columbia Uni- [100] Badger, Emily (6 February 2013). “How the Internet Re-
versity. inforces Inequality in the Real World”. The Atlantic. Re-
trieved 2013-02-13.
[83] A Brief History of the Internet from the Internet Society
[101] “E-commerce will make the shopping mall a retail waste-
[84] “Oxford Dictionaries – internaut”. oxforddictionar- land” ZDNet, 17 January 2013
ies.com. Retrieved 6 June 2015. [102] "‘Free Shipping Day’ Promotion Spurs Late-Season On-
line Spending Surge, Improving Season-to-Date Growth
[85] Mossberger, Karen. “Digital Citizenship – The Internet,
Rate to 16 Percent vs. Year Ago” Comscore, 23 Decem-
Society and Participation” By Karen Mossberger, Caro-
ber 2012
line J. Tolbert, and Ramona S. McNeal.” 23 Nov. 2011.
ISBN 978-0-8194-5606-9 [103] “The Death of the American Shopping Mall” The Atlantic
— Cities, 26 December 2012
[86] Reips, U.-D. (2008). How Internet-mediated research
changes science. In A. Barak (Ed.), Psychological aspects [104] Harris, Michael (January 2, 2015). “Book review: 'The
of cyberspace: Theory, research, applications (pp. 268- Internet Is Not the Answer' by Andrew Keen”. Washing-
294). Cambridge: Cambridge University Press. ISBN ton Post. Retrieved 25 January 2015.
978-0-521-69464-3. Retrieved 22 July 2014.
[105] MM Wanderley; D Birnbaum; J Malloch (2006). New In-
[87] “The Virtual Private Nightmare: VPN”. Librenix. 4 Au- terfaces For Musical Expression. IRCAM – Centre Pom-
gust 2004. Retrieved 21 July 2010. pidou. p. 180. ISBN 2-84426-314-3.

[106] Nancy T. Lombardo (June 2008). “Putting Wikis to Work


[88] Moore, Keith (27 July 2013). “Twitter 'report abuse' but-
in Libraries”. 27 (2). Medical Reference Services Quar-
ton calls after rape threats”. BBC News. Retrieved 7 De-
terly: 129–145.
cember 2014.
[107] Noveck, Beth Simone (March 2007). “Wikipedia and the
[89] Kessler, Sarah (11 October 2010). “5 Fun and Safe Social Future of Legal Education”. Journal of Legal Education.
Networks for Children”. Mashable. Retrieved 7 Decem- 57 (1).(subscription required)
ber 2014.
[108] “WikiStats by S23”. S23Wiki. 3 April 2008. Retrieved 7
[90] “Internet Pornography Statistics”, Jerry Ropelato, Top April 2007.
Ten Reviews, 2006
[109] “Alexa Web Search – Top 500”. Alexa Internet. Re-
[91] “Do It Yourself! Amateur Porn Stars Make Bank”, Rus- trieved 2 March 2015.
sell Goldman, ABC News, 22 January 2008
[110] “The Arab Uprising’s Cascading Effects”. Miller-
mccune.com. 23 February 2011. Retrieved 27 February
[92] “Top Online Game Trends of the Decade”, Dave Spohn,
2011.
About.com, 15 December 2009
[111] The Role of the Internet in Democratic Transition: Case
[93] “Internet Game Timeline: 1963 – 2004”, Dave Spohn, Study of the Arab Spring, Davit Chokoshvili, Master’s
About.com, 2 June 2011 Thesis, June 2011

[94] Carole Hughes; Boston College. “The Relationship Be- [112] Kirkpatrick, David D. (9 February 2011). “Wired and
tween Internet Use and Loneliness Among College Stu- Shrewd, Young Egyptians Guide Revolt”. The New York
dents”. Boston College. Retrieved 11 August 2011. Times.
212 CHAPTER 34. INTERNET

[113] Berdal, S.R.B. (2004). “Public deliberation on the Web: [129] Access Controlled: The Shaping of Power, Rights, and Rule
A Habermasian inquiry into online discourse” (PDF). in Cyberspace, Ronald J. Deibert, John G. Palfrey, Rafal
Oslo: University of Oslo. Rohozinski, and Jonathan Zittrain (eds), MIT Press, April
2010, ISBN 0-262-51435-4, ISBN 978-0-262-51435-4
[114] Kiva Is Not Quite What It Seems, by David Roodman, Cen-
ter for Global Development, 2 October 2009, as accessed [130] “Finland censors anti-censorship site”. The Register. 18
2 & 16 January 2010 February 2008. Retrieved 19 February 2008.

[115] Strom, Stephanie (9 November 2009). “Confusion on [131] “Georgian woman cuts off web access to whole of Arme-
Where Money Lent via Kiva Goes”. The New York Times. nia”. The Guardian. 6 April 2011. Retrieved 11 April
p. 6. 2012.

[116] ""Zidisha Set to “Expand” in Peer-to-Peer Microfi- [132] Cowie, James. “Egypt Leaves the Internet”. Renesys.
nance"". Microfinance Focus. 7 February 2010. Archived from the original on 28 January 2011. Retrieved
Archived from the original on 28 February 2010. 28 January 2011.

[117] Diffie, Whitfield; Susan Landau (August 2008). “Internet [133] “Egypt severs internet connection amid growing unrest”.
Eavesdropping: A Brave New World of Wiretapping”. BBC News. 28 January 2011.
Scientific American. Retrieved 2009-03-13. [134] “Internet responsible for 2 per cent of global energy us-
age”, Jim Giles, New Scientist (Reed Business Information
[118] “CALEA Archive -- Electronic Frontier Foundation”.
Ltd.), 26 October 2011.
Electronic Frontier Foundation (website). Retrieved 2009-
03-14. [135] “The Energy and Emergy of the Internet”, Barath Ragha-
van (ICSI) and Justin Ma (UC Berkeley), in Proceedings
[119] “CALEA: The Perils of Wiretapping the Internet”. Elec-
of the 10th ACM Workshop on Hot Topics in Networks, 14–
tronic Frontier Foundation (website). Retrieved 2009-03-
15 November 2011, Cambridge, MA, USA. ACM SIG-
14.
COMM. ISBN 978-1-4503-1059-8/11/11.
[120] “CALEA: Frequently Asked Questions”. Electronic Fron-
tier Foundation (website). Retrieved 2009-03-14.

[121] “American Council on Education vs. FCC, Decision,


34.12 Further reading
United States Court of Appeals for the District of
Columbia Circuit” (PDF). 9 June 2006. Archived from • First Monday, a peer-reviewed journal on the Inter-
the original (PDF) on 7 September 2012. Retrieved 8 net established in 1996 as a Great Cities Initiative of
September 2013. the University Library of the University of Illinois at
Chicago, ISSN 1396-0466
[122] Hill, Michael (11 October 2004). “Government funds
chat room surveillance research”. USA Today. Associ- • Rise of the Network Society, Manual Castells, Wiley-
ated Press. Retrieved 2009-03-19. Blackwell, 1996 (1st ed) and 2009 (2nd ed), ISBN
978-1-4051-9686-4
[123] McCullagh, Declan (30 January 2007). “FBI turns to
broad new wiretap method”. ZDNet News. Archived from • “The Internet: Changing the Way We Communi-
the original on 7 April 2010. Retrieved 2009-03-13. cate” in America’s Investment in the Future, National
[124] “First round in Internet war goes to Iranian intelligence”, Science Foundation, Arlington, Va. USA, 2000
Debkafile, 28 June 2009. (subscription required) • “Lessons from the History of the Internet”, Manuel
[125] OpenNet Initiative “Summarized global Internet filtering Castells, in The Internet Galaxy, Ch. 1, pp 9–
data spreadsheet”, 8 November 2011 and “Country Pro- 35, Oxford University Press, 2001, ISBN 978-0-19-
files”, the OpenNet Initiative is a collaborative partnership 925577-1
of the Citizen Lab at the Munk School of Global Affairs,
University of Toronto; the Berkman Center for Internet • “Media Freedom Internet Cookbook” by the OSCE
& Society at Harvard University; and the SecDev Group, Representative on Freedom of the Media Vienna,
Ottawa 2004

[126] Due to legal concerns the OpenNet Initiative does not • The Internet Explained, Vincent Zegna & Mike Pep-
check for filtering of child pornography and because their per, Sonet Digital, November 2005, Pages 1 – 7.
classifications focus on technical filtering, they do not in-
clude other types of censorship. • “How Much Does The Internet Weigh?", by Stephen
Cass, Discover, 2007
[127] “Internet Enemies”, Enemies of the Internet 2014: Enti-
ties at the heart of censorship and surveillance, Reporters • “The Internet spreads its tentacles”, Julie Rehmeyer,
Without Borders (Paris), 11 March 2014. Retrieved 24 Science News, Vol. 171, No. 25, pp. 387–388, 23
June 2014. June 2007
[128] Internet Enemies, Reporters Without Borders (Paris), 12 • Internet, Lorenzo Cantoni & Stefano Tardini, Rout-
March 2012 ledge, 2006, ISBN 978-0-203-69888-4
34.13. EXTERNAL LINKS 213

34.13 External links


• The Internet Society

• Berkman Center for Internet and Society


• European Commission Information Society

• Living Internet, Internet history and related infor-


mation, including information from many creators
of the Internet

• Ger Magazine, Mongolia’s first online magazine,


launched in 1998.
Chapter 35

Internet Control Message Protocol

This article is about the protocol as used with Internet TTL header fields, and looking for ICMP Time to live ex-
Protocol version 4. For the protocol as used with Internet ceeded in transit (above) and “Destination unreachable”
Protocol version 6, see ICMPv6. messages generated in response. The related ping util-
ity is implemented using the ICMP “Echo request” and
“Echo reply” messages.
The Internet Control Message Protocol (ICMP) is one
of the main protocols of the internet protocol suite. It is
used by network devices, like routers, to send error mes-
sages indicating, for example, that a requested service is 35.2 ICMP datagram structure
not available or that a host or router could not be reached.
ICMP can also be used to relay query messages.[1] It is as- 35.2.1 Header
signed protocol number 1.[2] ICMP[3] differs from trans-
port protocols such as TCP and UDP in that it is not The ICMP header starts after the IPv4 header and is iden-
typically used to exchange data between systems, nor is tified by IP protocol number '1'. All ICMP packets have
it regularly employed by end-user network applications an 8-byte header and variable-sized data section. The first
(with the exception of some diagnostic tools like ping and 4 bytes of the header have fixed format, while the last 4
traceroute). bytes depend on the type/code of that ICMP packet.[1]

Type ICMP type, see Control messages.


35.1 Technical details Code ICMP subtype, see Control messages.
Checksum Error checking data, calculated from the
The Internet Control Message Protocol is part of the
ICMP header and data, with value 0 substituted for
Internet Protocol Suite, as defined in RFC 792. ICMP
this field. The Internet Checksum is used, specified
messages are typically used for diagnostic or control pur-
in RFC 1071.
poses or generated in response to errors in IP operations
(as specified in RFC 1122). ICMP errors are directed to Rest of Header Four-bytes field, contents vary based
the source IP address of the originating packet.[1] on the ICMP type and code.
For example, every device (such as an intermediate
router) forwarding an IP datagram first decrements the
35.2.2 Data
time to live (TTL) field in the IP header by one. If the
resulting TTL is 0, the packet is discarded and an ICMP ICMP error messages contain a data section that includes
Time To Live exceeded in transit message is sent to the the entire IPv4 header, plus the first eight bytes of data
datagram’s source address. from the IPv4 packet that caused the error message. The
Although ICMP messages are contained within standard ICMP packet is then encapsulated in a new IPv4 packet.[1]
IP packets, ICMP messages are usually processed as a This data is used by the host to match the message to the
special case, distinguished from normal IP processing, appropriate process. If a higher level protocol uses port
rather than processed as a normal sub-protocol of IP. In numbers, they are assumed to be in the first 64 data bits
many cases, it is necessary to inspect the contents of theof the original datagram’s data.[4]
ICMP message and deliver the appropriate error message The variable size of the ICMP packet data section has
to the application responsible for transmission of the IP been exploited. In the "Ping of death", large or frag-
packet that prompted the sending of the ICMP message. mented ping packets are used for denial-of-service at-
Many commonly used network utilities are based on tacks. ICMP can also be used to create covert channels
ICMP messages. The traceroute command can be imple- for communication. These channels are known as ICMP
mented by transmitting IP datagrams with specially set IP tunnels.

214
35.3. CONTROL MESSAGES 215

35.3 Control messages and a direct path from the host to R2 is available (that is,
the host and R2 are on the same Ethernet segment), then
R1 will send a redirect message to inform the host that the
35.3.1 Source quench
best route for the destination is via R2. The host should
then send packets for the destination directly to R2. The
Source Quench requests that the sender decrease the rate
router will still send the original datagram to the intended
of messages sent to a router or host. This message may
destination.[8] However, if the datagram contains routing
be generated if a router or host does not have sufficient
information, this message will not be sent even if a better
buffer space to process the request, or may occur if the
route is available. RFC 1122 states that redirects should
router or host buffer is approaching its limit.
only be sent by gateways and should not be sent by Inter-
Data is sent at a very high speed from a host or from net hosts.
several hosts at the same time to a particular router on
Where:
a network. Although a router has buffering capabilities,
the buffering is limited to within a specified range. The
router cannot queue any more data than the capacity of Type must be set to 5.
the limited buffering space. Thus if the queue gets filled Code specifies the reason for the redirection,
up, incoming data is discarded until the queue is no longer may be one of the following:
full. But as no acknowledgement mechanism is present
in the network layer, the client does not know whether
the data has reached the destination successfully. Hence IP address is the 32-bit address of the gateway
some remedial measures should be taken by the network to which the redirection should be sent.
layer to avoid these kind of situations. These measures are
referred to as source quench. In a source quench mecha- IP header and additional data is included to al-
nism, the router sees that the incoming data rate is much low the host to match the reply with the request
faster than the outgoing data rate, and sends an ICMP that caused the redirection reply.
message to the clients, informing them that they should
slow down their data transfer speeds or wait for a cer- 35.3.3 Time exceeded
tain amount of time before attempting to send more data.
When a client receives this message, it will automatically Time Exceeded is generated by a gateway to inform the
slow down the outgoing data rate or wait for a sufficient source of a discarded datagram due to the time to live
amount of time, which enables the router to empty the field reaching zero. A time exceeded message may also
queue. Thus the source quench ICMP message acts as be sent by a host if it fails to reassemble a fragmented
flow control in the network layer. datagram within its time limit.
Since research suggested that “ICMP Source Quench Time exceeded messages are used by the traceroute utility
[was] an ineffective (and unfair) antidote for to identify gateways on the path between two hosts.
congestion”,[7] routers’ creation of source quench
messages was deprecated in 1995 by RFC 1812. Fur- Where:
thermore, forwarding of and any kind of reaction to (flow
control actions) source quench messages was deprecated Type must be set to 11
from 2012 by RFC 6633. Code specifies the reason for the time ex-
Where: ceeded message, include the following:

Type must be set to 4


IP header and first 64 bits of the original
Code must be set to 0
payload are used by the source host to match
IP header and additional data is used by the the time exceeded message to the discarded
sender to match the reply with the associated datagram. For higher level protocols such as
request UDP and TCP the 64 bit payload will include
the source and destination ports of the dis-
carded packet.
35.3.2 Redirect
Redirect requests data packets be sent on an alternative 35.3.4 Timestamp
route. ICMP Redirect is a mechanism for routers to con-
vey routing information to hosts. The message informs a Timestamp is used for time synchronization. The origi-
host to update its routing information (to send packets on nating timestamp is set to the time (in milliseconds since
an alternative route). If a host tries to send data through a midnight) the sender last touched the packet. The receive
router (R1) and R1 sends the data on another router (R2) and transmit timestamps are not used.
216 CHAPTER 35. INTERNET CONTROL MESSAGE PROTOCOL

Where: ICMP Address Mask Request may be used as a part of


reconnaissance attack to gather information on the target
Type must be set to 13 network, therefore ICMP Address Mask Reply is disabled
Code must be set to 0 by default on Cisco IOS.[9]
Identifier and Sequence Number can be used
by the client to match the timestamp reply with 35.3.7 Address mask reply
the timestamp request.
Originate timestamp is the number of mil- Address mask reply is used to reply to an address mask
liseconds since midnight Universal Time (UT). request message with an appropriate subnet mask.
If a UT reference is not available the most- Where:
significant bit can be set to indicate a non-
standard time value.
Type must be set to 18
Code must be set to 0
35.3.5 Timestamp reply Address mask should be set to the subnet
mask
Timestamp Reply replies to a Timestamp message. It con-
sists of the originating timestamp sent by the sender of
the Timestamp as well as a receive timestamp indicating 35.3.8 Destination unreachable
when the Timestamp was received and a transmit times-
tamp indicating when the Timestamp reply was sent. Destination unreachable is generated by the host or its in-
Where: bound gateway[3] to inform the client that the destination
is unreachable for some reason. A Destination Unreach-
Type must be set to 14 able message may be generated as a result of a TCP, UDP
or another ICMP transmission. Unreachable TCP ports
Code must be set to 0
notably respond with TCP RST rather than a Destination
Identifier and Sequence number can be used Unreachable type 3 as might be expected.
by the client to match the reply with the request
that caused the reply. The error will not be generated if the original datagram
has a multicast destination address. Reasons for this mes-
Originate timestamp is the time the sender sage may include: the physical connection to the host
last touched the message before sending it. does not exist (distance is infinite); the indicated protocol
Receive timestamp is the time the echoer first or port is not active; the data must be fragmented but the
touched it on receipt. 'don't fragment' flag is on.
Transmit timestamp is the time the echoer Where:
last touched the message on sending it.
Type field (bits 0-7) must be set to 3
All timestamps are in units of milliseconds
since midnight UT. If the time is not available Code field (bits 8-15) is used to specify the
in milliseconds or cannot be provided with re- type of error, and can be any of the following:
spect to midnight UT then any time can be in-
serted in a timestamp provided the high order
bit of the timestamp is also set to indicate this Next-hop MTU field (bits 48-63) contains the
non-standard value. MTU of the next-hop network if a code 4 error
occurs.
35.3.6 Address mask request IP header and additional data is included to
allow the client to match the reply with the re-
Address mask request is normally sent by a host to a router quest that caused the destination unreachable
in order to obtain an appropriate subnet mask. reply.

Recipients should reply to this message with an Address


mask reply message.
35.4 See also
Where:
• ICMP tunnel
Type must be set to 17
Code must be set to 0 • ICMP hole punching
Address mask can be set to 0 • ICMPv6
35.7. EXTERNAL LINKS 217

• IRDP 35.7 External links


• PMTU blackhole • IANA ICMP parameters
• Pathping • IANA protocol numbers
• Path MTU Discovery • Explanation of ICMP Redirect Behavior
• Ping

• Smurf attack

• TCP

35.5 References
[1] Forouzan, Behrouz A. (2007). Data Communications And
Networking (Fourth ed.). Boston: McGraw-Hill. pp.
621–630. ISBN 0-07-296775-7.

[2] “Protocol Numbers”. Internet Assigned Numbers Au-


thority. Retrieved 2011-06-23.

[3] Postel, J. (September 1981). Internet Control Message


Protocol. IETF. RFC 792. https://tools.ietf.org/html/
rfc792.

[4] https://tools.ietf.org/html/rfc792

[5] “IANA ICMP Parameters”. Iana.org. 2012-09-21. Re-


trieved 2013-01-07.

[6] Computer Networking – A Top-Down Approach by Kurose


and Ross

[7] https://tools.ietf.org/html/rfc6633

[8] “When Are ICMP Redirects Sent?". Cisco Systems.


2008-06-28. Retrieved 2013-08-15.

[9] “Cisco IOS IP Command Reference, Volume 1 of 4:


Addressing and Services, Release 12.3 - IP Addressing
and Services Commands: ip mask-reply through ip web-
cache”. Cisco Systems. Retrieved 2013-01-07.

35.6 RFCs
• RFC 792, Internet Control Message Protocol

• RFC 950, Internet Standard Subnetting Procedure

• RFC 1016, Something a Host Could Do with Source


Quench: The Source Quench Introduced Delay
(SQuID)

• RFC 1122, Requirements for Internet Hosts – Com-


munication Layers

• RFC 1716, Towards Requirements for IP Routers

• RFC 1812, Requirements for IP Version 4 Routers


Chapter 36

Internet Engineering Task Force

“IETF” redirects here. For other uses, see IETF (disam- (AD), with most areas having two co-ADs. The ADs
biguation). are responsible for appointing working group chairs. The
area directors, together with the IETF Chair, form the
The Internet Engineering Task Force (IETF) devel- Internet Engineering Steering Group (IESG), which is re-
sponsible for the overall operation of the IETF.
ops and promotes voluntary Internet standards, in par-
ticular the standards that comprise the Internet protocol The IETF is overseen by the Internet Architecture Board
suite (TCP/IP). It is an open standards organization, with (IAB), which oversees its external relationships, and re-
no formal membership or membership requirements. All lations with the RFC Editor.[6] The IAB is also jointly
participants and managers are volunteers, though their responsible for the IETF Administrative Oversight Com-
work is usually funded by their employers or sponsors. mittee (IAOC), which oversees the IETF Administrative
The IETF started out as an activity supported by the U.S. Support Activity (IASA), which provides logistical, etc.
federal government, but since 1993 it has operated as a support for the IETF. The IAB also manages the Internet
standards development function under the auspices of the Research Task Force (IRTF), with which the IETF has a
Internet Society, an international membership-based non- number of cross-group relations.
profit organization. A Nominating Committee (NomCom) of ten randomly
chosen volunteers who participate regularly at meetings is
vested with the power to appoint, reappoint, and remove
36.1 Organization members of the IESG, IAB, IASA, and the IAOC.[7] To
date, no one has been removed by a NomCom, although
several people have resigned their positions, requiring re-
The IETF is organized into a large number of working placements.
groups and informal discussion groups (BoFs, or Birds of
a Feather), each dealing with a specific topic and operates In 1993 the IETF changed from an activity supported
in a bottom-up task creation mode, largely driven by these by the U.S. government to an independent, international
working groups.[3] Each working group has an appointed activity associated with the Internet Society, an interna-
[8]
chairperson (or sometimes several co-chairs), along with tional membership-based non-profit organization. Be-
a charter that describes its focus, and what and when it is cause the IETF itself does not have members, nor is it an
expected to produce. It is open to all who want to par- organization per se, the Internet Society provides the fi-
ticipate, and holds discussions on an open mailing list or nancial and legal framework for the activities of the IETF
at IETF meetings, where the entry fee in July 2014 was and its sister bodies (IAB, IRTF, …). IETF activities are
USD $650 per person.[4] funded by meeting fees, meeting sponsors and by the In-
ternet Society via its organizational membership and the
Rough consensus is the primary basis for decision mak- proceeds of the Public Interest Registry.[9]
ing. There are no formal voting procedures. Because
the majority of the IETF’s work is done via mailing In December 2005 the IETF Trust was established
lists, meeting attendance is not required for contributors. to manage the copyrighted materials produced by the
[10]
Each working group is intended to complete work on its IETF.
topic and then disband. In some cases, the WG will in-
stead have its charter updated to take on new tasks as
appropriate.[3] 36.2 Meetings
The working groups are organized into areas by sub-
ject matter. Current areas are Applications, General, The first IETF meeting was attended by 21 U.S.-
Internet, Operations and Management, Real-time Ap- government-funded researchers on 16 January 1986. It
plications and Infrastructure, Routing, Security, and was a continuation of the work of the earlier GADS Task
Transport.[5] Each area is overseen by an area director Force. Representatives from non-governmental entities

218
36.4. CHAIRS 219

were invited to attend starting with the fourth IETF meet- is also considerable resistance to any change that is not
ing in October 1986. Since that time all IETF meetings fully backwards compatible. Work within the IETF on
have been open to the public.[3] ways to improve the speed of the standards-making pro-
Initially, the IETF met quarterly, but from 1991, it has cess is ongoing but, because the number of volunteers
been meeting three times a year. The initial meetings with opinions on it is very great, consensus on improve-
were very small, with fewer than 35 people in attendance ments has been slow to develop.
at each of the first five meetings. The maximum atten- The IETF cooperates with the W3C, ISO/IEC, ITU, and
dance during the first 13 meetings was only 120 attendees. other standards bodies.[8]
This occurred at the 12th meeting held during January Statistics are available that show who the top contribu-
1989. These meetings have grown in both participation tors by RFC publication are.[13] While the IETF only al-
and scope a great deal since the early 1990s; it had a max- lows for participation by individuals, and not by corpo-
imum attendance of 2,810 at the December 2000 IETF rations or governments, sponsorship information is avail-
held in San Diego, CA. Attendance declined with indus- able from these statistics.
try restructuring during the early 2000s, and is currently
around 1,200.[11][3]
The location for IETF meetings vary greatly. A list of past
and future meeting locations can be found on the IETF
36.4 Chairs
meetings page.[12] The IETF strives to hold its meetings
near where most of the IETF volunteers are located. For The IETF Chairperson is selected by the Nominating
many years, the goal was three meetings a year, with two Committee (NomCom) process for a 2-year renewable
in North America and one in either Europe or Asia, alter- term.[14] Before 1993, the IETF Chair was selected by
nating between them every other year. The current goal the IAB.[15]
is to hold three meetings in North America, two in Eu-
rope and one in Asia during a two-year period. However, • Mike Corrigan (1986)
corporate sponsorship of the meetings is also an impor-
tant factor and the schedule has been modified from time • Phill Gross (1986–1994)
to time in order to decrease operational costs.
• Paul Mockapetris (1994–1996)

• Fred Baker (1996–2001)


36.3 Operations
• Harald Tveit Alvestrand (2001–2005)
The details of IETF operations have changed consider-
• Brian Carpenter (2005–2007)
ably as the organization has grown, but the basic mecha-
nism remains publication of proposed specifications, de- • Russ Housley (2007–2013)
velopment based on the proposals, review and indepen-
dent testing by participants, and republication as a re- • Jari Arkko (2013– )
vised proposal, a draft proposal, or eventually as an Inter-
net Standard. IETF standards are developed in an open,
all-inclusive process in which any interested individual
can participate. All IETF documents are freely available 36.5 See also
over the Internet and can be reproduced at will. Multi-
ple, working, useful, interoperable implementations are • Gateway Algorithms and Data Structures Task
the chief requirement before an IETF proposed specifi- Force (GADS), precursor to the IETF.
cation can become a standard.[3] Most specifications are
focused on single protocols rather than tightly interlocked • Internet Architecture Board (IAB)
systems. This has allowed the protocols to be used in
many different systems, and its standards are routinely • Internet Engineering Steering Group (IESG)
re-used by bodies which create full-fledged architectures
(e.g. 3GPP IMS). • Internet governance
Because it relies on volunteers and uses "rough consensus • Internet Research Task Force (IRTF)
and running code" as its touchstone, results can be slow
whenever the number of volunteers is either too small to • Internet standard
make progress, or so large as to make consensus difficult,
or when volunteers lack the necessary expertise. For pro- • Request for Comments (RFCs)
tocols like SMTP, which is used to transport e-mail for a
user community in the many hundreds of millions, there • Standardization
220 CHAPTER 36. INTERNET ENGINEERING TASK FORCE

36.6 References
[1] “Internet Engineering Task Force (IETF)". RIPE NCC.
10 August 2012. Retrieved 13 October 2012.

[2] O. Jacobsen, D. Lynch (March 1991). “A Glossary of


Networking Terms”. RFC 1208. Retrieved 13 October
2012.

[3] “Internet Engineering Task Force”, Scott Bradner, Open


Sources: Voices from the Open Source Revolution,
O'Reilly, 1st Edition, January 1999, ISBN 1-56592-582-
3. Retrieved 21 July 2014.

[4] “Register for the Next IETF Meeting”. IETF. Retrieved


21 July 2014.

[5] “Active IETF Working Groups”. IETF. Retrieved 21 July


2014.

[6] “Charter of the Internet Architecture Board (IAB)", RFC


2850, B. Carpenter, May 2000. Retrieved 21 July 2014.

[7] “IETF NomCom”, IETF. Retrieved 21 July 2014.

[8] “IETF and the Internet Society”, Vint Cerf, Internet So-
ciety, 18 July 1995. Retrieved 21 July 2014.

[9] “History”, Your Public Internet Registry. Retrieved 21


July 2014.

[10] “IETF Trust”, IETF. Retrieved 21 July 2014.

[11] “Past Meetings”. IETF. Retrieved 21 July 2014.

[12] “IETF Meetings”. IETF. Retrieved 17 January 2012.

[13] “IETF document statistics (all documents)", Jari Arkko.


Retrieved 21 July 2014.

[14] “IAB and IESG Selection, Confirmation, and Recall Pro-


cess: Operation of the Nominating and Recall Commit-
tees”, RFC 3777, J. Galvin (Ed.), June 2004. Retrieved
21 July 2014.

[15] “Past IESG Members and IETF Chairs”. IETF. Retrieved


21 July 2014.

36.7 External links


• Official website

• IETF Online Proceedings


• Early IETF Proceedings (note: large pdf files,
one for each volume)
• Past Meetings of the IETF
• Past IESG Members and IETF Chairs

• The Tao of the IETF: details on how IETF is orga-


nized
Chapter 37

Internet Message Access Protocol

“IMAP” redirects here. For the antipsychotic, see user retrieves the messages with an e-mail client that uses
Fluspirilene. one of a number of e-mail retrieval protocols. Some
clients and servers preferentially use vendor-specific,
In computing, the Internet Message Access Protocol proprietary protocols, but most support SMTP for send-
ing e-mail and POP and IMAP for retrieving e-mail,
(IMAP) is an Internet standard protocol used by e-mail
clients to retrieve e-mail messages from a mail server over allowing interoperability with other servers and clients.
For example, Microsoft's Outlook client uses MAPI, a
a TCP/IP connection.[1] IMAP is defined by RFC 3501.
Microsoft proprietary protocol, to communicate with a
IMAP was designed with the goal of permitting complete Microsoft Exchange Server. IBM's Notes client works
management of an email box by multiple email clients, in a similar fashion when communicating with a Domino
therefore clients generally leave messages on the server server. All of these products also support POP, IMAP,
until the user explicitly deletes them. An IMAP server and outgoing SMTP. Support for the Internet standard
typically listens on port number 143. IMAP over SSL protocols allows many e-mail clients such as Pegasus Mail
(IMAPS) is assigned the port number 993. or Mozilla Thunderbird to access these servers, and al-
Virtually all modern e-mail clients and servers support lows the clients to be used with other servers.
IMAP. IMAP and the earlier POP3 (Post Office Pro-
tocol) are the two most prevalent standard protocols for
email retrieval,[2] with many webmail service providers 37.2 History
such as Gmail, Outlook.com and Yahoo! Mail also pro-
viding support for either IMAP or POP3. IMAP was designed by Mark Crispin in 1986 as a remote
mailbox protocol, in contrast to the widely used POP, a
protocol for retrieving the contents of a mailbox.[5]
37.1 E-mail protocols IMAP was previously known as Internet Mail Ac-
cess Protocol, Interactive Mail Access Protocol (RFC
[6]
The Internet Message Access Protocol is an Application 1064), and Interim Mail Access Protocol.
Layer Internet protocol that allows an e-mail client to ac-
cess e-mail on a remote mail server. The current version,
IMAP version 4 revision 1 (IMAP4rev1), is defined by
37.2.1 Original IMAP
RFC 3501. An IMAP server typically listens on well-
The original Interim Mail Access Protocol was imple-
known port 143. IMAP over SSL (IMAPS) is assigned
mented as a Xerox Lisp machine client and a TOPS-20
well-known port number 993.
server.
IMAP supports both on-line and off-line modes of opera-
No copies of the original interim protocol specification or
tion. E-mail clients using IMAP generally leave messages
its software exist.[7] Although some of its commands and
on the server until the user explicitly deletes them. This
responses were similar to IMAP2, the interim protocol
and other characteristics of IMAP operation allow mul-
lacked command/response tagging and thus its syntax was
tiple clients to manage the same mailbox. Most e-mail
incompatible with all other versions of IMAP.
clients support IMAP in addition to Post Office Protocol
(POP) to retrieve messages; however, fewer e-mail ser-
vices support IMAP.[3] IMAP offers access to the mail
37.2.2 IMAP2
storage. Clients may store local copies of the messages,
but these are considered to be a temporary cache.[4] The interim protocol was quickly replaced by the Inter-
Incoming e-mail messages are sent to an e-mail server active Mail Access Protocol (IMAP2), defined in RFC
that stores messages in the recipient’s e-mail box. The 1064 (in 1988) and later updated by RFC 1176 (in 1990).

221
222 CHAPTER 37. INTERNET MESSAGE ACCESS PROTOCOL

IMAP2 introduced the command/response tagging and 37.3.2 Multiple clients simultaneously
was the first publicly distributed version. connected to the same mailbox
The POP protocol requires the currently connected client
37.2.3 IMAP3 to be the only client connected to the mailbox. In con-
trast, the IMAP protocol specifically allows simultane-
IMAP3 is an extremely rare variant of IMAP.[8] It was ous access by multiple clients and provides mechanisms
published as RFC 1203 in 1991. It was written specifi- for clients to detect changes made to the mailbox by
cally as a counter proposal to RFC 1176, which itself pro- other, concurrently connected, clients. See for example
posed modifications to IMAP2.[9] IMAP3 was never ac- RFC3501 section 5.2 which specifically cites “simulta-
cepted by the marketplace.[10][11] The IESG reclassified neous access to the same mailbox by multiple agents” as
RFC1203 “Interactive Mail Access Protocol - Version an example.
3” as a Historic protocol in 1993. The IMAP Working
Group used RFC1176 (IMAP2) rather than RFC1203
(IMAP3) as its starting point.[12][13]
37.3.3 Access to MIME message parts and
partial fetch
Usually all Internet e-mail is transmitted in MIME for-
37.2.4 IMAP2bis mat, allowing messages to have a tree structure where the
leaf nodes are any of a variety of single part content types
With the advent of MIME, IMAP2 was extended to and the non-leaf nodes are any of a variety of multipart
support MIME body structures and add mailbox man- types. The IMAP4 protocol allows clients to retrieve any
agement functionality (create, delete, rename, message of the individual MIME parts separately and also to re-
upload) that was absent from IMAP2. This exper- trieve portions of either individual parts or the entire mes-
imental revision was called IMAP2bis; its specifica- sage. These mechanisms allow clients to retrieve the text
tion was never published in non-draft form. An in- portion of a message without retrieving attached files or
ternet draft of IMAP2bis was published by the IETF to stream content as it is being fetched.
IMAP Working Group in October 1993. This draft
was based upon the following earlier specifications:
unpublished IMAP2bis.TXT document, RFC1176, and 37.3.4 Message state information
RFC1064 (IMAP2).[14] The IMAP2bis.TXT draft docu-
mented the state of extensions to IMAP2 as of December Through the use of flags defined in the IMAP4 proto-
1992.[15] Early versions of Pine were widely distributed col, clients can keep track of message state: for exam-
with IMAP2bis support[8] (Pine 4.00 and later supports ple, whether or not the message has been read, replied
IMAP4rev1). to, or deleted. These flags are stored on the server, so
different clients accessing the same mailbox at differ-
ent times can detect state changes made by other clients.
37.2.5 IMAP4 POP provides no mechanism for clients to store such
state information on the server so if a single user ac-
An IMAP Working Group formed in the IETF in the cesses a mailbox with two different POP clients (at differ-
early 1990s took over responsibility for the IMAP2bis ent times), state information—such as whether a message
design. The IMAP WG decided to rename IMAP2bis has been accessed—cannot be synchronized between the
to IMAP4 to avoid confusion. clients. The IMAP4 protocol supports both predefined
system flags and client-defined keywords. System flags
indicate state information such as whether a message has
been read. Keywords, which are not supported by all
37.3 Advantages over POP IMAP servers, allow messages to be given one or more
tags whose meaning is up to the client. IMAP keywords
should not be confused with proprietary labels of web-
37.3.1 Connected and disconnected modes based e-mail services which are sometimes translated into
of operation IMAP folders by the corresponding proprietary servers.

When using POP, clients typically connect to the e-mail


server briefly, only as long as it takes to download new 37.3.5 Multiple mailboxes on the server
messages. When using IMAP4, clients often stay con-
nected as long as the user interface is active and down- IMAP4 clients can create, rename, and/or delete mail-
load message content on demand. For users with many boxes (usually presented to the user as folders) on the
or large messages, this IMAP4 usage pattern can result in server, and copy messages between mailboxes. Multiple
faster response times. mailbox support also allows servers to provide access to
37.5. SECURITY 223

shared and public folders. The IMAP4 Access Control List ing a copy in a server-side folder with a base-level IMAP
(ACL) Extension (RFC 4314) may be used to regulate ac- client requires transmitting the message content twice,
cess rights. once to SMTP for delivery and a second time to IMAP
to store in a sent mail folder. This is remedied by a set
of extensions defined by the IETF LEMONADE Work-
37.3.6 Server-side searches ing Group for mobile devices: URLAUTH (RFC 4467)
and CATENATE (RFC 4469) in IMAP and BURL (RFC
IMAP4 provides a mechanism for a client to ask the 4468) in SMTP-SUBMISSION. POP servers don't sup-
server to search for messages meeting a variety of crite- port server-side folders so clients have no choice but to
ria. This mechanism avoids requiring clients to download store sent items on the client. Many IMAP clients can
every message in the mailbox in order to perform these be configured to store sent mail in a client-side folder, or
searches. to BCC oneself and then filter the incoming mail instead
of saving a copy in a folder directly. In addition to the
LEMONADE “trio”, Courier Mail Server offers a non-
37.3.7 Built-in extension mechanism
standard method of sending using IMAP by copying an
outgoing message to a dedicated outbox folder.[18]
Reflecting the experience of earlier Internet protocols,
IMAP4 defines an explicit mechanism by which it may be
extended. Many IMAP4 extensions to the base protocol
have been proposed and are in common use. IMAP2bis 37.5 Security
did not have an extension mechanism, and POP now has
one defined by RFC 2449. STARTTLS can be used to provide secure communica-
tions between the MUA communicating with the MSA or
MTA implementing the SMTP Protocol.
37.4 Disadvantages
While IMAP remedies many of the shortcomings of 37.6 Dialog example
POP, this inherently introduces additional complexity.
Much of this complexity (e.g., multiple clients accessing This is an example IMAP connection as taken from RFC
the same mailbox at the same time) is compensated for 3501 section 8:
by server-side workarounds such as Maildir or database
backends. C: <open connection> S: * OK IMAP4rev1 Service
Ready C: a001 login mrc secret S: a001 OK LOGIN
The IMAP specification has been criticised for being in- completed C: a002 select inbox S: * 18 EXISTS
sufficiently strict and allowing behaviours that effectively S: * FLAGS (\Answered \Flagged \Deleted \Seen
negate its usefulness. For instance, the specification states \Draft) S: * 2 RECENT S: * OK [UNSEEN 17]
that each message stored on the server has a “unique id” Message 17 is the first unseen message S: * OK [UID-
to allow the clients to identify the messages they have al- VALIDITY 3857529045] UIDs valid S: a002 OK
ready seen between sessions. However, the specification [READ-WRITE] SELECT completed C: a003 fetch 12
also allows these UIDs to be invalidated with no restric- full S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE
tions, practically defeating their purpose.[16] “17-Jul-1996 02:44:25 −0700” RFC822.SIZE 4286
Unless the mail storage and searching algorithms on the ENVELOPE (“Wed, 17 Jul 1996 02:23:25 −0700
server are carefully implemented, a client can potentially (PDT)" “IMAP4rev1 WG mtg summary and minutes”
consume large amounts of server resources when search- ((“Terry Gray” NIL “gray” “cac.washington.edu”))
ing massive mailboxes. ((“Terry Gray” NIL “gray” “cac.washington.edu”))
((“Terry Gray” NIL “gray” “cac.washington.edu”))
IMAP4 clients need to maintain a TCP/IP connection to ((NIL NIL “imap” “cac.washington.edu”)) ((NIL NIL
the IMAP server in order to be notified of the arrival of “minutes” “CNRI.Reston.VA.US”) (“John Klensin”
new mail. Notification of mail arrival is done through NIL “KLENSIN” “MIT.EDU”)) NIL NIL "<B27397-
in-band signaling, which contributes to the complexity of [email protected]>") BODY (“TEXT”
client-side IMAP protocol handling somewhat.[17] A pri- “PLAIN” (“CHARSET” “US-ASCII”) NIL NIL “7BIT”
vate proposal, push IMAP, would extend IMAP to imple- 3028 92)) S: a003 OK FETCH completed C: a004 fetch
ment push e-mail by sending the entire message instead 12 body[header] S: * 12 FETCH (BODY[HEADER]
of just a notification. However, push IMAP has not been {342} S: Date: Wed, 17 Jul 1996 02:23:25 −0700 (PDT)
generally accepted and current IETF work has addressed S: From: Terry Gray <[email protected]>
the problem in other ways (see the Lemonade Profile for S: Subject: IMAP4rev1 WG mtg summary and
more information). minutes S: To: [email protected] S:
Unlike some proprietary protocols which combine send- cc: [email protected], John Klensin
ing and retrieval operations, sending a message and sav- <[email protected]> S: Message-Id: <B27397-
224 CHAPTER 37. INTERNET MESSAGE ACCESS PROTOCOL

[email protected]> S: MIME-Version: 1.0 [11] “IMAP Overview, History, Versions and Standards”. Re-
S: Content-Type: TEXT/PLAIN; CHARSET=US- trieved 2010-08-21.
ASCII S: S: ) S: a004 OK FETCH completed C a005
[12] “Protocol Action: Interactive Mail Access Protocol - Ver-
store 12 +flags \deleted S: * 12 FETCH (FLAGS sion 3 to Historic (IETF mail archive)". 1993. Retrieved
(\Seen \Deleted)) S: a005 OK +FLAGS completed C: 2010-08-21.
a006 logout S: * BYE IMAP4rev1 server terminating
connection S: a006 OK LOGOUT completed [13] “Innosoft and POP/IMAP protocols? (mail archive)".
1993. Retrieved 2010-08-21.

[14] “INTERACTIVE MAIL ACCESS PROTOCOL - VER-


37.7 See also SION 2bis (Internet Draft)". IETF. 1993. Retrieved
2010-08-21.
• List of mail servers [15] “IMAP2BIS -- EXTENSIONS TO THE IMAP2 PRO-
TOCOL (DRAFT)". 1992. Retrieved 2010-08-21.
• Comparison of mail servers
[16] “IMAP implementation in Sup, an e-mail client written in
• Comparison of e-mail clients Ruby”. rubyforge.com. Retrieved 2011-02-22.

• Post Office Protocol (POP) [17] “IMAP IDLE: The best approach for 'push' e-mail”.
Isode.com. Retrieved 2009-07-30.
• Push-IMAP
[18] “Courier-IMAP: Sending mail via an IMAP connection”.
• Simple Mail Access Protocol Double Precision, Inc. Retrieved 2013-09-24.

• Webmail

• IMAP IDLE
37.9 Further reading
• Heinlein, P; Hartleben, P (2008). The Book of
IMAP: Building a Mail Server with Courier and
37.8 References Cyrus. No Starch Press. ISBN 1-59327-177-8.

[1] Dean, Tamara (2010). Network+ Guide to Networks. Del- • Hughes, L (1998). Internet e-mail Protocols, Stan-
mar. p. 519. dards and Implementation. Artech House Publish-
ers. ISBN 0-89006-939-5.
[2] Komarinski, Mark (2000). Red Hat Linux System Admin-
istration Handbook. Prentice Hall. p. 179. • Johnson, K (2000). Internet E-mail Protocols: A
Developer’s Guide. Addison-Wesley Professional.
[3] Mullet, Diana (2000). Managing IMAP. O'Reilly. p. 25. ISBN 0-201-43288-9.
ISBN 0-596-00012-X.
• Loshin, P (1999). Essential E-mail Standards: RFCs
[4] See e.g. Timo Sirainen, Dave Cridland. “IMAP Client
and Protocols Made Practical. John Wiley & Sons.
Coding HOWTO”.
ISBN 0-471-34597-0.
[5] The IMAP Connection - IMAP Status and History
• Mullet, K (2000). Managing IMAP. O'Reilly Media.
[6] Service Name and Transport Protocol Port Number Reg- ISBN 0-596-00012-X.
istry. Iana.org (2013-07-12). Retrieved on 2013-07-17.
• Rhoton, J (1999). Programmer’s Guide to Inter-
[7] Crispin, Mark (13 February 2012). “Re: net Mail: SMTP, POP, IMAP, and LDAP. Elsevier.
[imap5] Designing a new replacement proto- ISBN 1-55558-212-5.
col for IMAP”. imap5 (Mailing list). Usenet:
• Wood, D (1999). Programming Internet Mail.
[email protected].
Retrieved 26 November 2014. Knowledge of the original O'Reilly. ISBN 1-56592-479-7.
IMAP (before IMAP2) exists primarily in my mind as
all the original IMAP specifications and implementations
were replaced with IMAP2. 37.10 External links
[8] “RFC 2061 - IMAP4 COMPATIBILITY WITH
IMAP2BIS”. IETF. 1996. Retrieved 2010-08-21. • “IMAP Protocol Mailing List”.

[9] “INTERACTIVE MAIL ACCESS PROTOCOL - VER- • RFC 3501 - specification of IMAP version 4 revi-
SION 3”. IETF. 1991. Retrieved 2010-08-21. sion 1

[10] “IMAP2, IMAP2bis, IMAP3, IMAP4, IMAP4rev1 • RFC 2683 - IMAP Implementation Suggestions
(LAN Mail Protocols)". Retrieved 2010-08-21. RFC
37.10. EXTERNAL LINKS 225

• RFC 2177 - IMAP4 IDLE command

• IMAP extensions for mobility-class applications


presented and exemplified in a doctoral thesis
Chapter 38

Internet Protocol

This article is about the IP network protocol only. For


Internet architecture or other protocols, see Internet Data Application
protocol suite.
UDP UDP Transport
header data
The Internet Protocol (IP) is the principal
communications protocol in the Internet protocol IP
suite for relaying datagrams across network bound- IP data Internet
header
aries. Its routing function enables internetworking, and
essentially establishes the Internet. Frame
Frame data
Frame
Link
header footer
IP has the task of delivering packets from the source host
to the destination host solely based on the IP addresses in
the packet headers. For this purpose, IP defines packet Sample encapsulation of application data from UDP to a Link
structures that encapsulate the data to be delivered. It protocol frame
also defines addressing methods that are used to label the
datagram with source and destination information.
is the data that is transported. This method of nesting the
Historically, IP was the connectionless datagram service data payload in a packet with a header is called encapsu-
in the original Transmission Control Program introduced lation.
by Vint Cerf and Bob Kahn in 1974; the other being
the connection-oriented Transmission Control Protocol
(TCP). The Internet protocol suite is therefore often re- 38.1.2 IP addressing and routing
ferred to as TCP/IP.
The first major version of IP, Internet Protocol Version IP addressing entails the assignment of IP addresses and
4 (IPv4), is the dominant protocol of the Internet. Its associated parameters to host interfaces. The address
successor is Internet Protocol Version 6 (IPv6). space is divided into networks and subnetworks, involving
the designation of network or routing prefixes. IP routing
is performed by all hosts, as well as routers, whose main
function is to transport packets across network bound-
38.1 Function aries. Routers communicate with one another via spe-
cially designed routing protocols, either interior gateway
The Internet Protocol is responsible for addressing hosts protocols or exterior gateway protocols, as needed for the
and for routing datagrams (packets) from a source host topology of the network.
to a destination host across one or more IP networks. For IP routing is also common in local networks. For
this purpose, the Internet Protocol defines the format of example, many Ethernet switches support IP multi-
packets and provides an addressing system that has two cast operations.[1] These switches use IP addresses and
functions: Identifying hosts and providing a logical loca- Internet Group Management Protocol to control multicast
tion service. routing but use MAC addresses for the actual routing.

38.1.1 Datagram construction


38.2 Reliability
Each datagram has two components: a header and a
payload. The IP header is tagged with the source IP ad- The design of the Internet protocols is based on the end-
dress, the destination IP address, and other meta-data to-end principle. The network infrastructure is consid-
needed to route and deliver the datagram. The payload ered inherently unreliable at any single network element

226
38.4. VERSION HISTORY 227

or transmission medium and is dynamic in terms of avail- the Internet Control Message Protocol (ICMP) disre-
ability of links and nodes. No central monitoring or per- gard MTU size, thereby forcing IP to fragment oversized
formance measurement facility exists that tracks or main- datagrams.[5]
tains the state of the network. For the benefit of reduc-
ing network complexity, the intelligence in the network
is purposely located in the end nodes. 38.4 Version history
As a consequence of this design, the Internet Protocol
only provides best-effort delivery and its service is charac- The versions currently relevant are IPv4 and IPv6.
terized as unreliable. In network architectural language,
In May 1974, the Institute of Electrical and Electronic
it is a connectionless protocol, in contrast to connection-
Engineers (IEEE) published a paper entitled “A Proto-
oriented communications. Various error conditions may
col for Packet Network Intercommunication”.[6] The pa-
occur, such as data corruption, packet loss, duplication
per’s authors, Vint Cerf and Bob Kahn, described an in-
and out-of-order delivery. Because routing is dynamic,
ternetworking protocol for sharing resources using packet
meaning every packet is treated independently, and be-
switching among network nodes. A central control com-
cause the network maintains no state based on the path
ponent of this model was the “Transmission Control Pro-
of prior packets, different packets may be routed to the
gram” that incorporated both connection-oriented links
same destination via different paths, resulting in out-of-
and datagram services between hosts. The monolithic
order sequencing at the receiver.
Transmission Control Program was later divided into a
IPv4 provides safeguards to ensure that the IP packet modular architecture consisting of the Transmission Con-
header is error-free. A routing node calculates a trol Protocol at the transport layer and the Internet Proto-
checksum for a packet. If the checksum is bad, the rout- col at the network layer. The model became known as the
ing node discards the packet. Although the Internet Con- Department of Defense (DoD) Internet Model and Internet
trol Message Protocol (ICMP) allows such notification, Protocol Suite, and informally as TCP/IP.
the routing node is not required to notify either end node
IP versions 0 to 3 were experimental versions, used be-
of these errors. By contrast, in order to increase perfor-
tween 1977 and 1979. The following Internet Experi-
mance, and since current link layer technology is assumed
ment Note (IEN) documents describe versions of the In-
to provide sufficient error detection,[2] the IPv6 header
ternet Protocol prior to the modern version of IPv4:
has no checksum to protect it.[3]
All error conditions in the network must be detected and • IEN 2 (Comments on Internet Protocol and TCP),
compensated by the end nodes of a transmission. The dated August 1977 describes the need to separate
upper layer protocols of the internet protocol suite are re- the TCP and Internet Protocol functionalities (which
sponsible for resolving reliability issues. For example, a were previously combined.) It proposes the first ver-
host may buffer network data to ensure correct ordering sion of the IP header, using 0 for the version field.
before the data is delivered to an application.
• IEN 26 (A Proposed New Internet Header Format),
dated February 1978 describes a version of the IP
header that uses a 1-bit version field.
38.3 Link capacity and capability
• IEN 28 (Draft Internetwork Protocol Description
Version 2), dated February 1978 describes IPv2.
The dynamic nature of the Internet and the diversity of
its components provide no guarantee that any particular • IEN 41 (Internetwork Protocol Specification Version
path is actually capable of, or suitable for, performing the 4), dated June 1978 describes the first protocol to
data transmission requested, even if the path is available be called IPv4. The IP header is different from the
and reliable. One of the technical constraints is the size modern IPv4 header.
of data packets allowed on a given link. An application
must assure that it uses proper transmission characteris- • IEN 44 (Latest Header Formats), dated June 1978
tics. Some of this responsibility lies also in the upper layer describes another version of IPv4, also with a header
protocols. Facilities exist to examine the maximum trans- different from the modern IPv4 header.
mission unit (MTU) size of the local link and Path MTU • IEN 54 (Internetwork Protocol Specification Version
Discovery can be used for the entire projected path to the 4), dated September 1978 is the first description of
destination. The IPv4 internetworking layer has the ca- IPv4 using the header that would be standardized in
pability to automatically fragment the original datagram RFC 760.
into smaller units for transmission. In this case, IP pro-
vides re-ordering of fragments delivered out of order.[4] The dominant internetworking protocol in the Internet
The Transmission Control Protocol (TCP) is an example Layer in use today is IPv4; the number 4 is the proto-
of a protocol that adjusts its segment size to be smaller col version number carried in every IP datagram. IPv4 is
than the MTU. The User Datagram Protocol (UDP) and described in RFC 791 (1981).
228 CHAPTER 38. INTERNET PROTOCOL

Version 5 was used by the Internet Stream Protocol, an [6] Vinton G. Cerf, Robert E. Kahn, “A Protocol for Packet
experimental streaming protocol. Network Intercommunication”, IEEE Transactions on
Communications, Vol. 22, No. 5, May 1974 pp. 637–
The successor to IPv4 is IPv6. Its most prominent differ- 648
ence from version 4 is the size of the addresses. While
IPv4 uses 32 bits for addressing, yielding c. 4.3 billion [7] CIO council adds to IPv6 transition primer, gcn.com
(4.3×109 ) addresses, IPv6 uses 128-bit addresses pro-
[8] Mulligan, Geoff. “It was almost IPv7”. O'Reilly. O'Reilly
viding ca. 340 undecillion, or 3.4×1038 addresses. Al-
Media. Retrieved 4 July 2015.
though adoption of IPv6 has been slow, as of June 2008,
all United States government systems have demonstrated [9] Leyden, John (6 July 2004). “China disowns IPv9 hype”.
basic infrastructure support for IPv6.[7] IPv6 was a re- theregister.co.uk. The Register. Retrieved 4 May 2014.
sult of several years of experimentation and dialog dur-
[10] RFC 1606: A Historical Perspective On The Usage Of IP
ing which various protocol models were proposed, such Version 9. April 1, 1994.
as TP/IX (RFC 1475), PIP (RFC 1621) and TUBA (TCP
and UDP with Bigger Addresses, RFC 1347). [11] Security Assessment of the Internet Protocol
(IP)(archived version)
The assignment of the new protocol as IPv6 was uncertain
until due diligence revealed that IPv6 had not yet been [12] Security Assessment of the Internet Protocol version 4
used previously.[8] Other protocol proposals named IPv9 (IPv4)
and IPv8 briefly surfaced, but had no affiliation with any
international standards body, and have had no support.[9]
On April 1, 1994, the IETF published an April Fool’s Day 38.8 External links
joke about IPv9.[10]
• Internet Protocol at DMOZ

• RFC 791
38.5 Security
• Data Communication Lectures of Manfred Lindner
During the design phase of the ARPANET and the early – Part IP Technology Fundamentals
Internet, the security aspects and needs of a public, in-
• Data Communication Lectures of Manfred Lindner
ternational network could not be adequately anticipated.
– Part IP Routing Fundamentals
Consequently, many Internet protocols exhibited vulner-
abilities highlighted by network attacks and later security
assessments. In 2008, a thorough security assessment and
proposed mitigation of problems was published.[11] The
Internet Engineering Task Force (IETF) has been pursu-
ing further studies.[12]

38.6 See also


• List of IP protocol numbers
• Next-generation network
• IP forwarding algorithm

38.7 References
[1] Netgear ProSafe XSM7224S reference manual

[2] RFC 1726 section 6.2

[3] RFC 2460

[4] Siyan, Karanjit. Inside TCP/IP, New Riders Publishing,


1997. ISBN 1-56205-714-6

[5] Parker, Don (2 November 2010). “Basic Journey of a


Packet”. symantec.com. Symantec. Retrieved 4 May
2014.
Chapter 39

Internet protocol suite

The Internet protocol suite is the computer networking


model and set of communications protocols used on the
Internet and similar computer networks. It is commonly
known as TCP/IP, because its most important proto-
cols, the Transmission Control Protocol (TCP) and the
Internet Protocol (IP) were the first networking protocols
defined during its development. It is occasionally known
as the Department of Defense (DoD) model, because
the development of the networking model was funded by
DARPA, an agency of the United States Department of
Defense.
TCP/IP provides end-to-end data communication spec-
ifying how data should be packetized, addressed, trans- Diagram of the first internetworked connection
mitted, routed and received. This functionality is orga-
nized into four abstraction layers which are used to sort
all related protocols according to the scope of network-
ing involved.[1][2] From lowest to highest, the layers are
the link layer, containing communication methods for
data that remains within a single network segment (link);
the internet layer, connecting independent networks, thus
providing internetworking; the transport layer handling
host-to-host communication; and the application layer,
which provides process-to-process data exchange for ap-
plications.
The TCP/IP model and many of its protocols are main-
tained by the Internet Engineering Task Force (IETF).
A Stanford Research Institute packet radio van, site of the first
three-way internetworked transmission.

39.1 History
ARPANET Network Control Program (NCP) protocol,
39.1.1 Early research joined Kahn to work on open-architecture interconnec-
tion models with the goal of designing the next protocol
The Internet protocol suite resulted from research and de- generation for the ARPANET.
velopment conducted by the Defense Advanced Research By the summer of 1973, Kahn and Cerf had worked out a
Projects Agency (DARPA) in the late 1960s.[3] After fundamental reformulation, in which the differences be-
initiating the pioneering ARPANET in 1969, DARPA tween network protocols were hidden by using a common
started work on a number of other data transmission tech- internetwork protocol, and, instead of the network being
nologies. In 1972, Robert E. Kahn joined the DARPA responsible for reliability, as in the ARPANET, this func-
Information Processing Technology Office, where he tion was delegated to the hosts. Cerf credits Hubert Zim-
worked on both satellite packet networks and ground- mermann and Louis Pouzin, designer of the CYCLADES
based radio packet networks, and recognized the value network, with important influences on this design. The
of being able to communicate across both. In the spring protocol was implemented as the Transmission Control
of 1973, Vinton Cerf, the developer of the existing Program (TCP), first published in 1974.[4]

229
230 CHAPTER 39. INTERNET PROTOCOL SUITE

Initially, the TCP managed both datagram transmissions 39.1.3 Adoption


and routing, but as the protocol grew, other researchers,
including Jon Postel, recommended a division of func- In March 1982, the US Department of Defense de-
tionality into protocol layers. Postel stated, “we are clared TCP/IP as the standard for all military computer
screwing up in our design of Internet protocols by violat- networking.[13] In 1985, the Internet Advisory Board
ing the principle of layering”.[5] Encapsulation of differ- (later renamed the Internet Architecture Board) held a
ent mechanisms was intended to create an environment three-day workshop on TCP/IP for the computer indus-
where the upper layers could access only what was needed try, attended by 250 vendor representatives, promoting
from the lower layers. A monolithic design would be in- the protocol and leading to its increasing commercial use.
flexible and lead to scalability issues. The Transmission
Control Program was split into two distinct protocols, theIn 1985, the first Interop conference focused on network
Transmission Control Protocol and the Internet Protocol. interoperability by broader adoption of TCP/IP. The con-
The new suite replaced all protocols used previously.,[6] ference was founded by Dan Lynch, an early Internet ac-
PRnet,[7] and SATnet[8][9] tivist. From the beginning, large corporations, such as
IBM and DEC, attended the meeting. Interoperability
The design of the network included the recognition that conferences have been held every year since then. Every
it should provide only the functions of efficiently trans- year from 1985 through 1993, the number of attendees
mitting and routing traffic between end nodes and that tripled.
all other intelligence should be located at the edge of
the network, in the end nodes. Using a simple design, IBM, AT&T and DEC were the first major corpora-
it became possible to connect almost any network to tions to adopt TCP/IP, despite having competing internal
the ARPANET, irrespective of the local characteristics, protocols (SNA, XNS, DECNET). In IBM, from 1984,
thereby solving Kahn’s initial problem. One popular ex- Barry Appelman's group did TCP/IP development. (Ap-
pression is that TCP/IP, the eventual product of Cerf and pelman later moved to AOL to be the head of all its devel-
Kahn’s work, will run over "two tin cans and a string." opment efforts.) They navigated the corporate politics to
(Years later, as a joke, the IP over Avian Carriers for- get a stream of TCP/IP products for various IBM systems,
mal protocol specification was created and successfully including MVS, VM, and OS/2. At the same time, sev-
tested.) eral smaller companies began offering TCP/IP stacks for
DOS and MS Windows, such as the company FTP Soft-
A computer called a router is provided with an interface ware, and the Wollongong Group.[14] The first VM/CMS
to each network. It forwards packets back and forth be- TCP/IP stack came from the University of Wisconsin.[15]
tween them.[10] Originally a router was called gateway,
but the term was changed to avoid confusion with other Many of these TCP/IP stacks were written single-
types of gateways. handedly by a few talented programmers. For example,
John Romkey of FTP Software was the author of the MIT
PC/IP package.[16] John Romkey’s PC/IP implementa-
39.1.2 Specification tion was the first IBM PC TCP/IP stack. Jay Elinsky
and Oleg Vishnepolsky of IBM Research wrote TCP/IP
[17]
From 1973 to 1974, Cerf’s networking research group stacks for VM/CMS and OS/2, respectively.
at Stanford worked out details of the idea, resulting in The spread of TCP/IP was fueled further in June 1989,
the first TCP specification.[11] A significant technical in- when AT&T agreed to place the TCP/IP code developed
fluence was the early networking work at Xerox PARC, for UNIX into the public domain. Various vendors, in-
which produced the PARC Universal Packet protocol cluding IBM, included this code in their own TCP/IP
suite, much of which existed around that time. stacks. Many companies sold TCP/IP stacks for Win-
DARPA then contracted with BBN Technologies, dows until Microsoft released a native TCP/IP stack in
Stanford University, and the University College London Windows 95. This event was a little late in the evo-
to develop operational versions of the protocol on differ- lution of the Internet, but it cemented TCP/IP’s domi-
ent hardware platforms. Four versions were developed: nance over other protocols, which began to lose ground.
TCP v1, TCP v2, TCP v3 and IP v3, and TCP/IP v4. These protocols included IBM Systems Network Archi-
The last protocol is still in use today. tecture (SNA), Open Systems Interconnection (OSI), Mi-
crosoft’s native NetBIOS, and Xerox Network Systems
In 1975, a two-network TCP/IP communications test was (XNS).
performed between Stanford and University College Lon-
don (UCL). In November, 1977, a three-network TCP/IP
test was conducted between sites in the US, the UK,
and Norway. Several other TCP/IP prototypes were de-
veloped at multiple research centers between 1978 and
39.2 Key architectural principles
1983. The migration of the ARPANET to TCP/IP was
officially completed on flag day January 1, 1983, when An early architectural document, RFC 1122, emphasizes
the new protocols were permanently activated.[12] architectural principles over layering.[18]
39.3. ABSTRACTION LAYERS 231

• End-to-end principle: This principle has evolved to many other architectural principles not emphasizing
over time. Its original expression put the mainte- layering. It loosely defines a four-layer model, with the
nance of state and overall intelligence at the edges, layers having names, not numbers, as follows:
and assumed the Internet that connected the edges
retained no state and concentrated on speed and sim- • The application layer is the scope within which ap-
plicity. Real-world needs for firewalls, network ad- plications create user data and communicate this
dress translators, web content caches and the like data to other applications on another or the same
have forced changes in this principle.[19] host. The applications, or processes, make use of the
services provided by the underlying, lower layers,
• Robustness Principle: “In general, an implementa- especially the Transport Layer which provides reli-
tion must be conservative in its sending behavior, able or unreliable pipes to other processes. The com-
and liberal in its receiving behavior. That is, it must munications partners are characterized by the appli-
be careful to send well-formed datagrams, but must cation architecture, such as the client-server model
accept any datagram that it can interpret (e.g., not and peer-to-peer networking. This is the layer in
object to technical errors where the meaning is still which all higher level protocols, such as SMTP, FTP,
clear).”[20] “The second part of the principle is al- SSH, HTTP, operate. Processes are addressed via
most as important: software on other hosts may con- ports which essentially represent services.
tain deficiencies that make it unwise to exploit legal
but obscure protocol features.”[21] • The transport layer performs host-to-host commu-
nications on either the same or different hosts and
on either the local network or remote networks sep-
39.3 Abstraction layers arated by routers. It provides a channel for the com-
munication needs of applications. UDP is the ba-
sic transport layer protocol, providing an unreliable
Encapsulation is used to provide abstraction of protocols
datagram service. The Transmission Control Proto-
and services. Encapsulation is usually aligned with the
col provides flow-control, connection establishment,
division of the protocol suite into layers of general func-
and reliable transmission of data.
tionality. In general, an application (the highest level of
the model) uses a set of protocols to send its data down • The internet layer has the task of exchanging data-
the layers, being further encapsulated at each level. grams across network boundaries. It provides a
The layers of the protocol suite near the top are logically uniform networking interface that hides the actual
closer to the user application, while those near the bot- topology (layout) of the underlying network connec-
tom are logically closer to the physical transmission of the tions. It is therefore also referred to as the layer that
data. Viewing layers as providing or consuming a service establishes internetworking, indeed, it defines and
is a method of abstraction to isolate upper layer protocols establishes the Internet. This layer defines the ad-
from the details of transmitting bits over, for example, dressing and routing structures used for the TCP/IP
Ethernet and collision detection, while the lower layers protocol suite. The primary protocol in this scope
avoid having to know the details of each and every appli- is the Internet Protocol, which defines IP addresses.
cation and its protocol. Its function in routing is to transport datagrams to
the next IP router that has the connectivity to a net-
Even when the layers are examined, the assorted architec- work closer to the final data destination.
tural documents—there is no single architectural model
such as ISO 7498, the Open Systems Interconnection • The link layer defines the networking methods
(OSI) model—have fewer and less rigidly defined layers within the scope of the local network link on which
than the OSI model, and thus provide an easier fit for real- hosts communicate without intervening routers.
world protocols. One frequently referenced document, This layer includes the protocols used to describe
RFC 1958, does not contain a stack of layers. The lack the local network topology and the interfaces needed
of emphasis on layering is a major difference between the to effect transmission of Internet layer datagrams to
IETF and OSI approaches. It only refers to the existence next-neighbor hosts.
of the internetworking layer and generally to upper layers;
this document was intended as a 1996 snapshot of the ar- The Internet protocol suite and the layered protocol stack
chitecture: “The Internet and its architecture have grown design were in use before the OSI model was established.
in evolutionary fashion from modest beginnings, rather Since then, the TCP/IP model has been compared with
than from a Grand Plan. While this process of evolution the OSI model in books and classrooms, which often re-
is one of the main reasons for the technology’s success, sults in confusion because the two models use different
it nevertheless seems useful to record a snapshot of the assumptions and goals, including the relative importance
current principles of the Internet architecture.” of strict layering.
RFC 1122, entitled Host Requirements, is structured in This abstraction also allows upper layers to provide ser-
paragraphs referring to layers, but the document refers vices that the lower layers do not provide. While the orig-
232 CHAPTER 39. INTERNET PROTOCOL SUITE

inal OSI model was extended to include connectionless such as adding a packet header to prepare it for trans-
services (OSIRM CL),[22] IP is not designed to be reli- mission, then actually transmit the frame over a physical
able and is a best effort delivery protocol. This means that medium. The TCP/IP model includes specifications of
all transport layer implementations must choose whether translating the network addressing methods used in the
or how to provide reliability. UDP provides data integrity Internet Protocol to data link addressing, such as Media
via a checksum but does not guarantee delivery; TCP pro- Access Control (MAC). All other aspects below that
vides both data integrity and delivery guarantee by re- level, however, are implicitly assumed to exist in the link
transmitting until the receiver acknowledges the recep- layer, but are not explicitly defined.
tion of the packet.
This is also the layer where packets may be selected to be
This model lacks the formalism of the OSI model and as- sent over a virtual private network or other networking
sociated documents, but the IETF does not use a formal tunnel. In this scenario, the link layer data may be con-
model and does not consider this a limitation, as illus- sidered application data which traverses another instanti-
trated in the comment by David D. Clark, “We reject: ation of the IP stack for transmission or reception over
kings, presidents and voting. We believe in: rough con- another IP connection. Such a connection, or virtual
sensus and running code.” Criticisms of this model, which link, may be established with a transport protocol or even
have been made with respect to the OSI model, often do an application scope protocol that serves as a tunnel in
not consider ISO’s later extensions to that model. the link layer of the protocol stack. Thus, the TCP/IP
For multi-access links with their own addressing systems model does not dictate a strict hierarchical encapsulation
(e.g. Ethernet) an address mapping protocol is needed. sequence.
Such protocols can be considered to be below IP but The TCP/IP model’s link layer corresponds to the Open
above the existing link system. While the IETF does Systems Interconnection (OSI) model physical and data
not use the terminology, this is a subnetwork depen- link layers, layers one and two of the OSI model.
dent convergence facility according to an extension to the
OSI model, the internal organization of the network layer
(IONL).[23] 39.3.2 Internet layer
ICMP & IGMP operate on top of IP but do not transport The internet layer has the responsibility of sending pack-
data like UDP or TCP. Again, this functionality exists ets across potentially multiple networks. Internetworking
as layer management extensions to the OSI model, in its requires sending data from the source network to the des-
Management Framework (OSIRM MF)[24] tination network. This process is called routing.[25]
The SSL/TLS library operates above the transport layer The Internet Protocol performs two basic functions:
(uses TCP) but below application protocols. Again, there
was no intention, on the part of the designers of these
• Host addressing and identification: This is accom-
protocols, to comply with OSI architecture.
plished with a hierarchical IP addressing system.
The link is treated as a black box. The IETF explicitly
does not intend to discuss transmission systems, which is • Packet routing: This is the basic task of sending
a less academic but practical alternative to the OSI model. packets of data (datagrams) from source to destina-
tion by forwarding them to the next network router
The following is a description of each layer in the TCP/IP closer to the final destination.
networking model starting from the lowest level.
The internet layer is not only agnostic of data structures
at the transport layer, but it also does not distinguish be-
39.3.1 Link layer tween operation of the various transport layer protocols.
IP carries data for a variety of different upper layer pro-
The link layer has the networking scope of the local net- tocols. These protocols are each identified by a unique
work connection to which a host is attached. This regime protocol number: for example, Internet Control Message
is called the link in TCP/IP literature. It is the lowest Protocol (ICMP) and Internet Group Management Pro-
component layer of the Internet protocols, as TCP/IP tocol (IGMP) are protocols 1 and 2, respectively.
is designed to be hardware independent. As a result, Some of the protocols carried by IP, such as ICMP which
TCP/IP may be implemented on top of virtually any hard- is used to transmit diagnostic information, and IGMP
ware networking technology. which is used to manage IP Multicast data, are layered on
The link layer is used to move packets between the In- top of IP but perform internetworking functions. This il-
ternet layer interfaces of two different hosts on the same lustrates the differences in the architecture of the TCP/IP
link. The processes of transmitting and receiving pack- stack of the Internet and the OSI model. The TCP/IP
ets on a given link can be controlled both in the software model’s internet layer corresponds to layer three of the
device driver for the network card, as well as on firmware Open Systems Interconnection (OSI) model, where it is
or specialized chipsets. These perform data link functions referred to as the network layer.
39.3. ABSTRACTION LAYERS 233

The internet layer provides an unreliable datagram trans- • lost or discarded packets are resent
mission facility between hosts located on potentially dif-
ferent IP networks by forwarding the transport layer data- • includes traffic congestion control
grams to an appropriate next-hop router for further relay-
ing to its destination. With this functionality, the inter- The newer Stream Control Transmission Protocol
net layer makes possible internetworking, the interwork- (SCTP) is also a reliable, connection-oriented trans-
ing of different IP networks, and it essentially establishes port mechanism. It is message-stream-oriented—not
the Internet. The Internet Protocol is the principal com- byte-stream-oriented like TCP—and provides multiple
ponent of the internet layer, and it defines two address- streams multiplexed over a single connection. It also pro-
ing systems to identify network hosts’ computers, and to vides multi-homing support, in which a connection end
locate them on the network. The original address sys- can be represented by multiple IP addresses (represent-
tem of the ARPANET and its successor, the Internet, is ing multiple physical interfaces), such that if one fails, the
Internet Protocol version 4 (IPv4). It uses a 32-bit IP connection is not interrupted. It was developed initially
address and is therefore capable of identifying approxi- for telephony applications (to transport SS7 over IP), but
mately four billion hosts. This limitation was eliminated can also be used for other applications.
in 1998 by the standardization of Internet Protocol ver-
The User Datagram Protocol is a connectionless
sion 6 (IPv6) which uses 128-bit addresses. IPv6 produc-
datagram protocol. Like IP, it is a best effort, “unreliable”
tion implementations emerged in approximately 2006.
protocol. Reliability is addressed through error detection
using a weak checksum algorithm. UDP is typically used
39.3.3 Transport layer for applications such as streaming media (audio, video,
Voice over IP etc.) where on-time arrival is more im-
The transport layer establishes basic data channels that portant than reliability, or for simple query/response ap-
applications use for task-specific data exchange. The plications like DNS lookups, where the overhead of set-
layer establishes process-to-process connectivity, mean- ting up a reliable connection is disproportionately large.
ing it provides end-to-end services that are independent Real-time Transport Protocol (RTP) is a datagram pro-
of the structure of user data and the logistics of exchang- tocol that is designed for real-time data such as streaming
ing information for any particular specific purpose. Its audio and video.
responsibility includes end-to-end message transfer in- The applications at any given network address are distin-
dependent of the underlying network, along with error guished by their TCP or UDP port. By convention certain
control, segmentation, flow control, congestion control, well known ports are associated with specific applications.
and application addressing (port numbers). End-to-end
The TCP/IP model’s transport or host-to-host layer cor-
message transmission or connecting applications at the
responds to the fourth layer in the Open Systems Inter-
transport layer can be categorized as either connection-
connection (OSI) model, also called the transport layer.
oriented, implemented in TCP, or connectionless, imple-
mented in UDP.
For the purpose of providing process-specific transmis- 39.3.4 Application layer
sion channels for applications, the layer establishes the
concept of the port. This is a numbered logical con- The application layer includes the protocols used by most
struct allocated specifically for each of the communica- applications for providing user services or exchanging ap-
tion channels an application needs. For many types of plication data over the network connections established
services, these port numbers have been standardized so by the lower level protocols, but this may include some
that client computers may address specific services of a basic network support services, such as many routing pro-
server computer without the involvement of service an- tocols, and host configuration protocols. Examples of ap-
nouncements or directory services. plication layer protocols include the Hypertext Transfer
Protocol (HTTP), the File Transfer Protocol (FTP), the
Because IP provides only a best effort delivery, some
Simple Mail Transfer Protocol (SMTP), and the Dynamic
transport layer protocols offer reliability. However, IP
Host Configuration Protocol (DHCP).[26] Data coded ac-
can run over a reliable data link protocol such as the High-
cording to application layer protocols are encapsulated
Level Data Link Control (HDLC).
into transport layer protocol units (such as TCP or UDP
For example, the TCP is a connection-oriented protocol messages), which in turn use lower layer protocols to ef-
that addresses numerous reliability issues in providing a fect actual data transfer.
reliable byte stream:
The TCP/IP model does not consider the specifics of for-
matting and presenting data, and does not define addi-
• data arrives in-order tional layers between the application and transport lay-
• data has minimal error (i.e., correctness) ers as in the OSI model (presentation and session layers).
Such functions are the realm of libraries and application
• duplicate data is discarded programming interfaces.
234 CHAPTER 39. INTERNET PROTOCOL SUITE

Application layer protocols generally treat the transport that a TCP/IP protocol stack must impose monolithic ar-
layer (and lower) protocols as black boxes which pro- chitecture above the transport layer. For example, the
vide a stable network connection across which to com- NFS application protocol runs over the eXternal Data
municate, although the applications are usually aware of Representation (XDR) presentation protocol, which, in
key qualities of the transport layer connection such as turn, runs over a protocol called Remote Procedure Call
the end point IP addresses and port numbers. Appli- (RPC). RPC provides reliable record transmission, so it
cation layer protocols are often associated with particu- can safely use the best-effort UDP transport.
lar client–server applications, and common services have Different authors have interpreted the TCP/IP model dif-
well-known port numbers reserved by the Internet As-
ferently, and disagree whether the link layer, or the entire
signed Numbers Authority (IANA). For example, the TCP/IP model, covers OSI layer 1 (physical layer) issues,
HyperText Transfer Protocol uses server port 80 and
or whether a hardware layer is assumed below the link
Telnet uses server port 23. Clients connecting to a service layer.
usually use ephemeral ports, i.e., port numbers assigned
only for the duration of the transaction at random or from Several authors have attempted to incorporate the OSI
a specific range configured in the application. model’s layers 1 and 2 into the TCP/IP model, since these
are commonly referred to in modern standards (for exam-
The transport layer and lower-level layers are uncon- ple, by IEEE and ITU). This often results in a model with
cerned with the specifics of application layer protocols. five layers, where the link layer or network access layer is
Routers and switches do not typically examine the en- split into the OSI model’s layers 1 and 2.
capsulated traffic, rather they just provide a conduit for it.
However, some firewall and bandwidth throttling applica- The IETF protocol development effort is not concerned
tions must interpret application data. An example is the with strict layering. Some of its protocols may not
Resource Reservation Protocol (RSVP). It is also some- fit cleanly into the OSI model, although RFCs some-
times necessary for network address translator (NAT) times refer to it and often use the old OSI layer num-
traversal to consider the application payload. bers. The IETF has repeatedly stated that Internet pro-
tocol and architecture development is not intended to be
The application layer in the TCP/IP model is often com- OSI-compliant. RFC 3439, addressing Internet architec-
pared as equivalent to a combination of the fifth (Session),
ture, contains a section entitled: “Layering Considered
sixth (Presentation), and the seventh (Application) layers Harmful”.[35]
of the Open Systems Interconnection (OSI) model.
For example, the session and presentation layers of the
Furthermore, the TCP/IP reference model distinguishes OSI suite are considered to be included to the applica-
[27]
between user protocols and support protocols. Support tion layer of the TCP/IP suite. The functionality of the
protocols provide services to a system. User protocols are session layer can be found in protocols like HTTP and
used for actual user applications. For example, FTP is a SMTP and is more evident in protocols like Telnet and
user protocol and DNS is a system protocol. the Session Initiation Protocol (SIP). Session layer func-
tionality is also realized with the port numbering of the
TCP and UDP protocols, which cover the transport layer
39.4 Layer names and number of in the TCP/IP suite. Functions of the presentation layer
are realized in the TCP/IP applications with the MIME
layers in the literature standard in data exchange.
Conflicts are apparent also in the original OSI model, ISO
The following table shows various networking models. 7498, when not considering the annexes to this model,
The number of layers varies between three and seven. e.g., the ISO 7498/4 Management Framework, or the ISO
Some of the networking models are from textbooks, 8648 Internal Organization of the Network layer (IONL).
which are secondary sources that may conflict with the When the IONL and Management Framework docu-
intent of RFC 1122 and other IETF primary sources.[35] ments are considered, the ICMP and IGMP are defined
as layer management protocols for the network layer. In
like manner, the IONL provides a structure for “subnet-
work dependent convergence facilities” such as ARP and
39.5 Comparison of TCP/IP and RARP.
OSI layering IETF protocols can be encapsulated recursively, as
demonstrated by tunneling protocols such as Generic
The three top layers in the OSI model, i.e. the appli- Routing Encapsulation (GRE). GRE uses the same mech-
cation layer, the presentation layer and the session layer, anism that OSI uses for tunneling at the network layer.
are not distinguished separately in the TCP/IP model
which only has an application layer above the transport
layer. While some pure OSI protocol applications, such
as X.400, also combined them, there is no requirement
39.9. REFERENCES 235

39.6 Implementations - Principles, Protocols and Architecture. ISBN 86-


7991-142-9
The Internet protocol suite does not presume any specific • Joseph G. Davies and Thomas F. Lee. Microsoft
hardware or software environment. It only requires that Windows Server 2003 TCP/IP Protocols and Ser-
hardware and a software layer exists that is capable of vices. ISBN 0-7356-1291-9
sending and receiving packets on a computer network.
As a result, the suite has been implemented on essen- • Forouzan, Behrouz A. (2003). TCP/IP Protocol Suite
tially every computing platform. A minimal implemen- (2nd ed.). McGraw-Hill. ISBN 0-07-246060-1.
tation of TCP/IP includes the following: Internet Pro-
tocol (IP), Address Resolution Protocol (ARP), Internet • Craig Hunt TCP/IP Network Administration.
Control Message Protocol (ICMP), Transmission Con- O'Reilly (1998) ISBN 1-56592-322-7
trol Protocol (TCP), User Datagram Protocol (UDP), and
• Maufer, Thomas A. (1999). IP Fundamentals.
IGMP. In addition to IP, ICMP, TCP, UDP, Internet
Prentice Hall. ISBN 0-13-975483-0.
Protocol version 6 requires Neighbor Discovery Protocol
(NDP), ICMPv6, and IGMPv6 and is often accompanied • Ian McLean. Windows(R) 2000 TCP/IP Black Book.
by an integrated IPSec security layer. ISBN 1-57610-687-X
Application programmers are typically concerned only
• Ajit Mungale Pro .NET 1.1 Network Programming.
with interfaces in the application layer and often also in
ISBN 1-59059-345-6
the transport layer, while the layers below are services
provided by the TCP/IP stack in the operating system. • W. Richard Stevens. TCP/IP Illustrated, Volume 1:
Most IP implementations are accessible to programmers The Protocols. ISBN 0-201-63346-9
through sockets and APIs.
• W. Richard Stevens and Gary R. Wright. TCP/IP
Unique implementations include Lightweight TCP/IP, an
Illustrated, Volume 2: The Implementation. ISBN 0-
open source stack designed for embedded systems, and
201-63354-X
KA9Q NOS, a stack and associated protocols for amateur
packet radio systems and personal computers connected • W. Richard Stevens. TCP/IP Illustrated, Volume 3:
via serial lines. TCP for Transactions, HTTP, NNTP, and the UNIX
Microcontroller firmware in the network adapter typi- Domain Protocols. ISBN 0-201-63495-3
cally handles link issues, supported by driver software • Andrew S. Tanenbaum. Computer Networks. ISBN
in the operating system. Non-programmable analog and 0-13-066102-3
digital electronics are normally in charge of the physi-
cal components below the link layer, typically using an • Clark, D. (1988). “The Design Philosophy
application-specific integrated circuit (ASIC) chipset for of the DARPA Internet Protocols” (PDF). SIG-
each network interface or other physical standard. High- COMM '88 Symposium proceedings on Communica-
performance routers are to a large extent based on fast tions architectures and protocols. ACM: 106–114.
non-programmable digital electronics, carrying out link doi:10.1145/52324.52336. ISBN 0897912799.
level switching. Retrieved 2011-10-16.

39.7 See also 39.9 References


• BBN Report 1822 [1] RFC 1122, Requirements for Internet Hosts – Communi-
cation Layers, R. Braden (ed.), October 1989.
• FLIP (protocol) (fast local Internet protocol stack)
[2] RFC 1123, Requirements for Internet Hosts – Application
• List of automation protocols and Support, R. Braden (ed.), October 1989

• List of information technology acronyms [3] “The DoD Internet Architecture Model”, Vinton G. Cerf
and Edward Cain, Computer Networks, 7 (1983), North-
• List of network protocols Holland, pp. 307-318

[4] , Vinton G. Cerf and Robert E. Kahn, A Protocol for


• List of TCP and UDP port numbers
Packet Network Intercommunication, 5 (1974)

[5] , Jon Postel, Comments on Internet Protocol and TCP,


39.8 Bibliography (1977), Section 3.3.3.2

[6] , Norman Abramson, The Aloha System - Another alter-


• Douglas E. Comer. Internetworking with TCP/IP native for computer communications, (1970)
236 CHAPTER 39. INTERNET PROTOCOL SUITE

[7] , Robert M. Metcalfe and David R. Boggs, Ethernet: Dis- [30] Behrouz A. Forouzan, Data Communications and Net-
tributed Packet Switching or Local Computer Networks, working, 2003
(1976)
[31] Douglas E. Comer, Internetworking with TCP/IP: Prin-
[8] Vinton Robert E. Kahn, The Introduction of Packet Satel- ciples, Protocols and Architecture, Pearson Prentice Hall
lite Communications, (1979) 2005, ISBN 0-13-187671-6

[9] MIT Press Cambridge Inventing the Internet, J. Abbate [32] Charles M. Kozierok, “The TCP/IP Guide”, No Starch
(2000) Press 2005

[10] RFC 1812, Requirements for IP Version 4 Routers, F. [33] William Stallings, Data and Computer Communications,
Baker (June 1995) Prentice Hall 2006, ISBN 0-13-243310-9

[11] RFC 675, Specification of Internet Transmission Control [34] Andrew S. Tanenbaum, Computer Networks, Prentice
Protocol, V. Cerf et al. (December 1974) Hall 2002, ISBN 0-13-066102-3

[12] Internet History [35] R. Bush; D. Meyer (December 2002), Some Internet Ar-
chitectural Guidelines and Philosophy, Internet Engineer-
[13] Ronda Hauben. “From the ARPANET to the Internet”. ing Task Force
TCP Digest (UUCP). Retrieved 2007-07-05.

[14] Wollongong
39.10 External links
[15] A Short History of Internet Protocols at CERN

[16] About | “romkey” • Internet History—Pages on Robert Kahn, Vinton


Cerf, and TCP/IP (reviewed by Cerf and Kahn).
[17] Barry Appelman
• RFC 675 - Specification of Internet Transmission
[18] RFC 1958, Architectural Principles of the Internet, B. Car- Control Program, December 1974 Version
penter (June 1996)
• RFC 1180 A TCP/IP Tutorial - from the Internet
[19] Rethinking the design of the Internet: The end-to-end ar- Engineering Task Force (January 1991)
guments vs. the brave new world, Marjory S. Blumenthal,
David D. Clark, August 2001 • TCP/IP FAQ
[20] p.23 INTERNET PROTOCOL DARPA INTERNET • The TCP/IP Guide - A comprehensive look at the
PROGRAM PROTOCOL SPECIFICATION September protocols and the procedures/processes involved
1981 Jon Postel Editor
• A Study of the ARPANET TCP/IP Digest
[21] Requirements for Internet Hosts -- Communication Lay-
ers p.13 October 1989 R. Braden, Editor • TCP/IP Sequence Diagrams
[22] [ OSI: Reference Model Addendum 1: Connectionless- • Daryl’s TCP/IP Primer - Intro to TCP/IP LAN ad-
mode Transmission,ISO7498/AD1],ISO7498/AD1, May ministration, conversational style
1986
• Introduction to TCP/IP
[23] “Information processing systems -- Open Systems In-
terconnection -- Internal organization of the Network • A Protocol for Packet Network Intercommunica-
Layer”, ISO 8648:1988. tion, Cerf & Kahn, IEEE Trans on Comms, Vol
[24] “Information processing systems -- Open Systems Inter- Com-22, No 5 May 1974
connection -- Basic Reference Model -- Part 4: Manage-
ment framework”, ISO 7498-4:1989.

[25] IP Packet Structure

[26] TCP/IP Illustrated: the protocols, ISBN 0-201-63346-9,


W. Richard Stevens, February 1994

[27] RFC 1122, Requirements for Internet Hosts -- Communi-


cation Layers, 1.1.3 Internet Protocol Suite, 1989

[28] Mark A. Dye, Rick McDonald, Antoon W. Rufi, Network


Fundamentals: CCNA Exploration Companion Guide,
2007, ISBN 1-58713-208-7

[29] James F. Kurose, Keith W. Ross, Computer Networking:


A Top-Down Approach, 2008, ISBN 0-321-49770-8
Chapter 40

Internetworking

Internetworking is the practice of connecting a working, but the resulting system is simply a larger, sin-
computer network with other networks through the use gle subnetwork, and no internetworking protocol, such
of gateways that provide a common method of routing as Internet Protocol, is required to traverse these de-
information packets between the networks. The resulting vices. However, a single computer network may be con-
system of interconnected networks are called an internet- verted into an internetwork by dividing the network into
work, or simply an internet. Internetworking is a com- segments and logically dividing the segment traffic with
bination of the words inter (“between”) and networking; routers. The Internet Protocol is designed to provide an
not internet-working or international-network. unreliable (not guaranteed) packet service across the net-
work. The architecture avoids intermediate network el-
The most notable example of internetworking is the
Internet, a network of networks based on many under- ements maintaining any state of the network. Instead,
lying hardware technologies, but unified by an internet- this function is assigned to the endpoints of each com-
working protocol standard, the Internet Protocol Suite, munication session. To transfer data reliably, applica-
often also referred to as TCP/IP. tions must utilize an appropriate Transport Layer proto-
col, such as Transmission Control Protocol (TCP), which
The smallest amount of effort to create an internet (an provides a reliable stream. Some applications use a sim-
internetwork, not the Internet), is to have two LANs of pler, connection-less transport protocol, User Datagram
computers connected to each other via a router. Simply Protocol (UDP), for tasks which do not require reliable
using either a switch or a hub to connect two local area delivery of data or that require real-time service, such as
networks together doesn't imply internetworking; it just video streaming [1] or voice chat.
expands the original LAN.

40.1 Interconnection of networks 40.2 Networking models

Internetworking started as a way to connect dis- Two architectural models are commonly used to describe
parate types of networking technology, but it became the protocols and methods used in internetworking.
widespread through the developing need to connect two The Open System Interconnection (OSI) reference model
or more local area networks via some sort of wide area
was developed under the auspices of the International Or-
network. The original term for an internetwork was ganization for Standardization (ISO) and provides a rig-
catenet.
orous description for layering protocol functions from the
The definition of an internetwork today includes the con- underlying hardware to the software interface concepts in
nection of other types of computer networks such as user applications. Internetworking is implemented in the
personal area networks. The network elements used to Network Layer (Layer 3) of the model.
connect individual networks in the ARPANET, the pre- The Internet Protocol Suite, also called the TCP/IP model
decessor of the Internet, were originally called gateways, of the Internet was not designed to conform to the OSI
but the term has been deprecated in this context, because model and does not refer to it in any of the normative
of possible confusion with functionally different devices. specifications in Requests for Comment and Internet stan-
Today the interconnecting gateways are called routers. dards. Despite similar appearance as a layered model,
Another type of interconnection of networks often oc- it uses a much less rigorous, loosely defined architecture
curs within enterprises at the Link Layer of the network- that concerns itself only with the aspects of logical net-
ing model, i.e. at the hardware-centric layer below the working. It does not discuss hardware-specific low-level
level of the TCP/IP logical interfaces. Such interconnec- interfaces, and assumes availability of a Link Layer in-
tion is accomplished with network bridges and network terface to the local network link to which the host is con-
switches. This is sometimes incorrectly termed internet- nected. Internetworking is facilitated by the protocols of

237
238 CHAPTER 40. INTERNETWORKING

its Internet Layer.

40.3 See also


• History of the Internet

40.4 References
[1] Teare, Diane (July 1999). 'Designing Cisco Networks’. In-
dianapolis: Cisco Press.
Chapter 41

IPX/SPX

IPX/SPX stands for Internetwork Packet Ex- 41.2.1 DOS


change/Sequenced Packet Exchange. IPX and SPX
are networking protocols used primarily on networks Novell’s original NetWare client was written for DOS.
using the Novell NetWare operating systems. Initial versions required a hard-linked protocol stack,
where a separate executable would be created by the net-
work administrator for each network card configuration
on the network. This executable would be loaded at boot
41.1 Protocol layers time, and remain resident in memory until the system was
shut down. Later implementations allowed the network
IPX and SPX are derived from Xerox Network Systems' stack to be loaded and unloaded dynamically, using pre-
IDP and SPP protocols, respectively. IPX is a network existing modules. This greatly simplified maintenance of
layer protocol (layer 3 of the OSI Model), while SPX client workstations on the network.
is a transport layer protocol (layer 4 of the OSI Model). IPX/SPX was the de facto standard for DOS-era multi-
The SPX layer sits on top of the IPX layer and provides user network games.[1] Many games’ longevity were ex-
connection-oriented services between two nodes on the tended through tunneling programs like Kali and Kahn
network. SPX is used primarily by client–server applica- which allowed them to be played over the internet instead
tions. of LAN-only.
IPX and SPX both provide connection services similar to
TCP/IP, with the IPX protocol having similarities to IP,
and SPX having similarities to TCP. IPX/SPX was pri-
marily designed for local area networks (LANs), and is a 41.2.2 Windows
very efficient protocol for this purpose (typically its per-
formance exceeds that of TCP/IP on a LAN ). TCP/IP Because of IPX/SPX’s prevalence in LANs in the 1990s,
has, however, become the de facto standard protocol. Microsoft added support for the protocols into Windows'
This is in part due to its superior performance over wide networking stack, starting with Windows for Workgroups
area networks and the Internet (which uses TCP/IP exclu- and Windows NT. Microsoft even named their imple-
sively), and also because TCP/IP is a more mature proto- mentation "NWLink", implying that the inclusion of the
col, designed specifically with this purpose in mind. layer 3/4 transports provided NetWare connectivity. In
Despite the protocols’ association with NetWare, they are reality, the protocols were supported as a native transport
neither required for NetWare communication (as of Net- for Windows’ SMB/NetBIOS, and NetWare connectiv-
Ware 5.x), nor exclusively used on NetWare networks. ity required additional installation of an NCP client (Mi-
NetWare communication requires an NCP implementa- crosoft provided a basic NetWare client with Windows 95
tion, which can use IPX/SPX, TCP/IP, or both, as a trans- and later, but it was not automatically installed, and ini-
port. tially only supported NetWare bindery mode). NWLink
was still provided with Windows (up to and including
Windows Server 2003), but it is neither included with nor
supported in Windows Vista. Its use is strongly discour-
41.2 Implementations aged because it cannot be used for Windows networking
except as a transport for NetBIOS, which is deprecated.
Novell is largely responsible for the use of IPX as a popu- For the most part, Novell’s 32-bit Windows client soft-
lar computer networking protocol due to their dominance ware have eschewed NWLink for an alternative devel-
in the network operating system software market (with oped by Novell, although some versions permit use of Mi-
Novell Netware) from the late 1980s through the mid- crosoft’s IPX/SPX implementation (with warnings about
1990s. potential incompatibility).

239
240 CHAPTER 41. IPX/SPX

41.2.3 Other One area where IPX remains useful is for bypassing VPN
connections with security policies that prohibit commu-
For several years, Novell supplied a native NetWare client nication with other LAN devices (such as printers and
for OS/2. This was similar in structure to the client for network attached storage) via TCP/IP.
DOS.
Novell also published an IPX client for Classic Mac OS
called MacIPX.[2] This was not only used by the Mac 41.4 See also
NetWare client, but also by games such as Doom and
Warcraft III[3] for multiplayer play. • Internetwork Packet Exchange (IPX)
Implementations have been written for various flavors of • NetWare Core Protocol (NCP)
Unix/Linux, both by Novell and other vendors. In par-
ticular, Novell’s UnixWare supported IPX/SPX natively. • NetBIOS Frames protocol (NBF)
However, while UnixWare could act as a client to Net-
• NetBIOS over TCP/IP (NBT)
Ware servers, and applications could optionally support
IPX/SPX as a transport, UnixWare did not provide the • NWLink
ability to share files or printers on a NetWare network
without an additional software package. Open Enterprise • Communications protocol
Server - Linux does not support IPX/SPX.
The open source FreeBSD operating system includes
an IPX/SPX stack, to support both a NetWare file sys- 41.5 References
tem client, nwfs, as well as NetWare server using Mars
NWE[4][5] (providing some functionality[6] ). OpenBSD [1] Win95 FAQ Part 12 of 14: MS-DOS Games top of ques-
dropped support with version 4.2,[7][8] and 4.1 needed tion 12.9
some work to compile with IPX.[9] [2] Some notes on MacIPX internetworking, formerly at

[3] Blizzard Support. Web.archive.org (2010-08-20). Re-


trieved on 2013-09-27.
41.3 Legacy
[4] FreeBSD ports info on Mars NWE
IPX usage has declined in recent years as the rise of the [5] Freshports info on Mars NWE
Internet has made TCP/IP ubiquitous. Novell’s initial at-
tempt to support TCP/IP as a client protocol, called Net- [6] Novell’s comments on Mars NWE
Ware/IP, simply “tunneled” IPX within IP packets, al- [7] OpenBSD 4.2 changes
lowing NetWare clients and servers to communicate over
pure TCP/IP networks. However, due to complex imple- [8] Removal of IPX from OpenBSD
mentation, and a significant loss in performance due to
[9] Berkeley Software Design (BSD): building kernel support
the tunnelling overhead, NetWare/IP was largely ignored with ipx fails Archived July 26, 2011, at the Wayback Ma-
except as a mechanism to route IPX through TCP/IP-only chine.
routers and WAN links. NetWare 5.x introduced native
support for NCP over TCP/IP, which is now the preferred
configuration. The successor to NetWare, Open Enter-
prise Server, comes in two flavors: OES-NetWare, which
provides legacy support for IPX/SPX (deprecated), and
OES-Linux, which only supports TCP/IP.
Both Microsoft and Novell have provided support
(through Proxy Server/ISA Server and BorderManager,
respectively) for IPX/SPX as an intranet protocol to com-
municate through a firewall. This allows a machine us-
ing client software to access the Internet without having
TCP/IP installed locally; the client software emulates a
native TCP/IP stack and provides WinSock support for
local applications (e.g. web browsers), but actually com-
municates with the firewall over IPX/SPX. In addition to
simplifying migration for legacy IPX LANs, this provides
a measure of security, as the use of the IPX protocol on
the internal network provides a natural barrier against in-
truders, should the firewall be compromised.
Chapter 42

Java remote method invocation

RMI functionality comes in the package java.rmi, while


Client Stub Network Skeleton Server
most of Sun’s implementation is located in the sun.rmi
package. Note that with Java versions before Java 5.0
developers had to compile RMI stubs in a separate com-
A typical implementation model of Java-RMI using stub and
pilation step using rmic. Version 5.0 of Java and beyond
skeleton objects. Java 2 SDK, Standard Edition, v1.2 removed
the need for a skeleton. no longer require this step.

The Java Remote Method Invocation (Java RMI) is


a Java API that performs remote method invocation, 42.2 Jini version
the object-oriented equivalent of remote procedure calls
(RPC), with support for direct transfer of serialized Java Jini offers a more advanced version of RMI in Java. It
classes and distributed garbage collection. functions similarly but provides more advanced search-
ing capabilities and mechanisms for distributed object
1. The original implementation depends on Java Vir- applications.[1]
tual Machine (JVM) class representation mecha-
nisms and it thus only supports making calls from
one JVM to another. The protocol underlying this
Java-only implementation is known as Java Remote 42.3 Example
Method Protocol (JRMP).
The following classes implement a simple client-server
2. In order to support code running in a non-JVM con- program using RMI that displays a message.
text, a CORBA version was later developed.
RmiServer class — listens to RMI requests and imple-
ments the interface which is used by the client to invoke
Usage of the term RMI may denote solely the program-
remote methods.
ming interface or may signify both the API and JRMP,
IIOP, or another implementation, whereas the term RMI- import java.rmi.Naming; import
IIOP (read: RMI over IIOP) specifically denotes the RMI java.rmi.RemoteException; import
interface delegating most of the functionality to the sup- java.rmi.server.UnicastRemoteObject; import
porting CORBA implementation. java.rmi.registry.*; public class RmiServer extends
UnicastRemoteObject implements RmiServerIntf {
The basic idea of Java RMI, the distributed garbage-
public static final String MESSAGE = “Hello World";
collection (DGC) protocol, and much of the architecture
public RmiServer() throws RemoteException { super(0);
underlying the original Sun implementation, come from
// required to avoid the 'rmic' step, see below } public
the 'network objects’ feature of Modula-3.
String getMessage() { return MESSAGE; } public
static void main(String args[]) throws Exception {
System.out.println(“RMI server started”); try { //special
42.1 Generalized code exception handler for registry creation LocateReg-
istry.createRegistry(1099); System.out.println(“java
The programmers of the original RMI API generalized RMI registry created.”); } catch (RemoteException
the code somewhat to support different implementations, e) { //do nothing, error means registry already exists
such as a HTTP transport. Additionally, the ability to pass System.out.println(“java RMI registry already ex-
arguments "by value" was added to CORBA in order to be ists.”); } //Instantiate RmiServer RmiServer obj = new
compatible with the RMI interface. Still, the RMI-IIOP RmiServer(); // Bind this object instance to the name
and JRMP implementations do not have fully identical “RmiServer” Naming.rebind("//localhost/RmiServer”,
interfaces. obj); System.out.println(“PeerServer bound in registry”);

241
242 CHAPTER 42. JAVA REMOTE METHOD INVOCATION

}} Shores, CA, USA: Oracle Corporation. Retrieved


2014-07-14.
RmiServerIntf interface — defines the interface that is • The Java RMI tutorial - a good starting point to learn
used by the client and implemented by the server. RMI. Also check the Hello World in RMI
import java.rmi.Remote; import
• the Java RMI online training - Very good for training
java.rmi.RemoteException; public interface RmiS-
JavaRMI and as reference
erverIntf extends Remote { public String getMessage()
throws RemoteException; } • The RMI page in the JDK docs

• java.rmi (Sun’s Java API Reference for the RMI


RmiClient class — this is the client which gets the package)
reference (a proxy) to the remote object living on the
server and invokes its method to get a message. If the • Wollrath, Ann; Riggs, Roger; Waldo, Jim. “A Dis-
server object implemented java.io.Serializable instead of tributed Object Model for the Java System” (PDF).
java.rmi.Remote, it would be serialized and passed to the Retrieved 2009-02-11.
client as a value.[2]
• Programming WebLogic RMI - an introduction to
import java.rmi.Naming; public class RmiClient RMI in Oracle Weblogic.
{ public static void main(String args[]) throws
Exception { RmiServerIntf obj = (RmiServer- • General Remote Method Invocation
Intf)Naming.lookup("//localhost/RmiServer”); Sys-
tem.out.println(obj.getMessage()); } }

Before running this example, we need to make a 'stub' file


for the interface we used. For this task we have the RMI
compiler - 'rmic'

• Note: we make a stub file from the '*.class’ file


with the implementation of the remote interface, not
from the '*.java' file.

rmic RmiServer

Note that since version 5.0 of J2SE support for dynam-


ically generated stub files has been added, and rmic is
only provided for backwards compatibility with earlier
runtimes,[3] or for programs that don't provide an explicit
port number (or zero) when exporting remote objects,
which is required for generated stubs to be possible, as
described in the Javadoc for UnicastRemoteObject. See
the comment in the constructor above.

42.4 References
[1] Taylor, Ian J. From P2P to Web Services and Grids - Peers
in a Client/Server World. Springer, 2005

[2] Get smart with proxies and RMI - JavaWorld

[3] “Java RMI Release Notes”. Oracle. Retrieved 9 May


2012.

42.5 External links


• “Remote Method Invocation Home”. Oracle Tech-
nology Network for Java Developers. Redwood
Chapter 43

Link layer

In computer networking, the link layer is the lowest model.[3][4] These authors assume a hardware layer or
layer in the Internet Protocol Suite, commonly known as physical layer below the link layer, and several of them
TCP/IP, the networking architecture of the Internet. It is adopt the OSI term data link layer instead of link layer
described in RFC 1122 and RFC 1123. The link layer is in a modified description of layering. In the predeces-
the group of methods and communications protocols that sor to the TCP/IP model, the ARPAnet Reference Model
only operate on the link that a host is physically connected(RFC 908, 1982), aspects of the link layer are referred to
to. The link is the physical and logical network compo- by several poorly defined terms, such as network-access
nent used to interconnect hosts or nodes in the network layer, network-access protocol, as well as network layer,
and a link protocol is a suite of methods and standards while the next higher layer is called internetwork layer. In
that operate only between adjacent network nodes of a some modern text books, network-interface layer, host-
local area network segment or a wide area network con- to-network layer and network-access layer occur as syn-
nection. onyms either to the link layer or the data link layer, often
Despite the different semantics of layering in TCP/IP and including the physical layer.
OSI, the link layer is sometimes described as a combi-
nation of the data link layer (layer 2) and the physical
layer (layer 1) in the OSI model. However, the layers of 43.2 Link layer protocols
TCP/IP are descriptions of operating scopes (application,
host-to-host, network, link) and not detailed prescriptions The link layer in the TCP/IP model is a descriptive realm
of operating procedures, data semantics, or networking of networking protocols that operate only on the local net-
technologies. work segment (link) that a host is connected to. Such
RFC 1122 exemplifies that local area network protocols protocol packets are not routed to other networks.
such as Ethernet and IEEE 802, and framing protocols The core protocols specified by the Internet Engineering
such as Point-to-Point Protocol (PPP) belong to the link Task Force (IETF) in this layer are the Address Reso-
layer. lution Protocol (ARP), the Reverse Address Resolution
Protocol (RARP), and the Neighbor Discovery Protocol
(NDP), which is a facility delivering similar functionality
43.1 Definition in standards and as ARP for IPv6. Since the advent of IPv6, Open Short-
est Path First (OSPF) is considered to operate on the link
textbooks level as well, although the IPv4 version of the protocol
was considered at the Internet layer.
Local area networking standards such as Ethernet and IS-IS (RFC 1142) is another link-state routing protocol
IEEE 802 specifications use terminology from the seven- that fits into this layer when considering TCP/IP model,
layer OSI model rather than the TCP/IP model. The however it was developed within the OSI reference stack,
TCP/IP model in general does not consider physical spec- where it is a Layer 2 protocol. It is not an Internet stan-
ifications, rather it assumes a working network infras- dard.
tructure that can deliver media level frames on the link.
Therefore, RFC 1122 and RFC 1123, the definition of
the TCP/IP model, do not discuss hardware issues and
physical data transmission and set no standards for those 43.3 Relation to OSI model
aspects. Some textbook authors have supported the in-
terpretation that physical data transmission aspects are The link layer of the TCP/IP model is often compared di-
part of the link layer.[1][2] Others assumed that physi- rectly with the combination of the data link layer and the
cal data transmission standards are not considered com- physical layer in the Open Systems Interconnection (OSI)
munication protocols, and are not part of the TCP/IP protocol stack. Although they are congruent to some de-

243
244 CHAPTER 43. LINK LAYER

gree in technical coverage of protocols, they are not iden- 43.6 References
tical. The link layer in TCP/IP is still wider in scope and
in principle a different concept and terminology of clas- [1] James F. Kurose, Keith W. Ross, Computer Networking:
sification. This may be observed when certain protocols, A Top-Down Approach, 2007, ISBN 0-321-49770-8
such as the Address Resolution Protocol (ARP), which is
[2] Mark Dye, Mark A. Dye, Wendell, Network Fundamen-
confined to the link layer in the TCP/IP model, is often
tals: CCNA Exploration Companion Guide, 2007, ISBN
said to fit between OSI’s data link layer and the network
1-58713-208-7
layer. In general, direct or strict comparisons should be
avoided, because the layering in TCP/IP is not a principal [3] Douglas E. Comer, Internetworking with TCP/IP: Prin-
design criterion and in general is considered to be “harm- ciples, Protocols and Architecture, Pearson Prentice Hall
ful” (RFC 3439). 2005, ISBN 0-13-187671-6

Another term sometimes encountered, network access [4] Charles M. Kozierok, “The TCP/IP Guide”, No Starch
layer, tries to suggest the closeness of this layer to the Press 2005
physical network. However, this use is misleading and
non-standard, since the link layer implies functions that
are wider in scope than just network access. Important 43.7 External links
link layer protocols are used to probe the topology of the
local network, discover routers and neighboring hosts, i.e. • IEEE 802 Standards
functions that go well beyond network access.

43.4 IETF standards


• RFC 1122, “Requirements for Internet Hosts --
Communication layers,” IETF, R. Braden (Editor),
October 1989
• RFC 1123, “Requirements for Internet Hosts -- Ap-
plication and Support,” IETF, R. Braden (Editor),
October 1989
• RFC 893, “Trailer Encapsulations,” S. Leffler and
M. Karels, April 1984
• RFC 826, “An Ethernet Address Resolution Proto-
col,” D. Plummer, November 1982
• RFC 894, “A Standard for the Transmission of
IP Datagrams over Ethernet Networks,” C. Hornig,
April 1984
• RFC 1042, “A Standard for the Transmission of IP
Datagrams over IEEE 802 Networks,” J. Postel and
J. Reynolds, February 1988
• RFC 2740, “OSPF for IPv6”, R. Coltun, et al., De-
cember 1999

43.5 See also


• Address Resolution Protocol
• Carrier sense multiple access
• Carrier sense multiple access with collision detec-
tion
• Data link layer
• Ethernet
Chapter 44

Maximum transmission unit

In computer networking, the maximum transmission 576 bytes for IPv4[2] and of 1280 bytes for IPv6.[3] It
unit (MTU) of a communications protocol of a layer is must also not be confused with the size of the physically
the size (in bytes or octets) of the largest protocol data transmitted frame. In the case of an Ethernet frame this
unit that the layer can pass onwards. MTU parameters adds an overhead of 18 bytes, or 22 bytes with an IEEE
usually appear in association with a communications in- 802.1Q tag for VLAN or quality of service.
terface (NIC, serial port, etc.). Standards (Ethernet, for
example) can fix the size of an MTU; or systems (such as
point-to-point serial links) may decide MTU at connect
time.
44.2 IP (Internet protocol)
A larger MTU brings greater efficiency because each
DARPA designed the Internet protocol suite to work over
network packet carries more user data while protocol
many different networking technologies, each of which
overheads, such as headers or underlying per-packet de-
may use packets of different size. While a host will know
lays, remain fixed; the resulting higher efficiency means
the MTU of its own interface and possibly that of its peers
an improvement in bulk protocol throughput. A larger
(from initial handshakes), it will not initially know the
MTU also means processing of fewer packets for the
lowest MTU in a chain of links to other peers. Another
same amount of data. In some systems, per-packet-
potential problem is that higher-level protocols may cre-
processing can be a critical performance limitation.
ate packets larger than a particular link supports.
However, this gain is not without a downside. Large pack-
To get around this issue, IPv4 allows fragmentation: di-
ets occupy a slow link for more time than a smaller packet,
viding the datagram into pieces, each small enough to
causing greater delays to subsequent packets, and increas-
pass over the single link that is being fragmented for,
ing lag and minimum latency. For example, a 1500-byte
using the MTU parameter configured for that interface.
packet, the largest allowed by Ethernet at the network
This fragmentation process takes place at the IP layer
layer (and hence over most of the Internet), ties up a 14.4k
(OSI layer 3) and marks the packets it fragments as such,
modem for about one second.
so that the IP layer of the destination host knows it should
Large packets are also problematic in the presence of reassemble the packets into the original datagram. This
communications errors. Corruption of a single bit in a method implies a number of possible drawbacks:
packet requires that the entire packet be retransmitted.
At a given bit error rate, larger packets are more likely to
• All fragments of a packet must arrive for the packet
be corrupt. Their greater payload makes retransmissions
to be considered received. If the network drops any
of larger packets take longer. Despite the negative effects
fragment, the entire packet is lost.
on retransmission duration, large packets can still have a
net positive effect on end-to-end TCP performance.[1] • When the size of most or all packets exceed the
MTU of a particular link that has to carry those
packets, almost everything has to be fragmented. In
44.1 Table of MTUs of common certain cases this can cause unreasonable or unnec-
essary overhead. For example, various tunneling sit-
media uations may exceed the MTU by very little as they
add just a header’s worth of data. The addition is
Note: the MTUs in this section are given as the maximum small, but each packet now has to be sent in two frag-
size of an IP packet that can be transmitted without frag- ments, the second of which carries very little pay-
mentation - including IP headers but excluding headers load. The same amount of payload is being moved,
from lower levels in the protocol stack. The MTU must but every intermediate router has to do double the
not be confused with the minimum datagram size that all work in terms of header parsing and routing deci-
hosts must be prepared to accept, which has a value of sions.

245
246 CHAPTER 44. MAXIMUM TRANSMISSION UNIT

• As it is normal to maximize the payload in every response to various events (load-balancing, congestion,
fragment, in general as well as when fragmenting, outages, etc.) - this could result in the path MTU chang-
any further fragmentation that turns out to be neces- ing (sometimes repeatedly) during a transmission, which
sary will increase the overhead even more. may introduce further packet drops before the host finds
a new reliable MTU.
• There is no simple method to discover the MTU of
Most Ethernet LANs use an MTU of 1500 bytes (mod-
links beyond a node’s direct peers.
ern LANs can use Jumbo frames, allowing for an MTU
up to 9000 bytes); however, border protocols like PPPoE
The Internet Protocol requires that hosts must be able to will reduce this. The difference between the MTU seen
process IP datagrams of at least 576 bytes (for IPv4) or by end-nodes (e.g. 1500) and the Path MTU causes
1280 bytes (for IPv6). However, this does not preclude Path MTU Discovery to come into effect, with the possi-
Data Link Layers with an MTU smaller than IP’s min- ble result of making some sites behind badly configured
imum MTU from conveying IP data. For example, ac- firewalls unreachable. One can possibly work around this,
cording to IPv6’s specification, if a particular Data Link depending on which part of the network one controls; for
Layer physically cannot deliver an IP datagram of 1280 example one can change the MSS (maximum segment
bytes in a single frame, then the link layer must provide size) in the initial packet that sets up the TCP connection
its own fragmentation and reassembly mechanism, sepa- at one’s firewall.
rate from IP’s own fragmentation mechanism, to ensure
RFC 4821, Packetization Layer Path MTU Discovery,
that a 1280-byte IP datagram can be delivered, intact, to
describes a Path MTU Discovery technique which re-
the IP layer.
sponds more robustly to ICMP filtering.

44.2.1 Path MTU Discovery


44.3 MTU in other standards
Main article: Path MTU Discovery
The G.hn standard, developed by ITU-T, provides a high-
The Internet Protocol defines the “Path MTU” of an In- speed (up to 1 Gigabit/s) local area network using existing
ternet transmission path as the smallest MTU of any of home wiring (power lines, phone lines and coaxial ca-
the IP hops of the “path” between a source and destina- bles). The G.hn Data Link Layer accepts data frames
tion. Put another way, the path MTU is the largest packet of up to 214 bytes (16384 bytes). In order to avoid
size that can traverse this path without suffering fragmen-the problem of long data-frames taking up the medium
tation. for long periods of time, G.hn defines a procedure for
segmentation that divides the data frame into smaller seg-
RFC 1191 (IPv4) and RFC 1981 (IPv6) describe “Path
ments.
MTU Discovery”, a technique for determining the path
MTU between two IP hosts. It works by setting the
DF (Don't Fragment) option in the IP headers of outgo-
ing packets. Any device along the path whose MTU is 44.4 Disruption
smaller than the packet will drop such packets and send
back an ICMP "Destination Unreachable (Datagram Too The transmission of a packet on a physical network seg-
Big)" message containing its MTU. This information al- ment that is larger than the segment’s MTU is known
lows the source host to reduce its assumed path MTU ap- as jabber. This is almost always caused by faulty
propriately. The process repeats until the MTU becomes devices.[19] Many network switches have a built-in capa-
small enough to traverse the entire path without fragmen- bility to detect when a device is jabbering.[20]
tation.
Unfortunately, increasing numbers of networks drop
ICMP traffic (for example, to prevent denial-of-service
attacks), which prevents path MTU discovery from work-
44.5 References
ing. One often detects such blocking in the cases where a
connection works for low-volume data but hangs as soon [1] Murray, David; Terry Koziniec; Kevin Lee; Michael
as a host sends a large block of data. For example, with Dixon (2012). “Large MTUs and internet performance”
(PDF). 13th IEEE Conference on High Performance
IRC a connecting client might see the initial messages
Switching and Routing (HPSR 2012).
up to and including the initial ping (sent by the server
as an anti-spoofing measure), but get no response after [2] RFC 791, p. 24 “Every internet destination must be able
that. This is because the large set of welcome messages to receive a datagram of 576 octets either in one piece or
are sent out in packets bigger than the real MTU. Also, in fragments to be reassembled.”
in an IP network, the path from the source address to the
destination address often gets modified dynamically, in [3] RFC 2460, p. 13
44.7. EXTERNAL LINKS 247

[4] RFC 791, p. 24, “Every internet module must be able to 44.7 External links
forward a datagram of 68 octets without further fragmen-
tation.” • Tweaking your MTU / RWin for Orange Broadband
[5] RFC 791, p. 12, “Total Length is the length of the data- Users
gram, measured in octets, including internet header and
data. This field allows the length of a datagram to be up • How to set the TCP MSS value using iptables
to 65,535 octets.”
• mturoute – a console utility for debugging mtu prob-
[6] RFC 1191 lems
[7] RFC 2460 • MSS Initiative
[8] RFC 2675, p. 1, “The IPv6 header [IPv6] has a 16-bit • MTU Path MTU discovery tool for IPv4 and IPv6
Payload Length field and, therefore, supports payloads up
networks
to 65,535 octets long. This document specifies an IPv6
hop-by-hop option, called the Jumbo Payload option, that
carries a 32-bit length field in order to allow transmis-
sion of IPv6 packets with payloads between 65,536 and
4,294,967,295 octets in length. Packets with such long
payloads are referred to as 'jumbograms’.”
[9] RFC 6145
[10] Network Working Group of the IETF, RFC 894: A Stan-
dard for the Transmission of IP Datagrams over Ether-
net Networks, Page 1, “The maximum length of the data
field of a packet sent over an Ethernet is 1500 octets, thus
the maximum length of an IP datagram sent over an Eth-
ernet is 1500 octets.”, http://tools.ietf.org/html/rfc894 /
ERRATA: http://www.rfc-editor.org/errata_search.php?
rfc=894
[11] IEEE 802.2
[12] RFC 2516 with the standard Ethernet MTU of 1500 bytes;
extensions exist
[13] IEEE 802.3
[14] Scott Hogg (2013-03-06), Jumbo Frames, Network
World, retrieved 2013-08-05, Most network devices sup-
port a jumbo frame size of 9216 bytes.
[15] Joe St Sauver (2003-02-04). “Practical Issues Associated
With 9K MTUs” (PDF). uoregon.edu. p. 19–21. Re-
trieved 2014-02-13.
[16] RFC 2516
[17] RFC 4638
[18] IEEE Standard for Information technology— Telecom-
munications and information exchange between systems
Local and metropolitan area networks— Specific require-
ments Part 11: Wireless LAN Medium Access Control
(MAC) and Physical Layer (PHY) Specifications, Page
413
[19] jabber, The Network Encyclopedia, retrieved 2016-07-28
[20] show interfaces, Juniper Networks, retrieved 2016-07-28

44.6 Further reading


• Marc Slemko (January 18, 1998). “Path MTU Dis-
covery and Filtering ICMP”. Retrieved 2007-09-
02.
Chapter 45

Mealy machine

In the theory of computation, a Mealy machine is a 45.3 Comparison of Mealy ma-


finite-state machine whose output values are determined
both by its current state and the current inputs. (This is in
chines and Moore machines
contrast to a Moore machine, whose output values are de-
termined solely by its current state.) A Mealy machine is 1. Mealy machines tend to have fewer states:
a deterministic finite-state transducer: for each state and
input, at most one transition is possible. • Different outputs on arcs (n2 ) rather than states
(n).

2. Moore machine are safer to use:


45.1 History
• Outputs change at clock edge (always one cy-
The Mealy machine is named after George H. Mealy, who cle later).
presented the concept in a 1955 paper, “A Method for
Synthesizing Sequential Circuits”.[1] • In Mealy machines, input change can cause
output change as soon as logic is done—a
big problem when two machines are intercon-
nected – asynchronous feedback may occur if
45.2 Formal definition one isn't careful.

A Mealy machine is a 6-tuple (S, S0 , Σ, Λ, T, G) consist- 3. Mealy machine react faster to inputs:
ing of the following:
• React in same cycle—don't need to wait for
clock.
• a finite set of states S
• In Moore machines, more logic may be neces-
• a start state (also called initial state) S0 which is an sary to decode state into outputs—more gate
element of S delays after clock edge.

• a finite set called the input alphabet Σ


45.4 Diagram
• a finite set called the output alphabet Λ
The state diagram for a Mealy machine associates an out-
• a transition function T : S × Σ → S mapping pairs put value with each transition edge (in contrast to the state
of a state and an input symbol to the corresponding diagram for a Moore machine, which associates an output
next state. value with each state).

• an output function G : S × Σ → Λ mapping pairs When the input and output alphabet are both Σ, one can
of a state and an input symbol to the corresponding also associate
[2]
to a Mealy Automata an Helix directed
output symbol. graph. (S × Σ, (x, i) → (T(x, i), G(x, i))) This graph has
as vertices the couples of state and letters, every nodes are
of out-degree one, and the successor of (x, i) is the next
In some formulations, the transition and output functions state of the automata and the letter that the automata out-
are coalesced into a single function T : S × Σ → S × Λ put when it is instate x and it reads letter i. This graph is a
. union of disjoint cycles iff the automaton is bireversible.

248
45.7. SUMMARY 249

45.5 Examples diagram would be too complex to provide feasible means


of designing complex ciphering machines.
45.5.1 Simple Moore/Mealy machines, are DFAs that have also out-
put at any tick of the clock. Modern CPUs, comput-
ers, cell phones, digital clocks and basic electronic de-
vices/machines have some kind of finite state machine to
control it.
Simple software systems, particularly ones that can be
represented using regular expressions, can be modeled as
Finite State Machines. There are many of such simple
systems, such as vending machines or basic electronics.
By finding the intersection of two Finite state machines,
one can design in a very simple manner concurrent sys-
tems that exchange messages for instance. For example,
a traffic light is a system that consists of multiple subsys-
tems, such as the different traffic lights, that work con-
currently.
Some examples of applications:

• number classification
• watch with timer
• vending machine
• traffic light
• bar code scanner
• gas pumps

State diagram for a simple Mealy machine with one input and
one output. 45.7 Summary
A simple Mealy machine has one input and one output.
Implementing a Moore or Mealy machine is not that hard,
Each transition edge is labeled with the value of the in-
especially if one does not intend to minimize the circuit.
put (shown in red) and the value of the output (shown
in blue). The machine starts in state Sᵢ. (In this exam- However, it does take practice to be able to do it reason-
ple, the output is the exclusive-or of the two most-recent ably fast, and is difficult to understand conceptually, at
input values; thus, the machine implements an edge de- least, at first. One should trace out a few steps just to
tector, outputting a one every time the input flips and a convince oneself of how it behaves. There is a subtle dif-
zero otherwise.) ference in the behavior of the implementation of a Mealy
and Moore machine. Tracing out a few steps can show
the differences more clearly.
45.5.2 Complex
Usually, it is harder to understand why the circuit does
More complex Mealy machines can have multiple inputs the right thing (i.e., implements the FSM) than it is to
as well as multiple outputs. know how to build it. Certainly, one should devote time
to both understanding why this technique works, as well
as mastering the technique.
45.6 Applications
45.8 See also
Mealy machines provide a rudimentary mathematical
model for cipher machines. Considering the input and • Synchronous circuit
output alphabet the Latin alphabet, for example, then a
Mealy machine can be designed that given a string of let- • Moore machine
ters (a sequence of inputs) can process it into a ciphered
• Algorithmic state machine
string (a sequence of outputs). However, although one
could use a Mealy model to describe the Enigma, the state • Richards controller
250 CHAPTER 45. MEALY MACHINE

45.9 Footnotes
[1] Mealy, George H. (September 1955). “A Method for
Synthesizing Sequential Circuits”. Bell System Tech-
nical Journal. 34: 1045–1079. doi:10.1002/j.1538-
7305.1955.tb03788.x.

[2] Akhavi et al (2012)

45.10 References
• Mealy, George H. (1955). A Method for Synthesiz-
ing Sequential Circuits. Bell System Technical Jour-
nal. pp. 1045–1079.

• Holcombe, W.M.L. (1982). Algebraic automata


theory. Cambridge Studies in Advanced Mathemat-
ics. 1. Cambridge University Press. ISBN 0-521-
60492-3. Zbl 0489.68046.

• Roth, Charles H., Jr. (2004). Fundamentals of


Logic Design. Thomson-Engineering. pp. 364–367.
ISBN 0-534-37804-8.
• Akhavi, Ali; Klimann, Ines; Lombardy, Sylvain;
Mairesse, Jean; Picantin, Matthieu (2012). “On
the finiteness problem for automaton (semi)groups”.
Int. J. Algebra Comput. 22 (6). arXiv:1105.4725 .
Zbl 1280.20038.
Chapter 46

Media access control

Not to be confused with Message authentication code. • receive/transmit normal frames

• half-duplex retransmission and backoff functions


In the IEEE 802 reference model of computer network-
ing, the medium access control or media access con-
• append/check FCS (frame check sequence)
trol (MAC) layer is the lower sublayer of the data link
layer (layer 2) of the seven-layer OSI model. The MAC
• interframe gap enforcement
sublayer provides addressing and channel access control
mechanisms that make it possible for several terminals
• discard malformed frames
or network nodes to communicate within a multiple ac-
cess network that incorporates a shared medium, e.g. an
• prepend(tx)/remove(rx) preamble, SFD (start frame
Ethernet network. The hardware that implements the
delimiter), and padding
MAC is referred to as a media access controller.
The MAC sublayer acts as an interface between the • half-duplex compatibility: append(tx)/remove(rx)
logical link control (LLC) sublayer and the network’s MAC address
physical layer. The MAC layer emulates a full-duplex
logical communication channel in a multi-point network.
This channel may provide unicast, multicast or broadcast
communication service. 46.2 Addressing mechanism
The local network addresses used in IEEE 802 networks
46.1 Functions performed in the and FDDI networks are called MAC addresses; they are
based on the addressing scheme used in early Ethernet
MAC sublayer implementations. A MAC address is a unique serial num-
ber. Once a MAC address has been assigned to a partic-
According to IEEE Std 802-2001 section 6.2.3 “MAC ular network interface (typically at time of manufacture),
sublayer”, the primary functions performed by the MAC that device should be uniquely identifiable amongst all
layer are:[1] other network devices in the world. This guarantees that
each device in a network will have a different MAC ad-
• Frame delimiting and recognition dress (analogous to a street address). This makes it possi-
ble for data packets to be delivered to a destination within
• Addressing of destination stations (both as individ-
a subnetwork, i.e. hosts interconnected by some combi-
ual stations and as groups of stations)
nation of repeaters, hubs, bridges and switches, but not
• Conveyance of source-station addressing informa- by network layer routers. Thus, for example, when an
tion IP packet reaches its destination (sub)network, the desti-
nation IP address (a layer 3 or network layer concept) is
• Transparent data transfer of LLC PDUs, or of resolved with the Address Resolution Protocol for IPv4,
equivalent information in the Ethernet sublayer or by Neighbor Discovery Protocol (IPv6) into the MAC
• Protection against errors, generally by means of gen- address (a layer 2 concept) of the destination host.
erating and checking frame check sequences Examples of physical networks are Ethernet networks and
• Control of access to the physical transmission Wi-Fi networks, both of which are IEEE 802 networks
medium and use IEEE 802 48-bit MAC addresses.
A MAC layer is not required in full-duplex point-to-point
In the case of Ethernet, according to 802.3-2002 section communication, but address fields are included in some
4.1.4, the functions required of a MAC are:[2] point-to-point protocols for compatibility reasons.

251
252 CHAPTER 46. MEDIA ACCESS CONTROL

46.3 Channel access control mech- • OFDMA


anism • OFDM

The channel access control mechanisms provided by the


MAC layer are also known as a multiple access pro- 46.5 MAC in cellular networks
tocol. This makes it possible for several stations con-
nected to the same physical medium to share it. Exam- Cellular networks, such as GSM, UMTS or LTE net-
ples of shared physical media are bus networks, ring net-works, also use a MAC layer. The MAC protocol in cellu-
works, hub networks, wireless networks and half-duplex lar networks is designed to maximize the utilization of the
point-to-point links. The multiple access protocol may expensive licensed spectrum. [3] The air interface of a cel-
detect or avoid data packet collisions if a packet mode lular network is at layers 1 and 2 of the OSI model; at layer
contention based channel access method is used, or re- 2, it is divided into multiple protocol layers. In UMTS
serve resources to establish a logical channel if a circuit-
and LTE, those protocols are the Packet Data Conver-
switched or channelization-based channel access method gence Protocol (PDCP), the Radio Link Control (RLC)
is used. The channel access control mechanism relies on protocol, and the MAC protocol. The base station has
a physical layer multiplex scheme. the absolute control over the air interface and schedules
The most widespread multiple access protocol is the con- the downlink access as well as the uplink access of all
tention based CSMA/CD protocol used in Ethernet net- devices. The MAC protocol is specified by 3GPP in TS
works. This mechanism is only utilized within a network 25.321[4] for UMTS and TS 36.321[5] for LTE.
collision domain, for example an Ethernet bus network or
a hub-based star topology network. An Ethernet network
may be divided into several collision domains, intercon- 46.6 See also
nected by bridges and switches.
A multiple access protocol is not required in a switched • List of channel access methods
full-duplex network, such as today’s switched Ethernet
networks, but is often available in the equipment for com- • Isochronous media access controller
patibility reasons. • MAC-Forced Forwarding

• MACsec (IEEE 802.1AE)


46.4 Common multiple access pro-
tocols 46.7 References
Examples of common statistical time division multiplex- [1] “IEEE 802-2001 (R2007) IEEE Standard for Local and
ing multiple access protocols for wired multi-drop net- Metropolitan Area Networks: Overview and Architec-
works are: ture” (PDF). IEEE.

[2] “IEEE 802.3”. IEEE.


• CSMA/CD (used in Ethernet and IEEE 802.3)
[3] G. Miao; J. Zander; K-W Sung; B. Slimane (2016). Fun-
• Token bus (IEEE 802.4) damentals of Mobile Data Networks. Cambridge Univer-
sity Press. ISBN 1107143217.
• Token ring (IEEE 802.5)
[4] 3GPP TS 25.321 Medium Access Control (MAC) proto-
• Token passing (used in FDDI)
col specification

Examples of common multiple access protocols that may [5] 3GPP TS 36.321 Evolved Universal Terrestrial Radio Ac-
be used in packet radio wireless networks are: cess (E-UTRA); Medium Access Control (MAC) proto-
col specification

• CSMA/CA (used in IEEE 802.11/WiFi WLANs)


This article is based on material taken from the Free On-
• Slotted ALOHA line Dictionary of Computing prior to 1 November 2008
and incorporated under the “relicensing” terms of the
• Dynamic TDMA GFDL, version 1.3 or later.
• Reservation ALOHA (R-ALOHA)
• Mobile Slotted Aloha (MS-ALOHA)
• CDMA
Chapter 47

Moore machine

In the theory of computation, a Moore machine is a 47.3 Relationship with Mealy ma-
finite-state machine whose output values are determined
solely by its current state. This is in contrast to a Mealy
chines
machine, whose output values are determined both by its
current state and by the values of its inputs. The Moore As Moore and Mealy machines are both types of finite-
machine is named after Edward F. Moore, who presented state machines, they are equally expressive: either type
the concept in a 1956 paper, “Gedanken-experiments on can be used to parse a regular language.
Sequential Machines.”[1] The difference between Moore machines and Mealy ma-
chines is that in the latter, the output of a transition is de-
termined by the combination of current state and current
47.1 Formal definition input ( S × Σ as the input to G ), as opposed to just the
current state ( S as the input to G ). When represented
A Moore machine can be defined as a 6-tuple as a state diagram,
(S, S0 , Σ, Λ, T, G) consisting of the following:
• for a Moore machine, each node (state) is labeled
• a finite set of states S with an output value;
• a start state (also called initial state) S0 which is an • for a Mealy machine, each arc (transition) is labeled
element of S with an output value.
• a finite set called the input alphabet Σ
Every Moore machine M is equivalent to the Mealy ma-
• a finite set called the output alphabet Λ
chine with the same states and transitions and the out-
• a transition function T : S × Σ → S mapping a put function G(s, σ) → GM (s) , which takes each state-
state and the input alphabet to the next state input pair (s, σ) and yields GM (s) , where GM is M 's
output function.
• an output function G : S → Λ mapping each state
to the output alphabet However, not every Mealy machine can be converted to
an equivalent Moore machine. Some can be converted
A Moore machine can be regarded as a restricted type of only to an almost equivalent Moore machine, with outputs
finite-state transducer. shifted in time. This is due to the way that state labels
are paired with transition labels to form the input/output
pairs. Consider a transition si → sj from state si to state
sj . The input causing the transition si → sj labels the
47.2 Visual representation edge (si , sj ) . The output corresponding to that input,
is the label of state si .[2] Notice that this is the source
47.2.1 Table state of the transition. So for each input, the output is
already fixed before the input is received, and depends
State transition table is a table showing relation between solely on the present state. This is the original definition
an input and a state. by E. Moore. It is a common mistake to use the label of
state sj as output for the transition si → sj .
47.2.2 Diagram
The state diagram for a Moore machine or Moore dia- 47.4 Examples
gram is a diagram that associates an output value with
each state. Moore machine is an output producer. Types according to number of inputs/outputs.

253
254 CHAPTER 47. MOORE MACHINE

1 1
47.4.1 Simple
1

Simple Moore machines have one input and one output:

1 1
0 0 0
• edge detector using XOR
1

• binary adding machine

• clocked sequential systems (a restricted form of 0 1 0 1 0


Moore machine where the state changes only when 1

the global clock signal changes)

0 0 0
Most digital electronic systems are designed as clocked
sequential systems. Clocked sequential systems are a re-
stricted form of Moore machine where the state changes Example moore machine
only when the global clock signal changes. Typically
the current state is stored in flip-flops, and a global 47.4.2 Complex
clock signal is connected to the “clock” input of the flip-
flops. Clocked sequential systems are one way to solve More complex Moore machines can have multiple inputs
metastability problems. A typical electronic Moore ma- as well as multiple outputs.
chine includes a combinational logic chain to decode the
current state into the outputs (lambda). The instant the
current state changes, those changes ripple through that
chain, and almost instantaneously the output gets up- 47.5 Gedanken-experiments
dated. There are design techniques to ensure that no
glitches occur on the outputs during that brief period In Moore’s paper "Gedanken-experiments on Sequential
while those changes are rippling through the chain, but Machines”,[1] the (n; m; p) automata (or machines) S are
most systems are designed so that glitches during that defined as having n states, m input symbols and p output
brief transition time are ignored or are irrelevant. The symbols. Nine theorems are proved about the structure
outputs then stay the same indefinitely (LEDs stay bright, of S , and experiments with S . Later, " S machines”
power stays connected to the motors, solenoids stay ener- became known as “Moore machines”.
gized, etc.), until the Moore machine changes state again.
At the end of the paper, in Section “Further problems”,
the following task is stated:
transition logic output logic
state memory output Another directly following problem is the
input
improvement of the bounds given at the theo-
S0
Σ rems 8 and 9.
S n+1 S Sn G Λ
T
R
Moore’s Theorem 8 is formulated as:
clock reset

Given an arbitrary (n; m; p) machine S ,


such that every two of its states are distinguish-
Moore machine in combinational logic able from one another, then there exists an ex-
periment of length n(n−1)2 which determines
the state of S at the end of the experiment.

Worked Example In 1957, A. A. Karatsuba proved the following two the-


orems, which completely solved Moore’s problem on the
A sequential network has one input and one output. The improvement of the bounds of the experiment length of
output becomes 1 and remains 1 thereafter when at least his “Theorem 8”.
two 0’s and two 1’s have occurred as inputs.
A moore machine with nine states for the above descrip- Theorem A. If S is an (n; m; p) machine,
tion is shown on the right. The initial state is state A, and such that every two of its states are distin-
the final state is state I. The state table for this example is guishable from one another, then there ex-
as follows: ists a branched experiment of length at most
47.8. FURTHER READING 255

(n−1)(n−2)
2 + 1 through which one may deter- • Moore E. F. Gedanken-experiments on Sequential
mine the state of S at the end of the experi- Machines. Automata Studies, Annals of Mathe-
ment. matical Studies, 34, 129–153. Princeton University
Press, Princeton, N.J.(1956).
Theorem B. There exists an (n; m; p) ma- • Karatsuba A. A. Solution of one problem from the
chine, every two states of which are distin- theory of finite automata. Usp. Mat. Nauk, 15:3,
guishable from one another, such that the 157–159 (1960).
length of the shortest experiments establishing
the state of the machine at the end of the ex- • Karacuba A. A. Experimente mit Automaten (Ger-
periment is equal to (n−1)(n−2)
2 +1. man) Elektron. Informationsverarb. Kybernetik,
11, 611–612 (1975).
Theorems A and B were used for the basis of the course • Karatsuba A. A. List of research works
work of a student of the fourth year, A. A. Karatsuba,
“On a problem from the automata theory”, which was dis-
its length is n+1/2.
tinguished by testimonial reference at the competition of
student works of the faculty of mechanics and mathemat-
ics of Moscow Lomonosow State University in 1958. The
paper by Karatsuba was given to the journal Uspekhi Mat.
Nauk on 17 December 1958 and was published there in
June 1960.[3]
Until the present day (2011), Karatsuba’s result on the
length of experiments is the only exact nonlinear result,
both in automata theory, and in similar problems of com-
putational complexity theory.

47.6 See also


• Synchronous circuit

• Mealy machine

• Algorithmic state machine

47.7 References
[1] Moore, Edward F (1956). “Gedanken-experiments on Se-
quential Machines”. Automata Studies, Annals of Math.
Studies. Princeton, N.J.: Princeton University Press (34):
129–153.

[2] Lee, Edward Ashford; Seshia, Sanjit Arunkumar (2013).


Introduction to Embedded Systems (1.08 ed.). UC Berke-
ley: Lulu.com. ISBN 9780557708574. Retrieved 1 July
2014.

[3] Karatsuba, A. A. (1960). “Solution of one problem from


the theory of finite automata”. Uspekhi Mat. Nauk (15:3):
157–159.

47.8 Further reading


• Conway, J.H. (1971). Regular algebra and finite
machines. London: Chapman and Hall. ISBN 0-
412-10620-5. Zbl 0231.94041.
Chapter 48

Network congestion

Network congestion in data networking and queueing computer


theory is the reduced quality of service that occurs when
a network node is carrying more data than it can handle. • Even on fast computer networks (e.g. Gigabit Ether-
Typical effects include queueing delay, packet loss or the net), the backbone can easily be congested by a few
blocking of new connections. A consequence of the latter servers and client PCs.
two effects is that an incremental increase in offered load • The aggregate transmission from P2P networks have
leads either only to a small increase or even a decrease in no problem filling an uplink or some other network
network throughput.[1] bottleneck.
Network protocols that use aggressive retransmissions to
• Denial-of-service attacks by botnets are capable of
compensate for packet loss due to congestion can increase
filling even the largest Internet backbone network
congestion, even after the initial load has been reduced to
links, generating large-scale network congestion
a level that would not normally have induced network con-
gestion. Such networks exhibit two stable states under the • In telephone networks (particularly mobile phones),
same level of load. The stable state with low throughput a mass call event can overwhelm digital telephone
is known as congestive collapse. circuits
Networks use congestion control and congestion avoid-
ance techniques to try to avoid congestion collapse. These
include: exponential backoff in protocols such as 802.11 48.2 Congestive collapse
CSMA/CA and the original Ethernet, window reduction
in TCP, and fair queueing in devices such as routers. An- Congestive collapse (or congestion collapse) is the condi-
other method is to implement priority schemes, transmit- tion in which congestion prevents or limits useful commu-
ting some packets with higher priority than others. Prior- nication. Congestion collapse generally occurs at “choke
ity schemes help to alleviate the effects of congestion for points” in the network, where incoming traffic exceeds
services such as 802.1p. outgoing bandwidth. Connection points between a local
A third avoidance method is the explicit allocation of net- area network and a wide area network are common choke
work resources to specific flows. One example of this is points.
the use of Contention-Free Transmission Opportunities When a network is in this condition, it settles into a sta-
(CFTXOPs) in the ITU-T G.hn standard, which provides ble state where traffic demand is high but little useful
high-speed (up to 1 Gbit/s) local area networking over throughput is available, packet delay and loss and quality
varying wires (power lines, phone lines and coaxial ca- of service is extremely poor.
bles).
Congestion collapse was identified as a possible prob-
RFC 2914 addresses the subject of congestion control in lem by 1984, for example in RFC 896. It was first ob-
detail. served on the early Internet in October 1986, when the
NSFnet phase-I backbone dropped three orders of mag-
nitude from its capacity of 32 kbit/s to 40 bit/s, which
48.1 Network capacity continued until end nodes started implementing Van Ja-
cobson's congestion control between 1987 and 1988.
Network resources are limited, including router process- When more packets were sent than could be handled by
ing time and link throughput. intermediate routers, the intermediate routers discarded
many packets, expecting the end points of the network
For example: to retransmit the information. However, early TCP im-
plementations had poor retransmission behavior. When
• A wireless LAN is easily filled by a single personal this packet loss occurred, the endpoints sent extra packets

256
48.4. MITIGATION 257

that repeated the information lost, doubling the incoming Among the ways to classify congestion control algorithms
rate. are:

• By type and amount of feedback received from the


48.3 Congestion control network: Loss; delay; single-bit or multi-bit explicit
signals
Congestion control controls traffic entry into a telecom-
munications network, to avoid congestive collapse by • By incremental deployability: Only sender needs
avoiding oversubscription by reducing the rate of pack- modification; sender and receiver need modifica-
ets. It should not be confused with flow control, which tion; only router needs modification; sender, re-
prevents the sender from overwhelming the receiver. ceiver and routers need modification.

• By performance aspect: high bandwidth-delay prod-


48.3.1 Theory of congestion control uct networks; lossy links; fairness; advantage to
short flows; variable-rate links
The theory on congestion control was pioneered by Frank
• By fairness criterion: max-min, proportional, “min-
Kelly, who applied microeconomic theory and convex
imum potential delay”
optimization theory to describe how individuals control-
ling their own rates can interact to achieve an “optimal”
network-wide rate allocation.
Examples of “optimal” rate allocation are max-min fair
48.4 Mitigation
allocation and Kelly’s suggestion of proportionally fair al-
location, although many others are possible. A few mechanisms have been invented to prevent network
congestion or to deal with a network collapse:
Let xi be the rate of flow i , Cl be the capacity of link l
, and rli be 1 if flow i uses link l and 0 otherwise. Let x
, c and R be the corresponding vectors and matrix. Let • Network scheduler – active queue management (that
U (x) be an increasing, strictly concave function, called is, the arbitrary reorder or drop of network packets
the utility, which measures how much benefit a user ob- under overload)
tains by transmitting at rate x . The optimal rate alloca-
• Explicit Congestion Notification – an extension to IP
tion then satisfies
and TCP communications protocols that adds a flow
control mechanism

max U (xi ) • TCP congestion control – various implementations
x
i
of efforts to deal with network congestion
Rx ≤ c
The Lagrange dual of this problem decouples, so that The correct endpoint behavior is usually to repeat
each flow sets its own rate, based only on a “price” sig- dropped information, but progressively slow the repeti-
nalled by the network. Each link capacity imposes a con- tion rate. Provided all endpoints do this, the congestion
straint, which gives rise to a Lagrange lifts and the network resumes normal behavior. Other
∑ multiplier, pl . The
sum of these multipliers, yi = l pl rli , is the price to strategies such as slow-start ensure that new connections
which the flow responds. don't overwhelm the router before congestion detection
initiates.
Congestion control then becomes a distributed optimi-
sation algorithm. Many current congestion control algo- The most common router congestion avoidance mecha-
rithms can be modelled in this framework, with pl being nisms are fair queuing and other scheduling algorithms,
either the loss probability or the queueing delay at link l . and random early detection, or RED, where packets are
randomly dropped, proactively triggering the endpoints
A major weakness is that it assigns the same price to all
to slow transmission before congestion collapse occurs.
flows, while sliding window flow control causes “bursti-
Fair queuing is most useful in routers at chokepoints with
ness” that causes different flows to observe different loss
a small number of connections passing through them.
or delay at a given link.
Larger routers must rely on RED.
Some end-to-end protocols behave better under con-
48.3.2 Classification of congestion control gested conditions. TCP is perhaps the best behaved.
algorithms The first TCP implementations to handle congestion were
developed in 1984, but Van Jacobson's inclusion of an
Main article: Taxonomy of congestion control open source solution in the Berkeley Standard Distribu-
tion UNIX ("BSD") in 1988 first provided good behavior.
258 CHAPTER 48. NETWORK CONGESTION

UDP does not control congestion. Protocols built atop Robust random early detection (RRED)
UDP must handle congestion independently. Protocols
that transmit at a fixed rate, independent of congestion, The robust random early detection (RRED) algorithm
can be problematic. Real-time streaming protocols, in- was proposed to improve the TCP throughput against
cluding many Voice over IP protocols, have this property.denial-of-service (DoS) attacks, particularly low-rate
Thus, special measures, such as quality-of-service rout- denial-of-service (LDoS) attacks. Experiments con-
ing, must be taken to keep packets from being dropped. firmed that RED-like algorithms were vulnerable under
Low-rate Denial-of-Service (LDoS) attacks due to the os-
In general, congestion in pure datagram networks must
cillating TCP queue size caused by the attacks.[11]
be kept at the periphery of the network, where the above
mechanisms can handle it. Congestion in the Internet
backbone is problematic. Cheap fiber-optic lines have Flowbased-RED/WRED
reduced costs in the Internet backbone allowing it to be
provisioned with enough bandwidth to keep congestion at Some network equipment is equipped with ports that can
the periphery. follow and measure each flow (flowbased-RED/WRED)
and are thereby able to signal a too big bandwidth flow ac-
cording to some quality of service policy. A policy could
48.4.1 Practical network congestion avoid- then divide the bandwidth among all flows by some crite-
ance ria.

Connection-oriented protocols, such as the widely used


TCP protocol, generally watch for packet errors, losses, Explicit Congestion Notification
or delays (see Quality of Service) to adjust the transmit
speed. Various network congestion avoidance processes, Another approach is to use IP Explicit Congestion Notifi-
support different trade-offs.[2] cation (ECN).[12] ECN is used only when two hosts signal
that they want to use it. With this method, a protocol bit is
used to signal explicit congestion. This is better than the
48.4.2 TCP/IP congestion avoidance indirect packet delete congestion notification performed
by the RED/WRED algorithms, but it requires explicit
The TCP congestion avoidance algorithm is the primary support by both hosts.[13] ECN coauthor Sally Floyd pub-
basis for congestion control in the Internet.[3][4][5][6][7] lished detailed information on ECN, including the version
[8]
Problems occur when concurrent TCP flows experience required for Cisco IOS.
port queue buffer tail-drops, defeating TCP’s automatic When a router receives a packet marked as ECN-capable
congestion avoidance. All flows that experience port and anticipates (using RED) congestion, it sets the ECN
queue buffer tail-drop begin a TCP retrain at the same flag, notifying the sender of congestion. The sender
moment – this is called TCP global synchronization. should respond by decreasing its transmission bandwidth,
e.g., by decreasing the TCP window size (sending rate) or
by other means.
48.4.3 Active queue management
Active queue management (AQM) is the reorder or drop Cisco AQM: Dynamic buffer limiting
of network packets inside a transmit buffer that is associ-
ated with a network interface controller (NIC). This task Cisco Systems (Engine IV and V) has the capability to
is performed by the network scheduler. classify flows as aggressive (bad) or adaptive (good). It
ensures that no flows fill the port queues. DBL can utilize
IP ECN instead of packet-delete-signalling.[14][15]
Random early detection

One solution is to use random early detection (RED) TCP window shaping
on the network equipment’s port queue buffer.[8][9] On
network equipment ports with more than one queue See also: TCP window scale option
buffer, weighted random early detection (WRED) could
be used if available. Congestion avoidance can be achieved efficiently by re-
RED indirectly signals to sender and receiver by deleting ducing traffic. When an application requests a large file,
some packets, e.g. when the average queue buffer lengths graphic or web page, it usually advertises a “window” of
are more than a threshold (e.g. 50%) and deletes linearly between 32K and 64K. This results in the server send-
or cubically more packets,[10] up to e.g. 100%. The av- ing a full window of data (assuming the file is larger than
erage queue buffer lengths are computed over 1 second the window). When many applications simultaneously re-
intervals. quest downloads, this data creates a congestion point at
48.7. REFERENCES 259

an upstream provider by flooding the queue. By using a • Choke exchange


device to reduce the window advertisement, the remote
servers send less data, thus reducing the congestion. This • Erlang (unit)
technique can reduce network congestion by a factor of • Max-min fairness
40.
• Sorcerer’s Apprentice Syndrome

Backward ECN • TCP congestion-avoidance algorithm

Backward ECN (BECN) is another proposed congestion • Teletraffic engineering


mechanism. It uses ICMP source quench messages as • Thrashing
an IP signalling mechanism to implement a basic ECN
mechanism for IP networks, keeping congestion notifica- • Traffic shaping
tions at the IP level and requiring no negotiation between
network endpoints. Effective congestion notifications can
be propagated to transport layer protocols, such as TCP 48.7 References
and UDP, for the appropriate adjustments.[16]
[1] (Al-Bahadili, 2012, p. 282) Al-Bahadili, H. (2012).
Simulation in computer network design and modeling:
48.5 Side effects of congestive col- Use and analysis. Hershey, PA: IGI Global.

lapse avoidance [2] TCP Tunnels: Avoiding Congestion Collapse (2000)

[3] Van Jacobson, Michael J. Karels. Congestion Avoid-


48.5.1 Radio links ance and Control (1988). Proceedings of the Sigcomm '88
Symposium, vol.18(4): pp.314–329. Stanford, CA. Au-
The protocols that avoid congestive collapse are often gust, 1988. This paper originated many of the congestion
based on the idea that data loss is caused by congestion. avoidance algorithms used in TCP/IP.
This is true in nearly all cases; errors during transmission [4] RFC 2001 - TCP Slow Start, Congestion Avoidance, Fast
are rare. However, this causes WiFi, 3G or other net- Retransmit, and Fast Recovery Algorithms
works with a radio layer to have poor throughput in some
cases since wireless networks are susceptible to data loss [5] RFC 2581 - TCP Congestion Control
due to interference. The TCP connections running over
[6] RFC 3390 - TCP Increasing TCP’s Initial Window
a radio based physical layer see the data loss and tend to
erroneously believe that congestion is occurring. [7] TCP Congestion Avoidance Explained via a Sequence Di-
agram

[8] Sally Floyd: RED (Random Early Detection) Queue Man-


48.5.2 Short-lived connections
agement
The slow-start protocol performs badly for short connec- [9] Sally Floyd, Van Jacobson. Random Early Detection
tions. Older web browsers created many short-lived con- Gateways for Congestion Avoidance (1993). IEEE/ACM
nections and opened and closed the connection for each Transactions on Networking, vol.1(4): pp.397–413. In-
file. This kept most connections in the slow start mode, vented Random Early Detection (RED) gateways.
which slowed response times.
[10] An Analytical RED Function Design Guaranteeing Stable
To avoid this problem, modern browsers either open mul- System Behavior Quote: "...The advantage of this func-
tiple connections simultaneously or reuse one connection tion lies not only in avoiding heavy oscillations but also
for all files requested from a particular server. Initial per- in avoiding link under-utilization at low loads. The ap-
formance can be poor, and many connections never get plicability of the derived function is independent of the
out of the slow-start regime, significantly increasing la- load range, no parameters are to be adjusted. Compared
to the original linear drop function applicability is ex-
tency.
tended by far...Our example with realistic system param-
eters gives an approximation function of the cubic of the
queue size...”
48.6 See also [11] Zhang, Changwang; Yin, Jianping; Cai, Zhiping; Chen,
Weifeng (2010). “RRED: Robust RED Algorithm to
• Bandwidth management Counter Low-rate Denial-of-Service Attacks” (PDF).
IEEE Communications Letter. IEEE. 14: 489–491.
• Bufferbloat
[12] RFC 3168 - The Addition of Explicit Congestion Notifi-
• Cascading failure cation (ECN) to IP
260 CHAPTER 48. NETWORK CONGESTION

[13] Comparative study of RED, ECN and TCP Rate Control • Approaches to Congestion Control in Packet Net-
(1999) works
[14] Active Queue Management • Papers in Congestion Control
[15] Enabling Dynamic Buffer Limiting • Random Early Detection Homepage
[16] A proposal for Backward ECN for the Internet Protocol • Explicit Congestion Notification Homepage

• “Deploying IP and MPLS QoS for Multiservice • TFRC Homepage


Networks: Theory and Practice” by John Evans, • AIMD-FC Homepage
Clarence Filsfils (Morgan Kaufmann, 2007, ISBN
0-12-370549-5) • TCP congestion control simulation: Fast recovery
• RFC 2914 - Congestion Control Principles, Sally • Recent Publications in low-rate denial-of-service
Floyd, September, 2000 (DoS) attacks
• RFC 896 - “Congestion Control in IP/TCP”, John
Nagle, 6 January 1984

• Introduction to Congestion Avoidance and Control,


Van Jacobson and Michael J. Karels, November,
1988

48.8 Books
• “Deploying IP and MPLS QoS for Multiservice
Networks: Theory and Practice” by John Evans,
Clarence Filsfils (Morgan Kaufmann, 2007, ISBN
0-12-370549-5)

48.9 External links


• Nagle, J. RFC 896: Congestion control in IP/TCP
internetworks (1984)

• Floyd, S. RFC 2914: Congestion control principles


(2000)

• Floyd, S. and K. Fall, Promoting the Use of End-to-


End Congestion Control in the Internet (IEEE/ACM
Transactions on Networking, August 1999)

• Sally Floyd, On the Evolution of End-to-end Conges-


tion Control in the Internet: An Idiosyncratic View
(IMA Workshop on Scaling Phenomena in Commu-
nication Networks, October 1999) (pdf format)

• Linktionary term: Queuing

• Pierre-Francois Quet, Sriram Chellappan, Arjan


Durresi, Mukundan Sridharan, Hitay Ozbay, Raj
Jain, " Guidelines for optimizing Multi-Level ECN,
using fluid flow based TCP model”

• Sally Floyd, Ratul Mahajan, David Wetherall: RED-


PD: RED with Preferential Dropping

• A Generic Simple RED Simulator for educational


purposes by Mehmet Suzen
Chapter 49

Operating system

An operating system (OS) is system software that man- Unix-like operating systems, e.g., Solaris, Linux, as well
ages computer hardware and software resources and pro- as AmigaOS support preemptive multitasking. Coopera-
vides common services for computer programs. All tive multitasking is achieved by relying on each process to
computer programs, excluding firmware, require an op- provide time to the other processes in a defined manner.
erating system to function. 16-bit versions of Microsoft Windows used cooperative
Time-sharing operating systems schedule tasks for effi- multi-tasking. 32-bit versions of both Windows NT and
Win9x, used preemptive multi-tasking.
cient use of the system and may also include accounting
software for cost allocation of processor time, mass stor-
age, printing, and other resources.
49.1.2 Single- and multi-user
For hardware functions such as input and output
and memory allocation, the operating system acts as
an intermediary between programs and the computer Single-user operating systems have no facilities to distin-
hardware,[1][2] although the application code is usually guish users, but may allow multiple programs to run in
executed directly by the hardware and frequently makes tandem.[5] A multi-user operating system extends the ba-
sic concept of multi-tasking with facilities that identify
system calls to an OS function or is interrupted by it. Op-
erating systems are found on many devices that contain a processes and resources, such as disk space, belonging to
computer – from cellular phones and video game consoles multiple users, and the system permits multiple users to
to web servers and supercomputers. interact with the system at the same time. Time-sharing
operating systems schedule tasks for efficient use of the
The dominant desktop operating system is Microsoft system and may also include accounting software for cost
Windows with a market share of around 85%. OS X allocation of processor time, mass storage, printing, and
by Apple Inc. is in second place (9%), and Linux is in other resources to multiple users.
third position (1.5%). [3] In the mobile sector Android
by Google is dominant with 63% and iOS by Apple is
placed second with around 25%.[4] Linux is dominant in
the server and supercomputing sectors. Other specialized
49.1.3 Distributed
classes of operating systems, such as embedded and real-
time systems, exist for many applications. A distributed operating system manages a group of dis-
tinct computers and makes them appear to be a single
computer. The development of networked computers
that could be linked and communicate with each other
49.1 Types of operating systems gave rise to distributed computing. Distributed compu-
tations are carried out on more than one machine. When
49.1.1 Single- and multi-tasking computers in a group work in cooperation, they form a
distributed system.[6]
A single-tasking system can only run one program at a
time, while a multi-tasking operating system allows more
than one program to be running in concurrency. This is 49.1.4 Templated
achieved by time-sharing, dividing the available proces-
sor time between multiple processes that are each inter- In an OS, distributed and cloud computing context,
rupted repeatedly in time slices by a task-scheduling sub- templating refers to creating a single virtual machine im-
system of the operating system. Multi-tasking may be age as a guest operating system, then saving it as a tool for
characterized in preemptive and co-operative types. In multiple running virtual machines. The technique is used
preemptive multitasking, the operating system slices the both in virtualization and cloud computing management,
CPU time and dedicates a slot to each of the programs. and is common in large server warehouses.[7]

261
262 CHAPTER 49. OPERATING SYSTEM

49.1.5 Embedded from data on punched paper cards. After programmable


general purpose computers were invented, machine lan-
Embedded operating systems are designed to be used in guages (consisting of strings of the binary digits 0 and 1
embedded computer systems. They are designed to op- on punched paper tape) were introduced that sped up the
erate on small machines like PDAs with less autonomy. programming process (Stern, 1981).
They are able to operate with a limited number of re-
sources. They are very compact and extremely efficient
by design. Windows CE and Minix 3 are some examples
of embedded operating systems.

49.1.6 Real-time

A real-time operating system is an operating system that


guarantees to process events or data by a specific moment
in time. A real-time operating system may be single- or
multi-tasking, but when multitasking, it uses specialized
scheduling algorithms so that a deterministic nature of
behavior is achieved. An event-driven system switches
between tasks based on their priorities or external events
while time-sharing operating systems switch tasks based
on clock interrupts

49.1.7 Library

A library operating system is one in which the services


that a typical operating system provides, such as network-
ing, are provided in the form of libraries. These libraries
are composed with the application and configuration code
to construct unikernels – which are specialized, single
OS/360 was used on most IBM mainframe computers beginning
address space, machine images that can be deployed to
in 1966, including computers used by the Apollo program.
cloud or embedded environments.

In the early 1950s, a computer could execute only one


program at a time. Each user had sole use of the com-
49.2 History puter for a limited period of time and would arrive at a
scheduled time with program and data on punched paper
Main article: History of operating systems cards or punched tape. The program would be loaded into
See also: Resident monitor the machine, and the machine would be set to work until
the program completed or crashed. Programs could gen-
erally be debugged via a front panel using toggle switches
Early computers were built to perform a series of single
tasks, like a calculator. Basic operating system features and panel lights. It is said that Alan Turing was a master
of this on the early Manchester Mark 1 machine, and he
were developed in the 1950s, such as resident monitor
functions that could automatically run different programs was already deriving the primitive conception of an oper-
in succession to speed up processing. Operating systems ating system from the principles of the Universal Turing
did not exist in their modern and more complex forms un- machine.[8]
til the early 1960s.[8] Hardware features were added, that Later machines came with libraries of programs, which
enabled use of runtime libraries, interrupts, and parallel would be linked to a user’s program to assist in operations
processing. When personal computers became popular in such as input and output and generating computer code
the 1980s, operating systems were made for them similar from human-readable symbolic code. This was the gen-
in concept to those used on larger computers. esis of the modern-day operating system. However, ma-
In the 1940s, the earliest electronic digital systems had chines still ran a single job at a time. At Cambridge Uni-
no operating systems. Electronic systems of this time versity in England the job queue was at one time a wash-
were programmed on rows of mechanical switches or by ing line (clothes line) from which tapes were hung with
jumper wires on plug boards. These were special-purpose different colored clothes-pegs to indicate job-priority.
systems that, for example, generated ballistics tables for An improvement was the Atlas Supervisor introduced
the military or controlled the printing of payroll checks with the Manchester Atlas commissioned in 1962, “con-
49.2. HISTORY 263

sidered by many to be the first recognisable modern op- in timesharing and programming languages. In the late
erating system”.[9] Brinch Hansen described it as “the 1970s, Control Data and the University of Illinois devel-
most significant breakthrough in the history of operating oped the PLATO operating system, which used plasma
systems.”[10] panel displays and long-distance time sharing networks.
Plato was remarkably innovative for its time, featuring
real-time chat, and multi-user graphical games.
49.2.1 Mainframes In 1961, Burroughs Corporation introduced the B5000
with the MCP, (Master Control Program) operating sys-
Main article: Mainframe computer tem. The B5000 was a stack machine designed to ex-
See also: History of IBM mainframe operating systems clusively support high-level languages with no machine
language or assembler, and indeed the MCP was the
first OS to be written exclusively in a high-level language
Through the 1950s, many major features were pioneered
– ESPOL, a dialect of ALGOL. MCP also introduced
in the field of operating systems, including batch pro-
many other ground-breaking innovations, such as being
cessing, input/output interrupt, buffering, multitasking,
the first commercial implementation of virtual memory.
spooling, runtime libraries, link-loading, and programs
During development of the AS/400, IBM made an ap-
for sorting records in files. These features were included
proach to Burroughs to licence MCP to run on the AS/400
or not included in application software at the option of ap-
hardware. This proposal was declined by Burroughs
plication programmers, rather than in a separate operat-
management to protect its existing hardware production.
ing system used by all applications. In 1959, the SHARE
MCP is still in use today in the Unisys ClearPath/MCP
Operating System was released as an integrated utility for
line of computers.
the IBM 704, and later in the 709 and 7090 mainframes,
although it was quickly supplanted by IBSYS/IBJOB on UNIVAC, the first commercial computer manufacturer,
the 709, 7090 and 7094. produced a series of EXEC operating systems. Like
all early main-frame systems, this batch-oriented system
During the 1960s, IBM’s OS/360 introduced the concept
managed magnetic drums, disks, card readers and line
of a single OS spanning an entire product line, which
printers. In the 1970s, UNIVAC produced the Real-Time
was crucial for the success of the System/360 machines.
Basic (RTB) system to support large-scale time sharing,
IBM's current mainframe operating systems are distant
also patterned after the Dartmouth BC system.
descendants of this original system and applications writ-
ten for OS/360 can still be run on modern machines. General Electric and MIT developed General Electric
Comprehensive Operating Supervisor (GECOS), which
OS/360 also pioneered the concept that the operating sys-
introduced the concept of ringed security privilege levels.
tem keeps track of all of the system resources that are
After acquisition by Honeywell it was renamed General
used, including program and data space allocation in main
Comprehensive Operating System (GCOS).
memory and file space in secondary storage, and file lock-
ing during update. When the process is terminated for Digital Equipment Corporation developed many oper-
any reason, all of these resources are re-claimed by the ating systems for its various computer lines, including
operating system. TOPS-10 and TOPS-20 time sharing systems for the 36-
bit PDP-10 class systems. Before the widespread use
The alternative CP-67 system for the S/360-67 started
of UNIX, TOPS-10 was a particularly popular system in
a whole line of IBM operating systems focused on the
universities, and in the early ARPANET community.
concept of virtual machines. Other operating systems
used on IBM S/360 series mainframes included sys- From the late 1960s through the late 1970s, several hard-
tems developed by IBM: COS/360 (Compatibility Op- ware capabilities evolved that allowed similar or ported
erating System), DOS/360 (Disk Operating System), software to run on more than one system. Early systems
TSS/360 (Time Sharing System), TOS/360 (Tape Op- had utilized microprogramming to implement features
erating System), BOS/360 (Basic Operating System), on their systems in order to permit different underlying
and ACP (Airline Control Program), as well as a few computer architectures to appear to be the same as oth-
non-IBM systems: MTS (Michigan Terminal System), ers in a series. In fact, most 360s after the 360/40 (ex-
MUSIC (Multi-User System for Interactive Computing), cept the 360/165 and 360/168) were microprogrammed
and ORVYL (Stanford Timesharing System). implementations.
Control Data Corporation developed the SCOPE oper- The enormous investment in software for these systems
ating system in the 1960s, for batch processing. In co- made since the 1960s caused most of the original com-
operation with the University of Minnesota, the Kronos puter manufacturers to continue to develop compatible
and later the NOS operating systems were developed dur- operating systems along with the hardware. Notable sup-
ing the 1970s, which supported simultaneous batch and ported mainframe operating systems include:
timesharing use. Like many commercial timesharing sys-
tems, its interface was an extension of the Dartmouth • Burroughs MCP – B5000, 1961 to Unisys
BASIC operating systems, one of the pioneering efforts Clearpath/MCP, present
264 CHAPTER 49. OPERATING SYSTEM

• IBM OS/360 – IBM System/360, 1966 to IBM bilities, provided personal computers with the ability to
z/OS, present run multitasking operating systems like those of earlier
minicomputers and mainframes. Microsoft responded
• IBM CP-67 – IBM System/360, 1967 to IBM z/VM to this progress by hiring Dave Cutler, who had devel-
• UNIVAC EXEC 8 – UNIVAC 1108, 1967, to OS oped the VMS operating system for Digital Equipment
2200 Unisys Clearpath Dorado, present Corporation. He would lead the development of the
Windows NT operating system, which continues to serve
as the basis for Microsoft’s operating systems line. Steve
49.2.2 Microcomputers Jobs, a co-founder of Apple Inc., started NeXT Com-
puter Inc., which developed the NEXTSTEP operating
system. NEXTSTEP would later be acquired by Apple
Inc. and used, along with code from FreeBSD as the core
of Mac OS X.
The GNU Project was started by activist and program-
mer Richard Stallman with the goal of creating a com-
plete free software replacement to the proprietary UNIX
operating system. While the project was highly successful
in duplicating the functionality of various parts of UNIX,
development of the GNU Hurd kernel proved to be un-
productive. In 1991, Finnish computer science student
Linus Torvalds, with cooperation from volunteers collab-
orating over the Internet, released the first version of the
PC DOS was an early personal computer OS that featured a com- Linux kernel. It was soon merged with the GNU user
mand line interface. space components and system software to form a com-
plete operating system. Since then, the combination of
the two major components has usually been referred to
as simply “Linux” by the software industry, a naming
convention that Stallman and the Free Software Founda-
tion remain opposed to, preferring the name GNU/Linux.
The Berkeley Software Distribution, known as BSD, is
the UNIX derivative distributed by the University of Cal-
ifornia, Berkeley, starting in the 1970s. Freely distributed
and ported to many minicomputers, it eventually also
gained a following for use on PCs, mainly as FreeBSD,
NetBSD and OpenBSD.

49.3 Examples of operating sys-


Mac OS by Apple Computer became the first widespread OS to
feature a graphical user interface. Many of its features such as tems
windows and icons would later become commonplace in GUIs.
49.3.1 Unix and Unix-like operating sys-
The first microcomputers did not have the capacity or
need for the elaborate operating systems that had been tems
developed for mainframes and minis; minimalistic oper-
ating systems were developed, often loaded from ROM Main article: Unix
and known as monitors. One notable early disk operating Evolution of Unix systems
system was CP/M, which was supported on many early
microcomputers and was closely imitated by Microsoft's Unix was originally written in assembly language.[12] Ken
MS-DOS, which became widely popular as the operat- Thompson wrote B, mainly based on BCPL, based on his
ing system chosen for the IBM PC (IBM’s version of it experience in the MULTICS project. B was replaced by
was called IBM DOS or PC DOS). In the 1980s, Apple C, and Unix, rewritten in C, developed into a large, com-
Computer Inc. (now Apple Inc.) abandoned its popu- plex family of inter-related operating systems which have
lar Apple II series of microcomputers to introduce the been influential in every modern operating system (see
Apple Macintosh computer with an innovative Graphical History).
User Interface (GUI) to the Mac OS. The Unix-like family is a diverse group of operating sys-
The introduction of the Intel 80386 CPU chip in Octo- tems, with several major sub-categories including System
ber 1985,[11] with 32-bit architecture and paging capa- V, BSD, and Linux. The name "UNIX" is a trademark of
49.3. EXAMPLES OF OPERATING SYSTEMS 265

The Open Group which licenses it for use with any oper- In 1974, University of California, Berkeley installed its
ating system that has been shown to conform to their def- first Unix system. Over time, students and staff in the
initions. “UNIX-like” is commonly used to refer to the computer science department there began adding new
large set of operating systems which resemble the origi- programs to make things easier, such as text editors.
nal UNIX. When Berkeley received new VAX computers in 1978
Unix-like systems run on a wide variety of computer ar- with Unix installed, the school’s undergraduates modified
chitectures. They are used heavily for servers in business, Unix even more in order to take advantage of the com-
as well as workstations in academic and engineering envi- puter’s hardware possibilities. The Defense Advanced
Research Projects Agency of the US Department of De-
ronments. Free UNIX variants, such as Linux and BSD,
are popular in these areas. fense took interest, and decided to fund the project. Many
schools, corporations, and government organizations took
Four operating systems are certified by The Open Group notice and started to use Berkeley’s version of Unix in-
(holder of the Unix trademark) as Unix. HP’s HP-UX and stead of the official one distributed by AT&T.
IBM’s AIX are both descendants of the original System V
Unix and are designed to run only on their respective ven- Steve Jobs, upon leaving Apple Inc. in 1985, formed
dor’s hardware. In contrast, Sun Microsystems's Solaris NeXT Inc., a company that manufactured high-end com-
can run on multiple types of hardware, including x86 and puters running on a variation of BSD called NeXTSTEP.
Sparc servers, and PCs. Apple’s OS X, a replacement for One of these computers was used by Tim Berners-Lee as
Apple’s earlier (non-Unix) Mac OS, is a hybrid kernel- the first webserver to create the World Wide Web.
based BSD variant derived from NeXTSTEP, Mach, and Developers like Keith Bostic encouraged the project to
FreeBSD. replace any non-free code that originated with Bell Labs.
Unix interoperability was sought by establishing the Once this was done, however, AT&T sued. After two
years of legal disputes, the BSD project spawned a num-
POSIX standard. The POSIX standard can be applied to
any operating system, although it was originally created ber of free derivatives, such as NetBSD and FreeBSD
(both in 1993), and OpenBSD (from NetBSD in 1995).
for various Unix variants.

OS X Main article: OS X
BSD and its descendants
OS X (formerly “Mac OS X”) is a line of open core
Main article: Berkeley Software Distribution
A subgroup of the Unix family is the Berkeley Software

The standard user interface of OS X

graphical operating systems developed, marketed, and


sold by Apple Inc., the latest of which is pre-loaded on
all currently shipping Macintosh computers. OS X is the
The first server for the World Wide Web ran on NeXTSTEP, successor to the original Mac OS, which had been Apple’s
based on BSD. primary operating system since 1984. Unlike its prede-
Distribution family, which includes FreeBSD, NetBSD, cessor, OS X is a UNIX operating system built on tech-
and OpenBSD. These operating systems are most com- nology that had been developed at NeXT through the sec-
monly found on webservers, although they can also func- ond half of the 1980s and up until Apple purchased the
tion as a personal computer OS. The Internet owes much company in early 1997. The operating system was first
of its existence to BSD, as many of the protocols now released in 1999 as Mac OS X Server 1.0, with a desktop-
commonly used by computers to connect, send and re- oriented version (Mac OS X v10.0 “Cheetah”) following
ceive data over a network were widely implemented and in March 2001. Since then, six more distinct “client” and
refined in BSD. The World Wide Web was also first "server" editions of OS X have been released, until the
demonstrated on a number of computers running an OS two were merged in OS X 10.7 “Lion”.
based on BSD called NeXTSTEP. Prior to its merging with OS X, the server edition – OS
266 CHAPTER 49. OPERATING SYSTEM

X Server – was architecturally identical to its desktop


counterpart and usually ran on Apple’s line of Macin-
tosh server hardware. OS X Server included work group
management and administration software tools that pro-
vide simplified access to key network services, including
a mail transfer agent, a Samba server, an LDAP server, a
domain name server, and others. With Mac OS X v10.7
Lion, all server aspects of Mac OS X Server have been in-
tegrated into the client version and the product re-branded
as “OS X” (dropping “Mac” from the name). The server
tools are now offered as an application.[13]

Linux

Main articles: Linux and Linux kernel


The Linux kernel originated in 1991, as a project of Linus

Ubuntu, desktop Linux distribution

Torvalds, while a university student in Finland. He posted


information about his project on a newsgroup for com- Android, a popular mobile operating system based on a modified
version of the Linux kernel
puter students and programmers, and received support
and assistance from volunteers who succeeded in creat-
ing a complete and functional kernel. Chrome OS is an operating system based on the Linux
Linux is Unix-like, but was developed without any Unix kernel and designed by Google. It is developed out in
code, unlike BSD and its variants. Because of its open li- the open in the Chromium OS open source variant and
cense model, the Linux kernel code is available for study Google makes a proprietary variant of it (similar to the
and modification, which resulted in its use on a wide range split for the Chrome and Chromium browser). Since
of computing machinery from supercomputers to smart- Chromium OS targets computer users who spend most
watches. Although estimates suggest that Linux is used of their time on the Internet, it is mainly a web browser
on only 1.82% of all “desktop” (or laptop) PCs,[14] it with limited ability to run local applications, though it
has been widely adopted for use in servers[15] and em- has a built-in file manager and media player (in later ver-
bedded systems[16] such as cell phones. Linux has super- sions, (modified) Android apps have also been supported,
seded Unix on many platforms and is used on most super- since the browser has been made to support them). In-
computers including the top 207.[17] Many of the same stead, it relies on Internet applications (or Web apps)
computers are also on Green500 (but in different order), used in the web browser to accomplish tasks such as word
[18]
and Linux runs on the top 10. Linux is also commonly processing. Chromium OS differs from Chrome OS
used on other small energy-efficient computers, such as in that Chromium is open-source and used primarily by
smartphones and smartwatches. The Linux kernel is used developers whereas Chrome OS is the operating system
[19]
in some popular distributions, such as Red Hat, Debian, shipped out in Chromebooks.
Ubuntu, Linux Mint and Google's Android.
49.3.2 Microsoft Windows
Google Chrome OS Main articles: Chrome OS and
Chromium OS Main article: Microsoft Windows
49.4. COMPONENTS 267

Microsoft Windows is a family of proprietary operat- 49.4 Components


ing systems designed by Microsoft Corporation and pri-
marily targeted to Intel architecture based computers,
The components of an operating system all exist in order
with an estimated 88.9 percent total usage share on Web
to make the different parts of a computer work together.
connected computers.[14][20][21][22] The latest version is
All user software needs to go through the operating sys-
Windows 10. tem in order to use any of the hardware, whether it be
In 2011, Windows 7 overtook Windows XP as most com- as simple as a mouse or keyboard or as complex as an
mon version in use.[23][24][25] Internet component.
Microsoft Windows was first released in 1985, as an
operating environment running on top of MS-DOS,
which was the standard operating system shipped on
49.4.1 Kernel
most Intel architecture personal computers at the time.
Main article: Kernel (computing)
In 1995, Windows 95 was released which only used
With the aid of the firmware and device drivers, the ker-
MS-DOS as a bootstrap. For backwards compatibility,
[26][27]
Win9x could run real-mode MS-DOS and 16 bits
Windows 3.x[28] drivers. Windows ME, released in 2000,
was the last version in the Win9x family. Later versions
have all been based on the Windows NT kernel. Current Applications
client versions of Windows run on IA-32, x86-64 and 32-
bit ARM microprocessors.[29] In addition Itanium is still
supported in older server version Windows Server 2008
R2. In the past, Windows NT supported additional archi- Kernel
tectures.
Server editions of Windows are widely used. In recent
years, Microsoft has expended significant capital in an
effort to promote the use of Windows as a server op- CPU Memory Devices
erating system. However, Windows’ usage on servers
is not as widespread as on personal computers as Win-
dows competes against Linux and BSD for server market
share.[30][31] A kernel connects the application software to the hardware of a
computer.

nel provides the most basic level of control over all of the
computer’s hardware devices. It manages memory access
for programs in the RAM, it determines which programs
get access to which hardware resources, it sets up or re-
49.3.3 Other sets the CPU’s operating states for optimal operation at all
times, and it organizes the data for long-term non-volatile
storage with file systems on such media as disks, tapes,
There have been many operating systems that were signif- flash memory, etc.
icant in their day but are no longer so, such as AmigaOS;
OS/2 from IBM and Microsoft; Mac OS, the non-Unix
precursor to Apple’s Mac OS X; BeOS; XTS-300; RISC Program execution
OS; MorphOS; Haiku; BareMetal and FreeMint. Some
are still used in niche markets and continue to be de- Main article: Process (computing)
veloped as minority platforms for enthusiast commu-
nities and specialist applications. OpenVMS, formerly The operating system provides an interface between an
from DEC, is still under active development by Hewlett- application program and the computer hardware, so that
Packard. Yet other operating systems are used almost an application program can interact with the hardware
exclusively in academia, for operating systems education only by obeying rules and procedures programmed into
or to do research on operating system concepts. A typi- the operating system. The operating system is also a set
cal example of a system that fulfills both roles is MINIX, of services which simplify development and execution of
while for example Singularity is used purely for research. application programs. Executing an application program
Other operating systems have failed to win significant involves the creation of a process by the operating system
market share, but have introduced innovations that have kernel which assigns memory space and other resources,
influenced mainstream operating systems, not least Bell establishes a priority for the process in multi-tasking sys-
Labs’ Plan 9. tems, loads program binary code into memory, and ini-
268 CHAPTER 49. OPERATING SYSTEM

tiates execution of the application program which then Ring 3


interacts with the user and with hardware devices. Ring 2 Least privileged

Ring 1

Interrupts Ring 0

Main article: Interrupt Kernel

Most privileged
Interrupts are central to operating systems, as they pro- Device drivers
vide an efficient way for the operating system to inter-
Device drivers
act with and react to its environment. The alternative –
having the operating system “watch” the various sources Applications

of input for events (polling) that require action – can be


found in older systems with very small stacks (50 or 60 Privilege rings for the x86 available in protected mode. Operating
bytes) but is unusual in modern systems with large stacks. systems determine which processes run in each mode.
Interrupt-based programming is directly supported by
most modern CPUs. Interrupts provide a computer with
a way of automatically saving local register contexts, and mode is used by the operating system’s kernel for low level
running specific code in response to events. Even very tasks that need unrestricted access to hardware, such as
basic computers support hardware interrupts, and allow controlling how memory is written and erased, and com-
the programmer to specify code which may be run when munication with devices like graphics cards. Protected
that event takes place. mode, in contrast, is used for almost everything else. Ap-
plications operate within protected mode, and can only
When an interrupt is received, the computer’s hardware use hardware by communicating with the kernel, which
automatically suspends whatever program is currently controls everything in supervisor mode. CPUs might
running, saves its status, and runs computer code previ- have other modes similar to protected mode as well, such
ously associated with the interrupt; this is analogous to as the virtual modes in order to emulate older processor
placing a bookmark in a book in response to a phone call. types, such as 16-bit processors on a 32-bit one, or 32-bit
In modern operating systems, interrupts are handled by processors on a 64-bit one.
the operating system’s kernel. Interrupts may come from
either the computer’s hardware or the running program. When a computer first starts up, it is automatically run-
ning in supervisor mode. The first few programs to run
When a hardware device triggers an interrupt, the oper- on the computer, being the BIOS or EFI, bootloader, and
ating system’s kernel decides how to deal with this event, the operating system have unlimited access to hardware
generally by running some processing code. The amount – and this is required because, by definition, initializing
of code being run depends on the priority of the interrupt a protected environment can only be done outside of one.
(for example: a person usually responds to a smoke de- However, when the operating system passes control to an-
tector alarm before answering the phone). The processing other program, it can place the CPU into protected mode.
of hardware interrupts is a task that is usually delegated
to software called a device driver, which may be part of In protected mode, programs may have access to a more
the operating system’s kernel, part of another program, limited set of the CPU’s instructions. A user program
or both. Device drivers may then relay information to a may leave protected mode only by triggering an interrupt,
running program by various means. causing control to be passed back to the kernel. In this
way the operating system can maintain exclusive control
A program may also trigger an interrupt to the operat- over things like access to hardware and memory.
ing system. If a program wishes to access hardware, for
example, it may interrupt the operating system’s kernel, The term “protected mode resource” generally refers to
which causes control to be passed back to the kernel. The one or more CPU registers, which contain information
kernel then processes the request. If a program wishes that the running program isn't allowed to alter. Attempts
additional resources (or wishes to shed resources) such as to alter these resources generally causes a switch to su-
memory, it triggers an interrupt to get the kernel’s atten- pervisor mode, where the operating system can deal with
tion. the illegal operation the program was attempting (for ex-
ample, by killing the program).

Modes
Memory management
Main articles: Protected mode and Supervisor mode
Modern CPUs support multiple modes of operation. Main article: Memory management
CPUs with this capability use at least two modes:
protected mode and supervisor mode. The supervisor Among other things, a multiprogramming operating sys-
49.4. COMPONENTS 269

tem kernel must be responsible for managing all system


memory which is currently in use by programs. This en- Virtual memory Physical
sures that a program does not interfere with memory al- (per process) memory
ready in use by another program. Since programs time
share, each program must have independent access to
memory.
Cooperative memory management, used by many early
operating systems, assumes that all programs make vol-
untary use of the kernel's memory manager, and do not Another
exceed their allocated memory. This system of memory
process's
management is almost never seen any more, since pro-
grams often contain bugs which can cause them to exceed memory
their allocated memory. If a program fails, it may cause
memory used by one or more other programs to be af-
fected or overwritten. Malicious programs or viruses may
purposefully alter another program’s memory, or may af-
fect the operation of the operating system itself. With
cooperative memory management, it takes only one mis-
behaved program to crash the system.
Memory protection enables the kernel to limit a process’ RAM
access to the computer’s memory. Various methods of
memory protection exist, including memory segmenta-
tion and paging. All methods require some level of hard-
ware support (such as the 80286 MMU), which doesn't
exist in all computers.
In both segmentation and paging, certain protected mode Disk
registers specify to the CPU what memory address it
should allow a running program to access. Attempts to Many operating systems can “trick” programs into using memory
access other addresses trigger an interrupt which cause scattered around the hard disk and RAM as if it is one continuous
the CPU to re-enter supervisor mode, placing the kernel chunk of memory, called virtual memory.
in charge. This is called a segmentation violation or Seg-
V for short, and since it is both difficult to assign a mean-
ingful result to such an operation, and because it is usually memory. (See section on memory management.) Under
a sign of a misbehaving program, the kernel generally re- UNIX this kind of interrupt is referred to as a page fault.
sorts to terminating the offending program, and reports
When the kernel detects a page fault it generally adjusts
the error.
the virtual memory range of the program which triggered
Windows versions 3.1 through ME had some level of it, granting it access to the memory requested. This gives
memory protection, but programs could easily circum- the kernel discretionary power over where a particular ap-
vent the need to use it. A general protection fault would plication’s memory is stored, or even whether or not it has
be produced, indicating a segmentation violation had oc- actually been allocated yet.
curred; however, the system would often crash anyway.
In modern operating systems, memory which is accessed
less frequently can be temporarily stored on disk or other
media to make that space available for use by other pro-
Virtual memory grams. This is called swapping, as an area of memory can
be used by multiple programs, and what that memory area
Main article: Virtual memory contains can be swapped or exchanged on demand.
Further information: Page fault “Virtual memory” provides the programmer or the user
The use of virtual memory addressing (such as paging with the perception that there is a much larger amount of
or segmentation) means that the kernel can choose what RAM in the computer than is really there.[32]
memory each program may use at any given time, allow-
ing the operating system to use the same memory loca-
tions for multiple tasks. Multitasking
If a program tries to access memory that isn't in its current
range of accessible memory, but nonetheless has been al- Main articles: Computer multitasking and Process
located to it, the kernel is interrupted in the same way management (computing)
as it would if the program were to exceed its allocated Further information: Context switch, Preemptive multi-
270 CHAPTER 49. OPERATING SYSTEM

tasking, and Cooperative multitasking

Multitasking refers to the running of multiple indepen-


dent computer programs on the same computer; giving
the appearance that it is performing the tasks at the same
time. Since most computers can do at most one or two
things at one time, this is generally done via time-sharing,
which means that each program uses a share of the com-
puter’s time to execute.
An operating system kernel contains a scheduling pro-
gram which determines how much time each process
spends executing, and in which order execution control
should be passed to programs. Control is passed to a pro-
File systems allow users and programs to organize and sort files
cess by the kernel, which allows the program access to the on a computer, often through the use of directories (or “folders”)
CPU and memory. Later, control is returned to the ker-
nel through some mechanism, so that another program
may be allowed to use the CPU. This so-called passing operating systems. Computers store data on disks using
of control between the kernel and applications is called a files, which are structured in specific ways in order to al-
context switch. low for faster access, higher reliability, and to make bet-
An early model which governed the allocation of time ter use of the drive’s available space. The specific way in
to programs was called cooperative multitasking. In this which files are stored on a disk is called a file system, and
model, when control is passed to a program by the ker- enables files to have names and attributes. It also allows
nel, it may execute for as long as it wants before explicitly them to be stored in a hierarchy of directories or folders
returning control to the kernel. This means that a mali- arranged in a directory tree.
cious or malfunctioning program may not only prevent Early operating systems generally supported a single type
any other programs from using the CPU, but it can hang of disk drive and only one kind of file system. Early file
the entire system if it enters an infinite loop. systems were limited in their capacity, speed, and in the
Modern operating systems extend the concepts of appli- kinds of file names and directory structures they could
cation preemption to device drivers and kernel code, so use. These limitations often reflected limitations in the
that the operating system has preemptive control over in- operating systems they were designed for, making it very
ternal run-times as well. difficult for an operating system to support more than one
file system.
The philosophy governing preemptive multitasking is that
of ensuring that all programs are given regular time on While many simpler operating systems support a limited
the CPU. This implies that all programs must be limited range of options for accessing storage systems, operat-
in how much time they are allowed to spend on the CPU ing systems like UNIX and Linux support a technology
without being interrupted. To accomplish this, modern known as a virtual file system or VFS. An operating sys-
operating system kernels make use of a timed interrupt. tem such as UNIX supports a wide array of storage de-
A protected mode timer is set by the kernel which trig- vices, regardless of their design or file systems, allowing
gers a return to supervisor mode after the specified time them to be accessed through a common application pro-
has elapsed. (See above sections on Interrupts and Dual gramming interface (API). This makes it unnecessary for
Mode Operation.) programs to have any knowledge about the device they
are accessing. A VFS allows the operating system to pro-
On many single user operating systems cooperative mul- vide programs with access to an unlimited number of de-
titasking is perfectly adequate, as home computers gen- vices with an infinite variety of file systems installed on
erally run a small number of well tested programs. The them, through the use of specific device drivers and file
AmigaOS is an exception, having preemptive multitask- system drivers.
ing from its very first version. Windows NT was the first
version of Microsoft Windows which enforced preemp- A connected storage device, such as a hard drive, is ac-
tive multitasking, but it didn't reach the home user mar- cessed through a device driver. The device driver under-
ket until Windows XP (since Windows NT was targeted stands the specific language of the drive and is able to
at professionals). translate that language into a standard language used by
the operating system to access all disk drives. On UNIX,
this is the language of block devices.
Disk access and file systems When the kernel has an appropriate device driver in place,
it can then access the contents of the disk drive in raw for-
Main article: Virtual file system mat, which may contain one or more file systems. A file
Access to data stored on disks is a central feature of all system driver is used to translate the commands used to
49.4. COMPONENTS 271

access each specific file system into a standard set of com- site interrupt handling necessary for any necessary asyn-
mands that the operating system can use to talk to all file chronous time-dependent hardware interfacing needs.
systems. Programs can then deal with these file systems The key design goal of device drivers is abstraction. Ev-
on the basis of filenames, and directories/folders, con- ery model of hardware (even within the same class of
tained within a hierarchical structure. They can create, device) is different. Newer models also are released by
delete, open, and close files, as well as gather various in- manufacturers that provide more reliable or better perfor-
formation about them, including access permissions, size, mance and these newer models are often controlled dif-
free space, and creation and modification dates. ferently. Computers and their operating systems cannot
Various differences between file systems make support- be expected to know how to control every device, both
ing all file systems difficult. Allowed characters in file now and in the future. To solve this problem, operat-
names, case sensitivity, and the presence of various kinds ing systems essentially dictate how every type of device
of file attributes makes the implementation of a single should be controlled. The function of the device driver is
interface for every file system a daunting task. Operat- then to translate these operating system mandated func-
ing systems tend to recommend using (and so support tion calls into device specific calls. In theory a new de-
natively) file systems specifically designed for them; for vice, which is controlled in a new manner, should function
example, NTFS in Windows and ext3 and ReiserFS in correctly if a suitable driver is available. This new driver
Linux. However, in practice, third party drivers are usu- ensures that the device appears to operate as usual from
ally available to give support for the most widely used the operating system’s point of view.
file systems in most general-purpose operating systems Under versions of Windows before Vista and versions of
(for example, NTFS is available in Linux through NTFS- Linux before 2.6, all driver execution was co-operative,
3g, and ext2/3 and ReiserFS are available in Windows meaning that if a driver entered an infinite loop it would
through third-party software). freeze the system. More recent revisions of these oper-
Support for file systems is highly varied among modern ating systems incorporate kernel preemption, where the
operating systems, although there are several common kernel interrupts the driver to give it tasks, and then sep-
file systems which almost all operating systems include arates itself from the process until it receives a response
support and drivers for. Operating systems vary on file from the device driver, or gives it more tasks to do.
system support and on the disk formats they may be in-
stalled on. Under Windows, each file system is usually
limited in application to certain media; for example, CDs 49.4.2 Networking
must use ISO 9660 or UDF, and as of Windows Vista,
NTFS is the only file system which the operating system Main article: Computer network
can be installed on. It is possible to install Linux onto
many types of file systems. Unlike other operating sys- Currently most operating systems support a variety of net-
tems, Linux and UNIX allow any file system to be used working protocols, hardware, and applications for using
regardless of the media it is stored in, whether it is a hard them. This means that computers running dissimilar op-
drive, a disc (CD, DVD...), a USB flash drive, or even erating systems can participate in a common network for
contained within a file located on another file system. sharing resources such as computing, files, printers, and
scanners using either wired or wireless connections. Net-
works can essentially allow a computer’s operating system
Device drivers to access the resources of a remote computer to support
the same functions as it could if those resources were con-
Main article: Device driver nected directly to the local computer. This includes ev-
erything from simple communication, to using networked
A device driver is a specific type of computer software file systems or even sharing another computer’s graphics
developed to allow interaction with hardware devices. or sound hardware. Some network services allow the re-
Typically this constitutes an interface for communicat- sources of a computer to be accessed transparently, such
ing with the device, through the specific computer bus as SSH which allows networked users direct access to a
or communications subsystem that the hardware is con- computer’s command line interface.
nected to, providing commands to and/or receiving data Client/server networking allows a program on a com-
from the device, and on the other end, the requisite inter- puter, called a client, to connect via a network to another
faces to the operating system and software applications. computer, called a server. Servers offer (or host) various
It is a specialized hardware-dependent computer program services to other network computers and users. These
which is also operating system specific that enables an- services are usually provided through ports or numbered
other program, typically an operating system or applica- access points beyond the server’s network address. Each
tions software package or computer program running un- port number is usually associated with a maximum of one
der the operating system kernel, to interact transparently running program, which is responsible for handling re-
with a hardware device, and usually provides the requi- quests to that port. A daemon, being a user program, can
272 CHAPTER 49. OPERATING SYSTEM

in turn access the local hardware resources of that com- held on computers, both of a commercial and military na-
puter by passing requests to the operating system kernel. ture. The United States Government Department of De-
Many operating systems support one or more vendor- fense (DoD) created the Trusted Computer System Evalu-
specific or open networking protocols as well, for ex- ation Criteria (TCSEC) which is a standard that sets ba-
ample, SNA on IBM systems, DECnet on systems from sic requirements for assessing the effectiveness of secu-
Digital Equipment Corporation, and Microsoft-specific rity. This became of vital importance to operating system
protocols (SMB) on Windows. Specific protocols for spe- makers, because the TCSEC was used to evaluate, clas-
cific tasks may also be supported such as NFS for file sify and select trusted operating systems being considered
for the processing, storage and retrieval of sensitive or
access. Protocols like ESound, or esd can be easily ex-
tended over the network to provide sound from local ap- classified information.
plications, on a remote system’s sound hardware. Network services include offerings such as file sharing,
print services, email, web sites, and file transfer proto-
cols (FTP), most of which can have compromised secu-
49.4.3 Security rity. At the front line of security are hardware devices
known as firewalls or intrusion detection/prevention sys-
tems. At the operating system level, there are a number
Main article: Computer security
of software firewalls available, as well as intrusion detec-
tion/prevention systems. Most modern operating systems
A computer being secure depends on a number of tech- include a software firewall, which is enabled by default. A
nologies working properly. A modern operating system software firewall can be configured to allow or deny net-
provides access to a number of resources, which are avail- work traffic to or from a service or application running
able to software running on the system, and to external on the operating system. Therefore, one can install and
devices like networks via the kernel. be running an insecure service, such as Telnet or FTP,
The operating system must be capable of distinguish- and not have to be threatened by a security breach be-
ing between requests which should be allowed to be pro- cause the firewall would deny all traffic trying to connect
cessed, and others which should not be processed. While to the service on that port.
some systems may simply distinguish between “privi- An alternative strategy, and the only sandbox strategy
leged” and “non-privileged”, systems commonly have a available in systems that do not meet the Popek and Gold-
form of requester identity, such as a user name. To es- berg virtualization requirements, is where the operating
tablish identity there may be a process of authentication. system is not running user programs as native code, but
Often a username must be quoted, and each username instead either emulates a processor or provides a host for
may have a password. Other methods of authentication, a p-code based system such as Java.
such as magnetic cards or biometric data, might be used
Internal security is especially relevant for multi-user sys-
instead. In some cases, especially connections from the
tems; it allows each user of the system to have private files
network, resources may be accessed with no authentica-
that the other users cannot tamper with or read. Internal
tion at all (such as reading files over a network share).
security is also vital if auditing is to be of any use, since
Also covered by the concept of requester identity is au-
a program can potentially bypass the operating system,
thorization; the particular services and resources accessi-
inclusive of bypassing auditing.
ble by the requester once logged into a system are tied to
either the requester’s user account or to the variously con-
figured groups of users to which the requester belongs.
49.4.4 User interface
In addition to the allow or disallow model of security, a
system with a high level of security also offers auditing Main article: Operating system user interface
options. These would allow tracking of requests for ac- Every computer that is to be operated by an individual
cess to resources (such as, “who has been reading this requires a user interface. The user interface is usually re-
file?"). Internal security, or security from an already run- ferred to as a shell and is essential if human interaction
ning program is only possible if all possibly harmful re- is to be supported. The user interface views the directory
quests must be carried out through interrupts to the op- structure and requests services from the operating system
erating system kernel. If programs can directly access that will acquire data from input hardware devices, such
hardware and resources, they cannot be secured. as a keyboard, mouse or credit card reader, and requests
External security involves a request from outside the com- operating system services to display prompts, status mes-
puter, such as a login at a connected console or some sages and such on output hardware devices, such as a
kind of network connection. External requests are of- video monitor or printer. The two most common forms of
ten passed through device drivers to the operating sys- a user interface have historically been the command-line
tem’s kernel, where they can be passed onto applications, interface, where computer commands are typed out line-
or carried out directly. Security of operating systems by-line, and the graphical user interface, where a visual
has long been a concern because of highly sensitive data environment (most commonly a WIMP) is present.
49.5. REAL-TIME OPERATING SYSTEMS 273

Windows 9x had very little distinction between the inter-


face and the kernel.
Many computer operating systems allow the user to install
or create any user interface they desire. The X Window
System in conjunction with GNOME or KDE Plasma
Desktop is a commonly found setup on most Unix and
Unix-like (BSD, Linux, Solaris) systems. A number of
Windows shell replacements have been released for Mi-
crosoft Windows, which offer alternatives to the included
Windows shell, but the shell itself cannot be separated
from Windows.
Numerous Unix-based GUIs have existed over time, most
derived from X11. Competition among the various ven-
dors of Unix (HP, IBM, Sun) led to much fragmentation,
though an effort to standardize in the 1990s to COSE
A screenshot of the Bash command line. Each command is typed and CDE failed for various reasons, and were eventu-
out after the 'prompt', and then its output appears below, working ally eclipsed by the widespread adoption of GNOME and
its way down the screen. The current command prompt is at the K Desktop Environment. Prior to free software-based
bottom. toolkits and desktop environments, Motif was the preva-
lent toolkit/desktop combination (and was the basis upon
Graphical user interfaces which CDE was developed).
Graphical user interfaces evolve over time. For exam-
ple, Windows has modified its user interface almost every
time a new major version of Windows is released, and the
Mac OS GUI changed dramatically with the introduction
of Mac OS X in 1999.[33]

49.5 Real-time operating systems

Main article: Real-time operating system


A screenshot of the KDE Plasma Desktop graphical user inter-
face. Programs take the form of images on the screen, and the
A real-time operating system (RTOS) is an operating sys-
files, folders (directories), and applications take the form of icons
and symbols. A mouse is used to navigate the computer. tem intended for applications with fixed deadlines (real-
time computing). Such applications include some small
Most of the modern computer systems support graphical embedded systems, automobile engine controllers, indus-
user interfaces (GUI), and often include them. In some trial robots, spacecraft, industrial control, and some large-
computer systems, such as the original implementation of scale computing systems.
Mac OS, the GUI is integrated into the kernel.
An early example of a large-scale real-time operating sys-
While technically a graphical user interface is not an op- tem was Transaction Processing Facility developed by
erating system service, incorporating support for one into American Airlines and IBM for the Sabre Airline Reser-
the operating system kernel can allow the GUI to be more vations System.
responsive by reducing the number of context switches re-
quired for the GUI to perform its output functions. Other Embedded systems that have fixed deadlines use a real-
operating systems are modular, separating the graphics time operating system such as VxWorks, PikeOS, eCos,
subsystem from the kernel and the Operating System. In QNX, MontaVista Linux and RTLinux. Windows CE is
the 1980s UNIX, VMS and many others had operating a real-time operating system that shares similar APIs to
systems that were built this way. Linux and Mac OS X are desktop Windows but shares none of desktop Windows’
also built this way. Modern releases of Microsoft Win- codebase. Symbian OS also has an RTOS kernel (EKA2)
dows such as Windows Vista implement a graphics sub- starting with version 8.0b.
system that is mostly in user-space; however the graphics Some embedded systems use operating systems such as
drawing routines of versions between Windows NT 4.0 Palm OS, BSD, and Linux, although such operating sys-
and Windows Server 2003 exist mostly in kernel space. tems do not support real-time computing.
274 CHAPTER 49. OPERATING SYSTEM

49.6 Operating system develop- Source: Gartner

ment as a hobby In 2014, Android was first (currently not replicated by


others, in a single year) operating system ever to ship on
a billion devices, becoming the most popular operating
See also: Hobbyist operating system development
system by installed base.

Operating system development is one of the most com-


plicated activities in which a computing hobbyist may en- 49.9 See also
gage. A hobby operating system may be classified as one
whose code has not been directly derived from an existing
operating system, and has few users and active develop- • Antivirus software
ers.[34] • Comparison of operating systems
In some cases, hobby development is in support of a
• Hypervisor
"homebrew" computing device, for example, a simple
single-board computer powered by a 6502 microproces- • Interruptible operating system
sor. Or, development may be for an architecture already
in widespread use. Operating system development may • List of important publications in operating systems
come from entirely new concepts, or may commence by
modeling an existing operating system. In either case, the • List of operating systems
hobbyist is his/her own developer, or may interact with a • Live CD
small and sometimes unstructured group of individuals
who have like interests. • Glossary of operating systems terms
Examples of a hobby operating system include ReactOS • Microcontroller
and Syllable.
• Mobile device

• Mobile operating system


49.7 Diversity of operating systems
• Network operating system
and portability
• Object-oriented operating system
Application software is generally written for use on a spe- • Operating System Projects
cific operating system, and sometimes even for specific
hardware. When porting the application to run on another • System Commander
OS, the functionality required by that application may be
implemented differently by that OS (the names of func- • System image
tions, meaning of arguments, etc.) requiring the applica- • Timeline of operating systems
tion to be adapted, changed, or otherwise maintained.
Unix was the first operating system not written in assem- • Usage share of operating systems
bly language, making it very portable to systems different
from its native PDP-11.[35]
This cost in supporting operating systems diversity can be
49.10 References
avoided by instead writing applications against software
[1] Stallings (2005). Operating Systems, Internals and Design
platforms like Java or Qt. These abstractions have already
Principles. Pearson: Prentice Hall. p. 6.
borne the cost of adaptation to specific operating systems
and their system libraries. [2] Dhotre, I.A. (2009). Operating Systems. Technical Publi-
cations. p. 1.
Another approach is for operating system vendors to
adopt standards. For example, POSIX and OS abstrac- [3] http://gs.statcounter.com/
tion layers provide commonalities that reduce porting #desktop-os-ww-monthly-201507-201607-bar
costs.
[4] http://gs.statcounter.com/#mobile_
os-ww-monthly-201507-201607-bar

49.8 Market share [5] Lorch, Jacob R., and Alan Jay Smith. “Reducing pro-
cessor power consumption by improving processor time
management in a single-user operating system.” Proceed-
Main article: Usage share of operating systems ings of the 2nd annual international conference on Mobile
computing and networking. ACM, 1996.
49.11. FURTHER READING 275

[6] Mishra, B.; Singh, N.; Singh, R. (2014). “Master-slave [27] “Using NDIS 2 PCMCIA Network Card Drivers in Win-
group based model for co-ordinator selection, an im- dows 95”. Support.microsoft.com. Retrieved 2012-08-
provement of bully algorithm”. International Confer- 07.
ence on Parallel, Distributed and Grid Computing (PDGC).
pp. 457–460. doi:10.1109/PDGC.2014.7030789. ISBN [28] “INFO: Windows 95 Multimedia Wave Device Drivers
978-1-4799-7682-9. Must be 16 bit”. Support.microsoft.com. Retrieved 2012-
08-07.
[7] Gagne, Silberschatz Galvin (2012). Operating Systems
Concepts. New York: Wiley. p. 716. ISBN 978- [29] Arthur, Charles. “Windows 8 will run on ARM chips -
1118063330. but third-party apps will need rewrite”. The Guardian.

[8] Hansen, Per Brinch, ed. (2001). Classic Operating Sys- [30] “Operating System Share by Groups for Sites in All Lo-
tems. Springer. pp. 4–7. ISBN 0-387-95113-X. cations January 2009”.

[9] Lavington, Simon (1998). A History of Manchester Com- [31] “Behind the IDC data: Windows still No. 1 in server op-
puters (2nd ed.). Swindon: The British Computer Society. erating systems”. ZDNet. 2010-02-26.
pp. 50–52. ISBN 978-1-902505-01-5.
[32] Stallings, William (2008). Computer Organization & Ar-
[10] Brinch Hansen, Per (2000). Classic Operating Systems: chitecture. New Delhi: Prentice-Hall of India Private
From Batch Processing to Distributed Systems. Springer- Limited. p. 267. ISBN 978-81-203-2962-1.
Verlag.
[33] Poisson, Ken. “Chronology of Personal Computer Soft-
[11] “Intel® Microprocessor Quick Reference Guide - Year”. ware”. Retrieved on 2008-05-07. Last checked on 2009-
www.intel.com. Retrieved 2016-04-24. 03-30.
[12] Ritchie, Dennis. “Unix Manual, first edition”. Lucent [34] “My OS is less hobby than yours”. Osnews. 21 December
Technologies. Retrieved 22 November 2012. 2009. Retrieved 21 December 2009.
[13] “OS X Mountain Lion – Move your Mac even further [35] “The History of Unix”. BYTE. August 1983. p. 188. Re-
ahead”. Apple. Retrieved 2012-08-07. trieved 31 January 2015.
[14] “Top 5 Operating Systems from January to April 2011”.
[36] Whitney, Lance (7 January 2014). “Android device ship-
StatCounter. October 2009. Retrieved 5 November 2009.
ments to top 1 billion this year -- Gartner”.
[15] “IDC report into Server market share”. Idc.com. Re-
trieved 2012-08-07.

[16] LinuxDevices Staff (23 April 2008). “Linux still top em-
49.11 Further reading
bedded OS”. LinuxGizmos.com. Retrieved 5 April 2016.
• Auslander, Marc A.; Larkin, David C.; Scherr, Al-
[17] “Sublist Generator”. Top500.org. Retrieved November lan L. (1981). “The evolution of the MVS Operating
2015. Check date values in: |access-date= (help) System” (PDF). IBM J. Research & Development.
[18] “Chromium OS”. Chromium.org.
• Deitel, Harvey M.; Deitel, Paul; Choffnes, David.
[19] “Chromium OS FAQ”. The Chromium Projects. Re- Operating Systems. Pearson/Prentice Hall. ISBN
trieved 28 February 2014. 978-0-13-092641-8.

[20] “Global Web Stats”. Net Market Share, Net Applications. • Bic, Lubomur F.; Shaw, Alan C. (2003). Operating
May 2011. Retrieved 2011-05-07. Systems. Pearson: Prentice Hall.
[21] “Global Web Stats”. W3Counter, Awio Web Services. • Silberschatz, Avi; Galvin, Peter; Gagne, Greg
September 2009. Retrieved 2009-10-24.
(2008). Operating Systems Concepts. John Wiley &
[22] “Operating System Market Share”. Net Applications. Oc- Sons. ISBN 0-470-12872-0.
tober 2009. Retrieved 5 November 2009.
• O'Brien, J.A., & Marakas, G.M.(2011). Manage-
[23] “w3schools.com OS Platform Statistics”. Retrieved 30 ment Information Systems. 10e. McGraw-Hill Ir-
October 2011. win
[24] “Stats Count Global Stats Top Five Operating Systems”. • Leva, Alberto; Maggio, Martina; Papadopoulos,
Retrieved 30 October 2011. Alessandro Vittorio; Terraneo, Federico (2013).
[25] “Global statistics at w3counter.com”. Retrieved 23 Jan- Control-based Operating System Design. IET. ISBN
uary 2012. 978-1-84919-609-3.

[26] “Troubleshooting MS-DOS Compatibility Mode on Hard • Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea
Disks”. Support.microsoft.com. Retrieved 2012-08-07. (2015). Operating Systems: Three Easy Pieces.
276 CHAPTER 49. OPERATING SYSTEM

49.12 External links


• Operating Systems at DMOZ

• Multics History and the history of operating systems


Chapter 50

OSI model

The Open Systems Interconnection model (OSI These two international standards bodies each developed
model) is a conceptual model that characterizes and stan- a document that defined similar networking models.
dardizes the communication functions of a telecommuni- In 1983, these two documents were merged to form a
cation or computing system without regard to their un-
standard called The Basic Reference Model for Open
derlying internal structure and technology. Its goal is theSystems Interconnection. The standard is usually re-
interoperability of diverse communication systems with
ferred to as the Open Systems Interconnection Refer-
standard protocols. The model partitions a communica- ence Model, the OSI Reference Model, or simply the OSI
tion system into abstraction layers. The original version
model. It was published in 1984 by both the ISO, as stan-
of the model defined seven layers. dard ISO 7498, and the renamed CCITT (now called the
A layer serves the layer above it and is served by the Telecommunications Standardization Sector of the Inter-
layer below it. For example, a layer that provides error- national Telecommunication Union or ITU-T) as stan-
free communications across a network provides the path dard X.200.
needed by applications above it, while it calls the next OSI had two major components, an abstract model of net-
lower layer to send and receive packets that comprise the working, called the Basic Reference Model or seven-layer
contents of that path. Two instances at the same layer are model, and a set of specific protocols.
visualized as connected by a horizontal connection in that
layer. The concept of a seven-layer model was provided by
the work of Charles Bachman at Honeywell Informa-
The model is a product of the Open Systems Inter- tion Services. Various aspects of OSI design evolved
connection project at the International Organization for
from experiences with the ARPANET, NPLNET, EIN,
Standardization (ISO), maintained by the identification CYCLADES network and the work in IFIP WG6.1. The
ISO/IEC 7498-1.
new design was documented in ISO 7498 and its various
addenda. In this model, a networking system was divided
into layers. Within each layer, one or more entities im-
plement its functionality. Each entity interacted directly
only with the layer immediately beneath it, and provided
facilities for use by the layer above it.
Protocols enable an entity in one host to interact with a
corresponding entity at the same layer in another host.
Service definitions abstractly described the functionality
provided to an (N)-layer by an (N-1) layer, where N was
one of the seven layers of protocols operating in the local
host.
Communication in the OSI-Model (example with layers 3 to 5) The OSI standards documents are available from the ITU-
T as the X.200-series of recommendations.[1] Some of
the protocol specifications were also available as part of
the ITU-T X series. The equivalent ISO and ISO/IEC
50.1 History standards for the OSI model were available from ISO, but
only some of them without fees.[2]
In the late 1970s, one project was administered by the In-
ternational Organization for Standardization (ISO), while
another was undertaken by the International Telegraph
and Telephone Consultative Committee, or CCITT (the
abbreviation is from the French version of the name).

277
278 CHAPTER 50. OSI MODEL

50.2 Description of OSI layers The physical layer of Parallel SCSI operates in this layer,
as do the physical layers of Ethernet and other local-area
The recommendation X.200 describes seven layers, la- networks, such as Token Ring, FDDI, ITU-T G.hn, and
beled 1 to 7. Layer 1 is the lowest layer in this model. IEEE 802.11 (Wi-Fi), as well as personal area networks
such as Bluetooth and IEEE 802.15.4.
At each level N, two entities at the communicating de-
vices (layer N peers) exchange protocol data units (PDUs) The physical layer is the layer of low-level networking
by means of a layer N protocol. Each PDU contains a equipment, such as some hubs, cabling, and repeaters.
payload, called the service data unit (SDU), along with The physical layer is never concerned with protocols or
protocol-related headers and/or footers. other such higher-layer items. Examples of hardware in
this layer are network adapters, repeaters, network hubs,
Data processing by two communicating OSI-compatible modems, and fiber media converters.
devices is done as such:

1. The data to be transmitted is composed at the top- 50.2.2 Layer 2: Data Link Layer
most layer of the transmitting device (layer N) into
a protocol data unit (PDU). The data link layer provides node-to-node data transfer—
a link between two directly connected nodes. It detects
2. The PDU is passed to layer N-1, where it is known and possibly corrects errors that may occur in the physi-
as the service data unit (SDU). cal layer. It, among other things, defines the protocol to
3. At layer N-1 the SDU is concatenated with a header, establish and terminate a connection between two phys-
a footer, or both, producing a layer N-1 PDU. It is ically connected devices. It also defines the protocol for
then passed to layer N-2. flow control between them.
[6]
4. The process continues until reaching the lowermost IEEE 802 divides the data link layer into two sublayers:
level, from which the data is transmitted to the re-
ceiving device. • Media Access Control (MAC) layer - responsible for
controlling how devices in a network gain access to
5. At the receiving device the data is passed from medium and permission to transmit it.
the lowest to the highest layer as a series of SDUs
while being successively stripped from each layer’s • Logical Link Control (LLC) layer - responsible for
header and/or footer, until reaching the topmost identifying Network layer protocols and then encap-
layer, where the last of the data is consumed. sulating them and controls error checking and frame
synchronization.
Some orthogonal aspects, such as management and
security, involve all of the layers (See ITU-T X.800 The MAC and LLC layers of IEEE 802 networks such
Recommendation[5] ). These services are aimed at im- as 802.3 Ethernet, 802.11 Wi-Fi, and 802.15.4 ZigBee,
proving the CIA triad - confidentiality, integrity, and operate at the data link layer.
availability - of the transmitted data. In practice, the
The Point-to-Point Protocol (PPP) is a data link layer that
availability of a communication service is determined
can operate over several different physical layers, such as
by the interaction between network design and network
synchronous and asynchronous serial lines.
management protocols. Appropriate choices for both of
these are needed to protect against denial of service. The ITU-T G.hn standard, which provides high-speed
local area networking over existing wires (power lines,
phone lines and coaxial cables), includes a complete data
50.2.1 Layer 1: Physical Layer link layer that provides both error correction and flow
control by means of a selective-repeat sliding-window
The physical layer defines the electrical and physical spec- protocol.
ifications of the data connection. It defines the rela-
tionship between a device and a physical transmission
medium (e.g., a copper or fiber optical cable, radio fre- 50.2.3 Layer 3: Network Layer
quency). This includes the layout of pins, voltages, line
impedance, cable specifications, signal timing and simi- The network layer provides the functional and procedu-
lar characteristics for connected devices and frequency (5 ral means of transferring variable length data sequences
GHz or 2.4 GHz etc.) for wireless devices. It is respon- (called datagrams) from one node to another connected
sible for transmission and reception of unstructured raw to the same network. It translates logical network address
data in a physical medium. It may define transmission into physical machine address. A network is a medium
mode as simplex, half duplex, and full duplex. It defines to which many nodes can be connected, on which every
the network topology as bus, mesh, or ring being some of node has an address and which permits nodes connected
the most common. to it to transfer messages to other nodes connected to it by
50.2. DESCRIPTION OF OSI LAYERS 279

merely providing the content of a message and the address and classification of mail and parcels sent. Do remember,
of the destination node and letting the network find the however, that a post office manages the outer envelope of
way to deliver the message to the destination node, possi-mail. Higher layers may have the equivalent of double
bly routing it through intermediate nodes. If the message envelopes, such as cryptographic presentation services
is too large to be transmitted from one node to another onthat can be read by the addressee only. Roughly speak-
the data link layer between those nodes, the network may ing, tunneling protocols operate at the transport layer,
implement message delivery by splitting the message into such as carrying non-IP protocols such as IBM's SNA or
several fragments at one node, sending the fragments in- Novell's IPX over an IP network, or end-to-end encryp-
dependently, and reassembling the fragments at another tion with IPsec. While Generic Routing Encapsulation
node. It may, but need not, report delivery errors. (GRE) might seem to be a network-layer protocol, if the
encapsulation of the payload takes place only at endpoint,
Message delivery at the network layer is not necessarily
guaranteed to be reliable; a network layer protocol may GRE becomes closer to a transport protocol that uses IP
headers but contains complete frames or packets to de-
provide reliable message delivery, but it need not do so.
liver to an endpoint. L2TP carries PPP frames inside
A number of layer-management protocols, a function de- transport packet.
fined in the management annex, ISO 7498/4, belong to
the network layer. These include routing protocols, mul- Although not developed under the OSI Reference Model
ticast group management, network-layer information and and not strictly conforming to the OSI definition of the
error, and network-layer address assignment. It is the transport layer, the Transmission Control Protocol (TCP)
function of the payload that makes these belong to the and the User Datagram Protocol (UDP) of the Internet
network layer, not the protocol that carries them.[7] Protocol Suite are commonly categorized as layer-4 pro-
tocols within OSI.

50.2.4 Layer 4: Transport Layer


50.2.5 Layer 5: Session Layer
The transport layer provides the functional and procedu-
ral means of transferring variable-length data sequences The session layer controls the dialogues (connections) be-
from a source to a destination host via one or more net- tween computers. It establishes, manages and terminates
works, while maintaining the quality of service functions. the connections between the local and remote application.
It provides for full-duplex, half-duplex, or simplex oper-
An example of a transport-layer protocol in the standard ation, and establishes checkpointing, adjournment, ter-
Internet stack is Transmission Control Protocol (TCP), mination, and restart procedures. The OSI model made
usually built on top of the Internet Protocol (IP). this layer responsible for graceful close of sessions, which
The transport layer controls the reliability of a given link is a property of the Transmission Control Protocol, and
through flow control, segmentation/desegmentation, and also for session checkpointing and recovery, which is not
error control. Some protocols are state- and connection- usually used in the Internet Protocol Suite. The session
oriented. This means that the transport layer can keep layer is commonly implemented explicitly in application
track of the segments and retransmit those that fail. The environments that use remote procedure calls.
transport layer also provides the acknowledgement of the
successful data transmission and sends the next data if
no errors occurred. The transport layer creates packets 50.2.6 Layer 6: Presentation Layer
out of the message received from the application layer.
Packetizing is a process of dividing the long message into The presentation layer establishes context between
smaller messages. application-layer entities, in which the application-layer
OSI defines five classes of connection-mode transport entities may use different syntax and semantics if the pre-
protocols ranging from class 0 (which is also known as sentation service provides a mapping between them. If a
TP0 and provides the fewest features) to class 4 (TP4, mapping is available, presentation service data units are
designed for less reliable networks, similar to the Inter- encapsulated into session protocol data units, and passed
net). Class 0 contains no error recovery, and was designed down the protocol stack.
for use on network layers that provide error-free connec- This layer provides independence from data representa-
tions. Class 4 is closest to TCP, although TCP contains tion (e.g., encryption) by translating between application
functions, such as the graceful close, which OSI assigns and network formats. The presentation layer transforms
to the session layer. Also, all OSI TP connection-mode data into the form that the application accepts. This layer
protocol classes provide expedited data and preservation formats and encrypts data to be sent across a network. It
of record boundaries. Detailed characteristics of TP0-4 is sometimes called the syntax layer.[9]
classes are shown in the following table:[8] The original presentation structure used the Basic Encod-
An easy way to visualize the transport layer is to com- ing Rules of Abstract Syntax Notation One (ASN.1), with
pare it with a post office, which deals with the dispatch capabilities such as converting an EBCDIC-coded text
280 CHAPTER 50. OSI MODEL

file to an ASCII-coded file, or serialization of objects and • ARP is used to translate IPv4 addresses (OSI layer
other data structures from and to XML. 3) into Ethernet MAC addresses (OSI layer 2).
• Domain Name Service is an Application Layer ser-
50.2.7 Layer 7: Application Layer vice which is used to look up the IP address of a
given domain name. Once a reply is received from
The application layer is the OSI layer closest to the end the DNS server, it is then possible to form a Layer
user, which means both the OSI application layer and the 3 connection to the third-party host.
user interact directly with the software application. This • Cross MAC and PHY Scheduling is essential in
layer interacts with software applications that implement wireless networks because of the time varying na-
a communicating component. Such application programs ture of wireless channels. By scheduling packet
fall outside the scope of the OSI model. Application- transmission only in favorable channel conditions,
layer functions typically include identifying communica- which requires the MAC layer to obtain channel
tion partners, determining resource availability, and syn- state information from the PHY layer, network
chronizing communication. When identifying commu- throughput can be significantly improved and en-
nication partners, the application layer determines the ergy waste can be avoided.[10]
identity and availability of communication partners for
an application with data to transmit. When determining
resource availability, the application layer must decide
whether sufficient network resources for the requested
50.4 Interfaces
communication exist. In synchronizing communication,
all communication between applications requires cooper- Neither the OSI Reference Model nor OSI protocols
ation that is managed by the application layer. This layer specify any programming interfaces, other than delib-
supports application and end-user processes. Communi- erately abstract service specifications. Protocol specifi-
cation partners are identified, quality of service is identi- cations precisely define the interfaces between different
fied, user authentication and privacy are considered, and computers, but the software interfaces inside computers,
any constraints on data syntax are identified. Everything known as network sockets are implementation-specific.
at this layer is application-specific. For example, Microsoft Windows' Winsock, and Unix's
Berkeley sockets and System V Transport Layer Inter-
face, are interfaces between applications (layer 5 and
50.3 Cross-layer functions above) and the transport (layer 4). NDIS and ODI are
interfaces between the media (layer 2) and the network
Cross-layer functions are services that are not tied to a protocol (layer 3).
given layer, but may affect more than one layer. Examples Interface standards, except for the physical layer to me-
include the following: dia, are approximate implementations of OSI service
specifications.
• Security service (telecommunication)[5] as defined
by ITU-T X.800 recommendation.
• Management functions, i.e. functions that permit to 50.5 Examples
configure, instantiate, monitor, terminate the com-
munications of two or more entities: there is a spe- 50.6 Comparison with TCP/IP
cific application-layer protocol, common manage-
ment information protocol (CMIP) and its corre- model
sponding service, common management informa-
tion service (CMIS), they need to interact with every The design of protocols in the TCP/IP model of the In-
layer in order to deal with their instances. ternet does not concern itself with strict hierarchical en-
[16]
• Multiprotocol Label Switching (MPLS) operates at capsulation and layering. RFC 3439 contains a sec-
an OSI-model layer that is generally considered to lie tion entitled “Layering considered harmful".[17] TCP/IP
between traditional definitions of layer 2 (data link does recognize four broad layers of functionality which
layer) and layer 3 (network layer), and thus is often are derived from the operating scope of their contained
referred to as a “layer-2.5” protocol. It was designed protocols: the scope of the software application; the end-
to provide a unified data-carrying service for both to-end transport connection; the internetworking range;
circuit-based clients and packet-switching clients and the scope[18] of the direct links to other nodes on the
which provide a datagram-based service model. It local network.
can be used to carry many different kinds of traf- Despite using a different concept for layering than the
fic, including IP packets, as well as native ATM, OSI model, these layers are often compared with the OSI
SONET, and Ethernet frames. layering scheme in the following way:
50.9. EXTERNAL LINKS 281

• The Internet application layer includes the OSI ap- [5] “ITU-T Recommendataion X.800 (03/91), Security archi-
plication layer, presentation layer, and most of the tecture for Open Systems Interconnection for CCITT appli-
session layer. cations". ITU. Retrieved 14 August 2015.

• Its end-to-end transport layer includes the graceful [6] “5.2 RM description for end stations”. IEEE Std 802-
close function of the OSI session layer as well as the 2014, IEEE Standard for Local and Metropolitan Area
OSI transport layer. Networks: Overview and Architecture. ieee.

• The internetworking layer (Internet layer) is a subset [7] International Organization for Standardization (1989-11-
of the OSI network layer. 15). “ISO/IEC 7498-4:1989 -- Information technology --
Open Systems Interconnection -- Basic Reference Model:
• The link layer includes the OSI data link layer and Naming and addressing”. ISO Standards Maintenance
sometimes the physical layers, as well as some pro- Portal. ISO Central Secretariat. Retrieved 2015-08-17.
tocols of the OSI’s network layer.
[8] “ITU-T Recommendation X.224 (11/1995) ISO/IEC
8073, Open Systems Interconnection - Protocol for provid-
These comparisons are based on the original seven-layer ing the connection-mode transport service". ITU.
protocol model as defined in ISO 7498, rather than re-
finements in such things as the internal organization of [9] Grigonis, Richard (2000). Computer telephony- ency-
the network layer document. clopaedia. CMP. p. 331. ISBN 9781578200450.

The presumably strict layering of the OSI model as it [10] G. Miao; G. Song (2014). Energy and spectrum efficient
is usually described does not present contradictions in wireless network design. Cambridge University Press.
TCP/IP, as it is permissible that protocol usage does not ISBN 1107039886.
follow the hierarchy implied in a layered model. Such ex-
[11] “ITU-T Recommendation Q.1400 (03/1993)], Architec-
amples exist in some routing protocols (e.g., OSPF), or
ture framework for the development of signaling and
in the description of tunneling protocols, which provide OA&M protocols using OSI concepts". ITU. pp. 4, 7.
a link layer for an application, although the tunnel host
protocol might well be a transport or even an application- [12] ITU Rec. X.227 (ISO 8650), X.217 (ISO 8649).
layer protocol in its own right.
[13] X.700 series of recommendations from the ITU-T (in par-
ticular X.711) and ISO 9596.

50.7 See also [14] “Internetworking Technology Handbook - Internetwork-


ing Basics [Internetworking]". Cisco. 15 January 2014.
• Hierarchical internetworking model Retrieved 14 August 2015.

• Management plane [15] “3GPP specification: 36.300”. 3gpp.org. Retrieved 14


August 2015.
• Layer 8
[16] RFC 3439
• Protocol stack
[17] “RFC 3439 - Some Internet Architectural Guidelines and
• Service layer Philosophy”. ietf.org. Retrieved 14 August 2015.

• WAP protocol suite [18] Walter Goralski. The Illustrated Network: How TCP/IP
Works in a Modern Network (PDF). Morgan Kaufmann.
• List of information technology acronyms p. 26. ISBN 978-0123745415.
• IBM Systems Network Architecture

• Internet protocol suite 50.9 External links


• Microsoft Knowledge Base: The OSI Model’s Seven
50.8 References Layers Defined and Functions Explained

[1] ITU-T X-Series Recommendations • ISO/IEC standard 7498-1:1994 (PDF document in-
side ZIP archive) (requires HTTP cookies in order
[2] “Publicly Available Standards”. Standards.iso.org. 2010-
to accept licence agreement)
07-30. Retrieved 2010-09-11.

[3] “The OSI Model’s Seven Layers Defined and Functions • ITU-T X.200 (the same contents as from ISO)
Explained”. Microsoft Support. Retrieved 2014-12-28.
• The ISO OSI Reference Model , Beluga graph of
[4] RFC 4253 data units and groups of layers
282 CHAPTER 50. OSI MODEL

• Zimmermann, Hubert (April 1980). “OSI Refer-


ence Model — The ISO Model of Architecture
for Open Systems Interconnection”. IEEE Trans-
actions on Communications. 28 (4): 425–432.
doi:10.1109/TCOM.1980.1094702. CiteSeerX:
10.1.1.136.9497.
• Cisco Systems Internetworking Technology Hand-
book
• Osi Model : 7 Layer Of The Network Communica-
tion
Chapter 51

Physical quantity

A physical quantity is a physical property of a to be written in italic rather than upright roman
phenomenon, body, or substance, that can be quantified typeface while the quantity is also in italic. For
by measurement.[1] A physical quantity can be expressed example cp or cisobaric is heat capacity at con-
as the combination of a magnitude expressed by a stant pressure.
number – usually a real number – and a unit; for exam-
ple, 1.6749275×10−27 kg (the mass of the neutron), or Note the difference in the style of the sub-
299792458 metres per second (the speed of light). Phys- scripts: k and p are abbreviations of the words
ical quantities are measured as 'nu' where n is the magni- kinetic and potential, whereas p (italic) is the
tude and u is the unit. For example: A boy measured the symbol for the physical quantity pressure rather
length of a room as 3 m. Here 3 is the magnitude and m than an abbreviation of the word “pressure”.
(metre) is the unit. 3 m can also be written as 300 cm.
This shows that n1u1 =n2u2. Almost all matters have Indices: These are quite apart from the above,
quantity. their use is for mathematical formalism, see
Index notation.

Scalars: Symbols for physical quantities are usually cho-


51.1 Symbols, nomenclature sen to be a single letter of the Latin or Greek alphabet,
and are printed in italic type.
General: Symbols for quantities should be chosen Vectors: Symbols for physical quantities that are vectors
according to the international recommendations from are in bold type, underlined or with an arrow above. If,
ISO/IEC 80000, the IUPAP red book and the IUPAC e.g., u is the speed of a particle, then the straightforward
green book. For example, the recommended symbol for notation for its velocity is u, u, or ⃗u .
the physical quantity 'mass’ is m, and the recommended
symbol for the quantity 'charge' is Q. Numbers and elementary functions
Subscripts and indices Numerical quantities, even those denoted by letters, are
usually printed in roman (upright) type, though some-
Subscripts are used for two reasons, to simply attach a times can be italic. Symbols for elementary functions
name to the quantity or associate it with another quan- (circular trigonometric, hyperbolic, logarithmic etc.),
tity, or represent a specific vector, matrix, or tensor com- changes in a quantity like Δ in Δy or operators like d in
ponent. dx, are also recommended to be printed in roman type.

Name reference: The quantity has a Examples


subscripted or superscripted single letter,
a number of letters, or an entire word, to spec- real numbers are as usual, such as 1 or √2,
ify what concept or entity they refer to, and e for the base of natural logarithm,
tend to be written in upright roman typeface i for the imaginary unit,
rather than italic while the quantity is in italic.
π for 3.14159265358979323846264338327950288...
For instance E or E ᵢ ₑ ᵢ is usually used to
denote kinetic energy and E or E ₒ ₑ ᵢₐ is δx, Δy, dz,
usually used to denote potential energy. sin α, sinh γ, log x

Quantity reference: The quantity has a


subscripted or superscripted single letter, a 51.2 Units and dimensions
number of letters, or an entire word, to spec-
ify what measurement/s they refer to, and tend Units

283
284 CHAPTER 51. PHYSICAL QUANTITY

Most physical quantities include a unit, but not all – some 51.4.2 Densities, flows, gradients, and mo-
are dimensionless. Neither the name of a physical quan- ments
tity, nor the symbol used to denote it, implies a particu-
lar choice of unit, though SI units are usually preferred Important and convenient derived quantities such as den-
and assumed today due to their ease of use and all-round sities, fluxes, flows, currents are associated with many
applicability. For example, a quantity of mass might be quantities. Sometimes different terms such as current
represented by the symbol m, and could be expressed in density and flux density, rate, frequency and current, are
the units kilograms (kg), pounds (lb), or daltons (Da). used interchangeably in the same context, sometimes they
are used uniqueley.
Dimensions To clarify these effective template derived quantities, we
let q be any quantity within some scope of context (not
necessarily base quantities) and present in the table below
Main article: dimensional analysis some of the most commonly used symbols where appli-
cable, their definitions, usage, SI units and SI dimensions
The notion of physical dimension of a physical quantity – where [q] is the dimension of q.
was introduced by Joseph Fourier in 1822.[2] By conven- For time derivatives, specific, molar, and flux densities of
tion, physical quantities are organized in a dimensional quantities there is no one symbol, nomenclature depends
system built upon base quantities, each of which is re- on subject, though time derivatives can be generally writ-
garded as having its own dimension. ten using overdot notation. For generality we use qm, qn,
and F respectively. No symbol is necessarily required for
the gradient of a scalar field, since only the nabla/del op-
erator ∇ or grad needs to be written. For spatial den-
51.3 Base quantities sity, current, current density and flux, the notations are
common from one context to another, differing only by a
change in subscripts.
Main article: International System of Quantities
For current density, ^t is a unit vector in the direction of
flow, i.e. tangent to a flowline. Notice the dot product
“Base quantities are those quantities which are distinct in
with the unit normal for a surface, since the amount of
nature and cannot be expressed in the form of other quan-
current passing through the surface is reduced when the
tities”. Base quantities are those quantities on the basis
current is not normal to the area. Only the current pass-
of which other quantities can be expressed. The seven
ing perpendicular to the surface contributes to the current
base quantities of the International System of Quantities
passing through the surface, no current passes in the (tan-
(ISQ) and their corresponding SI units and dimensions
gential) plane of the surface.
are listed in the following table. Other conventions may
have a different number of base units (e.g. the CGS and The calculus notations below can be used synonymously.
MKS systems of units). If X is a n-variable function X ≡ X (x , x · · · x ) ,
1 2 n
The last two angular units, plane angle and solid angle, are then:
subsidiary units used in the SI, but are treated as dimen-
sionless. The subsidiary units are used for convenience to Differential The differential n-space volume
differentiate between a truly dimensionless quantity (pure element is dn x ≡ dVn ≡ dx1 dx2 · · · dxn ,
number) and an angle, which are different measurements.

Integral: The multiple


∫ integral of∫ X over the
n-space
∫ ∫∫volume is Xd n
x ≡ XdVn ≡
51.4 General derived quantities ··· Xdx1 dx2 · · · dxn .

Derived quantities are those whose definitions are based The meaning of the term physical quantity is generally
on other physical quantities(base quantities). well understood (everyone understands what is meant by
the frequency of a periodic phenomenon, or the resistance
of an electric wire). The term physical quantity does not
imply a physically invariant quantity. Length for example
51.4.1 Space is a physical quantity, yet it is variant under coordinate
change in special and general relativity. The notion of
Important applied base units for space and time are be- physical quantities is so basic and intuitive in the realm of
low. Area and volume are of course derived from length, science, that it does not need to be explicitly spelled out
but included for completeness as they occur frequently in or even mentioned. It is universally understood that scien-
many derived quantities, in particular densities. tists will (more often than not) deal with quantitative data,
51.7. SOURCES 285

as opposed to qualitative data. Explicit mention and dis- 51.7 Sources


cussion of physical quantities is not part of any standard
science program, and is more suited for a philosophy of • Cook, Alan H. The observational foundations of
science or philosophy program. physics, Cambridge, 1994. ISBN 0-521-45597-9
The notion of physical quantities is seldom used in
• Essential Principles of Physics, P.M. Whelan, M.J.
physics, nor is it part of the standard physics vernacu-
Hodgeson, 2nd Edition, 1978, John Murray, ISBN
lar. The idea is often misleading, as its name implies
0-7195-3382-1
“a quantity that can be physically measured”, yet is of-
ten incorrectly used to mean a physical invariant. Due • Encyclopaedia of Physics, R.G. Lerner, G.L. Trigg,
to the rich complexity of physics, many different fields 2nd Edition, VHC Publishers, Hans Warlimont,
possess different physical invariants. There is no known Springer, 2005, pp 12–13
physical invariant sacred in all possible fields of physics.
Energy, space, momentum, torque, position, and length • Physics for Scientists and Engineers: With Modern
(just to name a few) are all found to be experimentally Physics (6th Edition), P.A. Tipler, G. Mosca, W.H.
variant in some particular scale and system. Additionally, Freeman and Co, 2008, 9-781429-202657
the notion that it is possible to measure “physical quanti-
ties” comes into question, particular in quantum field the-
ory and normalization techniques. As infinities are pro-
duced by the theory, the actual “measurements” made are
not really those of the physical universe (as we cannot
measure infinities), they are those of the renormalization
scheme which is expressly depended on our measurement
scheme, coordinate system and metric system.

51.5 See also


• Philosophy of science

• Quantity

51.6 References
[1] Joint Committee for Guides in Metrology (JCGM), In-
ternational Vocabulary of Metrology, Basic and General
Concepts and Associated Terms (VIM), III ed., Pavillon de
Breteuil : JCGM 200:2012 (on-line)

[2] Fourier, Joseph. Théorie analytique de la chaleur, Firmin


Didot, Paris, 1822. (In this book, Fourier introduces the
concept of physical dimensions for the physical quantities.)

51.6.1 Computer implementations


• DEVLIB project in C# Language and Delphi
Language

• PhysicalQuantities project in C# Language at


CodePlex

• PhysicalMeasure C# library project in C# Language


at CodePlex

• Ethica Measures project in C# Language at


CodePlex

• EngineerJS online calculation and scripting tool sup-


porting physical quantities.
Chapter 52

Post Office Protocol

In computing, the Post Office Protocol (POP) is an 52.2 History


application-layer Internet standard protocol used by lo-
cal e-mail clients to retrieve e-mail from a remote server POP1 was specified in RFC 918 (1984), POP2 by RFC
over a TCP/IP connection.[1] POP has been developed 937 (1985).
through several versions, with version 3 (POP3) being the
last standard in common use before largely being made POP3 originated with RFC 1081 (1988). Its current
obsolete by the more advanced IMAP. In POP3, e-mails specification is RFC 1939, updated with an extension
are downloaded from the server’s inbox to your computer. mechanism, RFC 2449 and an authentication mechanism
E-mails are available when you are not connected. in RFC 1734.
The original POP3 specification supported only an un-
encrypted USER/PASS login mechanism or Berkeley
52.1 Overview .rhosts access control. POP3 currently supports sev-
eral authentication methods to provide varying levels of
protection against illegitimate access to a user’s e-mail.
POP supports download-and-delete requirements for ac- Most are provided by the POP3 extension mechanisms.
cess to remote mailboxes (termed maildrop in the POP POP3 clients support SASL authentication methods via
RFC's).[2] Although most POP clients have an option to the AUTH extension. MIT Project Athena also produced
leave mail on server after download, e-mail clients us- a Kerberized version. RFC 1460 introduced APOP into
ing POP generally connect, retrieve all messages, store the core protocol. APOP is a challenge/response proto-
them on the user’s PC as new messages, delete them from col which uses the MD5 hash function in an attempt to
the server, and then disconnect. Other protocols, notably avoid replay attacks and disclosure of the shared secret.
IMAP, (Internet Message Access Protocol) provide more Clients implementing APOP include Mozilla Thunder-
complete and complex remote access to typical mailbox bird, Opera Mail, Eudora, KMail, Novell Evolution, Ri-
operations. In the late 1990s and early 2000s, fewer mArts’ Becky!,[3] Windows Live Mail, PowerMail, Apple
Internet Service Providers (ISPs) supported IMAP due Mail, and Mutt. RFC 1460 was obsoleted by RFC 1725,
to the storage space that was required on the ISP’s hard- which was in turn obsoleted by RFC 1939.
ware. Contemporary e-mail clients supported POP, then
over time popular mail client software added IMAP sup- “POP4” exists only as an informal proposal adding basic
port. folder management, multipart message support, as well
as message flag management to compete with IMAP; but
A POP3 server listens on well-known port 110. has not progressed since 2003.[4]
Encrypted communication for POP3 is either requested
after protocol initiation, using the STLS command, if
supported, or by POP3S, which connects to the server
using Transport Layer Security (TLS) or Secure Sockets 52.3 Extensions and Specifications
Layer (SSL) on well-known TCP port 995.
Available messages to the client are fixed when a POP ses- An extension mechanism was proposed in RFC 2449
sion opens the maildrop, and are identified by message- to accommodate general extensions as well as announce
number local to that session or, optionally, by a unique in an organized manner support for optional commands,
identifier assigned to the message by the POP server. This such as TOP and UIDL. The RFC did not intend to en-
unique identifier is permanent and unique to the maildrop courage extensions, and reaffirmed that the role of POP3
and allows a client to access the same message in different is to provide simple support for mainly download-and-
POP sessions. Mail is retrieved and marked for deletion delete requirements of mailbox handling.
by message-number. When the client exits the session, The extensions are termed capabilities and are listed by
the mail marked for deletion is removed from the mail- the CAPA command. Except for APOP, the optional
drop. commands were included in the initial set of capabilities.

286
52.5. DIALOG EXAMPLE 287

Following the lead of ESMTP (RFC 5321), capabilities be until a later session. In short: IMAP is designed
beginning with an X signify local capabilities. to permit manipulation of remote mailboxes as if
they were local. Depending on the IMAP client im-
plementation and the mail architecture desired by
52.3.1 STARTTLS the system manager, the user may save messages di-
rectly on the client machine, or save them on the
The STARTTLS extension allows the use of Transport server, or be given the choice of doing either.
Layer Security (TLS) or Secure Sockets Layer (SSL) to
be negotiated using the STLS command, on the standard
POP3 port, rather than an alternate. Some clients and • The POP protocol requires the currently connected
servers instead use the alternate-port method, which uses client to be the only client connected to the mail-
TCP port 995 (POP3S). box. In contrast, the IMAP protocol specifically
allows simultaneous access by multiple clients and
provides mechanisms for clients to detect changes
52.3.2 SDPS made to the mailbox by other, concurrently con-
nected, clients. See for example RFC3501 section
Demon Internet introduced extensions to POP3 that allow 5.2 which specifically cites “simultaneous access to
multiple accounts per domain, and has become known the same mailbox by multiple agents” as an example.
as Standard Dial-up POP3 Service (SDPS).[5] To access
each account, the username includes the hostname, as
john@hostname or john+hostname. • When POP retrieves a message, it receives all parts
of it, whereas the IMAP4 protocol allows clients to
Google Apps uses the same method. retrieve any of the individual MIME parts separately
- for example retrieving the plain text without re-
52.3.3 Kerberized Post Office Protocol trieving attached files.

In computing, local e-mail clients can use the Kerber- • IMAP supports flags on the server to keep track of
ized Post Office Protocol (KPOP), an application-layer message state: for example, whether or not the mes-
Internet standard protocol, to retrieve e-mail from a re- sage has been read, replied to, or deleted.
mote server over a TCP/IP connection. The KPOP pro-
tocol is based on the POP3 protocol with the differences
that it adds Kerberos security and that it runs by default
over TCP port number 1109 instead of 110. One mail
server software implementation is found in the Cyrus 52.5 Dialog example
IMAP server.
The APOP usage is a direct example from RFC 1939
page 18.
52.4 Comparison with IMAP RFC 1939 APOP support indicated by
<[email protected]> here:
• POP is a much simpler protocol, making implemen-
tation easier. S: <wait for connection on TCP port 110> C:
<open connection> S: +OK POP3 server ready
• POP mail moves the message from the email server <[email protected]> C: APOP mrose
onto your local computer, although there is usually c4c9334bac560ecc979e58001b3e22fb S: +OK mrose’s
an option to leave the messages on the email server maildrop has 2 messages (320 octets) C: STAT S: +OK
as well. 2 320 C: LIST S: +OK 2 messages (320 octets) S: 1 120
S: 2 200 S: . C: RETR 1 S: +OK 120 octets S: <the
• IMAP defaults to leaving the message on the email POP3 server sends message 1> S: . C: DELE 1 S: +OK
server, simply downloading a local copy. message 1 deleted C: RETR 2 S: +OK 200 octets S: <the
• POP treats the mailbox as one store, and has no con- POP3 server sends message 2> S: . C: DELE 2 S: +OK
cept of folders message 2 deleted C: QUIT S: +OK dewey POP3 server
signing off (maildrop empty) C: <close connection> S:
• An IMAP client performs complex queries, asking <wait for next connection>
the server for headers, or the bodies of specified
messages, or to search for messages meeting cer- POP3 servers without the optional APOP command ex-
tain criteria. Messages in the mail repository can pect the client to log in with the USER and PASS com-
be marked with various status flags (e.g. “deleted” mands:
or “answered”) and they stay in the repository un- C: USER mrose S: +OK User accepted C: PASS tanstaaf
til explicitly removed by the user—which may not S: +OK Pass accepted
288 CHAPTER 52. POST OFFICE PROTOCOL

52.6 Server implementations 52.8 See also


• Apache James • Email encryption
• Citadel/UX
• Courier Mail Server 52.9 References
• Cyrus IMAP server
[1] Dean, Tamara (2010). Network+ Guide to Networks. Del-
• Dovecot mar. p. 519.
• Eudora Internet Mail Server [2] Allen, David (2004). Windows to Linux. Prentice Hall. p.
192.
• HMailServer
[3] (Japanese), (Becky! tutorial), 2001-04-26.
• Ipswitch IMail Server
[4] “POP4 specification although pop is used to receive mail
• Kerio Connect after system is not online.”. 2003. Retrieved 2011-10-17.
• Mailtraq
[5] Demon Online Help Centre. E.demon.net (2013-01-23).
• Nginx Retrieved on 2013-07-17.

• qmail-pop3d
• Qpopper 52.10 Further reading
• RePOP
• Hughes, L (1998). Internet e-mail Protocols, Stan-
• UW IMAP dards and Implementation. Artech House Publish-
ers. ISBN 0-89006-939-5.
• WinGate
• Johnson, K (2000). Internet Email Protocols: A
• Zimbra
Developer’s Guide. Addison-Wesley Professional.
ISBN 0-201-43288-9.
52.7 Related requests for com- • Loshin, P (1999). Essential Email Standards: RFCs
and Protocols Made Practical. John Wiley & Sons.
ments (RFCs) ISBN 0-471-34597-0.
• RFC 918 – POST OFFICE PROTOCOL • Rhoton, J (1999). Programmer’s Guide to Inter-
net Mail: SMTP, POP, IMAP, and LDAP. Elsevier.
• RFC 937 – POST OFFICE PROTOCOL – VER-
ISBN 1-55558-212-5.
SION 2
• Wood, D (1999). Programming Internet Mail.
• RFC 1081 – Post Office Protocol – Version 3
O'Reilly. ISBN 1-56592-479-7.
• RFC 1939 – Post Office Protocol – Version 3 (STD
53) • Post Office Protocol – Version 3. IETF. May 1996.

• RFC 1957 – Some Observations on Implementa-


tions of the Post Office Protocol (POP3) 52.11 External links
• RFC 2195 – IMAP/POP AUTHorize Extension for
Simple Challenge/Response • IANA port number assignments
• RFC 2384 – POP URL Scheme • POP3 Sequence Diagram (PDF)
• RFC 2449 – POP3 Extension Mechanism
• RFC 2595 – Using TLS with IMAP, POP3 and
ACAP
• RFC 3206 – The SYS and AUTH POP Response
Codes
• RFC 5034 – The Post Office Protocol (POP3) Sim-
ple Authentication and Security Layer (SASL) Au-
thentication Mechanism
Chapter 53

Programming language

tensions taken from the dominant implementation being


common.

53.1 Definitions
A programming language is a notation for writing
programs, which are specifications of a computation or
algorithm.[3] Some, but not all, authors restrict the term
“programming language” to those languages that can ex-
press all possible algorithms.[3][4] Traits often considered
important for what constitutes a programming language
Source code of a simple computer program written in the C pro-
include:
gramming language, which will output the "Hello, world!" mes-
sage when compiled and run
Function and target A computer programming lan-
A programming language is a formal computer lan- guage is a language used to write computer pro-
guage or constructed language designed to communi- grams, which involve a computer performing some
cate instructions to a machine, particularly a computer. kind of computation[5] or algorithm and possibly
Programming languages can be used to create programs control external devices such as printers, disk drives,
to control the behavior of a machine or to express robots,[6] and so on. For example, PostScript pro-
algorithms. grams are frequently created by another program
to control a computer printer or display. More
The earliest known programmable machine preceded the
generally, a programming language may describe
invention of the digital computer and is the automatic
computation on some, possibly abstract, machine.
flute player described in the 9th century by the brothers
It is generally accepted that a complete specifica-
Musa in Baghdad, “during the Islamic Golden Age".[1]
tion for a programming language includes a descrip-
From the early 1800s, “programs” were used to direct the
tion, possibly idealized, of a machine or processor
behavior of machines such as Jacquard looms and player
for that language.[7] In most practical contexts, a
pianos.[2] Thousands of different programming languages
programming language involves a computer; conse-
have been created, mainly in the computer field, and
quently, programming languages are usually defined
many more still are being created every year. Many pro-
and studied this way.[8] Programming languages dif-
gramming languages require computation to be specified
fer from natural languages in that natural languages
in an imperative form (i.e., as a sequence of operations to
are only used for interaction between people, while
perform), while other languages use other forms of pro-
programming languages also allow humans to com-
gram specification such as the declarative form (i.e. the
municate instructions to machines.
desired result is specified, not how to achieve it).
The description of a programming language is usually Abstractions Programming languages usually contain
split into the two components of syntax (form) and abstractions for defining and manipulating data
semantics (meaning). Some languages are defined by a structures or controlling the flow of execution. The
specification document (for example, the C programming practical necessity that a programming language
language is specified by an ISO Standard), while other support adequate abstractions is expressed by the
languages (such as Perl) have a dominant implementation abstraction principle;[9] this principle is sometimes
that is treated as a reference. Some languages have both, formulated as a recommendation to the programmer
with the basic language defined by a standard and ex- to make proper use of such abstractions.[10]

289
290 CHAPTER 53. PROGRAMMING LANGUAGE

Expressive power The theory of computation classifies The next step was development of so-called second-
languages by the computations they are capable of generation programming languages (2GL) or assembly
expressing. All Turing complete languages can im- languages, which were still closely tied to the instruction
plement the same set of algorithms. ANSI/ISO set architecture of the specific computer. These served to
SQL-92 and Charity are examples of languages that make the program much more human-readable, and re-
are not Turing complete, yet often called program- lieved the programmer of tedious and error-prone address
ming languages.[11][12] calculations.
The first high-level programming languages, or third-
Markup languages like XML, HTML or troff, which de- generation programming languages (3GL), were written
fine structured data, are not usually considered program- in the 1950s. An early high-level programming language
ming languages.[13][14][15] Programming languages may, to be designed for a computer was Plankalkül, developed
however, share the syntax with markup languages if a for the German Z3 by Konrad Zuse between 1943 and
computational semantics is defined. XSLT, for example, 1945. However, it was not implemented until 1998 and
is a Turing complete XML dialect.[16][17][18] Moreover, 2000.[26]
LaTeX, which is mostly used for structuring documents,
John Mauchly's Short Code, proposed in 1949, was
also contains a Turing complete subset.[19][20]
one of the first high-level languages ever developed for
The term computer language is sometimes used inter- an electronic computer.[27] Unlike machine code, Short
changeably with programming language.[21] However, Code statements represented mathematical expressions
the usage of both terms varies among authors, including in understandable form. However, the program had to
the exact scope of each. One usage describes program- be translated into machine code every time it ran, mak-
ming languages as a subset of computer languages.[22] ing the process much slower than running the equivalent
In this vein, languages used in computing that have a machine code.
different goal than expressing computer programs are
generically designated computer languages. For instance,
markup languages are sometimes referred to as computer
languages to emphasize that they are not meant to be used
for programming.[23]
Another usage regards programming languages as the-
oretical constructs for programming abstract machines,
and computer languages as the subset thereof that runs
on physical computers, which have finite hardware
resources.[24] John C. Reynolds emphasizes that formal
specification languages are just as much programming
languages as are the languages intended for execution. He
also argues that textual and even graphical input formats
that affect the behavior of a computer are programming
languages, despite the fact they are commonly not Turing-
complete, and remarks that ignorance of programming The Manchester Mark 1 ran programs written in Autocode from
language concepts is the reason for many flaws in input 1952.
formats.[25]
At the University of Manchester, Alick Glennie devel-
oped Autocode in the early 1950s. A programming lan-
53.2 History guage, it used a compiler to automatically convert the lan-
guage into machine code. The first code and compiler
was developed in 1952 for the Mark 1 computer at the
Main article: History of programming languages
University of Manchester and is considered to be the first
compiled high-level programming language.[28][29]
The second autocode was developed for the Mark 1 by
53.2.1 Early developments R. A. Brooker in 1954 and was called the “Mark 1 Au-
tocode”. Brooker also developed an autocode for the
The earliest computers were often programmed without Ferranti Mercury in the 1950s in conjunction with the
the help of a programming language, by writing programs University of Manchester. The version for the EDSAC 2
in absolute machine language. The programs, in deci- was devised by D. F. Hartley of University of Cambridge
mal or binary form, were read in from punched cards or Mathematical Laboratory in 1961. Known as EDSAC
magnetic tape, or toggled in on switches on the front panel 2 Autocode, it was a straight development from Mercury
of the computer. Absolute machine languages were later Autocode adapted for local circumstances, and was noted
termed first-generation programming languages (1GL). for its object code optimisation and source-language di-
53.2. HISTORY 291

agnostics which were advanced for the time. A contem- • Prolog, designed in 1972, was the first logic pro-
porary but separate thread of development, Atlas Au- gramming language.
tocode was developed for the University of Manchester
Atlas 1 machine. • In 1978, ML built a polymorphic type system on top
of Lisp, pioneering statically typed functional pro-
In 1954, language FORTRAN was invented at IBM by gramming languages.
John Backus; it was the first widely used high level general
purpose programming language to have a functional im- Each of these languages spawned descendants, and most
plementation, as opposed to just a design on paper.[30][31] modern programming languages count at least one of
It is still popular language for high-performance comput- them in their ancestry.
ing[32] and is used for programs that benchmark and rank
the world’s fastest supercomputers.[33] The 1960s and 1970s also saw considerable debate over
the merits of structured programming, and whether pro-
Another early programming language was devised by gramming languages should be designed to support it.[39]
Grace Hopper in the US, called FLOW-MATIC. It was Edsger Dijkstra, in a famous 1968 letter published in the
developed for the UNIVAC I at Remington Rand during Communications of the ACM, argued that GOTO state-
the period from 1955 until 1959. Hopper found that busi- ments should be eliminated from all “higher level” pro-
ness data processing customers were uncomfortable with gramming languages.[40]
mathematical notation, and in early 1955, she and her
team wrote a specification for an English programming
language and implemented a prototype.[34] The FLOW- 53.2.3 Consolidation and growth
MATIC compiler became publicly available in early 1958
and was substantially complete in 1959.[35] Flow-Matic
was a major influence in the design of COBOL, since only
it and its direct descendant AIMACO were in actual use
at the time.[36]

53.2.2 Refinement
The increased use of high-level languages introduced
a requirement for low-level programming languages or
system programming languages. These languages, to
varying degrees, provide facilities between assembly lan-
guages and high-level languages, and can be used to per-
form tasks which require direct access to hardware facil-
ities but still provide higher-level control structures and
error-checking.
The period from the 1960s to the late 1970s brought the
development of the major language paradigms now in use:

• APL introduced array programming and influenced


functional programming.[37]
• ALGOL refined both structured procedural pro-
gramming and the discipline of language specifica-
tion; the “Revised Report on the Algorithmic Lan-
guage ALGOL 60" became a model for how later A selection of textbooks that teach programming, in languages
language specifications were written. both popular and obscure. These are only a few of the thousands
of programming languages and dialects that have been designed
• Lisp, implemented in 1958, was the first dynami- in history.
cally typed functional programming language
• In the 1960s, Simula was the first language designed The 1980s were years of relative consolidation. C++
to support object-oriented programming; in the mid- combined object-oriented and systems programming.
1970s, Smalltalk followed with the first “purely” The United States government standardized Ada, a sys-
object-oriented language. tems programming language derived from Pascal and in-
tended for use by defense contractors. In Japan and else-
• C was developed between 1969 and 1973 as a sys- where, vast sums were spent investigating so-called “fifth
tem programming language for the Unix operating generation” languages that incorporated logic program-
system, and remains popular.[38] ming constructs.[41] The functional languages community
292 CHAPTER 53. PROGRAMMING LANGUAGE

moved to standardize ML and Lisp. Rather than invent-


ing new paradigms, all of these movements elaborated
upon the ideas invented in the previous decades.
One important trend in language design for programming
large-scale systems during the 1980s was an increased fo-
cus on the use of modules, or large-scale organizational
units of code. Modula-2, Ada, and ML all developed
notable module systems in the 1980s, which were often
wedded to generic programming constructs.[42]
The rapid growth of the Internet in the mid-1990s created
opportunities for new languages. Perl, originally a Unix
scripting tool first released in 1987, became common in
dynamic websites. Java came to be used for server-side
programming, and bytecode virtual machines became
Parse tree of Python code with inset tokenization
popular again in commercial settings with their promise
of "Write once, run anywhere" (UCSD Pascal had been def add5(x):
popular for a time in the early 1980s). These develop- return x+5
ments were not fundamentally novel, rather they were re- def dotwrite(ast):
finements of many existing languages and paradigms (al- nodename = getNodename()
label=symbol.sym_name.get(int(ast[0]),ast[0])
though their syntax was often based on the C family of print ' %s [label="%s' % (nodename, label),
programming languages). if isinstance(ast[1], str):
if ast[1].strip():
Programming language evolution continues, in both in- print '= %s"];' % ast[1]
else:
dustry and research. Current directions include secu- print '"]'
else:
rity and reliability verification, new kinds of modular- print '"];'
ity (mixins, delegates, aspects), and database integration children = []
for n, child in enumerate(ast[1:]):
such as Microsoft’s LINQ. children.append(dotwrite(child))
print ' %s -> {' % nodename,
Fourth-generation programming languages (4GL) are a for name in children:
computer programming languages which aim to provide a print '%s' % name,

higher level of abstraction of the internal computer hard-


ware details than 3GLs. Fifth generation programming Syntax highlighting is often used to aid programmers in recogniz-
languages (5GL) are programming languages based on ing elements of source code. The language above is Python.
solving problems using constraints given to the program,
rather than using an algorithm written by a programmer.
The syntax of a language describes the possible combi-
nations of symbols that form a syntactically correct pro-
gram. The meaning given to a combination of symbols
53.3 Elements is handled by semantics (either formal or hard-coded in
a reference implementation). Since most languages are
All programming languages have some primitive build- textual, this article discusses textual syntax.
ing blocks for the description of data and the processes Programming language syntax is usually defined using a
or transformations applied to them (like the addition of combination of regular expressions (for lexical structure)
two numbers or the selection of an item from a collec- and Backus–Naur Form (for grammatical structure). Be-
tion). These primitives are defined by syntactic and se- low is a simple grammar, based on Lisp:
mantic rules which describe their structure and meaning
expression ::= atom | list atom ::= number | symbol
respectively.
number ::= [+-]?['0'-'9']+ symbol ::= ['A'-'Z''a'-'z'].* list
::= '(' expression* ')'
53.3.1 Syntax
This grammar specifies the following:
Main article: Syntax (programming languages)
A programming language’s surface form is known as its • an expression is either an atom or a list;
syntax. Most programming languages are purely textual;
they use sequences of text including words, numbers, and • an atom is either a number or a symbol;
punctuation, much like written natural languages. On the
other hand, there are some programming languages which • a number is an unbroken sequence of one or more
are more graphical in nature, using visual relationships decimal digits, optionally preceded by a plus or mi-
between symbols to specify a program. nus sign;
53.3. ELEMENTS 293

• a symbol is a letter followed by zero or more of any 53.3.2 Semantics


characters (excluding whitespace); and
The term Semantics refers to the meaning of languages,
• a list is a matched pair of parentheses, with zero or as opposed to their form (syntax).
more expressions inside it.

Static semantics
The following are examples of well-formed token se-
quences in this grammar: 12345, () and (a b c232 (1)). The static semantics defines restrictions on the struc-
Not all syntactically correct programs are semanti- ture of valid texts that are hard or impossible to ex-
cally correct. Many syntactically correct programs are press in standard syntactic formalisms.[3] For compiled
nonetheless ill-formed, per the language’s rules; and may languages, static semantics essentially include those se-
(depending on the language specification and the sound- mantic rules that can be checked at compile time. Ex-
ness of the implementation) result in an error on trans- amples include checking that every identifier is declared
lation or execution. In some cases, such programs may before it is used (in languages that require such declara-
exhibit undefined behavior. Even when a program is well- tions) or that the labels on the arms of a case statement
defined within a language, it may still have a meaning that are distinct.[46] Many important restrictions of this type,
is not intended by the person who wrote it. like checking that identifiers are used in the appropriate
context (e.g. not adding an integer to a function name),
Using natural language as an example, it may not be pos-
or that subroutine calls have the appropriate number and
sible to assign a meaning to a grammatically correct sen-
type of arguments, can be enforced by defining them as
tence or the sentence may be false:
rules in a logic called a type system. Other forms of static
analyses like data flow analysis may also be part of static
• "Colorless green ideas sleep furiously.” is grammat- semantics. Newer programming languages like Java and
ically well-formed but has no generally accepted C# have definite assignment analysis, a form of data flow
meaning. analysis, as part of their static semantics.

• “John is a married bachelor.” is grammatically well-


formed but expresses a meaning that cannot be true. Dynamic semantics

Main article: Semantics of programming languages


The following C language fragment is syntactically cor-
rect, but performs operations that are not semantically
defined (the operation *p >> 4 has no meaning for a value Once data has been specified, the machine must be in-
having a complex type and p->im is not defined because structed to perform operations on the data. For exam-
the value of p is the null pointer): ple, the semantics may define the strategy by which ex-
pressions are evaluated to values, or the manner in which
complex *p = NULL; complex abs_p = sqrt(*p >> 4 + control structures conditionally execute statements. The
p->im); dynamic semantics (also known as execution semantics) of
a language defines how and when the various constructs
If the type declaration on the first line were omitted, the of a language should produce a program behavior. There
program would trigger an error on compilation, as the are many ways of defining execution semantics. Natural
variable “p” would not be defined. But the program would language is often used to specify the execution semantics
still be syntactically correct, since type declarations pro- of languages commonly used in practice. A significant
vide only semantic information. amount of academic research went into formal seman-
tics of programming languages, which allow execution se-
The grammar needed to specify a programming language
mantics to be specified in a formal manner. Results from
can be classified by its position in the Chomsky hierarchy.
this field of research have seen limited application to pro-
The syntax of most programming languages can be spec-
gramming language design and implementation outside
ified using a Type-2 grammar, i.e., they are context-free
[43] academia.
grammars. Some languages, including Perl and Lisp,
contain constructs that allow execution during the pars-
ing phase. Languages that have constructs that allow the
programmer to alter the behavior of the parser make syn-
53.3.3 Type system
tax analysis an undecidable problem, and generally blur
the distinction between parsing and execution.[44] In con- Main articles: Data type, Type system, and Type safety
trast to Lisp’s macro system and Perl’s BEGIN blocks,
which may contain general computations, C macros are A type system defines how a programming language clas-
merely string replacements, and do not require code sifies values and expressions into types, how it can ma-
execution.[45] nipulate those types and how they interact. The goal of
294 CHAPTER 53. PROGRAMMING LANGUAGE

a type system is to verify and usually enforce a certain expressions; they cannot be passed to a function that ex-
level of correctness in programs written in that language pects a string, or stored in a variable that is defined to hold
by detecting certain incorrect operations. Any decidable dates.[47]
type system involves a trade-off: while it rejects many Statically typed languages can be either manifestly typed
incorrect programs, it can also prohibit some correct, al- or type-inferred. In the first case, the programmer must
beit unusual programs. In order to bypass this down- explicitly write types at certain textual positions (for ex-
side, a number of languages have type loopholes, usually ample, at variable declarations). In the second case, the
unchecked casts that may be used by the programmer to compiler infers the types of expressions and declarations
explicitly allow a normally disallowed operation between
based on context. Most mainstream statically typed lan-
different types. In most typed languages, the type system guages, such as C++, C# and Java, are manifestly typed.
is used only to type check programs, but a number of
Complete type inference has traditionally been associated
languages, usually functional ones, infer types, relieving with less mainstream languages, such as Haskell and ML.
the programmer from the need to write type annotations.
However, many manifestly typed languages support par-
The formal design and study of type systems is known as tial type inference; for example, Java and C# both infer
type theory.
types in certain limited cases.[48] Additionally, some pro-
gramming languages allow for some types to be automat-
Typed versus untyped languages ically converted to other types; for example, an int can be
used where the program expects a float.
A language is typed if the specification of every operation Dynamic typing, also called latent typing, determines the
defines types of data to which the operation is applica- type-safety of operations at run time; in other words,
ble, with the implication that it is not applicable to other types are associated with run-time values rather than tex-
types.[47] For example, the data represented by “this text tual expressions.[47] As with type-inferred languages, dy-
between the quotes” is a string, and in many programming namically typed languages do not require the programmer
languages dividing a number by a string has no meaning to write explicit type annotations on expressions. Among
and will be rejected by the compilers. The invalid op- other things, this may permit a single variable to refer to
eration may be detected when the program is compiled values of different types at different points in the pro-
(“static” type checking) and will be rejected by the com- gram execution. However, type errors cannot be auto-
piler with a compilation error message, or it may be de- matically detected until a piece of code is actually exe-
tected when the program is run (“dynamic” type check- cuted, potentially making debugging more difficult. Lisp,
ing), resulting in a run-time exception. Many languages Smalltalk, Perl, Python, JavaScript, and Ruby are dynam-
allow a function called an exception handler to be written ically typed.
to handle this exception and, for example, always return
"−1” as the result.
A special case of typed languages are the single-type lan- Weak and strong typing
guages. These are often scripting or markup languages,
such as REXX or SGML, and have only one data type— Weak typing allows a value of one type to be treated as
most commonly character strings which are used for both another, for example treating a string as a number.[47]
symbolic and numeric data. This can occasionally be useful, but it can also allow some
kinds of program faults to go undetected at compile time
In contrast, an untyped language, such as most assembly and even at run time.
languages, allows any operation to be performed on any
data, which are generally considered to be sequences of Strong typing prevents the above. An attempt to perform [47]
bits of various lengths.[47] High-level languages which are an operation on the wrong type of value raises an error.
untyped include BCPL, Tcl, and some varieties of Forth. Strongly typed languages are often termed type-safe or
safe.
In practice, while few languages are considered typed
from the point of view of type theory (verifying or re- An alternative definition for “weakly typed” refers to lan-
jecting all operations), most modern languages offer a guages, such as Perl and JavaScript, which permit a large
degree of typing.[47] Many production languages provide number of implicit type conversions. In JavaScript, for
means to bypass or subvert the type system, trading type- example, the expression 2 * x implicitly converts x to a
safety for finer control over the program’s execution (see number, and this conversion succeeds even if x is null,
casting). undefined, an Array, or a string of letters. Such implicit
conversions are often useful, but they can mask program-
ming errors. Strong and static are now generally consid-
Static versus dynamic typing ered orthogonal concepts, but usage in the literature dif-
fers. Some use the term strongly typed to mean strongly,
In static typing, all expressions have their types deter- statically typed, or, even more confusingly, to mean sim-
mined prior to when the program is executed, typically ply statically typed. Thus C has been called both strongly
at compile-time. For example, 1 and (2+2) are integer typed and weakly, statically typed.[49][50]
53.4. DESIGN AND IMPLEMENTATION 295

It may seem odd to some professional programmers that also artificial languages designed from the ground up with
C could be “weakly, statically typed”. However, notice a specific purpose, they lack the precise and complete se-
that the use of the generic pointer, the void* pointer, mantic definition that a programming language has.
does allow for casting of pointers to other pointers with-
Many programming languages have been designed from
out needing to do an explicit cast. This is extremely sim-
scratch, altered to meet new needs, and combined with
ilar to somehow casting an array of bytes to any kind of
other languages. Many have eventually fallen into disuse.
datatype in C without using an explicit cast, such as (int)
Although there have been attempts to design one “uni-
or (char). versal” programming language that serves all purposes,
all of them have failed to be generally accepted as filling
[54]
53.3.4 Standard library and run-time sys- this role. The need for diverse programming languages
arises from the diversity of contexts in which languages
tem are used:
Main article: Standard library • Programs range from tiny scripts written by individ-
ual hobbyists to huge systems written by hundreds of
Most programming languages have an associated core programmers.
library (sometimes known as the 'standard library', es-
• Programmers range in expertise from novices who
pecially if it is included as part of the published language
need simplicity above all else, to experts who may
standard), which is conventionally made available by all
be comfortable with considerable complexity.
implementations of the language. Core libraries typically
include definitions for commonly used algorithms, data • Programs must balance speed, size, and simplic-
structures, and mechanisms for input and output. ity on systems ranging from microcontrollers to
The line between a language and its core library differs supercomputers.
from language to language. In some cases, the language • Programs may be written once and not change for
designers may treat the library as a separate entity from generations, or they may undergo continual modifi-
the language. However, a language’s core library is often cation.
treated as part of the language by its users, and some lan-
guage specifications even require that this library be made • Programmers may simply differ in their tastes: they
available in all implementations. Indeed, some languages may be accustomed to discussing problems and ex-
are designed so that the meanings of certain syntactic con- pressing them in a particular language.
structs cannot even be described without referring to the
core library. For example, in Java, a string literal is de- One common trend in the development of programming
fined as an instance of the java.lang.String class; simi- languages has been to add more ability to solve problems
larly, in Smalltalk, an anonymous function expression (a using a higher level of abstraction. The earliest program-
“block”) constructs an instance of the library’s BlockCon- ming languages were tied very closely to the underlying
text class. Conversely, Scheme contains multiple coher- hardware of the computer. As new programming lan-
ent subsets that suffice to construct the rest of the lan- guages have developed, features have been added that let
guage as library macros, and so the language designers programmers express ideas that are more remote from
do not even bother to say which portions of the language simple translation into underlying hardware instructions.
must be implemented as language constructs, and which Because programmers are less tied to the complexity of
must be implemented as parts of a library. the computer, their programs can do more computing
with less effort from the programmer. This lets them
write more functionality per time unit.[55]
53.4 Design and implementation Natural language programming has been proposed as a
way to eliminate the need for a specialized language for
Programming languages share properties with natural programming. However, this goal remains distant and its
languages related to their purpose as vehicles for com- benefits are open to debate. Edsger W. Dijkstra took the
munication, having a syntactic form separate from its se- position that the use of a formal language is essential to
mantics, and showing language families of related lan- prevent the introduction of meaningless constructs, and
guages branching one from another.[51][52] But as artifi- dismissed natural language programming as “foolish”.[56]
cial constructs, they also differ in fundamental ways from Alan Perlis was similarly dismissive of the idea.[57] Hy-
languages that have evolved through usage. A signifi- brid approaches have been taken in Structured English
cant difference is that a programming language can be and SQL.
fully described and studied in its entirety, since it has a A language’s designers and users must construct a num-
precise and finite definition.[53] By contrast, natural lan- ber of artifacts that govern and enable the practice of pro-
guages have changing meanings given by their users in gramming. The most important of these artifacts are the
different communities. While constructed languages are language specification and implementation.
296 CHAPTER 53. PROGRAMMING LANGUAGE

53.4.1 Specification blocks of bytecode which are going to be used to machine


code, for direct execution on the hardware.
Main article: Programming language specification

The specification of a programming language is an arti- 53.5 Proprietary languages


fact that the language users and the implementors can use
to agree upon whether a piece of source code is a valid Although most of the most commonly used programming
program in that language, and if so what its behavior shall languages have fully open specifications and implemen-
be. tations, many programming languages exist only as pro-
A programming language specification can take several prietary programming languages with the implementa-
forms, including the following: tion available only from a single vendor, which may claim
that such a proprietary language is their intellectual prop-
erty. Proprietary programming languages are commonly
• An explicit definition of the syntax, static seman- domain specific languages or internal scripting languages
tics, and execution semantics of the language. While for a single product; some proprietary languages are used
syntax is commonly specified using a formal gram- only internally within a vendor, while others are available
mar, semantic definitions may be written in natural to external users.
language (e.g., as in the C language), or a formal se-
mantics (e.g., as in Standard ML[58] and Scheme[59] Some programming languages exist on the border be-
specifications). tween proprietary and open; for example, Oracle Corpo-
ration asserts proprietary rights to some aspects of the
• A description of the behavior of a translator for the Java programming language, and Microsoft's C# pro-
language (e.g., the C++ and Fortran specifications). gramming language, which has open implementations of
The syntax and semantics of the language have to be most parts of the system, also has Common Language
inferred from this description, which may be written Runtime (CLR) as a closed environment.
in natural or a formal language. Many proprietary languages are widely used, in spite of
their proprietary nature; examples include MATLAB and
• A reference or model implementation, sometimes VBScript. Some languages may make the transition from
written in the language being specified (e.g., Prolog closed to open; for example, Erlang was originally an Er-
or ANSI REXX[60] ). The syntax and semantics of icsson’s internal programming language.
the language are explicit in the behavior of the ref-
erence implementation.
53.6 Usage
53.4.2 Implementation
Thousands of different programming languages have
Main article: Programming language implementation been created, mainly in the computing field.[61] Soft-
ware is commonly built with 5 programming languages
or more.[62]
An implementation of a programming language provides
a way to write programs in that language and execute Programming languages differ from most other forms of
them on one or more configurations of hardware and human expression in that they require a greater degree of
software. There are, broadly, two approaches to pro- precision and completeness. When using a natural lan-
gramming language implementation: compilation and guage to communicate with other people, human authors
interpretation. It is generally possible to implement a lan- and speakers can be ambiguous and make small errors,
guage using either technique. and still expect their intent to be understood. However,
figuratively speaking, computers “do exactly what they
The output of a compiler may be executed by hardware or are told to do”, and cannot “understand” what code the
a program called an interpreter. In some implementations programmer intended to write. The combination of the
that make use of the interpreter approach there is no dis- language definition, a program, and the program’s inputs
tinct boundary between compiling and interpreting. For must fully specify the external behavior that occurs when
instance, some implementations of BASIC compile and the program is executed, within the domain of control
then execute the source a line at a time. of that program. On the other hand, ideas about an algo-
Programs that are executed directly on the hardware usu- rithm can be communicated to humans without the preci-
ally run several orders of magnitude faster than those that sion required for execution by using pseudocode, which
are interpreted in software. interleaves natural language with code written in a pro-
One technique for improving the performance of in- gramming language.
terpreted programs is just-in-time compilation. Here A programming language provides a structured mecha-
the virtual machine, just before execution, translates the nism for defining pieces of data, and the operations or
53.7. TAXONOMIES 297

transformations that may be carried out automatically on 53.7 Taxonomies


that data. A programmer uses the abstractions present in
the language to represent the concepts involved in a com- For more details on this topic, see Categorical list of
putation. These concepts are represented as a collection programming languages.
of the simplest elements available (called primitives).[63]
Programming is the process by which programmers com-
bine these primitives to compose new programs, or adapt There is no overarching classification scheme for pro-
existing ones to new uses or a changing environment. gramming languages. A given programming language
does not usually have a single ancestor language. Lan-
Programs for a computer might be executed in a batch guages commonly arise by combining the elements of
process without human interaction, or a user might type several predecessor languages with new ideas in circula-
commands in an interactive session of an interpreter. In tion at the time. Ideas that originate in one language will
this case the “commands” are simply programs, whose diffuse throughout a family of related languages, and then
execution is chained together. When a language can run leap suddenly across familial gaps to appear in an entirely
its commands through an interpreter (such as a Unix shell different family.
or other command-line interface), without compiling, it
is called a scripting language.[64] The task is further complicated by the fact that languages
can be classified along multiple axes. For example, Java
is both an object-oriented language (because it encour-
53.6.1 Measuring language usage ages object-oriented organization) and a concurrent lan-
guage (because it contains built-in constructs for running
Main article: Measuring programming language popu- multiple threads in parallel). Python is an object-oriented
larity scripting language.
In broad strokes, programming languages divide into
It is difficult to determine which programming languages programming paradigms and a classification by intended
are most widely used, and what usage means varies by domain of use, with general-purpose programming lan-
context. One language may occupy the greater number guages distinguished from domain-specific programming
of programmer hours, a different one have more lines languages. Traditionally, programming languages have
of code, and a third may consume the most CPU time. been regarded as describing computation in terms of im-
Some languages are very popular for particular kinds of perative sentences, i.e. issuing commands. These are
applications. For example, COBOL is still strong in the generally called imperative programming languages. A
corporate data center, often on large mainframes;[65][66] great deal of research in programming languages has
Fortran in scientific and engineering applications; Ada in been aimed at blurring the distinction between a pro-
aerospace, transportation, military, real-time and embed- gram as a set of instructions and a program as an asser-
ded applications; and C in embedded applications and op- tion about the desired answer, which is the main feature
erating systems. Other languages are regularly used to of declarative programming.[71] More refined paradigms
write many different kinds of applications. include procedural programming, object-oriented pro-
gramming, functional programming, and logic program-
Various methods of measuring language popularity, each
ming; some languages are hybrids of paradigms or multi-
subject to a different bias over what is measured, have
paradigmatic. An assembly language is not so much a
been proposed:
paradigm as a direct model of an underlying machine ar-
chitecture. By purpose, programming languages might
• counting the number of job advertisements that be considered general purpose, system programming lan-
mention the language[67] guages, scripting languages, domain-specific languages,
• the number of books sold that teach or describe the or concurrent/distributed languages (or a combination of
language[68] these).[72] Some general purpose languages were designed
largely with educational goals.[73]
• estimates of the number of existing lines of code A programming language may also be classified by fac-
written in the language – which may underestimate tors unrelated to programming paradigm. For instance,
languages not often found in public searches[69] most programming languages use English language key-
• counts of language references (i.e., to the name of words, while a minority do not. Other languages may be
the language) found using a web search engine. classified as being deliberately esoteric or not.

Combining and averaging information from various in-


ternet sites, langpop.com claims that in 2013 the ten most 53.8 See also
popular programming languages are (in descending order
by overall popularity): C, Java, PHP, JavaScript, C++, • Comparison of programming languages (basic in-
Python, Shell, Ruby, Objective-C and C#.[70] structions)
298 CHAPTER 53. PROGRAMMING LANGUAGE

• Comparison of programming languages [7] R. Narasimahan, Programming Languages and Comput-


ers: A Unified Metatheory, pp. 189-−247 in Franz Alt,
• Computer programming Morris Rubinoff (eds.) Advances in computers, Volume
8, Academic Press, 1994, ISBN 0-12-012108-5, p.193
• Computer science and Outline of computer science : “a complete specification of a programming language
must, by definition, include a specification of a processor-
• Educational programming language -idealized, if you will--for that language.” [the source cites
many references to support this statement]
• Invariant based programming
[8] Ben Ari, Mordechai (1996). Understanding Programming
Languages. John Wiley and Sons. Programs and lan-
• Lists of programming languages
guages can be defined as purely formal mathematical ob-
jects. However, more people are interested in programs
• List of programming language researchers than in other mathematical objects such as groups, pre-
cisely because it is possible to use the program—the se-
• Programming languages used in most popular web- quence of symbols—to control the execution of a com-
sites puter. While we highly recommend the study of the the-
ory of programming, this text will generally limit itself to
• Literate programming the study of programs as they are executed on a computer.

• Dialect (computing) [9] David A. Schmidt, The structure of typed programming


languages, MIT Press, 1994, ISBN 0-262-19349-3, p. 32
• Programming language theory
[10] Pierce, Benjamin (2002). Types and Programming Lan-
guages. MIT Press. p. 339. ISBN 0-262-16209-1.
• Pseudocode
[11] Digital Equipment Corporation. “Information Technol-
• Scientific programming language ogy - Database Language SQL (Proposed revised text
of DIS 9075)". ISO/IEC 9075:1992, Database Language
• Software engineering and List of software engineer- SQL. Retrieved 29 June 2006.
ing topics
[12] The Charity Development Group (December 1996). “The
CHARITY Home Page”. Retrieved 29 June 2006., Char-
ity is a categorical programming language..., All Charity
53.9 References computations terminate.

[13] XML in 10 points W3C, 1999, XML is not a programming


[1] Koetsier, Teun (2001). On the prehistory of pro- language.
grammable machines; musical automata, looms, calcula-
tors. PERGAMON, Mechanisma and Machine Theory [14] Powell, Thomas (2003). HTML & XHTML: the complete
36. pp. 589–603. reference. McGraw-Hill. p. 25. ISBN 0-07-222942-X.
HTML is not a programming language.
[2] Ettinger, James (2004) Jacquard’s Web, Oxford Univer-
sity Press [15] Dykes, Lucinda; Tittel, Ed (2005). XML For Dummies,
4th Edition. Wiley. p. 20. ISBN 0-7645-8845-1. ...it’s a
[3] Aaby, Anthony (2004). Introduction to Programming markup language, not a programming language.
Languages. [16] “What kind of language is XSLT?". IBM.com. Retrieved
3 December 2010.
[4] In mathematical terms, this means the programming lan-
guage is Turing-complete MacLennan, Bruce J. (1987). [17] “XSLT is a Programming Language”.
Principles of Programming Languages. Oxford University Msdn.microsoft.com. Retrieved 3 December 2010.
Press. p. 1. ISBN 0-19-511306-3.
[18] Scott, Michael (2006). Programming Language Pragmat-
[5] ACM SIGPLAN (2003). “Bylaws of the Special Inter- ics. Morgan Kaufmann. p. 802. ISBN 0-12-633951-1.
est Group on Programming Languages of the Association XSLT, though highly specialized to the transformation of
for Computing Machinery”. Retrieved 19 June 2006., XML, is a Turing-complete programming language.
The scope of SIGPLAN is the theory, design, implemen-
[19] http://tobi.oetiker.ch/lshort/lshort.pdf
tation, description, and application of computer program-
ming languages - languages that permit the specification of [20] Syropoulos, Apostolos; Antonis Tsolomitis; Nick Sofro-
a variety of different computations, thereby providing the niou (2003). Digital typography using LaTeX. Springer-
user with significant control (immediate or delayed) over Verlag. p. 213. ISBN 0-387-95217-9. TeX is not only
the computer’s operation. an excellent typesetting engine but also a real programming
language.
[6] Dean, Tom (2002). “Programming Robots”. Building In-
telligent Robots. Brown University Department of Com- [21] Robert A. Edmunds, The Prentice-Hall standard glossary
puter Science. Retrieved 23 September 2006. of computer terminology, Prentice-Hall, 1985, p. 91
53.9. REFERENCES 299

[22] Pascal Lando, Anne Lapujade, Gilles Kassel, and Frédéric [38] François Labelle. “Programming Language Usage
Fürst, Towards a General Ontology of Computer Pro- Graph”. SourceForge. Retrieved 21 June 2006.. This
grams, ICSOFT 2007, pp. 163-170 comparison analyzes trends in number of projects hosted
by a popular community programming repository. During
[23] S.K. Bajpai, Introduction To Computers And C Program- most years of the comparison, C leads by a considerable
ming, New Age International, 2007, ISBN 81-224-1379- margin; in 2006, Java overtakes C, but the combination of
X, p. 346 C/C++ still leads considerably.
[24] R. Narasimahan, Programming Languages and Comput- [39] Hayes, Brian (2006). “The Semicolon Wars”. American
ers: A Unified Metatheory, pp. 189-−247 in Franz Alt, Scientist. 94 (4): 299–303. doi:10.1511/2006.60.299.
Morris Rubinoff (eds.) Advances in computers, Volume
8, Academic Press, 1994, ISBN 0-12-012108-5, p.215: [40] Dijkstra, Edsger W. (March 1968). “Go To State-
"[...] the model [...] for computer languages differs ment Considered Harmful” (PDF). Communications of
from that [...] for programming languages in only two the ACM. 11 (3): 147–148. doi:10.1145/362929.362947.
respects. In a computer language, there are only finitely Retrieved 2014-05-22.
many names--or registers--which can assume only finitely
many values--or states--and these states are not further [41] Tetsuro Fujise, Takashi Chikayama, Kazuaki Roku-
distinguished in terms of any other attributes. [author’s sawa, Akihiko Nakase (December 1994). “KLIC: A
footnote:] This may sound like a truism but its implica- Portable Implementation of KL1” Proc. of FGCS '94,
tions are far reaching. For example, it would imply that ICOT Tokyo, December 1994. http://www.icot.or.jp/
any model for programming languages, by fixing certain ARCHIVE/HomePage-E.html KLIC is a portable imple-
of its parameters or features, should be reducible in a nat- mentation of a concurrent logic programming language
ural way to a model for computer languages.” KL1.

[25] John C. Reynolds, Some thoughts on teaching program- [42] Jim Bender (15 March 2004). “Mini-Bibliography on
ming and programming languages, SIGPLAN Notices, Modules for Functional Programming Languages”. Read-
Volume 43, Issue 11, November 2008, p.109 Scheme.org. Retrieved 27 September 2006.

[26] Rojas, Raúl, et al. (2000). “Plankalkül: The First High- [43] Michael Sipser (1996). Introduction to the Theory of Com-
Level Programming Language and its Implementation”. putation. PWS Publishing. ISBN 0-534-94728-X. Sec-
Institut für Informatik, Freie Universität Berlin, Technical tion 2.2: Pushdown Automata, pp.101–114.
Report B-3/2000. (full text) [44] Jeffrey Kegler, "Perl and Undecidability", The Perl Re-
view. Papers 2 and 3 prove, using respectively Rice’s the-
[27] Sebesta, W.S Concepts of Programming languages.
orem and direct reduction to the halting problem, that the
2006;M6 14:18 pp.44. ISBN 0-321-33025-0
parsing of Perl programs is in general undecidable.
[28] Knuth, Donald E.; Pardo, Luis Trabb. “Early development
[45] Marty Hall, 1995, Lecture Notes: Macros, PostScript
of programming languages”. Encyclopedia of Computer
version
Science and Technology. Marcel Dekker. 7: 419–493.
[46] Michael Lee Scott, Programming language pragmatics,
[29] Peter J. Bentley (2012). Digitized: The Science of Com-
Edition 2, Morgan Kaufmann, 2006, ISBN 0-12-633951-
puters and how it Shapes Our World. Oxford University
1, p. 18–19
Press. p. 87.
[47] Andrew Cooke. “Introduction To Computer Languages”.
[30] “Fortran creator John Backus dies - Tech and gadgets-
Retrieved 13 July 2012.
msnbc.com”. MSNBC. 2007-03-20. Retrieved 2010-04-
25. [48] Specifically, instantiations of generic types are in-
ferred for certain expression forms. Type inference in
[31] “CSC-302 99S : Class 02: A Brief History of Program-
Generic Java—the research language that provided the
ming Languages”. Math.grin.edu. Retrieved 2010-04-25.
basis for Java 1.5’s bounded parametric polymorphism
[32] Eugene Loh (18 June 2010). “The Ideal HPC Program- extensions—is discussed in two informal manuscripts
ming Language”. Queue. Association of Computing Ma- from the Types mailing list: Generic Java type inference
chines. 8 (6). is unsound (Alan Jeffrey, 17 December 2001) and Sound
Generic Java type inference (Martin Odersky, 15 January
[33] “HPL - A Portable Implementation of the High- 2002). C#'s type system is similar to Java’s, and uses a
Performance Linpack Benchmark for Distributed- similar partial type inference scheme.
Memory Computers”. Retrieved 2015-02-21.
[49] “Revised Report on the Algorithmic Language Scheme”.
[34] Hopper (1978) p. 16. 20 February 1998. Retrieved 9 June 2006.

[35] Sammet (1969) p. 316 [50] Luca Cardelli and Peter Wegner. “On Understand-
ing Types, Data Abstraction, and Polymorphism”.
[36] Sammet (1978) p. 204. Manuscript (1985). Retrieved 9 June 2006.

[37] Richard L. Wexelblat: History of Programming Lan- [51] Steven R. Fischer, A history of language, Reaktion Books,
guages, Academic Press, 1981, chapter XIV. 2003, ISBN 1-86189-080-X, p. 205
300 CHAPTER 53. PROGRAMMING LANGUAGE

[52] Éric Lévénez (2011). “Computer Languages History”. [67] Nicholas Enticknap. “SSL/Computer Weekly IT salary
survey: finance boom drives IT job growth”. Computer-
[53] Jing Huang. “Artificial Language vs. Natural Language”. weekly.com. Retrieved 2013-06-14.
[54] IBM in first publishing PL/I, for example, rather ambi- [68] “Counting programming languages by book sales”.
tiously titled its manual The universal programming lan- Radar.oreilly.com. 2 August 2006. Retrieved 3 Decem-
guage PL/I (IBM Library; 1966). The title reflected IBM’s ber 2010.
goals for unlimited subsetting capability: PL/I is designed
in such a way that one can isolate subsets from it satisfy- [69] Bieman, J.M.; Murdock, V., Finding code on the World
ing the requirements of particular applications. (“PL/I”. Wide Web: a preliminary investigation, Proceedings First
Encyclopedia of Mathematics. Retrieved 29 June 2006.). IEEE International Workshop on Source Code Analysis
Ada and UNCOL had similar early goals. and Manipulation, 2001

[55] Frederick P. Brooks, Jr.: The Mythical Man-Month, [70] “Programming Language Popularity”. langpop.com.
Addison-Wesley, 1982, pp. 93-94 2013-10-25. Retrieved 2014-01-02.

[56] Dijkstra, Edsger W. On the foolishness of “natural lan- [71] Carl A. Gunter, Semantics of Programming Languages:
guage programming.” EWD667. Structures and Techniques, MIT Press, 1992, ISBN 0-262-
57095-5, p. 1
[57] Perlis, Alan (September 1982). “Epigrams on Program-
ming”. SIGPLAN Notices Vol. 17, No. 9. pp. 7–13. [72] “TUNES: Programming Languages”.

[58] Milner, R.; M. Tofte, R. Harper and D. MacQueen. [73] Wirth, Niklaus (1993). “Recollections about the devel-
(1997). The Definition of Standard ML (Revised). MIT opment of Pascal”. Proc. 2nd ACM SIGPLAN con-
Press. ISBN 0-262-63181-4. Cite uses deprecated pa- ference on history of programming languages: 333–342.
rameter |coauthors= (help) doi:10.1145/154766.155378. ISBN 0-89791-570-4. Re-
trieved 30 June 2006.
[59] Kelsey, Richard; William Clinger; Jonathan Rees (Febru-
ary 1998). “Section 7.2 Formal semantics”. Revised5 Re-
port on the Algorithmic Language Scheme. Retrieved 9
June 2006. 53.10 Further reading
[60] ANSI — Programming Language Rexx, X3-274.1996
See also: History of programming languages § Further
[61] “HOPL: an interactive Roster of Programming Lan- reading
guages”. Australia: Murdoch University. Retrieved 1
June 2009. This site lists 8512 languages.
• Abelson, Harold; Sussman, Gerald Jay (1996).
[62] Mayer, Philip; Bauer, Alexander (1 January 2015).
Structure and Interpretation of Computer Programs
“An Empirical Analysis of the Utilization of Multi-
ple Programming Languages in Open Source Projects”. (2nd ed.). MIT Press.
EASE '15. New York, NY, USA: ACM: 4:1– • Raphael Finkel: Advanced Programming Language
4:10. doi:10.1145/2745802.2745805. ISBN 978-1-
Design, Addison Wesley 1995.
4503-3350-4. Retrieved 18 September 2015. Results:
We found (a) a mean number of 5 languages per project • Daniel P. Friedman, Mitchell Wand, Christopher T.
with a clearly dominant main general-purpose language Haynes: Essentials of Programming Languages, The
and 5 often-used DSL types, (b) a significant influence
MIT Press 2001.
of the size, number of commits, and the main language
on the number of languages as well as no significant in- • Maurizio Gabbrielli and Simone Martini: “Pro-
fluence of age and number of contributors, and (c) three gramming Languages: Principles and Paradigms”,
language ecosystems grouped around XML, Shell/Make, Springer, 2010.
and HTML/CSS. Conclusions: Multi-language program-
ming seems to be common in open-source projects and • David Gelernter, Suresh Jagannathan: Programming
is a factor which must be dealt with in tooling and when Linguistics, The MIT Press 1990.
assessing development and maintenance of such software
systems. • Ellis Horowitz (ed.): Programming Languages, a
Grand Tour (3rd ed.), 1987.
[63] Abelson, Sussman, and Sussman. “Structure and Interpre-
tation of Computer Programs”. Retrieved 3 March 2009. • Ellis Horowitz: Fundamentals of Programming Lan-
[64] Brown Vicki (1999). “Scripting Languages”.
guages, 1989.
mactech.com. Retrieved November 17, 2014. • Shriram Krishnamurthi: Programming Languages:
[65] Georgina Swan (2009-09-21). “COBOL turns 50”. com- Application and Interpretation, online publication.
puterworld.com.au. Retrieved 2013-10-19.
• Bruce J. MacLennan: Principles of Programming
[66] Ed Airey (2012-05-03). “7 Myths of COBOL De- Languages: Design, Evaluation, and Implementa-
bunked”. developer.com. Retrieved 2013-10-19. tion, Oxford University Press 1999.
53.10. FURTHER READING 301

• John C. Mitchell: Concepts in Programming Lan-


guages, Cambridge University Press 2002.
• Benjamin C. Pierce: Types and Programming Lan-
guages, The MIT Press 2002.
• Terrence W. Pratt and Marvin V. Zelkowitz: Pro-
gramming Languages: Design and Implementation
(4th ed.), Prentice Hall 2000.

• Peter H. Salus. Handbook of Programming Lan-


guages (4 vols.). Macmillan 1998.

• Ravi Sethi: Programming Languages: Concepts and


Constructs, 2nd ed., Addison-Wesley 1996.

• Michael L. Scott: Programming Language Pragmat-


ics, Morgan Kaufmann Publishers 2005.
• Robert W. Sebesta: Concepts of Programming Lan-
guages, 9th ed., Addison Wesley 2009.
• Franklyn Turbak and David Gifford with Mark
Sheldon: Design Concepts in Programming Lan-
guages, The MIT Press 2009.

• Peter Van Roy and Seif Haridi. Concepts, Tech-


niques, and Models of Computer Programming, The
MIT Press 2004.
• David A. Watt. Programming Language Concepts
and Paradigms. Prentice Hall 1990.
• David A. Watt and Muffy Thomas. Programming
Language Syntax and Semantics. Prentice Hall
1991.

• David A. Watt. Programming Language Processors.


Prentice Hall 1993.

• David A. Watt. Programming Language Design


Concepts. John Wiley & Sons 2004.
Chapter 54

Public switched telephone network

The public switched telephone network (PSTN) is the frequency, culminating in the SS7 network that connected
aggregate of the world’s circuit-switched telephone net- most exchanges by the end of the 20th century.
works that are operated by national, regional, or local The growth of the PSTN meant that teletraffic engineer-
telephony operators, providing infrastructure and ser-
ing techniques needed to be deployed to deliver quality
vices for public telecommunication. The PSTN consists of service (QoS) guarantees for the users. The work of
of telephone lines, fiber optic cables, microwave trans-
A. K. Erlang established the mathematical foundations of
mission links, cellular networks, communications satel- methods required to determine the capacity requirements
lites, and undersea telephone cables, all interconnected by
and configuration of equipment and the number of per-
switching centers, thus allowing most telephones to com- sonnel required to deliver a specific level of service.
municate with each other. Originally a network of fixed-
line analog telephone systems, the PSTN is now almost In the 1970s the telecommunications industry began im-
entirely digital in its core network and includes mobile plementing packet switched network data services using
and other networks, as well as fixed telephones.[1] the X.25 protocol transported over much of the end-to-
end equipment as was already in use in the PSTN.
The technical operation of the PSTN adheres to the stan-
dards created by the ITU-T. These standards allow differ- In the 1980s the industry began planning for digital ser-
ent networks in different countries to interconnect seam- vices assuming they would follow much the same pattern
lessly. The E.163 and E.164 standards provide a single as voice services, and conceived a vision of end-to-end
global address space for telephone numbers. The com- circuit switched services, known as the Broadband Inte-
bination of the interconnected networks and the single grated Services Digital Network (B-ISDN). The B-ISDN
numbering plan allow telephones around the world to dial vision has been overtaken by the disruptive technology of
each other. the Internet.
At the turn of the 21st century, the oldest parts of the
telephone network still use analog technology for the last
54.1 History (America) mile loop to the end user. However, digital technologies
such as DSL, ISDN, FTTx, and cable modems have be-
come more common in this portion of the network.
The first telephones had no network but were in private
use, wired together in pairs. Users who wanted to talk to Several large private telephone networks are not linked
different people had as many telephones as necessary for to the PSTN, usually for military purposes. There are
the purpose. A user who wished to speak whistled loudly also private networks run by large companies which are
into the transmitter until the other party heard. linked to the PSTN only through limited gateways, such
as a large private branch exchange (PBX).
However, a bell was added soon for signaling, so an at-
tendant no longer need wait for the whistle, and then a
switch hook. Later telephones took advantage of the ex-
change principle already employed in telegraph networks. 54.2 Operators
Each telephone was wired to a local telephone exchange,
and the exchanges were wired together with trunks. Net- The task of building the networks and selling services to
works were connected in a hierarchical manner until they customers fell to the network operators. The first com-
spanned cities, countries, continents and oceans. This pany to be incorporated to provide PSTN services was
was the beginning of the PSTN, though the term was not the Bell Telephone Company in the United States.
used for many decades. In some countries, however, the job of providing tele-
Automation introduced pulse dialing between the phone phone networks fell to government as the investment re-
and the exchange, and then among exchanges, followed quired was very large and the provision of telephone ser-
by more sophisticated address signaling including multi- vice was increasingly becoming an essential public utility.

302
54.5. SEE ALSO 303

For example, the General Post Office in the United King- one end to another via telephone exchanges. The call is
dom brought together a number of private companies to switched using a call set up protocol (usually ISUP) be-
form a single nationalized company. In recent decades tween the telephone exchanges under an overall routing
however, these state monopolies were broken up or sold strategy.
off through privatization. The call is carried over the PSTN using a 64 kbit/s chan-
nel, originally designed by Bell Labs. The name given
to this channel is Digital Signal 0 (DS0). The DS0 cir-
54.3 Regulation cuit is the basic granularity of circuit switching in a tele-
phone exchange. A DS0 is also known as a timeslot be-
In most countries, the central government has a regulator cause DS0s are aggregated in time-division multiplexing
dedicated to monitoring the provision of PSTN services (TDM) equipment to form higher capacity communica-
in that country. Their tasks may be for example to en- tion links.
sure that end customers are not over-charged for services A Digital Signal 1 (DS1) circuit carries 24 DS0s on a
where monopolies may exist. They may also regulate the North American or Japanese T-carrier (T1) line, or 32
prices charged between the operators to carry each other’s DS0s (30 for calls plus two for framing and signaling) on
traffic. an E-carrier (E1) line used in most other countries. In
modern networks, the multiplexing function is moved as
close to the end user as possible, usually into cabinets at
54.4 Technology the roadside in residential areas, or into large business
premises.
54.4.1 Network topology These aggregated circuits are conveyed from the initial
multiplexer to the exchange over a set of equipment col-
Main article: PSTN network topology lectively known as the access network. The access net-
work and inter-exchange transport use synchronous opti-
The PSTN network architecture had to evolve over the cal transmission, for example, SONET and Synchronous
years to support increasing numbers of subscribers, calls, Digital Hierarchy (SDH) technologies, although some
connections to other countries, direct dialing and so on. parts still use the older PDH technology.
The model developed by the United States and Canada Within the access network, there are a number of refer-
was adopted by other nations, with adaptations for local ence points defined. Most of these are of interest mainly
markets. to ISDN but one – the V reference point – is of more
The original concept was that the telephone exchanges general interest. This is the reference point between a
are arranged into hierarchies, so that if a call cannot be primary multiplexer and an exchange. The protocols at
handled in a local cluster, it is passed to one higher up this reference point were standardized in ETSI areas as
for onward routing. This reduced the number of connect- the V5 interface.
ing trunks required between operators over long distances
and also kept local traffic separate.
54.4.3 Impact on IP standards
However, in modern networks the cost of transmission
and equipment is lower and, although hierarchies still ex- Voice quality over PSTN networks was used as the bench-
ist, they are much flatter, with perhaps only two layers. mark for the development of the Telecommunications
Industry Association's TIA-TSB-116 standard on voice-
quality recommendations for IP telephony, to determine
54.4.2 Digital channels acceptable levels of audio delay and echo.[2]
Main article: Telephone exchange
54.5 See also
As described above, most automated telephone ex-
changes now use digital switching rather than mechani-
• Via Net Loss
cal or analog switching. The trunks connecting the ex-
changes are also digital, called circuits or channels. How- • Plain old telephone service (POTS)
ever analog two-wire circuits are still used to connect the
last mile from the exchange to the telephone in the home • Managed facilities-based voice network
(also called the local loop). To carry a typical phone call
from a calling party to a called party, the analog audio • Telecommunications Industry Association
signal is digitized at an 8 kHz sample rate with 8-bit res- • Internet area network (IAN)
olution using a special type of nonlinear pulse code mod-
ulation known as G.711. The call is then transmitted from • PSTN network topology
304 CHAPTER 54. PUBLIC SWITCHED TELEPHONE NETWORK

54.6 References
[1] Kushnick, Bruce (7 January 2013). “What Are the Pub-
lic Switched Telephone Networks, 'PSTN' and Why You
Should Care?". Huffington Post Blog. Retrieved 11 April
2014.

[2] “TIA TSB-116”. Global.ihs.com. Retrieved 2011-11-20.

54.7 External links


Chapter 55

Radio

This article is about science and technology. For broad-


casting, see Radio broadcasting. For other uses, see
Radio (disambiguation).
Radio is the technology of using radio waves to carry

Classic radio receiver dial

modulation). Radio systems also need an antenna to con-


vert electric currents into radio waves, and vice versa. An
antenna can be used for both transmitting and receiving.
The electrical resonance of tuned circuits in radios allow
individual stations to be selected. The electromagnetic
wave is intercepted by a tuned receiving antenna. A radio
receiver receives its input from an antenna and converts it
into a form usable for the consumer, such as sound, pic-
tures, digital data, measurement values, navigational po-
sitions, etc.[2] Radio frequencies occupy the range from
a 3 kHz to 300 GHz, although commercially important
uses of radio use only a small part of this spectrum.[3]
A radio communication system sends signals by radio.[4]
The radio equipment involved in communication systems
includes a transmitter and a receiver, each having an
The Alexandra Palace, here: mast of the broadcasting station
antenna and appropriate terminal equipment such as a
information, such as sound, by systematically modulating microphone at the transmitter and a loudspeaker at the
[5]
some property of electromagnetic energy waves transmit- receiver in the case of a voice-communication system.
ted through space, such as their amplitude, frequency,
phase, or pulse width.[n 1] When radio waves strike
an electrical conductor, the oscillating fields induce an 55.1 Etymology
alternating current in the conductor. The information in
the waves can be extracted and transformed back into its The term “radio” is derived from the Latin word “radius”,
original form. meaning “spoke of a wheel, beam of light, ray”. It was
Radio systems need a transmitter to modulate (change) first applied to communications in 1881 when, at the sug-
some property of the energy produced to impress a signal gestion of French scientist Ernest Mercadier, Alexander
on it, for example using amplitude modulation or angle Graham Bell adopted “radiophone” (meaning “radiated
modulation (which can be frequency modulation or phase sound”) as an alternate name for his photophone optical

305
306 CHAPTER 55. RADIO

transmission system.[6] However, this invention would not Radio Times since its founding in the early 1920s.
be widely adopted. In recent years the more general term “wireless” has
Following Heinrich Hertz's establishment of the existence gained renewed popularity, even for devices using elec-
of electromagnetic radiation in the late 1880s, a vari- tromagnetic radiation, through the rapid growth of short-
ety of terms were initially used for the phenomenon, range computer networking, e.g., Wireless Local Area
with early descriptions of the radiation itself including Network (WLAN), Wi-Fi, and Bluetooth, as well as mo-
“Hertzian waves”, “electric waves”, and “ether waves”, bile telephony, e.g., GSM and UMTS cell phones. To-
while phrases describing its use in communications in- day, the term “radio” specifies the transceiver device or
cluded “spark telegraphy”, “space telegraphy”, “aerogra- chip, whereas “wireless” refers to the lack of physical
phy” and, eventually and most commonly, “wireless teleg- connections; thus equipment employs embedded radio
raphy”. However, “wireless” included a broad variety of transceivers, but operates as wireless devices over wire-
related electronic technologies, including electrostatic in- less sensor networks.
duction, electromagnetic induction and aquatic and earth
conduction, so there was a need for a more precise term
referring exclusively to electromagnetic radiation. 55.2 Processes
The first use of radio- in conjunction with electromag-
netic radiation appears to have been by French physi-
cist Édouard Branly, who in 1890 developed a version
of a coherer receiver he called a radio-conducteur.[7] The
radio- prefix was later used to form additional descrip-
tive compound and hyphenated words, especially in Eu-
rope, for example, in early 1898 the British publication
The Practical Engineer included a reference to “the ra-
diotelegraph” and “radiotelegraphy”,[8] while the French Radio communication. Information such as sound is converted
text of both the 1903 and 1906 Berlin Radiotelegraphic by a transducer such as a microphone to an electrical signal,
Conventions includes the phrases radiotélégraphique and which modulates a radio wave sent from a transmitter. A receiver
radiotélégrammes. intercepts the radio wave and extracts the information-bearing
electronic signal, which is converted back using another trans-
The use of “radio” as a standalone word dates back ducer such as a speaker.
to at least December 30, 1904, when instructions is-
sued by the British Post Office for transmitting tele-
Radio systems used for communication have the follow-
grams specified that “The word 'Radio'... is sent in
ing elements. With more than 100 years of development,
the Service Instructions”.[9] This practice was universally
each process is implemented by a wide range of methods,
adopted, and the word “radio” introduced internation-
specialized for different communications purposes.
ally, by the 1906 Berlin Radiotelegraphic Convention,
which included a Service Regulation specifying that “Ra-
diotelegrams shall show in the preamble that the service
55.2.1 Transmitter and modulation
is 'Radio'".
The switch to “radio” in place of “wireless” took place Main article: Radio transmitter
slowly and unevenly in the English-speaking world. Lee See also: Radio transmitter design
de Forest helped popularize the new word in the United
States—in early 1907 he founded the DeForest Radio
Each system contains a transmitter, This consists of a
Telephone Company, and his letter in the June 22, 1907
source of electrical energy, producing alternating current
Electrical World about the need for legal restrictions
of a desired frequency of oscillation. The transmitter con-
warned that “Radio chaos will certainly be the result un-
tains a system to modulate (change) some property of the
til such stringent regulation is enforced”.[10] The United
energy produced to impress a signal on it. This modu-
States Navy would also play a role. Although its transla-
lation might be as simple as turning the energy on and
tion of the 1906 Berlin Convention used the terms “wire-
off, or altering more subtle properties such as amplitude,
less telegraph” and “wireless telegram”, by 1912 it began
frequency, phase, or combinations of these properties.
to promote the use of “radio” instead. The term started
The transmitter sends the modulated electrical energy to a
to become preferred by the general public in the 1920s
tuned resonant antenna; this structure converts the rapidly
with the introduction of broadcasting. (“Broadcasting” is
changing alternating current into an electromagnetic wave
based upon an agricultural term meaning roughly “scat-
that can move through free space (sometimes with a par-
tering seeds widely”.) British Commonwealth countries
ticular polarization).
continued to commonly use the term “wireless” until the
mid-20th century, though the magazine of the British Amplitude modulation of a carrier wave works by vary-
Broadcasting Corporation in the UK has been called ing the strength of the transmitted signal in proportion to
the information being sent. For example, changes in the
55.2. PROCESSES 307

An audio signal (top) may be carried by an AM or FM radio


wave.

signal strength can be used to reflect the sounds to be re-


produced by a speaker, or to specify the light intensity of
television pixels. It was the method used for the first au-
dio radio transmissions, and remains in use today. “AM”
is often used to refer to the medium wave broadcast band
(see AM radio), but it is used in various radiotelephone
services such as the Citizen Band, amateur radio and es- Rooftop television antennas. Yagi-Uda antennas like these six are
pecially in aviation, due to its ability to be received under widely used at VHF and UHF frequencies.
very weak signal conditions and its immunity to capture
effect, allowing more than one signal to be heard simul-
taneously. duce a tiny voltage at its terminals, that is applied to a
receiver to be amplified. Some antennas can be used for
Frequency modulation varies the frequency of the carrier. both transmitting and receiving, even simultaneously, de-
The instantaneous frequency of the carrier is directly pro- pending on the connected equipment.
portional to the instantaneous value of the input signal.
FM has the "capture effect" whereby a receiver only re-
ceives the strongest signal, even when others are present. 55.2.3 Propagation
Digital data can be sent by shifting the carrier’s frequency
among a set of discrete values, a technique known as Main article: Radio propagation
frequency-shift keying. FM is commonly used at Very
high frequency (VHF) radio frequencies for high-fidelity
broadcasts of music and speech (see FM broadcasting). Once generated, electromagnetic waves travel through
Analog TV sound is also broadcast using FM. space either directly, or have their path altered by
reflection, refraction or diffraction. The intensity of
Angle modulation alters the instantaneous phase of the the waves diminishes due to geometric dispersion (the
carrier wave to transmit a signal. It may be either FM or inverse-square law); some energy may also be absorbed
phase modulation (PM). by the intervening medium in some cases. Noise will gen-
erally alter the desired signal; this electromagnetic inter-
ference comes from natural sources, as well as from ar-
55.2.2 Antenna tificial sources such as other transmitters and accidental
radiators. Noise is also produced at every step due to the
Main article: Antenna (radio) inherent properties of the devices used. If the magni-
An antenna (or aerial) is an electrical device which con- tude of the noise is large enough, the desired signal will
verts electric currents into radio waves, and vice versa. It no longer be discernible; the signal-to-noise ratio is the
is usually used with a radio transmitter or radio receiver. fundamental limit to the range of radio communications.
In transmission, a radio transmitter supplies an electric
current oscillating at radio frequency (i.e. high frequency
AC) to the antenna’s terminals, and the antenna radiates 55.2.4 Resonance
the energy from the current as electromagnetic waves (ra-
dio waves). In reception, an antenna intercepts some of Main article: Electrical resonance
the power of an electromagnetic wave in order to pro- See also: LC circuit
308 CHAPTER 55. RADIO

55.2.6 Radio band


Electrical resonance of tuned circuits in radios allow in-
dividual stations to be selected. A resonant circuit will Main article: Radio frequency
respond strongly to a particular frequency, and much less
so to differing frequencies. This allows the radio receiver
to discriminate between multiple signals differing in fre- Radio frequencies occupy the range from a 3 kHz to 300
quency. GHz, although commercially important uses of radio use
only a small part of this spectrum.[12] Other types of
electromagnetic radiation, with frequencies above the RF
range, are infrared, visible light, ultraviolet, X-rays and
gamma rays. Since the energy of an individual photon of
55.2.5 Receiver and demodulation radio frequency is too low to remove an electron from an
atom, radio waves are classified as non-ionizing radiation.
Main article: Radio receiver
See also: Radio receiver design, Crystal radio, and
Communications receiver
The electromagnetic wave is intercepted by a tuned re-

55.3 Communication systems

A radio communication system sends signals by radio.[13]


Types of radio communication systems deployed depend
on technology, standards, regulations, radio spectrum
allocation, user requirements, service positioning, and
investment.[14]
The radio equipment involved in communication systems
includes a transmitter and a receiver, each having an
antenna and appropriate terminal equipment such as a
A crystal receiver, consisting of an antenna, adjustable microphone at the transmitter and a loudspeaker at the
electromagnetic coil, crystal rectifier, capacitor, headphones and receiver in the case of a voice-communication system.[15]
ground connection.
The power consumed in a transmitting station varies de-
pending on the distance of communication and the trans-
ceiving antenna; this structure captures some of the en- mission conditions. The power received at the receiving
ergy of the wave and returns it to the form of oscillat- station is usually only a tiny fraction of the transmitter’s
ing electrical currents. At the receiver, these currents are output, since communication depends on receiving the
demodulated, which is conversion to a usable signal form information, not the energy, that was transmitted.
by a detector sub-system. The receiver is "tuned" to re- Classical radio communications systems use frequency-
spond preferentially to the desired signals, and reject un-
division multiplexing (FDM) as a strategy to split up and
desired signals. share the available radio-frequency bandwidth for use by
Early radio systems relied entirely on the energy collected different parties communications concurrently. Modern
by an antenna to produce signals for the operator. Ra- radio communication systems include those that divide
dio became more useful after the invention of electronic up a radio-frequency band by time-division multiplexing
devices such as the vacuum tube and later the transistor, (TDM) and code-division multiplexing (CDM) as alter-
which made it possible to amplify weak signals. Today ra- natives to the classical FDM strategy. These systems of-
dio systems are used for applications from walkie-talkie fer different tradeoffs in supporting multiple users, be-
children’s toys to the control of space vehicles, as well as yond the FDM strategy that was ideal for broadcast radio
for broadcasting, and many other applications. but less so for applications such as mobile telephony.
A radio receiver receives its input from an antenna, uses A radio communication system may send information
electronic filters to separate a wanted radio signal from all only one way. For example, in broadcasting a single trans-
other signals picked up by this antenna, amplifies it to a mitter sends signals to many receivers. Two stations may
level suitable for further processing, and finally converts take turns sending and receiving, using a single radio fre-
through demodulation and decoding the signal into a form quency; this is called “simplex.” By using two radio fre-
usable for the consumer, such as sound, pictures, digital quencies, two stations may continuously and concurrently
data, measurement values, navigational positions, etc.[11] send and receive signals - this is called "duplex" operation.
55.5. USES OF RADIO 309

55.4 History 55.5 Uses of radio


For a broader coverage related to this topic, see Radio
spectrum § Applications.

Main article: History of radio


Early uses were maritime, for sending telegraphic mes-
sages using Morse code between ships and land. The ear-
In 1864 James Clerk Maxwell showed mathematically liest users included the Japanese Navy scouting the Rus-
that electromagnetic waves could propagate through free sian fleet during the Battle of Tsushima in 1905. One of
space.[16] The effects of electromagnetic waves (then- the most memorable uses of marine telegraphy was dur-
unexplained "action at a distance" sparking behavior) ing the sinking of the RMS Titanic in 1912, including
were actually observed before and after Maxwell’s work communications between operators on the sinking ship
by many inventors and experimenters including Luigi and nearby vessels, and communications to shore stations
Galvani (1791), Peter Samuel Munk (1835), Joseph listing the survivors.
Henry (1842), Samuel Alfred Varley (1852), Edwin
Radio was used to pass on orders and communications
Houston, Elihu Thomson, Thomas Edison (1875) and
between armies and navies on both sides in World War
David Edward Hughes (1878).[17][18][19] Edison gave the
I; Germany used radio communications for diplomatic
effect the name "etheric force"[20] and Hughes detected
messages once it discovered that its submarine cables had
a spark impulse up to 500 yards (460 m) with a portable
been tapped by the British. The United States passed
receiver, but none could identify what caused the phe-
on President Woodrow Wilson's Fourteen Points to Ger-
nomenon and it was usually written off as electromagnetic
many via radio during the war. Broadcasting began from
induction.[21] In 1886 Heinrich Rudolf Hertz noticed the
San Jose, California in 1909,[23] and became feasible in
same sparking phenomenon and, in published experi-
the 1920s, with the widespread introduction of radio re-
ments (1887-1888), was able to demonstrate the exis-
ceivers, particularly in Europe and the United States. Be-
tence of electromagnetic waves in an experiment confirm-
sides broadcasting, point-to-point broadcasting, includ-
ing Maxwell’s theory of electromagnetism. The discovery
ing telephone messages and relays of radio programs, be-
of these “Hertzian waves” (radio waves) prompted many
came widespread in the 1920s and 1930s. Another use of
experiments by physicists. An August 1894 lecture by
radio in the pre-war years was the development of detec-
the British physicist Oliver Lodge, where he transmitted
tion and locating of aircraft and ships by the use of radar
and received “Hertzian waves” at distances up to 50 me-
(RAdio Detection And Ranging).
ters, was followed up a year later with experiments by
Indian physicist Jagadish Bose in radio microwave optics Today, radio takes many forms, including wireless net-
and construction of a radio based lightning detector by works and mobile communications of all types, as well as
Russian physicist Alexander Stepanovich Popov. Start- radio broadcasting. Before the advent of television, com-
ing in late 1894, Guglielmo Marconi began pursuing the mercial radio broadcasts included not only news and mu-
idea of building a wireless telegraphy system based on sic, but dramas, comedies, variety shows, and many other
Hertzian waves (radio). Marconi gained a patent on the forms of entertainment (the era from the late 1920s to
system in 1896 and developed it into a commercial com- the mid-1950s is commonly called radio’s “Golden Age”).
munication system over the next few years.[22] Radio was unique among methods of dramatic presenta-
tion in that it used only sound. For more, see radio pro-
Early 20th century radio systems transmitted messages
gramming.
by continuous wave code only. Early attempts at devel-
oping a system of amplitude modulation for voice and
music were demonstrated in 1900 and 1906, but had lit-
tle success. World War I accelerated the development of 55.5.1 Audio
radio for military communications, and in this era the first
vacuum tubes were applied to radio transmitters and re- One-way
ceivers. Electronic amplification was a key development
in changing radio from an experimental practice by ex- Main article: Radio broadcasting
perts into a home appliance. After the war, commercial AM radio uses amplitude modulation, in which the am-
radio broadcasting began in the 1920s and became an im- plitude of the transmitted signal is made proportional to
portant mass medium for entertainment and news. the sound amplitude captured (transduced) by the mi-
World War II again accelerated development of radio for crophone, while the transmitted frequency remains un-
the wartime purposes of aircraft and land communica- changed. Transmissions are affected by static and in-
tion, radio navigation and radar. After the war, the ex- terference because lightning and other sources of radio
periments in television that had been interrupted were re- emissions on the same frequency add their amplitudes to
sumed, and it also became an important home entertain- the original transmitted amplitude.
ment medium. In the early part of the 20th century, American AM ra-
310 CHAPTER 55. RADIO

Bakelite radio at the Bakelite Museum, Orchard Mill, Williton, Bush House, old home of the BBC World Service.
Somerset, UK.

FM broadcast radio sends music and voice with less noise


than AM radio. It is often mistakenly thought that FM is
higher fidelity than AM, but that is not true. AM is capa-
ble of the same audio bandwidth that FM employs. AM
receivers typically use narrower filters in the receiver to
recover the signal with less noise. AM stereo receivers
can reproduce the same audio bandwidth that FM does
due to the wider filter used in an AM stereo receiver,
but today, AM radios limit the audio bandpass to 3–5
kHz. In frequency modulation, amplitude variation at the
microphone causes the transmitter frequency to fluctuate.
Because the audio signal modulates the frequency and not
the amplitude, an FM signal is not subject to static and
A Fisher 500 AM/FM hi-fi receiver from 1959.
interference in the same way as AM signals. Due to its
need for a wider bandwidth, FM is transmitted in the Very
High Frequency (VHF, 30 MHz to 300 MHz) radio spec-
dio stations broadcast with powers as high as 500 kW, trum.
and some could be heard worldwide; these stations’ trans-
mitters were commandeered for military use by the US VHF radio waves act more like light, traveling in straight
Government during World War II. Currently, the max- lines; hence the reception range is generally limited to
imum broadcast power for a civilian AM radio station about 50–200 miles (80–322 km). During unusual up-
in the United States and Canada is 50 kW, and the ma- per atmospheric conditions, FM signals are occasionally
jority of stations that emit signals this powerful were reflected back towards the Earth by the ionosphere, re-
grandfathered in (see List of 50 kW AM radio stations sulting in long distance FM reception. FM receivers are
in the United States). In 1986 KTNN received the last subject to the capture effect, which causes the radio to
granted 50,000-watt class A license. These 50 kW sta- only receive the strongest signal when multiple signals ap-
tions are generally called "clear channel" stations (not to pear on the same frequency. FM receivers are relatively
be confused with Clear Channel Communications), be- immune to lightning and spark interference.
cause within North America each of these stations has High power is useful in penetrating buildings, diffracting
exclusive use of its broadcast frequency throughout part around hills, and refracting in the dense atmosphere near
or all of the broadcast day. the horizon for some distance beyond the horizon. Conse-
55.5. USES OF RADIO 311

quently, 100,000-watt FM stations can regularly be heard Marine voice radios can use single sideband voice (SSB)
up to 100 miles (160 km) away, and farther, 150 miles in the shortwave High Frequency (HF—3 MHz to 30
(240 km), if there are no competing signals. MHz) radio spectrum for very long ranges or Marine
A few old, “grandfathered” stations do not conform to VHF radio / narrowband FM in the VHF spectrum for
these power rules. WBCT-FM (93.7) in Grand Rapids, much shorter ranges. Narrowband FM sacrifices fidelity
Michigan, US, runs 320,000 watts ERP, and can increase to make more channels available within the radio spec-
to 500,000 watts ERP by the terms of its original license. trum, by using a smaller range of radio frequencies, usu-
Such a huge power level does not usually help to increase ally with five kHz of deviation, versus the 75 kHz used
by commercial FM broadcasts, and 25 kHz used for TV
range as much as one might expect, because VHF fre-
quencies travel in nearly straight lines over the horizon sound.
and off into space. Nevertheless, when there were fewer Government, police, fire and commercial voice services
FM stations competing, this station could be heard near also use narrowband FM on special frequencies. Early
Bloomington, Illinois, US, almost 300 miles (480 km) police radios used AM receivers to receive one-way dis-
away. patches.
FM subcarrier services are secondary signals transmitted Civil and military HF (high frequency) voice services use
in a “piggyback” fashion along with the main program. shortwave radio to contact ships at sea, aircraft and iso-
Special receivers are required to utilize these services. lated settlements. Most use single sideband voice (SSB),
Analog channels may contain alternative programming, which uses less bandwidth than AM.[24] On an AM ra-
such as reading services for the blind, background mu- dio SSB sounds like ducks quacking, or the adults in a
sic or stereo sound signals. In some extremely crowded Charlie Brown cartoon. Viewed as a graph of frequency
metropolitan areas, the sub-channel program might be an versus power, an AM signal shows power where the fre-
alternate foreign-language radio program for various eth- quencies of the voice add and subtract with the main radio
nic groups. Sub-carriers can also transmit digital data, frequency. SSB cuts the bandwidth in half by suppressing
such as station identification, the current song’s name, the carrier and one of the sidebands. This also makes the
web addresses, or stock quotes. In some countries, FM transmitter about three times more powerful, because it
radios automatically re-tune themselves to the same chan- doesn't need to transmit the unused carrier and sideband.
nel in a different district by using sub-bands. TETRA, Terrestrial Trunked Radio is a digital cell phone
system for military, police and ambulances. Commercial
services such as XM, WorldSpace and Sirius offer en-
Two-way crypted digital satellite radio.

Main article: Two-way radio


55.5.2 Telephony
Aviation voice radios use Aircraft band VHF AM. AM Mobile phones transmit to a local cell site (trans-
is used so that multiple stations on the same channel can mitter/receiver) that ultimately connects to the public
be received. (Use of FM would result in stronger sta- switched telephone network (PSTN) through an optic
tions blocking out reception of weaker stations due to fiber or microwave radio and other network elements.
FM’s capture effect). Aircraft fly high enough that their When the mobile phone nears the edge of the cell site’s
transmitters can be received hundreds of miles away, even radio coverage area, the central computer switches the
though they are using VHF. phone to a new cell. Cell phones originally used FM, but
now most use various digital modulation schemes. Re-
cent developments in Sweden (such as DROPme) allow
for the instant downloading of digital material from a ra-
dio broadcast (such as a song) to a mobile phone.
Satellite phones use satellites rather than cell towers to
communicate.

55.5.3 Video
Analog television sends the picture as AM and the sound
as AM or FM, with the sound carrier a fixed frequency
(4.5 MHz in the NTSC system) away from the video car-
rier. Analog television also uses a vestigial sideband on
the video carrier to reduce the bandwidth required.
Degen DE1103, an advanced world mini-receiver with single
sideband modulation and dual conversion Digital television uses 8VSB modulation in North Amer-
312 CHAPTER 55. RADIO

ica (under the ATSC digital television standard), and gation potential to civil aircraft.
COFDM modulation elsewhere in the world (using the
DVB-T standard). A Reed–Solomon error correction
code adds redundant correction codes and allows reli- 55.5.5 Radar
able reception during moderate data loss. Although many
current and future codecs can be sent in the MPEG Main article: Radar
transport stream container format, as of 2006 most sys-
tems use a standard-definition format almost identical to
DVD: MPEG-2 video in Anamorphic widescreen and Radar (Radio Detection And Ranging) detects objects at
MPEG layer 2 (MP2) audio. High-definition television a distance by bouncing radio waves off them. The delay
is possible simply by using a higher-resolution picture, caused by the echo measures the distance. The direction
but H.264/AVC is being considered as a replacement of the beam determines the direction of the reflection.
video codec in some regions for its improved compres- The polarization and frequency of the return can sense
sion. With the compression and improved modulation the type of surface. Navigational radars scan a wide area
involved, a single “channel” can contain a high-definition two to four times per minute. They use very short waves
program and several standard-definition programs. that reflect from earth and stone. They are common on
commercial ships and long-distance commercial aircraft.
General purpose radars generally use navigational radar
55.5.4 Navigation frequencies, but modulate and polarize the pulse so the
receiver can determine the type of surface of the reflec-
Main article: Radio navigation tor. The best general-purpose radars distinguish the rain
of heavy storms, as well as land and vehicles. Some can
All satellite navigation systems use satellites with preci- superimpose sonar data and map data from GPS position.
sion clocks. The satellite transmits its position, and the Search radars scan a wide area with pulses of short ra-
time of the transmission. The receiver listens to four dio waves. They usually scan the area two to four times
satellites, and can figure its position as being on a line that a minute. Sometimes search radars use the Doppler ef-
is tangent to a spherical shell around each satellite, deter- fect to separate moving vehicles from clutter. Targeting
mined by the time-of-flight of the radio signals from the radars use the same principle as search radar but scan a
satellite. A computer in the receiver does the math. much smaller area far more often, usually several times a
Radio direction-finding is the oldest form of radio nav- second or more. Weather radars resemble search radars,
igation. Before 1960 navigators used movable loop an- but use radio waves with circular polarization and a wave-
tennas to locate commercial AM stations near cities. length to reflect from water droplets. Some weather radar
In some cases they used marine radiolocation beacons, use the Doppler effect to measure wind speeds.
which share a range of frequencies just above AM radio
with amateur radio operators. LORAN systems also used
time-of-flight radio signals, but from radio stations on the 55.5.6 Data (digital radio)
ground.
Very High Frequency Omnidirectional Range (VOR),
systems (used by aircraft), have an antenna array that
transmits two signals simultaneously. A directional sig-
nal rotates like a lighthouse at a fixed rate. When the di-
rectional signal is facing north, an omnidirectional signal
pulses. By measuring the difference in phase of these
two signals, an aircraft can determine its bearing or ra-
dial from the station, thus establishing a line of position.
An aircraft can get readings from two VORs and locate
its position at the intersection of the two radials, known
as a "fix.”
When the VOR station is collocated with DME (Distance
Measuring Equipment), the aircraft can determine its
bearing and range from the station, thus providing a fix
from only one ground station. Such stations are called 2008 Pure One Classic digital radio
VOR/DMEs. The military operates a similar system
of navaids, called TACANs, which are often built into Most new radio systems are digital, including Digital TV,
VOR stations. Such stations are called VORTACs. Be- satellite radio, and Digital Audio Broadcasting. The old-
cause TACANs include distance measuring equipment, est form of digital broadcast was spark gap telegraphy,
VOR/DME and VORTAC stations are identical in navi- used by pioneers such as Marconi. By pressing the key,
55.5. USES OF RADIO 313

the operator could send messages in Morse code by en- sions. Commercial use of spread spectrum began in the
ergizing a rotating commutating spark gap. The rotat- 1980s. Bluetooth, most cell phones, and the 802.11b ver-
ing commutator produced a tone in the receiver, where sion of Wi-Fi each use various forms of spread spectrum.
a simple spark gap would produce a hiss, indistinguish- Systems that need reliability, or that share their fre-
able from static. Spark-gap transmitters are now illegal, quency with other services, may use “coded orthogonal
because their transmissions span several hundred mega- frequency-division multiplexing” or COFDM. COFDM
hertz. This is very wasteful of both radio frequencies and breaks a digital signal into as many as several hundred
power. slower subchannels. The digital signal is often sent as
The next advance was continuous wave telegraphy, or QAM on the subchannels. Modern COFDM systems use
CW (Continuous Wave), in which a pure radio frequency, a small computer to make and decode the signal with
produced by a vacuum tube electronic oscillator was digital signal processing, which is more flexible and far
switched on and off by a key. A receiver with a local oscil- less expensive than older systems that implemented sep-
lator would "heterodyne" with the pure radio frequency, arate electronic channels.
creating a whistle-like audio tone. CW uses less than 100 COFDM resists fading and ghosting because the narrow-
Hz of bandwidth. CW is still used, these days primar- channel QAM signals can be sent slowly. An adaptive
ily by amateur radio operators (hams). Strictly, on-off system, or one that sends error-correction codes can also
keying of a carrier should be known as “Interrupted Con- resist interference, because most interference can affect
tinuous Wave” or ICW or on-off keying (OOK). only a few of the QAM channels. COFDM is used for
Radioteletype equipment usually operates on short-wave Wi-Fi, some cell phones, Digital Radio Mondiale, Eureka
(HF) and is much loved by the military because they cre- 147, and many other local area network, digital TV and
ate written information without a skilled operator. They radio standards.
send a bit as one of two tones using frequency-shift key-
ing. Groups of five or seven bits become a character
printed by a teleprinter. From about 1925 to 1975, ra- 55.5.7 Heating
dioteletype was how most commercial messages were
sent to less developed countries. These are still used by Main article: Radio-frequency heating
the military and weather services.
Aircraft use a 1200 Baud radioteletype service over VHF Radio-frequency energy generated for heating of objects
to send their ID, altitude and position, and get gate is generally not intended to radiate outside of the gener-
and connecting-flight data. Microwave dishes on satel- ating equipment, to prevent interference with other radio
lites, telephone exchanges and TV stations usually use signals. Microwave ovens use intense radio waves to heat
quadrature amplitude modulation (QAM). QAM sends food. Diathermy equipment is used in surgery for sealing
data by changing both the phase and the amplitude of of blood vessels. Induction furnaces are used for melting
the radio signal. Engineers like QAM because it packs metal for casting, and induction hobs for cooking.
the most bits into a radio signal when given an exclusive
(non-shared) fixed narrowband frequency range. Usually
the bits are sent in “frames” that repeat. A special bit 55.5.8 Amateur radio service
pattern is used to locate the beginning of a frame.

Modern GPS receivers.

Communication systems that limit themselves to a fixed


narrowband frequency range are vulnerable to jamming. Amateur radio station with multiple receivers and transceivers
A variety of jamming-resistant spread spectrum tech-
niques were initially developed for military use, most fa- Amateur radio, also known as “ham radio”, is a hobby
mously for Global Positioning System satellite transmis- in which enthusiasts are licensed to communicate on a
314 CHAPTER 55. RADIO

number of bands in the radio frequency spectrum non- 55.7 Notes


commercially and for their own experiments. They may
also provide emergency and service assistance in excep- [1] While the term 'radio-' is actually the combining form of
tional circumstances. This contribution has been very radiant (e.g., radioactive, radiotherapy), the process that
beneficial in saving lives in many instances.[25] was originally called radiotelegraphy has become so com-
mon that it is nearly always called just 'radio' and the as-
Radio amateurs use a variety of modes, including effi- sociated electromagnetic waves are called radio waves. In
cient ones like Morse code and experimental ones like practice, radio frequencies are significantly below that of
Low-Frequency Experimental Radio. Several forms of visible light from about 3 kHz to 300 GHz.[1]
radio were pioneered by radio amateurs and later became
commercially important, including FM, single-sideband
(SSB), AM, digital packet radio and satellite repeaters. 55.8 References
Some amateur frequencies may be disrupted illegally by
power-line internet service.
[1] Dictionary of Electronics By Rudolf F. Graf (1974). Page
467.
55.5.9 Unlicensed radio services [2] “Radio-Electronics, ''Radio Receiver Technology''".
Radio-electronics.com. Retrieved 2014-08-02.
Unlicensed, government-authorized personal radio ser-
vices such as Citizens’ band radio in Australia, most of [3] The Electromagnetic Spectrum, University of Tennessee,
Dept. of Physics and Astronomy
the Americas, and Europe, and Family Radio Service and
Multi-Use Radio Service in North America exist to pro- [4] Clint Smith, Curt Gervelis (2003). Wireless Network Per-
vide simple, usually short range communication for indi- formance Handbook. McGraw-Hill Professional. ISBN
viduals and small groups, without the overhead of licens- 0-07-140655-7.
ing. Similar services exist in other parts of the world.
[5] R. K. Puri (2004). Solid State Physics and Electronics. S.
These radio services involve the use of handheld units.
Chand. ISBN 81-219-1475-2.
Wi-Fi also operates in unlicensed radio bands and is very
[6] “Production of Sound by Radiant Energy” by Alexander
widely used to network computers.
Graham Bell, Popular Science Monthly, July, 1881, pages
Free radio stations, sometimes called pirate radio or 329-330: "[W]e have named the apparatus for the pro-
“clandestine” stations, are unauthorized, unlicensed, il- duction and reproduction of sound in this way the “pho-
legal broadcasting stations. These are often low power tophone”, because an ordinary beam of light contains the
transmitters operated on sporadic schedules by hobbyists, rays which are operative. To avoid in future any misun-
community activists, or political and cultural dissidents. derstandings upon this point, we have decided to adopt the
term "radiophone", proposed by M. Mercadier, as a gen-
Some pirate stations operating offshore in parts of Eu-
eral term signifying the production of sound by any form
rope and the United Kingdom more closely resembled
of radiant energy...”
legal stations, maintaining regular schedules, using high
power, and selling commercial advertising time.[26][27] [7] “The Genesis of Wireless Telegraphy” by A. Frederick
Collins, Electrical World and Engineer, May 10, 1902,
page 811.
55.5.10 Radio control (RC)
[8] “Wireless Telegraphy”, The Practical Engineer, February
25, 1898, page 174. “Dr. O. J. Lodge, who preceded Mar-
Radio remote controls use radio waves to transmit con-
coni in making experiments in what may be called “ray”
trol data to a remote object as in some early forms telegraphy or radiotelegraphy by a year or two, has devised
of guided missile, some early TV remotes and a range a new method of sending and receiving the messages. The
of model boats, cars and airplanes. Large industrial reader will understand that in the radiotelegraph electric
remote-controlled equipment such as cranes and switch- waves forming the signals of the message start from the
ing locomotives now usually use digital radio techniques sending instrument and travel in all directions like rays of
to ensure safety and reliability. light from a lamp, only they are invisible.”
In Madison Square Garden, at the Electrical Exhibi- [9] “Wireless Telegraphy”, The Electrical Review (London),
tion of 1898, Nikola Tesla successfully demonstrated a January 20, 1905, page 108, quoting from the British Post
radio-controlled boat.[28] He was awarded U.S. patent Office’s December 30, 1904 Post Office Circular.
No. 613,809 for a “Method of and Apparatus for Con-
[10] “Interference with Wireless Messages”, Electrical World,
trolling Mechanism of Moving Vessels or Vehicles.”[29]
June 22, 1907, page 1270.

[11] “Radio-Electronics, ''Radio Receiver Technology''".


55.6 See also Radio-electronics.com. Retrieved 2014-08-02.

[12] The Electromagnetic Spectrum, University of Tennessee,


• Outline of radio Dept. of Physics and Astronomy
55.9. EXTERNAL LINKS 315

[13] Clint Smith, Curt Gervelis (2003). Wireless Network Per-


formance Handbook. McGraw-Hill Professional. ISBN
0-07-140655-7.

[14] Macario, R. C. V. (1996). Modern personal radio sys-


tems. IEE telecommunications series, 33. London: Insti-
tution of Electrical Engineers. Page 3.

[15] R. K. Puri (2004). Solid State Physics and Electronics. S.


Chand. ISBN 81-219-1475-2.

[16] web.pdx.edu/~{}bseipel/Lecture%20notes%206-%
20203%20EMwaves.pdf

[17] T. K. Sarkar, Robert Mailloux, Arthur A. Oliner, M.


Salazar-Palma, Dipak L. Sengupta , History of Wireless,
John Wiley & Sons - 2006, pages 258-261

[18] Christopher H. Sterling, Encyclopedia of Radio 3-


Volume, Routledge - 2004, page 831

[19] Anand Kumar Sethi, The Business of Electronics: A Con-


cise History, Palgrave Macmillan - 2013, page 22

[20] ieeeghn.org, IEEE Global History Network, Etheric Force

[21] W. Bernard Carlson, Innovation as a Social Process: Elihu


Thomson and the Rise of General Electric, Cambridge
University Press - 2003, pages 57-58

[22] “U.S. Supreme Court”. Retrieved 2012-04-23.

[23] “The History Of KQW Radio - KCBS”. Bayarearadio.org.


Retrieved 2009-07-22.

[24] “Audio example of SSB”. Retrieved 2014-08-02.

[25] "Amateur Radio “Saved Lives” in South Asia". Arrl.org.


2004-12-29. Archived from the original on 2007-10-13.

[26] Free radio: electronic civil disobedience by Lawrence C.


Soley. Published by Westview Press, 1998. ISBN 0-8133-
9064-8, ISBN 978-0-8133-9064-2

[27] Rebel Radio: The Full Story of British Pirate Radio by John
Hind, Stephen Mosco. Published by Pluto Press, 1985.
ISBN 0-7453-0055-3, ISBN 978-0-7453-0055-9

[28] “Tesla - Master of Lightning: Remote Control”. PBS. Re-


trieved 2009-07-22.

[29] “Tesla - Master of Lightning: Selected Tesla Patents”.


PBS. Retrieved 2009-07-22.

55.9 External links


Chapter 56

Semantics

Semantics (from Ancient Greek: σημαντικός sēman- 56.1 Linguistics


tikos, “significant”)[1][2] is primarily the linguistic, and
also philosophical study of meaning—in language, pro- In linguistics, semantics is the subfield that is devoted
gramming languages, formal logics, and semiotics. It fo- to the study of meaning, as inherent at the levels of
cuses on the relationship between signifiers—like words, words, phrases, sentences, and larger units of discourse
phrases, signs, and symbols—and what they stand for, (termed texts, or narratives). The study of semantics
their denotation. is also closely linked to the subjects of representation,
In international scientific vocabulary semantics is also reference and denotation. The basic study of semantics is
called semasiology. The word semantics was first used by oriented to the examination of the meaning of signs, and
Michel Bréal, a French philologist.[3] It denotes a range the study of relations between different linguistic units
of ideas—from the popular to the highly technical. It and compounds: homonymy, synonymy, antonymy,
is often used in ordinary language for denoting a prob- hypernymy, hyponymy, meronymy, metonymy,
lem of understanding that comes down to word selection holonymy, paronyms. A key concern is how mean-
or connotation. This problem of understanding has been ing attaches to larger chunks of text, possibly as a result
the subject of many formal enquiries, over a long period of the composition from smaller units of meaning.
of time, especially in the field of formal semantics. In Traditionally, semantics has included the study of sense
linguistics, it is the study of the interpretation of signs or and denotative reference, truth conditions, argument
symbols used in agents or communities within particular structure, thematic roles, discourse analysis, and the
circumstances and contexts.[4] Within this view, sounds, linkage of all of these to syntax.
facial expressions, body language, and proxemics have se-
mantic (meaningful) content, and each comprises several
branches of study. In written language, things like para-
graph structure and punctuation bear semantic content; 56.2 Montague grammar
other forms of language bear other semantic content.[4]
The formal study of semantics intersects with many other In the late 1960s, Richard Montague proposed a system
fields of inquiry, including lexicology, syntax, pragmatics, for defining semantic entries in the lexicon in terms of the
etymology and others. Independently, semantics is also lambda calculus. In these terms, the syntactic parse of
a well-defined field in its own right, often with synthetic the sentence John ate every bagel would consist of a sub-
properties.[5] In the philosophy of language, semantics ject (John) and a predicate (ate every bagel); Montague
and reference are closely connected. Further related fields demonstrated that the meaning of the sentence altogether
include philology, communication, and semiotics. The could be decomposed into the meanings of its parts and
formal study of semantics can therefore be manifold and in relatively few rules of combination. The logical predi-
complex. cate thus obtained would be elaborated further, e.g. using
truth theory models, which ultimately relate meanings to
Semantics contrasts with syntax, the study of the combi- a set of Tarskiian universals, which may lie outside the
natorics of units of a language (without reference to their logic. The notion of such meaning atoms or primitives
meaning), and pragmatics, the study of the relationships is basic to the language of thought hypothesis from the
between the symbols of a language, their meaning, and 1970s.
the users of the language.[6] Semantics as a field of study
also has significant ties to various representational theo- Despite its elegance, Montague grammar was limited by
ries of meaning including truth theories of meaning, co- the context-dependent variability in word sense, and led
herence theories of meaning, and correspondence theo- to several attempts at incorporating context, such as:
ries of meaning. Each of these is related to the general
philosophical study of reality and the representation of • Situation semantics (1980s): truth-values are in-
meaning. complete, they get assigned based on context

316
56.4. PROTOTYPE THEORY 317

• Generative lexicon (1990s): categories (types) are afraid') has its particular value only because
incomplete, and get assigned based on context they stand in contrast with one another. No
word has a value that can be identified inde-
pendently of what else is in its vicinity.[11]
56.3 Dynamic turn in semantics
and may go back to earlier Indian views on language, es-
In Chomskyan linguistics there was no mechanism for pecially the Nyaya view [12]
of words as indicators and not
the learning of semantic relations, and the nativist view carriers of meaning.
considered all semantic notions as inborn. Thus, even An attempt to defend a system based on propositional
novel concepts were proposed to have been dormant in meaning for semantic underspecification can be found
some sense. This view was also thought unable to address in the generative lexicon model of James Pustejovsky,
many issues such as metaphor or associative meanings, who extends contextual operations (based on type shift-
and semantic change, where meanings within a linguis- ing) into the lexicon. Thus meanings are generated “on
tic community change over time, and qualia or subjective the fly” (as you go), based on finite context.
experience. Another issue not addressed by the nativist
model was how perceptual cues are combined in thought,
e.g. in mental rotation.[7] 56.4 Prototype theory
This view of semantics, as an innate finite meaning
inherent in a lexical unit that can be composed to Another set of concepts related to fuzziness in seman-
generate meanings for larger chunks of discourse, is tics is based on prototypes. The work of Eleanor Rosch
now being fiercely debated in the emerging domain of in the 1970s led to a view that natural categories are not
cognitive linguistics[8] and also in the non-Fodorian camp characterizable in terms of necessary and sufficient con-
in philosophy of language.[9] The challenge is motivated ditions, but are graded (fuzzy at their boundaries) and in-
by: consistent as to the status of their constituent members.
One may compare it with Jung's archetype, though the
• factors internal to language, such as the problem of concept of archetype sticks to static concept. Some post-
resolving indexical or anaphora (e.g. this x, him, last structuralists are against the fixed or static meaning of the
week). In these situations context serves as the input, words. Derrida, following Nietzsche, talked about slip-
but the interpreted utterance also modifies the con- pages in fixed meanings.
text, so it is also the output. Thus, the interpretation
Systems of categories are not objectively out there in
is necessarily dynamic and the meaning of sentences
the world but are rooted in people’s experience. These
is viewed as contexts changing potentials instead of
categories evolve as learned concepts of the world –
propositions.
meaning is not an objective truth, but a subjective con-
• factors external to language, i.e. language is not a set struct, learned from experience, and language arises out
of labels stuck on things, but “a toolbox, the impor- of the “grounding of our conceptual systems in shared
tance of whose elements lie in the way they function embodiment and bodily experience”.[13] A corollary of
rather than their attachments to things.”[9] This view this is that the conceptual categories (i.e. the lexicon)
reflects the position of the later Wittgenstein and his will not be identical for different cultures, or indeed, for
famous game example, and is related to the positions every individual in the same culture. This leads to an-
of Quine, Davidson, and others. other debate (see the Sapir–Whorf hypothesis or Eskimo
words for snow).
A concrete example of the latter phenomenon is se-
mantic underspecification – meanings are not complete
without some elements of context. To take an exam- 56.5 Theories in semantics
ple of one word, red, its meaning in a phrase such as
red book is similar to many other usages, and can be
viewed as compositional.[10] However, the colours im- 56.5.1 Model theoretic semantics
plied in phrases such as red wine (very dark), and red hair
(coppery), or red soil, or red skin are very different. In- Main article: formal semantics (linguistics)
deed, these colours by themselves would not be called red
by native speakers. These instances are contrastive, so red Originates from Montague’s work (see above). A highly
wine is so called only in comparison with the other kind formalized theory of natural language semantics in which
of wine (which also is not white for the same reasons). expressions are assigned denotations (meanings) such as
This view goes back to de Saussure: individuals, truth values, or functions from one of these to
another. The truth of a sentence, and more interestingly,
Each of a set of synonyms like redouter ('to its logical relation to other sentences, is then evaluated
dread'), craindre ('to fear'), avoir peur ('to be relative to a model.
318 CHAPTER 56. SEMANTICS

56.5.2 Formal (or truth-conditional) se- 56.5.5 Computational semantics


mantics
Main article: computational semantics
Main article: truth-conditional semantics
Computational semantics is focused on the processing
of linguistic meaning. In order to do this concrete al-
Pioneered by the philosopher Donald Davidson, another
gorithms and architectures are described. Within this
formalized theory, which aims to associate each natu-
framework the algorithms and architectures are also an-
ral language sentence with a meta-language description
alyzed in terms of decidability, time/space complex-
of the conditions under which it is true, for example:
ity, data structures they require and communication
'Snow is white' is true if and only if snow is white. The
protocols.[17]
challenge is to arrive at the truth conditions for any sen-
tences from fixed meanings assigned to the individual
words and fixed rules for how to combine them. In
practice, truth-conditional semantics is similar to model- 56.6 Computer science
theoretic semantics; conceptually, however, they differ
in that truth-conditional semantics seeks to connect lan- Main article: Semantics (computer science)
guage with statements about the real world (in the form
of meta-language statements), rather than with abstract In computer science, the term semantics refers to the
models. meaning of languages, as opposed to their form (syntax).
According to Euzenat, semantics “provides the rules for
interpreting the syntax which do not provide the mean-
ing directly but constrains the possible interpretations of
56.5.3 Lexical and conceptual semantics what is declared.”[18] In other words, semantics is about
interpretation of an expression. Additionally, the term
is applied to certain types of data structures specifically
Main article: conceptual semantics
designed and used for representing information content.

This theory is an effort to explain properties of argument


structure. The assumption behind this theory is that syn- 56.6.1 Programming languages
tactic properties of phrases reflect the meanings of the
words that head them.[14] With this theory, linguists can The semantics of programming languages and other lan-
better deal with the fact that subtle differences in word guages is an important issue and area of study in computer
meaning correlate with other differences in the syntactic science. Like the syntax of a language, its semantics can
structure that the word appears in.[14] The way this is gone be defined exactly.
about is by looking at the internal structure of words.[15] For instance, the following statements use different syn-
These small parts that make up the internal structure of taxes, but cause the same instructions to be executed:
words are termed semantic primitives.[15]
Generally these operations would all perform an arith-
metical addition of 'y' to 'x' and store the result in a vari-
able called 'x'.
Various ways have been developed to describe the
56.5.4 Lexical semantics semantics of programming languages formally, building
on mathematical logic:[19]
Main article: lexical semantics
• Operational semantics: The meaning of a construct
A linguistic theory that investigates word meaning. This is specified by the computation it induces when it is
theory understands that the meaning of a word is fully executed on a machine. In particular, it is of interest
reflected by its context. Here, the meaning of a word how the effect of a computation is produced.
is constituted by its contextual relations.[16] Therefore, • Denotational semantics: Meanings are modelled by
a distinction between degrees of participation as well as mathematical objects that represent the effect of ex-
modes of participation are made.[16] In order to accom- ecuting the constructs. Thus only the effect is of in-
plish this distinction any part of a sentence that bears a terest, not how it is obtained.
meaning and combines with the meanings of other con-
stituents is labeled as a semantic constituent. Seman- • Axiomatic semantics: Specific properties of the ef-
tic constituents that cannot be broken down into more fect of executing the constructs are expressed as as-
elementary constituents are labeled minimal semantic sertions. Thus there may be aspects of the execu-
constituents.[16] tions that are ignored.
56.8. SEE ALSO 319

56.6.2 Semantic models • Colorless green ideas sleep furiously

Terms such as semantic network and semantic data model • Computational semantics
are used to describe particular types of data model char-
• Discourse representation theory
acterized by the use of directed graphs in which the ver-
tices denote concepts or entities in the world, and the arcs • General semantics
denote relationships between them.
• Generative semantics
The Semantic Web refers to the extension of the World
Wide Web via embedding added semantic metadata, us- • Hermeneutics
ing semantic data modelling techniques such as Resource
Description Framework (RDF) and Web Ontology Lan- • Natural semantic metalanguage
guage (OWL).
• Onomasiology

• Phono-semantic matching
56.7 Psychology
• Pragmatic maxim
In psychology, semantic memory is memory for meaning • Pragmaticism
– in other words, the aspect of memory that preserves
only the gist, the general significance, of remembered • Pragmatism
experience – while episodic memory is memory for the
• Problem of universals
ephemeral details – the individual features, or the unique
particulars of experience. The term 'episodic memory' • Semantic change or progression
was introduced by Tulving and Schacter in the context
of 'declarative memory' which involved simple associa- • Semantic class
tion of factual or objective information concerning its ob-
ject. Word meaning is measured by the company they • Semantic feature
keep, i.e. the relationships among words themselves in • Semantic field
a semantic network. The memories may be transferred
intergenerationally or isolated in one generation due to a • Semantic lexicon
cultural disruption. Different generations may have dif-
ferent experiences at similar points in their own time- • Semantic primes
lines. This may then create a vertically heterogeneous
• Semantic property
semantic net for certain words in an otherwise homoge-
[20]
neous culture. In a network created by people analyz- • Sememe
ing their understanding of the word (such as Wordnet)
the links and decomposition structures of the network are • Semiosis
few in number and kind, and include part of, kind of,
• Semiotics
and similar links. In automated ontologies the links are
computed vectors without explicit meaning. Various au- • SPL notation
tomated technologies are being developed to compute the
meaning of words: latent semantic indexing and support
vector machines as well as natural language processing, 56.8.2 Logic and mathematics
neural networks and predicate calculus techniques.
Ideasthesia is a psychological phenomenon in which ac- • Formal logic
tivation of concepts evokes sensory experiences. For ex- • Game semantics
ample, in synesthesia, activation of a concept of a letter
(e.g., that of the letter A) evokes sensory-like experiences • Model theory
(e.g., of red color).
• Gödel’s incompleteness theorems

• Proof-theoretic semantics
56.8 See also
• Semantic consequence
56.8.1 Linguistics and semiotics • Semantic theory of truth

• Asemic writing • Semantics of logic

• Cognitive semantics • Truth-value semantics


320 CHAPTER 56. SEMANTICS

56.8.3 Computer science [7] Barsalou, L.; Perceptual Symbol Systems, Behavioral and
Brain Sciences, 22(4), 1999
• Formal semantics of programming languages
[8] Langacker, Ronald W. (1999). Grammar and Conceptu-
• Knowledge representation alization. Berlin/New York: Mouton de Gruyer. ISBN
3-11-016603-8.
• Semantic networks
[9] Peregrin, Jaroslav (2003). Meaning: The Dynamic Turn.
• Semantic transversal Current Research in the Semantics/Pragmatics Interface.
London: Elsevier.
• Semantic analysis
[10] Gärdenfors, Peter (2000). Conceptual Spaces: The Ge-
• Semantic compression ometry of Thought. MIT Press/Bradford Books. ISBN
978-0-585-22837-2.
• Semantic HTML
[11] de Saussure, Ferdinand (1916). The Course of General
• Semantic integration Linguistics (Cours de linguistique générale).

• Semantic interpretation [12] Matilal, Bimal Krishna (1990). The Word and the World:
India’s Contribution to the Study of Language. Oxford.
• Semantic link The Nyaya and Mimamsa schools in Indian vyākaraṇa tra-
dition conducted a centuries-long debate on whether sen-
• Semantic reasoner tence meaning arises through composition on word mean-
ings, which are primary; or whether word meanings are
• Semantic service oriented architecture obtained through analysis of sentences where they appear.
(Chapter 8).
• Semantic spectrum
[13] Lakoff, George; Johnson, Mark (1999). Philosophy in the
• Semantic unification
Flesh: The embodied mind and its challenge to Western
• Semantic Web thought. Chapter 1. New York, NY: Basic Books. OCLC
93961754.

[14] Levin, Beth; Pinker, Steven; Lexical & Conceptual Seman-


56.8.4 Psychology tics, Blackwell, Cambridge, MA, 1991

• Ideasthesia [15] Jackendoff, Ray; Semantic Structures, MIT Press, Cam-


bridge, MA, 1990

[16] Cruse, D.; Lexical Semantics, Cambridge University Press,


56.9 References Cambridge, MA, 1986

[1] σημαντικός. Liddell, Henry George; Scott, Robert; A [17] Nerbonne, J.; The Handbook of Contemporary Seman-
Greek–English Lexicon at the Perseus Project tic Theory (ed. Lappin, S.), Blackwell Publishing, Cam-
bridge, MA, 1996
[2] The word is derived from the Ancient Greek word ση-
μαντικός (semantikos), “related to meaning, significant”, [18] Euzenat, Jerome. Ontology Matching. Springer-Verlag
from σημαίνω semaino, “to signify, to indicate”, which is Berlin Heidelberg, 2007, p. 36
from σῆμα sema, “sign, mark, token”. The plural is used
[19] Nielson, Hanne Riis; Nielson, Flemming (1995). Seman-
in analogy with words similar to physics, which was in the
tics with Applications, A Formal Introduction (1st ed.).
neuter plural in Ancient Greek and meant “things relating
Chicester, England: John Wiley & Sons. ISBN 0-471-
to nature”.
92980-8.
[3] Chambers Biographical Dictionary,5e.1990,p.202
[20] Giannini, A. J.; Semiotic and Semantic Implications of
[4] Neurath, Otto; Carnap, Rudolf; Morris, Charles F. W. “Authenticity”, Psychological Reports, 106(2):611–612,
(Editors) (1955). International Encyclopedia of Unified 2010
Science. Chicago, IL: University of Chicago Press.

[5] Cruse, Alan; Meaning and Language: An introduction to


Semantics and Pragmatics, Chapter 1, Oxford Textbooks
56.10 External links
in Linguistics, 2004; Kearns, Kate; Semantics, Palgrave
MacMillan 2000; Cruse, D. A.; Lexical Semantics, Cam- • semanticsarchive.net
bridge, MA, 1986.
• Teaching page for A-level semantics
[6] Kitcher, Philip; Salmon, Wesley C. (1989). Scientific Ex-
planation. Minneapolis, MN: University of Minnesota • Chomsky, Noam; On Referring, Harvard University,
Press. p. 35. 30 October 2007 (video)
56.10. EXTERNAL LINKS 321

• Jackendoff, Ray; Conceptual Semantics, Harvard


University, 13 November 2007 (video)
• Semantics: an interview with Jerry Fodor (ReVEL,
vol. 5, no. 8 (2007))
Chapter 57

SOAP

This article is about the computer network protocol. For generated data comes in a standardized machine-parsable
surfactants use for cleaning, see Soap. For other uses, format, the requesting application can then integrate it di-
see Soap (disambiguation). rectly.
The SOAP architecture consists of several layers of spec-
SOAP (Simple Object Access Protocol) is a protocol ifications for:
specification for exchanging structured information in the
implementation of web services in computer networks. It • message format
uses XML Information Set for its message format, and re-
lies on application layer protocols, most often Hypertext • Message Exchange Patterns (MEP)
Transfer Protocol (HTTP) or Simple Mail Transfer Pro- • underlying transport protocol bindings
tocol (SMTP), for message negotiation and transmission.
• message processing models
• protocol extensibility
57.1 Characteristics
SOAP evolved as a successor of XML-RPC, though
SOAP provides the Messaging Protocol layer of a web it borrows its transport and interaction neutrality and
services protocol stack for web services. It is XML-based the envelope/header/body from elsewhere (probably from
protocol consisting of three parts: WDDX).

• an envelope, which defines the message structure[1]


and how to process it 57.2 History
• a set of encoding rules for expressing instances of
SOAP was designed as an object-access protocol in 1998
application-defined datatypes
by Dave Winer, Don Box, Bob Atkinson, and Mohsen Al-
• a convention for representing procedure calls and re- Ghosein for Microsoft, where Atkinson and Al-Ghosein
sponses were working.[2] Due to politics within Microsoft,[3] the
specification was not made available until it was submitted
SOAP has three major characteristics: to IETF 13 September 1999.[4][5] Because of Microsoft’s
hesitation, Dave Winer shipped XML-RPC in 1998.[6]
1. extensibility (security and WS-routing are among the The submitted Internet Draft did not reach RFC status
extensions under development) and is therefore not considered a “standard” as such. Ver-
sion 1.1 of the specification was published as a W3C Note
2. neutrality (SOAP can operate over any transport on 8 May 2000.[7] Since version 1.1 did not reach W3C
protocol such as HTTP, SMTP, TCP, UDP, or JMS) Recommendation status, it can not be considered a “stan-
dard” either. Version 1.2 of the specification, however,
3. independence (SOAP allows for any programming
became a W3C recommendation on June 24, 2003.
model)
The SOAP specification[8] was maintained by the XML
[9]
As an example of what SOAP procedures can do, an ap- Protocol Working Group of the World Wide Web Con-
plication can send a SOAP request to a server that has web sortium until the group was closed 10 July 2009. SOAP
services enabled—such as a real-estate price database— originally stood for “Simple Object Access Protocol” [10]
but
with the parameters for a search. The server then returns version 1.2 of the standard dropped this acronym.
a SOAP response (an XML-formatted document with the After SOAP was first introduced, it became the underly-
resulting data), e.g., prices, location, features. Since the ing layer of a more complex set of Web services, based

322
57.4. SOAP BUILDING BLOCKS 323

on Web Services Description Language (WSDL), XML • SOAP receiver – a SOAP node that accepts a SOAP
schema and Universal Description Discovery and Integra- message
tion (UDDI). These different services, especially UDDI,
have proved to be of far less interest, but an appreciation • SOAP message path – the set of SOAP nodes through
of them gives a more complete understanding of the ex- which a single SOAP message passes
pected role of SOAP compared to how web services have
actually evolved. • Initial SOAP sender (Originator) – the SOAP sender
that originates a SOAP message at the starting point
of a SOAP message path
57.3 Specification
• SOAP intermediary – a SOAP intermediary is both a
SOAP receiver and a SOAP sender and is targetable
from within a SOAP message. It processes the
SOAP header blocks targeted at it and acts to for-
ward a SOAP message towards an ultimate SOAP
receiver.

• Ultimate SOAP receiver – the SOAP receiver that


is a final destination of a SOAP message. It is re-
sponsible for processing the contents of the SOAP
body and any SOAP header blocks targeted at it.
In some circumstances, a SOAP message might not
reach an ultimate SOAP receiver, for example be-
cause of a problem at a SOAP intermediary. An
ultimate SOAP receiver cannot also be a SOAP in-
termediary for the same SOAP message.

57.4 SOAP building blocks


A SOAP message is an ordinary XML document contain-
SOAP structure
ing the following elements:
The SOAP specification defines the messaging frame-
work, which consists of:

• The SOAP processing model defining the rules for


57.5 Transport methods
processing a SOAP message
Both SMTP and HTTP are valid application layer pro-
• The SOAP extensibility model defining the concepts tocols used as transport for SOAP, but HTTP has gained
of SOAP features and SOAP modules wider acceptance as it works well with today’s internet in-
• The SOAP underlying protocol binding framework frastructure; specifically, HTTP works well with network
describing the rules for defining a binding to an un- firewalls. SOAP may also be used over HTTPS (which is
derlying protocol that can be used for exchanging the same protocol as HTTP at the application level, but
SOAP messages between SOAP nodes uses an encrypted transport protocol underneath) with ei-
ther simple or mutual authentication; this is the advocated
• The SOAP message construct defining the structure WS-I method to provide web service security as stated in
of a SOAP message the WS-I Basic Profile 1.1.
This is a major advantage over other distributed protocols
57.3.1 Processing model like GIOP/IIOP or DCOM, which are normally filtered
by firewalls. SOAP over AMQP is yet another possibil-
The SOAP processing model describes a distributed pro- ity that some implementations support. SOAP also has
cessing model, its participants, the SOAP nodes, and how an advantage over DCOM that it is unaffected by secu-
a SOAP receiver processes a SOAP message. The fol- rity rights configured on the machines that require knowl-
lowing SOAP nodes are defined: edge of both transmitting and receiving nodes. This lets
SOAP be loosely coupled in a way that is not possible
• SOAP sender – a SOAP node that transmits a SOAP with DCOM. There is also the SOAP-over-UDP OASIS
message standard.
324 CHAPTER 57. SOAP

57.6 Message format 57.8.1 Advantages


• SOAP’s neutrality characteristic explicitly makes it
XML Information Set was chosen as the standard mes- suitable for use with any transport protocol. Imple-
sage format because of its widespread use by major cor- mentations often use HTTP as a transport protocol,
porations and open source development efforts. Typ- but obviously other popular transport protocols can
ically, XML Information Set is serialized as XML. A be used. For example, SOAP can also be used over
wide variety of freely available tools significantly eases SMTP, JMS and message queues.
the transition to a SOAP-based implementation. The
somewhat lengthy syntax of XML can be both a bene- • SOAP, when combined with HTTP post/response
fit and a drawback. While it promotes readability for hu- exchanges, tunnels easily through existing firewalls
mans, facilitates error detection, and avoids interoperabil- and proxies, and consequently doesn't require mod-
ity problems such as byte-order (endianness), it can slow ifying the widespread computing and communica-
processing speed and can be cumbersome. For example, tion infrastructures that exist for processing HTTP
CORBA, GIOP, ICE, and DCOM use much shorter, bi- post/response exchanges.
nary message formats. On the other hand, hardware ap- • SOAP has available to it all the facilities of XML,
pliances are available to accelerate processing of XML including easy internationalization and extensibility
messages.[11][12] Binary XML is also being explored as with XML Namespaces.
a means for streamlining the throughput requirements of
XML. XML messages by their self-documenting nature
usually have more 'overhead' (headers, footers, nested 57.8.2 Disadvantages
tags, delimiters) than actual data in contrast to earlier pro-
tocols where the overhead was usually a relatively small • When using standard implementations and the de-
percentage of the overall message. fault SOAP/HTTP binding, the XML infoset is se-
rialized as XML. To improve performance for the
In financial messaging SOAP was found to result in a 2–
special case of XML with embedded binary objects,
4 times larger message than previous protocols FIX (Fi-
the Message Transmission Optimization Mecha-
nancial Information Exchange) and CDR (Common Data
nism was introduced.
Representation).[13]
XML Information Set does not have to be serialized in • When relying on HTTP as a transport protocol and
XML. For instance, a CSV or JSON XML-infoset repre- not using WS-Addressing or an ESB, the roles of
sentation exists. There is also no need to specify a generic the interacting parties are fixed. Only one party (the
transformation framework. The concept of SOAP bind- client) can use the services of the other.
ings allows for specific bindings for a specific application. • The verbosity of the protocol, slow parsing speed of
The drawback is that both the senders and receivers have XML, and lack of a standardized interaction model
to support this newly defined binding. led to the domination in the field by services using
the HTTP protocol more directly. See, for example,
REST (Representational_state_transfer).

57.7 Example message


57.9 See also
POST /InStock HTTP/1.1 Host: www.example.org • SOAP with Attachments
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299 SOAPAction: "http://www.w3. • SOAP with Attachments API for Java
org/2003/05/soap-envelope" <?xml version="1.0"?> • SOAP-over-UDP
<soap:Envelope xmlns:soap=\char"0022\relax{}http://
www.w3.org/2003/05/soap-envelope"> <soap:Header> • List of web service protocols
</soap:Header> <soap:Body> <m:GetStockPrice • Message Transmission Optimization Mechanism
xmlns:m=\char"0022\relax{}http://www.example.org/ (MTOM)
stock/Surya"> <m:StockName>IBM</m:StockName>
</m:GetStockPrice> </soap:Body> </soap:Envelope> • XML-binary Optimized Packaging (XOP)
• Extensible User Interface Protocol (XUP) – a
SOAP-based UI protocol
• SOAPjr – a hybrid of SOAP and JSON-RPC

57.8 Technical critique • WebSocket


• Web Services Security
57.12. EXTERNAL LINKS 325

57.10 References 57.12 External links


[1] Hirsch, Frederick; Kemp, John; Ilkka, Jani (2007). • W3C SOAP page
Mobile Web Services: Architecture and Implementation.
John Wiley & Sons. p. 27. ISBN 9780470032596. • SOAP Version 1.2 specification
Retrieved 2014-09-15. Simple Object Access Protocol
• Create SOAP Message in Java
(SOAP) defines a messaging envelope structure designed
to carry application payload in one portion of the enve-
lope (the message body) and control information in an-
other (the message header).

[2] “Exclusive .NET Developer’s Journal “Indigo” Interview


with Microsoft’s Don Box”. Dotnet.sys-con.com. Re-
trieved 2012-10-04.

[3] “Don Box on the history of SOAP”. XML.com. 2001-


04-04.

[4] “XML Cover Pages on the history of SOAP”. Cover-


pages.org. Retrieved 2003-07-22.

[5] “SOAP: Simple Object Access Protocol”. September


1999.

[6] “XML-RPC for Newbies”. Archive.org. 1998-07-14.


Archived from the original on October 12, 1999.

[7] “W3C Note on Simple Object Access Protocol (SOAP)


1.1”. W3C. 2000-05-08.

[8] “SOAP Specifications”. W3C. Retrieved 2014-03-29.

[9] “W3C XML Protocol Working Group”. W3C. Retrieved


2014-03-29.

[10] “SOAP Version 1.2 Part 1: Messaging Framework (Sec-


ond Edition)". W3C. April 27, 2007. Retrieved 2012-
06-15. Note: In previous versions of this specification
the SOAP name was an acronym. This is no longer the
case. (Underneath section 1. Introduction)

[11] “IBM Datapower”. 306.ibm.com. 2011-11-30. Re-


trieved 2012-10-04.

[12] “IBM Zurich XML Accelerator Engine” (PDF). Retrieved


2012-10-04.

[13] “Evaluating SOAP for High Performance Business Ap-


plications: Real-Time Trading Systems”. Tenermerx Pty
Ltd University of Technology, Sydney. 2011-11-30. Re-
trieved 2013-03-14.

57.11 Further reading

• Benoît Marchal, "Soapbox: Why I'm using SOAP",


IBM

• Uche Ogbuji, "Tutorial: XML messaging with


SOAP", Principal Consultant, Fourthought, Inc.
Chapter 58

Software

For other uses, see Software (disambiguation). documentation or digital media. Computer hardware
Computer software, or simply software, is that part and software require each other and neither can be
realistically used on its own.
At the lowest level, executable code consists of
machine language instructions specific to an individual
User processor—typically a central processing unit (CPU). A
machine language consists of groups of binary values sig-
nifying processor instructions that change the state of the
computer from its preceding state. For example, an in-
struction may change the value stored in a particular stor-
age location in the computer—an effect that is not di-
rectly observable to the user. An instruction may also
Application Software (indirectly) cause something to appear on a display of the
computer system—a state change which should be visi-
ble to the user. The processor carries out the instructions
in the order they are provided, unless it is instructed to
“jump” to a different instruction, or interrupted.
The majority of software is written in high-level program-
Operating System ming languages that are easier and more efficient for pro-
grammers, meaning closer to a natural language.[1] High-
level languages are translated into machine language us-
ing a compiler or an interpreter or a combination of the
two. Software may also be written in a low-level assembly
language, essentially, a vaguely mnemonic representation
of a machine language using a natural language alpha-
Hardware bet, which is translated into machine language using an
assembler.

A diagram showing how the user interacts with application soft- 58.1 History
ware on a typical desktop computer. The application software
layer interfaces with the operating system, which in turn commu-
nicates with the hardware. The arrows indicate information Main article: History of software

of a computer system that consists of encoded informa- An outline (algorithm) for what would have been the first
tion or computer instructions, in contrast to the physical piece of software was written by Ada Lovelace in the
hardware from which the system is built. 19th century, for the planned Analytical Engine. How-
The term “software” was first proposed by Alan Turing ever, neither the Analytical Engine nor any software for
and used in this sense by John W. Tukey in 1957. In it were ever created
computer science and software engineering, computer The first theory about software—prior to creation of com-
software is all information processed by computer sys- puters as we know them today—was proposed by Alan
tems, programs and data. Turing in his 1935 essay Computable numbers with an ap-
Computer software includes computer programs, plication to the Entscheidungsproblem (decision problem).
libraries and related non-executable data, such as online This eventually led to the creation of the twin academic

326
58.2. TYPES OF SOFTWARE 327

fields of computer science and software engineering, • Utilities, which are computer programs de-
which both study software and its creation. Computer signed to assist users in the maintenance and
science is more theoretical (Turing’s essay is an exam- care of their computers.
ple of computer science), whereas software engineering
focuses on more practical concerns. • Malicious software or malware, which is software
that is developed to harm and disrupt computers.
However, prior to 1946, software as we now understand As such, malware is undesirable. Malware is closely
it—programs stored in the memory of stored-program associated with computer-related crimes, though
digital computers—did not yet exist. The very first elec- some malicious programs may have been designed
tronic computing devices were instead rewired in order as practical jokes.
to “reprogram” them.

58.2.2 Nature or domain of execution


58.2 Types of software
• Desktop applications such as web browsers and
Microsoft Office, as well as smartphone and tablet
See also: List of software categories applications (called "apps"). (There is a push in
some parts of the software industry to merge desk-
On virtually all computer platforms, software can be top applications with mobile apps, to some extent.
grouped into a few broad categories. Windows 8, and later Ubuntu Touch, tried to al-
low the same style of application user interface to
be used on desktops, laptops and mobiles.)
58.2.1 Purpose, or domain of use
• JavaScript scripts are pieces of software tradition-
Based on the goal, computer software can be divided into: ally embedded in web pages that are run directly
inside the web browser when a web page is loaded
without the need for a web browser plugin. Soft-
• Application software, which is software that uses ware written in other programming languages can
the computer system to perform special functions also be run within the web browser if the software is
or provide entertainment functions beyond the basic either translated into JavaScript, or if a web browser
operation of the computer itself. There are many plugin that supports that language is installed; the
different types of application software, because the most common example of the latter is ActionScript
range of tasks that can be performed with a modern scripts, which are supported by the Adobe Flash plu-
computer is so large—see list of software. gin.

• System software, which is software that directly • Server software, including:


operates the computer hardware, to provide basic
functionality needed by users and other software, • Web applications, which usually run on the
and to provide a platform for running application web server and output dynamically generated
software.[2] System software includes: web pages to web browsers, using e.g. PHP,
Java, ASP.NET, or even JavaScript that runs
• Operating systems, which are essential collec- on the server. In modern times these com-
tions of software that manage resources and monly include some JavaScript to be run in the
provides common services for other software web browser as well, in which case they typi-
that runs “on top” of them. Supervisory pro- cally run partly on the server, partly in the web
grams, boot loaders, shells and window sys- browser.
tems are core parts of operating systems. In
practice, an operating system comes bundled • Plugins and extensions are software that extends or
with additional software (including applica- modifies the functionality of another piece of soft-
tion software) so that a user can potentially do ware, and require that software be used in order to
some work with a computer that only has an function;
operating system.
• Embedded software resides as firmware within
• Device drivers, which operate or control a par- embedded systems, devices dedicated to a single
ticular type of device that is attached to a com- use or a few uses such as cars and televisions (al-
puter. Each device needs at least one corre- though some embedded devices such as wireless
sponding device driver; because a computer chipsets can themselves be part of an ordinary,
typically has at minimum at least one input de- non-embedded computer system such as a PC or
vice and at least one output device, a computer smartphone).[3] In the embedded system context
typically needs more than one device driver. there is sometimes no clear distinction between the
328 CHAPTER 58. SOFTWARE

system software and the application software. How- software.


ever, some embedded systems run embedded oper-
ating systems, and these systems do retain the dis- • Platform software: The Platform includes the
tinction between system software and application firmware, device drivers, an operating system, and
software (although typically there will only be one, typically a graphical user interface which, in total,
fixed, application which is always run). allow a user to interact with the computer and its
peripherals (associated equipment). Platform soft-
• Microcode is a special, relatively obscure type of ware often comes bundled with the computer. On
embedded software which tells the processor it- a PC one will usually have the ability to change the
self how to execute machine code, so it is actu- platform software.
ally a lower level than machine code. It is typi-
cally proprietary to the processor manufacturer, and • Application software: Application software or Ap-
any necessary correctional microcode software up- plications are what most people think of when they
dates are supplied by them to users (which is much think of software. Typical examples include office
cheaper than shipping replacement processor hard- suites and video games. Application software is of-
ware). Thus an ordinary programmer would not ex- ten purchased separately from computer hardware.
pect to ever have to deal with it. Sometimes applications are bundled with the com-
puter, but that does not change the fact that they run
as independent applications. Applications are usu-
58.2.3 Programming tools ally independent programs from the operating sys-
tem, though they are often tailored for specific plat-
Main article: Programming tool forms. Most users think of compilers, databases,
and other “system software” as applications.

Programming tools are also software in the form of • User-written software: End-user development tai-
programs or applications that software developers (also lors systems to meet users’ specific needs. User soft-
known as programmers, coders, hackers or software en- ware include spreadsheet templates and word pro-
gineers) use to create, debug, maintain (i.e. improve or cessor templates. Even email filters are a kind of
fix), or otherwise support software. Software is written user software. Users create this software themselves
in one or more programming languages; there are many and often overlook how important it is. Depend-
programming languages in existence, and each has at least ing on how competently the user-written software
one implementation, each of which consists of its own has been integrated into default application pack-
set of programming tools. These tools may be relatively ages, many users may not be aware of the distinction
self-contained programs such as compilers, debuggers, between the original packages, and what has been
interpreters, linkers, and text editors, that can be com- added by co-workers.
bined together to accomplish a task; or they may form
an integrated development environment (IDE), which
combines much or all of the functionality of such self-
58.3.2 Execution
contained tools. IDEs may do this by either invoking
Main article: Execution (computing)
the relevant individual tools or by re-implementing their
functionality in a new way. An IDE can make it easier to
do specific tasks, such as searching in files in a particular Computer software has to be “loaded” into the computer’s
project. Many programming language implementations storage (such as the hard drive or memory). Once the
provide the option of using both individual tools or an software has loaded, the computer is able to execute the
IDE. software. This involves passing instructions from the
application software, through the system software, to
the hardware which ultimately receives the instruction
as machine code. Each instruction causes the computer
58.3 Software topics to carry out an operation—moving data, carrying out a
computation, or altering the control flow of instructions.
58.3.1 Architecture Data movement is typically from one place in memory
to another. Sometimes it involves moving data between
See also: Software architecture memory and registers which enable high-speed data ac-
cess in the CPU. Moving data, especially large amounts
Users often see things differently from programmers. of it, can be costly. So, this is sometimes avoided by using
People who use modern general purpose computers (as “pointers” to data instead. Computations include simple
opposed to embedded systems, analog computers and operations such as incrementing the value of a variable
supercomputers) usually see three layers of software per- data element. More complex computations may involve
forming a variety of tasks: platform, application, and user many operations and data elements together.
58.4. DESIGN AND IMPLEMENTATION 329

58.3.3 Quality and reliability termed "commercial software", which can only be
legally used on purchase of a license.
Main articles: Software quality, Software testing, and
Software reliability Open source software, on the other hand, comes with a
free software license, granting the recipient the rights to
Software quality is very important, especially for modify and redistribute the software.
commercial and system software like Microsoft Office,
Microsoft Windows and Linux. If software is faulty
58.3.5 Patents
(buggy), it can delete a person’s work, crash the com-
puter and do other unexpected things. Faults and errors Main articles: Software patent and Software patent
are called "bugs" which are often discovered during alpha debate
and beta testing. Software is often also a victim to what
is known as software aging, the progressive performance
degradation resulting from a combination of unseen bugs. Software patents, like other types of patents, are theo-
retically supposed to give an inventor an exclusive, time-
Many bugs are discovered and eliminated (debugged) limited license for a detailed idea (e.g. an algorithm) on
through software testing. However, software testing how to implement a piece of software, or a component
rarely—if ever—eliminates every bug; some program- of a piece of software. Ideas for useful things that soft-
mers say that “every program has at least one more bug” ware could do, and user requirements, are not supposed
(Lubarsky’s Law).[4] In the waterfall method of software to be patentable, and concrete implementations (i.e. the
development, separate testing teams are typically em- actual software packages implementing the patent) are
ployed, but in newer approaches, collectively termed agile not supposed to be patentable either—the latter are al-
software development, developers often do all their own ready covered by copyright, generally automatically. So
testing, and demonstrate the software to users/clients reg- software patents are supposed to cover the middle area,
ularly to obtain feedback. Software can be tested through between requirements and concrete implementation. In
unit testing, regression testing and other methods, which some countries, a requirement for the claimed invention
are done manually, or most commonly, automatically, to have an effect on the physical world may also be part of
since the amount of code to be tested can be quite large. the requirements for a software patent to be held valid—
For instance, NASA has extremely rigorous software test- although since all useful software has effects on the phys-
ing procedures for many operating systems and commu- ical world, this requirement may be open to debate.
nication functions. Many NASA-based operations inter-
act and identify each other through command programs. Software patents are controversial in the software indus-
This enables many people who work at NASA to check try with many people holding different views about them.
and evaluate functional systems overall. Programs con- One of the sources of controversy is that the aforemen-
taining command software enable hardware engineering tioned split between initial ideas and patent does not seem
and system operations to function much easier together. to be honored in practice by patent lawyers—for exam-
ple the patent for Aspect-Oriented Programming (AOP),
which purported to claim rights over any programming
58.3.4 License tool implementing the idea of AOP, howsoever imple-
mented. Another source of controversy is the effect on
Main article: Software license innovation, with many distinguished experts and compa-
nies arguing that software is such a fast-moving field that
software patents merely create vast additional litigation
The software’s license gives the user the right to use the
costs and risks, and actually retard innovation. In the case
software in the licensed environment, and in the case of
of debates about software patents outside the US, the ar-
free software licenses, also grants other rights such as the
gument has been made that large American corporations
right to make copies.
and patent lawyers are likely to be the primary beneficia-
Proprietary software can be divided into two types: ries of allowing or continue to allow software patents.

• freeware, which includes the category of “free


trial” software or "freemium" software (in the 58.4 Design and implementation
past, the term shareware was often used for free
trial/freemium software). As the name suggests, Main articles: Software development, Computer pro-
freeware can be used for free, although in the case of gramming, and Software engineering
free trials or freemium software, this is sometimes
only true for a limited period of time or with limited
functionality. Design and implementation of software varies depend-
ing on the complexity of the software. For instance, the
• software available for a fee, often inaccurately design and creation of Microsoft Word took much more
330 CHAPTER 58. SOFTWARE

time than designing and developing Microsoft Notepad Non-profit software organizations include the Free Soft-
because the latter has much more basic functionality. ware Foundation, GNU Project and Mozilla Foundation.
Software is usually designed and created (a.k.a. Software standard organizations like the W3C, IETF de-
coded/written/programmed) in integrated development velop recommended software standards such as XML,
environments (IDE) like Eclipse, IntelliJ and Microsoft HTTP and HTML, so that software can interoperate
Visual Studio that can simplify the process and compile through these standards.
the software (if applicable). As noted in a different Other well-known large software companies include
section, software is usually created on top of existing Oracle, Novell, SAP, Symantec, Adobe Systems, and
software and the application programming interface Corel, while small companies often provide innovation.
(API) that the underlying software provides like GTK+,
JavaBeans or Swing. Libraries (APIs) can be categorized
by their purpose. For instance, the Spring Framework 58.6 See also
is used for implementing enterprise applications, the
Windows Forms library is used for designing graphical
• Software release life cycle
user interface (GUI) applications like Microsoft Word,
and Windows Communication Foundation is used for • List of software
designing web services. When a program is designed, it
relies upon the API. For instance, if a user is designing a • Software asset management
Microsoft Windows desktop application, he or she might
use the .NET Windows Forms library to design the
desktop application and call its APIs like Form1.Close() 58.7 References
and Form1.Show()[5] to close or open the application,
and write the additional operations him/herself that it [1] “Compiler construction”.
needs to have. Without these APIs, the programmer
needs to write these APIs him/herself. Companies [2] “System Software”. The University of Mississippi.
like Oracle and Microsoft provide their own APIs so [3] “Embedded Software—Technologies and Trends”. IEEE
that many applications are written using their software Computer Society. Retrieved May–June 2009. Check
libraries that usually have numerous APIs in them. date values in: |access-date= (help)
Data structures such as hash tables, arrays, and binary [4] “scripting intelligence book examples”.
trees, and algorithms such as quicksort, can be useful for
creating software. [5] “MSDN Library”. Retrieved 2010-06-14.

Computer software has special economic characteristics [6] v. Engelhardt, Sebastian (2008). “The Economic Prop-
that make its design, creation, and distribution different erties of Software”. Jena Economic Research Papers. 2
from most other economic goods.[6][7] (2008–045.).

A person who creates software is called a programmer, [7] Kaminsky, Dan (1999). “Why Open Source Is The Opti-
software engineer or software developer, terms that all mum Economic Paradigm for Software”.
have a similar meaning. More informal terms for pro-
grammer also exist such as “coder” and "hacker" – al-
though use of the latter word may cause confusion, be- 58.8 External links
cause it is more often used to mean someone who illegally
breaks into computer systems. • Software at DMOZ

58.5 Industry and organizations

Main article: Software industry

A great variety of software companies and program-


mers in the world comprise a software industry. Soft-
ware can be quite a profitable industry: Bill Gates, the
founder of Microsoft was the richest person in the world
in 2009, largely due to his ownership of a significant num-
ber of shares in Microsoft, the company responsible for
Microsoft Windows and Microsoft Office software prod-
ucts.
Chapter 59

State (computer science)

In computer science and automata theory, the state of a memory. The contents of these memory locations, at any
digital logic circuit or computer program is a technical given point in the program’s execution, is called the pro-
term for all the stored information, at a given instant in gram’s state.[4][5][6]
time, to which the circuit or program has access.[1] The
Imperative programming is a programming paradigm
output of a digital circuit or computer program at any (way of designing a programming language) that de-
time is completely determined by its current inputs and
scribes computation in terms of the program state and
its state. statements that change the program state. In contrast,
in declarative programming languages the program de-
scribes the desired results, and doesn't specify changes to
59.1 Digital logic circuit state the state directly.
A more specialized definition of state is used in some
Digital logic circuits can be divided into two types: computer programs that operate serially (sequentially) on
combinational logic, whose output signals are dependent streams of data, such as parsers, firewalls, communication
only on its present input signals, and sequential logic, protocols and encryption programs. Serial programs op-
whose outputs are a function of both the current inputs erate on the incoming data characters or packets sequen-
and the past history of inputs.[2] In sequential logic, in- tially, one at a time. In some of these programs, informa-
formation from past inputs is stored in electronic mem- tion about previous data characters or packets received is
ory elements, such as flip-flops and latches. The stored stored in variables and used to affect the processing of
contents of these memory elements, at a given point in the current character or packet. This is called a "stateful
time, is collectively referred to as the circuit’s "state" and
protocol" and the data carried over from the previous pro-
contains all the information about the past to which the cessing cycle is called the “state”. In others, the pro-
circuit has access.[3] gram has no information about the previous data stream
For example, the state of a microprocessor (computer and starts “fresh” with each data input; this is called a
chip) is the contents of all the memory elements in it: "stateless protocol".
the accumulators, storage registers, data caches, and flags.
When computers such as laptops go into a "hibernation"
mode to save energy by shutting down the processor, the
state of the processor is stored on the computer’s disk, so
it can be restored when the computer comes out of hiber-
nation, and the processor can take up operations where it
left off. 59.3 Finite state machines
Since each binary memory element, such as a flip-flop,
has only two possible states, “one” or “zero”, and there
is a finite number of memory elements, a digital circuit The output of a sequential circuit or computer program
has only a certain finite number of possible states. If Nat any time is completely determined by its current inputs
is the number of binary memory elements in the circuit, and current state. Since each binary memory element has
the maximum number of states a circuit can have is 2N . only two possible states, 0 or 1, the total number of dif-
ferent states a circuit can assume is finite, and fixed by the
number of memory elements. If there are N binary mem-
ory elements, a digital circuit can have at most 2N distinct
59.2 Program state states. The concept of state is formalized in an abstract
mathematical model of computation called a finite state
Similarly, a computer program stores data in variables, machine, used to design both sequential digital circuits
which represent storage locations in the computer’s and computer programs.

331
332 CHAPTER 59. STATE (COMPUTER SCIENCE)

59.4 Types of states


Following states are distinguished:

• Compatible states are states in a state machine that


do not conflict for any input values. Thus for every
input, both states must have the same output, and
both states must have the same successor (or unspec-
ified successors), or both must not change. Compat-
ible states are redundant, if occurring in the same
state machine.

• Distinguishable states are states in a state machine


that have at least one input sequence causing differ-
ent output sequences - no matter which state is the
initial state.

• Equivalent states are states in a state machine


which, for every possible input sequence, the same
output sequence will be produced - no matter which
state is the initial state.

59.5 See also


• Data (computing)

59.6 References
[1] Harris, David Money; Sarah L. Harris (2007). Digital
Design and Computer Architecture. USA: Morgan Kauf-
mann. p. 103. ISBN 0123704979.

[2] Kaeslin, Hubert (2008). Digital Integrated Circuit Design:


From VLSI Architectures to CMOS Fabrication. UK: Cam-
bridge University Press. p. 735. ISBN 0521882672.

[3] Srinath, N. K. (August 2005). 8085 Microprocessor: Pro-


gramming and Interfacing. Prentice-Hall of India Pvt.
Ltd. p. 326. ISBN 978-8120327856. Retrieved 7 De-
cember 2012. page 46

[4] Laplante, Philip A. (2000). Dictionary of Computer Sci-


ence, Engineering and Technology. USA: CRC Press. p.
466. ISBN 0849326915.

[5] Misra, Jayadev (2001). A Discipline of Multiprogram-


ming: Programming Theory for Distributed Applications.
Springer. p. 14. ISBN 0387952063.

[6] Prata, Stephen Prata (2004). C Primer Plus, 5th Ed. Pear-
son Education. pp. 113–114. ISBN 0132713608.
Chapter 60

Syntax

For other uses, see Syntax (disambiguation). be known as “traditional grammar” began with the work
“Sentence structure” redirects here. For sentence types of Dionysius Thrax.
in traditional grammar, see Sentence clause structure. For centuries, work in syntax was dominated by a frame-
work known as grammaire générale, first expounded in
In linguistics, syntax (/ˈsɪnˌtæks/[1][2] ) is the set of rules, 1660 by Antoine Arnauld in a book of the same title.
principles, and processes that govern the structure of This system took as its basic premise the assumption that
sentences in a given language, specifically word order. language is a direct reflection of thought processes and
The term syntax is also used to refer to the study of such therefore there is a single, most natural way to express a
principles and processes.[3] The goal of many syntacti- thought.
cians is to discover the syntactic rules common to all lan- However, in the 19th century, with the development of
guages. historical-comparative linguistics, linguists began to real-
In mathematics, syntax refers to the rules governing the ize the sheer diversity of human language and to question
behavior of mathematical systems, such as formal lan- fundamental assumptions about the relationship between
guages used in logic. (See logical syntax.) language and logic. It became apparent that there was no
such thing as the most natural way to express a thought,
and therefore logic could no longer be relied upon as a
basis for studying the structure of language.
60.1 Etymology
The Port-Royal grammar modeled the study of syntax
upon that of logic. (Indeed, large parts of the Port-
The word syntax comes from Ancient Greek: σύνταξις
Royal Logic were copied or adapted from the Grammaire
“coordination”, which consists of σύν syn, “together,” and
générale.[5] ) Syntactic categories were identified with log-
τάξις táxis, “an ordering”.
ical ones, and all sentences were analyzed in terms of
“Subject – Copula – Predicate.” Initially, this view was
adopted even by the early comparative linguists such as
60.2 Sequencing of subject, verb, Franz Bopp.
and object The central role of syntax within theoretical linguistics
became clear only in the 20th century, which could rea-
sonably be called the “century of syntactic theory” as far
A basic feature of a language’s syntax is the sequence as linguistics is concerned. (For a detailed and critical
in which the subject (S), verb (V), and object (O) usu- survey of the history of syntax in the last two centuries,
ally appear in sentences. Over 85% of languages usually see the monumental work by Giorgio Graffi (2001).)[6]
place the subject first, either in the sequence SVO or the
sequence SOV. The other possible sequences are VSO,
VOS, OVS, and OSV, the last three of which are rare.
60.4 Modern theories
There are a number of theoretical approaches to the
60.3 Early history discipline of syntax. One school of thought, founded
in the works of Derek Bickerton,[7] sees syntax as a
Works on grammar were written long before modern syn- branch of biology, since it conceives of syntax as the
tax came about; the Aṣṭādhyāyī of Pāṇini (c. 4th century study of linguistic knowledge as embodied in the human
BC) is often cited as an example of a premodern work mind. Other linguists (e.g., Gerald Gazdar) take a more
that approaches the sophistication of a modern syntactic Platonistic view, since they regard syntax to be the study
theory.[4] In the West, the school of thought that came to of an abstract formal system.[8] Yet others (e.g., Joseph

333
334 CHAPTER 60. SYNTAX

Greenberg) consider syntax a taxonomical device to reach Categorial grammar is an approach that attributes the syn-
broad generalizations across languages. tactic structure not to rules of grammar, but to the proper-
ties of the syntactic categories themselves. For example,
rather than asserting that sentences are constructed by a
60.4.1 Generative grammar rule that combines a noun phrase (NP) and a verb phrase
(VP) (e.g., the phrase structure rule S → NP VP), in cate-
Main article: Generative grammar gorial grammar, such principles are embedded in the cat-
egory of the head word itself. So the syntactic category
The hypothesis of generative grammar is that language for an intransitive verb is a complex formula representing
is a structure of the human mind. The goal of gener- the fact that the verb acts as a function word requiring an
ative grammar is to make a complete model of this in- NP as an input and produces a sentence level structure as
ner language (known as i-language). This model could an output. This complex category is notated as (NP\S)
be used to describe all human language and to predict instead of V. NP\S is read as “a category that searches
the grammaticality of any given utterance (that is, to pre- to the left (indicated by \) for an NP (the element on the
dict whether the utterance would sound correct to native left) and outputs a sentence (the element on the right).”
speakers of the language). This approach to language was The category of transitive verb is defined as an element
pioneered by Noam Chomsky. Most generative theories that requires two NPs (its subject and its direct object) to
(although not all of them) assume that syntax is based form a sentence. This is notated as (NP/(NP\S)) which
upon the constituent structure of sentences. Generative means “a category that searches to the right (indicated by
grammars are among the theories that focus primarily /) for an NP (the object), and generates a function (equiv-
on the form of a sentence, rather than its communicative alent to the VP) which is (NP\S), which in turn represents
function. a function that searches to the left for an NP and produces
a sentence.”
Among the many generative theories of linguistics, the
Chomskyan theories are: Tree-adjoining grammar is a categorial grammar that
adds in partial tree structures to the categories.
• Transformational grammar (TG) (Original theory of
generative syntax laid out by Chomsky in Syntactic 60.4.3 Dependency grammar
Structures in 1957)[9]

• Government and binding theory (GB) (revised the- Main article: Dependency grammar
ory in the tradition of TG developed mainly by Dependency grammar is an approach to sentence struc-
Chomsky in the 1970s and 1980s)[10]

• Minimalist program (MP) (a reworking of the the-


ory out of the GB framework published by Chomsky
in 1995)[11]

Other theories that find their origin in the generative


paradigm are:

• Arc pair grammar A syntactic parse of “Alfred spoke” under the dependency for-
malism
• Generalized phrase structure grammar (GPSG; now
largely out of date) ture where syntactic units are arranged according to the
dependency relation, as opposed to the constituency re-
• Generative semantics (now largely out of date) lation of phrase structure grammars. Dependencies are
directed links between words. The (finite) verb is seen as
• Head-driven phrase structure grammar (HPSG)
the root of all clause structure and all the other words in
• Lexical functional grammar (LFG) the clause are either directly or indirectly dependent on
this root. Some prominent dependency-based theories of
• Nanosyntax syntax are:
• Relational grammar (RG) (now largely out of date)
• Recursive categorical syntax, or Algebraic syntax

60.4.2 Categorial grammar • Functional generative description


• Meaning–text theory
Main article: Categorial grammar
• Operator grammar
60.5. SEE ALSO 335

• Word grammar • Antecedent


• Antecedent-contained deletion
Lucien Tesnière (1893–1954) is widely seen as the fa-
ther of modern dependency-based theories of syntax and • Appositive
grammar. He argued vehemently against the binary divi-
sion of the clause into subject and predicate that is asso- • Argument
ciated with the grammars of his day (S → NP VP) and • Article
which remains at the core of most phrase structure gram-
mars. In the place of this division, he positioned the verb • Aspect
as the root of all clause structure.[12]
• Attributive adjective and predicative adjective
• Auxiliary verb
60.4.4 Stochastic/probabilistic gram-
mars/network theories • Binding

Theoretical approaches to syntax that are based upon • Branching


probability theory are known as stochastic grammars. • c-command
One common implementation of such an approach makes
use of a neural network or connectionism. • Case
• Category
60.4.5 Functionalist grammars • Catena
Main article: Functional theories of grammar • Clause
• Closed class word
Functionalist theories, although focused upon form, are
driven by explanation based upon the function of a sen- • Comparative
tence (i.e. its communicative function). Some typical
functionalist theories include: • Complement
• Compound noun and adjective
• Cognitive grammar
• Conjugation
• Construction grammar (CxG)
• Conjunction
• Emergent grammar
• Constituent
• Functional discourse grammar (Dik)
• Coordination
• Prague linguistic circle
• Coreference
• Role and reference grammar (RRG)
• Crossover
• Systemic functional grammar
• Dangling modifier
• Declension
60.5 See also
• Dependency grammar
60.5.1 Syntactic terms • Dependent marking

• Adjective • Determiner

• Adjective phrase • Discontinuity

• Adjunct • Do-support

• Adpositional phrase • Dual (form for two)

• Adverb • Ellipsis
• Anaphora • Endocentric
• Answer ellipsis • Exceptional case-marking
336 CHAPTER 60. SYNTAX

• Expletive • Periphrasis
• Extraposition • Person
• Finite verb • Personal pronoun
• Function word • Pied-piping
• Gapping • Phrasal verb
• Gender • Phrase
• Gerund • Phrase structure grammar
• Government • Plural
• Head • Predicate
• Head marking • Predicative expression
• Infinitive • Preposition and postposition
• Inverse copular construction • Pronoun
• Inversion • Pseudogapping
• Lexical item • Raising
• m-command • Relation (Grammatical relation)
• Measure word (classifier) • Restrictiveness
• Merge • Right node raising
• Modal particle • Sandhi
• Modal verb • Scrambling
• Modifier • Selection
• Mood • Sentence
• Movement • Separable verb
• Movement paradox • Shifting
• Nanosyntax • Singular
• Negative inversion • Sluicing
• Non-configurational language • Small clause
• Non-finite verb • Stripping
• Noun • Subcategorization
• Noun ellipsis • Subject
• Noun phrase • Subject-auxiliary inversion
• Number • Subject-verb inversion
• Object • Subordination
• Open class word • Superlative
• Parasitic gap • Tense
• Part of speech • Topicalization
• Particle • Tough movement
60.7. REFERENCES 337

• Uninflected word 60.7 References


• V2 word order
• Brown, Keith; Miller, Jim, eds. (1996). Concise En-
• Valency cyclopedia of Syntactic Theories. New York: Else-
vier Science. ISBN 0-08-042711-1.
• Verb
• Carnie, Andrew (2006). Syntax: A Generative Intro-
• Verb phrase
duction (2nd ed.). Oxford: Wiley-Blackwell. ISBN
• Verb phrase ellipsis 1-4051-3384-8.
• Voice • Freidin, Robert; Lasnik, Howard, eds. (2006). Syn-
tax. Critical Concepts in Linguistics. New York:
• Wh-movement Routledge. ISBN 0-415-24672-5.
• Word order • Graffi, Giorgio (2001). 200 Years of Syntax. A Crit-
• X-bar theory ical Survey. Studies in the History of the Language
Sciences 98. Amsterdam: Benjamins. ISBN 90-
272-4587-8.
60.6 Notes • Talasiewicz, Mieszko (2009). Philosophy of
Syntax—Foundational Topics. Springer. ISBN 978-
[1] “syntax”. Oxford Dictionaries. Oxford University Press. 90-481-3287-4. An interdisciplinary essay on the
Retrieved 2016-01-22. interplay between logic and linguistics on syntactic
[2] “syntax”. Merriam-Webster Dictionary. theories.

[3] Chomsky, Noam (2002) [1957]. Syntactic Structures. p. • Tesnière, Lucien 1969. Éleménts de syntaxe struc-
11. turale. 2nd edition. Paris: Klincksieck.
[4] Fortson IV, Benjamin W. (2004). Indo-European Lan-
guage and Culture: An Introduction. Blackwell. p. 186.
ISBN 978-1405188968. [The Aṣṭādhyāyī ] is a highly pre- 60.8 Further reading
cise and thorough description of the structure of Sanskrit
somewhat resembling modern generative grammar...[it] • Martin Everaert; Henk Van Riemsdijk; Rob Goede-
remained the most advanced linguistic analysis of any mans; Bart Hollebrandse, eds. (2006). The Black-
kind until the twentieth century. well companion to syntax. Blackwell. ISBN 978-1-
[5] Arnauld, Antoine (1683). La logique (5th ed.). Paris: 4051-1485-1. 5 Volumes; 77 case studies of syntac-
G. Desprez. p. 137. Nous avons emprunté...ce que tic phenomena.
nous avons dit...d'un petit Livre...sous le titre de Grammaire
• Isac, Daniela; Charles Reiss (2013). I-language:
générale.
An Introduction to Linguistics as Cognitive Science,
[6] Giorgio, Graffi (2001). 200 Years of Syntax: A Critical 2nd edition. Oxford University Press. ISBN 978-
Survey (googlebook preview). John Benjamins Publish- 0199660179.
ing.
• Moravcsik, Edith A. (2006). An introduction to syn-
[7] See Bickerton, Derek (1990). Language and Species. tax: fundamentals of syntactic analysis. Contin-
University of Chicago Press. ISBN 0-226-04610-9. and,
uum International Publishing Group. ISBN 978-
for more recent advances, Derek Bickerton; Eörs Szath-
máry, eds. (2009). Biological foundations and origin of
0-8264-8945-6. Attempts to be a theory-neutral
syntax. MIT Press. ISBN 978-0-262-01356-7. introduction. The companion Edith A. Moravcsik
(2006). An introduction to syntactic theory. Contin-
[8] Ted Briscoe, 2 May 2001, Interview with Gerald Gazdar. uum International Publishing Group. ISBN 978-0-
Retrieved 2008-06-04. 8264-8943-2. surveys the major theories. Jointly
[9] Chomsky, Noam. 1957. Syntactic Structures. The reviewed in The Canadian Journal of Linguistics
Hague/Paris: Mouton, p. 15. 54(1), March 2009, pp. 172–175
[10] Chomsky, Noam (1981/1993). Lectures on Government • Müller, Stefan (2016). Grammatical theory: From
and Binding: The Pisa Lectures. Mouton de Gruyter. transformational grammar to constraint-based ap-
proaches. Berlin: Language Science Press. ISBN
[11] Chomsky, Noam (1995). The Minimalist Program. MIT
Press. 978-3-944675-21-3.

[12] Concerning Tesnière’s rejection of the binary division of • Brian Roark; Richard William Sproat (2007). Com-
the clause into subject and predicate and in favor of the putational approaches to morphology and syntax.
verb as the root of all structure, see Tesnière (1969:103– Oxford University Press. ISBN 978-0-19-927477-
105). 2. part II: Computational approaches to syntax.
338 CHAPTER 60. SYNTAX

60.9 External links


• The syntax of natural language: An online introduc-
tion using the Trees program—Beatrice Santorini &
Anthony Kroch, University of Pennsylvania, 2007
Chapter 61

Technical standard

This article is about technical standards. For other uses, For example, there are detailed standard operating
see Standard. procedures for operation of a nuclear power plant.[3]

• A standard guide is general information or options


A technical standard is an established norm or that do not require a specific course of action.
requirement in regard to technical systems. It is usually a
formal document that establishes uniform engineering or • A standard definition is formally established termi-
technical criteria, methods, processes and practices. In nology.
contrast, a custom, convention, company product, corpo-
rate standard, etc. that becomes generally accepted and • Standard units, in physics and applied mathematics,
dominant is often called a de facto standard. are commonly accepted measurements of physical
quantities.
A technical standard may be developed privately or uni-
laterally, for example by a corporation, regulatory body,
military, etc. Standards can also be developed by groups
such as trade unions, and trade associations. Standards
61.2 Availability
organizations often have more diverse input and usually
develop voluntary standards: these might become manda- Technical standards may exist as:
tory if adopted by a government (i.e. through legislation),
business contract, etc. • Public documents on the internet, public library, etc.
The standardization process may be by edict or may in- (Some technical standards may be found at a major
[1]
volve the formal consensus of technical experts. central library or at the library of a good technical
university)

• Published documents available for purchase


61.1 Types
• Private documents owned by an organization or cor-
The primary types of technical standards are: poration, used and circulated as the owner deter-
mines necessary or useful
• A standard specification is an explicit set of require-
• Documents publicly available under intellectual
ments for an item, material, component, system or
property (copyright, etc.)[4]
service. It is often used to formalize the technical as-
pects of a procurement agreement or contract.[2] For • Closed or controlled documents that contain trade
example, there may be a specification for a turbine secrets or classified information
blade for a jet engine that defines the exact material
and performance requirements.
• A standard test method describes a definitive pro- 61.3 Geographic levels
cedure that produces a test result. It may involve
making a careful personal observation or conduct- When a geographically defined community must solve a
ing a highly technical measurement. For example, a community-wide coordination problem, it can adopt an
physical property of a material is often affected by existing standard or produce a new one. The main geo-
the precise method of testing: any reference to the graphic levels are:
property should therefore reference the test method
used.
• National standard: by National standards organiza-
• A standard practice or procedure gives a set of in- tions. For example, Telecommunications Industry
structions for performing operations or functions. Association standards.

339
340 CHAPTER 61. TECHNICAL STANDARD

• Regional standard: see standards of the Regional [2] “Standard Specifications”. Oregon.gov. Oregon.gov. Re-
standards organizations. For example, CEN stan- trieved 20 August 2015.
dards.
[3] “Operational Limits and Conditions and Operating Pro-
• International standard: see International standards cedures for Nuclear Power Plants Safety Guide”. Inter-
organizations Example, ISO and ASTM Interna- national Atomic Energy Association. IAEA. Retrieved 20
tional. August 2015.

[4] Example: SAE International copyright policy


National/Regional/International standards is one way of
overcoming technical barriers in inter-local or inter-
regional commerce caused by differences among tech-
nical regulations and standards developed independently
and separately by each local, local standards organ-
isation, or local company. Technical barriers arise
when different groups come together, each with a large
user base, doing some well established thing that be-
tween them is mutually incompatible. Establishing na-
tional/regional/international standards is one way of pre-
venting or overcoming this problem.

61.4 Usage
The existence of a published standard does not imply that
it is always useful or correct. For example, if an item
complies with a certain standard, there is not necessarily
assurance that it is fit for any particular use. The people
who use the item or service (engineers, trade unions, etc.)
or specify it (building codes, government, industry, etc.)
have the responsibility to consider the available standards,
specify the correct one, enforce compliance, and use the
item correctly. Validation of suitability is necessary.
Standards often get reviewed, revised and updated on a
regular basis. It is critical that the most current version of
a published standard be used or referenced. The origina-
tor or standard writing body often has the current versions
listed on its web site.
In social sciences, including economics, a standard is use-
ful if it is a solution to a coordination problem: it emerges
from situations in which all parties realize mutual gains,
but only by making mutually consistent decisions. Ex-
amples:

61.5 See also


• List of computer standards
• Software standard
• Specification (technical standard)
• Standard (metrology)

61.6 References
[1] Example of TAPPI standards development regulations
Chapter 62

Telecommunication

Not to be confused with Teleconnection. intelligence of any nature by wire, radio, optical
Telecommunication is the transmission of signs, or other electromagnetic systems.[1][2] Telecommuni-
cation occurs when the exchange of information be-
tween communication participants includes the use of
technology. It is transmitted either electrically over phys-
ical media, such as cables, or via electromagnetic radia-
tion.[3][4][5][6][7][8] Such transmission paths are often di-
vided into communication channels which afford the ad-
vantages of multiplexing. The term is often used in its
plural form, telecommunications, because it involves
many different technologies.
Early means of communicating over a distance included
visual signals, such as beacons, smoke signals, semaphore
telegraphs, signal flags, and optical heliographs.[9] Other
examples of pre-modern long-distance communication
included audio messages such as coded drumbeats, lung-
blown horns, and loud whistles. 20th and 21st cen-
tury technologies for long-distance communication usu-
ally involve electrical and electromagnetic technolo-
Earth station at the satellite communication facility in Raisting, gies, such as telegraph, telephone, and teleprinter,
Bavaria, Germany networks, radio, microwave transmission, fiber optics,
and communications satellites.
A revolution in wireless communication began in the first
decade of the 20th century with the pioneering develop-
ments in radio communications by Guglielmo Marconi,
who won the Nobel Prize in Physics in 1909. Other
notable pioneering inventors and developers in the field
of electrical and electronic telecommunications include
Charles Wheatstone and Samuel Morse (inventors of
the telegraph), Alexander Graham Bell (inventor of the
telephone), Edwin Armstrong and Lee de Forest (inven-
tors of radio), as well as Vladimir K. Zworykin, John Lo-
gie Baird and Philo Farnsworth (some of the inventors of
television).

62.1 Etymology
The word telecommunication was adapted from the
French.[7] It is a compound of the Greek prefix tele-
Visualization from the Opte Project of the various routes through (τηλε-), meaning “distant”, and the Latin communicare,
a portion of the Internet meaning “to share”, and its written use was recorded in
1904 by the French engineer and novelist Édouard Es-
signals, messages, writings, images and sounds or taunié.[10][11] The prefix “tel” means “far, far off, op-

341
342 CHAPTER 62. TELECOMMUNICATION

erating over distance”... from Greek tele-, combining In 1792, Claude Chappe, a French engineer, built the first
form of tele “far off, afar, at or to a distance,” related fixed visual telegraphy system (or semaphore line) be-
to teleos (genitive telos) “end, goal, completion, result,” tween Lille and Paris.[15] However semaphore suffered
from PIE root *kwel-"; “tel” also means " “far” in space from the need for skilled operators and expensive tow-
and time”.[12] “Communication” was first used as an En- ers at intervals of ten to thirty kilometres (six to nine-
glish word in the late 14th century. It comes from Old teen miles). As a result of competition from the electri-
French comunicacion (14c., Modern French communi- cal telegraph, the last commercial line was abandoned in
cation), from Latin communicationem (nominative com- 1880.[16]
municatio), noun of action from past participle stem of
Homing pigeons have occasionally been used through-
communicare “to share, divide out; communicate, im- out history by different cultures. Pigeon post is thought
part, inform; join, unite, participate in,” literally “to make
to have Persians roots and was used by the Romans
common,” from communis”.[13] to aid their military. Frontinus said that Julius Caesar
used pigeons as messengers in his conquest of Gaul.[17]
The Greeks also conveyed the names of the victors
62.2 History at the Olympic Games to various cities using homing
pigeons.[18] In the early 19th century, the Dutch govern-
For more details on this topic, see History of telecom- ment used the system in Java and Sumatra. And in 1849,
munication. Paul Julius Reuter started a pigeon service to fly stock
prices between Aachen and Brussels, a service that op-
erated for a year until the gap in the telegraph link was
closed.[19]
62.2.1 Beacons and pigeons
62.2.2 Telegraph and telephone

Sir Charles Wheatstone and Sir William Fothergill Cooke


invented the electric telegraph in 1837.[20] Also, the first
commercial electrical telegraph is purported to have been
constructed by Wheatstone and Cooke and opened on 9
April 1839. Both inventors viewed their device as “an
improvement to the [existing] electromagnetic telegraph”
not as a new device.[21]
Samuel Morse independently developed a version of the
electrical telegraph that he unsuccessfully demonstrated
on 2 September 1837. His code was an important ad-
vance over Wheatstone’s signaling method. The first
transatlantic telegraph cable was successfully completed
on 27 July 1866, allowing transatlantic telecommunica-
tion for the first time.[22]
The conventional telephone was invented independently
by Alexander Bell and Elisha Gray in 1876.[23] Antonio
Meucci invented the first device that allowed the electri-
cal transmission of voice over a line in 1849. However
Meucci’s device was of little practical value because it re-
lied upon the electrophonic effect and thus required users
to place the receiver in their mouth to “hear” what was be-
ing said.[24] The first commercial telephone services were
A replica of one of Chappe’s semaphore towers set-up in 1878 and 1879 on both sides of the Atlantic in
the cities of New Haven and London.[25][26]
In the Middle Ages, chains of beacons were commonly
used on hilltops as a means of relaying a signal. Beacon
chains suffered the drawback that they could only pass a 62.2.3 Radio and television
single bit of information, so the meaning of the message
such as “the enemy has been sighted” had to be agreed In 1832, James Lindsay gave a classroom demonstration
upon in advance. One notable instance of their use was of wireless telegraphy to his students. By 1854, he was
during the Spanish Armada, when a beacon chain relayed able to demonstrate a transmission across the Firth of Tay
a signal from Plymouth to London.[14] from Dundee, Scotland to Woodhaven, a distance of two
62.3. KEY CONCEPTS 343

miles (3 km), using water as the transmission medium.[27] of Communications of the ACM.[34][35]
In December 1901, Guglielmo Marconi established wire-
less communication between St. John’s, Newfoundland
(Canada) and Poldhu, Cornwall (England), earning him 62.3 Key concepts
the 1909 Nobel Prize in physics (which he shared with
Karl Braun).[28] However small-scale radio communica-
tion had already been demonstrated in 1893 by Nikola A number of key concepts reoccur throughout the liter-
Tesla in a presentation to the National Electric Light ature on modern telecommunication theory and systems.
Association.[29] Some of these concepts are discussed below.

On 25 March 1925, John Logie Baird was able to demon-


strate the transmission of moving pictures at the Lon- 62.3.1 Basic elements
don department store Selfridges. Baird’s device relied
upon the Nipkow disk and thus became known as the Telecommunications is primarily divided up between
mechanical television. It formed the basis of experimen- wired and wireless subtypes. Overall though, a basic
tal broadcasts done by the British Broadcasting Corpora- telecommunication system consists of three main parts
tion beginning 30 September 1929.[30] However, for most that are always present in some form or another:
of the twentieth century televisions depended upon the
cathode ray tube invented by Karl Braun. The first ver-
• A transmitter that takes information and converts it
sion of such a television to show promise was produced
to a signal.
by Philo Farnsworth and demonstrated to his family on 7
September 1927.[31] • A transmission medium, also called the “physical
channel” that carries the signal. An example of this
is the “free space channel”.
62.2.4 Computers and the Internet
• A receiver that takes the signal from the channel and
On 11 September 1940, George Stibitz was able to trans- converts it back into usable information for the re-
mit problems using teletype to his Complex Number Cal- cipient.
culator in New York and receive the computed results
back at Dartmouth College in New Hampshire.[32] This For example, in a radio broadcasting station the station’s
configuration of a centralized computer or mainframe large power amplifier is the transmitter; and the broad-
with remote dumb terminals remained popular through- casting antenna is the interface between the power ampli-
out the 1950s. However, it was not until the 1960s fier and the “free space channel”. The free space channel
that researchers started to investigate packet switch- is the transmission medium; and the receiver’s antenna is
ing — a technology that would allow chunks of data the interface between the free space channel and the re-
to be sent to different computers without first passing ceiver. Next, the radio receiver is the destination of the
through a centralized mainframe. A four-node network radio signal, and this is where it is converted from elec-
emerged on 5 December 1969; this network would be- tricity to sound for people to listen to.
come ARPANET, which by 1981 would consist of 213 Sometimes, telecommunication systems are “duplex”
nodes.[33]
(two-way systems) with a single box of electronics work-
ARPANET development centered around the Request ing as both the transmitter and a receiver, or a transceiver.
for Comment process and on 7 April 1969, RFC 1 was For example, a cellular telephone is a transceiver.[36]
published. This process is important because ARPANET The transmission electronics and the receiver electronics
eventually merged with other networks to form the within a transceiver are actually quite independent of each
Internet and many of the protocols the Internet relies other. This can be readily explained by the fact that radio
upon today were specified through the Request for Com- transmitters contain power amplifiers that operate with
ment process. In September 1981, RFC 791 introduced electrical powers measured in watts or kilowatts, but ra-
the Internet Protocol v4 (IPv4) and RFC 793 introduced dio receivers deal with radio powers that are measured in
the Transmission Control Protocol (TCP) — thus creat- the microwatts or nanowatts. Hence, transceivers have to
ing the TCP/IP protocol that much of the Internet relies be carefully designed and built to isolate their high-power
upon today. circuitry and their low-power circuitry from each other, as
However, not all important developments were made to not cause interference.
through the Request for Comment process. Two pop- Telecommunication over fixed lines is called point-to-
ular link protocols for local area networks (LANs) also point communication because it is between one transmit-
appeared in the 1970s. A patent for the token ring pro- ter and one receiver. Telecommunication through radio
tocol was filed by Olof Soderblom on 29 October 1974 broadcasts is called broadcast communication because it
and a paper on the Ethernet protocol was published by is between one powerful transmitter and numerous low-
Robert Metcalfe and David Boggs in the July 1976 issue power but sensitive radio receivers.[36]
344 CHAPTER 62. TELECOMMUNICATION

Telecommunications in which multiple transmitters and 62.3.4 Communication channels


multiple receivers have been designed to cooperate and to
share the same physical channel are called multiplex sys-
tems. The sharing of physical channels using multiplex-
ing often gives very large reductions in costs. Multiplexed
systems are laid out in telecommunication networks, and The term “channel” has two different meanings. In one
the multiplexed signals are switched at nodes through to meaning, a channel is the physical medium that carries
the correct destination terminal receiver. a signal between the transmitter and the receiver. Ex-
amples of this include the atmosphere for sound commu-
nications, glass optical fibers for some kinds of optical
communications, coaxial cables for communications by
62.3.2 Analog versus digital communica- way of the voltages and electric currents in them, and free
tions space for communications using visible light, infrared
waves, ultraviolet light, and radio waves. This last channel
Communications signals can be sent either by analog sig- is called the “free space channel”. The sending of radio
nals or digital signals. There are analog communication waves from one place to another has nothing to do with
systems and digital communication systems. For an ana- the presence or absence of an atmosphere between the
log signal, the signal is varied continuously with respect two. Radio waves travel through a perfect vacuum just as
to the information. In a digital signal, the information is easily as they travel through air, fog, clouds, or any other
encoded as a set of discrete values (for example, a set kind of gas.
of ones and zeros). During the propagation and recep- The other meaning of the term “channel” in telecom-
tion, the information contained in analog signals will in- munications is seen in the phrase communications chan-
evitably be degraded by undesirable physical noise. (The nel, which is a subdivision of a transmission medium so
output of a transmitter is noise-free for all practical pur- that it can be used to send multiple streams of informa-
poses.) Commonly, the noise in a communication system tion simultaneously. For example, one radio station can
can be expressed as adding or subtracting from the desir- broadcast radio waves into free space at frequencies in the
able signal in a completely random way. This form of neighborhood of 94.5 MHz (megahertz) while another ra-
noise is called additive noise, with the understanding that dio station can simultaneously broadcast radio waves at
the noise can be negative or positive at different instants frequencies in the neighborhood of 96.1 MHz. Each ra-
of time. Noise that is not additive noise is a much more dio station would transmit radio waves over a frequency
difficult situation to describe or analyze, and these other bandwidth of about 180 kHz (kilohertz), centered at fre-
kinds of noise will be omitted here. quencies such as the above, which are called the “carrier
On the other hand, unless the additive noise disturbance frequencies”. Each station in this example is separated
exceeds a certain threshold, the information contained in from its adjacent stations by 200 kHz, and the difference
digital signals will remain intact. Their resistance to noise between 200 kHz and 180 kHz (20 kHz) is an engineer-
represents a key advantage of digital signals over analog ing allowance for the imperfections in the communication
signals.[37] system.
In the example above, the “free space channel” has
been divided into communications channels according
to frequencies, and each channel is assigned a separate
62.3.3 Telecommunication networks frequency bandwidth in which to broadcast radio waves.
This system of dividing the medium into channels accord-
A telecommunications network is a collection of trans- ing to frequency is called "frequency-division multiplex-
mitters, receivers, and communications channels that ing". Another term for the same concept is "wavelength-
send messages to one another. Some digital communi- division multiplexing", which is more commonly used in
cations networks contain one or more routers that work optical communications when multiple transmitters share
together to transmit information to the correct user. An the same physical medium.
analog communications network consists of one or more Another way of dividing a communications medium into
switches that establish a connection between two or more channels is to allocate each sender a recurring segment of
users. For both types of network, repeaters may be nec- time (a “time slot”, for example, 20 milliseconds out of
essary to amplify or recreate the signal when it is be- each second), and to allow each sender to send messages
ing transmitted over long distances. This is to combat only within its own time slot. This method of dividing
attenuation that can render the signal indistinguishable the medium into communication channels is called "time-
from the noise.[38] Another advantage of digital systems division multiplexing" (TDM), and is used in optical fiber
over analog is that their output is easier to store in mem- communication. Some radio communication systems use
ory, i.e. two voltage states (high and low) are easier to TDM within an allocated FDM channel. Hence, these
store than a continuous range of states. systems use a hybrid of TDM and FDM.
62.4. SOCIETY 345

62.3.5 Modulation Bangladesh's Narshingdi district, isolated villagers use


cellular phones to speak directly to wholesalers and ar-
The shaping of a signal to convey information is known range a better price for their goods. In Côte d'Ivoire, cof-
as modulation. Modulation can be used to represent a fee growers share mobile phones to follow hourly varia-
digital message as an analog waveform. This is com- tions in coffee prices and sell at the best price.[44]
monly called “keying” – a term derived from the older
use of Morse Code in telecommunications – and several
keying techniques exist (these include phase-shift keying, Macroeconomics
frequency-shift keying, and amplitude-shift keying). The
"Bluetooth" system, for example, uses phase-shift keying On the macroeconomic scale, Lars-Hendrik Röller and
to exchange information between various devices.[39][40] Leonard Waverman suggested a causal link between
In addition, there are combinations of phase-shift keying good telecommunication infrastructure and economic
[45][46]
and amplitude-shift keying which is called (in the jargon growth. Few dispute the existence of a correlation
of the field) "quadrature amplitude modulation" (QAM) although some argue it is wrong to view the relationship
[47]
that are used in high-capacity digital radio communica- as causal.
tion systems. Because of the economic benefits of good telecommu-
Modulation can also be used to transmit the informa- nication infrastructure, there is increasing worry about
tion of low-frequency analog signals at higher frequen- the inequitable access to telecommunication services
cies. This is helpful because low-frequency analog signals amongst various countries of the world—this is known
cannot be effectively transmitted over free space. Hence as the digital divide. A 2003 survey by the International
the information from a low-frequency analog signal must Telecommunication Union (ITU) revealed that roughly a
be impressed into a higher-frequency signal (known as third of countries have fewer than one mobile subscrip-
the "carrier wave") before transmission. There are sev- tion for every 20 people and one-third of countries have
eral different modulation schemes available to achieve fewer than one land-line telephone subscription for every
this [two of the most basic being amplitude modulation 20 people. In terms of Internet access, roughly half of all
(AM) and frequency modulation (FM)]. An example of countries have fewer than one out of 20 people with Inter-
this process is a disc jockey’s voice being impressed into net access. From this information, as well as educational
a 96 MHz carrier wave using frequency modulation (the data, the ITU was able to compile an index that measures
voice would then be received on a radio as the channel the overall ability of citizens to access and use informa-
[48]
“96 FM”).[41] In addition, modulation has the advantage tion and communication technologies. Using this mea-
that it may use frequency division multiplexing (FDM). sure, Sweden, Denmark and Iceland received the high-
est ranking while the African countries Nigeria, Burkina
Faso and Mali received the lowest.[49]
62.4 Society
62.4.2 Social impact
Telecommunication has a significant social, cultural and
economic impact on modern society. In 2008, estimates Telecommunication has played a significant role in social
placed the telecommunication industry's revenue at $4.7 relationships. Nevertheless, devices like the telephone
trillion or just under 3 percent of the gross world prod- system were originally advertised with an emphasis on the
uct (official exchange rate).[42] Several following sections practical dimensions of the device (such as the ability to
discuss the impact of telecommunication on society. conduct business or order home services) as opposed to
the social dimensions. It was not until the late 1920s and
1930s that the social dimensions of the device became a
62.4.1 Economic impact
prominent theme in telephone advertisements. New pro-
motions started appealing to consumers’ emotions, stress-
Microeconomics
ing the importance of social conversations and staying
[50]
On the microeconomic scale, companies have used connected to family and friends.
telecommunications to help build global business em- Since then the role that telecommunications has played
pires. This is self-evident in the case of online retailer in social relations has become increasingly important. In
Amazon.com but, according to academic Edward Lenert, recent years, the popularity of social networking sites has
even the conventional retailer Walmart has benefited from increased dramatically. These sites allow users to com-
better telecommunication infrastructure compared to its municate with each other as well as post photographs,
competitors.[43] In cities throughout the world, home events and profiles for others to see. The profiles can list
owners use their telephones to order and arrange a va- a person’s age, interests, sexual preference and relation-
riety of home services ranging from pizza deliveries to ship status. In this way, these sites can play important
electricians. Even relatively poor communities have been role in everything from organising social engagements to
noted to use telecommunication to their advantage. In courtship.[51]
346 CHAPTER 62. TELECOMMUNICATION

Prior to social networking sites, technologies like short onset of World War II brought on the first explosion of in-
message service (SMS) and the telephone also had a sig- ternational broadcasting propaganda.[57] Countries, their
nificant impact on social interactions. In 2000, market governments, insurgents, terrorists, and militiamen have
research group Ipsos MORI reported that 81% of 15- to all used telecommunication and broadcasting techniques
24-year-old SMS users in the United Kingdom had used to promote propaganda.[57][58] Patriotic propaganda for
the service to coordinate social arrangements and 42% to political movements and colonization started the mid-
flirt.[52] 1930s. In 1936, the BBC broadcast propaganda to the
Arab World to partly counter similar broadcasts from
Italy, which also had colonial interests in North Africa.[57]
62.4.3 Other impacts
Modern insurgents, such as those in the latest Iraq war,
In cultural terms, telecommunication has increased the often use intimidating telephone calls, SMSs and the dis-
public’s ability to access music and film. With television, tribution of sophisticated videos of an attack on coali-
people can watch films they have not seen before in their tion troops within hours of the operation. “The Sunni
own home without having to travel to the video store or insurgents even have their own television station, Al-
cinema. With radio and the Internet, people can listen to Zawraa, which while banned by the Iraqi government,
music they have not heard before without having to travel still broadcasts from Erbil, Iraqi Kurdistan, even as coali-
to the music store. tion pressure has forced it to switch satellite hosts several
times.”[58]
Telecommunication has also transformed the way people
receive their news. A survey led in 2006 by the non-profit On 10 November 2014, President Obama recommended
Pew Internet and American Life Project found that when the Federal Communications Commission reclassify
just over 3,000 people living in the United States were broadband Internet service as a telecommunications ser-
asked where they got their news “yesterday”, more people vice in order to preserve net neutrality.[59][60]
said television or radio than newspapers. The results are
summarised in the following table (the percentages add up
to more than 100% because people were able to specify 62.6 Modern media
more than one source).[53]
Telecommunication has had an equally significant im- 62.6.1 Worldwide equipment sales
pact on advertising. TNS Media Intelligence reported
that in 2007, 58% of advertising expenditure in the According to data collected by Gartner[61][62] and Ars
United States was spent on mediums that depend upon Technica[63] sales of main consumer’s telecommunication
telecommunication.[54] The results are summarised in the equipment worldwide in millions of units was:
following table.

62.6.2 Telephone
62.5 Government
In a telephone network, the caller is connected to the per-
Many countries have enacted legislation which conforms son they want to talk to by switches at various telephone
to the International Telecommunication Regulations es- exchanges. The switches form an electrical connection
tablished by the International Telecommunication Union between the two users and the setting of these switches
(ITU), which is the “leading UN agency for information is determined electronically when the caller dials the
and communication technology issues.”[55] In 1947, at number. Once the connection is made, the caller’s
the Atlantic City Conference, the ITU decided to “af- voice is transformed to an electrical signal using a small
ford international protection to all frequencies registered microphone in the caller’s handset. This electrical signal
in a new international frequency list and used in confor- is then sent through the network to the user at the other
mity with the Radio Regulation.” According to the ITU’s end where it is transformed back into sound by a small
Radio Regulations adopted in Atlantic City, all frequen- speaker in that person’s handset.
cies referenced in the International Frequency Registra- The landline telephones in most residential homes are
tion Board, examined by the board and registered on the analog—that is, the speaker’s voice directly determines
International Frequency List “shall have the right to inter- the signal’s voltage. Although short-distance calls may be
national protection from harmful interference.”[56] handled from end-to-end as analog signals, increasingly
From a global perspective, there have been political telephone service providers are transparently converting
debates and legislation regarding the management of the signals to digital signals for transmission. The advan-
telecommunication and broadcasting. The history of tage of this is that digitized voice data can travel side-
broadcasting discusses some debates in relation to bal- by-side with data from the Internet and can be perfectly
ancing conventional communication such as printing and reproduced in long distance communication (as opposed
telecommunication such as radio broadcasting.[57] The to analog signals that are inevitably impacted by noise).
62.6. MODERN MEDIA 347

dled together in a single cable.[68] Lastly, improvements


in multiplexing have led to an exponential growth in the
data capacity of a single fibre.[69][70]
Assisting communication across many modern optic fi-
bre networks is a protocol known as Asynchronous Trans-
fer Mode (ATM). The ATM protocol allows for the side-
by-side data transmission mentioned in the second para-
graph. It is suitable for public telephone networks be-
cause it establishes a pathway for data through the net-
work and associates a traffic contract with that pathway.
The traffic contract is essentially an agreement between
the client and the network about how the network is to
handle the data; if the network cannot meet the conditions
of the traffic contract it does not accept the connection.
This is important because telephone calls can negotiate a
contract so as to guarantee themselves a constant bit rate,
something that will ensure a caller’s voice is not delayed
in parts or cut off completely.[71] There are competitors
to ATM, such as Multiprotocol Label Switching (MPLS),
that perform a similar task and are expected to supplant
ATM in the future.[72][73]

62.6.3 Radio and television


Main articles: Radio, Television, and Broadcasting
In a broadcast system, the central high-powered
Optical fiber provides cheaper bandwidth for long distance com-
munication.

Mobile phones have had a significant impact on telephone


networks. Mobile phone subscriptions now outnumber
fixed-line subscriptions in many markets. Sales of mo- DVB-T
ATSC
bile phones in 2005 totalled 816.6 million with that fig- ISDB-T
DTMB

ure being almost equally shared amongst the markets of


Asia/Pacific (204 m), Western Europe (164 m), CEMEA
(Central Europe, the Middle East and Africa) (153.5 m),
North America (148 m) and Latin America (102 m).[64] Digital television standards and their adoption worldwide
In terms of new subscriptions over the five years from
1999, Africa has outpaced other markets with 58.2% broadcast tower transmits a high-frequency
growth.[65] Increasingly these phones are being serviced electromagnetic wave to numerous low-powered re-
by systems where the voice content is transmitted digitally ceivers. The high-frequency wave sent by the tower
such as GSM or W-CDMA with many markets choosing is modulated with a signal containing visual or audio
to depreciate analog systems such as AMPS.[66] information. The receiver is then tuned so as to pick up
There have also been dramatic changes in telephone com- the high-frequency wave and a demodulator is used to
munication behind the scenes. Starting with the operation retrieve the signal containing the visual or audio infor-
of TAT-8 in 1988, the 1990s saw the widespread adoption mation. The broadcast signal can be either analog (signal
of systems based on optical fibers. The benefit of com- is varied continuously with respect to the information)
municating with optic fibers is that they offer a drastic or digital (information is encoded as a set of discrete
increase in data capacity. TAT-8 itself was able to carry values).[36][74]
10 times as many telephone calls as the last copper cable The broadcast media industry is at a critical turning point
laid at that time and today’s optic fibre cables are able to in its development, with many countries moving from
carry 25 times as many telephone calls as TAT-8.[67] This analog to digital broadcasts. This move is made possi-
increase in data capacity is due to several factors: First, ble by the production of cheaper, faster and more ca-
optic fibres are physically much smaller than competing pable integrated circuits. The chief advantage of digital
technologies. Second, they do not suffer from crosstalk broadcasts is that they prevent a number of complaints
which means several hundred of them can be easily bun- common to traditional analog broadcasts. For television,
348 CHAPTER 62. TELECOMMUNICATION

this includes the elimination of problems such as snowy an amplitude modulated subcarrier is used for stereo FM.
pictures, ghosting and other distortion. These occur be-
cause of the nature of analog transmission, which means
that perturbations due to noise will be evident in the final 62.6.4 Internet
output. Digital transmission overcomes this problem be-
cause digital signals are reduced to discrete values upon data unit layers
reception and hence small perturbations do not affect the
Application
final output. In a simplified example, if a binary message Data Network Process to Application
1011 was transmitted with signal amplitudes [1.0 0.0 1.0

Host Layers
1.0] and received with signal amplitudes [0.9 0.2 1.1 0.9] Presentation
Data Data Representation
it would still decode to the binary message 1011 — a per- and Encryption
fect reproduction of what was sent. From this example,
Session
a problem with digital transmissions can also be seen in Data Interhost Communication
that if the noise is great enough it can significantly alter
the decoded message. Using forward error correction a Transport
Segments End-to-End Connections
receiver can correct a handful of bit errors in the resulting and Reliability

message but too much noise will lead to incomprehensible


output and hence a breakdown of the transmission.[75][76] Network
Packets

Media Layers
Path Determination and
In digital television broadcasting, there are three com- Logical Addressing (IP)

peting standards that are likely to be adopted worldwide. Data Link


These are the ATSC, DVB and ISDB standards; the adop- Frames Physical Addressing
(MAC and LLC)
tion of these standards thus far is presented in the cap-
Physical
tioned map. All three standards use MPEG-2 for video Bits Media, Signal and
compression. ATSC uses Dolby Digital AC-3 for au- Binary Transmission

dio compression, ISDB uses Advanced Audio Coding


(MPEG-2 Part 7) and DVB has no standard for audio
compression but typically uses MPEG-1 Part 3 Layer The OSI reference model
2.[77][78] The choice of modulation also varies between
the schemes. In digital audio broadcasting, standards are The Internet is a worldwide network of computers and
much more unified with practically all countries choosing computer networks that communicate with each other us-
to adopt the Digital Audio Broadcasting standard (also ing the Internet Protocol.[83] Any computer on the Inter-
known as the Eureka 147 standard). The exception is the net has a unique IP address that can be used by other com-
United States which has chosen to adopt HD Radio. HD puters to route information to it. Hence, any computer on
Radio, unlike Eureka 147, is based upon a transmission the Internet can send a message to any other computer us-
method known as in-band on-channel transmission that ing its IP address. These messages carry with them the
allows digital information to “piggyback” on normal AM originating computer’s IP address allowing for two-way
or FM analog transmissions.[79] communication. The Internet is thus an exchange of mes-
[84]
However, despite the pending switch to digital, analog sages between computers.
television remains being transmitted in most countries. It is estimated that the 51% of the information flow-
An exception is the United States that ended analog tele- ing through two-way telecommunications networks in the
vision transmission (by all but the very low-power TV year 2000 were flowing through the Internet (most of
stations) on 12 June 2009[80] after twice delaying the the rest (42%) through the landline telephone). By the
switchover deadline,Kenya also ended analog television year 2007 the Internet clearly dominated and captured
transmission in December 2014 after multiple delays. 97% of all the information in telecommunication net-
For analog television, there are three standards in use works (most of the rest (2%) through mobile phones).[85]
for broadcasting color TV (see a map on adoption here). As of 2008, an estimated 21.9% of the world popula-
These are known as PAL (German designed), NTSC tion has access to the Internet with the highest access
(North American designed), and SECAM (French de- rates (measured as a percentage of the population) in
signed). (It is important to understand that these are the North America (73.6%), Oceania/Australia (59.5%) and
ways of sending color TV, and they do not have anything Europe (48.1%).[86] In terms of broadband access, Ice-
to do with the standards for black & white TV, which land (26.7%), South Korea (25.4%) and the Netherlands
also vary from country to country.) For analog radio, the (25.3%) led the world.[87]
switch to digital radio is made more difficult by the fact
that analog receivers are sold at a small fraction of the The Internet works in part because of protocols that gov-
price of digital receivers.[81][82] The choice of modulation ern how the computers and routers communicate with
for analog radio is typically between amplitude (AM) or each other. The nature of computer network communi-
frequency modulation (FM). To achieve stereo playback, cation lends itself to a layered approach where individual
protocols in the protocol stack run more-or-less indepen-
62.6. MODERN MEDIA 349

dently of other protocols. This allows lower-level pro- ternet chat), BitTorrent (file sharing) and XMPP (instant
tocols to be customized for the network situation while messaging).
not changing the way higher-level protocols operate. A Voice over Internet Protocol (VoIP) allows data pack-
practical example of why this is important is because it ets to be used for synchronous voice communications.
allows an Internet browser to run the same code regard- The data packets are marked as voice type packets and
less of whether the computer it is running on is connected can be prioritized by the network administrators so that
to the Internet through an Ethernet or Wi-Fi connection. the real-time, synchronous conversation is less subject to
Protocols are often talked about in terms of their place contention with other types of data traffic which can be
in the OSI reference model (pictured on the right), which
delayed (i.e. file transfer or email) or buffered in advance
emerged in 1983 as the first step in an unsuccessful at- (i.e. audio and video) without detriment. That prioritiza-
tempt to build a universally adopted networking protocol
tion is fine when the network has sufficient capacity for all
suite.[88] the VoIP calls taking place at the same time and the net-
For the Internet, the physical medium and data link pro- work is enabled for prioritization i.e. a private corporate
tocol can vary several times as packets traverse the globe. style network, but the Internet is not generally managed
This is because the Internet places no constraints on what in this way and so there can be a big difference in the
physical medium or data link protocol is used. This leads quality of VoIP calls over a private network and over the
to the adoption of media and protocols that best suit the public Internet.[92]
local network situation. In practice, most intercontinen-
tal communication will use the Asynchronous Transfer
Mode (ATM) protocol (or a modern equivalent) on top 62.6.5 Local area networks and wide area
of optic fiber. This is because for most intercontinental networks
communication the Internet shares the same infrastruc-
ture as the public switched telephone network.
Despite the growth of the Internet, the characteristics
At the network layer, things become standardized with of local area networks (LANs)--computer networks that
the Internet Protocol (IP) being adopted for logical ad- do not extend beyond a few kilometers—remain distinct.
dressing. For the World Wide Web, these “IP addresses” This is because networks on this scale do not require all
are derived from the human readable form using the the features associated with larger networks and are of-
Domain Name System (e.g. 72.14.207.99 is derived from ten more cost-effective and efficient without them. When
www.google.com). At the moment, the most widely used they are not connected with the Internet, they also have
version of the Internet Protocol is version four but a move the advantages of privacy and security. However, pur-
to version six is imminent.[89] posefully lacking a direct connection to the Internet does
At the transport layer, most communication adopts ei- not provide assured protection from hackers, military
ther the Transmission Control Protocol (TCP) or the User forces, or economic powers. These threats exist if there
Datagram Protocol (UDP). TCP is used when it is es- are any methods for connecting remotely to the LAN.
sential every message sent is received by the other com- Wide area networks (WANs) are private computer net-
puter whereas UDP is used when it is merely desirable. works that may extend for thousands of kilometers. Once
With TCP, packets are retransmitted if they are lost and again, some of their advantages include privacy and secu-
placed in order before they are presented to higher layers. rity. Prime users of private LANs and WANs include
With UDP, packets are not ordered or retransmitted if armed forces and intelligence agencies that must keep
lost. Both TCP and UDP packets carry port numbers with their information secure and secret.
them to specify what application or process the packet
In the mid-1980s, several sets of communication proto-
should be handled by.[90] Because certain application-
cols emerged to fill the gaps between the data-link layer
level protocols use certain ports, network administrators
and the application layer of the OSI reference model.
can manipulate traffic to suit particular requirements. Ex-
These included Appletalk, IPX, and NetBIOS with the
amples are to restrict Internet access by blocking the traf-
dominant protocol set during the early 1990s being IPX
fic destined for a particular port or to affect the perfor-
due to its popularity with MS-DOS users. TCP/IP ex-
mance of certain applications by assigning priority.
isted at this point, but it was typically only used by large
Above the transport layer, there are certain protocols government and research facilities.[93]
that are sometimes used and loosely fit in the session
As the Internet grew in popularity and its traffic was re-
and presentation layers, most notably the Secure Sock-
quired to be routed into private networks, the TCP/IP
ets Layer (SSL) and Transport Layer Security (TLS) pro-
protocols replaced existing local area network technolo-
tocols. These protocols ensure that data transferred be-
[91] gies. Additional technologies, such as DHCP, allowed
tween two parties remains completely confidential. Fi-
TCP/IP-based computers to self-configure in the net-
nally, at the application layer, are many of the protocols
work. Such functions also existed in the AppleTalk/ IPX/
Internet users would be familiar with such as HTTP (web
NetBIOS protocol sets.[94]
browsing), POP3 (e-mail), FTP (file transfer), IRC (In-
Whereas Asynchronous Transfer Mode (ATM) or Multi-
350 CHAPTER 62. TELECOMMUNICATION

protocol Label Switching (MPLS) are typical data-link • Outline of telecommunication


protocols for larger networks such as WANs; Ether-
net and Token Ring are typical data-link protocols for • Push-button telephone
LANs. These protocols differ from the former protocols • Telecommunications Industry Association
in that they are simpler, e.g., they omit features such as
quality of service guarantees, and offer collision preven- • Telecoms resilience
tion. Both of these differences allow for more economical
• Wavelength-division multiplexing
systems.[95]
Despite the modest popularity of IBM Token Ring in • Wired communication
the 1980s and 1990s, virtually all LANs now use either
wired or wireless Ethernet facilities. At the physical layer,
most wired Ethernet implementations use copper twisted- 62.9 References
pair cables (including the common 10BASE-T networks).
However, some early implementations used heavier coax-
62.9.1 Citations
ial cables and some recent implementations (especially
high-speed ones) use optical fibers.[96] When optic fibers [1] “Article 1.3” (PDF), ITU Radio Regulations, International
are used, the distinction must be made between multi- Telecommunication Union, 2012
mode fibers and single-mode fibers. Multimode fibers can
be thought of as thicker optical fibers that are cheaper to [2] Constitution and Convention of the International
Telecommunication Union, Annex (Geneva, 1992)
manufacture devices for, but that suffers from less usable
bandwidth and worse attenuation – implying poorer long- [3] “Definition of telecommunication”. Yahoo. Retrieved 28
distance performance.[97] February 2013.

[4] “Telecommunication”. Collins English Dictionary. Re-


trieved 28 February 2013.
62.7 Transmission capacity
[5] “Telecommunication”. Vocabulary.com. Retrieved 28
February 2013.
The effective capacity to exchange information world-
wide through two-way telecommunication networks grew [6] “Telecommunication”. Merriam-Webster Dictionary. Re-
from 281 petabytes of (optimally compressed) informa- trieved 28 February 2013.
tion in 1986, to 471 petabytes in 1993, to 2.2 (opti-
[7] “Telecommunication”. Oxford Dictionaries. Oxford Uni-
mally compressed) exabytes in 2000, and to 65 (optimally
versity Press. Retrieved 28 February 2013.
compressed) exabytes in 2007.[85] This is the informa-
tional equivalent of two newspaper pages per person per [8] “Telecommunication”. Dictionary.com. Retrieved 28
day in 1986, and six entire newspapers per person per February 2013.
day by 2007.[98] Given this growth, telecommunications
[9] Websters definition: “2) technology that deals with
play an increasingly important role in the world economy telecommunication —usually used in plural"; Concise En-
and the global telecommunications industry was about a cyclopedia definition: “Communication n parties at a dis-
$4.7 trillion sector in 2012.[42][99] The service revenue of tance from one another...."; and the Online Etymology
the global telecommunications industry was estimated to Dictionary: “telecommunication (n.) 1932, from French
be $1.5 trillion in 2010, corresponding to 2.4% of the télécommunication (see tele- + communication)."; and: "
world’s gross domestic product (GDP).[42] 1930s: from French télécommunication, from télé- 'at a
distance' + communication 'communication' ", Oxford on-
line.
62.8 See also [10] Jean-Marie Dilhac, From tele-communicare to Telecom-
munications, 2004.
• Active networks
[11] Telecommunication, tele- and communication, New Ox-
• Busy override ford American Dictionary (2nd edition), 2005.

• Digital Revolution [12] http://www.etymonline.com/index.php?term=tele-&


allowed_in_frame=0
• Dual-tone multi-frequency signaling
[13] http://www.etymonline.com/index.php?term=
• Information Age communication&allowed_in_frame=0

• List of telecommunications encryption terms [14] David Ross, The Spanish Armada, Britain Express, ac-
cessed October 2007.
• Nanonetwork
[15] Les Télégraphes Chappe, Cédrick Chatenet, l'Ecole Cen-
• New media trale de Lyon, 2003.
62.9. REFERENCES 351

[16] CCIT/ITU-T 50 Years of Excellence, International [38] ATIS Telecom Glossary 2000, ATIS Committee T1A1
Telecommunication Union, 2006. Performance and Signal Processing (approved by the
American National Standards Institute), 28 February
[17] Levi, Wendell (1977). The Pigeon. Sumter, S.C.: Levi 2001.
Publishing Co, Inc. ISBN 0853900132.
[39] Haykin, pp 344–403.
[18] Blechman, Andrew (2007). Pigeons-The fascinating saga
of the world’s most revered and reviled bird. St Lu- [40] Bluetooth Specification Version 2.0 + EDR (p 27), Blue-
cia, Queensland: University of Queensland Press. ISBN tooth, 2004.
9780702236419.
[41] Haykin, pp 88–126.
[19] “Chronology: Reuters, from pigeons to multimedia
merger” (Web article). Reuters. Retrieved 2008-02-21. [42] Worldwide Telecommunications Industry Revenues, In-
ternet Engineering Task Force, June 2010.
[20] William Brockedone. “Cooke and Wheatstone and the In-
vention of the Electric Telegraph”. Republished by The [43] Lenert, Edward (December 1998). “A Communica-
Museum of Science and Technology (Ottawa). tion Theory Perspective on Telecommunications Pol-
icy”. Journal of Communication. 48 (4): 3–23.
[21] The Electromagnetic Telegraph, J. B. Calvert, 19 May
doi:10.1111/j.1460-2466.1998.tb02767.x.
2004.

[22] The Atlantic Cable, Bern Dibner, Burndy Library Inc., [44] Mireille Samaan (April 2003). “The Effect of Income In-
1959 equality on Mobile Phone Penetration”. Boston Univer-
sity Honors thesis. Archived from the original (PDF) on
[23] Elisha Gray, Oberlin College Archives, Electronic Oberlin 14 February 2007. Retrieved 8 June 2007.
Group, 2006.
[45] Röller, Lars-Hendrik; Leonard Waverman (2001).
[24] Antonio Santi Giuseppe Meucci, Eugenii Katz. (Re- “Telecommunications Infrastructure and Eco-
trieved May, 2006 from http://chem.ch.huji.ac.il/ nomic Development: A Simultaneous Approach”.
~{}eugeniik/history/meucci.html) American Economic Review. 91 (4): 909–923.
doi:10.1257/aer.91.4.909. ISSN 0002-8282.
[25] Connected Earth: The telephone, BT, 2006.
[46] Qiang, Rossotto, 2009, Economic Impact of Broad-
[26] History of AT&T, AT&T, 2006.
band, http://siteresources.worldbank.org/EXTIC4D/
[27] James Bowman Lindsay, Macdonald Black, Dundee City Resources/IC4D_Broadband_35_50.pdf
Council, 1999.
[47] Riaz, Ali (1997). “The role of telecommunications in eco-
[28] Tesla Biography, Ljubo Vujovic, Tesla Memorial Society nomic growth: proposal for an alternative framework of
of New York, 1998. analysis”. Media, Culture & Society. 19 (4): 557–583.
doi:10.1177/016344397019004004.
[29] Tesla’s Radio Controlled Boat, Twenty First Century
Books, 2007. [48] “Digital Access Index (DAI)". itu.int. Retrieved 6 March
2008.
[30] The Pioneers, MZTV Museum of Television, 2006.
[49] World Telecommunication Development Report 2003,
[31] Philo Farnsworth, Neil Postman, TIME Magazine, 29 International Telecommunication Union, 2003.
March 1999
[50] Fischer, Claude S. "'Touch Someone': The Telephone
[32] George Stlibetz, Kerry Redshaw, 1996.
Industry Discovers Sociability.” Technology and Culture
[33] Hafner, Katie (1998). Where Wizards Stay Up Late: The 29.1 (January 1988): 32–61. JSTOR. Web. 4 October
Origins Of The Internet. Simon & Schuster. ISBN 0-684- 2009.
83267-4.
[51] “How do you know your love is real? Check Facebook”.
[34] Data transmission system, Olof Solderblom, PN CNN. 4 April 2008.
4,293,948, October 1974.
[52] I Just Text To Say I Love You, Ipsos MORI, September
[35] Ethernet: Distributed Packet Switching for Local Com- 2005.
puter Networks, Robert M. Metcalfe and David R. Boggs,
Communications of the ACM (pp 395-404, Vol. 19, No. [53] “Online News: For many home broadband users, the in-
5), July 1976. ternet is a primary news source” (PDF). Pew Internet
Project. 22 March 2006.
[36] Haykin, Simon (2001). Communication Systems (4th ed.).
John Wiley & Sons. pp. 1–3. ISBN 0-471-17869-1. [54] “100 Leading National Advertisers” (PDF). Advertising
Age. 23 June 2008. Retrieved 21 June 2009.
[37] Ambardar, Ashok (1999). Analog and Digital Signal Pro-
cessing (2nd ed.). Brooks/Cole Publishing Company. pp. [55] International Telecommunication Union : About ITU.
1–2. ISBN 0-534-95409-X. ITU. Accessed 21 July 2009. (PDF of regulation)
352 CHAPTER 62. TELECOMMUNICATION

[56] Codding, George A. Jr. "Jamming and the Protection of [77] HDV Technology Handbook, Sony, 2004.
Frequency Assignments". The American Journal of Inter-
national Law, Vol. 49, No. 3 (July , 1955), Published [78] Audio, Digital Video Broadcasting Project, 2003.
by: American Society of International Law. pp. 384–
388. Republished by JSTOR.org The American Journal [79] Status of DAB (USA), World DAB Forum, March 2005.
of International Law". Accessed 21 July 2009.
[80] Brian Stelter (13 June 2009). “Changeover to Digital TV
[57] Wood, James & Science Museum (Great Britain) "History Off to a Smooth Start”. New York Times.
of international broadcasting". IET 1994, Volume 1, p.2
of 258 ISBN 0-86341-302-1, ISBN 978-0-86341-302-5. [81] GE 72664 Portable AM/FM Radio, Amazon.com, June
Republished by Googlebooks. Accessed 21 July 2009. 2006.
[58] Garfield, Andrew. "The U.S. Counter-propaganda Failure
[82] DAB Products, World DAB Forum, 2006.
in Iraq", FALL 2007, The Middle East Quarterly, Volume
XIV: Number 4, Accessed 21 July 2009.
[83] Robert E. Kahn and Vinton G. Cerf, What Is The Internet
[59] Wyatt, Edward (10 November 2014). “Obama Asks (And What Makes It Work), December 1999. (specifi-
F.C.C. to Adopt Tough Net Neutrality Rules”. New York cally see footnote xv)
Times. Retrieved 15 November 2014.
[84] How Internet Infrastructure Works, HowStuffWorks.com,
[60] NYT Editorial Board (14 November 2014). “Why the 2007.
F.C.C. Should Heed President Obama on Internet Reg-
ulation”. New York Times. Retrieved 15 November 2014. [85] “The World’s Technological Capacity to Store, Com-
municate, and Compute Information”, Martin Hilbert
[61] Computer sales review, guardian.co.uk, 2009.
and Priscila López (2011), Science, 332(6025), 60–65;
[62] Mobile phone sales data, palminfocenter.com, 2009. free access to the study through here: martinhilbert.net/
WorldInfoCapacity.html
[63] PC early history, arstechnica.com, 2005.
[86] World Internet Users and Population Stats, internetworld-
[64] Gartner Says Top Six Vendors Drive Worldwide Mobile stats.com, 19 March 2007.
Phone Sales to 21% Growth in 2005, Gartner Group, 28
February 2006. [87] OECD Broadband Statistics, Organisation for Economic
[65] Africa Calling, Victor and Irene Mbarika, IEEE Spec- Co-operation and Development, December 2005.
trum, May 2006.
[88] History of the OSI Reference Model, The TCP/IP Guide
[66] Ten Years of GSM in Australia, Australia Telecommuni- v3.0, Charles M. Kozierok, 2005.
cations Association, 2003.
[89] Introduction to IPv6, Microsoft Corporation, February
[67] Milestones in AT&T History, AT&T Knowledge Ven- 2006.
tures, 2006.

[68] Optical fibre waveguide, Saleem Bhatti, 1995. [90] Stallings, pp 683–702.

[69] Fundamentals of DWDM Technology, CISCO Systems, [91] T. Dierks and C. Allen, The TLS Protocol Version 1.0,
2006. RFC 2246, 1999.

[70] Report: DWDM No Match for Sonet, Mary Jander, Light [92] Multimedia, Crucible (2011-05-07). “VoIP, Voice over
Reading, 2006. Internet Protocol and Internet telephone calls”.
[71] Stallings, William (2004). Data and Computer Communi-
[93] Martin, Michael (2000). Understanding the Network (The
cations (7th edition (intl) ed.). Pearson Prentice Hall. pp.
Networker’s Guide to AppleTalk, IPX, and NetBIOS),
337–366. ISBN 0-13-183311-1.
SAMS Publishing, ISBN 0-7357-0977-7.
[72] MPLS is the future, but ATM hangs on, John Dix, Net-
work World, 2002 [94] Ralph Droms, Resources for DHCP, November 2003.

[73] Lazar, Irwin (22 February 2011). “The WAN Road [95] Stallings, pp. 500–526.
Ahead: Ethernet or Bust?". Telecom Industry Updates.
Retrieved 22 February 2011. [96] Stallings, pp 514–516.
[74] How Radio Works, HowStuffWorks.com, 2006. [97] Fiber Optic Cable Tutorial, Arc Electronics. Retrieved
[75] Digital Television in Australia, Digital Television News June 2007.
Australia, 2001.
[98] “video animation The Economist”.
[76] Stallings, William (2004). Data and Computer Commu-
nications (7th edition (intl) ed.). Pearson Prentice Hall. [99] Introduction to the Telecommunications Industry, Internet
ISBN 0-13-183311-1. Engineering Task Force, June 2012.
62.10. EXTERNAL LINKS 353

62.9.2 Bibliography
• Goggin, Gerard, Global Mobile Media (New York:
Routledge, 2011), p. 176. ISBN 978-0415469180.

• Haring, John (2008). “Telecommunications”. In


David R. Henderson (ed.). Concise Encyclopedia
of Economics (2nd ed.). Library of Economics
and Liberty. ISBN 978-0865976658. OCLC
237794267.
• OECD, Universal Service and Rate Restructuring
in Telecommunications, Organisation for Economic
Co-operation and Development (OECD) Publish-
ing, 1991. ISBN 92-64-13497-2.
• Wheen, Andrew. Dot-Dash to Dot.Com: How Mod-
ern Telecommunications Evolved from the Telegraph
to the Internet (Springer, 2011).

62.10 External links


• International Telecommunication Union (ITU)

• ATIS Telecom Glossary


• Federal Communications Commission

• IEEE Communications Society


• International Telecommunication Union

• Ericsson’s Understanding Telecommunications at


the Wayback Machine (archived April 13, 2004)
(Ericsson removed the book from their site in
September 2005)
Chapter 63

Timeout (computing)

assumption that further waiting is useless, and some other


action is necessary.
Other examples are

• In POP connections, the server will usually close a


client connection after a certain period of inactiv-
ity (the timeout period). This ensures that connec-
tions do not persist forever, if the client crashes or
the network goes down. Open connections consume
resources, and may prevent other clients from ac-
cessing the same mailbox.
• In HTTP persistent connections, the web server
saves opened connections (which consume CPU
time and memory). The web client does not have to
Network timeout preventing a Web browser from loading a page send an “end of requests series” signal. Connections
are closed (timed out) after five minutes of inactiv-
In telecommunications and related engineering (including ity; this ensures that the connections do not persist
computer networking and programming), the term time- indefinitely.
out or time-out has several meanings, including: • In a timed light switch, both energy and lamp’s life-
span are saved. The user does not have to switch off
• A network parameter related to an enforced event manually.
designed to occur at the conclusion of a predeter-
mined elapsed time. • Tablet computers and smartphones commonly turn
off their backlight after a certain time without user
• A specified period of time that will be allowed to input.
elapse in a system before a specified event is to take • In an electronic text-based customer relationship
place, unless another specified event occurs first; in management software tool, the threads can be auto-
either case, the period is terminated when either closed in a timed base, allowing the workers save
event takes place. Note: A timeout condition can browse time. The customer does not have to send
be canceled by the receipt of an appropriate time- an “I'm done” signal.
out cancellation signal.

• An event that occurs at the end of a predetermined


period of time that began at the occurrence of an- 63.1 See also
other specified event. The timeout can be prevented
by an appropriate signal. • Fibre Channel time out values
• Human-Machine Interaction
Timeouts allow for more efficient usage of limited re-
sources without requiring additional interaction from the • Permanent signal
agent interested in the goods that cause the consumption
of these resources. The basic idea is that in situations
where a system must wait for something to happen, rather 63.2 Sources
than waiting indefinitely, the waiting will be aborted af-
ter the timeout period has elapsed. This is based on the • Federal Standard 1037C

354
63.2. SOURCES 355

• MIL-STD-188
Chapter 64

Transmission Control Protocol

The Transmission Control Protocol (TCP) is a core another host, such as the required packet fragmentation
protocol of the Internet protocol suite. It originated in on the transmission medium. At the transport layer, the
the initial network implementation in which it comple- protocol handles all handshaking and transmission details
mented the Internet Protocol (IP). Therefore, the entire and presents an abstraction of the network connection to
suite is commonly referred to as TCP/IP. TCP provides the application.
reliable, ordered, and error-checked delivery of a stream
At the lower levels of the protocol stack, due to network
of octets between applications running on hosts commu- congestion, traffic load balancing, or other unpredictable
nicating over an IP network. Major Internet applica-
network behavior, IP packets may be lost, duplicated,
tions such as the World Wide Web, email, remote ad- or delivered out of order. TCP detects these problems,
ministration and file transfer rely on TCP. Applications
requests retransmission of lost data, rearranges out-of-
that do not require reliable data stream service may use order data, and even helps minimize network congestion
the User Datagram Protocol (UDP), which provides a to reduce the occurrence of the other problems. If the
connectionless datagram service that emphasizes reduced data still remains undelivered, its source is notified of this
latency over reliability. failure. Once the TCP receiver has reassembled the se-
quence of octets originally transmitted, it passes them to
the receiving application. Thus, TCP abstracts the appli-
64.1 Historical origin cation’s communication from the underlying networking
details.
In May 1974, the Institute of Electrical and Electronic TCP is utilized extensively by many popular applications
Engineers (IEEE) published a paper titled "A Protocol carried on the Internet, including the World Wide Web
for Packet Network Intercommunication."[1] The paper’s (WWW), E-mail, File Transfer Protocol, Secure Shell,
authors, Vint Cerf and Bob Kahn, described an inter- peer-to-peer file sharing, and many streaming media ap-
networking protocol for sharing resources using packet- plications.
switching among the nodes. A central control compo-
TCP is optimized for accurate delivery rather than timely
nent of this model was the Transmission Control Pro-
delivery, and therefore, TCP sometimes incurs relatively
gram that incorporated both connection-oriented links
long delays (on the order of seconds) while waiting for
and datagram services between hosts. The monolithic
out-of-order messages or retransmissions of lost mes-
Transmission Control Program was later divided into a
sages. It is not particularly suitable for real-time appli-
modular architecture consisting of the Transmission Con-
cations such as Voice over IP. For such applications, pro-
trol Protocol at the connection-oriented layer and the In-
tocols like the Real-time Transport Protocol (RTP) run-
ternet Protocol at the internetworking (datagram) layer.
ning over the User Datagram Protocol (UDP) are usually
The model became known informally as TCP/IP, although
recommended instead.[2]
formally it was henceforth called the Internet Protocol
Suite. TCP is a reliable stream delivery service which guaran-
tees that all bytes received will be identical with bytes
sent and in the correct order. Since packet transfer over
many networks is not reliable, a technique known as pos-
64.2 Network function itive acknowledgment with retransmission is used to
guarantee reliability of packet transfers. This fundamen-
The Transmission Control Protocol provides a commu- tal technique requires the receiver to respond with an
nication service at an intermediate level between an ap- acknowledgment message as it receives the data. The
plication program and the Internet Protocol. It provides sender keeps a record of each packet it sends. The sender
host-to-host connectivity at the Transport Layer of the also maintains a timer from when the packet was sent,
Internet model. An application does not need to know and retransmits a packet if the timer expires before the
the particular mechanisms for sending data via a link to

356
64.3. TCP SEGMENT STRUCTURE 357

message has been acknowledged. The timer is needed in of the actual first data byte and the acknowl-
case a packet gets lost or corrupted.[2] edged number in the corresponding ACK are
While IP handles actual delivery of the data, TCP keeps then this sequence number plus 1.
track of the individual units of data transmission, called • If the SYN flag is clear (0), then this is the
segments, that a message is divided into for efficient accumulated sequence number of the first data
routing through the network. For example, when an byte of this segment for the current session.
HTML file is sent from a web server, the TCP software
layer of that server divides the sequence of octets of the Acknowledgment number (32 bits) if the ACK flag is
file into segments and forwards them individually to the set then the value of this field is the next sequence
IP software layer (Internet Layer). The Internet Layer en- number that the receiver is expecting. This acknowl-
capsulates each TCP segment into an IP packet by adding edges receipt of all prior bytes (if any). The first
a header that includes (among other data) the destination ACK sent by each end acknowledges the other end’s
IP address. When the client program on the destination initial sequence number itself, but no data.
computer receives them, the TCP layer (Transport Layer)
Data offset (4 bits) specifies the size of the TCP header
reassembles the individual segments, and ensures they are
in 32-bit words. The minimum size header is 5
correctly ordered and error free as it streams them to an
words and the maximum is 15 words thus giving
application.
the minimum size of 20 bytes and maximum of 60
bytes, allowing for up to 40 bytes of options in the
header. This field gets its name from the fact that it
64.3 TCP segment structure is also the offset from the start of the TCP segment
to the actual data.
Transmission Control Protocol accepts data from a data
stream, divides it into chunks, and adds a TCP header Reserved (3 bits) for future use and should be set to
creating a TCP segment. The TCP segment is then zero
encapsulated into an Internet Protocol (IP) datagram, and
Flags (9 bits) (aka Control bits) contains 9 1-bit flags
exchanged with peers.[3]
The term TCP packet appears in both informal and for- • NS (1 bit) – ECN-nonce concealment protec-
mal usage, whereas in more precise terminology segment tion (experimental: see RFC 3540).
refers to the TCP protocol data unit (PDU), datagram[4] • CWR (1 bit) – Congestion Window Reduced
to the IP PDU, and frame to the data link layer PDU: (CWR) flag is set by the sending host to indi-
cate that it received a TCP segment with the
Processes transmit data by calling on the ECE flag set and had responded in congestion
TCP and passing buffers of data as arguments. control mechanism (added to header by RFC
The TCP packages the data from these buffers 3168).
into segments and calls on the internet module
• ECE (1 bit) – ECN-Echo has a dual role, de-
[e.g. IP] to transmit each segment to the desti-
pending on the value of the SYN flag. It indi-
nation TCP.[5]
cates:

A TCP segment consists of a segment header and a data • If the SYN flag is set (1), that the
section. The TCP header contains 10 mandatory fields, TCP peer is ECN capable.
and an optional extension field (Options, pink background • If the SYN flag is clear (0),
in table). that a packet with Congestion Ex-
The data section follows the header. Its contents are the perienced flag set (ECN=11) in
payload data carried for the application. The length of the IP header received during normal
data section is not specified in the TCP segment header. transmission (added to header by
It can be calculated by subtracting the combined length RFC 3168). This serves as an in-
of the TCP header and the encapsulating IP header from dication of network congestion (or
the total IP datagram length (specified in the IP header). impending congestion) to the TCP
sender.
Source port (16 bits) identifies the sending port
• URG (1 bit) – indicates that the Urgent pointer
Destination port (16 bits) identifies the receiving port field is significant

Sequence number (32 bits) has a dual role: • ACK (1 bit) – indicates that the Acknowledg-
ment field is significant. All packets after the
• If the SYN flag is set (1), then this is the ini- initial SYN packet sent by the client should
tial sequence number. The sequence number have this flag set.
358 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

• PSH (1 bit) – Push function. Asks to push the • 1 (8 bits) – No operation (NOP, Padding) This
buffered data to the receiving application. may be used to align option fields on 32-bit
boundaries for better performance.
• RST (1 bit) – Reset the connection
• 2,4,SS (32 bits) – Maximum segment size (see
• SYN (1 bit) – Synchronize sequence numbers. maximum segment size) [SYN]
Only the first packet sent from each end should
have this flag set. Some other flags and fields • 3,3,S (24 bits) – Window scale (see window
change meaning based on this flag, and some scaling for details) [SYN][6]
are only valid for when it is set, and others • 4,2 (16 bits) – Selective Acknowledgement
when it is clear. permitted. [SYN] (See selective acknowledg-
ments for details)[7]
• FIN (1 bit) – No more data from sender
• 5,N,BBBB,EEEE,... (variable bits, N is either
Window size (16 bits) the size of the receive window, 10, 18, 26, or 34)- Selective ACKnowledge-
which specifies the number of window size units (by ment (SACK)[8] These first two bytes are fol-
default, bytes) (beyond the segment identified by the lowed by a list of 1–4 blocks being selectively
sequence number in the acknowledgment field) that acknowledged, specified as 32-bit begin/end
the sender of this segment is currently willing to re- pointers.
ceive (see Flow control and Window Scaling) • 8,10,TTTT,EEEE (80 bits)- Timestamp and
echo of previous timestamp (see TCP times-
Checksum (16 bits) The 16-bit checksum field is used tamps for details)[9]
for error-checking of the header and data
(The remaining options are historical, obsolete, experi-
Urgent pointer (16 bits) if the URG flag is set, then this mental, not yet standardized, or unassigned)
16-bit field is an offset from the sequence number Padding The TCP header padding is used to ensure that
indicating the last urgent data byte the TCP header ends and data begins on a 32 bit
boundary. The padding is composed of zeros.[10]
Options (Variable 0–320 bits, divisible by 32) The
length of this field is determined by the data offset
field. Options have up to three fields: Option-Kind
(1 byte), Option-Length (1 byte), Option-Data 64.4 Protocol operation
(variable). The Option-Kind field indicates the
type of option, and is the only field that is not
optional. Depending on what kind of option we
CONNECT/ SYN (Step 1 of the 3-way-handshake)
unusual event
client/receiver path (Start) CLOSED
server/sender path CLOSE/-
LISTEN/-

are dealing with, the next two fields may be set: (Step 2 of the 3-way-handshake) SYN/SYN+ACK
LISTEN
CLOSE/-

the Option-Length field indicates the total length RST/- SEND/SYN


SYN SYN

of the option, and the Option-Data field contains RECEIVED SYN/SYN+ACK (simultaneous open) SENT

the value of the option, if applicable. For example, ACK/-


Data exchange occurs
ESTABLISHED
SYN+ACK/ACK
(Step 3 of the 3-way-handshake)

an Option-Kind byte of 0x01 indicates that this is CLOSE/ FIN


CLOSE/ FIN FIN/ACK

a No-Op option used only for padding, and does Active CLOSE Passive CLOSE

not have an Option-Length or Option-Data byte FIN WAIT 1


FIN/ACK
CLOSING CLOSE WAIT

following it. An Option-Kind byte of 0 is the End ACK/-


FIN+ACK/ACK

ACK/- CLOSE/ FIN

Of Options option, and is also only one byte. An


Option-Kind byte of 0x02 indicates that this is FIN WAIT 2
FIN/ACK
TIME WAIT

Timeout
LAST ACK

ACK/-

the Maximum Segment Size option, and will be (Go back to start) CLOSED

followed by a byte specifying the length of the MSS


field (should be 0x04). Note that this length is the
total length of the given options field, including A Simplified TCP State Diagram. See TCP EFSM diagram for
Option-Kind and Option-Length bytes. So while a more detailed state diagram including the states inside the ES-
the MSS value is typically expressed in two bytes, TABLISHED state.
the length of the field will be 4 bytes (+2 bytes of TCP protocol operations may be divided into three
kind and length). In short, an MSS option field phases. Connections must be properly established in a
with a value of 0x05B4 will show up as (0x02 0x04 multi-step handshake process (connection establishment)
0x05B4) in the TCP options section. before entering the data transfer phase. After data trans-
mission is completed, the connection termination closes
Some options may only be sent when SYN is set; they
established virtual circuits and releases all allocated re-
are indicated below as [SYN] . Option-Kind and stan-
sources.
dard lengths given as (Option-Kind,Option-Length).
A TCP connection is managed by an operating system
• 0 (8 bits) – End of options list through a programming interface that represents the local
64.4. PROTOCOL OPERATION 359

end-point for communications, the Internet socket. Dur- Once the passive open is established, a client may initiate
ing the lifetime of a TCP connection the local end-point an active open. To establish a connection, the three-way
undergoes a series of state changes:[11] (or 3-step) handshake occurs:

LISTEN (server) represents waiting for a connection 1. SYN: The active open is performed by the client
request from any remote TCP and port. sending a SYN to the server. The client sets the seg-
ment’s sequence number to a random value A.
SYN-SENT (client) represents waiting for a matching
connection request after having sent a connection
2. SYN-ACK: In response, the server replies with
request.
a SYN-ACK. The acknowledgment number is set
SYN-RECEIVED (server) represents waiting for a to one more than the received sequence number
confirming connection request acknowledgment af- i.e. A+1, and the sequence number that the server
ter having both received and sent a connection re- chooses for the packet is another random number,
quest. B.

ESTABLISHED (both server and client) represents an 3. ACK: Finally, the client sends an ACK back to the
open connection, data received can be delivered to server. The sequence number is set to the received
the user. The normal state for the data transfer phase acknowledgement value i.e. A+1, and the acknowl-
of the connection. edgement number is set to one more than the re-
ceived sequence number i.e. B+1.
FIN-WAIT-1 (both server and client) represents wait-
ing for a connection termination request from the
remote TCP, or an acknowledgment of the connec- At this point, both the client and server have received an
tion termination request previously sent. acknowledgment of the connection. The steps 1, 2 es-
tablish the connection parameter (sequence number) for
FIN-WAIT-2 (both server and client) represents wait- one direction and it is acknowledged. The steps 2, 3 es-
ing for a connection termination request from the tablish the connection parameter (sequence number) for
remote TCP. the other direction and it is acknowledged. With these, a
CLOSE-WAIT (both server and client) represents full-duplex communication is established.
waiting for a connection termination request from
the local user.
64.4.2 Connection termination
CLOSING (both server and client) represents waiting
for a connection termination request acknowledg-
ment from the remote TCP.
Initiator Receiver
LAST-ACK (both server and client) represents wait- ESTABLISHED
connection
ing for an acknowledgment of the connection ter-
mination request previously sent to the remote TCP active close
ESTABLISHED
(which includes an acknowledgment of its connec- FIN_WAIT_1 FIN connection

tion termination request). CLOSE_WAIT


passive close
ACK
TIME-WAIT (either server or client) represents wait- FIN LAST_ACK
FIN_WAIT_2
ing for enough time to pass to be sure the remote
TCP received the acknowledgment of its connection TIME_WAIT
ACK
termination request. [According to RFC 793 a con- CLOSED
nection can stay in TIME-WAIT for a maximum of CLOSED
four minutes known as two MSL (maximum seg-
ment lifetime).]
CLOSED (both server and client) represents no con- Connection termination
nection state at all.
The connection termination phase uses a four-way
handshake, with each side of the connection terminat-
64.4.1 Connection establishment ing independently. When an endpoint wishes to stop its
half of the connection, it transmits a FIN packet, which
To establish a connection, TCP uses a three-way the other end acknowledges with an ACK. Therefore, a
handshake. Before a client attempts to connect with a typical tear-down requires a pair of FIN and ACK seg-
server, the server must first bind to and listen at a port to ments from each TCP endpoint. After the side that sent
open it up for connections: this is called a passive open. the first FIN has responded with the final ACK, it waits
360 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

for a timeout before finally closing the connection, dur- number of outgoing connections from each of the client’s
ing which time the local port is unavailable for new con- IP addresses. If an application fails to properly close un-
nections; this prevents confusion due to delayed packets required connections, a client can run out of resources
being delivered during subsequent connections. and become unable to establish new TCP connections,
A connection can be “half-open”, in which case one side even from other applications.
has terminated its end, but the other has not. The side Both endpoints must also allocate space for unacknowl-
that has terminated can no longer send any data into the edged packets and received (but unread) data.
connection, but the other side can. The terminating side
should continue reading the data until the other side ter-
minates as well. 64.4.4 Data transfer
It is also possible to terminate the connection by a 3-way
handshake, when host A sends a FIN and host B replies There are a few key features that set TCP apart from User
with a FIN & ACK (merely combines 2 steps into one) Datagram Protocol:
and host A replies with an ACK.[12]
Some host TCP stacks may implement a half-duplex close • Ordered data transfer — the destination host rear-
sequence, as Linux or HP-UX do. If such a host actively ranges according to sequence number[2]
closes a connection but still has not read all the incoming
data the stack already received from the link, this host • Retransmission of lost packets — any cumulative
sends a RST instead of a FIN (Section 4.2.2.13 in RFC stream not acknowledged is retransmitted[2]
1122). This allows a TCP application to be sure the re-
mote application has read all the data the former sent— • Error-free data transfer[13]
waiting the FIN from the remote side, when it actively
closes the connection. But the remote TCP stack cannot • Flow control — limits the rate a sender transfers data
distinguish between a Connection Aborting RST and Data to guarantee reliable delivery. The receiver contin-
Loss RST. Both cause the remote stack to lose all the data ually hints the sender on how much data can be re-
received. ceived (controlled by the sliding window). When
Some application protocols may violate the OSI model the receiving host’s buffer fills, the next acknowledg-
layers, using the TCP open/close handshaking for the ap- ment contains a 0 in the window size, to stop transfer
plication protocol open/close handshaking — these may and allow the data in the buffer to be processed.[2]
find the RST problem on active close. As an example:
• Congestion control[2]
s = connect(remote); send(s, data); close(s);
For a usual program flow like above, a TCP/IP stack like
that described above does not guarantee that all the data Reliable transmission
arrives to the other application.
TCP uses a sequence number to identify each byte of data.
The sequence number identifies the order of the bytes sent
64.4.3 Resource usage from each computer so that the data can be reconstructed
in order, regardless of any packet reordering, or packet
loss that may occur during transmission. The sequence
Most implementations allocate an entry in a table that
maps a session to a running operating system process. number of the first byte is decided during the initial 3-
way handshake. This number can be arbitrary, and should
Because TCP packets do not include a session identifier,
both endpoints identify the session using the client’s ad- in fact be unpredictable to defend against TCP sequence
dress and port. Whenever a packet is received, the TCP prediction attacks.
implementation must perform a lookup on this table to Acknowledgements (Acks) are sent by the receiver of
find the destination process. Each entry in the table is data to tell the sender that data has been received. Acks
known as a Transmission Control Block or TCB. It con- do not imply that the data has been delivered to the ap-
tains information about the endpoints (IP and port), sta- plication. They merely signify that it is now the receiver’s
tus of the connection, running data about the packets that responsibility to deliver the data. In TCP Acks are cumu-
are being exchanged and buffers for sending and receiv- lative. That is, if the ith byte is acknowledged, it means
ing data. that all previous bytes have been received too.
The number of sessions in the server side is limited only Reliability is achieved by the sender detecting lost data
by memory and can grow as new connections arrive, but and retransmitting it. TCP uses two primary techniques
the client must allocate a random port before sending to identify loss. Retransmission timeout (abbreviated as
the first SYN to the server. This port remains allocated RTO) and duplicate cumulative acknowledgements (Du-
during the whole conversation, and effectively limits the pAcks).
64.4. PROTOCOL OPERATION 361

Dupack based retransmission If a single packet (say Flow control


packet 100) in a stream is lost, then the receiver cannot ac-
knowledge packets above 100 because it uses cumulative TCP uses an end-to-end flow control protocol to avoid
acks. Hence the receiver acknowledges packet 100 again having the sender send data too fast for the TCP receiver
on the receipt of another data packet. This duplicate ac- to receive and process it reliably. Having a mechanism
knowledgement is used as a signal for packet loss. That for flow control is essential in an environment where ma-
is, if the sender receives three duplicate acknowledge- chines of diverse network speeds communicate. For ex-
ments, it retransmits the last unacknowledged packet. A ample, if a PC sends data to a smartphone that is slowly
threshold of three is used because the network may re- processing received data, the smartphone must regulate
order packets causing duplicate acknowledgements. This the data flow so as not to be overwhelmed.[2]
threshold has been demonstrated to avoid spurious re-
transmissions due to reordering.[14] TCP uses a sliding window flow control protocol. In each
TCP segment, the receiver specifies in the receive window
field the amount of additionally received data (in bytes)
that it is willing to buffer for the connection. The sending
host can send only up to that amount of data before it must
Timeout based retransmission Whenever a packet
wait for an acknowledgment and window update from the
is sent, the sender sets a timer that is a conservative es-
receiving host.
timate of when the packet will be acked. If the packet
is not acked by then, it is retransmitted. Note that the
timer is reset every time the sender receives an acknowl-
edgement. This means that the retransmit timer fires Initial
sequence
only when the sender has received no acknowledgement Sequence numbers number
(Circumference = 0 to 2^32 slots)
for a long time. Typically the timer value is set to
smoothedRT T + max(G, 4 ∗ RT T variation) where ge
led n
d

ow tio
G is the clock granularity.[15] Further, in case a retransmit e
kn ca
ac pli
d, ap
eiv d t
o
rec re
ta live
timer has fired and still no acknowledgement is received, Da d de
an

the next timer is set to twice the previous value (up to a Data received, acknowledged,

certain threshold). Among other things, this helps defend but not yet delivered to application

Data
against a man in the middle denial of service attack that re
but n ceived
ot ack
now
,
le dged
tries to fool the sender into making so many retransmis- Un
fille
db
sions that the receiver is overwhelmed. uff
er

Window
If the sender infers that data has been lost in the net- shifts
work using one of the two techniques described above,
it retransmits the data. Receiver's window
(Allocation buffer)
Up to 2^16-1 slots

TCP sequence numbers and receive windows behave very much


Error detection like a clock. The receive window shifts each time the receiver
receives and acknowledges a new segment of data. Once it runs
out of sequence numbers, the sequence number loops back to 0.
Sequence numbers allow receivers to discard duplicate
packets and properly sequence reordered packets. Ac-
knowledgments allow senders to determine when to re- When a receiver advertises a window size of 0, the sender
transmit lost packets. stops sending data and starts the persist timer. The persist
To assure correctness a checksum field is included; see timer is used to protect TCP from a deadlock situation
checksum computation section for details on checksum- that could arise if a subsequent window size update from
ming. The TCP checksum is a weak check by modern the receiver is lost, and the sender cannot send more data
standards. Data Link Layers with high bit error rates may until receiving a new window size update from the re-
require additional link error correction/detection capabil- ceiver. When the persist timer expires, the TCP sender
ities. The weak checksum is partially compensated for attempts recovery by sending a small packet so that the
by the common use of a CRC or better integrity check at receiver responds by sending another acknowledgement
layer 2, below both TCP and IP, such as is used in PPP containing the new window size.
or the Ethernet frame. However, this does not mean that If a receiver is processing incoming data in small incre-
the 16-bit TCP checksum is redundant: remarkably, in- ments, it may repeatedly advertise a small receive win-
troduction of errors in packets between CRC-protected dow. This is referred to as the silly window syndrome,
hops is common, but the end-to-end 16-bit TCP check- since it is inefficient to send only a few bytes of data in a
sum catches most of these simple errors.[16] This is the TCP segment, given the relatively large overhead of the
end-to-end principle at work. TCP header.
362 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

Congestion control ation”. Strictly speaking, the MSS is not “negotiated”


between the originator and the receiver, because that
The final main aspect of TCP is congestion control. TCP would imply that both originator and receiver will nego-
uses a number of mechanisms to achieve high perfor- tiate and agree upon a single, unified MSS that applies to
mance and avoid congestion collapse, where network per- all communication in both directions of the connection.
formance can fall by several orders of magnitude. These In fact, two completely independent values of MSS are
mechanisms control the rate of data entering the network, permitted for the two directions of data flow in a TCP
keeping the data flow below a rate that would trigger col- connection.[17] This situation may arise, for example, if
lapse. They also yield an approximately max-min fair al- one of the devices participating in a connection has an
location between flows. extremely limited amount of memory reserved (perhaps
even smaller than the overall discovered Path MTU) for
Acknowledgments for data sent, or lack of acknowledg-
processing incoming TCP segments.
ments, are used by senders to infer network conditions be-
tween the TCP sender and receiver. Coupled with timers,
TCP senders and receivers can alter the behavior of the
flow of data. This is more generally referred to as con-
gestion control and/or network congestion avoidance.
64.4.6 Selective acknowledgments
Modern implementations of TCP contain four inter- Relying purely on the cumulative acknowledgment
twined algorithms: Slow-start, congestion avoidance, fast scheme employed by the original TCP protocol can lead
retransmit, and fast recovery (RFC 5681). to inefficiencies when packets are lost. For example, sup-
In addition, senders employ a retransmission timeout pose 10,000 bytes are sent in 10 different TCP packets,
(RTO) that is based on the estimated round-trip time (or and the first packet is lost during transmission. In a pure
RTT) between the sender and receiver, as well as the vari- cumulative acknowledgment protocol, the receiver can-
ance in this round trip time. The behavior of this timer is not say that it received bytes 1,000 to 9,999 successfully,
specified in RFC 6298. There are subtleties in the estima- but failed to receive the first packet, containing bytes 0 to
tion of RTT. For example, senders must be careful when 999. Thus the sender may then have to resend all 10,000
calculating RTT samples for retransmitted packets; typi- bytes.
cally they use Karn’s Algorithm or TCP timestamps (see To alleviate this issue TCP employs the selective ac-
RFC 1323). These individual RTT samples are then av- knowledgment (SACK) option, defined in RFC 2018,
eraged over time to create a Smoothed Round Trip Time which allows the receiver to acknowledge discontin-
(SRTT) using Jacobson's algorithm. This SRTT value is uous blocks of packets which were received correctly,
what is finally used as the round-trip time estimate. in addition to the sequence number of the last contiguous
Enhancing TCP to reliably handle loss, minimize errors, byte received successively, as in the basic TCP acknowl-
manage congestion and go fast in very high-speed envi- edgment. The acknowledgement can specify a number
ronments are ongoing areas of research and standards de- of SACK blocks, where each SACK block is conveyed by
velopment. As a result, there are a number of TCP con- the starting and ending sequence numbers of a contiguous
gestion avoidance algorithm variations. range that the receiver correctly received. In the exam-
ple above, the receiver would send SACK with sequence
numbers 1000 and 9999. The sender would accordingly
64.4.5 Maximum segment size retransmit only the first packet (bytes 0 to 999).
A TCP sender can interpret an out-of-order packet deliv-
The maximum segment size (MSS) is the largest amount ery as a lost packet. If it does so, the TCP sender will
of data, specified in bytes, that TCP is willing to receive in retransmit the packet previous to the out-of-order packet
a single segment. For best performance, the MSS should and slow its data delivery rate for that connection. The
be set small enough to avoid IP fragmentation, which can duplicate-SACK option, an extension to the SACK op-
lead to packet loss and excessive retransmissions. To try tion that was defined in RFC 2883, solves this problem.
to accomplish this, typically the MSS is announced by The TCP receiver sends a D-ACK to indicate that no
each side using the MSS option when the TCP connec- packets were lost, and the TCP sender can then reinstate
tion is established, in which case it is derived from the the higher transmission-rate.
maximum transmission unit (MTU) size of the data link
The SACK option is not mandatory, and comes into op-
layer of the networks to which the sender and receiver
eration only if both parties support it. This is negotiated
are directly attached. Furthermore, TCP senders can use
when a connection is established. SACK uses the optional
path MTU discovery to infer the minimum MTU along part of the TCP header (see TCP segment structure for
the network path between the sender and receiver, and
details). The use of SACK has become widespread —
use this to dynamically adjust the MSS to avoid IP frag-
all popular TCP stacks support it. Selective acknowledg-
mentation within the network. ment is also used in Stream Control Transmission Proto-
MSS announcement is also often called “MSS negoti- col (SCTP).
64.5. VULNERABILITIES 363

64.4.7 Window scaling 64.4.9 Out-of-band data

Main article: TCP window scale option It is possible to interrupt or abort the queued stream in-
stead of waiting for the stream to finish. This is done by
specifying the data as urgent. This tells the receiving pro-
For more efficient use of high bandwidth networks, a gram to process it immediately, along with the rest of the
larger TCP window size may be used. The TCP window urgent data. When finished, TCP informs the application
size field controls the flow of data and its value is limited and resumes back to the stream queue. An example is
to between 2 and 65,535 bytes. when TCP is used for a remote login session, the user
Since the size field cannot be expanded, a scaling factor is can send a keyboard sequence that interrupts or aborts
used. The TCP window scale option, as defined in RFC the program at the other end. These signals are most of-
1323, is an option used to increase the maximum win- ten needed when a program on the remote machine fails
dow size from 65,535 bytes to 1 gigabyte. Scaling up to to operate correctly. The signals must be sent without
larger window sizes is a part of what is necessary for TCP waiting for the program to finish its current transfer.[2]
tuning. TCP OOB data was not designed for the modern Inter-
The window scale option is used only during the TCP 3- net. The urgent pointer only alters the processing on the
way handshake. The window scale value represents the remote host and doesn't expedite any processing on the
number of bits to left-shift the 16-bit window size field. network itself. When it gets to the remote host there
The window scale value can be set from 0 (no shift) to 14 are two slightly different interpretations of the protocol,
for each direction independently. Both sides must send which means only single bytes of OOB data are reliable.
the option in their SYN segments to enable window scal- This is assuming it is reliable at all as it is one of the least
ing in either direction. commonly used protocol elements and tends to be poorly
implemented. [19][20]
Some routers and packet firewalls rewrite the window
scaling factor during a transmission. This causes send-
ing and receiving sides to assume different TCP window
64.4.10 Forcing data delivery
sizes. The result is non-stable traffic that may be very
slow. The problem is visible on some sites behind a de-
Normally, TCP waits for 200 ms for a full packet of data
fective router.[18]
to send (Nagle’s Algorithm tries to group small messages
into a single packet). This wait creates small, but poten-
tially serious delays if repeated constantly during a file
transfer. For example, a typical send block would be 4
64.4.8 TCP timestamps KB, a typical MSS is 1460, so 2 packets go out on a 10
Mbit/s ethernet taking ~1.2 ms each followed by a third
TCP timestamps, defined in RFC 1323, can help TCP carrying the remaining 1176 after a 197 ms pause be-
determine in which order packets were sent. TCP times- cause TCP is waiting for a full buffer.
tamps are not normally aligned to the system clock and In the case of telnet, each user keystroke is echoed back
start at some random value. Many operating systems will by the server before the user can see it on the screen. This
increment the timestamp for every elapsed millisecond; delay would become very annoying.
however the RFC only states that the ticks should be pro-
Setting the socket option TCP_NODELAY overrides the
portional.
default 200 ms send delay. Application programs use this
There are two timestamp fields: socket option to force output to be sent after writing a
a 4-byte sender timestamp value (my timestamp) a 4-byte character or line of characters.
echo reply timestamp value (the most recent timestamp The RFC defines the PSH push bit as “a message to the
received from you). receiving TCP stack to send this data immediately up to
[2]
TCP timestamps are used in an algorithm known as Pro- the receiving application”. There is no way to indicate
tection Against Wrapped Sequence numbers, or PAWS (see or control it in User space using Berkeley
[21]
sockets and it
RFC 1323 for details). PAWS is used when the receive is controlled by Protocol stack only.
window crosses the sequence number wraparound bound-
ary. In the case where a packet was potentially retrans-
mitted it answers the question: “Is this sequence number 64.5 Vulnerabilities
in the first 4 GB or the second?" And the timestamp is
used to break the tie. TCP may be attacked in a variety of ways. The results
Also, the Eifel detection algorithm (RFC 3522) uses TCP of a thorough security assessment of TCP, along with
timestamps to determine if retransmissions are occurring possible mitigations for the identified issues, were pub-
because packets are lost or simply out of order. lished in 2009,[22] and is currently being pursued within
364 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

the IETF.[23] packet is “vetoed” by the malicious packet. Unlike in


connection hijacking, the connection is never desynchro-
nized and communication continues as normal after the
64.5.1 Denial of service malicious payload is accepted. TCP veto gives the at-
tacker less control over the communication, but makes
By using a spoofed IP address and repeatedly sending the attack particularly resistant to detection. The large in-
purposely assembled SYN packets, followed by many crease in network traffic from the ACK storm is avoided.
ACK packets, attackers can cause the server to consume The only evidence to the receiver that something is amiss
large amounts of resources keeping track of the bogus is a single duplicate packet, a normal occurrence in an IP
connections. This is known as a SYN flood attack. Pro- network. The sender of the vetoed packet never sees any
posed solutions to this problem include SYN cookies and evidence of an attack.[28]
cryptographic puzzles, though SYN cookies come with
their own set of vulnerabilities.[24] Sockstress is a simi-
lar attack, that might be mitigated with system resource
management.[25] An advanced DoS attack involving the 64.6 TCP ports
exploitation of the TCP Persist Timer was analyzed in
Phrack #66.[26] TCP uses port numbers to identify sending and receiv-
ing application end-points on a host, often called Internet
sockets. Each side of a TCP connection has an associ-
64.5.2 Connection hijacking ated 16-bit unsigned port number (0-65535) reserved by
the sending or receiving application. Arriving TCP pack-
Main article: TCP sequence prediction attack ets are identified as belonging to a specific TCP connec-
tion by its sockets, that is, the combination of source host
An attacker who is able to eavesdrop a TCP session and address, source port, destination host address, and desti-
redirect packets can hijack a TCP connection. To do so, nation port. This means that a server computer can pro-
the attacker learns the sequence number from the ongo- vide several clients with several services simultaneously,
ing communication and forges a false segment that looks as long as a client takes care of initiating any simultaneous
like the next segment in the stream. Such a simple hi- connections to one destination port from different source
jack can result in one packet being erroneously accepted ports.
at one end. When the receiving host acknowledges the ex- Port numbers are categorized into three basic categories:
tra segment to the other side of the connection, synchro- well-known, registered, and dynamic/private. The well-
nization is lost. Hijacking might be combined with ARP known ports are assigned by the Internet Assigned Num-
or routing attacks that allow taking control of the packet bers Authority (IANA) and are typically used by system-
flow, so as to get permanent control of the hijacked TCP level or root processes. Well-known applications running
connection.[27] as servers and passively listening for connections typically
Impersonating a different IP address was not difficult use these ports. Some examples include: FTP (20 and
prior to RFC 1948, when the initial sequence number was 21), SSH (22), TELNET (23), SMTP (25), SSL (443)
easily guessable. That allowed an attacker to blindly send and HTTP (80). Registered ports are typically used by
a sequence of packets that the receiver would believe to end user applications as ephemeral source ports when
come from a different IP address, without the need to contacting servers, but they can also identify named ser-
deploy ARP or routing attacks: it is enough to ensure vices that have been registered by a third party. Dy-
that the legitimate host of the impersonated IP address is namic/private ports can also be used by end user applica-
down, or bring it to that condition using denial-of-service tions, but are less commonly so. Dynamic/private ports
attacks. This is why the initial sequence number is now do not contain any meaning outside of any particular TCP
chosen at random. connection.
Network address translation (NAT), typically uses dy-
namic port-numbers, on the (“Internet-facing”) public
64.5.3 TCP veto side, to disambiguate the flow of traffic that is passing be-
tween a public network and a private subnetwork, thereby
An attacker who can eavesdrop and predict the size of allowing many IP addresses (and their ports) on the sub-
the next packet to be sent can cause the receiver to ac- net to be serviced by a single public-facing address.
cept a malicious payload without disrupting the existing
connection. The attacker injects a malicious packet with
the sequence number and a payload size of the next ex-
pected packet. When the legitimate packet is ultimately 64.7 Development
received, it is found to have the same sequence number
and length as a packet already received and is silently TCP is a complex protocol. However, while significant
dropped as a normal duplicate packet—the legitimate enhancements have been made and proposed over the
64.8. TCP OVER WIRELESS NETWORKS 365

years, its most basic operation has not changed signifi- (PRR) is a TCP extension developed by Google en-
cantly since its first specification RFC 675 in 1974, and gineers. PRR ensures that the TCP window size af-
the v4 specification RFC 793, published in September ter recovery is as close to the Slow-start threshold as
1981. RFC 1122, Host Requirements for Internet Hosts, possible.[39] The algorithm is designed to improve the
clarified a number of TCP protocol implementation re- speed of recovery and is the default congestion control
quirements. A list of the 8 required specifications and algorithm in Linux 3.2+ kernels.[40]
over 20 strongly encouraged enhancements is available
in RFC 7414. Among this list is RFC 2581, TCP Con-
gestion Control, one of the most important TCP-related
RFCs in recent years, describes updated algorithms that 64.8 TCP over wireless networks
avoid undue congestion. In 2001, RFC 3168 was writ-
ten to describe explicit congestion notification (ECN), a TCP was originally designed for wired networks. Packet
congestion avoidance signaling mechanism. loss is considered to be the result of network congestion
The original TCP congestion avoidance algorithm was and the congestion window size is reduced dramatically
known as “TCP Tahoe”, but many alternative algorithms as a precaution. However, wireless links are known to
have since been proposed (including TCP Reno, TCP Ve- experience sporadic and usually temporary losses due to
gas, FAST TCP, TCP New Reno, and TCP Hybla). fading, shadowing, hand off, and other radio effects, that
should not be considered congestion. After the (erro-
TCP Interactive (iTCP) [29] is a research effort into TCP neous) back-off of the congestion window size, due to
extensions that allows applications to subscribe to TCP wireless packet loss, there may be a congestion avoid-
events and register handler components that can launch ance phase with a conservative decrease in window size.
applications for various purposes, including application- This causes the radio link to be underutilized. Exten-
assisted congestion control. sive research on combating these harmful effects has
Multipath TCP (MPTCP) [30][31] is an ongoing effort been conducted. Suggested solutions can be categorized
within the IETF that aims at allowing a TCP connection as end-to-end solutions, which require modifications at
to use multiple paths to maximize resource usage and in- the client or server,[41] link layer solutions, such as RLP
crease redundancy. The redundancy offered by Multi- in cellular networks, or proxy-based solutions which re-
path TCP in the context of wireless networks [32] enables quire some changes in the network without modifying end
statistical multiplexing of resources, and thus increases nodes.[41][42]
TCP throughput dramatically. Multipath TCP also brings A number of alternative congestion control algorithms,
performance benefits in datacenter environments.[33] The such as Vegas, Westwood, Veno and Santa Cruz, have
reference implementation[34] of Multipath TCP is being been proposed to help solve the wireless problem.
developed in the Linux kernel.[35][36]
TCP Cookie Transactions (TCPCT) is an extension pro-
posed in December 2009 to secure servers against denial-
of-service attacks. Unlike SYN cookies, TCPCT does
64.9 Hardware implementations
not conflict with other TCP extensions such as window
scaling. TCPCT was designed due to necessities of One way to overcome the processing power requirements
DNSSEC, where servers have to handle large numbers of TCP is to build hardware implementations of it, widely
of short-lived TCP connections. known as TCP Offload Engines (TOE). The main prob-
lem of TOEs is that they are hard to integrate into com-
tcpcrypt is an extension proposed in July 2010 to provide
puting systems, requiring extensive changes in the oper-
transport-level encryption directly in TCP itself. It is de- ating system of the computer or device. One company to
signed to work transparently and not require any config-
develop such a device was Alacritech.
uration. Unlike TLS (SSL), tcpcrypt itself does not pro-
vide authentication, but provides simple primitives down
to the application to do that. As of 2010, the first tcpcrypt
IETF draft has been published and implementations exist 64.10 Debugging
for several major platforms.
TCP Fast Open is an extension to speed up the opening
A packet sniffer, which intercepts TCP traffic on a net-
of successive TCP connections between two endpoints. It
work link, can be useful in debugging networks, network
works by skipping the three-way handshake using a cryp-
stacks and applications that use TCP by showing the user
tographic “cookie”. It is similar to an earlier proposal
what packets are passing through a link. Some network-
called T/TCP, which was not widely adopted due to se-
ing stacks support the SO_DEBUG socket option, which
curity issues.[37] As of July 2012, it is an IETF Internet
can be enabled on the socket using setsockopt. That op-
draft.[38] tion dumps all the packets, TCP states, and events on that
Proposed in May 2013, Proportional Rate Reduction socket, which is helpful in debugging. Netstat is another
utility that can be used for debugging.
366 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

64.11 Alternatives 64.12 Checksum computation

64.12.1 TCP checksum for IPv4


For many applications TCP is not appropriate. One prob- When TCP runs over IPv4, the method used to compute
lem (at least with normal implementations) is that the ap- the checksum is defined in RFC 793:
plication cannot access the packets coming after a lost
packet until the retransmitted copy of the lost packet is
The checksum field is the 16 bit one’s com-
received. This causes problems for real-time applications
plement of the one’s complement sum of all 16-
such as streaming media, real-time multiplayer games and
bit words in the header and text. If a seg-
voice over IP (VoIP) where it is generally more useful to
ment contains an odd number of header and
get most of the data in a timely fashion than it is to get all
text octets to be checksummed, the last octet is
of the data in order.
padded on the right with zeros to form a 16-bit
For both historical and performance reasons, most word for checksum purposes. The pad is not
storage area networks (SANs) prefer to use Fibre Chan- transmitted as part of the segment. While com-
nel protocol (FCP) instead of TCP/IP. puting the checksum, the checksum field itself is
Also, for embedded systems, network booting, and replaced with zeros.
servers that serve simple requests from huge numbers of
clients (e.g. DNS servers) the complexity of TCP can In other words, after appropriate padding, all 16-bit
be a problem. Finally, some tricks such as transmitting words are added using one’s complement arithmetic.
data between two hosts that are both behind NAT (us- The sum is then bitwise complemented and inserted as
ing STUN or similar systems) are far simpler without a the checksum field. A pseudo-header that mimics the
relatively complex protocol like TCP in the way. IPv4 packet header used in the checksum computation
Generally, where TCP is unsuitable, the User Datagram is shown in the table below.
Protocol (UDP) is used. This provides the application The source and destination addresses are those of the
multiplexing and checksums that TCP does, but does not IPv4 header. The protocol value is 6 for TCP (cf. List of
handle streams or retransmission, giving the application IP protocol numbers). The TCP length field is the length
developer the ability to code them in a way suitable for of the TCP header and data (measured in octets).
the situation, or to replace them with other methods like
forward error correction or interpolation.
Stream Control Transmission Protocol (SCTP) is another
64.12.2 TCP checksum for IPv6
protocol that provides reliable stream oriented services
When TCP runs over IPv6, the method used to compute
similar to TCP. It is newer and considerably more com-
the checksum is changed, as per RFC 2460:
plex than TCP, and has not yet seen widespread deploy-
ment. However, it is especially designed to be used in
situations where reliability and near-real-time considera- Any transport or other upper-layer protocol that
tions are important. includes the addresses from the IP header in its
checksum computation must be modified for use
Venturi Transport Protocol (VTP) is a patented over IPv6, to include the 128-bit IPv6 addresses
proprietary protocol that is designed to replace TCP instead of 32-bit IPv4 addresses.
transparently to overcome perceived inefficiencies
related to wireless data transport.
A pseudo-header that mimics the IPv6 header for com-
TCP also has issues in high bandwidth environments. The putation of the checksum is shown below.
TCP congestion avoidance algorithm works very well for
ad-hoc environments where the data sender is not known
in advance, but if the environment is predictable, a tim- • Source address – the one in the IPv6 header
ing based protocol such as Asynchronous Transfer Mode • Destination address – the final destination; if the
(ATM) can avoid TCP’s retransmits overhead. IPv6 packet doesn't contain a Routing header, TCP
UDP-based Data Transfer Protocol (UDT) has better ef- uses the destination address in the IPv6 header, oth-
ficiency and fairness than TCP in networks that have high erwise, at the originating node, it uses the address in
bandwidth-delay product.[43] the last element of the Routing header, and, at the
receiving node, it uses the destination address in the
Multipurpose Transaction Protocol (MTP/IP) is patented
IPv6 header.
proprietary software that is designed to adaptively achieve
high throughput and transaction performance in a wide • TCP length – the length of the TCP header and data
variety of network conditions, particularly those where
TCP is perceived to be inefficient. • Next Header – the protocol value for TCP
64.14. REFERENCES 367

64.12.3 Checksum offload • WTCP a proxy-based modification of TCP for wire-


less networks
Many TCP/IP software stack implementations provide
options to use hardware assistance to automatically com- • Transport Layer § Comparison of transport layer
pute the checksum in the network adapter prior to trans- protocols
mission onto the network or upon reception from the net-
work for validation. This may relieve the OS from using
precious CPU cycles calculating the checksum. Hence, 64.14 References
overall network performance is increased.
This feature may cause packet analyzers detecting out- [1] Vinton G. Cerf; Robert E. Kahn (May 1974). "A Pro-
bound network traffic upstream of the network adapter tocol for Packet Network Intercommunication" (PDF).
IEEE Transactions on Communications. 22 (5): 637–
that are unaware or uncertain about the use of checksum
648. doi:10.1109/tcom.1974.1092259. Archived from
offload to report invalid checksum in outbound packets. the original (PDF) on March 4, 2016.

[2] Comer, Douglas E. (2006). Internetworking with TCP/IP:


64.13 See also Principles, Protocols, and Architecture. 1 (5th ed.). Pren-
tice Hall. ISBN 0-13-187671-6.

• Connection-oriented protocol [3] “TCP (Linktionary term)".

• IP fragmentation [4] “RFC 791 – section 2.1”.

• Karn’s algorithm [5] “RFC 793”.

• Maximum segment lifetime [6] “RFC 1323, TCP Extensions for High Performance, Sec-
tion 2.2”.
• Maximum segment size
[7] “RFC 2018, TCP Selective Acknowledgement Options,
• Maximum transmission unit Section 2”.

• Micro-bursting (networking) [8] “RFC 2018, TCP Selective Acknowledgement Options,


Section 3”.
• Multipurpose Transaction Protocol (MTP/IP)
[9] “RFC 1323, TCP Extensions for High Performance, Sec-
• Nagle’s algorithm tion 3.2”.

• Path MTU discovery [10] RFC 793 section 3.1

• Silly window syndrome [11] RFC 793 Section 3.2

• Sockstress [12] Tanenbaum, Andrew S. (2003-03-17). Computer Net-


works (Fourth ed.). Prentice Hall. ISBN 0-13-066102-3.
• Stream Control Transmission Protocol (SCTP)
[13] “TCP Definition”. Retrieved 2011-03-12.
• SYN cookies
[14] Mathis; Mathew; Semke; Mahdavi; Ott (1997). “The
• SYN flood macroscopic behavior of the TCP congestion avoidance
algorithm”. ACM SIGCOMM Computer Communication
• T/TCP variant of TCP Review. 27.3: 67–82.

• TCP and UDP port [15] Paxson, V.; Allman, M.; Chu, J.; Sargent, M. (June 2011).
“The Basic Algorithm”. Computing TCP’s Retransmission
• TCP and UDP port numbers for a long list of Timer. IETF. p. 2. sec. 2. RFC 6298. https://tools.
ports/services ietf.org/html/rfc6298#section-2. Retrieved October 24,
2015.
• TCP congestion avoidance algorithms
[16] Stone; Partridge (2000). “When The CRC and TCP
• TCP global synchronization Checksum Disagree”. Sigcomm.

• TCP pacing [17] “RFC 879”.

• TCP segment [18] “TCP window scaling and broken routers [LWN.net]".

• TCP Sequence Prediction Attack [19] Gont, Fernando (November 2008). “On the implementa-
tion of TCP urgent data”. 73rd IETF meeting. Retrieved
• TCP tuning for high performance networks 2009-01-04.
368 CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

[20] Peterson, Larry (2003). Computer Networks. Morgan [42] Muhammad Adeel & Ahmad Ali Iqbal (2004). “TCP
Kaufmann. p. 401. ISBN 1-55860-832-X. Congestion Window Optimization for CDMA2000
Packet Data Networks”. International Confer-
[21] Richard W. Stevens (2006). TCP/IP Illustrated. Vol. 1, ence on Information Technology (ITNG'07): 31–35.
The protocols. Addison-Wesley. pp. Chapter 20. ISBN doi:10.1109/ITNG.2007.190. ISBN 978-0-7695-2776-
978-0-201-63346-7. Retrieved 14 November 2011. 5.
[22] Security Assessment of the Transmission Control Proto- [43] Yunhong Gu, Xinwei Hong, and Robert L. Grossman.
col (TCP) at the Wayback Machine (archived March 6, “An Analysis of AIMD Algorithm with Decreasing In-
2009) creases”. 2004.
[23] Security Assessment of the Transmission Control Proto-
col (TCP)

[24] Jakob Lell. “Quick Blind TCP Connection Spoofing with


64.15 Further reading
SYN Cookies”. Retrieved 2014-02-05.
• Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
[25] Some insights about the recent TCP DoS (Denial of Ser- The Protocols. ISBN 0-201-63346-9.
vice) vulnerabilities
• Stevens, W. Richard; Wright, Gary R. TCP/IP Illus-
[26] “Exploiting TCP and the Persist Timer Infiniteness”.
trated, Volume 2: The Implementation. ISBN 0-201-
[27] “Laurent Joncheray, Simple Active Attack Against TCP, 63354-X.
1995”.
• Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
[28] John T. Hagen; Barry E. Mullins (2013). “TCP veto: A TCP for Transactions, HTTP, NNTP, and the UNIX
novel network attack and its application to SCADA pro- Domain Protocols. ISBN 0-201-63495-3.**
tocols”. Innovative Smart Grid Technologies (ISGT), 2013
IEEE PES.

[29] TCP Interactive (iTCP) 64.16 External links


[30] RFC 6182
64.16.1 RFC
[31] RFC 6824

[32] “TCP with feed-forward source coding for wireless down- • RFC 675 – Specification of Internet Transmission
link networks”. Control Program, December 1974 Version
[33] Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley • RFC 793 – TCP v4
(2011). “Improving datacenter performance and robust-
ness with multipath TCP”. Sigcomm. • RFC 1122 – includes some error corrections for
TCP
[34] “MultiPath TCP - Linux Kernel implementation”.
• RFC 1323 – TCP Extensions for High Performance
[35] Barre; Paasch; Bonaventure (2011). “MultiPath TCP:
[Obsoleted by RFC 7323]
From Theory to Practice”. IFIP Networking.

[36] Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaven- • RFC 1379 – Extending TCP for Transactions—
ture; Handley (2012). “How Hard Can It Be? De- Concepts [Obsoleted by RFC 6247]
signing and Implementing a Deployable Multipath TCP”.
USENIX NSDI. • RFC 1948 – Defending Against Sequence Number
Attacks
[37] Michael Kerrisk (2012-08-01). “TCP Fast Open: expe-
diting web services”. LWN.net. • RFC 2018 – TCP Selective Acknowledgment Op-
tions
[38] Y. Cheng, J. Chu, S. Radhakrishnan, A. Jain
(2012-07-16). TCP Fast Open. IETF. I-D draft- • RFC 5681 – TCP Congestion Control
ietf-tcpm-fastopen-01. https://tools.ietf.org/html/
draft-ietf-tcpm-fastopen-01. • RFC 6247 - Moving the Undeployed TCP Exten-
sions RFC 1072, RFC 1106, RFC 1110, RFC 1145,
[39] "RFC 6937 - Proportional Rate Reduction for TCP”. http:
RFC 1146, RFC 1379, RFC 1644, and RFC 1693
//tools.ietf.org/html/rfc6937. External link in |website=
to Historic Status
(help);

[40] Grigorik, Ilya (2013). High-performance browser net- • RFC 6298 – Computing TCP’s Retransmission
working (1. ed.). Beijing: O'Reilly. ISBN 1449344763. Timer

[41] “TCP performance over CDMA2000 RLP”. Retrieved • RFC 6824 - TCP Extensions for Multipath Opera-
2010-08-30 tion with Multiple Addresses
64.16. EXTERNAL LINKS 369

• RFC 7323 - TCP Extensions for High Performance

• RFC 7414 – A Roadmap for TCP Specification


Documents

64.16.2 Others
• Oral history interview with Robert E. Kahn, Charles
Babbage Institute, University of Minnesota, Min-
neapolis. Focuses on Kahn’s role in the develop-
ment of computer networking from 1967 through
the early 1980s. Beginning with his work at Bolt
Beranek and Newman (BBN), Kahn discusses his
involvement as the ARPANET proposal was be-
ing written, his decision to become active in its
implementation, and his role in the public demon-
stration of the ARPANET. The interview continues
into Kahn’s involvement with networking when he
moves to IPTO in 1972, where he was responsible
for the administrative and technical evolution of the
ARPANET, including programs in packet radio, the
development of a new network protocol (TCP/IP),
and the switch to TCP/IP to connect multiple net-
works.

• IANA Port Assignments


• John Kristoff’s Overview of TCP (Fundamental
concepts behind TCP and how it is used to transport
data between two endpoints)

• TCP fast retransmit simulation animated: slow start,


sliding window, duplicated Ack, congestion window

• TCP, Transmission Control Protocol


• Checksum example

• Engineer Francesco Buffa’s page about Transmis-


sion Control Protocol

• TCP tutorial
• Linktionary on TCP segments

• TCP Sliding Window simulation animated (ns2)


• Multipath TCP

• TCP Technology and Testing methodologies


Chapter 65

Transmission medium

This article is about transmission of signals. For biologi-


cal transmission, see Vector (molecular biology).

A transmission medium is a material substance (solid,


liquid, gas, or plasma) that can propagate energy waves.
For example, the transmission medium for sounds is usu-
ally air, but solids and liquids may also act as transmission
media for sound.
The absence of a material medium in vacuum may also
constitute a transmission medium for electromagnetic
waves such as light and radio waves. While material sub-
stance is not required for electromagnetic waves to prop-
agate, such waves are usually affected by the transmission Coaxial cable, one example of a transmission medium
media they pass through, for instance by absorption or by
reflection or refraction at the interfaces between media.
The term transmission medium also refers to a technical to explain the transmission medium. However, it is now
device that employs the material substance to transmit or known that electromagnetic waves do not require a phys-
guide waves. Thus, an optical fiber or a copper cable is ical transmission medium, and so can travel through the
a transmission medium. Not only this but also is able to "vacuum" of free space. Regions of the insulative vacuum
guide the transmission of networks. can become conductive for electrical conduction through
the presence of free electrons, holes, or ions.
A transmission medium can be classified as a:
Transmission and reception of data is performed in four
steps.
• Linear medium, if different waves at any particular
point in the medium can be superposed;
1. The data is coded as binary numbers at the sender
• Bounded medium, if it is finite in extent, otherwise end
unbounded medium;
2. A carrier signal is modulated as specified by the bi-
• Uniform medium or homogeneous medium, if its nary representation of the data
physical properties are unchanged at different
points; 3. At the receiving end, the incoming signal is demod-
ulated into the respective binary numbers
• Isotropic medium, if its physical properties are the
same in different directions. 4. Decoding of the binary numbers is performed[1]

Electromagnetic radiation can be transmitted through an


optical medium, such as optical fiber, or through twisted 65.1 Telecommunications
pair wires, coaxial cable, or dielectric-slab waveguides. It
may also pass through any physical material that is trans- A physical medium in data communications is the trans-
parent to the specific wavelength, such as water, air, glass, mission path over which a signal propagates.
or concrete. Sound is, by definition, the vibration of mat-
ter, so it requires a physical medium for transmission, Many transmission media are used as communications
as do other kinds of mechanical waves and heat energy. channel.
Historically, science incorporated various aether theories For telecommunications purposes in the United States,

370
65.2. SEE ALSO 371

Federal Standard 1037C, transmission media are classi- 65.1.1 Types of transmissions
fied as one of the following:
A transmission may be simplex, half-duplex, or full-
duplex.
• Guided (or bounded)—waves are guided along a
In simplex transmission, signals are transmitted in only
solid medium such as a transmission line.
one direction; one station is a transmitter and the other is
the receiver. In the half-duplex operation, both stations
• Wireless (or unguided)—transmission and reception may transmit, but only one at a time. In full duplex oper-
are achieved by means of an antenna. ation, both stations may transmit simultaneously. In the
latter case, the medium is carrying signals in both direc-
tions at same time.
One of the most common physical medias used in net- There are two types of transmission media:
working is copper wire. Copper wire to carry signals to
long distances using relatively low amounts of power. The • Guided
unshielded twisted pair (UTP) is eight strands of copper
wire, organized into four pairs.[2] • Unguided
Another example of a physical medium is optical fiber,
which has emerged as the most commonly used transmis- Guided Media:
sion medium for long-distance communications. Opti-
cal fiber is a thin strand of glass that guides light along • Un-shielded Twisted Pair (UTP)
its length. Four major factors favor optical fiber over • Shielded Twisted Pair
copper- data rates, distance, installation, and costs. Op-
tical fiber can carry huge amounts of data compared to • Coaxial Cable
copper. It can be run for hundreds of miles without the
• Optical Fiber
need for signal repeaters, in turn, reducing maintenance
costs and improving the reliability of the communication
Unguided Media: Transmission media then looking at
system because repeaters are a common source of net-
analysis of using them unguided transmission media is
work failures. Glass is lighter than copper allowing for
data signals that flow through the air. They are not guided
less need for specialized heavy-lifting equipment when
or bound to a channel to follow. Following are unguided
installing long-distance optical fiber. Optical fiber for in-
media used for data communication:
door applications cost approximately a dollar a foot, the
same as copper.[3]
• Radio Transmission
Multimode and single mode are two types of commonly
used optical fiber. Multimode fiber uses LEDs as the • Microwave
light source and can carry signals over shorter distances,
about 2 kilometers. Single mode can carry signals over
distances of tens of miles. 65.2 See also
Wireless media may carry surface waves or skywaves, ei-
ther longitudinally or transversely, and are so classified. • Vacuum permittivity

In both communications, communication is in the form • Transmission (telecommunications)


of electromagnetic waves. With guided transmission me- • Excitable medium
dia, the waves are guided along a physical path; exam-
ples of guided media include phone lines, twisted pair • Duplex (telecommunications)
cables, coaxial cables, and optical fibers. Unguided trans-
mission media are methods that allow the transmission of • Luminiferous aether
data without the use of physical means to define the path
it takes. Examples of this include microwave, radio or
infrared. Unguided media provide a means for transmit- 65.3 References
ting electromagnetic waves but do not guide them; exam-
ples are propagation through air, vacuum and seawater. [1] Agrawal, Manish (2010). Business Data Communications.
John Wiley & Sons, Inc. p. 54. ISBN 0470483369.
The term direct link is used to refer to the transmission
path between two devices in which signals propagate di- [2] Agrawal, Manish (2010). Business Data Communications.
rectly from transmitters to receivers with no intermedi- John Wiley & Sons, Inc. p. 37. ISBN 0470483369.
ate devices, other than amplifiers or repeaters used to in- [3] Agrawal, Manish (2010). Business Data Communications.
crease signal strength. This term can apply to both guided John Wiley & Sons, Inc. pp. 41–43. ISBN 0470483369.
and unguided media.
Chapter 66

Transport layer

In computer networking, the transport layer is a con- a desirable feature. This is usually done through the
ceptual division of methods in the layered architecture use of segment numbering, with the receiver pass-
of protocols in the network stack in the Internet Protocol ing them to the application in order. This can cause
Suite and the Open Systems Interconnection (OSI). The head-of-line blocking.
protocols of the layer provide host-to-host communica-
tion services for applications.[1] It provides services such • Reliability: Packets may be lost during transport
as connection-oriented data stream support, reliability, due to network congestion and errors. By means
flow control, and multiplexing. of an error detection code, such as a checksum, the
The details of implementation and semantics of the transport protocol may check that the data is not
Transport Layer of the TCP/IP model (RFC 1122),[2] corrupted, and verify correct receipt by sending an
which is the foundation of the Internet, and the Open Sys- ACK or NACK message to the sender. Automatic
tems Interconnection (OSI) model of general networking, repeat request schemes may be used to retransmit
are different. In the OSI model the transport layer is most lost or corrupted data.
often referred to as Layer 4 or L4, while numbered layers
are not used in TCP/IP. • Flow control: The rate of data transmission between
The best-known transport protocol of TCP/IP is the two nodes must sometimes be managed to prevent
Transmission Control Protocol (TCP), and lent its name a fast sender from transmitting more data than can
to the title of the entire suite. It is used for connection- be supported by the receiving data buffer, causing
oriented transmissions, whereas the connectionless User a buffer overrun. This can also be used to improve
Datagram Protocol (UDP) is used for simpler messaging efficiency by reducing buffer underrun.
transmissions. TCP is the more complex protocol, due
to its stateful design incorporating reliable transmission • Congestion avoidance: Congestion control can con-
and data stream services. Other prominent protocols in trol traffic entry into a telecommunications network,
this group are the Datagram Congestion Control Proto- so as to avoid congestive collapse by attempting to
col (DCCP) and the Stream Control Transmission Proto- avoid oversubscription of any of the processing or
col (SCTP). link capabilities of the intermediate nodes and net-
works and taking resource reducing steps, such as
reducing the rate of sending packets. For example,
66.1 Services automatic repeat requests may keep the network in
a congested state; this situation can be avoided by
Transport layer services are conveyed to an application adding congestion avoidance to the flow control, in-
via a programming interface to the transport layer proto- cluding slow-start. This keeps the bandwidth con-
cols. The services may include the following features: sumption at a low level in the beginning of the trans-
mission, or after packet retransmission.
• Connection-oriented communication: It is normally
easier for an application to interpret a connection • Multiplexing: Ports can provide multiple endpoints
as a data stream rather than having to deal with on a single node. For example, the name on a postal
the underlying connection-less models, such as the address is a kind of multiplexing, and distinguishes
datagram model of the User Datagram Protocol between different recipients of the same location.
(UDP) and of the Internet Protocol (IP). Computer applications will each listen for informa-
tion on their own ports, which enables the use of
• Same order delivery: The network layer doesn't gen- more than one network service at the same time. It
erally guarantee that packets of data will arrive in is part of the transport layer in the TCP/IP model,
the same order that they were sent, but often this is but of the session layer in the OSI model.

372
66.3. PROTOCOLS 373

66.2 Analysis 66.3 Protocols


This list shows some protocols that are commonly placed
in the transport layers of the Internet protocol suite, the
OSI protocol suite, NetWare's IPX/SPX, AppleTalk, and
Fibre Channel.

• ATP, AppleTalk Transaction Protocol


The transport layer is responsible for delivering data to
the appropriate application process on the host comput- • CUDP, Cyclic UDP
ers. This involves statistical multiplexing of data from
different application processes, i.e. forming data pack- • DCCP, Datagram Congestion Control Protocol
ets, and adding source and destination port numbers in
the header of each transport layer data packet. Together • FCP, Fibre Channel Protocol
with the source and destination IP address, the port num-
• IL, IL Protocol
bers constitutes a network socket, i.e. an identification
address of the process-to-process communication. In the • MPTCP, Multipath TCP
OSI model, this function is supported by the session layer.
• RDP, Reliable Datagram Protocol
Some transport layer protocols, for example TCP, but not
UDP, support virtual circuits, i.e. provide connection ori- • RUDP, Reliable User Datagram Protocol
ented communication over an underlying packet oriented
datagram network. A byte-stream is delivered while hid- • SCTP, Stream Control Transmission Protocol
ing the packet mode communication for the application
processes. This involves connection establishment, divid- • SPX, Sequenced Packet Exchange
ing of the data stream into packets called segments, seg- • SST, Structured Stream Transport
ment numbering and reordering of out-of order data.
Finally, some transport layer protocols, for example TCP, • TCP, Transmission Control Protocol
but not UDP, provide end-to-end reliable communica-
• UDP, User Datagram Protocol
tion, i.e. error recovery by means of error detecting code
and automatic repeat request (ARQ) protocol. The ARQ • UDP-Lite
protocol also provides flow control, which may be com-
bined with congestion avoidance. • µTP, Micro Transport Protocol
UDP is a very simple protocol, and does not provide
virtual circuits, nor reliable communication, delegating
these functions to the application program. UDP packets 66.4 Comparison of transport
are called datagrams, rather than segments. layer protocols
TCP is used for many protocols, including HTTP web
browsing and email transfer. UDP may be used for
multicasting and broadcasting, since retransmissions are 66.5 Comparison of OSI transport
not possible to a large amount of hosts. UDP typically protocols
gives higher throughput and shorter latency, and is there-
fore often used for real-time multimedia communication
ISO/IEC 8073/ITU-T Recommendation X.224, “Infor-
where packet loss occasionally can be accepted, for ex- mation Technology - Open Systems Interconnection -
ample IP-TV and IP-telephony, and for online computer Protocol for providing the connection-mode transport
games. service”, defines five classes of connection-mode trans-
Many non-IP-based networks, such as X.25, Frame Relay port protocols designated class 0 (TP0) to class 4 (TP4).
and ATM, implement the connection-oriented communi- Class 0 contains no error recovery, and was designed for
cation at the network or data link layer rather than the use on network layers that provide error-free connections.
transport layer. In X.25, in telephone network modems Class 4 is closest to TCP, although TCP contains func-
and in wireless communication systems, reliable node-to- tions, such as the graceful close, which OSI assigns to the
node communication is implemented at lower protocol session layer. All OSI connection-mode protocol classes
layers. provide expedited data and preservation of record bound-
The OSI connection-mode transport layer protocol spec- aries. Detailed characteristics of the classes are shown in
ification defines five classes of transport protocols: TP0, the following table:[3]
providing the least error recovery, to TP4, which is de- There is also a connectionless transport protocol, speci-
signed for less reliable networks. fied by ISO/IEC 8602/ITU-T Recommendation X.234.[4]
374 CHAPTER 66. TRANSPORT LAYER

66.6 References
[1] RFC 1122, §1.1.3.

[2] RFC 1122, Requirements for Internet Hosts – Communi-


cation Layers, IETF, R. Braden (Editor), October 1989

[3] “ITU-T Recommendation X.224 (11/1995) ISO/IEC


8073”.

[4] “ITU-T Recommendation X.234 (07/1994) ISO/IEC


8602”.

66.7 External links


Chapter 67

Tunneling protocol

In computer networks, a tunneling protocol allows a net- protocol chosen to determine the level of security.
work user to access or provide a network service that the SSH uses port 22 to enable data encryption of payloads
underlying network does not support or provide directly.
being transmitted over a public network (such as the In-
One important use of a tunneling protocol is to allow a ternet) connection, thereby providing VPN functionality.
foreign protocol to run over a network that does not sup-
IPsec has an end-to-end Transport Mode, but can also
port that particular protocol; for example, running IPv6 operate in a tunneling mode through a trusted security
over IPv4. Another important use is to provide services
gateway.
that are impractical or unsafe to be offered using only
the underlying network services; for example, providing
a corporate network address to a remote user whose phys-
ical network address is not part of the corporate network. 67.2 Secure Shell tunneling
Because tunneling involves repackaging the traffic data
into a different form, perhaps with encryption as stan-
dard, a third use is to hide the nature of the traffic that is
run through the tunnels.
The tunneling protocol works by using the data portion of
a packet (the payload) to carry the packets that actually
provide the service. Tunneling uses a layered protocol
model such as those of the OSI or TCP/IP protocol suite,
but usually violates the layering when using the payload
to carry a service not normally provided by the network.
Typically, the delivery protocol operates at an equal or
higher level in the layered model than the payload proto-
col.

67.1 Technical overview


Local port forwarding with ssh via command line. The ssh com-
To understand a particular protocol stack imposed by tun- mand has to be executed on the blue computer. Written in Bash.
neling, network engineers must understand both the pay-
load and delivery protocol sets. A Secure Shell (SSH) tunnel consists of an encrypted tun-
nel created through an SSH protocol connection. Users
As an example of network layer over network layer, may set up SSH tunnels to transfer unencrypted traf-
Generic Routing Encapsulation (GRE), a protocol run- fic over a network through an encrypted channel. For
ning over IP (IP Protocol Number 47), often serves to example, Microsoft Windows machines can share files
carry IP packets, with RFC 1918 private addresses, over using the Server Message Block (SMB) protocol, a
the Internet using delivery packets with public IP ad- non-encrypted protocol. If one were to mount a Mi-
dresses. In this case, the delivery and payload protocols crosoft Windows file-system remotely through the Inter-
are the same, but the payload addresses are incompatible net, someone snooping on the connection could see trans-
with those of the delivery network. ferred files. To mount the Windows file-system securely,
It is also possible to establish a connection using the data one can establish a SSH tunnel that routes all SMB traf-
link layer. The Layer 2 Tunneling Protocol (L2TP) al- fic to the remote fileserver through an encrypted channel.
lows the transmission of frames between two nodes. A Even though the SMB protocol itself contains no encryp-
tunnel is not encrypted by default, it relies on the TCP/IP tion, the encrypted SSH channel through which it travels

375
376 CHAPTER 67. TUNNELING PROTOCOL

machine to port 80 on a remote web server. To access the


remote web server, users would point their browser to the
local port at http://localhost/
Some SSH clients support dynamic port forwarding that
allows the user to create a SOCKS 4/5 proxy. In this case
users can configure their applications to use their local
SOCKS proxy server. This gives more flexibility than
creating an SSH tunnel to a single port as previously de-
scribed. SOCKS can free the user from the limitations of
connecting only to a predefined remote port and server.
If an application doesn't support SOCKS, a proxifier can
be used to redirect the application to the local SOCKS
proxy server. Some proxifiers, such as Proxycap, support
SSH directly, thus avoiding the need for an SSH client.
Remote port forwarding with ssh via command line. The ssh In recent versions of OpenSSH it is even allowed to create
command has to be executed on the blue computer. layer 2 or layer 3 tunnels if both ends have enabled such
tunnelling capabilities. This creates tun (layer 3, default)
or tap (layer 2) virtual interfaces on both ends of the con-
nection and allowing normal network management and
routing to be used, and when used on routers, allowing en-
tire subnetworks traffic being tunneled. A pair of tap vir-
tual interfaces function like an Ethernet cable connecting
both ends of the connection and can join kernel bridges.

67.3 Circumventing firewall policy


Users can also use tunneling to “sneak through” a fire-
wall, using a protocol that the firewall would normally
block, but “wrapped” inside a protocol that the firewall
does not block, such as HTTP. If the firewall policy does
not specifically exclude this kind of “wrapping”, this trick
can function to get around the intended firewall policy (or
any set of interlocked firewall policies).
Local port forwarding with ssh via PuTTY. PuTTY has to be
executed on the blue computer. Another HTTP-based tunneling method uses the HTTP
CONNECT method/command. A client issues the HTTP
CONNECT command to a HTTP proxy. The proxy
offers security. then makes a TCP connection to a particular server:
To set up a local SSH tunnel, one configures an SSH client port, and relays data between that server:port and the
to forward a specified local port (green in the images) to a client connection.[1] Because this creates a security hole,
port (purple in the images) on the remote machine (yellow CONNECT-capable HTTP proxies commonly restrict
in the image). Once the SSH tunnel has been established, access to the CONNECT method. The proxy allows con-
the user can connect to the specified local port (green) to nections only to specific ports, such as 443 for HTTPS.[2]
access the network service. The local port (green) does
not have to be the same as the remote port (purple).
SSH tunnels provide a means to bypass firewalls that pro-
67.4 See also
hibit certain Internet services – so long as a site allows
outgoing connections. For example, an organization may • HTTP tunnel
prohibit a user from accessing Internet web pages (port • ICMP tunnel
80) directly without passing through the organization’s
proxy filter (which provides the organization with a means • NVGRE
of monitoring and controlling what the user sees through
the web). But users may not wish to have their web traffic • Pseudo-wire
monitored or blocked by the organization’s proxy filter. If • Tunnel broker
users can connect to an external SSH server, they can cre-
ate an SSH tunnel to forward a given port on their local • Virtual Extensible LAN (VXLAN)
67.6. EXTERNAL LINKS 377

• Virtual private network (VPN)

• OSI model (Diagram)

67.5 References
[1] “Upgrading to TLS Within HTTP/1.1”. RFC 2817. 2000.
Retrieved March 20, 2013.

[2] “Vulnerability Note VU#150227: HTTP proxy default


configurations allow arbitrary TCP connections”. US-
CERT. 2002-05-17. Retrieved 2007-05-10.

67.6 External links


• PortFusion distributed reverse / forward, local for-
ward proxy and tunneling solution for all TCP pro-
tocols

• SSH VPN tunnel, see the SSH-BASED VIRTUAL


PRIVATE NETWORKS section

• BarbaTunnel Project - Free open source implemen-


tation of HTTP-Tunnel and UDP-Tunnel on Win-
dows

This article is based on material taken from the Free On-


line Dictionary of Computing prior to 1 November 2008
and incorporated under the “relicensing” terms of the
GFDL, version 1.3 or later.
Chapter 68

User Datagram Protocol

The User Datagram Protocol (UDP) is one of the core • It provides datagrams, suitable for modeling other
members of the Internet protocol suite. The protocol was protocols such as in IP tunneling or Remote Proce-
designed by David P. Reed in 1980 and formally defined dure Call and the Network File System.
in RFC 768. With UDP, computer applications can send
messages, in this case referred to as datagrams, to other • It is simple, suitable for bootstrapping or other pur-
hosts on an Internet Protocol (IP) network. Prior commu- poses without a full protocol stack, such as the
nications are not required to set up transmission channels DHCP and Trivial File Transfer Protocol.
or data paths.
• It is stateless, suitable for very large numbers of
UDP uses a simple connectionless transmission model clients, such as in streaming media applications for
with a minimum of protocol mechanism. UDP provides example IPTV
checksums for data integrity, and port numbers for ad-
dressing different functions at the source and destination • The lack of retransmission delays makes it suitable
of the datagram. It has no handshaking dialogues, and for real-time applications such as Voice over IP,
thus exposes the user’s program to any unreliability of online games, and many protocols built on top of
the underlying network and so there is no guarantee of the Real Time Streaming Protocol.
delivery, ordering, or duplicate protection. If error cor-
rection facilities are needed at the network interface level, • Works well in unidirectional communication, suit-
an application may use the Transmission Control Protocol able for broadcast information such as in many kinds
(TCP) or Stream Control Transmission Protocol (SCTP) of service discovery and shared information such as
which are designed for this purpose. broadcast time or Routing Information Protocol
UDP is suitable for purposes where error checking and
correction is either not necessary or is performed in the
application, avoiding the overhead of such processing at 68.2 Service ports
the network interface level. Time-sensitive applications
often use UDP because dropping packets is preferable to See also: Port (computer networking)
waiting for delayed packets, which may not be an option
in a real-time system.[1]
Applications use datagram sockets to establish host-to-
host communications. An application binds a socket to
its endpoint of data transmission, which is a combination
68.1 Attributes of an IP address and a service port. A port is a software
structure that is identified by the port number, a 16 bit
UDP is a minimal message-oriented transport layer pro- integer value, allowing for port numbers between 0 and
tocol that is documented in RFC 768. UDP provides no 65535. Port 0 is reserved, but is a permissible source port
guarantees to the upper layer protocol for message deliv- value if the sending process does not expect messages in
ery and the UDP layer retains no state of UDP messages response.
once sent. For this reason, UDP sometimes is referred to UDP provides application multiplexing (via port num-
as Unreliable Datagram Protocol.[2] bers) and integrity verification (via checksum) of the
A number of UDP’s attributes make it especially suited header and payload.[3] If transmission reliability is de-
for certain applications. sired, it must be implemented in the user’s application.
The Internet Assigned Numbers Authority (IANA) has
• It is transaction-oriented, suitable for simple query- divided port numbers into three ranges.[4] Port numbers
response protocols such as the Domain Name Sys- 0 through 1023 are used for common, well-known ser-
tem or the Network Time Protocol. vices. On Unix-like operating systems, using one of these

378
68.4. CHECKSUM COMPUTATION 379

ports requires superuser operating permission. Port num- 68.4 Checksum computation
bers 1024 through 49151 are the registered ports used for
IANA-registered services. Ports 49152 through 65535 The method used to compute the checksum is defined in
are dynamic ports that are not officially designated for RFC 768:
any specific service, and may be used for any purpose.
They also are used as ephemeral ports, from which soft-
ware running on the host may randomly choose a port in Checksum is the 16-bit one’s complement of the
[4]
order to define itself. In effect, they are used as tempo- one’s complement sum of a pseudo header of in-
rary ports primarily by clients when communicating with formation from the IP header, the UDP header,
servers. and the data, padded with zero octets at the
end (if necessary) to make a multiple of two
octets.[7]

68.3 Packet structure In other words, all 16-bit words are summed using one’s
complement arithmetic. Add the 16-bit values up. Each
The UDP header consists of 4 fields, each of which is 2 time a carry-out (17th bit) is produced, swing that bit
bytes (16 bits).[1] The use of the fields “Checksum” and around and add it back into the least significant bit.[8] The
“Source port” is optional in IPv4 (pink background in ta- sum is then one’s complemented to yield the value of the
ble). In IPv6 only the source port is optional (see below). UDP checksum field.
If the checksum calculation results in the value zero (all
16 bits 0) it should be sent as the one’s complement (all
Source port number This field identifies the sender’s 1s).
port when meaningful and should be assumed to be
the port to reply to if needed. If not used, then it The difference between IPv4 and IPv6 is in the data used
should be zero. If the source host is the client, the to compute the checksum.
port number is likely to be an ephemeral port num-
ber. If the source host is the server, the port number
is likely to be a well-known port number.[4] 68.4.1 IPv4 Pseudo Header

When UDP runs over IPv4, the checksum is computed


Destination port number This field identifies the re- using a “pseudo header”[9] that contains some of the
ceiver’s port and is required. Similar to source port same information from the real IPv4 header. The pseudo
number, if the client is the destination host then the header is not the real IPv4 header used to send an IP
port number will likely be an ephemeral port num- packet, it is used only for the checksum calculation.
ber and if the destination host is the server then
the port number will likely be a well-known port The source and destination addresses are those in the IPv4
number.[4] header. The protocol is that for UDP (see List of IP pro-
tocol numbers): 17 (0x11). The UDP length field is the
length of the UDP header and data. The field data stands
Length A field that specifies the length in bytes of the
for the transmitted data.
UDP header and UDP data. The minimum length
is 8 bytes because that is the length of the header. UDP checksum computation is optional for IPv4. If a
The field size sets a theoretical limit of 65,535 bytes checksum is not used it should be set to the value zero.
(8 byte header + 65,527 bytes of data) for a UDP
datagram. The practical limit for the data length
which is imposed by the underlying IPv4 protocol 68.4.2 IPv6 Pseudo Header
is 65,507 bytes (65,535 − 8 byte UDP header − 20
byte IP header).[4] When UDP runs over IPv6, the checksum is mandatory.
The method used to compute it is changed as documented
in RFC 2460:
In IPv6 jumbograms it is possible to have UDP packets
[5]
of size greater than 65,535 bytes. RFC 2675 spec-
ifies that the length field is set to zero if the length Any transport or other upper-layer protocol that
of the UDP header plus UDP data is greater than includes the addresses from the IP header in
65,535. its checksum computation must be modified for
use over IPv6 to include the 128-bit IPv6 ad-
Checksum The checksum field may be used for error- dresses.[6]
checking of the header and data. This field is op-
tional in IPv4, and mandatory in IPv6.[6] The field When computing the checksum, again a pseudo header is
carries all-zeros if unused.[7] used that mimics the real IPv6 header:
380 CHAPTER 68. USER DATAGRAM PROTOCOL

The source address is the one in the IPv6 header. The des- and business applications are important to businesses, de-
tination address is the final destination; if the IPv6 packet veloping quality of service solutions is seen as crucial by
does not contain a Routing header, that will be the desti- some.[10]
nation address in the IPv6 header; otherwise, at the orig- Some VPN systems such as OpenVPN may use UDP
inating node, it will be the address in the last element of while implementing reliable connections and error check-
the Routing header, and, at the receiving node, it will be ing at the application level.
the destination address in the IPv6 header. The value of
the Next Header field is the protocol value for UDP: 17.
The UDP length field is the length of the UDP header and
data. 68.7 Comparison of UDP and TCP
See also: Transport layer

68.5 Reliability and congestion


Transmission Control Protocol is a connection-oriented
control solutions protocol, which means that it requires handshaking to set
up end-to-end communications. Once a connection is set
Lacking reliability, UDP applications must generally be up, user data may be sent bi-directionally over the con-
willing to accept some loss, errors or duplication. Some nection.
applications, such as TFTP, may add rudimentary relia-
bility mechanisms into the application layer as needed.[4] • Reliable – Strictly only at transport layer, TCP man-
ages message acknowledgment, retransmission and
Most often, UDP applications do not employ reliabil-
timeout. Multiple attempts to deliver the message
ity mechanisms and may even be hindered by them.
are made. If it gets lost along the way, the server
Streaming media, real-time multiplayer games and voice
will re-request the lost part. In TCP, there’s either
over IP (VoIP) are examples of applications that often
no missing data, or, in case of multiple timeouts,
use UDP. In these particular applications, loss of pack-
the connection is dropped. (This reliability however
ets is not usually a fatal problem. If an application re-
does not cover application layer, at which a separate
quires a high degree of reliability, a protocol such as the
acknowledgement flow control is still necessary)
Transmission Control Protocol may be used instead.
In VoIP, for example, latency and jitter are the primary • Ordered – If two messages are sent over a connec-
concerns. The use of TCP would cause jitter if any pack- tion in sequence, the first message will reach the re-
ets were lost as TCP does not provide subsequent data ceiving application first. When data segments arrive
to the application while it is requesting re-sending of the in the wrong order, TCP buffers delay the out-of-
missing data. If using UDP the end user applications order data until all data can be properly re-ordered
must provide any necessary handshaking such as real time and delivered to the application.
confirmation that the message has been received. • Heavyweight – TCP requires three packets to set up
a socket connection, before any user data can be
sent. TCP handles reliability and congestion con-
68.6 Applications trol.
• Streaming – Data is read as a byte stream, no distin-
Numerous key Internet applications use UDP, including: guishing indications are transmitted to signal mes-
the Domain Name System (DNS), where queries must be sage (segment) boundaries.
fast and only consist of a single request followed by a sin-
gle reply packet, the Simple Network Management Pro- User Datagram Protocol is a simpler message-based
tocol (SNMP), the Routing Information Protocol (RIP)[1] connectionless protocol. Connectionless protocols do not
and the Dynamic Host Configuration Protocol (DHCP). set up a dedicated end-to-end connection. Communica-
tion is achieved by transmitting information in one di-
Voice and video traffic is generally transmitted using
rection from source to destination without verifying the
UDP. Real-time video and audio streaming protocols are
readiness or state of the receiver.
designed to handle occasional lost packets, so only slight
degradation in quality occurs, rather than large delays if
• Unreliable – When a UDP message is sent, it cannot
lost packets were retransmitted. Because both TCP and
be known if it will reach its destination; it could get
UDP run over the same network, many businesses are
lost along the way. There is no concept of acknowl-
finding that a recent increase in UDP traffic from these
edgment, retransmission, or timeout.
real-time applications is hindering the performance of ap-
plications using TCP, such as point of sale, accounting, • Not ordered – If two messages are sent to the same
and database systems. When TCP detects packet loss, it recipient, the order in which they arrive cannot be
will throttle back its data rate usage. Since both real-time predicted.
68.10. EXTERNAL LINKS 381

• Lightweight – There is no ordering of messages, no [7] “Postel, J. (August 1980). RFC 768: User Datagram Pro-
tracking connections, etc. It is a small transport layer tocol. Internet Engineering Task Force".
designed on top of IP.
[8] “Compute 16-bit One’s Complement Sum”. http://
• Datagrams – Packets are sent individually and are mathforum.org/. John. 2002-03-20. Retrieved 2014-11-
checked for integrity only if they arrive. Packets 05. External link in |website= (help)
have definite boundaries which are honored upon [9] RFC 768, p2
receipt, meaning a read operation at the receiver
socket will yield an entire message as it was origi- [10] “The impact of UDP on Data Applications”. Networkper-
nally sent. formancedaily.com. Retrieved 17 August 2011.

• No congestion control – UDP itself does not avoid


congestion. Congestion control measures must be 68.9.2 RFC references
implemented at the application level.
• RFC 768 – User Datagram Protocol
• Broadcasts - being connectionless, UDP can broad-
cast - sent packets can be addressed to be receivable • RFC 2460 – Internet Protocol, Version 6 (IPv6)
by all devices on the subnet. Specification

• RFC 2675 – IPv6 Jumbograms

68.8 See also • RFC 4113 – Management Information Base for the
UDP
• List of TCP and UDP port numbers • RFC 5405 – Unicast UDP Usage Guidelines for Ap-
plication Designers
• Reliable User Datagram Protocol (RUDP)

• Comparison of transport layer protocols


68.10 External links
• UDP flood attack

• UDP Data Transport • IANA Port Assignments

• UDP-Lite – a variant that will deliver packets even • The Trouble with UDP Scanning (PDF)
if they are malformed • Breakdown of UDP frame
• UDP Helper Address • UDP on MSDN Magazine Sockets and WCF
• Micro Transport Protocol (µTP) • UDP connections

68.9 Notes and references

68.9.1 Notes
[1] Kurose, J. F.; Ross, K. W. (2010). Computer Networking:
A Top-Down Approach (5th ed.). Boston, MA: Pearson
Education. ISBN 978-0-13-136548-3.

[2] [email protected]. “UDP Protocol Overview”.


Ipv6.com. Retrieved 17 August 2011.

[3] Clark, M.P. (2003). Data Networks IP and the Internet,


1st ed. West Sussex, England: John Wiley & Sons Ltd.

[4] Forouzan, B.A. (2000). TCP/IP: Protocol Suite, 1st ed.


New Delhi, India: Tata McGraw-Hill Publishing Com-
pany Limited.

[5] RFC 2675

[6] “Deering S. & Hinden R. (December 1998). RFC 2460:


Internet Protocol, Version 6 (IPv6) Specification. Internet
Engineering Task Force.”.
Chapter 69

World Wide Web Consortium

“WWWC” redirects here. For the radio station, see ated regional offices around the world. As of Septem-
WWWC (AM). ber 2009, it had eighteen World Offices covering Aus-
tralia, the Benelux countries (Netherlands, Luxembourg,
and Belgium), Brazil, China, Finland, Germany, Austria,
The World Wide Web Consortium (W3C) is the main
international standards organization for the World Wide Greece, Hong Kong, Hungary, India, Israel, Italy, South
Korea, Morocco, South Africa, Spain, Sweden, and the
Web (abbreviated WWW or W3).
United Kingdom and Ireland.[4]
Founded and currently led by Tim Berners-Lee,[3] the
consortium is made up of member organizations which In October 2012, W3C convened a community of ma-
maintain full-time staff for the purpose of working to- jor web players and publishers to establish a MediaWiki
gether in the development of standards for the World wiki that seeks to document open web standards called
Wide Web. As of 2 June 2016, the World Wide Web the WebPlatform and WebPlatform Docs.
Consortium (W3C) has 423 members.[2]
The W3C also engages in education and outreach, devel-
ops software and serves as an open forum for discussion
about the Web. 69.2 Specification maturation

Sometimes, when a specification becomes too large, it is


69.1 History split into independent modules which can mature at their
own pace. Subsequent editions of a module or specifi-
The World Wide Web Consortium (W3C) was founded cation are known as levels and are denoted by the first
by Tim Berners-Lee after he left the European Organi- integer in the title (e.g. CSS3 = Level 3). Subsequent re-
zation for Nuclear Research (CERN) in October, 1994. visions on each level are denoted by an integer following
It was founded at the Massachusetts Institute of Technol- a decimal point (e.g. CSS2.1 = Revision 1).
ogy Laboratory for Computer Science (MIT/LCS) with The W3C standard formation process is defined within
support from the European Commission and the De- the W3C process document, outlining four maturity lev-
fense Advanced Research Projects Agency (DARPA),[3] els through which each new standard or recommendation
which had pioneered the Internet and its predecessor must progress.[5]
ARPANET.
The organization tries to foster compatibility and agree-
ment among industry members in the adoption of new
standards defined by the W3C. Incompatible versions of 69.2.1 Working draft (WD)
HTML are offered by different vendors, causing incon-
sistency in how web pages are displayed. The consortium After enough content has been gathered from 'editor
tries to get all those vendors to implement a set of coredrafts’ and discussion, it may be published as a work-
principles and components which are chosen by the con- ing draft (WD) for review by the community. A WD
sortium. document is the first form of a standard that is publicly
It was originally intended that CERN host the European available. Commentary by virtually anyone is accepted,
branch of W3C; however, CERN wished to focus on though no promises are made with regard [5]
to action on any
particle physics, not information technology. In April particular element commented upon.
1995, the French Institute for Research in Computer Sci- At this stage, the standard document may have significant
ence and Automation (INRIA) became the European host differences from its final form. As such, anyone who im-
of W3C, with Keio University becoming the Japanese plements WD standards should be ready to significantly
branch in September 1996. Starting in 1997, W3C cre- modify their implementations as the standard matures.[5]

382
69.3. ADMINISTRATION 383

69.2.2 Candidate recommendation (CR) a program, owing to the risk of creating more drawbacks
for the community than benefits.[5]
A candidate recommendation is a version of a standard
that is more mature than the WD. At this point, the group
responsible for the standard is satisfied that the standard
meets its goal. The purpose of the CR is to elicit aid from
69.3 Administration
the development community as to how implementable the
standard is.[5] The Consortium is jointly administered by the MIT
Computer Science and Artificial Intelligence Labora-
The standard document may change further, but at this tory (CSAIL, located in Stata Center[6] ) in the USA,
point, significant features are mostly decided. The design the European Research Consortium for Informatics and
of those features can still change due to feedback from Mathematics (ERCIM) (in Sophia Antipolis, France),
implementors.[5] Keio University (in Japan) and Beihang University (in
China).[7] The W3C also has World Offices in sixteen re-
gions around the world. The W3C Offices work with their
69.2.3 Proposed recommendation (PR) regional web communities to promote W3C technologies
in local languages, broaden the W3C’s geographical base
A proposed recommendation is the version of a standard and encourage international participation in W3C Activ-
that has passed the prior two levels. The users of the stan- ities.
dard provide input. At this stage, the document is submit-
ted to the W3C Advisory Council for final approval.[5] The W3C has a staff team of 70–80 worldwide as of
2015.[8] W3C is run by a management team which allo-
While this step is important, it rarely causes any signifi- cates resources and designs strategy, led by CEO Jeffrey
cant changes to a standard as it passes to the next phase.[5] Jaffe (as of March 2010),[9] former CTO of Novell. It
Both candidates and proposals may enter “last call” to sig- also includes an advisory board which supports in strat-
nal that any further feedback must be provided. egy and legal matters and helps resolve conflicts.[10] The
majority of standardization work is done by external ex-
perts in the W3C’s various working groups.
69.2.4 W3C recommendation (REC)

This is the most mature stage of development. At this


point, the standard has undergone extensive review and
69.4 Membership
testing, under both theoretical and practical conditions.
The standard is now endorsed by the W3C, indicating The Consortium is governed by its membership. The list
its readiness for deployment to the public, and encourag- of members is available to the public.[2] Members include
ing more widespread support among implementors and businesses, nonprofit organizations, universities, govern-
authors.[5] mental entities, and individuals.[11]
Recommendations can sometimes be implemented incor- Membership requirements are transparent except for one
rectly, partially, or not at all, but many standards de- requirement: An application for membership must be re-
fine two or more levels of conformance that developers viewed and approved by the W3C. Many guidelines and
must follow if they wish to label their product as W3C- requirements are stated in detail, but there is no final
compliant.[5] guideline about the process or standards by which mem-
bership might be finally approved or denied.[12]
The cost of membership is given on a sliding scale, de-
69.2.5 Later revisions pending on the character of the organization applying and
the country in which it is located.[13] Countries are cat-
A recommendation may be updated or extended by egorized by the World Bank’s most recent grouping by
separately-published, non-technical errata or editor drafts GNI (“Gross National Income”) per capita.[14]
until sufficient substantial edits accumulate for produc-
ing a new edition or level of the recommendation. Addi-
tionally, the W3C publishes various kinds of informative
notes which are to be used as references.[5] 69.5 Criticism
In 2012 and 2013, the W3C started considering adding
69.2.6 Certification DRM-specific Encrypted Media Extensions (EME) to
HTML5, which was criticised as being against the
Unlike the ISOC and other international standards bodies, openness, interoperability, and vendor neutrality that
the W3C does not have a certification program. The W3C distinguished websites built using only W3C stan-
has decided, for now, that it is not suitable to start such dards from those requiring proprietary plug-ins like
384 CHAPTER 69. WORLD WIDE WEB CONSORTIUM

Flash.[15][16][17][18][19] 69.7 References


[1] “W3C Invites Chinese Web Developers, Industry,
69.6 Standards Academia to Assume Greater Role in Global Web Inno-
vation”. W3.org. 2013-01-20. Retrieved 2013-11-30.

W3C/IETF standards (over Internet protocol suite): [2] “World Wide Web Consortium – current Members”.
World Wide Web Consortium. 29 March 2012. Retrieved
2 June 2016.
• CGI
[3] W3C (September 2009). “World Wide Web Consortium
• CSS (W3C) About the Consortium”. Retrieved 8 September
• DOM 2009.
[4] Jacobs, Ian (June 2009). “W3C Offices”. Retrieved 14
• GRDDL
September 2009.
• HTML [5] “World Wide Web Consortium | Development Process”.
• MathML W3.org. 2005-04-12. Retrieved 2012-04-03.
[6] “W3C Contact”. W3.org. 2006-10-31. Retrieved 2012-
• OWL 04-03.
• P3P [7] “Facts About W3C”. W3C. Retrieved 7 November 2015.
• PROV [20]
[8] “W3C people list”. W3.org. Retrieved 2012-04-03.
• RDF [9] “W3C pulls former Novell CTO for CEO spot”. It-
world.com. 2010-03-08. Retrieved 2012-04-03.
• SISR
[10] “The World Wide Web Consortium: Building a Better In-
• SKOS ternet”. Mays Digital. Retrieved 7 November 2015.

• SMIL [11] W3C (2010). “Membership FAQ – W3C”. Retrieved 7


August 2010.
• SOAP
[12] Jacobs, Ian (2008). “Join W3C”. Retrieved 14 September
• SPARQL 2008.

• SRGS [13] W3C Membership Fee Calculator

• SSML [14] “World Bank Country Classification”.


Web.worldbank.org. Retrieved 3 July 2010.
• SVG
[15] Cory Doctorow (2013-03-12). “What I wish Tim
• VoiceXML Berners-Lee understood about DRM”. Technology blog
at guardian.co.uk. Archived from the original on 2013-
• XHTML 04-06. Retrieved 2013-03-20.

• XHTML+Voice [16] Glyn Moody (2013-02-13). “BBC Attacks the Open


Web, GNU/Linux in Danger”. Open Enterprise blog at
• XML ComputerworldUK.com. Archived from the original on
2013-04-06. Retrieved 2013-03-20.
• XML Events
[17] Scott Gilbertson (2013-02-12). “DRM for the Web? Say
• XML Information Set It Ain't So”. Webmonkey. Condé Nast. Archived from
the original on 2013-04-06. Retrieved 2013-03-21.
• XML Schema
[18] “Tell W3C: We don't want the Hollyweb”. Defective
• XPath by Design. Free Software Foundation. March 2013.
Archived from the original on 2013-04-06. Retrieved
• XQuery
2013-03-25.
• XSL-FO [19] Danny O'Brien (October 2013). “Lowering Your Stan-
• XSLT dards: DRM and the Future of the W3C”. Electronic
Frontier Foundation. Retrieved 2013-10-03.
• WCAG
[20] Groth, Paul; Moreau, Luc (April 30, 2013). “PROV-
• WSDL Overview: An Overview of the PROV Family of Doc-
uments”. World Wide Web Consortium. Retrieved April
• XForms 8, 2016.
69.8. EXTERNAL LINKS 385

69.8 External links


• W3C homepage (with links to local Offices, and
many others)
• About the World Wide Web Consortium

• W3C Technical Reports and Publications

• W3C Process Document


• W3C History

• How to read W3C specs


Chapter 70

X.25

Study Group VII based upon a number of emerging data


X.25 NETWORK
network projects.[8] Various updates and additions were
PSE PSE

DTE
DCE worked into the standard, eventually recorded in the ITU
DCE DTE series of technical books describing the telecommunica-
tion systems. These books were published every fourth
year with different-colored covers. The X.25 specifica-
tion is only part of the larger set of X-Series[9] specifica-
DCE PSE PSE
DCE
tions on public data networks.[10]

DTE
The public data network was the common name given to
PAD
the international collection of X.25 providers. Their com-
DTE bined network had large global coverage during the 1980s
and into the 1990s.[11]
Publicly accessible X.25 networks (Compuserve,
X.25 network diagram
Tymnet, Euronet, PSS, Datapac, Datanet 1 and Telenet)
were set up in most countries during the 1970s and
X.25 is an ITU-T standard protocol suite for packet
1980s, to lower the cost of accessing various online
switched wide area network (WAN) communication. An
services.
X.25 WAN consists of packet-switching exchange (PSE)
nodes as the networking hardware, and leased lines, plain Beginning in the early 1990s, in North America, use of
old telephone service connections, or ISDN connections X.25 networks (predominated by Telenet and Tymnet)[11]
as physical links. X.25 is a family of protocols that started to be replaced by Frame Relay, service offered
was popular during the 1980s with telecommunications by national telephone companies.[12] Most systems that
companies and in financial transaction systems such as required X.25 now use TCP/IP, however it is possible to
automated teller machines. X.25 was originally defined transport X.25 over TCP/IP when necessary.[13]
by the International Telegraph and Telephone Consul- X.25 networks are still in use throughout the world. A
tative Committee (CCITT, now ITU-T) in a series of variant called AX.25 is also used widely by amateur
drafts[1] and finalized in a publication known as The Or- packet radio. Racal Paknet, now known as Widanet, is
ange Book in 1976.[2] still in operation in many regions of the world, running
While X.25 has, to a large extent, been replaced by on an X.25 protocol base. In some countries, like the
less complex protocols, especially the Internet protocol Netherlands or Germany, it is possible to use a stripped
(IP), the service is still used (e.g. as of 2012 in credit version of X.25 via the D-channel of an ISDN−2 (or
card payment industry) and available in niche and legacy ISDN BRI) connection for low volume applications such
applications.[3] as point-of-sale terminals; but, the future of this service
in the Netherlands is uncertain.
Additionally X.25 is still under heavy use in the aeronau-
70.1 History tical business (especially in the Asian region) even though
a transition to modern protocols like X.400 is without
X.25 is one of the oldest packet-switched services avail- option as X.25 hardware becomes increasingly rare and
able. It was developed before the OSI Reference costly. As recently as March 2006, the United States Na-
Model.[4] The protocol suite is designed as three concep- tional Airspace Data Interchange Network has used X.25
tual layers, which correspond closely to the lower three to interconnect remote airfields with Air Route Traffic
layers of the seven-layer OSI model.[5] It also supports Control Centers.
functionality not found in the OSI network layer.[6][7] France was one of the last remaining countries where
X.25 was developed in the ITU-T (formerly CCITT) commercial end-user service based on X.25 operated.

386
70.2. ARCHITECTURE 387

Known as Minitel it was based on Videotex, itself run- The X.25 model was based on the traditional telephony
ning on X.25. In 2002, Minitel had about 9 million users, concept of establishing reliable circuits through a shared
and in 2011, it still accounted for about 2 million users in network, but using software to create "virtual calls"
France when France Télécom announced it would com- through the network. These calls interconnect “data ter-
pletely shut down the service by 30 June 2012.[14] As minal equipment” (DTE) providing endpoints to users,
planned, service was terminated 30 June 2012. There which looked like point-to-point connections. Each end-
were 800 000 terminals still in operation at the time.[15] point can establish many separate virtual calls to different
endpoints.
For a brief period, the specification also included a con-
70.2 Architecture nectionless datagram service, but this was dropped in the
next revision. The “fast select with restricted response
The general concept of X.25 was to create a universal facility” is intermediate between full call establishment
and global packet-switched network. Much of the X.25 and connectionless communication. It is widely used in
system is a description of the rigorous error correction query-response transaction applications involving a single
needed to achieve this, as well as more efficient sharing request and response limited to 128 bytes of data carried
of capital-intensive physical resources. each way. The data is carried in an extended call request
packet and the response is carried in an extended field of
The X.25 specification defines only the interface between
the call reject packet, with a connection never being fully
a subscriber (DTE) and an X.25 network (DCE). X.75,
established.
a very similar protocol to X.25, defines the interface be-
tween two X.25 networks to allow connections to traverse Closely related to the X.25 protocol are the protocols to
two or more networks. X.25 does not specify how the connect asynchronous devices (such as dumb terminals
network operates internally – many X.25 network imple- and printers) to an X.25 network: X.3, X.28 and X.29.
mentations used something very similar to X.25 or X.75 This functionality was performed using a Packet Assem-
internally, but others used quite different protocols inter- bler/Disassembler or PAD (also known as a Triple-X de-
nally. The ISO equivalent protocol to X.25, ISO 8208, is vice, referring to the three protocols used).
compatible with X.25, but additionally includes provision
for two X.25 DTEs to be directly connected to each other
with no network in between. By separating the Packet- 70.2.1 Relation to the OSI Reference
Layer Protocol, ISO 8208 permits operation over addi- Model
tional networks such as ISO 8802 LLC2 (ISO LAN) and
the OSI data link layer.[16] Although X.25 predates the OSI Reference Model
(OSIRM), the physical Layer of the OSI model corre-
X.25 originally defined three basic protocol levels or ar-
sponds to the X.25 physical layer, the data link layer to
chitectural layers. In the original specifications these
the X.25 data link layer, and the network layer to the
were referred to as levels and also had a level number,
X.25 packet layer.[10] The X.25 data link layer, LAPB,
whereas all ITU-T X.25 recommendations and ISO 8208
provides a reliable data path across a data link (or multi-
standards released after 1984 refer to them as layers.[17]
ple parallel data links, multilink) which may not be reli-
The layer numbers were dropped to avoid confusion with
able itself. The X.25 packet layer provides the virtual call
the OSI Model layers.[1]
mechanisms, running over X.25 LAPB. The packet layer
includes mechanisms to maintain virtual calls and to sig-
• Physical layer: This layer specifies the physical, nal data errors in the event that the data link layer cannot
electrical, functional and procedural characteristics recover from data transmission errors. All but the ear-
to control the physical link between a DTE and a liest versions of X.25 include facilities[18] which provide
DCE. Common implementations use X.21, EIA- for OSI network layer Addressing (NSAP addressing, see
232, EIA-449 or other serial protocols. below).[19]
• Data link layer: The data link layer consists of the
link access procedure for data interchange on the
link between a DTE and a DCE. In its implementa- 70.2.2 User device support
tion, the Link Access Procedure, Balanced (LAPB)
is a data link protocol that manages a communica- X.25 was developed in the era of computer terminals con-
necting to host computers, although it also can be used
tion session and controls the packet framing. It is a
bit-oriented protocol that provides error correctionfor communications between computers. Instead of di-
and orderly delivery. aling directly “into” the host computer – which would
require the host to have its own pool of modems and
• Packet layer: This layer defined a packet-layer pro- phone lines, and require non-local callers to make long-
tocol for exchanging control and user data packets distance calls – the host could have an X.25 connection
to form a packet-switching network based on virtual to a network service provider. Now dumb-terminal users
calls, according to the Packet Layer Protocol. could dial into the network’s local “PAD” (Packet As-
388 CHAPTER 70. X.25

70.2.3 Error control


Error recovery procedures at the packet layer assume that
the data link layer is responsible for retransmitting data
received in error. Packet layer error handling focuses on
resynchronizing the information flow in calls, as well as
clearing calls that have gone into unrecoverable states:

• Level 3 Reset packets, which re-initializes the flow


on a virtual call (but does not break the virtual call).
• Restart packet, which clears down all virtual calls on
the data link and resets all permanent virtual circuits
on the data link.

A Televideo terminal model 925 made around 1982


70.3 Addressing and virtual cir-
cuits

sembly/Disassembly facility), a gateway device connect-


ing modems and serial lines to the X.25 link as defined
by the X.29 and X.3 standards.
Having connected to the PAD, the dumb-terminal user
tells the PAD which host to connect to, by giving a phone-
number-like address in the X.121 address format (or by
giving a host name, if the service provider allows for
names that map to X.121 addresses). The PAD then An X.25 Modem once used to connect to the German Datex-P
places an X.25 call to the host, establishing a virtual call. network
Note that X.25 provides for virtual calls, so appears to be
a circuit switched network, even though in fact the data it- X.25 supports two types of virtual circuits, virtual calls
self is packet switched internally, similar to the way TCP (VC) and permanent virtual circuits (PVC). Virtual calls
provides connections even though the underlying data is are established on an as-needed basis. For example, a
packet switched. Two X.25 hosts could, of course, call VC is established when a call is placed and torn down af-
one another directly; no PAD is involved in this case. In ter the call is complete. VCs are established through a
theory, it doesn't matter whether the X.25 caller and X.25 call establishment and clearing procedure. On the other
destination are both connected to the same carrier, but in hand, permanent virtual circuits are preconfigured into
practice it was not always possible to make calls from one the network.[20] PVCs are seldom torn down and thus pro-
carrier to another. vide a dedicated connection between end points.
For the purpose of flow-control, a sliding window proto- VC may be established using X.121 addresses. The
col is used with the default window size of 2. The ac- X.121 address consists of a three-digit data country code
knowledgements may have either local or end to end sig- (DCC) plus a network digit, together forming the four-
digit data network identification code (DNIC), followed
nificance. A D bit (Data Delivery bit) in each data packet
indicates if the sender requires end to end acknowledge-by the national terminal number (NTN) of at most ten
ment. When D=1, it means that the acknowledgement digits. Note the use of a single network digit, seemingly
has end to end significance and must take place only af- allowing for only 10 network carriers per country, but
ter the remote DTE has acknowledged receipt of the data.some countries are assigned more than one DCC to avoid
When D=0, the network is permitted (but not required) tothis limitation. Networks often used fewer than the full
acknowledge before the remote DTE has acknowledged NTN digits for routing, and made the spare digits avail-
or even received the data. able to the subscriber (sometimes called the sub-address)
While the PAD function defined by X.28 and X.29 where they could be used to identify applications or for
specifically supported asynchronous character terminals, further routing on the subscribers networks.
PAD equivalents were developed to support a wide range NSAP addressing facility was added in the X.25(1984)
of proprietary intelligent communications devices, such revision of the specification, and this enabled X.25 to bet-
as those for IBM System Network Architecture (SNA). ter meet the requirements of OSI Connection Oriented
70.5. X.25 PACKET TYPES 389

Network Service (CONS).[21] Public X.25 networks were a price-per-segment on top of this.[30] Link speeds var-
not required to make use of NSAP addressing, but, to ied, typically from 2400 bit/s up to 2 Mbit/s, although
support OSI CONS, were required to carry the NSAP speeds above 64 kbit/s were uncommon in the public net-
addresses and other ITU-T specified DTE facilities trans- works. A segment was 64 bytes of data (rounded up,
parently from DTE to DTE.[22] Later revisions allowed with no carry-over between packets),[31] charged to the
multiple addresses in addition to X.121 addresses to be caller[32] (or callee in the case of reverse charged calls,
carried on the same DTE-DCE interface: Telex address- where supported).[33] Calls invoking the Fast Select facil-
ing (F.69), PSTN addressing (E.163), ISDN addressing ity (allowing 128 bytes of data in call request, call con-
(E.164), Internet Protocol addresses (IANA ICP), and lo- firmation and call clearing phases)[34] would generally at-
cal IEEE 802.2 MAC addresses.[23] tract an extra charge, as might use of some of the other
X.25 facilities. PVCs would have a monthly rental charge
PVCs are permanently established in the network and
therefore do not require the use of addresses for call and a lower price-per-segment than VCs, making them
cheaper only where large volumes of data are passed.
setup. PVCs are identified at the subscriber interface
by their logical channel identifier (see below). However,
in practice not many of the national X.25 networks sup-
ported PVCs. 70.5 X.25 packet types
One DTE-DCE interface to an X.25 network has a max-
imum of 4095 logical channels on which it is allowed to 70.6 X.25 details
establish virtual calls and permanent virtual circuits,[24]
although networks are not expected to support a full 4095
The network may allow the selection of the maximal
virtual circuits.[25] For identifying the channel to which a
length in range 16 to 4096 octets (2n values only) per vir-
packet is associated, each packet contains a 12 bit logi-
tual circuit by negotiation as part of the call setup pro-
cal channel identifier made up of an 8-bit logical chan-
cedure. The maximal length may be different at the two
nel number and a 4-bit logical channel group number.[24]
ends of the virtual circuit.
Logical channel identifiers remain assigned to a virtual
circuit for the duration of the connection.[24] Logical
channel identifiers identify a specific logical channel be- • Data terminal equipment constructs control packets
tween the DTE (subscriber appliance) and the DCE (net- which are encapsulated into data packets. The pack-
work), and only has local significance on the link between ets are sent to the data circuit-terminating equip-
the subscriber and the network. The other end of the con- ment, using LAPB Protocol.
nection at the remote DTE is likely to have assigned a • Data circuit-terminating equipment strips the layer-
different logical channel identifier. The range of possible 2 headers in order to encapsulate packets to the in-
logical channels is split into 4 groups: channels assigned ternal network protocol.
to permanent virtual circuits, assigned to incoming virtual
calls, two-way (incoming or outgoing) virtual calls, and
outgoing virtual calls.[26] (Directions refer to the direc- 70.6.1 X.25 facilities
tion of virtual call initiation as viewed by the DTE – they
all carry data in both directions.)[27] The ranges allowed X.25 provides a set of user facilities defined and de-
a subscriber to be configured to handle significantly dif- scribed in ITU-T Recommendation X.2.[35] The X.2 user
fering numbers of calls in each direction while reserving facilities fall into five categories:
some channels for calls in one direction. All International
networks are required to implement support for perma- • Essential facilities;
nent virtual circuits, two-way logical channels and one-
way logical channels outgoing; one-way logical channels • Additional facilities;
incoming is an additional optional facility.[28] DTE-DCE
• Conditional facilities;
interfaces are not required to support more than one logi-
cal channel.[26] Logical channel identifier zero will not be • Mandatory facilities; and,
assigned to a permanent virtual circuit or virtual call.[29]
The logical channel identifier of zero is used for packets • Optional facilities.
which don't relate to a specific virtual circuit (e.g. packet
layer restart, registration, and diagnostic packets). X.25 also provides X.25 and ITU-T specified DTE op-
tional user facilities defined and described in ITU-T Rec-
ommendation X.7.[36] The X.7 optional user facilities fall
into four categories of user facilities that require:
70.4 Billing
• Subscription only;
In public networks, X.25 was typically billed as a flat
monthly service fee depending on link speed, and then • Subscription followed by dynamic invocation;
390 CHAPTER 70. X.25

• Subscription or dynamic invocation; and, • ISO/IEC 8208:1990, Second Edition, compatible


with 1st Ed. and X.25 (1988)
• Dynamic invocation only.
• ISO/IEC 8208:1995, Third Edition, compatible
with 2nd Ed. and X.25 (1993)
70.6.2 X.25 protocol versions
• ISO/IEC 8208:2000, Fourth Edition, compatible
The CCITT/ITU-T versions of the protocol specifications with 3rd Ed. and X.25 (1996)
are for public data networks (PDN).[37] The ISO/IEC
versions address additional features for private networks
(e.g. local area networks (LAN) use) while maintaining 70.7 See also
compatibility with the CCITT/ITU-T specifications.[38]
The user facilities and other features supported by each • OSI protocol suite
version of X.25 and ISO/IEC 8208 have varied from • Packet switched network – protocols related to X.25
edition to edition.[39] Several major protocol versions of
X.25 exist:[40] • Frame Relay – has its technical base in X.25 packet-
switching technology, but does not attempt to cor-
• CCITT Recommendation X.25 (1976) Orange rect errors
Book • iberpac – the Spanish X.25 network, and first pub-
• CCITT Recommendation X.25 (1980) Yellow Book licly operated packet switching network

• DATAPAC – Canadian variant of X.25 offered by


• CCITT Recommendation X.25 (1984) Red Book
Bell Canada
• CCITT Recommendation X.25 (1988) Blue Book
• TRANSPAC – The French variant of X.25 public
• ITU-T Recommendation X.25 (1993) White data network
Book[41] • AUSTPAC – an Australian public X.25 network
• ITU-T Recommendation X.25 (1996) Grey • XOT – X.25 Over TCP – X25 encapsulation on
Book[42] TCP/IP networks

• X.PC
The X.25 Recommendation allows many options for each
network to choose when deciding which features to sup- • packeting – the Philippine X.25 network, and first
port and how certain operations are performed. This publicly operated packet switching network
means each network needs to publish its own document
giving the specification of its X.25 implementation, and
most networks required DTE appliance manufacturers to
undertake protocol conformance testing, which included
70.8 References
testing for strict adherence and enforcement of their net-
work specific options. (Network operators were particu- [1] CCITT, Study Group VII, Draft Recommendation X-25,
March 1976
larly concerned about the possibility of a badly behaving
or misconfigured DTE appliance taking out parts of the [2] History of X.25, CCITT Plenary Assemblies and Book
network and affecting other subscribers.) Therefore, sub- Colors
scriber’s DTE appliances have to be configured to match
the specification of the particular network to which they [3] Foregenix (February 2012). “X.25 within the Payment
Card Industry” (PDF). Retrieved 25 May 2016.
are connecting. Most of these were sufficiently different
to prevent interworking if the subscriber didn't configure [4] (Friend et al. 1988, p. 242)
their appliance correctly or the appliance manufacturer
didn't include specific support for that network. In spite [5] (Friend et al. 1988, p. 243)
of protocol conformance testing, this often lead to inter-
[6] ITU-T Recommendation X.28.
working problems when initially attaching an appliance
to a network. [7] ITU-T Recommendation X.3.
In addition to the CCITT/ITU-T versions of the protocol, [8] “X.25 Virtual Circuits – Transpac in France – Pre-Internet
four editions of ISO/IEC 8208 exist:[39] Data Networking”.

[9] X-Series recommendations


• ISO/IEC 8208:1987, First Edition, compatible with
X.25 (1980) and (1984) [10] (Friend et al. 1988, p. 230)
70.9. FURTHER READING 391

[11] (Schatt 1991, p. 200). 70.9 Further reading


[12] (Schatt 1991, p. 207).
• Computer Communications, lecture notes by Prof.
[13] “Running X.25 over TCP/IP on Cisco routers”. 1 Febru- Chaim Ziegler PhD, Brooklyn College
ary 2001. Archived from the original on 21 January 2012.
• Motorola Codex (1992). The Basics Book of X.25
[14] (French) Presse, Agence France (21 July 2011). “Le Packet Switching. The Basics Book Series (2nd
Minitel disparaîtra en juin 2012” [Minitel will disappear ed.). Reading, MA: Addison-Wesley. ISBN 0-201-
in June 2012]. Le Figaro (in French). 56369-X.
[15] (French) • Deasington, Richard (1985). X.25 Explained. Com-
puter Communications and Networking (2nd ed.).
[16] ISO 8208:2000
Chichester UK: Ellis Horwood. ISBN 978-0-
[17] ISO 8208, Annex B. 85312-626-3.

[18] ITU-T Recommendation X.25, G.3.2 Called address ex- • Friend, George E.; Fike, John L.; Baker, H. Charles;
tension facility, pp. 141–142. Bellamy, John C. (1988). Understanding Data Com-
munications (2nd ed.). Indianapolis: Howard W.
[19] ITU-T Recommendation X.223, Appendix II. Sams & Company. ISBN 0-672-27270-9.
[20] ITU-T Recommendation X.7 (04/2004), pp. 17–18. • Pooch, Udo W.; William H. Greene; Gary G.
Moss (1983). Telecommunications and Networking.
[21] ITU-T Recommendation X.223.
Boston: Little, Brown and Company. ISBN 0-316-
[22] ITU-T Recommendation X.25 (10/96), Annex G, p. 140. 71498-4.

[23] ITU-T Recommendation X.213, Annex A. • Schatt, Stan (1991). Linking LANs: A Micro Man-
ager’s Guide. McGraw-Hill. ISBN 0-8306-3755-9.
[24] ITU-T Recommendation X.25 (10/96), p. 45.
• Thorpe, Nicolas M.; Ross, Derek (1992). X.25
[25] ITU-T Recommendation X.283 (12/97), p. 42. Made Easy. Prentice Hall. ISBN 0-13-972183-5.
[26] ITU-T Recommendation X.25 (10/96), Annex A, pp.
119–120.
70.10 External links
[27] ISO/IEC 8208:2000, Fourth Edition, p. 61.
• Recommendation X.25) at ITU-T
[28] ITU-T Recommendation X.2 (03/2000), p. 4.
• Cisco X.25 Reference
[29] ISO/IEC 8208:2000, Fourth Edition, 3.7.1, p. 7.
• An X.25 Networking Guide with comparisons to
[30] ITU-T Recommendation D.11 (03/91), p. 2.
TCP/IP
[31] ITU-T Recommendation D.12 (11/88), p. 1.
• X.25 – Directory & Informational Resource
[32] ITU-T Recommendation X.7 (04/2004), p. 42.
• RFCs and other resources by Open Directory
[33] ITU-T Recommendation D.11 (03/91), p. 3.

[34] ITU-T Recommendation X.7 (04/2004), p. 38.

[35] ITU-T Recommendation X.2

[36] ITU-T Recommendation X.7

[37] ITU-T Recommendation X.25 (10/96), Summary, p. v.

[38] ISO/IEC 8208:2000, Fourth Edition, Section 1: Scope, p.


1.

[39] ISO/IEC 8208:2000, Fourth Edition, Annex C.

[40] ITU-T Recommendation X.25.

[41] ITU-T Recommendation X.25 (1993) White Book

[42] ITU-T Recommendation X.25 (1996) Grey Book


392 CHAPTER 70. X.25

70.11 Text and image sources, contributors, and licenses


70.11.1 Text
• Algorithm Source: https://en.wikipedia.org/wiki/Algorithm?oldid=736029079 Contributors: AxelBoldt, LC~enwiki, Brion VIBBER, Elo-
quence, Mav, Bryan Derksen, Zundark, Tarquin, Taw, Jeronimo, Seb, Ed Poor, Andre Engels, Arvindn, Gianfranco, Tim Marklew,
Miguel~enwiki, Ortolan88, Hannes Hirzel, Heron, Ryguasu, B4hand, Dwheeler, Bth, Isis~enwiki, Hfastedge, Spiff~enwiki, Frecklefoot,
Boud, Michael Hardy, Zocky, Pit~enwiki, Lexor, DopefishJustin, Kku, Gabbe, CarlosMenendez, Ixfd64, Chinju, TakuyaMurata, Paddu,
Pde, Dgrant, Nanshu, Snoyes, Den fjättrade ankan~enwiki, Kragen, Kevin Baas, Poor Yorick, Nikai, Susurrus, Andres, Wael Ellithy,
Harvester, Jonik, Mxn, GRAHAMUK, Nikola Smolenski, Charles Matthews, Dcoetzee, Dysprosia, Andrewman327, Timc, Tpbradbury,
Saltine, Fernkes, Jtvisona, Populus, Ed g2s, Dbabbitt, Raul654, Farshadrbn, Jerzy, Ldo, Efflux, Lumos3, Robbot, Jaredwf, Fredrik, Chris
73, Gandalf61, Chris Roy, MathMartin, Rholton, Timrollpickering, Hadal, Wikibot, Vikreykja, Michael Snow, Anthony, Guy Peters, Mfc,
Tea2min, David Gerard, McDutchie, Hexii, Cedars, Giftlite, Jacoplane, Inkling, Lupin, Fastfission, Everyking, Curps, Duncharris, Gil-
gamesh~enwiki, Sundar, Zoney, Eequor, Macrakis, Falcon Kirtaran, ElfMage, Matt Crypto, Bobblewik, Gubbubu, Bact, SarekOfVulcan,
Sonjaaa, Blankfaze, Stephan Leclercq, Antandrus, Beland, Rdsmith4, APH, Kntg, Zfr, Lumidek, Gscshoyru, Chadernook, Quota, Klemen
Kocjancic, Andreas Kaufmann, Frikle, Zondor, Trevor MacInnis, BeavisSanchez, Corti, Mike Rosoft, Oskar Sigvardsson, Shipmaster,
Noisy, Discospinster, Rich Farmbrough, Guanabot, Brutannica, Sesse, Sridharinfinity, FiP, Mani1, Paul August, Goochelaar, Bender235,
Andrejj, Danakil, El C, Lycurgus, Kwamikagami, Johneasley, Kanzure, Whosyourjudas, Billymac00, Viriditas, R. S. Shaw, Khakbaz,
H3l1x, Jojit fb, B0at, RussBlau, Obradovic Goran, Krellis, Mpeisenbr, Jumbuck, InterruptorJones, Gary, Imfa11ingup, Anthony App-
leyard, Mark Dingemanse, Wiki-uk, Diego Moya, Riana, Bart133, Snowolf, PaePae, Wtmitchell, Bucephalus, RainbowOfLight, Mikeo,
HenryLi, Kazvorpal, Markaci, Oleg Alexandrov, MickWest, Woohookitty, Mindmatrix, BillC, Ruud Koot, Cbdorsett, Plowboylifestyle,
Vasileios Zografos, Essjay, Adam Marx Squared, Graham87, Qwertyus, JIP, Lhademmor, Rjwilmsi, Tizio, Salix alba, Salleman, Pasky,
TheGWO, Drpaule, Penumbra2000, Yamamoto Ichiro, Fantom~enwiki, FlaBot, Ian Pitchford, RobertG, Mathbot, Nihiltres, Who, Frag-
glet, RexNL, Gurch, DevastatorIIC, Intgr, Jidan, Jersey Devil, DVdm, Bgwhite, YurikBot, Wavelength, RobotE, Hairy Dude, Deeptrivia,
RussBot, Michael Slone, Mattpeck, Guruduttmallapur, Grubber, Gaius Cornelius, Thane, Anomalocaris, Johantheghost, Toncek, D. F.
Schmidt, Jpbowen, Moe Epsilon, Mikeblas, Tony1, Alex43223, Zwobot, DeadEyeArrow, Googl, The Fish, Closedmouth, Cedar101, Pb30,
Depakote, BorgQueen, GraemeL, JoanneB, HereToHelp, Maxamegalon2000, GrinBot~enwiki, TuukkaH, robot, Josh Triplett, A
bit iffy, SmackBot, Bapi mahanta, Nihonjoe, ElectricRay, DCDuring, Unyoyega, Od Mishehu, KocjoBot~enwiki, Jagged 85, Shamalyguy,
Nil Einne, Swerdnaneb, Gilliam, Ohnoitsjamie, Hmains, Anwar saadat, Chris the speller, Bluebot, Persian Poet Gal, Silly rabbit, MAR-
VEL~enwiki, Jenny MacKinnon, Delta Tango, Cornflake pirate, Rizzardi, Jorvik, Cplakidas, Onorem, Nixeagle, MattOates, Addshore,
Apofisu, Allan McInnes, Cybercobra, Savidan, Theodore7, “alyosha”, Luís Felipe Braga, Wybot, Adamarthurryan, Jóna Þórunn, Mlpkr,
FlyHigh, Algogeek, Nmnogueira, PradeepArya1109, SashatoBot, Lambiam, Vildricianus, Quendus, Derek farn, Wvbailey, SilverStar, Har-
ryboyles, MagnaMopus, Treyt021, Kanjy, Breno, Goodnightmush, ManiF, Tlesher, Aarandir, Ckatz, Hvn0413, Kenbei, Giminy, Hu12,
Levineps, BranStark, DouglasCalvert, Iridescent, Dreftymac, Colonel Warden, Wjejskenewr, Aeternus, Paul Foxworthy, Marysunshine,
Adambiswanger1, Tawkerbot2, George100, Petr Matas, Splang, JForget, CRGreathouse, Ahy1, CmdrObot, Spankman, CBM, Alcalazar,
Charvex, ShelfSkewed, Pgr94, Gregbard, Sopoforic, Cydebot, Kanags, WillowW, Gogo Dodo, Chasingsol, Bb vb, Pascal.Tesson, Dumb-
BOT, FastLizard4, Markluffel, Kozuch, Daven200520, SteveMcCluskey, UberScienceNerd, Wexcan, BetacommandBot, Malleus Fatuo-
rum, Thijs!bot, Epbr123, V31a, Headbomb, Marek69, Electron9, Maximilian Schönherr, Paxinum, Nick Number, Klausness, Napmor,
Escarbot, Jeff Edmonds, AntiVandalBot, Gioto, Quintote, Jbaranao, Hannes Eder, Dylan Lake, Danger, Farosdaughter, Wayiran, Storkk,
Dhrm77, DagosNavy, Deflective, Oxinabox, The Transhumanist, Nthep, Fetchcomms, Michig, Andonic, Martinkunev, Greensburger,
Cameltrader, RebelRobot, Xact, GOV, Acroterion, Geniac, Wasell, Hurmata, Magioladitis, Guywhite, Bongwarrior, VoABot II, AtticusX,
Swpb, Ling.Nut, Lucyin, CountingPine, Cic, KConWiki, MetsBot, David Eppstein, User A1, DerHexer, Acardh, SamShearman, Jacomo,
MartinBot, PAK Man, EyeSerene, Kabton14, Rettetast, Speck-Made, Odin of Trondheim, EdBever, PhageRules1, J.delanoy, Mange01,
Rgoodermote, Wa3frp, Maurice Carbonaro, Jonpro, Athaenara, DslIWG,UF, Mikael Häggström, AntiSpamBot, NewEnglandYankee, SJP,
Policron, Thecarbanwheel, Malerin, Billcarr178, Lilwik, STBotD, DorganBot, Bonadea, TheNewPhobia, Ale2006, Spellcast, Makewa-
ter, Deor, Austinmohr, VolkovBot, Pasixxxx, Johan1298~enwiki, JohnBlackburne, AlnoktaBOT, Vincent Lextrait, Larry R. Holmgren,
Philip Trueman, TXiKiBoT, Ldonna, Nxavar, Rei-bot, Cyberjoac, Clarince63, Melsaran, Jackfork, Cremepuff222, Geometry guy, Every-
thing counts, Manik762007, Eubulides, Billinghurst, Andy Dingley, SQL, Groupthink, Dmcq, AlleborgoBot, Logan, Alexandre Bouthors,
BriEnBest, SieBot, Brenont, Tiddly Tom, Scarian, LancerSix, Ghimboueils, Fabullus, Caltas, Hamid88, Timhowardriley, MustangFan,
Yintan, Soler97, Nummer29, Keilana, Iames, Flyer22 Reborn, Cmdieck, Paolo.dL, Allmightyduck, Oxymoron83, Azurgi, Lightmouse,
CharlesGillingham, Torchwoodwho, Citneman, Meowist, Randomblue, Denisarona, SlackerMom, Martarius, Sfan00 IMG, ClueBot, Kl4m,
PipepBot, The Thing That Should Not Be, Eric Wester, Dinsha 89, Blackrock01, JuPitEer, Botodo, Boing! said Zebedee, Niceguyedc,
PMDrive1061, Seanwal111111, Jusdafax, Benn Adam, Winston365, Abrech, Estirabot, Rejka, Salon Essahj, Ysindbad, SoxBot III, Dar-
kicebot, Boleyn, XLinkBot, Gnowor, Cascade07, Jytdog, Hiraku.n, Rror, 98dblachr, WikHead, Nasaralla, Galzigler, Bob1312, Alex-
ius08, Bill4341, Matma Rex, MystBot, Cyrusace, Dsimic, Multipundit, Willking1979, Some jerk on the Internet, DOI bot, Friginator,
Crazysane, Kh0061, Leszek Jańczuk, MrOllie, Chamal N, EconoPhysicist, Abovechief, Glass Sword, AndersBot, Favonian, LinkFA-
Bot, Raayen, Denicho, 84user, Systemetsys, Geo g guy, Tide rolls, Jarble, CountryBot, Legobot, Luckas-bot, Yobot, OrgasGirl, JSim-
monz, Ptbotgourou, WhyDoIKeepForgetting, Wainkelly, Pcap, KamikazeBot, Waltnmi, Agent phoenex, 747fzx, Tempodivalse, Markh56,
Orion11M87, AnomieBOT, Metalhead94, Ellegantfish, Jim1138, Galoubet, Alemua, Materialscientist, The High Fin Sperm Whale, Cita-
tion bot, X30ffx, GB fan, LilHelpa, The Firewall, Xqbot, Timir2, Mathviolintennis, Agasta, Drilnoth, DSisyphBot, XZeroBot, Cyphoid-
bomb, Isheden, Miym, GrouchoBot, Xashaiar, Omnipaedista, DAndC, Deadcracker, JulianDelphiki, JediMaster362, Sophus Bie, Sulay-
maan114, Yohannesb, GhalyBot, Shadowjams, Erik9, Jundi78, FrescoBot, Tobby72, MetaNest, Mhadi.afrasiabi, Johnsap, Emadfarrokhih,
K3fka, Mission2ridews, Makewrite, The ansible, Tlork Thunderhead, Weetoddid, BenzolBot, Citation bot 1, DASSAF, Aekamir, Gi-
antscoach55, Pinethicket, I dream of horses, HRoestBot, Chatfecter, MJ94, Lrsjohnson, Skyerise, Mutinus, RedBot, MastiBot, Maldoddi,
Serols, Rpwikiman, Isofox, Editorinchief1234, RobinK, Lissajous, Reconsider the static, Amberdhn, MusicNewz, Trappist the monk,
Eric.ito, January, Ud1406, Diannaa, Mttcmbs, Fastilysock, Rednas1234, Mean as custard, Alph Bot, Waynefan23, Skamecrazy123, MSP-
bitmesra, EmausBot, John of Reading, Drrevu, Sitharama.iyengar1, Dutilh, Mashaunix, Faolin42, GoingBatty, RA0808, Philipp Wetzlar,
ZxxZxxZ, KHamsun, K6ka, Bethnim, Werieth, Pro translator, Josve05a, The Nut, Wayne Slam, Tolly4bolly, Staszek Lem, Bigchip,
JoeSperrazza, Robbiemorrison, Loggerjack, IGeMiNix, Klugkerl, Donner60, Chewings72, Tijfo098, ChuispastonBot, Crimsonraptor,
Joosyfoo, Swfung8, Mjbmrbot, ClueBot NG, Proffesershean, Wcherowi, This lousy T-shirt, Satellizer, SusikMkr, Frietjes, Jiri 1984,
Nikhileditor, Dreth, Tatelyle, Widr, Antiqueight, Algorithmguru, Mesimoney, Robert s denton, Helpful Pixie Bot, Mahali syarifuddin,
HMSSolent, Wbm1058, EhsanKhaki, BG19bot, Rrsoni, Владимир Паронджанов, Langchri, SNmirza, Manojkumarcm, Furkaocean,
Preetykondyal, Mark Arsten, Mhakcm, Basketboy63, CarloMartinelli, Neutral current, Silvrous, FutureTrillionaire, QuaeriSolet, Altaïr,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 393

Algoritmy, Uri-Levy, Snow Blizzard, Nodira777, Soroosh60, Sni56996, YangYanhao, BattyBot, SimmeD, Belmira11, Laodah, Cyberbot
II, ChrisGualtieri, Ozziev, Laberkiste, Khazar2, Enterprisey, Phobosrocks, Dexbot, Kushalbiswas777, Djbrainboy, Webclient101, Mogism,
Brendonshay, Lugia2453, Mhcs.907, Frosty, Jochen Burghardt, Skylo Frost, FallingGravity, Vahid javani, I am One of Many, Jamesm-
cmahon0, Blackguy1212, AmaryllisGardener, Satassi, Bloorain, Waqaee, LCS check, NYBrook098, Ugog Nizdast, Ginsuloft, Quenhitran,
Dkwebsub, Dan.inPractice, Anrnusna, Ethanlim, Stamptrader, Dastoger Bashar, Hobbobobo, GeorgeAhad, G2dk7g, Tanmay bhattad,
Kaystay, Monkbot, Thibaut120094, Akki420, Somepics, Nonynonna, Jadecichy, Rattandip, Chadcallahan, Evolutionvisions, Psychedgrad,
ChamithN, Gpahal, Interpuncts, Ayush3504, Tensorproduct, HAN81, Waltersquare, Lgrush, KasparBot, Voloum, Pmaiden, Khalid157,
4thAgeDragon, Maczkopeti, Streetdaddy101, Abhishek sharma17, Snowweatyh, DICKSON BARASA, Fatimaatta, GreenC bot, Igor nova,
Luke wiki1234567, Kingjohn12345, DavidGreens and Anonymous: 977
• Analogy Source: https://en.wikipedia.org/wiki/Analogy?oldid=731863458 Contributors: AxelBoldt, Vicki Rosenzweig, Toby Bartels, Sf-
dan, Hephaestos, Wapcaplet, Ihcoyc, CatherineMunro, Hermeneus, Charles Matthews, MatrixFrog, Fuzheado, Fvw, Metasquares, Wetman,
Branddobbe, Jredmond, Blainster, Quincy, Marc Venot, DavidCary, Geeoharee, Bradeos Graphon, Thetorpedodog, Decagon, Pgan002,
Fpahl, Karol Langner, Bumm13, Marc Mongenet, Salimfadhley, DanielCD, Rich Farmbrough, Kjoonlee, CanisRufus, Walden, Szquirrel,
Kwamikagami, Aude, Bobo192, Brim, Martg76, Sam Korn, Alansohn, Riana, Wikidea, Echuck215, Garzo, BMWman, Mikeo, Bsad-
owski1, Dragunova, Blaxthos, Alexrudd, Angr, Velho, Rocastelo, Kzollman, Kelisi, Dodo78, Dysepsion, Magister Mathematicae, BD2412,
Rjwilmsi, KYPark, Jake Wartenberg, Amire80, Nneonneo, The wub, Yamamoto Ichiro, Margosbot~enwiki, RexNL, Kolbasz, TheDJ,
ARAJ, Wavelength, RussBot, Nofrak, SpuriousQ, Ziddy, Anchjo, Aeusoes1, Grafen, RazorICE, Cleared as filed, DAJF, Reyk, Tevildo,
JoanneB, Draicone, DVD R W, SmackBot, Lavintzin, Moeron, Bobet, KnowledgeOfSelf, Ikip, Jagged 85, Delldot, Mhss, Papa November,
Can't sleep, clown will eat me, JonHarder, Yidisheryid, Addshore, Ines it, Cybercobra, Nakon, Jon Awbrey, Vina-iwbot~enwiki, Deiz,
Drunken Pirate, Spiritia, SashatoBot, Nick Green, JackLumber, Kirkoconnell, 16@r, Grumpyyoungman01, Makyen, Wikidrone, She-
herazahde, Wolfdog, Fuzzycasserole, Pgr94, Gregbard, Phatom87, Cydebot, Reywas92, Gogo Dodo, Corpx, Julian Mendez, Miguel de
Servet, Christian75, Letranova, Thijs!bot, Helgus, A3RO, Dfrg.msc, Christopher James Dubey, Transhumanist, Good Vibrations, Anti-
VandalBot, Majorly, Vic226, Holyoak, Doktor Who, Jhsounds, Salgueiro~enwiki, Orarch, JAnDbot, Edwardspec TalkBot, Hut 8.5, TAn-
thony, Gdvwhite, VoABot II, Pdturney, JamesBWatson, Verkhovensky, Ling.Nut, Kutu su~enwiki, EagleFan, Rebels12, Wikivangelist,
PRMerkley, FisherQueen, MartinBot, Schmloof, Kiore, Tikitactinker, R'n'B, J.delanoy, Trusilver, EscapingLife, Katalaveno, MezzoMezzo,
HiLo48, Chiswick Chap, NewEnglandYankee, SJP, Student7, Jwh335, Greg-si, Macedonian, Jeff G., Kyle the bot, TXiKiBoT, Rei-bot, On-
toraul, Martin451, Jackfork, LeaveSleaves, Pishogue, Enigmaman, Synthebot, Enviroboy, Burntsauce, Insanity Incarnate, Helelen, SieBot,
Arpose, Caltas, Happysailor, Universalcosmos, Undead Herle King, Aruton, Anchor Link Bot, Emptymountains, Ajolewis, Martarius,
ClueBot, Rumping, The Thing That Should Not Be, Gawaxay, Supertouch, Niceguyedc, Grunty Thraveswain, Excirial, Rhododendrites,
SchreiberBike, La Pianista, Aitias, XLinkBot, Micmachete, Avoided, MystBot, Joseph.little, Addbot, Tanhabot, Ronhjones, Cst17, Down-
load, Dougbast, The world deserves the truth, West.andrew.g, Tassedethe, ‫דניאל ב‬., Jarble, Megaman en m, ZX81, Yobot, Anypodetos,
AnomieBOT, Jim1138, AdjustShift, Materialscientist, E235, Citation bot, GnawnBot, Capricorn42, Luch4, A157247, Omnipaedista, Cap-
tobvius, Coochie3, HJ Mitchell, Boxplot, Σ, MKFI, Jandalhandler, Gamewizard71, ItsZippy, Ivo Coelho, Vrenator, Raidon Kane, Reaper
Eternal, RjwilmsiBot, TjBot, EmausBot, YAYLOLAGE, Conser~enwiki, Racerx11, Syncategoremata, Ryanjcolligan, Scgtrp, K6ka, Mind-
Shifts, Dhmelody, TyA, Donner60, BioPupil, Bill william compton, ChuispastonBot, Analgape, DASHBotAV, ClueBot NG, EIN x FA-
MOUSxX, Satellizer, J151e, Helpful Pixie Bot, Faus, Lewisswinger, Wbm1058, BG19bot, Pacerier, Kyoakoa, Who.was.phone, Jander80,
Mark Arsten, CitationCleanerBot, Theasad.ali, BattyBot, David.moreno72, Miszatomic, ~riley, Delanydi, ChrisGualtieri, Dexbot, Num-
bermaniac, Lugia2453, Frosty, Jochen Burghardt, Aa2093, Morris.jake, Yuki huang, Carrot Lord, Mitchellriley46, Star767, Yomellama-
mama, WikiEnthusiastNumberTwenty-Two, Dmd104, Monkbot, Dguzzo, Asdklf;, Muzikbox, Jpshuskus, BashBoy00, Nøkkenbuer, Jhtx,
PHCleverley, Snoopy44444545664 and Anonymous: 323
• AppleTalk Source: https://en.wikipedia.org/wiki/AppleTalk?oldid=733627372 Contributors: Sodium, Mav, Tarquin, Rjstott, Aldie, SJK,
SimonP, Maury Markowitz, Edward, Nixdorf, Lovely Chris, Elano, GRAHAMUK, Zoicon5, Topbanana, Ldo, RedWolf, Kadin2048,
Hippietrail, Wikibot, Alerante, Fennec, Sj, Inkling, Sdfisher, Siroxo, AlistairMcMillan, Raekwon, Bobblewik, Bumm13, Tooki, Memen-
toVivere, Blorg, Freakofnurture, Rich Farmbrough, Pak21, Alistair1978, Byrial, Nchaimov, CanisRufus, Kross, Sietse Snel, Lunaverse,
Barcex, Cmdrjameson, Polluks, .:Ajvol:., Trevj, HasharBot~enwiki, Rd232, Kusma, Blaxthos, Nuno Tavares, TotoBaggins, Graham87,
Casey Abell, Ctempleton3, FlaBot, Jsephton, Joe07734, Nwatson, Bgwhite, YurikBot, Wavelength, Borgx, RussBot, DMahalko, Peter
S., Bovineone, Pjhagop, DragonHawk, Grafen, Mmccalpin, Giltramirez, Xpclient, Wknight94, MoriBot~enwiki, Picksomething, Zvika,
SmackBot, Reedy, Basil.bourque, Happywaffle, Bluebot, Manta7, Frap, JonHarder, Pattersonc, Mwtoews, Zac67, Dgatwood, Stradv16,
This user has left wikipedia, IronGargoyle, RomanSpa, Dl2000, Phuzion, RekishiEJ, Pmyteh, Drinibot, Denham062, Pgr94, Phatom87,
ChristTrekker, Thijs!bot, Sdream93, Laboye, RobotG, WinBot, Ownlyanangel, Shlgww, JAnDbot, Stefan Bethke, Magioladitis, Syn-
ergyStar, Lenoil~enwiki, GrammarNSpellChecker, Spellmaster, Nrobbin, RP88, Lilac Soul, Alexthepuffin, Inwind, Dan dan rae, X!,
VolkovBot, Jeff G., TXiKiBoT, Vanished user ikijeirw34iuaeolaseriffic, Wiae, Synthebot, Infodriveway, Bentogoa, Lightmouse, Manoj C
Menon, ClueBot, Me5000, Rjd0060, Jzink123, TReidLewis, PixelBot, John Nevard, Rhododendrites, Sun Creator, Technorj, Thehelpfu-
lone, Aitias, Mac128, LieAfterLie, Jdmcs, Gwandoya, Shashank208, JBsupreme, Lightbot, Legobot, Luckas-bot, KGMallory, Yobot, Peter
Flass, AnomieBOT, 1exec1, Materialscientist, TinucherianBot II, Censorship Workaround, QuixoticWonderer, FrescoBot, Degress, Arekr-
ishna, AlanOpp, SeoMac, RjwilmsiBot, EmausBot, John of Reading, Mojo66, Xanchester, ClueBot NG, Lord Chamberlain, the Renowned,
Alexbee2, Cyberpower678, Cyberbot II, Khazar2, Codename Lisa, Frosty, Jackmcbarn, Amazemen, Sudpiop and Anonymous: 121
• ARPANET Source: https://en.wikipedia.org/wiki/ARPANET?oldid=738185425 Contributors: The Cunctator, Dreamyshade, Zundark,
The Anome, Snorre, Hephaestos, Chris Q, Edward, Tim Starling, Wwwwolf, Looxix~enwiki, Ahoerstemeier, Jimfbleak, Angela, Rl,
Rob Hooft, G Prime, Dysprosia, WhisperToMe, DJ Clayworth, Furrykef, Itai, Nv8200pa, Jnc, François~enwiki, Thue, Bevo, Toreau,
Flockmeal, Frazzydee, Phil Boswell, Twice25, Robbot, Sdedeo, Boffy b, RedWolf, Postdlf, Sverdrup, Timrollpickering, Giftlite, DocWat-
son42, Ike~enwiki, Inter, Everyking, Dratman, Erdal Ronahi, Daibhid C, Siroxo, Matt Crypto, Bobblewik, CryptoDerk, Quadell, Be-
land, Jossi, Maximaximax, Szajd, Vishahu, Mschlindwein, Ohka-, Abdull, Adashiel, Grunt, Kate, JTN, Discospinster, Rich Farmbrough,
Guanabot, Jwise77, Adam850, Byrial, Kim Meyrick, Night Gyr, ESkog, Petrus~enwiki, Uli, Ylee, Shanes, Bookofjude, Coolcaesar,
TMC1982, Longhair, Smalljim, Cmdrjameson, KBi, La goutte de pluie, David Gale, PiccoloNamek, Twobells, Jumbuck, Alansohn,
Guy Harris, Uogl, Andrew Gray, Lord Pistachio, JoaoRicardo, Wensong~enwiki, Zippanova, Albino Fox, Lugevas, Cburnett, Docboat,
TheCoffee, Netkinetic, Ceyockey, Red dwarf, Ericl234, Mhazard9, Smoth 007, Ian Moody, TSP, Woohookitty, Uttaddmb, Mu301,
DoctorWho42, Rocastelo, Velvetsmog, Tabletop, Gimboid13, Ashmoo, Qwertyus, Dave Cohoe, Squideshi, Rjwilmsi, Nightscream, Jake
Wartenberg, Vary, Arabani, TedPostol, Quiddity, Bruce1ee, Collard, Miha Ulanov, Jeffmcneill, Fred Bradstadt, Waynemcdougall, Un-
truth, Daderot, Jrtayloriv, Preslethe, Chobot, Bgwhite, Gwernol, YurikBot, KenBailey, Cycletime, Eggman183, Hydrargyrum, Shell
Kinney, Rsrikanth05, Carps, CarlHewitt, Grafen, Ino5hiro, Barberio, Cryptosmith, Xdenizen, Daniel Mietchen, Bobak, Allynnc, Db-
firs, BOT-Superzerocool, Yudiweb, Brisvegas, Cengelbart, Bill.martin, Capt Jim, Zzuuzz, Ali K, Johna~enwiki, Jack Upland, Viper-
Snake151, Huebi~enwiki, KNHaw, Zvika, Samuel Blanning, Veinor, SmackBot, Mmernex, EvilCouch, Classicfilms, Gavin77, Bjelleklang,
394 CHAPTER 70. X.25

KocjoBot~enwiki, Btm, Kintetsubuffalo, Edgar181, Beerquest, Gilliam, Folajimi, Andy M. Wang, StanislavJ, Nbarth, DHN-bot~enwiki,
Ransu, JonHarder, Renegade Lisp, BostonMA, Dbrown46, Mwtoews, Wybot, DMacks, Ohconfucius, Will Beback, SashatoBot, Esrever,
AThing, Disavian, Arbustoo, Mr Stephen, Manifestation, MTSbot~enwiki, Kvng, TJ Spyke, Michaelbusch, MFago, CzarB, Joseph Solis
in Australia, Igoldste, Nethac DIU, Color probe, Az1568, Courcelles, Cyranomn, Guardianangelz, Tawkerbot2, Michaelwilson, East-
law, JForget, Mbiesz, Edward Vielmetti, CBM, CuriousEric, WeggeBot, Neelix, Cydebot, Flowerpotman, Kimyu12, Bramlet Abercrom-
bie, Vyselink, Aduro.sudonim, Smiteri, Thijs!bot, Epbr123, Martyr2566, Anupam, Headbomb, SGGH, Nezzadar, Tellyaddict, Rickin-
Baltimore, SusanLesch, Dawnseeker2000, Omaunder, Fmlyguy08, AntiVandalBot, LinaMishima, Leuqarte, JAnDbot, Harryzilber, The
Transhumanist, Arch dude, Hut 8.5, PhilKnight, Kalicaloo1212, .anacondabot, Geniac, Kilrothi, Magioladitis, Legallydolls, Bongwar-
rior, VoABot II, JamesBWatson, Nyttend, WODUP, Prestonmcconkie, Avicennasis, Jodi.a.schneider, Robin S, Gwern, MartinBot, Gully
33, CommonsDelinker, J.delanoy, Mange01, Bogey97, Reginhild, Cyanolinguophile, Rhinestone K, VAcharon, Public Menace, Dave
Dial, Milo03, Maxzig, (jarbarf), Saltysailor, Mufka, Phirazo, Doug4, Jamesontai, DorganBot, Gtg204y, Bonadea, Scott Illini, Unicorn-
Tapestry, Ichthyos, D A Patriarche, Drmargi, Philip Trueman, TXiKiBoT, Oshwah, Chris-marsh-usa, Ripepette, Ngch89, Harvsterjake,
AlleborgoBot, Thunderbird2, Logan, SiliconWolf, Kbrose, SieBot, StAnselm, 4wajzkd02, BotMultichill, Mikebar, LawrenceGRoberts,
Blueclaw, Le Pied-bot~enwiki, Maijohn, Oxymoron83, Lightmouse, Techman224, OKBot, ImageRemovalBot, ClueBot, Plastikspork,
Trevor.harris1, Der Golem, Objective3000, Mavericks12, Niceguyedc, Piledhigheranddeeper, Rhododendrites, Kmaster, CodeCaster,
Ottawa4ever, Thingg, Vegetator, Wmjames, Anderssl, Aadh, Adouglass, Egmontaz, XLinkBot, Pichpich, Gerhardvalentin, NellieBly,
Dgtsyb, TravisAF, RyanCross, Addbot, Ghettoblaster, Some jerk on the Internet, Jojhutton, Knight of Truth, Fgnievinski, Blethering
Scot, Ronhjones, Fluffernutter, Elainecs, Glane23, Favonian, Torla42, Graylorde, Тиверополник, Mightybozo, Alanscottwalker, ‫דוד‬
‫שי‬, Gail, LuK3, Pointer1, Luckas-bot, Yobot, Fraggle81, Donfbreed, GilCahana, Palladmial, 12george1, Reddog81, Peter Flass, Than-
mark, AnomieBOT, Rubinbot, Jim1138, TwistedText, Dmf360, Materialscientist, 90 Auto, Citation bot, JohnnyB256, Quebec99, Lil-
Helpa, GrouchoBot, VonFassen, Omnipaedista, Samoher, Kaylanimis, Multixfer, Jurcking, N419BH, Shadowjams, Gnuish, A.amitkumar,
Sushil20051982, Zacharysyoung, Floparallel, FrescoBot, Abeair, W Nowicki, AnnDuvall, D'ohBot, ZedGreen, Redrose64, ImageTag-
Bot, Tom.Reding, Lineslarge, Full-date unlinking bot, Jrfixer, TobeBot, Throwaway85, Jonkerz, Lotje, Zvn, Mr.98, Tbhotch, DARTH
SIDIOUS 2, RjwilmsiBot, Balph Eubank, DASHBot, Steve03Mills, EmausBot, John of Reading, Acather96, Immunize, GoingBatty,
TuHan-Bot, Wikipelli, Dcirovic, AvicBot, Rapidosity, TcomptonMA, W163, Coasterlover1994, L Kensington, Puffin, ChuispastonBot,
Marioluigi98, BornonJune8, ClueBot NG, Oldthumper, MelbourneStar, Lord Chamberlain, the Renowned, Frietjes, Koalabearyz, Helpful
Pixie Bot, Vikramanb17, PearlSt82, Joeykai, CAWylie, Pascal72~enwiki, BattyBot, Thom2729, Dexbot, NFLisAwesome, Sriharsh1234,
Zziccardi, Chrono85, François Robere, Lukesimo, Babitaarora, Thevideodrome, Ginsuloft, Whizz40, Twistie1, Philroc, Lasturias, Ja-
conaFrere, Monkbot, SilverEditor, Gideon279, Trackteur, Macofe, Prpsct, Garfield Garfield, Mkvision, Charliecombs, MarlovianPlough,
Abuanand01, KeeveChris, Whalestate, KasparBot, JAKnott, Amrutkowski, Zamaster4536, GreenC bot and Anonymous: 524
• Asynchronous Transfer Mode Source: https://en.wikipedia.org/wiki/Asynchronous_Transfer_Mode?oldid=737656198 Contributors:
Tobias Hoevekamp, Derek Ross, Zundark, The Anome, AlexWasFirst, Youssefsan, Aldie, Leandrod, Edward, Michael Hardy, Zani-
mum, Darrell Greenwood, Rl, Edaelon, Harris7, Kdaley, Colin Marquardt, Pedant17, Jnc, Populus, AnonMoos, Robbot, RedWolf, Nurg,
Wikibot, Gwicke~enwiki, Giftlite, Dinomite, Monedula, Everyking, Joconnor, Rookkey, Niteowlneils, Richard cocks, Matt Crypto, Dar-
rien, Bobblewik, Tagishsimon, Onco p53, Quarl, Pembers, Necrothesp, Karl-Henner, Creidieki, Mzabaluev, Adashiel, EagleOne, Jkl,
Rich Farmbrough, Guanabot, Sladen, Smyth, Xezbeth, Dyl, Project2501a, *drew, Spearhead, Neilrieck, West London Dweller, Bobo192,
MarkWahl, Robotje, Get It, Unquietwiki, Kjkolb, Ivansanchez, Rjamorim, Espoo, Alansohn, Anthony Appleyard, Thebeginning, Snowolf,
Markrod, Cburnett, Hydrowire, Sakus, Lerdsuwa, Brholden, Blaxthos, Kiffahh, Kelly Martin, RHaworth, BernardM, Camw, Ylem, Ilario,
Brentdax, Beej, Bluemoose, M412k, Teemu Leisti, Graham87, BD2412, Chrisc, RxS, Chrischambers, Ryan Norton, Jivecat, Salix alba,
Vegaswikian, Oblivious, ElKevbo, Ttwaring, FlaBot, RexNL, Pengu, Chobot, YurikBot, Tetzcatlipoca, Hyad, Pi Delport, RadioFan, Gaius
Cornelius, Chris Murphy, NickBush24, Daniel Luechtefeld, Ino5hiro, Dr Debug, Zwobot, Gr33ndata, Bobstopper, Janto, Ketil3, Phil
Holmes, Bluezy, SmackBot, Unyoyega, Gilliam, Ohnoitsjamie, Betacommand, Richfife, Skintigh, Oli Filth, Silent SAM, DHN-bot~enwiki,
TripleF, Martensjd, Rrburke, Chrylis, Het, Wizardman, Kukini, Zac67, Kylebrz, Vanished user 9i39j3, Soumyasch, Jec, Dicklyon, To-
tel, Saxbryn, Kvng, Iridescent, Paul Koning, Walton One, Tawkerbot2, CmdrObot, Pleyden, Jesse Viviano, Requestion, Duraivelanc,
Cheesysam, Phatom87, IoannisK, Ashok.Nair, Kozuch, Thijs!bot, TFriesen, Drpixie, Electron9, Gerry Ashton, Nezzadar, Philippe, Amlz,
LachlanA, AntiVandalBot, Davidoff, Edokter, Riffle, Floppytoes, JAnDbot, Chaitanya.lala, Barek, TAnthony, Beaumont, VoABot II,
Mmkh, SandStone, Allstarecho, MartinBot, Dgepstein, Jim.henderson, Naohiro19, Genghiskhanviet, Lilac Soul, J.delanoy, Mange01, Tan-
nerbrockwell, Peter Chastain, Adriao, Javawizard, Public Menace, LordAnubisBOT, Ls6777, Ra6907, Inwind, Emiller213, Funandtrvl,
JohnGrantNineTiles, VolkovBot, CSumit, Atm153, Philip Trueman, Vipinhari, Anonymous Dissident, Melsaran, BotKung, Tomg11030,
Iamzemasterraf, Why Not A Duck, Chenzw, KjellG, Wisamzaqoot, Anuragkothari, Kbrose, Nubiatech, ToePeu.bot, VVVBot, Winterspan,
Keilana, Bentogoa, Flyer22 Reborn, Jojalozzo, Arunachalammanohar, Smfavaro, Martarius, ClueBot, Methossant, Wutsje, Timberframe,
Niceguyedc, Vaibhav.nimbalkar, Yogi raj2, Tanketz, Propeng, Captpossum, Vivio Testarossa, Panda34, Apparition11, Antti29, Stickee,
Mohanchander, Jugandi, Dgtsyb, Kbdankbot, Addbot, Blethering Scot, Graham.Fountain, AndersBot, ChenzwBot, Тиверополник, En-
duser, Legobot, Luckas-bot, Yobot, Les boys, Backslash Forwardslash, 1exec1, Jim1138, Kevintolly, Materialscientist, E2eamon, Arthur-
Bot, Quebec99, DataWraith, Frankie0607, Cirne100, Visiting1, Lady alys, Ozzie13, Green Cardamom, FrescoBot, Nageh, W Nowicki,
GreenZeb, Orenburg1, Sricciar, Tekdude, Mosfet RJF, DARTH SIDIOUS 2, WildBot, Ericjmonson, EmausBot, Jsung123, Olof nord, Kl-
brain, Tommy2010, ZéroBot, Carbonlethagy, Demonkoryu, MonoAV, Teapeat, ClueBot NG, Lord Chamberlain, the Renowned, Chester
Markel, Rezabot, Helpful Pixie Bot, Sumankane, Azerekh, BG19bot, Abhigyan.gaurav, ChrisGualtieri, Webclient101, UNOwenNYC,
Comp.arch, Semsi Paco Virchow, Narky Blert, Drsunnymount, GreenC bot and Anonymous: 401
• AX.25 Source: https://en.wikipedia.org/wiki/AX.25?oldid=730870910 Contributors: Jvangorp, Vandys, Bobblewik, DNewhall, ChrisRu-
volo, Jda, Simon South, Ralf.Baechle, Bookandcoffee, Ylem, Eyreland, Rjwilmsi, Mirror Vax, Mcleodm, Anonym1ty, Oh2mqk, Shaddack,
Brandon, Extraordinary, robot, SmackBot, Kharker, Mulder416, EVula, Adsllc, Euchiasmus, Xofc, Quibik, Dawnseeker2000, Lux-
omni, Storkk, Xeno, Dtheweather9, K7net, STBotD, DorganBot, Sv1xv, Muhandes, Kbdankbot, Addbot, Debresser, Yobot, Milk’s Favorite
Bot II, AnomieBOT, Nojiratz, Trappist the monk, DASHBot, Dewritech, Dcirovic, Sodmy, Kc2hmv, Chosulman, 32RB17, KasparBot and
Anonymous: 26
• Communicating sequential processes Source: https://en.wikipedia.org/wiki/Communicating_sequential_processes?oldid=724948365
Contributors: Derek Ross, Michael Hardy, Ggaughan, UphillPhil, Phil Boswell, RickBeton, Borrible, DavidCary, Fishal, Discospinster,
LuckyStarr, Leibniz, Ged Byrne, BACbKA, EmilJ, Kgaughan, Whosyourjudas, Suruena, Linas, Lost.goblin, Daira Hopwood, Ruud Koot,
Qwertyus, Rjwilmsi, Ligulem, Jameshfisher, RobyWayne, Quuxplusone, BMF81, RussBot, Arado, CarlHewitt, Jpbowen, LodeRunner,
Mig21bp, Nikkimaria, Cedar101, Black-Velvet, JLaTondre, Dpotop, SmackBot, Pintman, Betacommand, Letdorf, Nbarth, Allan McInnes,
Leland McInnes, JustAnotherJoe, MichaelBillington, Physis, Krauss, Thijs!bot, West Brom 4ever, JustAGal, YSolik, The Transhuman-
ist, Bencherlite, Ourarash, Stijn Vermeeren, Gwern, STBot, R'n'B, Rimwolf, Outmind~enwiki, Gwizard, Ivan Štambuk, SummerWith-
Morons, Shaiguitar, Thehelpfulone, Addbot, DOI bot, LaaknorBot, Lightbot, Legobot, Luckas-bot, Yobot, AnomieBOT, Citation bot,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 395

Xqbot, Damienivan, Aclassifier, Citation bot 1, Vasywriter, Tom.Reding, Cathy Richards, Yeng-Wang-Yeh, JonathanMayUK, JamieHan-
lon, WikitanvirBot, ZéroBot, H3llBot, Igrigorik, Antiguru, Phil30129, KartikSinghal, Helpful Pixie Bot, BG19bot, Webclient101, Loyso
b, Nclridd, Jgrodziski, Monkbot, Vaskir and Anonymous: 83

• Communication Source: https://en.wikipedia.org/wiki/Communication?oldid=738165102 Contributors: Stephen Gilbert, Ap, Ed Poor,


Andre Engels, Little guru, William Avery, SimonP, DavidLevinson, AdamRetchless, Mjb, Patrick, Michael Hardy, Alodyne, Lexor,
Gdarin, Vera Cruz, Kku, Gabbe, Ixfd64, Lquilter, Alfio, Mdebets, Ahoerstemeier, J-Wiki, CatherineMunro, BigFatBuddha, Salsa Shark,
T3knomanser, Glenn, Marteau, Andres, Qwert, Ghewgill, Smack, RickK, Ww, Randyc~enwiki, WhisperToMe, Samsara, Vinay Varma,
Leonariso, Alexina, Jeffq, Carlossuarez46, Chuunen Baka, Robbot, R3m0t, Altenmann, Richardpitt, Securiger, Rholton, Meelar, Andrew
Levine, Doidimais Brasil, Hadal, Wereon, Michael Snow, Dhodges, Ruakh, Tea2min, Alan Liefting, Ancheta Wis, Dominick, Giftlite,
Christopher Parham, Mintleaf~enwiki, Adasi~enwiki, Kenny sh, Zigger, Adamk, Emuzesto~enwiki, NeoJustin, Bensaccount, Borisgloger,
Malyctenar, Piman, Steve-o~enwiki, SWAdair, Edcolins, Christopherlin, ALargeElk, Peter Ellis, Chowbok, Gadfium, Utcursch, Andycjp,
Antandrus, Beland, Piotrus, Kusunose, Khaosworks, Ot, MacGyverMagic, Zfr, Sam Hocevar, Karl Dickman, Bluemask, Zro, Mike Rosoft,
Brianjd, Jwdietrich2, Discospinster, Rich Farmbrough, Rhobite, Guanabot, Vsmith, Westendgirl, LindsayH, Mjpieters, Mani1, Spooky-
Mulder, Edgarde, Bender235, ESkog, ZeroOne, Fronz, S.K., Slokunshialgo, Violetriga, CanisRufus, El C, Rgdboer, Shanes, Bookofjude,
Adambro, Bobo192, Chapium, DJ Ecto, Smalljim, Shenme, Maurreen, Nk, Thewayforward, Sam Korn, Haham hanuka, Nsaa, Mdd,
Orangemarlin, Ranveig, Zachlipton, Red Winged Duck, Alansohn, Jhertel, Arthena, Keenan Pepper, Riana, Steele~enwiki, Hu, Velella,
RainbowOfLight, Sciurinæ, Shoefly, Bsadowski1, Freyr, Versageek, KTC, Phi beta, Jorray, RHaworth, Camw, LOL, Ikescs, Ruud Koot,
WadeSimMiser, Chochopk, Tabletop, Firien, Wikiklrsc, Peacefulvalley, Burkhard~enwiki, Macaddct1984, Waldir, DeweyQ, Dysep-
sion, Mandarax, RichardWeiss, Matilda, Graham87, BD2412, Zoz, Mendaliv, Phillipedison1891, Josh Parris, Sjö, Sjakkalle, Rjwilmsi,
Mayumashu, Angusmclellan, Erebus555, Chsf, Vegaswikian, Lendorien, Tintazul, The wub, Kyle.Mullaney, Old Moonraker, Musical
Linguist, Rgathercoal, Doc glasgow, Margosbot~enwiki, HurriSbezu, Nivix, AJR, RexNL, Ewlyahoocom, Gurch, Otets, Jrtayloriv, An-
driuZ, Quuxplusone, Swtpc6800, Srleffler, Chobot, DVdm, Guliolopez, John Dalton, Bgwhite, Cactus.man, EWignall, Gwernol, Yurik-
Bot, Wavelength, Mukkakukaku, Phantomsteve, RussBot, Petiatil, J. M., Splash, Epolk, RadioFan2 (usurped), Stephenb, Shell Kinney,
Gaius Cornelius, Shaddack, Rsrikanth05, Pseudomonas, NawlinWiki, Lemon-s, Bachrach44, Janke, Grafen, Cquan, TheSwami, Anetode,
Moe Epsilon, Stevenwmccrary58, Misza13, PM Poon, Chichui, Zagalejo, Tkinkhorst, DeadEyeArrow, Everyguy, Botteville, Wknight94,
Pooryorick~enwiki, Pap3rinik, Boivie, Tigershrike, Theodolite, Cbogart2, Closedmouth, E Wing, KGasso, Pietdesomere, Josh3580, SM-
cCandlish, Pablo2garcia~enwiki, JoanneB, Fram, Anclation~enwiki, Willtron, Allens, Kungfuadam, Carlosguitar, SmackBot, MattieTK,
Aneeshnj, YellowMonkey, Erictj, Reedy, Prodego, Hydrogen Iodide, Mscuthbert, Rojomoke, Hardyplants, Cessator, Took, Fentonrobb,
HalfShadow, Gilliam, Skizzik, Carl.bunderson, Frédérick Lacasse, Cowman109, Chris the speller, Master Jay, Oli Filth, Tree Biting Con-
spiracy, Roscelese, SchfiftyThree, Akanemoto, Dlohcierekim’s sock, Imacdo, Nbarth, KingAlanI, Hallenrm, Gracenotes, Dethme0w, Can't
sleep, clown will eat me, Klacquement, Tracy2642000, Death2, Rrburke, Addshore, Midnightcomm, Mr.Z-man, SundarBot, Mayooresan,
Jaimie Henry, Nakon, Jiddisch~enwiki, Hoof Hearted, Perry8331, RandomP, Geoffr, Samafito, MartinRe, Luigi III, Lcarscad, Wisco, Kei-
thB, Sigma 7, Mschevrolet, Byelf2007, Runa27, Tydus Arandor, Hanasato, Srikeit, Kuru, KarmGrigoryan, Scientizzle, Mc nikki b, Rtybgh,
Gobonobo, JohnI, Robofish, JorisvS, Mgiganteus1, Feraudyh, IronGargoyle, Voceditenore, 16@r, JHunterJ, Slakr, Rafaleaz, SQGibbon,
Mr Stephen, Skishoo2, Dicklyon, Achilleshart, Jon186, Optakeover, SandyGeorgia, Spiel496, Dhp1080, Ryulong, Citicat, EEPROM Ea-
gle, Nvpatentlawyer, Jose77, Varuag doos, Xionbox, Autonova, Quaeler, Levineps, BranStark, Iridescent, Shoeofdeath, Turbokoala, Go-
rillazfeelgoodinc, Igoldste, CapitalR, Guest0495, Courcelles, Bottesini, Tawkerbot2, George100, RockinRob, SkyWalker, JForget, Cm-
drObot, Escaper7, Porterjoh, Martins.Dzelde, Zarex, Unionhawk, Tensionjt, GHe, Kaune, Noel.Dietrich, AshLin, ShelfSkewed, Iokseng,
Kemrin, Bobnorwal, Gregbard, Funnyfarmofdoom, Warp9wb, Slazenger, Mike2000~enwiki, Meno25, Gogo Dodo, Flowerpotman, ST47,
Chasingsol, Julian Mendez, Skittleys, Cbaxter1, SymlynX, Tawkerbot4, Doug Weller, AndersFeder, DumbBOT, Bookgrrl, NaLalina, Lee,
Kozuch, Xantharius, Omicronpersei8, Lo2u, Nfslpu, Satori Son, FrancoGG, Letranova, Epbr123, Doct.proloy, Qwyrxian, TonyTheTiger,
Greg hill, HappyInGeneral, Andyjsmith, Marek69, John254, Bobblehead, Maximilian Schönherr, Tellyaddict, BauerPower, Pkapitola, Sig-
gis, Escarbot, Mentifisto, Porqin, AntiVandalBot, BokicaK, Luna Santin, Seaphoto, CZmarlin, Goodmansasha, Antique Rose, Expligatory,
DeepJR, Smartse, Jacqke, Alexthurleyratcliff, Dylan Lake, PseudoChron, Jenny Wong, Jaredroberts, MikeLynch, JAnDbot, DuncanHill,
MER-C, The Transhumanist, JonBernstein, Charanhere, Acroterion, Rose455, Pablothegreat85, Freedomlinux, .snoopy., Hayduke lives,
Bongwarrior, VoABot II, Usereed, JamesBWatson, D1doherty, Autie 808, Swpb, Ling.Nut, Bwhack, I JethroBT, Champvirgomartin, An-
imum, Cgingold, Ciaccona, Hazukisan, Cpl Syx, Spellmaster, Vssun, DerHexer, JaGa, Edward321, Khalid Mahmood, Oicumayberight,
0612, MartinBot, Yrrah, Management Culture, Rettetast, CommonsDelinker, AlexiusHoratius, Jarhed, EdBever, Mausy5043, Erkan Yil-
maz, J.delanoy, Pharaoh of the Wizards, Trusilver, Petreg, Adavidb, Hanteng, Silverxxx, Wtimrock, MistyMorn, Maurice Carbonaro, Ex-
transit, Amanda Renee, Cdamama, Athalia~enwiki, Joe fob, Aqwis, Elkost, Katalaveno, Allanhgilbertson, McSly, Bryantnorland, Lovely se-
ungmi, Brolsma, Babochka18, Gemena, The Transhumanist (AWB), NewEnglandYankee, Arun0070, Johnabolarin, Jorfer, EyeRmonkey,
Cometstyles, Warlordwolf, Treisijs, Sjwk, Kvdveer, Pdcook, Ja 62, Inwind, S (usurped also), DASonnenfeld, KGV, Funandtrvl, Black Kite,
Deor, VolkovBot, Jeff G., MaxwellBliss, Nburden, Tomer T, Aesopos, Philip Trueman, Tcaruso2, TXiKiBoT, AllanManangan, Yupi666,
Anne1024, NPrice, Anonymous Dissident, Nl74, GcSwRhIc, Qxz, Anna Lincoln, Brainresearch, Corvus cornix, Don4of4, C7796E2C,
DieBuche, Butterscotch, Andy Dingley, Lova Falk, Chuthuy20262, Enviroboy, Xsamanthaxwoodsx, Cnilep, Brianga, Rlanigan, Den-
nisRivers, Raenico, Kalivd, Irishdunn, FlyingLeopard2014, Anon The Nitpicker, EJF, SieBot, John.n-irl, Danielden, Jauerback, Fantas-
tic fred, Dawn Bard, Viskonsas, RJaguar3, Triwbe, Lucasbfrbot, Yintan, Keilana, Hebisddave, Bentogoa, Breawycker, Flyer22 Reborn,
MaynardClark, Oda Mari, JetLover, SPACKlick, Yerpo, Wombatcat, Tmorin, Sbowers3, Ayudante, Doctorfluffy, Oxymoron83, OKBot,
Nancy, Svick, Reneeholle, Capitalismojo, WikiLaurent, Aalucas, Asikhi, Denisarona, Sasha Callahan, Linforest, Atif.t2, Loren.wilton,
Martarius, ClueBot, Thedosmann, Avenged Eightfold, GorillaWarfare, Snigbrook, The Thing That Should Not Be, EoGuy, Shujaat Ali
Rahi, Jacob F. Roecker, Lawrence Cohen, PrometheusArisen, Gaia Octavia Agrippa, Tanglewood4, Frogys4me, Bradka, Uncle Milty,
Niceguyedc, Ictlecturer, Arunsingh16, Auntof6, Excirial, Alexbot, Mynameisnotpj, Jusdafax, Pablo.paz, Designanddraft, Ameher, Vanishe-
duser12345, Children.of.the.Kron, Vivio Testarossa, Henninb, Lartoven, ParisianBlade, Arjayay, Hans Adler, Санта Клаус, S19991002,
Aleksd, Humdhan, Unmerklich, Andrewlau1022, Aitias, 7, Ranjithsutari, JDPhD, Versus22, Lambtron, Doriftu, MelonBot, Meske, SoxBot
III, Vanished user uih38riiw4hjlsd, Tanya.Christine, XLinkBot, Pichpich, Gnowor, Jebylicious, Samira19, Oldekop, Bmbenson2, Jew-
erlyGirl18, Stickee, Kebell2, Samwise1, Valeva, Jovianeye, Rror, Dthomsen8, Feinoha, Svgalbertian, XDouglas, Mitch Ames, Dr sign,
WikHead, Mischievousmaddy, PL290, Frood, Alexius08, Noctibus, Vianello, Chinese language is the bubonic plague, Addbot, Jomack-
iewicz, Manuel Trujillo Berges, Liefjes, Some jerk on the Internet, Imark 02, Fgnievinski, Blethering Scot, Ronhjones, Fieldday-sunday,
Moosehadley, Ynaztiw, Fluffernutter, Ccnc, MrOllie, Download, CarsracBot, Facilitation Author, 5 albert square, Tassedethe, Numbo3-
bot, Tide rolls, OlEnglish, Krano, Luckas Blade, Gail, MuZemike, Jarble, ‫זרם‬-‫טבעת‬, Albeiror24, Legobot, Luckas-bot, Postalprimesmock,
Yobot, Senator Palpatine, Fraggle81, TaBOT-zerem, Thescimitar, AmaraBot, Timir Saxa, Eric-Wester, Tempodivalse, SD93981, Rpf 81,
AnomieBOT, Quangbao, Hairhorn, Rubinbot, ThaddeusB, Sonia, Jim1138, IRP, Galoubet, Piano non troppo, AdjustShift, Drdac, King-
pin13, Justme89, NickK, Flewis, Materialscientist, ArdWar, Citation bot, Nifky?, LilHelpa, MauritsBot, Xqbot, Brown tabel, Sketchmoose,
396 CHAPTER 70. X.25

Sionus, Khodeirmas229, Melmann, JimVC3, Capricorn42, Mankapr, Wingroad2, Meewam, Millahnna, Nasnema, Batesmas214, Venkaat,
Ched, GrandKokla, MiniBill, Anna Frodesiak, Wazofski, Dr Oldekop, Cat1project, Tdjewell, Frosted14, Omnipaedista, Charismatic
Verma, Frankie0607, Brandon5485, Simon321, Saalstin, JasonSWrench, Spiderwriter, Shadowjams, Amitkhullar, Griffinofwales, Altraul,
Nywici, Fingerz, FrescoBot, Mshuda, Voxii, Fortdj33, Rmcnabb91, Sky Attacker, Wgpers, Webknguyen, Hiapale21, Comm&emotion,
Rnagar4, Jamesooders, Cinomancaca, DivineAlpha, Intelligentsium, MacMed, Pinethicket, I dream of horses, Rokaszil, Abductive, Invi-
sion2020, D(r)ead End, MJ94, Hellknowz, JuliaBaxter51, AnandaDaldal, Calint, RedBot, Ania Lian, Ezhuttukari, Madameoctopus, Bool-
syet, Jandalhandler, Fumitol, Crimanats3, Dude1818, PSY7, Ceecee1212, FoxBot, Thrissel, TobeBot, Schmiggidy, Train2104, Antara
singhania, Exagon, Fox Wilson, Dinamik-bot, Vrenator, UNIT A4B1, LilyKitty, Joey1978, Vancouver Outlaw, ArielForeman, Amirsmile,
Arsmanimegalai, Paralympiakos, Sivakumar.sachin, Reaper Eternal, Diannaa, Dmkolobov, Suffusion of Yellow, Jd Tendril, Tbhotch,
Csmithslca, DARTH SIDIOUS 2, Obankston, Chy1991, Im-tha-one, Onel5969, Mean as custard, Stj6, RjwilmsiBot, Coast123, Ripchip
Bot, Slice637636, Regancy42, Noommos, Rlholden, Yash k bhatt, Knoweco, Skamecrazy123, Idea101, DASHBot, Gloomofdom, Esoglou,
EmausBot, John of Reading, Yuhter, WikitanvirBot, Jnsdfbjisdfbjsfdjnsfd, Spamerman, Racerx11, Faolin42, GoingBatty, ShilpaSV,
ShakeeraDMyers, Mylaramkrishna, L235, Klbrain, Teerickson, Forestn101, Solarra, Encilee, Tommy2010, Sillybillypiggy, Wikipelli,
K6ka, Sanghera2685281, AsceticRose, Erpert, Savh, Evanh2008, Prayerfortheworld, Daonguyen95, Fæ, Josve05a, Traxs7, Érico, Lateg,
Jeyda007, Szalakóta, The Nut, Matthewcgirling, Alpha Quadrant (alt), Cobaltcigs, Pingu.dbl96, Monterey Bay, Gz33, Ocaasi, Tolly4bolly,
RaptureBot, Tridibbhowmik, Thine Antique Pen, Architect21c, L Kensington, Donner60, Funnymind, Puffin, Rathen69185, Orange
Suede Sofa, Wakebrdkid, Musicguy24, Krbibin, Ortmana, Sven Manguard, DASHBotAV, Ltaylor20, 28bot, Rocketrod1960, Cgt, Xanch-
ester, Gjholt, ClueBot NG, Gowtamrajk, Gareth Griffith-Jones, Jack Greenmaven, Change67, MelbourneStar, This lousy T-shirt, Satel-
lizer, Jenova20, CloveWiki, Jasperspeicher, Rainstarlight, Snotbot, Theboymusic, Cntras, BabyGirlCourtney, Braincricket, O.Koslowski,
ScottSteiner, Widr, Antiqueight, C63205, Stomasz71, Vibhijain, Ashokrajaballa, North Atlanticist Usonian, Iopsycho, Magallon17, Help-
ful Pixie Bot, Irrc irri, Ratman2000, Rablanken, Bachelorcourse, Calabe1992, Bobbyshabangu, Tylerbesh, WNYY98, Anu.gnath, Low-
ercase sigmabot, Kmalekian, BG19bot, Vectevs, Hz.tiang, Wiki13, MusikAnimal, JasonPLK, Ronkays, Zachzab, Mark Arsten, Adven-
turousSquirrel, Anittisathiaraj, Pravincumar pek, Jgatti09, Altaïr, Mahen1201, Kammit102, N.manoraj, Balivernes, Dhamal07, Gobler18,
Mohamedadeed, Tanuruya Roy, Sonal6578, EditorRob, Iksar babes, Snow Blizzard, MrBill3, Ahmek001, Marjoleinkl, Awanishbvi, P
diggle, Ammarkhan05693, Klilidiplomus, Rapaddhu, Angelakanksha, Bells2012, Ace001TheBoss999, KGun10, Fylbecatulous, Several
Pending, Liam987, Pratyya Ghosh, Mrt3366, ChrisGualtieri, Gdfusion, EuroCarGT, Devenpro, RogerBryenton, Sarasapo, EagerTod-
dler39, Webclient101, Mogism, Sundeep k lal, Saehry, Wallybblue, TwoTwoHello, Frosty, Graphium, Syum90, Ferniewernie, Corn
cheese, Telfordbuck, TANWIR HASSAN, Jituparida, AVlonely, Tami Allen, Faizan, Avwezel, Epicgenius, OverMyJob, Dddege, Logert-
Gilby, Zalunardo8, BreakfastJr, Tentinator, Kogmaw, GingerGeek, Avatto123, Yankeesfan1234, Cherubinirules, Penperson, Lilythamzil,
Basilu, Taniquab2014, Babitaarora, Haminoon, Arpitmaurya, JoshuaChen, Ugog Nizdast, JustBerry, Giematt, Ginsuloft, Civiello m, Some-
one not using his real name, Sam Sailor, Jianhui67, Werddemer, Javiergustav, Chrissuba2013, Sereiakata, DannyFangles, Mallywazhere,
Dude200116, Vhiggs1, JaconaFrere, Kylo Ren, Csutric, TuxLibNit, Bobvancleef38, AKS.9955, Proudcommunist111111, Fauziya Muham-
mad, Mk bataiya, Znorth0818, Jim Carter, IvanZhilin, Berlinlasers, Morrisonann, Molhv, William Tölöberg, Raymondlay, KBH96, Kuro-
daSho, Radueno, KH-1, KatBerg52, Dwikicowan, Crystallizedcarbon, Ryanhw, WikiTechPresentation, Termaric, Tymon.r, Explicit fire,
Ismailzabee92, Ss9704895, Lalith269, Syam prathipati, Gibralter123, Venkatesh doli, Rageetha, Fuebaey, Nicolecheek17, Gragarian,
Mediavalia, Bottlesd, Eugene Wood, Shakfastlink, NewAtSchool, PAULFERNZ, Jnm230, Natalie.Desautels, Culturalresearch, Silver-
money1963, KasparBot, Steve12040234, Donnerclan, Sweepy, Srednuas Lenoroc, Lathay, Anindyaneog, Vadivelu.vadi, Vidyabaskar,
Joeljoseph77, Sarithashankar, ParamedicDave, Mkamitkm, Adharris09, Iblue143, JumpiMaus, Tablelooksgood, Zeeshan 93, Lgracedwiki,
Timothy.kuhn, Rylee Wznick, Jessa.lusby, Garylee0210, Marianna251, Manto17, Ustudent29, Space Titans, Anwesha Sabat, Nokutenda
Chimbetete, TradCult, Sachinen, MeowMoon, Nikoby Andrews, Swetab and Anonymous: 1796
• Communications protocol Source: https://en.wikipedia.org/wiki/Communications_protocol?oldid=736938855 Contributors: Damian
Yerrick, The Anome, Rjstott, Amillar, Aldie, Matusz, SimonP, Hannes Hirzel, B4hand, Youandme, Edward, Michael Hardy, Nixdorf,
Kku, MichaelJanich, Ahoerstemeier, Snoyes, Darkwind, Glenn, Tristanb, BAxelrod, Mxn, Conti, Hashar, Mulad, Guaka, Ciampix, Whis-
perToMe, Jnc, Topbanana, Bloodshedder, Chuunen Baka, Robbot, RedWolf, Mushroom, Takanoha, ShaunMacPherson, Thierryc, Rick
Block, Niteowlneils, Yekrats, Elmindreda, Tagishsimon, Regin LARSEN~enwiki, Beland, Maximaximax, Zondor, Jennypei, Mormegil,
Freakofnurture, JTN, Discospinster, Rich Farmbrough, Bert490, Skarg, Vsmith, Ardonik, Chowells, Byrial, Dyl, Bender235, S.K., Mwan-
ner, Kyz, Bobo192, Smalljim, Enric Naval, Polluks, Jumbuck, Andrewpmk, BodyTag, Velella, Wtshymanski, Rick Sidwell, Lerdsuwa,
Graham87, BD2412, Kbdank71, Lockley, RexNL, BjKa, Kri, Vonkje, DVdm, Whosasking, The Rambling Man, Wavelength, Hairy Dude,
Undsoft~enwiki, RussBot, Pi Delport, David Woodward, Yyy, Wiki alf, Bodachi, Leptictidium, Denisutku, Oakwood, JLaTondre, Mike
Gale, BonsaiViking, SmackBot, Jphastings, KnowledgeOfSelf, Unyoyega, Matthuxtable, Gilliam, Oscarthecat, Kevinalewis, Chris the
speller, JEG, Can't sleep, clown will eat me, Allan McInnes, Radagast83, Clean Copy, Charivari, SashatoBot, Ferryca, Robofish, 16@r,
Kvng, Levineps, ManixPC, Pegasus1138, CapitalR, Zipz0p, Fumblebruschi, Nczempin, Pgr94, Phatom87, Cydebot, Kanags, Romangs,
Christian75, Neustradamus, Thijs!bot, Jacen6788, Escarbot, AntiVandalBot, Alphachimpbot, JAnDbot, Harryzilber, Bhamv, MER-C,
ElComandanteChe, Swpb, Helland, Flowanda, Jim.henderson, Anaxial, R'n'B, J.delanoy, Mange01, Samtheboy, IlyaKorolev, MischaO,
X!, Philip Trueman, Oshwah, Moogwrench, GroveGuy, Una Smith, Leafyplant, Cremepuff222, Billinghurst, Riick, Kbrose, SieBot, Sm-
sarmad, Flyer22 Reborn, Ngriffeth, ClueBot, EoGuy, Mild Bill Hiccup, Niceguyedc, Liempt, DragonBot, Takeaway, Alejandrocaro35,
Ykhwong, Jotterbot, Dekisugi, Ltsampros, Vegetator, Bobjim.hunter, Johnuniq, Moazami~enwiki, Good Olfactory, RyanCross, Dsimic,
Addbot, Jncraton, CanadianLinuxUser, Brainmachine, Zorrobot, Yobot, Hwardsil, TaBOT-zerem, Calle, AnomieBOT, Bctwriter, Materi-
alscientist, Aneah, Eumolpo, ArthurBot, LilHelpa, Brian2wood, Xqbot, TheAMmollusc, Intelati, GenQuest, Gensanders, PlaysWithLife,
Oyvind.misje, Miym, Alvin Seville, Smallman12q, Eugene-elgato, PPecheux, GliderMaven, FrescoBot, Nageh, Eddie Nixon, RedBot, Sonja
Connell, Sachipra, Vrenator, Suffusion of Yellow, Mean as custard, EmausBot, John of Reading, Dewritech, Dcirovic, K6ka, Daonguyen95,
Alpha Quadrant (alt), Amar.prksh, AManWithNoPlan, Salsal99, Pillaidee, Coasterlover1994, Dairyintheillawarra, Donner60, Orange
Suede Sofa, BioPupil, Jsoon eu, Rememberway, ClueBot NG, Heavenlyhash, Zynwyx, Widr, Joe102283, MerlIwBot, Helpful Pixie Bot,
Helmsjs, Wbm1058, KLBot2, BG19bot, Tirupur123451, Petruss, Mrpeterobrien, Tanmay Patange, Javlonson, Klilidiplomus, Ncphillips,
Tech77, Dexbot, Cbw yeuy, Lugia2453, Acharya 87, ‫عبد الله الصيدلي‬, Lankrist, Zsoftua, ArmbrustBot, Stevethornbury, Jonmax74,
JWNoctis, Juhuyuta, Fwolters, CryptcWriter, Abc 123 def 456, Trax support, Haosjaboeces, Samil Mahapatra, ChamithN, 96aman96,
Crystallizedcarbon, Cherdchai Iamwongsrikul, Warrinerd, AjayKumarShrestha, Jdcomix, Wikispoiler01, KasparBot, Jipdaskip gurugaint,
JackeyDee and Anonymous: 273
• Communications system Source: https://en.wikipedia.org/wiki/Communications_system?oldid=735682970 Contributors: Timo
Honkasalo, Imran, GTBacchus, Reddi, Giftlite, Kevin Rector, Eep², Dave souza, Keno, Mdd, Arthena, Scott5114, Youngamerican, Srl-
effler, Jpbowen, Deville, Katieh5584, Trickstar, SmackBot, Kvng, Eastlaw, Harryzilber, Jim.henderson, Uncle Dick, NewEnglandYankee,
GrahamHardy, DoorsAjar, Oshwah, Botev, Sasha Callahan, ClueBot, The Thing That Should Not Be, Mild Bill Hiccup, CounterVandal-
ismBot, Niceguyedc, Brews ohare, Tyler, BOTarate, Addbot, Yobot, Wikipedian2, SwisterTwister, RedBot, Primefac, Dcirovic, K6ka,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 397

Vanished user fijw983kjaslkekfhj45, ClueBot NG, Cobanyastigi, Chenspec, Sathya dyan, Chris.rider81, Frosty, Phamnhatkhanh, Faizan,
SJ Defender, CogitoErgoSum14 and Anonymous: 50
• Compiler Source: https://en.wikipedia.org/wiki/Compiler?oldid=737263192 Contributors: Derek Ross, CYD, Andre Engels, Khendon,
Hari, Enchanter, PierreAbbat, Fubar Obfusco, Imran, Vkuncak, R Lowry, Atlan, Mrwojo, K.lee, RTC, Michael Hardy, Llywrch, Fred
Bauder, Norm, Tenbaset, TakuyaMurata, Mbessey, Minesweeper, Looxix~enwiki, Stan Shebs, Mac, Nanshu, CatherineMunro, Ijon, Glenn,
Smaffy, Mxn, Dwo, Emperorbma, CooYip~enwiki, Dcoetzee, Dysprosia, Jay, Doradus, Espertus, ThomasStrohmann~enwiki, Furrykef,
Wernher, Bevo, Raul654, Mariuz, Robbot, Murray Langton, Jwpurple, Hobbes~enwiki, RedWolf, Chocolateboy, Hubertus~enwiki, Bab-
bage, Rfc1394, Iain.mcclatchie, Dina, Tea2min, Ancheta Wis, Giftlite, DavidCary, Scarroll, Haeleth, Holizz, Wolfkeeper, Kenny sh,
Bluetulip, VampWillow, Bobblewik, Edcolins, Neilc, Hereticam, Knutux, APH, Szajd, Joakim~enwiki, SamSim, Buraq~enwiki, Sonett72,
Muijz, Andreas Kaufmann, Abdull, Grunt, Corti, Mike Rosoft, D6, Mormegil, Imroy, Shipmaster, Jkl, Rich Farmbrough, Leibniz, Cacy-
cle, Jpk, Lemontea, Alistair1978, DcoetzeeBot~enwiki, Bender235, ESkog, BACbKA, Project2501a, CanisRufus, BEDEWIN, Surachit,
Richard W.M. Jones, Sietse Snel, Deanos, Drhex, Kissall~enwiki, R. S. Shaw, Unquietwiki, Jung dalglish, Yonkie, Nich148 9, James Foster,
Obradovic Goran, Sam Korn, BlueNovember, Hooperbloob, Glaucus, Officiallyover, Jumbuck, Michael Drüing, Liao, Interiot, Diego Moya,
Atanamir, BRW, Nex O-Slash, Suruena, Tony Sidaway, RainbowOfLight, Culix, Reaverdrop, SteinbDJ, TheCoffee, Bookandcoffee, Y0u,
Simetrical, LrdChaos, Daira Hopwood, StradivariusTV, Jonathan de Boyne Pollard, Rchrd, Paul Mackay~enwiki, Ruud Koot, Wikiklrsc,
Christopher Thomas, Marudubshinki, Yoric~enwiki, Graham87, 169, Qwertyus, Kbdank71, Rjwilmsi, Pasky, Ligulem, LjL, Graibeard,
Mkehrt, FlaBot, Moskvax, SchuminWeb, Akihabara, Mathbot, EmielMols, RexNL, Gurch, Quuxplusone, BMF81, Chobot, DVdm, Yurik-
Bot, Wavelength, X42bn6, Mukkakukaku, Daverocks, RussBot, Fabartus, Hydrargyrum, NawlinWiki, Thalter, Jpbowen, Natkeeran,
WMarsh, Brat32, Stainless steel, Zzuuzz, Lt-wiki-bot, Closedmouth, KGasso, Th1rt3en, JLaTondre, Rwwww, GrinBot~enwiki, SmackBot,
Matt73, Incnis Mrsi, TestPilot, FlashSheridan, Mgreenbe, BiT, Vizzer, Gilliam, Hmains, Skizzik, Parrothead1983, Thumperward, Xx236,
Nbarth, Javalenok, Dfletter, Rrelf, Jonatan Swift, Rene Mas, JonHarder, Radagast83, Charles Merriam, Jiddisch~enwiki, Tompsci, AlyM,
Maximum bobby, Phoenix314, Jóna Þórunn, Theme97, Derek farn, Axem Titanium, MisterPhyrePhox, Nharipra, Michael miceli, Ed-
windreillyjr, 16@r, Deepak D'Souza, Encryptio, Hans Bauer, Dreftymac, Doramjan, Avhohlov, Pattermeister, Raysonho, Makeemlighter,
IntrigueBlue, Napi, Pgr94, Cydebot, Daio~enwiki, Peterdjones, Neo85~enwiki, Vanished user vjhsduheuiui4t5hjri, Indeterminate, Rhe br,
Tawkerbot4, Christian75, Thijs!bot, Epbr123, Pjvpjv, DmitTrix, Luna Santin, Prolog, NSH001, Raw nerve, Spencer, Deadbeef, JAnDbot,
MER-C, Jens Troeger, LittleOldMe, Bongwarrior, Khaled hosny, Rajb245, TARBOT, Tedickey, Schily, Indon, Dcstimm, LorenzoB, JaGa,
Mdg149, Gwern, MartinBot, Motley Crue Rocks, KingDoorknob, Tgeairn, J.delanoy, Hans Dunkelberg, Brest, Yonidebot, Wjaguar, Ans-
mo, General Disarray (usurped), Lee.crabtree, AntiSpamBot, Raise exception, Wbrito, Pdcook, Captain Wingo, Reelrt, Tedoja, VolkovBot,
Ryan032, TXiKiBoT, BenLTitzer, Gregsinclair, CanOfWorms, LeaveSleaves, VanishedUserABC, Dmcq, Sources said, The Mysterious
Gamer, Trescott2000, SieBot, Spadge47, Holme215, Jerryobject, Pi is 3.14159, WRK, Quest for Truth, Faradayplank, Damdemi, An-
drij Kursetsky, Fishnet37222, WimdeValk, OSP Editor, Loren.wilton, Martarius, ClueBot, Excirial, Pumpmeup, M4gnum0n, Alfa.walsh,
Jotterbot, Nerylix, DanielPharos, Certes, Expertjohn, XLinkBot, Duncan, Dsimic, NjardarBot, Glane23, Tide rolls, Krano, Jarble, Arbitrar-
ily0, Legobot, Luckas-bot, Yobot, Bunnyhop11, Ptbotgourou, , AnomieBOT, 1exec1, Flewis, Materialscientist, Citation bot, Dor-
chard, ArthurBot, Xtremejames183, LilHelpa, The Firewall, MauritsBot, Xqbot, TheAMmollusc, TinucherianBot II, Ioopooi, Climber22,
Miym, RibotBOT, A Quest For Knowledge, Sunnylalit, Adrignola, Msjaiswal, GliderMaven, FrescoBot, Pinethicket, HRoestBot, Jone-
sey95, Tom.Reding, Kurtbeyer, Skyerise, December21st2012Freak, Jauhienij, Trappist the monk, ‫کاشف عقیل‬, Bencz, RjwilmsiBot,
EmausBot, Grottenolm42, BillyPreset, Bgeron, Lseongjoo, Ida Shaw, Annish33, Rcorcs, Teapeat, Methree69, ClueBot NG, Matthias-
paul, Satellizer, Shareddreams, G0gogcsc300, Wbm1058, Nbudden, Jdsalat, FredT67, Reimei, Daveatwork11, Yadu123yadu, Badsaha,
Anbu121, Tutelary, RichardMills65, Horizons 2009, KATANAGOD, Cyberbot II, ReadyKnit, JHandrop, Steamerandy, Codename Lisa,
Mogism, Makecat-bot, Jochen Burghardt, Randykitty, Himanshu1205, FrigidNinja, François Robere, Orcanaria, DavidLeighEllis, Raj-
mani94, Buntybhai, Feipu123, Melody Lavender, My name is not dave, Manish181192, Dannyruthe, Inaaaa, Rajeev26, Kharnagy, Ghfwe,
KasparBot, Matanc1, Tito Uzodinma, YQuazi, Arslan Muhannad, GreenC bot, SirFredTheDead, Fmadd, Stefano.cherubin, AugustGC,
WoyWoy, Tenoverten and Anonymous: 386
• Computer hardware Source: https://en.wikipedia.org/wiki/Computer_hardware?oldid=738084870 Contributors: Ronz, Agtx, Bearcat,
Jondel, Tea2min, Ukexpat, Xrchz, Discospinster, ArnoldReinhold, Bender235, Guy Harris, Wtmitchell, BD2412, Bruce1ee, DVdm, Russ-
Bot, Rsrikanth05, Geertivp, NawlinWiki, Jpbowen, Voidxor, David Biddulph, Rwwww, BenBurch, Yamaguchi , Gilliam, Octahedron80,
Nick Levine, Rrburke, Richard001, Kuru, Mike1901, Optakeover, Waggers, Sohebbasharat, NickW557, DumbBOT, Ebrahim, MasterNet-
Head, Magioladitis, Faizhaider, Tedickey, Thompson.matthew, Blacksqr, Jesant13, NewEnglandYankee, KylieTastic, Treisijs, Idioma-bot,
DoorsAjar, Technopat, Oxfordwang, BotKung, Andy Dingley, BloodDoll, Bentogoa, Flyer22 Reborn, Chaitanya bhima, Elassint, Frmor-
rison, Boing! said Zebedee, Takeaway, Resoru, Johnuniq, Jed 20012, Dthomsen8, Ost316, Addbot, Non-dropframe, CanadianLinuxUser,
LaaknorBot, Quercus solaris, Luckas Blade, Margin1522, Yobot, Kartano, Fraggle81, Rubinbot, Jim1138, Materialscientist, FrescoBot,
Pepper, Zilgs, Pinethicket, I dream of horses, Ftckyman, Serols, SchreyP, DixonDBot, Lotje, Jamietw, Tbhotch, Mean as custard, Emaus-
Bot, Super48paul, Dewritech, GoingBatty, Solarra, Ali.eblis1, Wikipelli, K6ka, FunkyCanute, Bollyjeff, Eeveeman, Bamyers99, Kilopi,
Junip~enwiki, ChuispastonBot, Senator2029, Rocketrod1960, Petrb, ClueBot NG, Peter James, JetBlast, Satellizer, Widr, Soulcedric,
HMSSolent, Wbm1058, DBigXray, Lowercase sigmabot, BG19bot, Brainhelljr, MKar, Northamerica1000, MusikAnimal, Fylbecatulous,
Tutelary, David.moreno72, Mikkytopfem, HueSatLum, Sathyasri, Teammm, Cyberbot II, BoxofPresents, EuroCarGT, Jethro B, Duck-
nish, Harsh 2580, Dexbot, FoCuSandLeArN, Cerabot~enwiki, TwoTwoHello, Numbermaniac, NAVEEN VENKAT, Zaldax, Frosty,
Jamesx12345, Sriharsh1234, Wywin, Anna1994~enwiki, Me, Myself, and I are Here, Reatlas, Jvpreethi, Dave Braunschweig, Simon-
stone1695, Theo’s Little Bot, Rui24114, PWNGWN, Melonkelon, Mario3D12, Sandshark23, DavidLeighEllis, Babitaarora, Melody Laven-
der, Dannyruthe, Sarahanne.1, Margcphelan, JaconaFrere, Sam Hollingsworth, Markoolio97, Shnuce, Miljan1994, Lagoset, Wwesam01,
Trackteur, Sccr4u69, JoeHebda, MonkeyWithGlasses44, Maritalaffairuk, Amortias, NianFav, KH-1, ChamithN, Techyknowsbest, Lit-
tleMissRich, Kartikmittal1995, TeaLover1996, Gladamas, Kyleb8181, Mediavalia, BoxOfChickens, JStock89, Azealia911, Avinash2000,
KasparBot, Bakosjen, BBQ, De la Marck, Oluwa2Chainz, Leevan27, CLCStudent, Sogyals429, Gkeejoey, Emotionalllama, Ghimire Udip,
Elijah Phibben, Renanel Ben Or, Invisible Guy, Jipdaskip gurugaint, RinkeyDinkeyDo, Ushkin N, Yusrirahim, Virtualkiller13, Udhaya
ukumar and Anonymous: 257
• Concurrent computing Source: https://en.wikipedia.org/wiki/Concurrent_computing?oldid=729209975 Contributors: Michael Hardy,
Pratyeka, Raul654, Phil Boswell, Aspenlogic, Bumm13, Rlcantwell, Deewiant, Ivansanchez, Lost.goblin, Ruud Koot, Toussaint, Qwertyus,
Rjwilmsi, Jameshfisher, BMF81, YurikBot, Hairy Dude, Pseudomonas, CarlHewitt, Shinmawa, Cedar101, JLaTondre, SmackBot, Vald,
TimBentley, LinguistAtLarge, SIZIK, Droll, Nbarth, MovGP0, Javalenok, JonHarder, Allan McInnes, Jpaulm, JustAnotherJoe, Rada-
gast83, Cybercobra, Rebooted, Fonebone, Aveitch, Antonielly, IronGargoyle, Jack Waugh, Iridescent, FatalError, CBM, SimenH, Torc2,
Oubiwann, Griba2010, Shardz, Maxaeran, Magioladitis, Fuchsias, Rhwawn, Kestasjk, Ormej, Gwern, STBot, EmilioB, Dindon~enwiki,
Simonscarfe, ParallelWolverine, Giardante, AHMartin, Eagleal, Sttaft, Jerryobject, JCLately, Anchor Link Bot, Cstb, Krogstadt, Adri-
anwn, Niceguyedc, M4gnum0n, Shaiguitar, XLinkBot, Addbot, Skillsmatter, Leszek Jańczuk, Jarble, Snaily, Yobot, Lublaese, 4th-otaku,
398 CHAPTER 70. X.25

AnomieBOT, Citation bot, The.malkolm, Miym, FrescoBot, Citation bot 1, Maggyero, Akim Demaille, JamieHanlon, GoingBatty, Klbrain,
Taiga234, Ipsign, VinculumMan, Kejia, Helpful Pixie Bot, Wbm1058, Cth027, Kibwen, ChrisGualtieri, Vway, Dexbot, Damian.rouson,
DougBoost, François Robere, Captain Conundrum, Andfaulkner, Ivo Balbaert, Logan.dunbar, Monkbot, Nelsonkam, Paintrick, Izkala,
RyeTheCat and Anonymous: 90
• Connection-oriented communication Source: https://en.wikipedia.org/wiki/Connection-oriented_communication?oldid=701499332
Contributors: Edward, Yrjö Kari-Koskinen, Abdull, Rich Farmbrough, Sietse Snel, Spl, W33v1l, Caballero1967, Ataub2qf, SmackBot,
JonHarder, Radagast83, Malomeat, Kvng, Marcuscalabresus, Thijs!bot, Nrubdarb, Storkk, DuncanHill, Jim.henderson, Mange01, Kbrose,
Addbot, Graham.Fountain, Quintus.bal, AnomieBOT, LilHelpa, Jradix, Erik9bot, RedBot, Sricciar, Jesse V., Kawawa.chitiya, AvicAWB,
Jflabourdette, MacStep, ClueBot NG, Pratyya Ghosh, Gvteja, Kenshibata, Someone not using his real name, Monkbot, Gsyadav1994 and
Anonymous: 28
• Connectionless communication Source: https://en.wikipedia.org/wiki/Connectionless_communication?oldid=722190177 Contributors:
Tedernst, Michael Hardy, Pnm, MartinHarper, Radiojon, Giftlite, Frencheigh, Gary D, Kevin Rector, Abdull, AFool, RJHall, Sietse
Snel, Viriditas, Guy Harris, Woohookitty, Srleffler, Zwobot, Rita.dos.santos~enwiki, SmackBot, JonHarder, Radagast83, VdHamer, Kvng,
Eastlaw, Marcuscalabresus, UncleBubba, Kgfleischmann, STBot, R'n'B, Kbrose, Jerryobject, SchreiberBike, Graham.Fountain, Legobot,
Luckas-bot, Yobot, AnomieBOT, Serols, Solarra, Bingnet, CeylonBoy, Cpt Wise, CkXVb and Anonymous: 17
• Data flow diagram Source: https://en.wikipedia.org/wiki/Data_flow_diagram?oldid=734131353 Contributors: Derek Ross, William Av-
ery, Sfdan, Michael Hardy, Ahoerstemeier, Ronz, Nichtich~enwiki, Morven, Chealer, Hadal, Tea2min, Ancheta Wis, Giftlite, Tom har-
rison, Beta m, Jpkoester1, Slowking Man, Mike Rosoft, Just zis Guy, you know?, Theshowmecanuck, Bobo192, Shenme, MaxHund,
Pearle, Hooperbloob, Nsaa, Mdd, Interiot, HenkvD, Derbeth, RJFJR, Sciurinæ, Redvers, Ae-a, JeremyA, Paulhoff, Tangotango, Woop-
too, TheMidnighters, Who, ViriiK, TeaDrinker, Akhenaten0, Hibana, Jajis, Tas50, YurikBot, Albanaco, Wavelength, Phantomsteve, J.
M., Akamad, Stephenb, Polluxian, Rsrikanth05, Desundae, Jonathan Webley, Luks, Rushyo, Jwissick, Nothlit, Tom Duff, NeilN, Attilios,
SmackBot, Fireman biff, Derek Andrews, Hydrogen Iodide, Melchoir, Aardvark92, AutumnSnow, Chairman S., Arsenaldc1988, Gilliam,
Betacommand, Ranglin, Elantrix, Master of Puppets, Dlohcierekim’s sock, EdgeOfEpsilon, Can't sleep, clown will eat me, Zvar, Allan
McInnes, Jpaulm, Fullstop, Turkystuffing, Louv, Defunkier, Alexcollins, Yaniss, Burt Harris, Antonielly, SpyMagician, Beetstra, Waggers,
Bnagra, Hu12, Fan-1967, Dead3y3, DEddy, Denistorres, JForget, Deon, Casper2k3, Cydebot, Paul Bassin, Rayray5884, After Midnight,
Omicronpersei8, Ashwanilabs, Pindakaas, Kubanczyk, Einsidler, Polymorph self, SoftwareDeveloper, AntiVandalBot, Seaphoto, Alone
Coder, Danger, Gökhan, Golgofrinchian, MER-C, Wasell, Akuyume, Casmith 789, VoABot II, JamesBWatson, Rich257, Jvhertum, Perry-
degner, Martynas Patasius, Hi mostafa, ISpyFace, DancingPenguin, MartinBot, CommonsDelinker, Lilac Soul, Tgeairn, J.delanoy, Pharaoh
of the Wizards, Trusilver, Philosopher06, Terrek, Manutd 06, Mayeco, Bhanks, Edrawing, NewEnglandYankee, SJP, Danhof, KylieTastic,
STBotD, Mado eng, Meiskam, Aivosto, Ann Stouter, Someguy1221, Seb az86556, Falcon8765, Enviroboy, Perter Nokia, SieBot, BotMul-
tichill, Harveydrone, SPACKlick, Pm master, Oxymoron83, Steven Crossin, Struway2, Denisarona, ClueBot, HowardBGolden, Naresh
ni, Uncle Milty, Ramif 47, Failure.exe, Excirial, Kjramesh, Abrech, NuclearWarfare, Michael.W.Meissner, Eternitybrkn, Dekisugi, War-
rior4321, Stirrer, ChrisHodgesUK, SoxBot III, Saminathan25, XLinkBot, Evert r, Ivan Akira, Stickee, Hubew, Moptophaha, MystBot, Ad-
dbot, McastAccount, Tcncv, Thirteenangrymen, MrOllie, DataModeler, Quantumobserver, Yobot, Ptbotgourou, TaBOT-zerem, Eemme1,
Peter Flass, AnomieBOT, DemocraticLuntz, Jim1138, Piano non troppo, Flewis, Materialscientist, Prasanga1989, Gill2008, OlYeller21, B
Jana, Shadowjams, , Georgelkf, Mark Renier, Sithbhavanandha, Wikisteve316, D.wade33, Stella2603, Camelo5399, Vince cater15,
Oneal32heat, Alongzal33, Jasonkid7, Rayalan10, I dream of horses, Abazgiri, Florendobe, Ms1244434, Gryllida, Monymirza, Yunshui,
Javierito92, Darp-a-parp, Ivanvector, Suffusion of Yellow, Reach Out to the Truth, Gf uip, EmausBot, Orphan Wiki, WikitanvirBot,
Heracles31, Cossack5, Ndkl, GoingBatty, Trideceth12, ZweiOhren, Bamyers99, Wayne Slam, L Kensington, EdoBot, Abhishekitmbm,
ClueBot NG, Widr, Sombody1234, Sjs205, AhMedRMaaty, Unmeshsphalak, Jeetucse, Kushalbiswas777, Rajdada100, Wonderingcat768,
Eyesnore, Tentinator, Ginsuloft, EdvardHang, U2fanboi, RC711, Luzanbaral, KasparBot, MageshKumaar, SinghsarvjeetIT and Anony-
mous: 520
• Data structure Source: https://en.wikipedia.org/wiki/Data_structure?oldid=736224045 Contributors: LC~enwiki, Ap, -- April, Andre
Engels, Karl E. V. Palmen, XJaM, Arvindn, Ghyll~enwiki, Michael Hardy, TakuyaMurata, Minesweeper, Ahoerstemeier, Nanshu, King-
turtle, Glenn, UserGoogol, Jiang, Edaelon, Nikola Smolenski, Dcoetzee, Chris Lundberg, Populus, Traroth, Mrjeff, Bearcat, Robbot,
Noldoaran, Craig Stuntz, Altenmann, Babbage, Mushroom, Seth Ilys, GreatWhiteNortherner, Tea2min, Giftlite, DavidCary, Esap, Jorge
Stolfi, Siroxo, Pgan002, Kjetil r, Lancekt, Jacob grace, Pale blue dot, Andreas Kaufmann, Corti, Wrp103, Bender235, MisterSheik,
Lycurgus, Shanes, Viriditas, Vortexrealm, Obradovic Goran, Helix84, Mdd, Jumbuck, Alansohn, Liao, Tablizer, Yamla, PaePae, Rey-
Brujo, Derbeth, Forderud, Mahanga, Bushytails, Mindmatrix, Carlette, Ruud Koot, Easyas12c, TreveX, Bluemoose, Abd, Palica, Man-
darax, Yoric~enwiki, Qwertyus, Koavf, Ligulem, GeorgeBills, Husky, Margosbot~enwiki, Fragglet, RexNL, Fresheneesz, Butros, Chobot,
Tas50, Banaticus, YurikBot, RobotE, Hairy Dude, Pi Delport, Mipadi, Grafen, Dmoss, Tony1, Googl, Ripper234, Closedmouth, Vicar-
ious, JLaTondre, GrinBot~enwiki, TuukkaH, SmackBot, Reedy, DCDuring, Thunderboltz, BurntSky, Gilliam, Ohnoitsjamie, EncMstr,
MalafayaBot, Nick Levine, Frap, Allan McInnes, Khukri, Ryan Roos, Sethwoodworth, Er Komandante, SashatoBot, Demicx, Soumyasch,
Antonielly, SpyMagician, Loadmaster, Noah Salzman, Mr Stephen, Alhoori, Sharcho, Caiaffa, Iridescent, CRGreathouse, Ahy1, FinalMin-
uet, Requestion, Nnp, Peterdjones, GPhilip, Pascal.Tesson, Qwyrxian, MTA~enwiki, Thadius856, AntiVandalBot, Widefox, Seaphoto,
Jirka6, Dougher, Tom 99, Lanov, MER-C, Wikilolo, Wmbolle, Magioladitis, Rhwawn, Nyq, Wwmbes, David Eppstein, User A1, Cpl Syx,
Oicumayberight, Gwern, MasterRadius, Rettetast, Lithui, Sanjay742, Rrwright, Marcin Suwalczan, Jimmytharpe, Santhy, TXiKiBoT, Os-
hwah, Eve Hall, Vipinhari, Coldfire82, BwDraco, Rozmichelle, Billinghurst, Falcon8765, Spinningspark, Spitfire8520, Haiviet~enwiki,
SieBot, Caltas, Eurooppa~enwiki, Ham Pastrami, Jerryobject, Flyer22 Reborn, Jvs, Strife911, Ramkumaran7, Nskillen, DancingPhiloso-
pher, Digisus, Tanvir Ahmmed, ClueBot, Spellsinger180, Justin W Smith, The Thing That Should Not Be, Rodhullandemu, Sundar sando,
Garyzx, Adrianwn, Abhishek.kumar.ak, Excirial, Alexbot, Erebus Morgaine, Arjayay, Morel, DumZiBoT, XLinkBot, Paushali, Pgallert,
Galzigler, Alexius08, MystBot, Dsimic, Jncraton, MrOllie, EconoPhysicist, Publichealthguru, Mdnahas, Tide rolls, ‫ماني‬, Teles, ‫سعی‬,
Legobot, Luckas-bot, Yobot, Fraggle81, AnomieBOT, DemocraticLuntz, SteelPangolin, Jim1138, Kingpin13, Materialscientist, Arthur-
Bot, Xqbot, Pur3r4ngelw, Miym, DAndC, RibotBOT, Shadowjams, Methcub, Prari, FrescoBot, Liridon, Mark Renier, Hypersonic12,
Maggyero, Rameshngbot, MertyWiki, Thompsonb24, Profvalente, FoxBot, Laurențiu Dascălu, Lotje, Bharatshettybarkur, Tbhotch, Think-
tdub, Kh31311, Vineetzone, Uriah123, DRAGON BOOSTER, EmausBot, Apoctyliptic, Dcirovic, Thecheesykid, ZéroBot, MithrandirA-
gain, EdEColbert, IGeMiNix, Mentibot, BioPupil, MainFrame, Chandraguptamaurya, Rocketrod1960, Raveendra Lakpriya, Petrb, Clue-
Bot NG, Aks1521, Widr, Danim, Jorgenev, Orzechowskid, Gmharhar, HMSSolent, Wbm1058, Walk&check, Panchobook, Richfaber,
SoniyaR, Yashykt, Cncmaster, Sallupandit, Доктор прагматик, Sgord512, Anderson, Vishnu0919, Varma rockzz, Frosty, Hernan mvs,
Forgot to put name, I am One of Many, Bereajan, Gauravxpress, Haeynzen, JaconaFrere, Gambhir.jagmeet, Richard Yin, Jrachiele, Guturu
Bhuvanamitra, TranquilHope, Iliazm, KasparBot, \wowzeryest\, ProprioMe OW, Ampsthatgoto11, Koerkra, SandeepGfG, Harvi004 and
Anonymous: 388
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 399

• De facto standard Source: https://en.wikipedia.org/wiki/De_facto_standard?oldid=730192028 Contributors: Zundark, The Anome,


Arvindn, Mjb, Frecklefoot, Nixdorf, TakuyaMurata, Dcoetzee, Xanzzibar, Beland, Bender235, Ylee, Kocio, Woohookitty, BD2412,
Red King, Matt Deres, DuLithgow, DMahalko, Pelister, SmackBot, Roma emu, Cybercobra, CIS, BlindWanderer, FatalError, Krauss,
JamesAM, Lklundin, JAnDbot, LeinaD natipaC, Jodi.a.schneider, Jim.henderson, Mange01, Rlsheehan, Fountains of Bryn Mawr, Duf-
fjohnson, Steel1943, VolkovBot, Technopat, Everything counts, Wykypydya, Haseo9999, Jimmi Hugh, Rinconsoleao, ClueBot, Mild Bill
Hiccup, DumZiBoT, JVPiano, Addbot, MagnusA.Bot, Ofiachain, Legobot II, Denispir, Crispmuncher, Rubinbot, Benhen1997, LilHelpa,
FrescoBot, Zollerriia, Dsilvia, ZéroBot, ClueBot NG, Catlemur, JordoCo, NoodleWhacks, David.moreno72, Frosty, Bumblebritches57,
Echinacin35, Babitaarora, Coltongregory, Shtafazzoli2015 and Anonymous: 43
• Distributed Component Object Model Source: https://en.wikipedia.org/wiki/Distributed_Component_Object_Model?oldid=
724508724 Contributors: The Anome, Christopher Mahan, Aldie, Nixdorf, MartinHarper, CesarB, Chuunen Baka, Catskul, RedWolf,
David Gerard, Greg McFarlane, AlistairMcMillan, Bumm13, Fintor, Chub~enwiki, Ylai, Igor Fomin, Unquietwiki, Alansohn, Vanished
user zdkjeirj3i46k567, Yogi de, MIT Trekkie, Alai, Forderud, Trevie, AndrewWatt, Toussaint, Lastorset, Vegaswikian, FlaBot, Chobot,
YurikBot, RussBot, Crumbsucker, Akhristov, Bovineone, Jpbowen, DeadEyeArrow, Lkcl, GrinBot~enwiki, SmackBot, Reedy, BurntSky,
Andy M. Wang, Bluebot, Jerome Charles Potts, Jsmethers, JonHarder, BWCNY, Warren, TiCPU, Craig Bolon, Calum MacÙisdean,
Hu12, Cydebot, Unclejedd, ColdShine, CouchTurnip, Memty Bot, RichardVeryard, Mk*, Ed, NapoliRoma, JamesBWatson, MartinBot,
Deadindeed, V.o.ivanov, PrestonH, Christian Storm, Q Chris, Jamelan, SieBot, AS, Jerryobject, Arthur Smart, ParanoidMike, Vikramrc,
Brian Geppert, TobiasPersson, DumZiBoT, Dthomsen8, Addbot, Mortense, Ghettoblaster, TheGeekHead, SpBot, Flashpoint2589, Ru-
binbot, 5nizza, Materialscientist, ArthurBot, Miym, FrescoBot, Psychlohexane, Andjoin, Araud, Dpc1962, Vatsan34, Wikiupdater1234,
EmausBot, K6ka, Donner60, EdoBot, ClueBot NG, Fylbecatulous, BattyBot, Codename Lisa, Reatlas, MTRX2010, JMDeLuca00,
Merefacade, BU RoBOT, INCANDE and Anonymous: 78
• Duplex (telecommunications) Source: https://en.wikipedia.org/wiki/Duplex_(telecommunications)?oldid=730327613 Contributors: Rjs-
tott, Linkan, Glenn, Reddi, JimTheFrog, Robbot, Sander123, DavidCary, Gloop, Bigpeteb, Mormegil, Erc, Droob, Riana, Wtshyman-
ski, Boscobiscotti, John W. Kennedy, Jasonm, Jonathan de Boyne Pollard, GregorB, Marudubshinki, Mandarax, Dpv, Jgp, Vegaswikian,
YurikBot, Borgx, RussBot, Falcon9x5, Bota47, ThinkingInBinary, Ninly, Triple333, SmackBot, Angelstorm, Aksi great, DMTagatac,
ERcheck, Chris the speller, Oli Filth, TripleF, Danielcohn, Can't sleep, clown will eat me, UU, Krich, Drphilharmonic, Kaddar, Vina-
iwbot~enwiki, Granucci, Iball, Zebbie, Mike1901, Mgiganteus1, Kvng, ALM scientist, Chetvorno, JohnTechnologist, Thijs!bot, Epbr123,
Canarris, Luna Santin, Widefox, Soren121, Harryzilber, CosineKitty, Nikbro, .anacondabot, Magioladitis, Bwhack, Rich257, Wwmbes,
Conquerist, Jim.henderson, Wylve, R'n'B, Nono64, Squiggleslash, RockMFR, Mange01, Mojodaddy, Hans Dunkelberg, L337 kybldm-
str, KylieTastic, GCFreak2, Mlewis000, Idioma-bot, VolkovBot, TXiKiBoT, Greggreggreg, Cootiequits, LeaveSleaves, Serdelll, Ar-wiki,
Scribestress, Michael Frind, SieBot, Harry-, Techman224, Svick, Anchor Link Bot, Squintanar, VgerNeedsTheInfo, Taochen, Rhododen-
drites, Promethean, SchreiberBike, Belchfire, XLinkBot, Dsimic, Albambot, Addbot, Proofreader77, Semiwiki, Luckas-bot, Ptbotgourou,
AnomieBOT, Materialscientist, TheAMmollusc, 4twenty42o, Omnipaedista, Sophus Bie, FrescoBot, Gonzosft, Pdebonte, Btilm, Xmail-
lard, EmausBot, L235, Ebrambot, Oleamm, ClueBot NG, C. Jeremy Wong, Widr, Expos4ever, Mercury907, Jimw338, KSNagra, Lone
boatman, Peter.ashenden, The Quirky Kitty, Telfordbuck, U2fanboi, Oct4th, Nyarathotep, ICT Instructor, Greenward567 and Anonymous:
153
• Dynamic Data Exchange Source: https://en.wikipedia.org/wiki/Dynamic_Data_Exchange?oldid=732496793 Contributors: TomCerul,
Michael Hardy, Unfree, Eggoeater, Jkl, Abelson, Coolcaesar, Unquietwiki, Trevie, Pol098, Ruud Koot, Gerbrant, FlaBot, Dustin Howett,
YurikBot, Red Slash, Sikon, Akhristov, JulesH, Wizard IT, Fram, SmackBot, Thumperward, PierreAnoid, Jsmethers, BWCNY, Nakon,
Warren, Soumyasch, Peyre, Hu12, Cydebot, Satori Son, Matwood, Txomin, VoABot II, Lee Vonce, SieBot, Addbot, Pmod, AnomieBOT,
Jim1138, JackieBot, HRoestBot, Woodlot, AvicBot, Redhanker, ClueBot NG, BattyBot and Anonymous: 41
• Error detection and correction Source: https://en.wikipedia.org/wiki/Error_detection_and_correction?oldid=733616795 Contributors:
Bryan Derksen, The Anome, Taral, Rjstott, Arvindn, Lir, Michael Hardy, Pnm, Eric119, Snoyes, Darkwind, Technopilgrim, Dysprosia,
Phr, Traal, Miterdale, Tomlouie, Francs2000, Robbot, Netpilot43556, Lowellian, Tea2min, Giftlite, Graeme Bartlett, DavidCary, Jao,
Sdfisher, Jorge Stolfi, Sikilai, Gracefool, Ojl, Bobblewik, Piotrus, Bob.v.R, Cihan, Bumm13, Inventio, Abdull, D6, EugeneZelenko, Jkl,
Supercoop, Vsmith, Avocade, Antaeus Feldspar, Dolda2000, ZeroOne, Spoon!, Drhex, Photonique, Beamishboy, Guy Harris, Arthena,
Ricky81682, Pouya, Caesura, Snowolf, Velella, Kenyon, Oleg Alexandrov, Joey7643, Woohookitty, Linas, Pol098, Ruud Koot, Firien,
Eyreland, Mandarax, SNIyer12, Mathbot, Nihiltres, RexNL, GringoCroco, Chobot, Reetep, YurikBot, Wavelength, RobotE, Splinter-
cellguy, Phantomsteve, Splash, Gaius Cornelius, Rsrikanth05, Tejas81, PrologFan, Zwobot, Mysid, T-rex, Doncram, DisambigBot, SDS,
SmackBot, Mitchan, Reedy, Agentbla, Swerdnaneb, Bird of paradox, Oli Filth, Dthede, Bigs slb, Babybahamut, Cantalamessa, OrphanBot,
DGerman, Radagast83, Ryan Roos, Unco, Copeland.James.H, Morten, Aboeing, Iridescent, JoeBot, Tawkerbot2, Eastlaw, Requestion,
Seven of Nine, Cryptonaut, Ring0, Awmorp, Davidhorman, Dawnseeker2000, Apantomimehorse, AntiVandalBot, Alphachimpbot, De-
flective, Em3ryguy, MER-C, Bekant, Ubunaki, Chekholko, Pudhed, Gwern, Poeloq, R'n'B, Mange01, BitJam, Rbrewer42, Extransit, Jerry,
Gmazeroff, Jdseymour, Jaidan, DavidCBryant, Mathuranathan, Funandtrvl, Vranak, Jcea, Oshwah, Trachten, WatchAndObserve, Vipin-
hari, 0nlyth3truth, AlleborgoBot, EverGreg, SieBot, Nubiatech, ImageRemovalBot, MenoBot, Martarius, ClueBot, The Thing That Should
Not Be, Izab1, Niceguyedc, WestwoodMatt, Auntof6, Sepia tone, Masterpiece2000, Anon lynx, He7d3r, Estirabot, Ykhwong, Avnermay,
BOTarate, DanielPharos, Ranjithsutari, Cerireid, DumZiBoT, The Rationalist, Dsimic, Addbot, Binary TSO, Gnorthup, Bassbonerocks,
ChenzwBot, SpBot, Teejayo, Jarble, Margin1522, Legobot, Yobot, Fraggle81, 4th-otaku, AnomieBOT, Jim1138, Cunchem, Materialsci-
entist, Flying hazard, Sixequalszero, GliderMaven, Dogposter, Nageh, Zero Thrust, Mfwitten, Pinethicket, ImageTagBot, Lotje, Suffu-
sion of Yellow, Mmeijeri, Dcirovic, Jasonanaggie, Rgray001, Werieth, Quondum, AManWithNoPlan, Music Sorter, Sbmeirow, Ready,
Donner60, Icecats11, ClueBot NG, Wcherowi, Matthiaspaul, Helpful Pixie Bot, BG19bot, MusikAnimal, GearCutter, EricEnfermero,
Codylynnmoore, David.moreno72, Mabokham, Aymankamelwiki, TwoTwoHello, Numbermaniac, Isarra (HG), Fox2k11, Nhergert, W96,
Vanamonde93, Dairhead, Gmk7, Monkbot, Narky Blert, Marine.luanqi, When Other Legends Are Forgotten, Haikal nizam, Kevisetuo,
Jb12345678910111213, Lusamba Gode Katalay and Anonymous: 237
• File Transfer Protocol Source: https://en.wikipedia.org/wiki/File_Transfer_Protocol?oldid=733892223 Contributors: Brion VIBBER,
Vicki Rosenzweig, Wesley, Bryan Derksen, The Anome, Stephen Gilbert, PierreAbbat, Paul~enwiki, Deb, SJK, Ben-Zin~enwiki, Mjb,
Stevertigo, D, Nixdorf, Drjan, Ixfd64, Alfio, Card~enwiki, Ahoerstemeier, Cyp, Mac, Ronz, Nanshu, Alvaro, Jll, Glenn, Netsnipe, Palfrey,
Samuel~enwiki, Tomv, Arteitle, Jengod, JidGom, Htaccess, Charles Matthews, Ww, Jay, Wik, Jake Nelson, E23~enwiki, Furrykef, Gren-
delkhan, Wernher, Bevo, Gamera2, Joy, Bloodshedder, Robbot, Brent Gulanowski, Fredrik, PBS, Stsz~enwiki, Vespristiano, RedWolf,
Psychonaut, Nurg, Babbage, Kwi, Mendalus~enwiki, UtherSRG, Wikibot, Wereon, Borislav, Jleedev, Tea2min, Alan Liefting, Giftlite,
ShaunMacPherson, Henry Flower, Joconnor, Jdavidb, Taak, Tagishsimon, Mooli, Gadfium, Mu, Schweini, Alexf, Knutux, Beland, Orbiter,
Kiteinthewind, Gauss, Karl-Henner, Austin Hair, BeakerK44, Abdull, Bluemask, Ta bu shi da yu, Perey, JTN, Discospinster, Brandon-
rhodes, Rich Farmbrough, Pak21, Mike Gleason, Mumonkan, Autiger, Abelson, Bender235, ESkog, CanisRufus, PhilHibbs, Richardoz, Si-
400 CHAPTER 70. X.25

etse Snel, RoyBoy, Femto, Rpresser, Bobo192, Stesmo, Boelthorn, John Vandenberg, Cmdrjameson, R. S. Shaw, Unquietwiki, Mikel Ward,
Brutulf, Waltervulej, Charonn0, Bawolff, Blinken, Pasousa~enwiki, Sleske, Minghong, Towel401, Obradovic Goran, Wrs1864, Sam Korn,
JesseHogan, Ekevu, Jumbuck, Samatva, Alansohn, Guy Harris, Arthena, CyberSkull, Synt4x, Riana, Sade, Lectonar, Wtmitchell, Velella,
Kdau, Cburnett, Stephan Leeds, Suruena, RJFJR, Henry W. Schmitt, W7KyzmJt, Pauli133, Btornado, Manivannan, Saxifrage, Sam Vimes,
Mindmatrix, Josephf, Niektory, Splintax, Robert K S, ^demon, Eyreland, Pasteler0, Prashanthns, Turnstep, Gerbrant, Marudubshinki,
RichardWeiss, Deltabeignet, Qwertyus, Edjackiel, Rjwilmsi, Demian12358, Koavf, KamasamaK, ElKevbo, Aapo Laitinen, Oo64eva,
FlaBot, Klausner, Windchaser, Spaceman85, Woozle, Ewlyahoocom, Gurch, Ghen, ChongDae, Magbatz, Fresheneesz, Carrionluggage,
GreyCat, David H Braun (1964), Chobot, TkGy, Prikryl, Mhking, Bgwhite, Martin Hinks, Gwernol, YurikBot, Borgx, Angus Lepper,
Logixoul, Arado, Me and, Robert A West, Gardar Rurak, RadioFan, Hydrargyrum, Akamad, Barefootguru, Wimt, NawlinWiki, BigCow,
Grafen, Hkdennis2k, Długosz, Nick, Retired username, Yoasif, Mikeblas, Off!, Natkeeran, Yozh~enwiki, Bota47, J. Nguyen, Saishg,
BazookaJoe, Rwxrwxrwx, ElectricSheep, EAderhold, Zzuuzz, Lt-wiki-bot, Closedmouth, Antini, Garion96, Allens, Cotoco, Shepard,
GrinBot~enwiki, AndrewWTaylor, SmackBot, Classicfilms, Ulterior19802005, KAtremer, Herostratus, KnowledgeOfSelf, Praetor alpha,
KocjoBot~enwiki, EarthBoundX5, Mscuthbert, Alksub, Rojomoke, Pmkpmk, Jwestbrook, Gilliam, Skizzik, Chaojoker, Marc Kupper, An-
war saadat, Coinchon, Thom2002, Jprg1966, Thumperward, MalafayaBot, OrangeDog, Silly rabbit, Deli nk, Octahedron80, Letdorf, Met-
alim, DHN-bot~enwiki, JEG, Gracenotes, Newmanbe, Can't sleep, clown will eat me, ReferenceMan, Frap, Alphathon, DéRahier, OSborn,
Rrburke, CorbinSimpson, Huon, Khoikhoi, DavidSol, NoIdeaNick, Ianmacm, Shadow1, Warren, Fagstein, Mwtoews, Henning Makholm,
Ihatetoregister, Antipode, Vina-iwbot~enwiki, GameKeeper, SashatoBot, Tecccher, Fred Foobar, Ksn, Breno, Shadowlynk, IronGargoyle,
Ben Moore, 16@r, Magicmat, Erwin, Ehheh, Optakeover, Waggers, Iridescent, Peter M Dodge, Sjb72, Beno1000, Shmget, Insanitor, Iron-
JohnSr, Tawkerbot2, FatalError, HDCase, Allaunjsilverfox, Unionhawk, Triage, Bumcheekcity, Kgentryjr, Lazulilasher, MeekMark, Dan
Fuhry, Equendil, Hamster2.0, Phatom87, Cydebot, Wadkdc, UncleBubba, Anonymi, ST47, Rgrof, Doug Weller, DumbBOT, Chrislk02,
Btharper1221, Thijs!bot, Epbr123, Jensamoller, Siidheesh, James086, Davidhorman, Dawnseeker2000, AlefZet, Escarbot, I already forgot,
SOBarber, AntiVandalBot, Chicgeek, Daimanta, Wtflash, Joe Schmedley, Leuqarte, JAnDbot, MER-C, Austinmurphy, Kirrages, Raanoo,
Enjoi4586, Doom777, Bongwarrior, VoABot II, Tedickey, Angryninja, Vssun, DerHexer, Saberclaw, Ftiercel, Gwern, Stephenchou0722,
MartinBot, [email protected], Rettetast, Phillip.calvin, TinaSDCE, Tgeairn, J.delanoy, Mange01, Numbo3, Nbau-
man, Macaldo, Jaymac407, Acalamari, Andareed, Dispenser, LordAnubisBOT, Thomas Larsen, Jameswebuk, AntiSpamBot, Nomoreink,
Rolandelferink, Deepak garg147, Useight, VolkovBot, SamMichaels, TXiKiBoT, A4bot, Naveenpf, Lucamauri, Seraphim, David.bar, Ko-
vianyo, LeaveSleaves, Caiguanhao, Complex (de), Michaeldsuarez, Synthebot, Monty845, Roybristow, AlleborgoBot, Logan, EmxBot,
Matagascar, Kbrose, RShohat, Yngvarr, SieBot, Nubiatech, Online backup, Smithderek2000, Plinkit, Eleclion, Crm123, 1234mike1234,
Orthorhombic, Vulcan’s Forge, Pxma, Flyer22 Reborn, Radon210, Coroberti, Wolfcm, Chridd, Oxymoron83, Virdiq, WarpEnterprises,
Ks0stm, Alex.muller, Taggard, Anchor Link Bot, Vanished User 8902317830, The sunder king, N0nr3s, ClueBot, Wikievil666, The
Thing That Should Not Be, Jesser07, Jan1nad, Ldueck, Raf1qu3, ChandlerMapBot, Excirial, Gnome de plume, Skittels, PixelBot, Abrech,
Muhandes, Vivio Testarossa, Cenarium, Airada, Acabashi, Aitias, Footballfan190, Mr. Gerbear, XLinkBot, Ceriak, Wordwizz, Feinoha,
Leoniana, Little Mountain 5, SilvonenBot, Ottomation, Muffat, Good Olfactory, Thecarpy, Some jerk on the Internet, Mabdul, Jgeer,
PJonDevelopment, Xiainx, Elsendero, TutterMouse, Tedmund, MrOllie, CarsracBot, Simeon24601, Dky89, Dmemt, Bfigura’s puppy,
OlEnglish, Xjan, Legobot, PlankBot, Luckas-bot, Yobot, Senator Palpatine, Fraggle81, Old Death, Mmxx, Offix, AnomieBOT, Rubin-
bot, Jim1138, Richm711, Mdfarock, Piano non troppo, Flewis, Materialscientist, The Firewall, Xqbot, Nishantjr, Addihockey10, Capri-
corn42, TechBot, Sharhalakis, Martnym, Ched, Nordrassil, GrouchoBot, Xusete18, RibotBOT, Amaury, MLauba, Hikki drafts copy23,
FrescoBot, Managed Phil, Krj373, Mfwitten, BenzolBot, HRoestBot, KlfJoat, Rantzen, Calmer Waters, PETAR1, Charles.mjhm, Recon-
sider the static, Merlion444, Robvanvee, Mawinme, Trappist the monk, Khaotika, Lotje, Dinamik-bot, Vrenator, Ygz79, Sarahmann2009,
Fastilysock, Suffusion of Yellow, Some Wiki Editor, Bricaniwi, DARTH SIDIOUS 2, Onel5969, Ksb1392, 212.113.674 ftp, EmausBot,
Mikkik, Shadowmaster1969, Racerx11, RA0808, Eyedotfilms, Mick09887, , Hops Splurt, ValC, Sheeana, Richard asr, Josve05a,
Playdagame6991, Crashuploads, Lakshmeesha NR, Rajeev1486, Felixkasza, Wingman4l7, Sbmeirow, TyA, Duke.tim, Joemark2010, Eu-
anK92, Icyganov, Donner60, Danwing, Wipsenade, Bomazi, ChuispastonBot, Mlorer, 28bot, Ycyganov, Petrb, Mikhail Ryazanov, Clue-
Bot NG, Pantergraph, Nimiew, Poshtkohi, Morgankevinj huggle, BroderickAU, Prasantborn1990, O.Koslowski, Peedeeramone, Spel-
Punc-Gram, Masssly, Widr, Luke145, GGink, Sabatour 3, BG19bot, Yevstifeyev, Wikivkr, Chmarkine, WikiHannibal, Menna Elsawaf,
Proxyma, EricEnfermero, Captainjackfromgermany, Pratyya Ghosh, Mbk-4a, Khazar2, Codename Lisa, Makecat-bot, TwoTwoHello,
Frosty, Graphium, Liweinan0423, DBhavsar709, Jamesmcmahon0, ArmbrustBot, Thevideodrome, Acc12345acc, Ginsuloft, Zzeliboba,
Quenhitran, 32RB17, Timgenren, Noelfurlong22, ECKotes, ChamithN, Crystallizedcarbon, Faraz Ahmed46, Husburry, Kvtsj, ALIMJ85,
SNov104, Oscarrdg, Coldren.shannon, RaduMirceaAndrei, Castaglia, Maxbrown24, Jimmy Olano and Anonymous: 860

• Finite-state machine Source: https://en.wikipedia.org/wiki/Finite-state_machine?oldid=736131265 Contributors: Damian Yerrick, Ax-


elBoldt, Mav, Jeronimo, Jan Hidders, Khendon, Arvindn, Ray Van De Walker, LionKimbro, Heron, Hirzel, Michael Hardy, Pnm, Takuya-
Murata, Ee79, Looxix~enwiki, Snoyes, Salsa Shark, Aimaz, Kimiko, Evercat, Jonik, GRAHAMUK, CAkira, Charles Matthews, Timwi,
Dcoetzee, Mac c, Dysprosia, Colin Marquardt, Radiojon, Furrykef, Fvw, Raul654, Nosebud, Twang, Phil Boswell, Robbot, Jaredwf,
Fredrik, Stewartadcock, JesseW, Wikibot, Borislav, EvanED, Nick Pisarro, Jr., Tea2min, Giftlite, DavidCary, Icenine0, Michael De-
vore, Joseph Dwayne, Neilc, Lukman Sasmita, Geni, Zeimusu, MarkSweep, Maximaximax, Simoneau, Alotau, Urhixidur, Paulbmann,
RevRagnarok, D6, Mormegil, Poccil, GoodStuff, Discospinster, Rich Farmbrough, Mecanismo, Gdementen, Kakesson, ZeroOne, S.K.,
Art LaPella, Skinkie~enwiki, Vdm, Jonsafari, BlueNovember, Mdd, HasharBot~enwiki, SvendTofte, Joris Gillis, Wtshymanski, Knowl-
edge Seeker, Danhash, Gpvos, IMeowbot, Thowa, Oleg Alexandrov, Linas, LOL, Bkkbrad, Robert K S, Ruud Koot, Dzordzm, Male1979,
Teemu Leisti, Calréfa Wéná, Gwil, Graham87, Qwertyus, Snafflekid, Drebs~enwiki, Rjwilmsi, KamasamaK, Armandeh, Ademkader,
Bensin, Fred Bradstadt, Mathbot, EnDumEn, Riki, Fresheneesz, Sperxios, Bmicomp, Kri, Anrie Nord, YurikBot, Hairy Dude, Berg-
sten, Gaius Cornelius, Rsrikanth05, Jaxl, Thsgrn, ArmadniGeneral, Jpbowen, Darkmeerkat, Bota47, Daghall, Saric, Schultkl, Cedar101,
Chrishmt0423, Bruyninc~enwiki, Cmglee, AndersL, SmackBot, RDBury, Dr. Bruce W. Watson, Adam majewski, Avengerx, Reedy,
0x6adb015, Stepa, Eskimbot, BiT, Amux, Rrohbeck, Thumperward, Villarinho, Waynebe, Jerome Charles Potts, Nbarth, Javalenok,
Frap, OrphanBot, Prmacn, Easwarno1, Nakon, RaCha'ar, ILike2BeAnonymous, A5b, Andrei Stroe, Petr Kopač, Wvbailey, Attys, Mo-
quist, Sir Nicholas de Mimsy-Porpington, Antonielly, Nateman1352, Waggers, Kvng, SheldonN, Peets, Jazzcello, Courcelles, Ellin Beltz,
Chetvorno, George100, Davidbspalding, Sakurambo, CmdrObot, Amalas, CBM, Linus M., Sanspeur, Pj 1974, DomPrice, Cydebot, Sam
Staton, Dantiston, Stormy56, Skittleys, Hervegirod, Marek69, HalHal, Stannered, WinBot, Dough~enwiki, Vantelimus, Hermel, Hamaryns,
MagiMaster, JAnDbot, MattBan, JamesBWatson, Tedickey, Usien6, A3nm, David Eppstein, Martynas Patasius, Oravec, Mcarone, Glrx,
CommonsDelinker, J.delanoy, Maurice Carbonaro, Reedy Bot, Am117, Jeepday, Adamd1008, Ilya Voyager, Ashishpurna, Hotfeba, TXiK-
iBoT, Ianalis, Don4of4, BotKung, Wiae, Eubulides, Xeno8, Vector Potential, SieBot, Brech~enwiki, Enochhwang, ‫ترجمان‬05, Martarius,
DFRussia, Justin W Smith, Adrianwn, Fake0Name, BlueAmethyst, Mynameisnotpj, Mhhwang2002, Thingg, DerBorg, XLinkBot, Pgallert,
SilvonenBot, MystBot, Addbot, OmgItsTheSmartGuy, SpellingBot, MrOllie, Download, Ollydbg, Meseptiamus, AnnaFrance, LinkFA-Bot,
Conflikq, GregHolmberg, Legobot, Yobot, JackPotte, Rdancer, Mirosamek, AnomieBOT, 1exec1, Gargan26, Rememberfun, M!uqomzXb,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 401

Materialscientist, Citation bot, Deleron, ArthurBot, Xqbot, Johann Peter Dirichlet, Matttoothman, LordArtemis, Intelliw, GliderMaven,
FrescoBot, Mezmeriseu, Gautamsomani, Adlerbot, Evgeny.berkovich, Skulldyvan, Lotje, Ybungalobill, Perhelion, TheArguer, Ripchip
Bot, Ashutosh y0078, Mcarone1, EmausBot, John of Reading, Bnogent, Zahnradzacken, AvicBot, Zarboublian, Richard.astbury, Tijfo098,
ClueBot NG, Gilderien, Helpful Pixie Bot, Remococco, Dh1509, Manu31415, MrBill3, Kishan247, BattyBot, Dinesh.lei, Jimw338, Uno
b4, Dexbot, Deltahedron, Makecat-bot, Jochen Burghardt, , Mark viking, Siddhars, Asierog, Jodosma, A god amongst men, Lightrace,
Quenhitran, Upkarsh, Mrcheeseface2, Guidotex, Monkbot, Χρυσάνθη Λυκούση, Tapanbohra1911, Govardhanhegde, Be555810, JMP
EAX, Crystallizedcarbon, Some Gadget Geek, Espanolers, Rogalskiy.a, Baking Soda, Jhazelden, GreenC bot, ToffeeC and Anonymous:
355
• General Inter-ORB Protocol Source: https://en.wikipedia.org/wiki/General_Inter-ORB_Protocol?oldid=735488959 Contributors: SJK,
Conti, Bearcat, (:Julien:), Thv, Fleminra, Jfdwolff, Tagishsimon, Rich Farmbrough, EbenVisher, YurikBot, Hairy Dude, Anog, Gdawirs,
Basil.bourque, Gjs238, Schmiteye, Audriusa, Luís Felipe Braga, Cydebot, BenedictPoole, Swpb, STBot, Katharineamy, VolkovBot, Jame-
lan, Wing gundam, MenoBot, Alksentrs, Kausikghatak, Addbot, Yobot, AnomieBOT, Dinamik-bot, Dwvisser, ClueBot NG, BG19bot,
The Anonymouse and Anonymous: 25
• HTML Source: https://en.wikipedia.org/wiki/HTML?oldid=738022031 Contributors: Lee Daniel Crocker, Brion VIBBER, Uriyan, Zun-
dark, The Anome, Koyaanis Qatsi, JeLuF, Gianfranco, SJK, William Avery, Mjb, Hirzel, Patrick, Michael Hardy, Chris-martin, Fred
Bauder, Voidvector, Tannin, Wapcaplet, Dramatic, Ixfd64, Cyde, Eurleif, Arthur3030, Skysmith, Eric119, Alfio, Tregoweth, CesarB,
Ahoerstemeier, HarmonicSphere, Haakon, Mac, Ronz, Jpatokal, Den fjättrade ankan~enwiki, Александър, Llull, Andres, Palfrey, Rl,
Ghewgill, Mydogategodshat, Hashar, Okome~enwiki, PatriceNeff, Crissov, Jay, Fuzheado, Rednblu, Traal, Haukurth, Tpbradbury, Fur-
rykef, Alexfiles, Mattworld, Omegatron, Traroth, Joy, Jens Meiert, Jusjih, Guppy, Jeffq, Shantavira, Rogper~enwiki, RickBeton, Saqib
(usurped)~enwiki, Robbot, Chealer, Noldoaran, Pigsonthewing, Fredrik, RedWolf, Moondyne, Psychonaut, Lowellian, Costello, Postdlf,
Rholton, Rursus, Texture, Caknuck, Hadal, Profoss, Ledgerbob, Jor, Fab, Tea2min, David Gerard, Enochlau, Dave6, Giftlite, Philwiki,
Smjg, DocWatson42, SamB, Kerttie, Andy, Inter, Lethe, Herbee, Bradeos Graphon, Everyking, Markus Kuhn, Filceolaire, Rick Block,
LLarson, Lurker, Guanaco, Tom-, Mboverload, Siroxo, AlistairMcMillan, Horatio, Richard cocks, Neilc, Chowbok, DocSigma, Wasabie,
Antandrus, Beland, OverlordQ, Oneiros, Mzajac, OwenBlacker, Fuper, Mysidia, QuiTeVexat, MishaChan, Anirvan, Kelson, Urhixidur,
Burschik, Joyous!, Goobergunch, Jh51681, Karl Dickman, BeakerK44, Mmj, Eliazar, Liquid Flash, Abdull, Zondor, Trevor MacInnis,
Canterbury Tail, Kate, Bluemask, DavidL (usurped), Mike Rosoft, Brianjd, D6, RossPatterson, Discospinster, Rich Farmbrough, Gua-
nabot, Mecanismo, Timsabin, YUL89YYZ, MeltBanana, Mani1, Pavel Vozenilek, Paul August, Blade Hirato~enwiki, Bender235, Ze-
roOne, Zy26, Andrejj, Acq3, Kjoonlee, Breon, Jonathanischoice, Rich13, Plugwash, Violetriga, Bdk, Danakil, Cap'n Refsmmat, Zeno-
hockey, RoyBoy, Triona, Leif, Coolcaesar, Bobo192, Nigelj, Whosyourjudas, Smalljim, Shenme, SpeedyGonsales, Vystrix Nexoth, Un-
known W. Brackets, Minghong, Wrs1864, Maebmij, Sean Kelly, Nsaa, Lysdexia, Jumbuck, Zachlipton, Alansohn, Gary, Mduvekot,
Rand~enwiki, Sheehan, Interiot, CyberSkull, Jeltz, NSK, Riana, Sade, Kurt Shaped Box, Kocio, Redfarmer, Mrholybrain, Hu, Llbbl
(usurped), Jmh~enwiki, Velella, TheRealFennShysa, Saga City, Vcelloho, Josh3736, RainbowOfLight, Sciurinæ, Mikeo, GeoffPurchase,
Bsadowski1, A brisson, Versageek, Mattbrundage, Redvers, Netkinetic, Trustle, Dan100, Html~enwiki, Kbolino, DanielVonEhren, Alfrin,
Simetrical, Bushytails, OwenX, Mindmatrix, Georgia guy, Ataru, Camw, LOL, Decrease789, Uncle G, Benbest, Scjessey, NeoChaosX,
Ruud Koot, Dodiad, Jeff3000, SergeiRichard, Damicatz, Dionyziz, Goystein~enwiki, Eyreland, Toussaint, Xiong Chiamiov, TNLNYC,
Palica, Rufous, Tslocum, Qwertyus, Galwhaa, David Levy, FreplySpang, CarbonUnit, KramarDanIkabu, Reisio, Sjö, Jorunn, Rjwilmsi,
P3Pp3r, Koavf, China Crisis, Ikh, Amire80, JoshuacUK, Tangotango, Pudleek, Salix alba, MZMcBride, Jollybengali, CQJ, R.e.b., N-Man,
Bubba73, Afterwriting, Williamborg, Aapo Laitinen, Sango123, Florihupf, Dionyseus, J2000ca, FlaBot, Ian Pitchford, RobertG, Heycam,
Crazycomputers, Nivix, RexNL, Gurch, Alexjohnc3, TheDJ, Intgr, Goeagles4321, Terrx, Jesse0986, Tysto, Joshebosh, Chobot, DVdm,
Bgwhite, WriterHound, Gwernol, Cornellrockey, Shervinafshar, The Rambling Man, Theymos, YurikBot, Wavelength, Klingoncowboy4,
ThunderPeel2001, SpikeJones, Angus Lepper, RobotE, Sceptre, Poldi~enwiki, Todd Vierling, Hairy Dude, Gyre, Charles Gaudette, Fayte,
Phantomsteve, Michael Slone, Fabartus, Spainhour, SpuriousQ, Matt Fitzpatrick, Hydrargyrum, Stephenb, Gaius Cornelius, Rsrikanth05,
Pseudomonas, Bovineone, Bullzeye, NawlinWiki, ENeville, Wiki alf, Mipadi, UCaetano, Bachrach44, Test-tools~enwiki, Grafen, Nutike-
taiel, Irishguy, Saoshyant, Aaron Brenneman, Raven4x4x, Iancarter, Lomn, MySchizoBuddy, Zwobot, Snarius, Brat32, Av2917, Dead-
EyeArrow, Bota47, Kewp, Snareklutz, Szhaider, Alpha 4615, Wknight94, Ms2ger, Mholland, Sumanthk, Tribaal, Lt-wiki-bot, Nacimota,
Ageekgal, Closedmouth, Mike Selinker, Josh3580, GraemeL, Fram, JLaTondre, Dhavalhirdhav, ArielGold, Sitegod, Caballero1967, F.
Cosoleto, David Biddulph, Rwellington, RunOrDie, Suburbanslice, Katieh5584, Purple Sheep, NeilN, Minkus, Rwwww, KNHaw, DVD
R W, Sepsis13, Squirrel Boy, Luk, Veinor, BonsaiViking, SmackBot, MattieTK, Alan Pascoe, Pbb, Ashenai, Classicfilms, Moeron, Rtc,
Incnis Mrsi, KnowledgeOfSelf, Unyoyega, Pgk, C.Fred, Bazza 7, KocjoBot~enwiki, Jtneill, WookieInHeat, ElDakio, Frymaster, Brossow,
WildElf, Canthusus, Scott Paeth, Alsandro, Alex earlier account, Zzymyn, Yamaguchi , Aksi great, King Bob324, Gilliam, Ohnoit-
sjamie, Skizzik, Chaojoker, Qtoktok, PJTraill, Fetofs, Amatulic, AstareGod, Chris the speller, Jamie C, Robert Wellock, CrookedAs-
terisk, Master of Puppets, BabuBhatt, Oli Filth, EncMstr, King Arthur6687, James Fryer, Doug Patriarche, SchfiftyThree, Jerome Charles
Potts, Nbarth, Vbigdeli, DHN-bot~enwiki, Methnor, Konstable, YggY, Ado, Zsinj, Dethme0w, Tsca.bot, Can't sleep, clown will eat
me, Shalom Yechiel, Tamfang, Frap, Onorem, Tim Pierce, Jennica, Nixeagle, TheKMan, Rrburke, Bogtha, GeorgeMoney, Addshore,
RedHillian, Midnightcomm, UU, Answerthis, Mgearfan, Cybercobra, Nibuod, Makemi, Nakon, Teehee123, EVula, RolandR, Shadow1,
Mistress Selina Kyle, Lcarscad, Markymarkmagic, Taare, Drc79, Buidinhthiem, Evlekis, Bart v M, MOO, DKEdwards, Kukini, Homo
sapiens, The undertow, SashatoBot, Dave314159, Rory096, Iball, Xerocs, Zahid Abdassabur, Sunroof, Kuru, Ergative rlt, Euchiasmus, Si-
monkoldyk, Cadderly, Ksn, NeantHumain, JorisvS, Dumarest, Minna Sora no Shita, CaptainVindaloo, BioTube, Tbc42, Tasc, JRS124c41,
Waggers, Dammit, Jgrahn, Ryulong, MrDolomite, GorillazFanAdam, Rory O'Kane, Xihix, Hetar, BranStark, DouglasCalvert, Irides-
cent, Arntuuri, Michaelbusch, Dreftymac, Theone00, Xaagkx, Wjejskenewr, Sander Säde, J Di, Huo Ma Ke, Igoldste, Blehfu, Rangi42,
Adambiswanger1, Courcelles, Moocowisi, Tawkerbot2, Daniel5127, Jasrocks, Conrad.Irwin, Amniarix, SkyWalker, JForget, Sakurambo,
Hetzer, Unixguy, CmdrObot, Code E, Porterjoh, Mattbr, Makeemlighter, Gmd588, Ruslik0, KnightLago, Maxiom, Jaxad0127, Leu-
john, The gergster, Madda, Kennyluck, Cydebot, Krauss, MC10, Vanished user vjhsduheuiui4t5hjri, Gogo Dodo, SetiHitchHiker, Baz-
zargh, Studerby, Hsivonen, Msreeharsha, Tawkerbot4, Clovis Sangrail, Shirulashem, Codetiger, Torc2, DumbBOT, Kozuch, Ward3001,
Neustradamus, Omicronpersei8, JodyB, MicahElliott, Geekosaurus, UberScienceNerd, Saintrain, Timbl, Epbr123, Bot-maru, Wermlands-
data, Monkle, Mbell, Dasani, Hervegirod, Kablammo, Ucanlookitup, Mojo Hand, Trevyn, Marek69, John254, A3RO, Nezzadar, Davi-
dLeeLambert, Lowercase, Jgr 94, Dfrg.msc, NigelR, TFunk, CharlotteWebb, Tonyseeker, Cplot, Natalie Erin, Folic Acid, Escarbot, I
already forgot, Martinvie, Mentifisto, Sidasta, AntiVandalBot, Chicgeek, Majorly, Luna Santin, Guy Macon, Mvjs, Seaphoto, Chacor,
QuiteUnusual, Antique Rose, Prolog, Jj137, TexMurphy, LibLord, Farosdaughter, Gdo01, Zedla, DennisWithem, Wolf grey, Romes-
tar, Carewolf, Jordan Rothstein, Myanw, Static17, Minun, Gökhan, JonathanCross, Golgofrinchian, Swamilive, JAnDbot, Durrantm,
Leuko, Barek, MER-C, The Transhumanist, Moneysaver67, Andonic, Roleplayer, Faerycircle, Snowolfd4, PhilKnight, Doctorhawkes,
LittleOldMe, Bencherlite, Typochimp, CrizCraig, Penubag, Magioladitis, Connormah, Pedro, Bongwarrior, VoABot II, Kuyabribri, JNW,
Kakomu, Mbc362, Swpb, Think outside the box, A10brown, Janadore, Tedickey, Rami R, Wileyc427, Jatkins, Skew-t, Twsx, JPG-GR,
402 CHAPTER 70. X.25

Cic, Aka042, Recurring dreams, Diegosolo, SparrowsWing, Dsolovay, Animum, Adrian J. Hunter, Wwmbes, Allstarecho, Just James,
EstebanF, Glen, DerHexer, Esanchez7587, Patstuart, -bilal92-, Bitbit, Xhosan, 0612, Daviecat, MartinBot, PAK Man, Pádraig Coogan,
ShaunL, Mattjs, JayJayKay~enwiki, Rettetast, Speck-Made, Faceboyjim, Ramesh Chandra, Tgeairn, An7drew, J.delanoy, Captain panda,
Pharaoh of the Wizards, Trusilver, Svetovid, Think777, Pursey, Jesant13, TwigsterX, Ginsengbomb, Eliz81, Extransit, Mianbao~enwiki,
NerdyNSK, Satchy, Vanished user 342562, Darth Mike, Laurusnobilis, Cpiral, SharkD, JAKEhp55, Dispenser, Arronax50, Pikminlover,
Tannkremen, TomyDuby, McSly, Lordtopcat, Dabomb45, Tbisonman123, AntiSpamBot, Xmonicleman, Plasticup, LtEarth, TomasBat,
NewEnglandYankee, Nwbeeson, Aervanath, Gabrielhobro, Master shepherd, Xander756, Ljgua124, Potatoswatter, Smitty, KylieTastic,
Sarmenhb, Cometstyles, Lakeishikawa, Remember the dot, ACBest, DorganBot, Nphase, Niceguydave, Sarregouset, Kvdveer, Martin-
Rinehart, Bonadea, Izno, Howcome, Squids and Chips, Idioma-bot, Funandtrvl, Joeinwap, Wikieditor06, Lights, X!, Chinneeb, VolkovBot,
Jorioux, Zcorpan, Xyzu, Jeff G., Indubitably, Blackdenimgumby, Rharding13, Lear’s Fool, Cenet47, Philip Trueman, TXiKiBoT, Osh-
wah, Zidonuke, Vanished user 98wiejfno34tijsfoiwefjlok5y, Vipinhari, Rei-bot, Wikidemon, HarryAlffa, Drestros power, Arnon Chaffin,
ScriptingMaster, Crazyhead4, Rick Jelliffe, Anna Lincoln, Lradrama, Ontoraul, V.v.vinaybabu, JhsBot, Leafyplant, BwDraco, Hamitr,
Drappel, DieBuche, IsaacGS, Cremepuff222, David Condrey, NetOracle, Csdorman, Liberal Classic, Fenring, Maxim, Opgfss, Lam-
CarLL71, Madhero88, Odinjobs, Andy Dingley, Enigmaman, Xieqi200, Rougieux, Meters, Synthebot, Falcon8765, Cole1234567890,
Alone363, MelanieBeth, Drake2007, BlackCab, LittleBenW, Logan, Yelling Bird, Legoktm, Zotag, Austriacus, Tbg connor, Demmy,
Kbrose, The Random Editor, Illinoisavonlady, SieBot, Coffee, Fsminc, Scarian, Nestea Zen, PanagosTheOther, Lordofnerds, Dawn Bard,
Caltas, Eagleal, RJaguar3, Yintan, Gfonetobe, Vanished user 82345ijgeke4tg, Purbo T, Purplepickle10, Xenophon777, Formerly the IP-
Address 24.22.227.53, Bentogoa, Happysailor, Iitim4two, Chridd, JSpung, Allmightyduck, Oxymoron83, Antonio Lopez, Lightmouse,
Tombomp, SH84, KathrynLybarger, BenoniBot~enwiki, SarvenCapadisli, OKBot, Hornyman121, WOFall, Spitfire19, XU-engineer, Sim-
plexplus, Mojoworker, StaticGull, Rcairnsjr, Sen Mon, Adi necromancer, Hostime, Jacob.jose, Mygerardromance, Lianmei, Denisarona,
Escape Orbit, Vonones, VanishedUser sdu9aya9fs787sads, WikipedianMarlith, Loren.wilton, ClueBot, Hightilidie, LAX, Binksternet, The
Thing That Should Not Be, Dmooresatx, VsBot, Neelchauhan, Jan1nad, Donovans, Lawrence Cohen, Quinxorin, Enthusiast01, Supertouch,
Taroaldo, Pomadgw, Freebullets, Squash444, Will052690, LukeShu, AntiSlice, Lantay77, Timberframe, Shonda13, Ryoutou, Attlas, Blan-
chardb, Soc5555, Isoft isoft, Μάριος Ζηντίλης, Manishearth, Popadooodle7, Robert Skyhawk, Excirial, Yaniv p, Lochsley, Gtachiki,
Gwguffey, MorrisRob, Vivio Testarossa, Rhododendrites, Brews ohare, NuclearWarfare, Cenarium, Wwwqwerty, Jotterbot, Leadv0cal,
Dekisugi, Tempmj, Mikaey, Oswald07, RuneScapez, MadMax45, Bald Zebra, Chiman9321, Thingg, Aitias, 7DaysForgotten, Boxing245,
Egmontaz, Party, Akira-otomo, Braddunbar, Tommyqiscow, DumZiBoT, Mrxwindows, Hogman500, Joeyman111, XLinkBot, Fastily,
Ultramince, Spitfire, Gwandoya, RkOrton, Rror, Feinoha, OsoLeon, 007spyguy7, James-Y2J-fan, Nepenthes, WillOakland, Avoided, Bur-
ket, Sujgfjfgjhgjgj, Mitch Ames, WikHead, Cmr08, Jswarchinghimer, Alexius08, Noctibus, RP459, Subversive.sound, HarlandQPitt,
Vianello, Thatguyflint, Addbot, Xp54321, Gamekid276, Ifinditfunny, Willking1979, Some jerk on the Internet, Mabdul, TheGeekHead,
Fyrael, Queux, Haruth, Kongr43gpen, Sparkmonkey7, Fgnievinski, Wtni, LovinHTML, Fieldday-sunday, CanadianLinuxUser, Fluffernut-
ter, EricCanada75, Protonk, PranksterTurtle, Glane23, Nate Wessel, Karl gregory jones, Waterret, Favonian, AtheWeatherman, LinkFA-
Bot, Jasper Deng, Tyw7, Tassedethe, Numbo3-bot, Prince-of-Life, Tide rolls, Tim Mckee, Worlddominater08, Jarble, Bartledan, Manjo
mandruva, Elizabeth Barnwell, Legobot, Yobot, Bunnyhop11, Ptbotgourou, Fraggle81, Tundra010, Yulelee, Leastminor, Tael, THEN
WHO WAS PHONE?, Rajakhr, Jeffz1, Skaarlaw, Mrnobody228, Eric-Wester, Vampic, AnomieBOT, Cq142, Onefreeinternet, Chazubell,
Message From Xenu, Jim1138, Galoubet, Penguinboyroy, 9258fahsflkh917fas, Piano non troppo, Betax, Kingpin13, Flewis, Materialsci-
entist, MorgothX, Frankenpuppy, Nifky?, Nut er, Gsmgm, Lturbine, Whileupper, Obersachsebot, Xqbot, Costadelsponz, Tinucherian-
Bot II, Sionus, Addihockey10, Capricorn42, Armstrong1113149, Wperdue, 07w109, Morefight, Nasnema, Gilo1969, Grim23, With-
outmark, Jmundo, Ched, Galanothowns, L5138, StunitTeam, Tyrol5, Ruby.red.roses, KingHippo777, Internoob, HDrake, Nasa-verve,
Frosted14, Pandamonia, Shirik, RibotBOT, West Coast Gordo, Jetrink, Trevorpittz, Jacosi, Fert81, POTUS270, Shadowjams, Miyagawa,
Sesu Prime, RetiredWikipedian789, Magic.Wiki, GT5162, EpiQ SkiLL, FrescoBot, Sajidsa13, Logiphile, OspreyPL, Paine Ellsworth,
Anton Sergeev, Lucy75, Uxgeoff, Charrua85, Johnnybravo2009, Djahmednawaz, Islamicinfo, Brianreavis, Buzgun, Kwiki, Safinaskar,
Jakesyl, Zorgelo, Flashesarenight, Redrose64, Ringling9, Pinethicket, ShadowRangerRIT, I dream of horses, HRoestBot, Wikiuser00008,
MJ94, Calmer Waters, Jake11899, Mutinus, Hoo man, Carineduwez, Impala2009, MastiBot, Serols, SpaceFlight89, Petree69, Sjpr73,
DMBradbury, Prapsnot, Pcuser42, Weylinp, Unbreakable comb, Pranayrocks23, Hiuhuhihiuh, Abc518, FoxBot, Sreeriz, Kakistocra-
tor, Lotje, Nako16, Dinamik-bot, Vrenator, TBloemink, Extra999, Killr833, Lilgamer64, Chat de jutiapa guatemala horcones, Mr.98,
Spherems, Nman252, Jhone29, Ayansen1988, Diannaa, Gerhard Loeb, IeditU4good, Genhuan, BaseballByrd, Reach Out to the Truth,
Burns28, Sharon08tam, Aodonnel, DARTH SIDIOUS 2, Wolfhoundfeet, Nations114, Sheatrevor, Onel5969, Mean as custard, Cliffsblog,
Mrfencey, Bento00, DexDor, Amerias, Prosenzweig, Tomchen1989, Becritical, Thaqtipkilla, Kcmartz, Vickey Xiong, Chickenandpasta,
Deagle AP, Lineplus, Bmsshubham, Pwt-wsu-ap, EmausBot, Orphan Wiki, Tntc.tig, WikitanvirBot, Gfoley4, Beeshoney, Yt95, Going-
Batty, RA0808, Np123456, Dcdspace, RenamedUser01302013, Vanished user zq46pw21, Yellow & Blue Music, Rabbabodrool, The
Mysterious El Willstro, Dmsdjing, Tommy2010, Winner 42, Wikipelli, Dcirovic, K6ka, Tudorol, Pielover88888, Thecheesykid, The-
Drakoman, AlecFTW, Rima p.r, D'oh!, Josve05a, Traxs7, GranterOfMercy, Wes.turner, Cfust, Briansince1988, MithrandirAgain, Maypi-
geon of Liberty, Enrique00a, ‫פארוק‬, Anir1uph, Empty Buffer, Asiansryummeh, Virtual Loïc, Dylthaavatar, Rizwanazizshaikh, Wasala555,
Demonkoryu, Zap Rowsdower, Wayne Slam, Tolly4bolly, Gregoroq, BrokenAnchorBot, Lipyn, Shyluv, Donner60, Wipsenade, Jamesam-
ber, Bomazi, Chesshead123, Chesspapa, MainFrame, ChuispastonBot, Forever Dusk, Epicchamantha, DASHBotAV, Hacker9001, George
Makepeace, Dixwerr, ClueBot NG, Unisubs, Aerospeed, Frankdushantha, Matthiaspaul, MelbourneStar, Jcollumbell, Metinisim, Recon62,
Satellizer, PaleCloudedWhite, Wiklinkwonder, Carbon editor, Pokemonblackds, Andrew Kurish, O.Koslowski, Asukite, Ekphraster,
336, Widr, Telpardec, Blaise170, Anupmehra, Fltyingpig, ZacharyM001, Helpful Pixie Bot, Chickenjock, Jrichardsing, Captain Su-
perman, Titodutta, Thatspartanguy, Calabe1992, Wbm1058, Schuy B., Technical 13, Doorknob747, Lowercase sigmabot, BG19bot, Is-
land Monkey, Nathanswan, Krlozanov, KamranMackey, Vagobot, Way2tutorial, Iamjaypatel, AlphaBlogshow, Kangaroopower, Harka-
mal1001, MusikAnimal, Frze, OneCuteElmo, Ashutosh.ukey, Ramneek Sharma(MCT), Follishere, Mark Arsten, Compfreak7, Joshi-
anurag21, Joydeep, NotinREALITY, RussiaRussia, Matthewp1998, Spokestrip EMP, Tharinduewe, Vannhuthanh, Makandal14, Davi-
dLeader, Gysenn, Insidiae, Glacialfox, Toto Mommam, Klilidiplomus, Ajsandbach, Shanky.lonely, Hanitirkey, BattyBot, FootholdTechnol-
ogy, David.moreno72, Darylgolden, SupernovaExplosion, Pratyya Ghosh, JDewint, Cyberbot II, Timothy Gu, GoShow, Jamila60, Sibtain
007, Worden.lee, EuroCarGT, Ducknish, JYBot, Dexbot, Rezonansowy, Norazizahhashim, I call the big one bitey, Mogism, Killerkur1,
SiBr4, Assisted Reputation, Mrkjohnson, Blakeman909, Lugia2453, Frosty, Tayyab mm, Booruguru, Flrgf, Itchytoes, Jscbiss, CCamp2013,
Anand Kishore Jha, Reatlas, Bluexephos Sjin, Mark viking, Xela722, Jnelmark101, Crisskooper, FallingGravity, Marsupium, I am One
of Many, Zaveri123, Htmlwiki, Jdbener, Shivajivarma, Mompati Dikunwane, Tentinator, Waqaee, AnthonyJ Lock, Timmothytheman,
Saleh0167, Jemee012, TechFilmer, Salamnam30, Haminoon, A owen1978, Blackraider7, LieutenantLatvia, Dexmediainc, Uwe Lück,
My name is not dave, Ginsuloft, George8211, Motemota9, JWNoctis, Sam Sailor, Thesloth34, Mustha jm, TCMemoire, Francois-Pier,
Jyothiug17, Dvorapa, Dkwebsub, King.escanlar, Meteor sandwich yum, Dastoger Bashar, CelesteMarkham, JaconaFrere, Jforjaxi, Hi-
mankpathak, Salton Finneger, Dixwerrr, RicoZepplin, Prestotron55, Your moms cousin, Adamali2002, Awesome Spider, Monkbot, Yu-
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 403

gals20, BatmanArkhamOriginsV3, LucasandEmma, Mdwhit, Notchrealm, TheQ Editor, சு.க.மணிவேல், Stronglolo, Ha1230, QueenFan,
Sonia Terver, Lord Marcellus, KH-1, ChamithN, Maths314, Gurjyottheman, Arvind asia, TeaLover1996, Ertyupoi, Devwebtel, Some Gad-
get Geek, Niki201, HTMLRulez, Muhammad Ijaz Javed, BoxOfChickens, Alefbeis, ToonLucas22, Hotsystem52, Keisuke3804, Bdurf,
Amazingcf.cool, Andrean rapz, Qsx753698, KasparBot, Milind Bordia BSHS, Waqas012, Gurbir Singh Dhaliwal, Thejas16496, Pra-
jwal R Sajji, My Chemistry romantic, Ross MacPhee, Glory of Space, Manasaramoju, AniruddhaChatterjeeOUA, Bigwilly10, Gorgond,
Lemondoge, MonDavis, Zamaster4536, HTMLPanda, Garg.M2K, Amolyadav0099, EightTwoThreeFiveOneZeroSevenThreeOne, Yabgo
Mubassir, Heeeheee10101, Lukace8, Kutless02, GSS-1987, Callum.McTear, Krishna2636, Qzd, Doulph88, Stevan.keselj95, Shafran
franzy, Jcmendo, Riddhi2015, Amitmarkel, Justiceray1998, Cybergauntlet, NgYShung, Yadavrohit2003, Shaunyalad88, GreenC bot,
UnidentifiedHuman721, DynaGirl, Werthert, Full Rune, VarunFEB2003, Hello8287556846, Rhowladar, Superuser56, Shantoa0, Vk khan-
dal, Sanjaunita23, DUBSSC, NAYAN 1, Kaustubh Gole and Anonymous: 2196

• Hypertext Transfer Protocol Source: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol?oldid=737952516 Contributors:


Damian Yerrick, The Anome, Grouse, Wayne Hardman, Andre Engels, Rmhermen, Aldie, SJK, William Avery, Ben-Zin~enwiki, Mjb,
Bernfarr, Nknight, Edward, Patrick, Chris-martin, Modster, Lezek, Nixdorf, Pnm, Meekohi, Martin BENOIT~enwiki, Ixfd64, Sheldon
Rampton, TakuyaMurata, Delirium, Iluvcapra, Karingo, Tregoweth, Ellywa, Ahoerstemeier, Haakon, Nanshu, Yaronf, Lupinoid, Scott, IM-
SoP, Samuel~enwiki, Nikola Smolenski, Ehn, Hashar, Universimmedia, Dcoetzee, Tpbradbury, Furrykef, Paul-L~enwiki, Bevo, Wonko,
Nickshanks, Betterworld, Pakaran, Flockmeal, Finlay McWalter, Jeffq, Robbot, Chealer, Fredrik, R3m0t, RedWolf, Psychonaut, Nurg,
Babbage, Ashley Y, Kwi, Yacht, Jleedev, Tea2min, Alerante, Giftlite, Lproven, Lee J Haywood, Lethe, Ferkelparade, No Guru, Jonathan
O'Donnell, Tromer, Itpastorn, Cloud200, Pascal666, AlistairMcMillan, Jaan513, Jackol, SWAdair, Vadmium, Utcursch, Pgan002, Knu-
tux, Beland, Oneiros, Kesac, Icairns, Atemperman, Gscshoyru, Joyous!, Karl Dickman, BeakerK44, Mmj, Abdull, Reschke, Bluemask,
MikeF, Mormegil, Tordek ar, Imroy, JTN, RossPatterson, Discospinster, Rich Farmbrough, Hydrox, Cool-RR, Alistair1978, Delicates,
Horsten, Bg~enwiki, El C, Mdf, Mnot, Sietse Snel, Tbannist, Femto, Bobo192, Nigelj, John Vandenberg, BrokenSegue, Unquietwiki,
Kundor, Daf, Maebmij, Helix84, Krellis, Nevyn, Mdd, Lysdexia, Timmywimmy, Jumbuck, Checking, Zachlipton, Alansohn, Guy Harris,
Interiot, Pforret, Jeltz, John Quiggin, Damnreds, Lightdarkness, Kocio, Mbloore, Wtmitchell, BaronLarf, Eli the Bearded, BanyanTree,
Cburnett, Stephan Leeds, Suruena, Evil Monkey, Josh3736, RainbowOfLight, TenOfAllTrades, Krellion, Ent, Nightstallion, Voxadam,
DarTar, Woohookitty, Mindmatrix, RHaworth, Stolee, Uncle G, DanBishop, Jacobolus, Niqueco, JHolman, ^demon, Paul Mackay~enwiki,
Asteiner, Ruud Koot, Dionyziz, Eyreland, Meneth, Jonnabuz, Brownsteve, Kesla, RichardWeiss, Graham87, Seb-Gibbs, Yurik, Cander-
son7, Sjö, Rjwilmsi, Koavf, Hans Genten, Bruce1ee, MZMcBride, Jdowland, HappyCamper, ElKevbo, The wub, Ravik, Fred Bradstadt,
Aapo Laitinen, Lotu, Syced, FlaBot, Spaceman85, Mathiastck, Hashproduct, RexNL, ChongDae, Intgr, Fresheneesz, TeaDrinker, Al-
phachimp, Benanhalt, Imnotminkus, Chobot, Frappyjohn, DVdm, GioeleBarabucci, Adoniscik, YurikBot, Wavelength, Angus Lepper,
Todd Vierling, Huw Powell, Charles Gaudette, Pip2andahalf, Kymacpherson, RussBot, Sparky132, Yuhong, Stephenb, Gaius Cornelius,
SteveLoughran, Cryptic, Anomalocaris, NawlinWiki, ENeville, Catamorphism, A!eX, JonoF, Saoshyant, Jstrater, CecilWard, Moe Ep-
silon, SixSix, Alex43223, Syrthiss, Htonl, DeadEyeArrow, Arch o median, Hrvoje Simic, Nlu, Trygvis, Graciella, BenBildstein, Ninly,
Macademe, Cedar101, Ka-Ping Yee, Pb30, KGasso, Dspradau, Sean Whitton, Kungfuadam, Benandorsqueaks, GrinBot~enwiki, TuukkaH,
Tom Morris, Jarkspratt, AndrewWTaylor, Mlibby, Amalthea, Drcwright, SmackBot, Elving, KAtremer, Incnis Mrsi, Hydrogen Iodide, Un-
yoyega, Basil.bourque, C.Fred, KocjoBot~enwiki, Gilliam, Betacommand, Englishrose, Lady Serena, Rmosler2100, Marc Kupper, Anwar
saadat, Persian Poet Gal, Dr bab, Thumperward, Timneu22, Jerome Charles Potts, Deathanatos, Omniplex, Baa, DHN-bot~enwiki, Bil1,
Firetrap9254, Gracenotes, Audriusa, George Ho, WDGraham, Schwallex, Dethme0w, Can't sleep, clown will eat me, SheeEttin, Frap,
Neo139, Blade44, Jennica, Nixeagle, Avb, Chruck, VMS Mosaic, UU, JustAnotherJoe, Ddas, MureninC, Nakon, T-borg, Valenciano,
HarisM, Astroview120mm, Mwtoews, Acdx, Daniel.Cardenas, DKEdwards, SashatoBot, Ksn, A-moll9, Bjankuloski06en~enwiki, Tlesher,
SpyMagician, CyrilB, Stupid Corn, Mr Stephen, Ryulong, KurtRaschke, MTSbot~enwiki, Negrulio, Kvng, Beefyt, Lee Carre, Hu12, Iri-
descent, Newone, Sander Säde, Sjb72, Chrisamaphone, Tawkerbot2, Brian.fsm, Earthlyreason, Kylu, SoftX, Stevenup7002, Pewwer42,
Equendil, Phatom87, Cydebot, Cahk, Mblumber, Agupte, Davilima, UncleBubba, Corpx, Chasingsol, JamesLucas, Christian75, Alaibot,
Ivko, Tobias382, Lyverbe, Epbr123, Marek69, Vertium, Electron9, TheJosh, James086, Nezzadar, Sakkath, Uruiamme, AlefZet, Escarbot,
Danielfolsom, KrakatoaKatie, AntiVandalBot, Yonatan, Luna Santin, Widefox, Guy Macon, MsDivagin, Blmatthews, Sstteevvee, Gdo01,
Lannm, Dougher, VictorAnyakin, Myanw, MikeLynch, JAnDbot, Barek, Bull3t, Mwarren us, Cameltrader, SiobhanHansa, Enjoi4586,
Danculley, Abu ali, Magioladitis, Bongwarrior, VoABot II, Transcendence, Davidjk, JamesBWatson, Bgwwlm, Tpirfan28, DerHexer,
Kgfleischmann, Esanchez7587, GordonMcKinney, MartinBot, BetBot~enwiki, Onlynone, GimliDotNet, Rainman-sr~enwiki, Anaxial,
Ore4444, Mschel, KTo288, Ash, PrestonH, Lilac Soul, RockMFR, J.delanoy, Captain panda, Mange01, Mehfuz, Trusilver, Think777,
Uncle Dick, Extransit, Suppie, Andareed, LordAnubisBOT, Produke, Gurchzilla, AntiSpamBot, Chiswick Chap, Raise exception, NewEng-
landYankee, Ivank06, Doria, Rwessel, SJP, Babedacus, STBotD, Ajfweb, CardinalDan, Idioma-bot, Funandtrvl, Wikieditor06, Fuzzyge-
nius, VolkovBot, Part Deux, CWii, Alexandria, Perceptes, Philip Trueman, TXiKiBoT, Oshwah, GcSwRhIc, Elimerl, Retiono Virginian,
Anna Lincoln, MackSalmon, Leafyplant, Don4of4, Broadbot, Yomcat, Wiae, Saturn star, Madhero88, TonyAiuto, Sses401, Petero9,
Haseo9999, Gen. von Klinkerhoffen, Tomaxer, Mohammedsheikh786, BOTijo, Okyea, Monty845, Praefectorian, Nightraider0, Scot-
tywong, EmxBot, Kbrose, SieBot, Nubiatech, Graham Beards, Rystheguy, Dawn Bard, Caltas, Edmund Patrick, RJaguar3, Smsarmad,
Yintan, Beinder, Bamkin, Bevan7, Ham Pastrami, Keilana, Android Mouse, Pxma, Happysailor, Flyer22 Reborn, Wizzard2k, TechTony,
Coroberti, DanBLOO, Oxymoron83, Avnjay, Iain99, Nyelvmark, OKBot, La Parka Your Car, RandomHumanoid, Konniret3, Lloydpick,
Mpeylo, ObfuscatePenguin, Asj123fds, De728631, ClueBot, The Thing That Should Not Be, Enthusiast01, Spandrawn, Ajonlime, Boing!
said Zebedee, DigitalNinja, Blanchardb, Callmederek, Grantglendinning, Daniboydl07, PMDrive1061, Cedy, Sekro, Socrates2008, Jus-
dafax, M4gnum0n, SkE, Mumia-w-18, Lartoven, Hrafnkell.palsson~enwiki, Dmyersturnbull, Jotterbot, Morel, Saebjorn, Thehelpfulone,
Calor, Sdrtirs, Th.matt.wiki, Aitias, DerBorg, Scalhotrod, Versus22, Qwfp, Apparition11, DumZiBoT, Chris1834, XLinkBot, Fastily,
Rror, OsoLeon, Nepenthes, Orbnauticus, C. A. Russell, SilvonenBot, InfoRetrieval, Gamernotnerd, RyanCross, Dsimic, HexaChord, Ad-
dbot, Mortense, Habbabuba91, Jojhutton, Mabdul, Magaman dude, Hyperthermia, Tothwolf, AkhtaBot, Ronhjones, Marx01, Scientus,
CanadianLinuxUser, Cambalachero, Glane23, Favonian, Jasper Deng, Timc1212, Numbo3-bot, Agawish, Tide rolls, Lightbot, Jarble,
Matt.T, Legobot, Luckas-bot, Bpantalone, Yobot, THEN WHO WAS PHONE?, Gsiegman, TestEditBot, Tempodivalse, AnomieBOT,
Mauro Lanari, Rubinbot, Jim1138, Cavarrone, Piano non troppo, Bluerasberry, Jrobinjapan, Materialscientist, Aneah, Papadakis2007,
Pioneerking, Obersachsebot, Xqbot, Dalitvoice, Korealin, Rischmueller, TinucherianBot II, Capricorn42, Bihco, Moustafaza, Gilo1969,
Gap9551, GrouchoBot, AVBOT, RibotBOT, SassoBot, DasRakel, IShadowed, MLauba, Phette23, Cyberstrike3000X, Shadowjams, Mik-
erlynn, Tabledhote, Universalss, SchnitzelMannGreek, 4342, FrescoBot, Voxii, Weyesr1, Godtrog, Tobby72, Nageh, Krj373, Gaccolin,
Wikipe-tan, Idyllic press, Sae1962, Vinoth.t, Jarkospratt, Draperp, Maggyero, I dream of horses, HRoestBot, MastiBot, Île flottante, Frax-
til, Lineslarge, RobMattson, Wolfomatic5, IJBall, Robert Xia, Lotje, GregKaye, Vrenator, Zvn, Extra999, EphemeralJun, JV Smithy,
Tbhotch, Reach Out to the Truth, Sharon08tam, Mean as custard, The Utahraptor, Linusnk, Wintonian, Salvio giuliano, EmausBot, John
of Reading, Gfoley4, Chenqiang.prc, Haiiiiilllsatana, Optiguy54, Super48paul, Jeroenvdmeer, Marcos canbeiro, Peaceray, Tinogomes,
Tommy2010, Chadfiller, Wikipelli, Rhaskallion, Shuipzv3, Babysabre, Kiwi128, Zalnas, 1234r00t, Sodabrew, GJHC1, Jmar777, Shrikan-
404 CHAPTER 70. X.25

thv, Irrypride, Donner60, Sri Krishna Geova Allah, Ihatejava, Shiftoften66, GermanJoe, Andkim99, ClueBot NG, AnotherSprocket, Y98,
Matthiaspaul, HonestIntelligence, Zekefast, Frietjes, Widr, Anupmehra, Theopolisme, Galund, Novusuna, Johnny C. Morse, J.Dong820,
Calabe1992, BG19bot, Qff828, EvanMHahn, M0rphzone, Adam.tolley, Sahara4u, Cyberpower678, Neøn, IAlexR, Mark Arsten, Compf-
reak7, Jnanaranjan sahu, GGShinobi, OmarMOthman, Spuas, Chmarkine, Toto Mommam, MrExplosive, Bsrdjan, IRedRat, Tianjiao,
David.moreno72, Mdann52, Agus puryanto, Cyberbot II, Gdfusion, Wjcw, Gavinmorrice, XapApp, Ducknish, Himichellet, Makecat-
bot, Lugia2453, Doc Armitage, Dmufasa, The Quirky Kitty, Sriharsh1234, Athomeinkobe, Falsestuff, Mark viking, I am One of Many,
François Robere, Melonkelon, Jakec, EvergreenFir, DavidLeighEllis, ArmbrustBot, Davidgumberg, Comp.arch, PerfectSystem, The Her-
ald, Ginsuloft, Soujak, Meteor sandwich yum, Skr15081997, Ethically Yours, Upkarsh, Monkbot, Izaberina, Datjedi, Coder hsps, Level47,
Mfnpka, Alamatpalsoe, 2014Best, Thianw, Neshyanka, WordSeventeen, Shiv Shanker Sharma, Roemerb, Mlkj, Viam Ferream, Pish-
cal, Rubbish computer, Joseph2302, NickOsypenko, Surlycyborg, KasparBot, T-brace98, Will98769876, Oluwa2Chainz, Atanasmihaylov,
Wesko, CAPTAIN RAJU, Vansockslayer, Chenthil Vel, Bv56, Tajmil, H.dryad, Kmalhotra612, Harrryy33, Colonel Wilhelm Klink, KGirl-
Trucker81, Killerflash734882, VINAY YADAV and Anonymous: 1253
• Implementation Source: https://en.wikipedia.org/wiki/Implementation?oldid=736722518 Contributors: Kku, Ellywa, Bogdangiusca,
Stefan-S, Maximus Rex, Spikey, MOiRe, Diberri, Marius~enwiki, Andycjp, Slady, Discospinster, Aranel, Mike Schwartz, Halsteadk, Oleg
Alexandrov, BD2412, JIP, Lockley, MZMcBride, Cacafuego95, Margosbot~enwiki, TheMidnighters, RexNL, Jidan, YurikBot, Grafen,
Kymara, Moe Epsilon, Twelvethirteen, Katieh5584, SmackBot, Eskimbot, BiT, Francisco Valverde, Gilliam, PJTraill, Hongooi, JonHarder,
Khazar, Dreftymac, CmdrObot, Optimist on the run, Thijs!bot, Nick Number, Goldenrowley, MECU, .anacondabot, Catgut, JaGa, Gwern,
MartinBot, TheEgyptian, R'n'B, Gurchzilla, VolkovBot, Begewe, Owain.wilson, Anna Lincoln, AlleborgoBot, SieBot, Jojalozzo, ClueBot,
Goober49, Rror, Hubew, Addbot, Fluffernutter, Mentisock, Jonathan d green, Chzz, Jarble, Luckas-bot, Yobot, Ptbotgourou, Fraggle81,
TaBOT-zerem, Materialscientist, Xqbot, J04n, SassoBot, Mathonius, Erik9bot, Cargoking, RedBot, Dinamik-bot, EmausBot, Wikitan-
virBot, TuHan-Bot, Sodmy, Heyjoy, Solde9, ClueBot NG, MelbourneStar, Wbm1058, BG19bot, Cbj125, Mitch078, Thecodemunky,
DaffyBridge, Star767, Dingalo, Bear-rings and Anonymous: 99
• Information Source: https://en.wikipedia.org/wiki/Information?oldid=738004801 Contributors: Eloquence, The Anome, Christian List,
Little guru, Ben-Zin~enwiki, Mjb, Hephaestos, Olivier, Leandrod, Stevertigo, Lir, Michael Hardy, Modster, Lexor, Nixdorf, Kku, Ixfd64,
Tomos, Goatasaur, Ellywa, Mdebets, Ahoerstemeier, Jebba, Bueller 007, Александър, Cyan, Mkoval, Poor Yorick, Scott, Andres, Wik-
iborg, Choster, Tpbradbury, Rronline, Shizhao, Olathe, Pir, Jusjih, Leonariso, Calieber, Robbot, Fredrik, Vespristiano, Peak, Romanm,
Dessimoz, Securiger, Mayooranathan, Nilmerg, Meelar, Rasmus Faber, Cassie~enwiki, Robinh, Roozbeh, Wile E. Heresiarch, Tea2min,
Alan Liefting, Ancheta Wis, Giftlite, Christopher Parham, Achurch, COMPATT, Everyking, Bensaccount, Sheizaf~enwiki, Yekrats,
SWAdair, Bobblewik, Sesel, Zeimusu, Antandrus, Joeblakesley, Togo~enwiki, Gscshoyru, WpZurp, Joyous!, JohnArmagh, Fabrício Kury,
Grm wnr, Zondor, Trevor MacInnis, Guppyfinsoup, Mike Rosoft, Brianjd, D6, Jwdietrich2, CALR, EugeneZelenko, Diagonalfish, Dis-
cospinster, Solitude, Michal Jurosz, Silence, Smyth, Samboy, Martpol, Stereotek, Bender235, MisterSheik, CanisRufus, AndyB, Jpgor-
don, Blakkandekka, La goutte de pluie, Alphax, Flammifer, Tritium6, Andrewbadr, Helix84, Haham hanuka, Ranveig, Jumbuck, Com-
plete~enwiki, Alansohn, PaulHanson, LtNOWIS, Riana, Ciaran H, BryanD, Jheald, Versageek, SteinbDJ, Spot, Ott, Natalya, OleMas-
ter, Woohookitty, Edgerunner76, Ruud Koot, I64s, CharlesC, LogicalDash, Marudubshinki, Bebenko, Graham87, Deltabeignet, Magister
Mathematicae, BD2412, MC MasterChef, Amerique, Rjwilmsi, Mayumashu, KYPark, Bubba73, FlavrSavr, Downtownee, AJackl, FlaBot,
Michaelschmatz, Mathbot, Truman Burbank, RexNL, AndriuZ, Wingsandsword, King of Hearts, DVdm, Bgwhite, Flcelloguy, Roboto de
Ajvol, Rattle, Wavelength, Cybercat, Sputnikcccp, Loom91, Lalalalalala~enwiki, Stephenb, Mpfrank, GeeJo, NawlinWiki, Oberst, Prickus,
Moe Epsilon, Mikeblas, Iancarter, Kyle Barbour, Scope creep, Pelister, Pooryorick~enwiki, Igiffin, Zzuuzz, Tcsetattr, Denisutku, Arthur
Rubin, Dspradau, Tevildo, Alasdair, Samanwith, JLaTondre, Eaefremov, DVD R W, CIreland, Crystallina, SmackBot, Incnis Mrsi, In-
verseHypercube, TestPilot, McGeddon, Kirkjames, Ariedartin, Vald, Delldot, Hsarkka~enwiki, HalfShadow, Bertilvidet, Yamaguchi ,
PeterSymonds, Gilliam, Ohnoitsjamie, Skizzik, Richfife, Wigren, MK8, MalafayaBot, Khobler, Neo-Jay, Hallenrm, A. B., Enigma55,
Sct72, Can't sleep, clown will eat me, Alphabravotango~enwiki, Yidisheryid, TheKMan, Celcom, Xyzzyplugh, Mr.Z-man, COMPFUNK2,
YankeeDoodle14, Jerrch, Smooth O, “alyosha”, Dreadstar, Richard001, Jon Awbrey, Just plain Bill, Rspanton, Daniel.Cardenas, Bart
v M, Ged UK, MichaelGasser, Xdamr, Kuru, MagnaMopus, Sir Nicholas de Mimsy-Porpington, Steipe, Ckatz, Isria, Tasc, Beetstra,
Noah Salzman, Billreid, Wstomv, Avs5221, Mr Stephen, Dicklyon, Pvalozic, RichardF, Jose77, Kvng, Ramobear, Levineps, Iridescent,
Jakehall2, Dreftymac, Lottamiata, Exformation, Tawkerbot2, George100, CRGreathouse, Ale jrb, Makeemlighter, Floridi~enwiki, THF,
Dgw, MarsRover, Rizeg70, Davnor, Penbat, Gregbard, Stebbins, Maria Vargas, Nelbathy, Poojamal, Peterdjones, Gogo Dodo, Mon-
tag451, JFreeman, ST47, Djmiller9975, Carlroller, Naudefj, Hot torew, Daven200520, Blackjack48, Kyle J Moore, PKT, Michael Four-
man, Epbr123, Al Lemos, Headbomb, Yettie0711, Klausness, Dawnseeker2000, Dehneshin, Escarbot, Mentifisto, Rlitwin, QuiteUnusual,
PlatonicIdeas, Smartse, Danny lost, Andrewrutherford, Dreap, Obeattie, Golgofrinchian, JAnDbot, Jimothytrotter, Em3ryguy, MER-C,
Robocracy, Eurobas, Pvm 02, Ariaconditzione, Meeples, AndriesVanRenssen, Magioladitis, Bongwarrior, VoABot II, Think outside the
box, Kevinmon, Snowded, Indon, Faustnh, EagleFan, Ksanyi, MetsBot, David Eppstein, DerHexer, Khalid Mahmood, Oicumayberight,
Bradshow, NAHID, Gamma2delta, R'n'B, Tgeairn, Wlodzimierz, J.delanoy, Kimse, Thomasda, Draccon136, Svetovid, Overix, Maurice
Carbonaro, Kentback, Robert W. Wright, Kby, AntiSpamBot, TomasBat, Cobi, Jorfer, Dungsff, Chitvamasi, Dessources, Juliancolton,
Linshukun, Gtg204y, DASonnenfeld, CardinalDan, Idioma-bot, Wikieditor06, Ddusenbery, VolkovBot, Semmelweiss, Aesopos, Philip
Trueman, TXiKiBoT, Oshwah, Ldonna, Yuma en, Ann Stouter, Z.E.R.O., Shindo9Hikaru, Kjells, Shahidislam31, Bluestripe, Jdunn0101,
Madhero88, BigDunc, Pepve, Stevenson-Perez, Synthebot, Jwithers, Vishal.belawade, Spinningspark, Brian Dare, AlleborgoBot, Logan,
PGWG, Cocomo-jp, Nosferatütr, Neparis, SieBot, Ivan Štambuk, Phe-bot, Dawn Bard, Caltas, Yintan, Flyer22 Reborn, Masgatotkaca,
Oxymoron83, GaryColemanFan, Gbbinning, Alex.muller, Algorithms, LonelyMarble, Luapnampahc, Cyfal, Sean.hoyland, Denisarona,
God of Slaughter, Loren.wilton, ClueBot, Thedosmann, Thriceplus, Shinpah1, ChandlerMapBot, Auntof6, Pointillist, DragonBot, Ex-
cirial, Alexbot, BirgerH, Rhododendrites, Brews ohare, R.Dhiyanesh, Cenarium, Hesar, TheRedPenOfDoom, Tnxman307, Coywish, Un-
merklich, M.boli, Thingg, Versus22, Johnuniq, XLinkBot, Roberto Gejman, Feinoha, JinJian, EndlessWorld, Dorkysnorky123654, Ad-
dbot, Csharpboy, Manuel Trujillo Berges, Njaelkies Lea, Zarcadia, Mike J B, Download, Chamal N, 5 albert square, Systemetsys, Tide
rolls, David0811, Mah Nah, Informatwr, Luckas-bot, Yobot, Systemizer, Terrifictriffid, Sweetestbilly, Taxisfolder, Timir Saxa, Kgeza7,
AnomieBOT, Andrewrp, Cmsreview, Jim1138, Piano non troppo, K50 Dude, Atroche, Wikiwlod, Bluerasberry, Materialscientist, Arthur-
Bot, DalaoDy, Raysonik, Xqbot, TheAMmollusc, Jayarathina, Bbarkley, Capricorn42, Millahnna, Tad Lincoln, J04n, Frosted14, Omni-
paedista, Thosjleep, Apurvasukant, JonesC-NC, Aashaa, Jasonlums, Anne11jun, Shadowjams, CES1596, FrescoBot, Browneze, GEBStgo,
Mark Renier, SkepticalMetal, Machine Elf 1735, Mtz07, Rhalah, Boxplot, Luvstar 17, Pinethicket, ShadowRangerRIT, Hard Sin, Rushbu-
gled13, InformationZone, Magdalena Szarafin, SkyMachine, FoxBot, DixonDBot, Lotje, Catinator, Vrenator, LilyKitty, Jeffrd10, JenVan,
Tbhotch, Cuckoofridge, Mean as custard, RjwilmsiBot, Xaphnir, EmausBot, John of Reading, Acather96, Gfoley4, Iseecubes, Maashatra11,
Tommy2010, Dcirovic, K6ka, Kimberleyhastly, Sbamyani, Pratibha sharma, Fæ, Quondum, Gz33, Chithrapriya, Tolly4bolly, Arman Ca-
gle, Istarninwa, Mmalbayrakoglu, Healis, Wakebrdkid, GrayFullbuster, ClueBot NG, MelbourneStar, A520, BarrelProof, Harmeetkaur09,
Masssly, Petra oftenlungs, Widr, ‫ساجد امجد ساجد‬, Vibhijain, Sssbbbrrr, Helpful Pixie Bot, Pinkcyberheart, Vaishalimathur14, Door-
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 405

knob747, BG19bot, Vagobot, My mom is cool, PhnomPencil, Wiki13, Galois17, Mark Arsten, Asterisk98, Mmovchin, Altaïr, In4matt,
Klilidiplomus, Agent 78787, Knodir, Cimorcus, ~riley, Pratyya Ghosh, Csterns, ChrisGualtieri, Ngorgoya4real, EuroCarGT, JohnEisen-
hauer, 331dot, Unitknow2, Frosty, Brirush, , Epicgenius, Cbm12, Eratosthenes17, Tentinator, Maxwell bernard, Rkkhare, Mattram,
Ryanluck3, Szhu008, Latifah istud, Papan patil, To-nurture, Ugog Nizdast, Eric Corbett, Ginsuloft, Sam Sailor, Kind Tennis Fan, Tah-
mina.tithi, Jeremylawless, Dastoger Bashar, FrB.TG, Dr. JJenkins, Skr15081997, GeorgeAhad, ThatRusskiiGuy, Wahab14, Jjunsso,
Sunmist, Sayyedabbasjaffer, Mikael400, DanBalance, KasparBot, ChesterThinks, Sam eastland, Anti-Keith, CAPTAIN RAJU, Abdi-
vetclinic.go.tz, Sahilshekh, Jdsmercado, Simakenett and Anonymous: 638
• Institute of Electrical and Electronics Engineers Source: https://en.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_
Engineers?oldid=737424899 Contributors: Bryan Derksen, The Anome, Tarquin, Ap, Christian List, Aldie, Matusz, SJK, Jarekadam,
Nixdorf, Menchi, Mac, Jimfbleak, Snoyes, Julesd, Jll, Kimiko, Andres, Mxn, Richj, Charles Matthews, Visorstuff, Itai, Head, Wilbern
Cobb~enwiki, Raul654, David.Monniaux, Donarreiskoffer, Robbot, Murray Langton, Altenmann, Romanm, Seglea, Jondel, Cyrius,
Enochlau, Matthew Stannard, Giftlite, Benji Franklyn, Leflyman, Aspenlogic, Pbryan, Rookkey, Fjarlq, Jason Quinn, AlistairMcMil-
lan, Alvestrand, Edcolins, Wmahan, Pgan002, Latitudinarian, DragonflySixtyseven, Maximaximax, Bodnotbod, Iantresman, Neutrality,
Urhixidur, Abdull, JamesTeterenko, Rhobite, Pjacobi, Vsmith, ArnoldReinhold, Abelson, Kwamikagami, Diomidis Spinellis, Coolcae-
sar, Smalljim, John Vandenberg, Polluks, Zr40, Martg76, Wrs1864, Pearle, Mdd, Jumbuck, PaulHanson, Walter Görlitz, Interiot, Ashley
Pomeroy, Apoc2400, Clifflandis, Wdfarmer, LearnMore, Wtshymanski, Emvee~enwiki, Moshekam, Alexei Polkhanov, Mnemo, BDD,
Notjim, MIT Trekkie, Joelthelion, Forderud, Woohookitty, LOL, Armando, Bratsche, Qaddosh, Ruud Koot, Firien, Optichan, Eaolson,
Dtwitkowski, MarkusHagenlocher, Jon Harald Søby, Gimboid13, Debsdelectables, Don Braffitt, Kbdank71, Mulligatawny, Sjö, Koavf,
Staecker, Crazynas, Klonimus, Utuado, FlaBot, Daderot, RobertG, Fereidunian, Dsc~enwiki, Chobot, MithrandirMage, Githin, YurikBot,
Wavelength, Borgx, Splash, Ansell, Hydrargyrum, Gaius Cornelius, Shanel, NawlinWiki, Edinborgarstefan, Dogcow, Nick, ArséniureDe-
Gallium, Jpbowen, Mikeblas, Zwobot, Leeroyjenkins, Mysid, TimK MSI, Thomas H. White, Dingy, Inconsequential, Wknight94, Avra-
ham, Benyang, Light current, Raistolo, Janto, Tsunaminoai, Tarawneh, Rathfelder, Xyrex, Poculum, Junglecat, Mebden, Marra, SmackBot,
Pgk, KocjoBot~enwiki, Whithamcp, Gleask, Robsomebody, Gilliam, Folajimi, Honbicot, Thumperward, Rdchambers, PrimeHunter, Ad-
pete, DHN-bot~enwiki, AKMask, Gsp8181, Monsuco, TKD, LouScheffer, Mr.Z-man, Juhlster1021, MrRadioGuy, Cybercobra, Bovester,
HarisM, Andrei Stroe, Ohconfucius, SashatoBot, Esrever, Ozhiker, Kuru, Disavian, Sobullubos, NongBot~enwiki, Drae, J5hale3, Domi-
tori, Aeons, Zureks, Eye heart pizza, Ntsimp, Schibs, PamD, Epbr123, Hcobb, DeePatton, Escarbot, LachlanA, Tweedman, Gioto, Guy
Macon, SummerPhD, 17Drew, Olexandr Kravchuk, Lperez2029, JAnDbot, Leuko, Harryzilber, MER-C, Kshuyler, Dsp13, Kschader, MS-
BOT, Stangaa, VoABot II, JoeBoxer522, Willy on Wheels over Ethernet, Japo, Nikosmastorakis, Geni-pmd, DGG, Dverma, Racepacket,
Sigmundg, NAHID, Greeney, Jim.henderson, Ethicalhacker, Rettetast, AnthonyMastrean, XanderJ, R'n'B, Erkan Yilmaz, RSRScrooge,
EscapingLife, Rlsheehan, Osvat, AleaJactaEst, Dtneilson, Jtbarr4, Psuar1, Crimson Twilight, Inwind, Dgoessling, VolkovBot, Shortride,
Leebo, Jeff G., TXiKiBoT, Yanw82, Guillaume2303, Krushia, LanceBarber, Yk Yk Yk, Truthanado, Mr. PIM, EmxBot, Matthew V
Ball, Technion, SieBot, Tiddly Tom, Sgg61991, Da Joe, Xvani, Brozozo, Nopetro, Mlongsho315, Herrnieman, Mkeranat, Vice regent,
Julie Dancer, Lardon10, IEEE07, Martarius, ClueBot, 1rankman, Aintneo~enwiki, Sabbah67, WaltBusterkeys, ImperfectlyInformed, Lan-
tay77, Ottawahitech, Hrudaya, Rollinsk, Razorflame, Stephengmatthews, BOTarate, Aleksd, StevenDH, Johnuniq, DumZiBoT, Alphak-
nave, XLinkBot, Pichpich, MystBot, ThatWikiGuy, Addbot, Chembeth, Knight of Truth, Fgnievinski, Hermite~enwiki, Wirpstein, Wal-
tonBC, Lepsteinn, Borminjeth, Anterman, LaaknorBot, Koyle, KoyleJ, Asumboler, Borlandersja, HerculeBot, Suwa, Legobot, Luckas-bot,
Yobot, Pink!Teen, UltraMagnus, Nmaddali, Rubinbot, Faisal zubaer, Galoubet, AdjustShift, Chrisc62, Materialscientist, ArthurBot, Csrus,
Gsmgm, Xqbot, TinucherianBot II, Ultrasonic o ke, Quintus314, Sionk, Miym, Alam bakshi, RogerDP, Wizardist, Mmmeg, A. di M., Fres-
coBot, WikiDonn, Steve Quinn, Geek2003, DrilBot, TAeiluj, Pinethicket, I dream of horses, Jadedrick, Tinton5, RedBot, Noel Streatfield,
Bradlito, Full-date unlinking bot, Jube82, Cnwilliams, Keri, Jaisaacs, SchreyP, Winjay, 092platinum, Lotje, Sanjaynediyara, Taiko3615,
564dude, Tbhotch, DARTH SIDIOUS 2, Galois fu, Mophoplz, Ssinha1981, Countblack, EmausBot, WikitanvirBot, Look2See1, Horndin-
kle, GoingBatty, 4meter4, Hhhippo, ZéroBot, John Cline, Parsonscat, Ὁ οἶστρος, Colejohnson66, Amr9090, ClueBot NG, MelbourneStar,
Raghith, Theleprechaum, Sebastian37, Cntras, JordoCo, Helpful Pixie Bot, Croben, Lowercase sigmabot, CiscoManager, M0rphzone,
PearlSt82, BBCLCD, PhnomPencil, Graham11, Megalibgwilia, Piguy101, S2piDLuveR, Chmarkine, WikiHannibal, Whym, TheUn-
namedNewbie, Icemail, BattyBot, Khazar2, JYBot, Grzegorznadolski, Rp8083, Frosty, Stewwie, Jibujames, Rmartinezmo, Ugog Niz-
dast, Sarr X, Seppi333, Indian corruption reform, Americans that hate americans, Vocalwotan, Pakrual73, Ter M. Ahn, B35c713dca,
MicahNSisco, RandyAAHaag, Latin Pig, Sangram12, Vivek-jones, Mountaindew776, Ejazmahmood82.em, ‫נדב ס‬, Nadeem.abbasi459,
BD2412bot, Missconstreu, Heather-2004, Atom2494, Dentking07, KingJohnDavids, Buenaventura IEEE and Anonymous: 304
• Interaction protocol Source: https://en.wikipedia.org/wiki/Interaction_protocol?oldid=531051444 Contributors: Michael Hardy, Pnm,
Andrewman327, Khym Chanur, Varjag, Danakil, Pegship, Fang Aili, SmackBot, JonHarder, MarshBot, TheAMmollusc, Erik9bot and
Anonymous: 2
• International Organization for Standardization Source: https://en.wikipedia.org/wiki/International_Organization_for_
Standardization?oldid=736982364 Contributors: Brion VIBBER, Zundark, The Anome, VincentV, Jagged, Eclecticology, Ghakko,
Mjb, Heron, Olivier, Frecklefoot, Patrick, Olrick, Cprompt, Nixdorf, Liftarn, SGBailey, Lquilter, Delirium, Plasticlax, R4f~enwiki,
Keichwa, Egil, Looxix~enwiki, Ahoerstemeier, Mac, Jpatokal, Notheruser, Yaronf, DropDeadGorgias, Glenn, Whkoh, Mkoval, LouI,
Kwekubo, Tobias Conradi, Hashar, Gingekerr, Slathering, Billdakelski, Jusjih, JorgeGG, Denelson83, PuzzletChung, MK~enwiki, Robbot,
Modulatum, Verbose~enwiki, Puckly, DHN, Wereon, Guy Peters, David Gerard, Ancheta Wis, Binarygal, Chinasaur, Bovlb, Andycjp,
Joeblakesley, CaribDigita, Maximaximax, Icairns, Jbinder, Maikel, Abdull, Bcordes, CALR, A-giau, Discospinster, John FitzGerald,
Luxdormiens, Bender235, Mr. Billion, IndianCow, MBisanz, Kwamikagami, Spearhead, Sietse Snel, Mqduck, Coolcaesar, Cwass, Shou-
jun, Bobo192, Smalljim, Minghong, Mdd, Ranveig, Jumbuck, Gary, PaulHanson, Stovetopcookies, Hohum, Mbimmler, Irdepesca572,
Stephan Leeds, Suruena, Kusma, KTC, IRbaboon, Jacobolus, Sid1138, Pol098, Before My Ken, Ruud Koot, Knuckles, MiG, Frungi,
Sega381, , Graham87, Wbeek, Mulligatawny, Rjwilmsi, Seidenstud, Koavf, Strait, MZMcBride, Yamamoto Ichiro, Vuong
Ngan Ha, Guthardt, FlaBot, Ewlyahoocom, Jflapointe, Subversive, Lmatt, Crazeman, Thecurran, Ahunt, Chobot, Adoniscik, YurikBot,
Whoisjohngalt, RobotE, Jimp, RussBot, Bhny, Akamad, Manop, Gaius Cornelius, Rsrikanth05, Aeusoes1, Długosz, Rashev~enwiki,
Denihilonihil, EEMIV, Lockesdonkey, DeadEyeArrow, Bota47, TimK MSI, Haemo, Lt-wiki-bot, Hayden120, WirelessMike, Katieh5584,
Nick knowles, Finell, Sardanaphalus, SmackBot, Alex1011, Eskimbot, Edgar181, IstvanWolf, Anastasios~enwiki, Chris the speller,
Octahedron80, DHN-bot~enwiki, A. B., Hgrosser, Writtenright, Stepho-wrs, Addshore, SundarBot, Cybercobra, Mleinart, Jon Aw-
brey, RayGates, Aaker, Evlekis, Charivari, Ohconfucius, Dspakman, SashatoBot, Derek farn, Autoterm, JackLumber, MilborneOne,
MonstaPro, 16@r, Peter Horn, MTSbot~enwiki, Dl2000, Mackan, DouglasCalvert, Joseph Solis in Australia, Namiba, Vargklo, Zarex,
JohnCD, Thylacoleo, Lazulilasher, Culverden, Mato, DumbBOT, Kozuch, Thijs!bot, Dasani, Hervegirod, Anjadrame, SomeHuman,
Escarbot, Lmaltier, Scepia, Olexandr Kravchuk, JAnDbot, HAl, Zorro CX, Magioladitis, SHCarter, Mclay1, TARBOT, Tedickey,
Stupefaction, Ashishbhatnagar72, Rukaribe, Rettetast, R'n'B, Erkan Yilmaz, J.delanoy, Mindgames11, Qwanqwa, Rlsheehan, Jesant13,
406 CHAPTER 70. X.25

Jerry, LordAnubisBOT, Plasticup, Furrybarry, Cobi, Ljgua124, Ansiansiansi, Blah0401, DASonnenfeld, VolkovBot, TreasuryTag,
TXiKiBoT, K-car, ISAN-IA, Rick Jelliffe, Rbenech, Melsaran, UnitedStatesian, Yk Yk Yk, Altermike, Truthanado, Logan, C0N6R355,
John Larmouth, Bierstube Katzen Keller, EmxBot, SieBot, Jrats, Gerakibot, Caltas, Timothy Cooper, SuzanneIAM, LeadSongDog,
Flyer22 Reborn, Alexbrn, RW Marloe, BenoniBot~enwiki, OKBot, Svick, Anchor Link Bot, Danio, Bibliophylax, Jza84, Lindum,
Denisarona, Revelian, Emk, Martarius, ClueBot, Binksternet, WurmWoode, Mattgirling, Mild Bill Hiccup, Piledhigheranddeeper, Sv1xv,
Azalia1225, L.tak, BOTarate, Unmerklich, Kslall8765, Justwatchme, Silica-gel, XLinkBot, Snoopy99~enwiki, Delicious carbuncle,
Environ1561, Levic69, Dthomsen8, Mitch Ames, The Aviv, Alexius08, ZooFari, Addbot, AkhtaBot, Harish431, Kit.macallister,
RP9, Exor674, Tide rolls, OlEnglish, MuZemike, BasicBaer, Legobot, Luckas-bot, Yobot, Fraggle81, TaBOT-zerem, AnomieBOT,
Ichwan Palongengi, Rubinbot, 1exec1, Götz, Jeni, International Electrotechnical Commission, Qdinar, Law, Justme89, Bluerasberry,
Winklerteen, G7046072, Xqbot, JimVC3, Capricorn42, AnonyPussycat, DSisyphBot, Gumruch, Nasa-verve, Omnipaedista, RibotBOT,
Apathy monk, Theifynia, FrescoBot, LucienBOT, Haeinous, Outback the koala, DivineAlpha, BlaF, Bazzer palm, Editor Lara, Tinton5,
Skyerise, RedBot, MastiBot, Adamlaskey, FoxBot, Seahorseruler, Chrisbud14, Rollins83, EmausBot, Kpufferfish, Danieldavidturner76,
Ntizoglou, TuHan-Bot, Wikipelli, P. S. F. Freitas, HiW-Bot, ZéroBot, John Cline, Newbiepedian, Dondervogel 2, H3llBot, Shmilyshy,
Andattaca2010, Donner60, Matsievsky, Chewings72, ChuispastonBot, Uziel302, TYelliot, ClueBot NG, Cwmhiraeth, Matthiaspaul,
LuisMMCortez, Widr, Anupmehra, පසිඳු කාවින්ද, Gob Lofa, Sterling.M.Archer, George Ponderevo, Doseduk, Davidiad, Marcocapelle,
Whym, BattyBot, David.moreno72, AllenZh, Samuelled, Mutoso, Isoindia, Dexbot, Rezonansowy, BroadcastDonkey, Rp8083, Enoshd,
Ekips39, Kemmabrant, Ujjwal210, Camyoung54, BreakfastJr, EstonianMan, Michipedian, Tentinator, ArmbrustBot, Werddemer, Chris
Mchale, Kickfin, No longer a penguin, Meowcatzmeow, Kristanashly, Trackteur, Rajesh kumar005, TheAmazingBear, Malarvihzi,
Carbonheliumnitrogen, Wong Angel, Stefantangen, Pixelized frog, Winterysteppe, Yashsaini24, Garmonjones, Grammmarrr, GreenC bot
and Anonymous: 364
• International Telecommunication Union Source: https://en.wikipedia.org/wiki/International_Telecommunication_Union?oldid=
737354967 Contributors: Stephen Gilbert, Shii, Ben-Zin~enwiki, Liftarn, Lquilter, Yann, Glenn, Jiang, JASpencer, Thg, Radiojon, Itai,
Bevo, Topbanana, Jusjih, Denelson83, Rogper~enwiki, Bearcat, Robbot, Nurg, Postdlf, Varlaam, Ssd, Jfdwolff, Alvestrand, Peter Ellis,
Tipiac, Gadfium, Information Habitat, Bolo1729, Gdr, Piotrus, Andyabides, SimoM, Icairns, Mormegil, Poccil, Pmsyyz, Jordancpeterson,
Quistnix, Bender235, Swid, Violetriga, Dataphile, El C, Joanjoc~enwiki, René, Jumbuck, WideArc, PaulHanson, Guy Harris, Calton,
Alinor, Lugevas, Geraldshields11, Tomlzz1, Instantnood, Benoni, Armando, Knuckles, HappyApple, Eyreland, Jon Harald Søby, Mark-
Pos, Mandarax, Ictlogist, Graham87, Dmountain, Mulligatawny, Rjwilmsi, Vegaswikian, Cat5nap, Mkehrt, FlaBot, Itinerant1, Anonym1ty,
Parutakupiu, RockOfVictory, Chobot, Frappyjohn, Volunteer Marek, Slimey.limey, YurikBot, Borgx, MGodwin, Rsrikanth05, Marcus Cy-
ron, Maggu, Howcheng, Saper, BertK, Danlaycock, Tachs, TimK MSI, Ninly, Larroney, Bensons, Thomas Blomberg, Eteru, SmackBot, Un-
yoyega, Eskimbot, Mauls, David H, Donama, Kmarinas86, MalafayaBot, DHN-bot~enwiki, Addshore, DinosaursLoveExistence, Cyberco-
bra, Derek R Bullamore, Ohconfucius, Ozhiker, John, CmdrObot, R9tgokunks, Usgnus, Bioran23, Cydebot, Sa.vakilian, Kozuch, Dweiss,
Rjm656s, Thijs!bot, ITU, Gökhan, Harryzilber, Jahoe, Dcollard, Avicennasis, Adam Grenberg, Xtifr, Ashishbhatnagar72, Crunkcar,
RockMFR, J.delanoy, BandwidthSeek.Net, Maurice Carbonaro, AKA MBG, Sukee3, ABlockedUser, VolkovBot, RingtailedFox, TXiK-
iBoT, Youlia~enwiki, JhsBot, Yk Yk Yk, Altermike, AlleborgoBot, Pigdog234, Byassine, SieBot, Yintan, D'Ranged 1, Alexbrn, Light-
mouse, BenoniBot~enwiki, Kristine.clara, Taximes, Denisarona, Tuxa, Bwfrank, Tvol, Arcaist, DaveBurstein, Interfase, MusicTree3, L.tak,
Mykkerin, DumZiBoT, Antti29, DidiWeidmann, Dthomsen8, Jabberwoch, Good Olfactory, Addbot, Otisjimmy1, Zarcadia, NjardarBot,
Download, CarsracBot, Numbo3-bot, Lightbot, OlEnglish, Legobot, Luckas-bot, Yobot, ‫محبوب عالم‬, AnomieBOT, Rubinbot, Galoubet,
Xqbot, TheAMmollusc, Madjar, Davshul, The Evil IP address, Isheden, Omnipaedista, January2009, Karlstar, D'ohBot, OgreBot, 10me-
treh, Foxhound66, Jschnur, Lars Washington, Mentmic, Jonkerz, Lotje, LilyKitty, Danigro456, Bornae, Mean as custard, TjBot, Bhawani
Gautam, Dstone66, EmausBot, China Dialogue News, BillyPreset, Rajwhite, WikiAnthony, Peaceray, Dcirovic, Slawekb, Wikignome0530,
Erianna, Umni2, Josie62, Targaryen, ClueBot NG, Coleemma, FinFihlman, Hurunui99, Newyorkadam, Piersletcher, Johnwest1999, Help-
ful Pixie Bot, BG19bot, Vagobot, AvocatoBot, Compfreak7, Japinderum, Polmandc, Whym, Tosek, Mdann52, Julien Houle, PhoneGuy86,
Hucklebur, Potor111, SmileyLlama, Rp8083, TheBlueCanoe, Skt12345, ThePassengerOfFreedom, Theoretical.Ideation, 83000bastian,
Hendrick 99, Deepakkumarpooja.kumar3, Duckbeaver, Tahmina.tithi, JaconaFrere, Wyn.junior, MrFrosty2, Filedelinkerbot, Taimuri-
jaz97, Pmajor48 and Anonymous: 124
• Internet Source: https://en.wikipedia.org/wiki/Internet?oldid=737865353 Contributors: Damian Yerrick, AxelBoldt, WojPob, Lee Daniel
Crocker, Eloquence, Mav, Bryan Derksen, Zundark, The Anome, Koyaanis Qatsi, Tim Chambers, Amillar, Wayne Hardman, Andre
Engels, Danny, Vignaux, XJaM, Darius Bacon, Fredbauder, Christian List, Aldie, Gianfranco, Little guru, Karen Johnson, SimonP,
Shii, Mjb, Heron, Rsabbatini, Mintguy, Dwheeler, Montrealais, Roybadami, Hephaestos, Twilsonb, Steverapaport, Quintessent, Patrick,
Michael Hardy, Modster, Lousyd, GUllman, Rp, Kabads, Tannin, Ixfd64, Graue, Seav, TakuyaMurata, Delirium, Pde, Minesweeper,
Tregoweth, CesarB, Fantasy, Ahoerstemeier, Ronz, Nanshu, Baylink, Snoyes, Cferrero, Collin~enwiki, Angela, Mvelicko, Den fjättrade
ankan~enwiki, Jdforrester, Erzengel, DropDeadGorgias, Julesd, Bjb~enwiki, Pratyeka, Glenn, Jschwa1, Whkoh, Bogdangiusca, Cyan,
Poor Yorick, Vzbs34, Cortalux, Susurrus, Kwekubo, Andres, Cimon Avaro, Kaihsu, Evercat, TonyClarke, Cherkash, Eirik (usurped),
Mxn, Marymary, TheStick, Schneelocke, Administration, Mulad, Guaka, Nohat, Andrevan, RickK, Viajero, N-true, Jwrosenzweig, Sa-
vantpol, Fuzheado, Slark, Andrewman327, Greenrd, WhisperToMe, DJ Clayworth, Haukurth, Tpbradbury, Jake Nelson, Maximus Rex,
Saltine, Marshallharsh, Jnc, Mattworld, Populus, Samsara, Thue, Bevo, RanchoRosco, J D, Traroth, Joy, Fvw, Bloodshedder, Raul654,
Pakaran, Jerzy, Jusjih, Johnleemk, David.Monniaux, Frazzydee, Shantavira, RadicalBender, Northgrove, Pakcw, Robbot, Paranoid, Juro,
Pigsonthewing, Fredrik, Chris 73, Vespristiano, RedWolf, Chocolateboy, ZimZalaBim, Netizen, Yelyos, Nurg, Naddy, Modulatum, Low-
ellian, P0lyglut, Yosri, Rursus, Texture, Jfire, Meelar, Bethenco, Diderot, Rasmus Faber, Davodd, 75th Trombone, Moink, Hadal, Vin-
centZ, JesseW, Borislav, Roozbeh, Mushroom, ElBenevolente, Anthony, Lupo, Fab, Tsavage, Seth Ilys, Guy Peters, Wile E. Heresiarch,
Jleedev, Jooler, Tea2min, Alan Liefting, Stirling Newberry, Alexwcovington, Centrx, Giftlite, Jacoplane, Marnanel, Gtrmp, Awolf002,
Fennec, Kim Bruning, ShaneCavanaugh, Wolfkeeper, Luis Dantas, Kenny sh, Lee J Haywood, Orangemike, IRelayer, Bimach~enwiki,
Peruvianllama, Everyking, Avalean, Curps, Henry Flower, Wikibob, Herdrick, Patrick-br, Rick Block, Andris, Guanaco, Daveb, Sun-
dar, MrSnow, Siroxo, Rchandra, Djegan, AlistairMcMillan, Macrakis, Solipsist, Alvestrand, Uzume, Lakefall~enwiki, Bobblewik, Ragib,
Golbez, Christopherlin, Scurra, Wmahan, Neilc, Stevietheman, Wikiwiki~enwiki, RWolf, Fishal, Gadfium, Utcursch, Alexf, Knutux,
Slowking Man, Yath, Sonjaaa, LucasVB, Quadell, Antandrus, Beland, Joeblakesley, OverlordQ, Dnas, MisfitToys, Piotrus, Am088,
Jossi, Marcschulz, CaribDigita, Rdsmith4, Gsociology, Rattlesnake, Kevin B12, Bodnotbod, ICTlogist~enwiki, Marc Mongenet, Th-
parkth, Neonstarlight, Cynical, Gscshoyru, Neutrality, Urhixidur, KeithTyler, Joyous!, Goobergunch, Karstimmer, Klemen Kocjancic,
Syvanen, Ratiocinate, Chmod007, Zondor, Adashiel, Trevor MacInnis, TheObtuseAngleOfDoom, Grunt, Iceflamephoenix, EagleOne,
Tobias Wolter, Bluemask, Millisits, Khefri, Mike Rosoft, Rfl, Freakofnurture, Monkeyman, Sparky the Seventh Chaos, Jiy, GoodStuff,
JoshG, Shadanan, MysteryDog, Noisy, RossPatterson, Discospinster, Solitude, Rich Farmbrough, Rhobite, Guanabot, NrDg, Hydrox,
Oliver Lineham, Pmsyyz, MCBastos, Inkypaws, Jonnny, Izwalito~enwiki, YUL89YYZ, Narsil, LindsayH, Xezbeth, AlanBarrett, Gronky,
Stereotek, SpookyMulder, Bender235, ESkog, Cyclopia, Zaslav, Kbh3rd, Goplat, Klenje, Violetriga, Billlion, Brian0918, Aranel, Mr.
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 407

Billion, Livajo, JustPhil, Kwamikagami, Tverbeek, PhilHibbs, Shanes, Spearhead, Art LaPella, RoyBoy, Matteh, SEOXpert, Willemdd,
Coolcaesar, Villafanuk, Jpgordon, Bobo192, Nigelj, NetBot, Smalljim, Orbst, BrokenSegue, Tronno, Shenme, Viriditas, Tmh, Matt Britt,
Maurreen, Jag123, Jkh.gr, Man vyi, Jojit fb, Rajah, Cheung1303, Twobells, Minghong, John Fader, Obradovic Goran, GMR5, Wrs1864,
Helix84, Haham hanuka, Ral315, Pearle, Gsklee, Jonathunder, Mdd, Annexia, Merope, HasharBot~enwiki, SuperJake, Espoo, Jumbuck,
Danski14, Poweroid, Mithent, Alansohn, Gary, Goodnewsfortheinsane, Anthony Appleyard, Trollminator, Blahma, SnowFire, Dr Zen,
Guy Harris, Fadookie, Alyeska, Diego Moya, Mr Adequate, Jeltz, PatrickFisher, Andrewpmk, Verdlanco, Plumbago, Sl, Andrew Gray,
ABCD, Riana, Ahruman, Echuck215, Lightdarkness, Smoothy, Garfield226, InShaneee, Cdc, Malo, Bart133, DreamGuy, Lugevas, Mari-
anocecowski, ClockworkSoul, Saga City, Rebroad, Knowledge Seeker, ReyBrujo, Stephan Leeds, Dtcdthingy, Evil Monkey, Max Naylor,
Jwinius, RJII, Olavandreas, Grenavitar, CloudNine, Drat, Sciurinæ, GregNorc, Mcmillin24, Guthrie, The1pato, EventHorizon, Com-
puterjoe, Reaverdrop, Freyr, Versageek, MIT Trekkie, Justin5117, Redvers, Voxadam, YixilTesiphon, Ceyockey, Richard Weil, Tim-
Martin, Kznf, Kenyon, Squiquifox, Scottbell, Sharprs, Stephen, Stuartyeates, Weyes, Thryduulf, Angr, Kelly Martin, The JPS, Simet-
rical, Bushytails, OwenX, Vidgmchtr, KidAirbag, Kupojsin, Mindmatrix, Camw, LOL, Yansa, Percy Snoodle, Guy M, Plek, Stickguy,
Bratsche, Wutasumi, Pol098, ^demon, Ruud Koot, Iconoclast~enwiki, MONGO, Pchov, Eleassar777, Kmg90, Schzmo, Foodmarket,
Bbatsell, Ppk01, I64s, Striver, Bluemoose, Complex~enwiki, Meneth, Sega381, Plrk, Waldir, Zzyzx11, Jonnabuz, Wayward, Wisq, Palica,
Driftwoodzebulin, Stevey7788, RichardWeiss, Azkar, KrisW6, Saposcat, Graham87, Marskell, GeorgeTheCar, Magister Mathematicae,
Tovias, BD2412, Galwhaa, Chun-hian, Kbdank71, FreplySpang, RxS, Reisio, Drbogdan, Sjakkalle, Rjwilmsi, Koavf, KYPark, Avochelm,
Vary, Bob A, Eyu100, Amire80, Biederman, Carbonite, Tangotango, Stardust8212, Sdornan, Captain Disdain, Lordkinbote, Vegaswikian,
Zizzybaluba, Nneonneo, Crazynas, HappyCamper, Ligulem, DoubleBlue, MarnetteD, GregAsche, DirkvdM, Renaissance Man, Yamamoto
Ichiro, SNIyer12, Leithp, Exeunt, Jflash, FayssalF, Titoxd, Kiba, Splarka, TekeeTakShak, Mirror Vax, Mark Elliott, Soph, JeremyMc-
Cracken, Doc glasgow, HJV, Crazycomputers, GünniX, Nivix, Chanting Fox, Isotope23, AJR, JIMBO WALES, Jsheehy, RexNL, Gurch,
Redwolf24, Jimbo D. Wales, Valermos, President Rhapsody, Brendan Moody, Sstrader, Seinfreak37, Intgr, Goeagles4321, Natalina smpf,
Daveg, Terrx, EronMain, Alphachimp, Kri, Mallocks, I Am Not Willy On Wheels, Miffy900, Coolhawks88, Antimatter15, King of Hearts,
CJLL Wright, Chobot, Jersey Devil, Frappyjohn, Evilphoenix, JesseGarrett, Mmx1, Bgwhite, EvilZak, Gwernol, Wjfox2005, Faseidman,
Zerak-Tul, EamonnPKeane, Roboto de Ajvol, YurikBot, Wavelength, Klingoncowboy4, Hawaiian717, Pile0nades, Kinneyboy90, Scep-
tre, Blightsoot, Hairy Dude, Jimp, Brandmeister (old), Tznkai, Jeffthejiff, MMuzammils, RussBot, Jtkiefer, Muchness, Peter S., Severa,
Anonymous editor, Briaboru, Chroniclev, Expertu, Gardar Rurak, SpuriousQ, Fabricationary, Oliverisyourdaddy, Samuel Curtis, Wayn-
eRay, Akamad, Dotancohen, Chensiyuan, Stephenb, Manop, Barefootguru, CambridgeBayWeather, Ihope127, MaxD~enwiki, Bisqwit,
Morphh, Wimt, Big Brother 1984, United88, NawlinWiki, Swollib, Xkeeper, R Pollack, 0waldo, Hm2k, SEWilcoBot, Wiki alf, Dae-
mon8666, Obarskyr, RattleMan, Avuton, Grafen, Thatdog, Dforest, Nathan8225, Jaxl, Dijxtra, Kvn8907, DarthVader, AlMac, Justin
Eiler, Chunky Rice, Robchurch, Barberio, Thiseye, Rbarreira, Anetode, Entirety, Jpbowen, Dooky, PhilipO, Dr Debug, Moe Epsilon,
Mikeblas, Misza13, Tony1, Zwobot, Supten, Epa101, Aaron Schulz, Mditto, Samir, Deku-shrub, Roy Brumback, BOT-Superzerocool,
Wangi, Karl Meier, DeadEyeArrow, Psy guy, Bota47, Abrooke, Blowdart, Oliverdl, Haemo, CLW, INaNimAtE, Macs~enwiki, Lumaga,
Max Schwarz, Wknight94, Avraham, Zeno McDohl, Eurosong, FF2010, Zombi333, Emijrp, Rdmoore6, Zzuuzz, Lt-wiki-bot, Mristroph,
Shengii, Bayerischermann, Ageekgal, Nikkimaria, KieranL, Theda, Xaxafrad, Jolt76, Gppande, JuJube, GraemeL, Jecowa, Speculatrix,
JoanneB, Gwylim a, Alias Flood, Hrvatska, Smurrayinchester, Peter, Willtron, JLaTondre, RenamedUser jaskldjslak904, Spliffy, Ariel-
Gold, Ilmari Karonen, RunOrDie, Zeroinbarnotation, Kungfuadam, Djr xi, Ben D., Cotoco, Jasón, NeilN, ChewT, Maxamegalon2000,
MansonP, Auroranorth, DVD R W, Finell, CIreland, Dusso Janladde, Trekkie711, robot, Sycthos, Computageek95, Dylanthalus,
Jmchuff, Veinor, Politik426, Themightyone, SmackBot, YellowMonkey, Elonka, Ashenai, Jamott, Classicfilms, KMcD, Bobet, TheFlop-
pyOne, Andre3k1, Incnis Mrsi, Reedy, Tarret, Prodego, InverseHypercube, KnowledgeOfSelf, VigilancePrime, McGeddon, Kenmcfa,
CopperMurdoch, Ederjar, Tale, Unyoyega, Pgk, Vald, Shervink, Jacek Kendysz, Kilo-Lima, KocjoBot~enwiki, Millifoo, Clpo13, Midway,
Fulldecent, Yelgrun, Mmeri, Delldot, Drzoidberg~enwiki, Irrelivant, MindlessXD, Srnelson, Vilerage, Parkinn, TheDoctor10, Edonovan,
Edgar181, MelancholieBot, Tommstein, Junipercwc, Xaosflux, Cachedio, PeterSymonds, Ohnoitsjamie, Folajimi, Choalbaton, Jack slack,
Drn8, Chris the speller, Bidgee, Persian Poet Gal, Bad Bud, Oli Filth, MalafayaBot, Keryst, Sadads, 000o, Oni Ookami Alfador, Omghgomg,
TheLeopard, Omniplex, DHN-bot~enwiki, ZakTek, Resslerdylan, Hallenrm, Antonrojo, Hiii98, Invenio, Firetrap9254, A. B., Jnavas, Gra-
cenotes, Nintendude, Yanksox, Andyiou52345, Mikker, Reaper X, Sleepyasthesouth, Chendy, Suicidalhamster, Mike hayes, Newmanbe,
Peter Campbell, Zsinj, Dethme0w, Can't sleep, clown will eat me, Jahiegel, Mulder416, Gamahucheur, Jorvik, Frap, SimonShlosberg,
Proofreader, Cooss, Atropos, Discharger12, Vulcanstar6, Nixeagle, Garfield 80, JonHarder, Voyajer, Dess~enwiki, TheKMan, Rrburke,
TonySt, Xyzzyplugh, Harlequinn, Chcknwnm, Mr.Z-man, Phaedriel, Khoikhoi, Stormy Waters, KnowBuddy, BWD, Krich, Wonderstruck,
Warhol13, Muraad kahn, E. Sn0 =31337=, Cybercobra, Irish Souffle, Khukri, Digresser, Hhhhhh, Wikipediaphile, Makemi, Tenpin477,
Nakon, Savidan, Mikefzhu, Valenciano, Funky Monkey, Flyingember, MichaelBillington, EVula, Blake-, Nick125, Drivera90~enwiki,
Rajrajmarley, Orbitalwow, Dvc214, Chalybs, Dreadstar, Eran of Arcadia, Kirils, Invincible Ninja, ShaunES, Mini-Geek, Lcarscad, Dy-
lanW, Clean Copy, Weregerbil, Astroview120mm, Xagent86, Drphilharmonic, Jklin, AndyBQ, Acdx, Where, Mitchumch, Reliablesources,
Curly Turkey, Pilotguy, Kukini, Wossi, Ohconfucius, Cyberevil, Fujifisher, The undertow, SashatoBot, Kostas.karachalios, Untame Zerg,
Rory096, Robomaeyhem, Quendus, Harryboyles, Rklawton, Locatelli, Atomic23112, Kuru, John, Allyoursanity, AmiDaniel, Bordello,
KenFehling, OFX, Plugimi, Vgy7ujm, Soptep, J 1982, Heimstern, Loodog, Kemkem, Gobonobo, EKN, Atgthatsme, Ekjon Lok, Pal-
adinwannabe2, Johnnysfish, Soumyasch, Martysanders, Sir Nicholas de Mimsy-Porpington, Breno, Cpom, Isomega, Tktktk, Aujlakam,
Linnell, Benesch, Shadowlynk, JoshuaZ, Edwy, Chodorkovskiy, Cyberitis, Accurizer, Hadrians, Goodnightmush, Mr. Lefty, SpyMagician,
Hazr0x, Intiendes, Kinghy, HardwareBob, Entrpy, 16@r, Matthewccna, JHunterJ, Drew46, Trashday03, Agathoclea, Andypandy.UK,
RunningBon, Slakr, Stwalkerster, Shangrilaista, Luckycatfu, Muadd, Grandpafootsoldier, Charles7~enwiki, Dicklyon, Ambrose Bright-
side, Larrymcp, Spazm, Maksim L., Waggers, Nuutti, Anonymous anonymous, UpTheBracket, LPedroMachado, Ryulong, Fluppy, Dr.K.,
RichardF, Citicat, Jose77, Samurai107, Kvng, Rcannon100, Dl2000, Andreworkney, Nathanrdotcom, Stephen B Streater, Levineps, Hetar,
Saxmaniac777, JustJoe, OnBeyondZebrax, HisSpaceResearch, Fan-1967, Iridescent, Kencf0618, Missionary, Joseph Solis in Australia,
JoeBot, Kernow, Shoeofdeath, Pegasus1138, NCDS, Igoldste, Lenoxus, Sam Li, Charlesincharge, Alem800, Bandan, Az1568, Linkspam-
remover, Shawry 00, FancyPants, Woodshed, 2dogs, Tawkerbot2, Dlohcierekim, Yashgaroth, Daniel5127, Filelakeshoe, Nikk32, Erikring-
mar, Jworld2, Shebaboy102, Mr.happy~enwiki, Ryt, Lahiru k, Orangutan, SkyWalker, Taskmaster99, Teamcoltra, Didimos, Anthony22,
Wafulz, Centered1, Zarex, Picaroon, Richemond~enwiki, CWY2190, Eltonhoyantam, GHe, KnightLago, Stateguy, Bbao, Dgw, Green
caterpillar, Lemmio, Lentower, INVERTED, Moreschi, Old Guard, Casper2k3, Ravensfan5252, Www06, Linux Rocks, Tex, Helios En-
tity 2, Oden, MikeWren, Phatom87, AndrewHowse, Cydebot, Karimarie, Cahk, Mblumber, Peripitus, Ryan, Mike Christie, Johnny-5,
Steel, UncleBubba, Chris21192, Gogo Dodo, BlueAg09, Icewindfiresnow, Flowerpotman, Llort, ST47, Xeo-Wizzard, WikiWikiMan,
Eu.stefan, Tkynerd, Cbaxter1, SymlynX, Tawkerbot4, DumbBOT, Phydend, Nathan nfm, Dbeilhartz, Grison~enwiki, K00LKid, ZerD,
Inkington, Waxigloo, Kozuch, NorthernThunder, Toolingu, Omicronpersei8, JodyB, Niubrad, Sthow, Hydrajr, Satori Son, Khanlarian,
MeBee, FrancoGG, Thijs!bot, Skb8721, EthanNeuen, Biruitorul, Ph.D.Nikki, Coelacan, Nitishg, Pinaki ghosh, TonyTheTiger, Tkeller,
Staile, Fountain09, Daniel, PureLogic, Kablammo, HappyInGeneral, Serpent-A, Gamer007, Mojo Hand, Asmo86, Kevkoch5, Wompa99,
408 CHAPTER 70. X.25

Headbomb, KillaDilla, Pjvpjv, West Brom 4ever, WillMak050389, PizzaMan (usurped), Tapir Terrific, SomeStranger, TheJosh, Mr pand,
Merbabu, Irvingbird, Dagvadorj, Jeph paul, Sinn, NigelR, Dinardi, Strongriley, AgentPeppermint, Zachary, Tzhourdeka, Adw2000, Tocino,
GreatLiver, Central2, Insiriusdenial, Dawnseeker2000, Natalie Erin, SignorSimon, Navigatr85, AlefZet, Escarbot, Oreo Priest, Cyp01,
Handface, Mentifisto, Porqin, WIkiHorseMan, Sunshine22 858, KrakatoaKatie, Gossamers, AntiVandalBot, Speedysam, AbstractClass, Js-
nruf, Majorly, Yonatan, PARA19, Gioto, Luna Santin, Widefox, Kramden4700, BossOfTheGame, Opelio, Asdfghty, SummerPhD, Scrolls,
Bigtimepeace, Grich, Monsier Pie, CobraWiki, Quintote, Joelscorp, Dr. Blofeld, Autocracy, Readro, Jj137, Nycceo, Scepia, Smartse, Dy-
lan Lake, PhJ, Geape, Graham Clark, Malcolm, Julie Deanna, Spencer, RajeshPandey, Madmax vii, Arx Fortis, Zidane tribal, Myanw, TI85,
Canadian-Bacon, Kariteh, Yet-another-user, JAnDbot, Harryzilber, Pguerra, Kaobear, Moe kuwait, AaronKaplan, MER-C, Sonicsuns, The
Transhumanist, Malnourish, Rockhall, Tech2blog, Gamefreek76, H3llbringer, MODS=FAIL, Andonic, Naugahyde, Mwarren us, Ytmnd6,
Martinkunev, Bigwig77, Pkoppenb, Dream Focus, Kirrages, Paladin656, Ô, .anacondabot, Acroterion, Yahel Guhan, Couchpotato99,
Peteark, Freshacconci, Sinnerwiki, FaerieInGrey, Logan.aggregate, Captainpancreas, PrimroseGuy, Canjth, Pedro, Mrcharliexcore, Baby-
face123, Bongwarrior, VoABot II, Junie dilitori, Hhhhgoteam, AznShortBoi8021, VRoscioli, Rpgprog, Rscash22, Doug Coldwell, River-
torch, Jops~enwiki, Michaelhaslip, Tedickey, Xeddy, Dinosaur puppy, Epidown, Bookuser, Prestonmcconkie, Tomatoe, Morganp7,
Tokyogirl119, Djjkxbox, Indon, Srice13, Animum, Subatomicguy, SSZ, Hekxcieksdl, Shady Hippo, Mapper76, Loonymonkey, Whiney,
M8al, Cpl Syx, Interflop, Spellmaster, 3idiot, Jacobko, Arfan, DerHexer, Kgfleischmann, Wikigreatest, Ostaph7, Bitbit, Aviaris, Abbos,
HiB2Bornot2B, B9 hummingbird hovering, Stephenchou0722, Timknell, EtienneDolet, Hdt83, MartinBot, Michael Podgorski, Sjjupad-
hyay~enwiki, Pagw, BetBot~enwiki, You must have cookies enabled to log in to Wikipedia., Jay-d123, Poeloq, Piuneer, Aladdin Sane, Lol at
Lilo, Sl021, Rettetast, Juansidious, 424242, Sm8900, Mschel, Zhente, CommonsDelinker, AlexiusHoratius, Deflagro, JMJimmy, PrestonH,
Whale plane, Thewallowmaker, Smokizzy, Lilac Soul, Siliconov, Pomte, Mikaida, RockMFR, J.delanoy, Trusilver, AstroHurricane001,
Adavidb, UBeR, Numbo3, Zib redlektab, Hans Dunkelberg, Piercetheorganist, Maurice Carbonaro, All Is One, Public Menace, Moogle-
EXE, Jesant13, Mike Cherim, Jreferee, Mike.lifeguard, Octopus-Hands, Golfballock, Enchantian, Monkeyman393, Katalaveno, Smeira,
Guade00, SpigotMap, Starnestommy, Ryan Postlethwaite, J.puckett, Jigesh, Mikael Häggström, SparsityProblem, Gurchzilla, Cdxnolan,
AntiSpamBot, RaptorRobot, The Transhumanist (AWB), Darrendeng, NewEnglandYankee, Urzadek, Drosera~enwiki, Aervanath, SJP,
MKoltnow, Charlesblack, Olegwiki, Rinothan2, Xeysz, Laboobala, Dodecki, Jonathan P. Chen, Layzner, STBotD, CF90, WJBscribe,
Uberdude85, Operator tore~enwiki, Tiggerjay, Rebent, Student17~enwiki, Jamesontai, Remember the dot, KatherineTurnbull, Wikidogia,
Jevansen, Vanished user 39948282, Gimmeurm0ney, Diletante, RadiantSeabass, Bonadea, Jaffo Gonzales, Use the force, Nessdude14,
Link 991, Editmachine, Marcin Suwalczan, West wikipedia, Dorftrottel, Bwaav, RjCan, Steinberger, Mlewis000, Funandtrvl, Killer-
CRS, Spellcast, Lights, X!, Devonreilly, King Lopez, VolkovBot, TreasuryTag, Larryisgood, Thedjatclubrock, Raza514, Orphic, Derekbd,
MarcRS, Imacg3, Reymysterio01, TheRhani, Bry9000, Gluttenus, Majoreditor, MagicBanana, Freewayeric, LeilaniLad, Barneca, Max-
tremus, Philip Trueman, JayEsJay, Eric outdoors, Drunkenmonkey, Domstabsdogs, Frigglinn~enwiki, TXiKiBoT, Ageing Geek, Mercury-
woodrose, Berk, DaManWitDaPlan, Maximillion Pegasus, Antony, joseph, Tomsega, Sarenne, GDonato, Miranda, Dchall1, Wikidemon,
Ann Stouter, Anonymous Dissident, Stagefrog2, Qxz, Someguy1221, Taimaster, THEemu, The-secret-asian-man, Anna Lincoln, Kidutsu,
Lradrama, Sidepocket, JhsBot, Wordsmith, Fortethefourthversion, Irtrav, Canaima, Manchurian candidate, Drappel, Sawdon2, Bob f it,
Cremepuff222, Frank G Anderson, Snoom haplub, Maxim, FlushinQwnzNyc, Olgerd, Shane3x, Wikidrone20000, Maksdo, Flash man999,
RadiantRay, Aphilo, Mwilso24, Cybaxter, Wenli, Corrupt one, Jaqen, InMooseWeTrust, Arekku`xx, Usergreatpower, Acprisip, Valkyryn,
W1k13rh3nry, WJetChao, Synthebot, BrianRecchia, Mgoerner, Ahmad halawani, Falcon8765, Purgatory Fubar, Softlavender, Network
master, Brianga, Zungaphile, Qworty, Ebaur5, AlleborgoBot, Joel delahunty, Sfmammamia, Tvinh, FlyingLeopard2014, EmxBot, Samj72,
Schoolproject2, D. Recorder, Berro9, Kbrose, HarryMcDeath, Rockinduck, Gantster, Chime Shinsen, STA654, Hegiiman, SieBot, Grass-
maker, Kevin66, Richard Ye, Calliopejen1, Tiddly Tom, Moonriddengirl, Euryalus, Kwirky88, BotMultichill, Gannzor, Gnoluyr, S M
Woodall, Krawi, Harrystown, Geekmax, Lemonflash, Callipides~enwiki, Gerakibot, Missy Prissy, YourEyesOnly, Parhamr, Caltas, Per-
spectoff, Jacotto, Arsenal0328, Dinestysfaith, Lennartgoosens, Luxurius, G0dsweed, Knows lots, The Flying Purple Hippo, Maddenplayer,
Ph1r35p4wn, Excelsior f, Spedwehavedisabilaty, Foboy, Purbo T, Arda Xi, Keilana, Carmen.banea, RucasHost, NickD310, Pxma, Hobbit
fingers, Shreyash02, Tiptoety, Radon210, Oda Mari, Elcobbola, Elmidmibbs, Yatesie, URBOSAUR, Hiddenfromview, Jazzilla, Tuuuuuuu-
ubes, Diverock, Puremind, Scott981992, Krapface, Aruton, Makemebad~enwiki, Oxymoron83, MangaFreak0, Smilesfozwood, AngelOf-
Sadness, Nuttycoconut, Sparsh717, Lightmouse, Malunis T, KathrynLybarger, Yamaka122, Ceas webmaster, BenoniBot~enwiki, Poser-
xox, Dillard421, Stephen Shaw, Svick, Leonidasthespartan, Promodulus, C'est moi, Spartan-James, JohnnyMrNinja, Anchor Link Bot,
IamYossarian, Modelun88, Tfcollective, Wiggleintatter, Wisejoker, Wiknerd, Mafioosnik, Dust Filter, Altzinn, Justin050190, Brandork,
DavidJGW, Saghar2, Moarmudkipzlulz, Jons63, Into The Fray, PerpetualSX, Velvetron, Skyhuperut, WikipedianMarlith, Mr. Granger,
Twinsday, ClueBot, SummerWithMorons, Rumping, Noorkhanuk85, PipepBot, The teller of all 666, Jumborulz, UniQue tree, Ankiththe-
great, The Thing That Should Not Be, ArdClose, Theguns, Deedub1983, Enerccio~enwiki, NPhoenix, PopeMas214, Sukmas214, EoGuy,
Bhuvanneshsat, Jayan13, Imthesmartdude, Supertouch, SchulteMAS214, FundieBuster, Shade11sayshello, Longcatislooooooooooooong,
Wiki Edit 12, Meekywiki, Bookh, Bennettchipper, JRod451, Brezzo, Der Golem, Justin.purvis, Gingaspice, Wardron, Cameronmas214,
Regibox, Kingbob2, Popedawg, CounterVandalismBot, We4reLegion, Niceguyedc, HulleGranz, Italianboy931, Eybaybay, Goel madhur,
Jskleckner, Trivialist, Allr0und, Logan590, Marklar689, Sup chily monster, SimpleParadox, Cirt, Istiamar, Shantu123, Puchiko, Edwina
Storie, Liddlerebel, Breakmoved, Blossom the Awesome, DragonBot, Excirial, OracleGD, Oldrockx666, Cgeorge316, Joeikin, Cam809,
Danscool, Chotisornmas214, Technobadger, Raydomingo, THEODORMAS214, Suttipongkanasaimas214, Xklsv, Bentonmas214, Cenar-
ium, Dpiccuirro, Not Zilla3, Jotterbot, LOLPEAR, Hardcoregayslaveman, Jp5508, Mrguythefourth, Jivadent, Joke321~enwiki, I amm
Beowulf!, Kuka369, CMW275, Dekisugi, Greatflyingsock, Seth662, Dorgan65, Pamela Gardiner, Thehelpfulone, Expert at this, Thingg,
Ominousguardian, Tehmechapope, Aitias, YTMND64, Murali nmv, Musicmaniac15, NitroOx, Dickguertin, UrsaLinguaBWD, PCHS-
NJROTC, Rasmasyean, Burner0718, Vybr8, Grey666, Relly Komaruzaman, Oogadabaga, Slayerteez, Wawplok, Pianokid54, Psychcf,
Anonymasity, Zavon25, Rawrnessalphy, Spick And Span, John0101ddd, Dryice2ooo, Marcusvtos, Vjlenin, Gblxyz, Tylermillersucks, Jade
wezel, Jsoffer, Rflorenc, Codemastercode, Mangy Cheshire Cat, Freshbakedpie, Chabby, Petchboo, Whitehorse1413, Clothed so hardsm,
Little Mountain 5, Rreagan007, Sloud74, Avi1111, Good Olfactory, BK08, Eaaiscool, Kbdankbot, Blcarson, Bluejm2, Grayfell, Phille-
jay, Jkasd, Mabdul, Hirschtick3, Jgeer, Bandj, Capouch, M.nelson, Hyperthermia, Zellfaze, Sibbic, Bigbrotha3, Tothwolf, Blethering
Scot, AnotherDeadPerson, Vocation44, Technician2, Damiens.rf, CarsracBot, Joycloete, AndersBot, Fottry55i6, Favonian, Amitesh3011,
Guffydrawers, Numbo3-bot, St ttb, Equilibrium007, Rehman, WQDW412, Lightbot, DigitalSorcerer, SasiSasi, Jarble, JEN9841, Drew
thomas amirault, LuK3, Pointer1, Publicly Visible, Yobot, TaBOT-zerem, The Grumpy Hacker, Pineapple fez, Rud Hud Hudibras,
EnochBethany, KamikazeBot, Timir Saxa, ‫محبوب عالم‬, Squish7, Nybiker1, OregonD00d, AnomieBOT, Andrewrp, 1exec1, Jim1138, 90,
JaredInsanity, Tehori, Wikisanchez~enwiki, EryZ, RandomAct, Mahmudmasri, SusanBrackman, Citation bot, Carlsotr, Lord Aro, Arthur-
Bot, Quebec99, LilHelpa, Xqbot, Agather, PabloCastellano, Sman24, Khajidha, TechBot, DSisyphBot, Jmundo, Marxercise, Gahuntly,
GrouchoBot, Solphusion~enwiki, Eriktoto, Brandon5485, Mark Schierbecker, RibotBOT, SassoBot, Kesaloma, AlexPlante, Yoganate79,
Stratocracy, Jangirke, Ronz91, Justinwiki324, Natural Cut, Erik9, HackerOnSteroids69, Thinker jones, CommodoreAngryy, Dan larsen,
Cocklip, Jugdev, GliderMaven, 802geek, Tiramisoo, W Nowicki, Flubberdubbe, Raznice, Hunter-Ing, Bambuway, Louperibot, Cita-
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 409

tion bot 1, Manywindows, Littleduty2, MacMed, I dream of horses, ChrisJBenson, LittleWink, Spyke411, Rafaelluik, Lorenzocantoni,
Dana60Cummins, Eddowii, Wonsoh, Beao, Computerquip, Zhonghuo~enwiki, Bband11th, Ivasykus, Orenburg1, FoxBot, TobeBot, Trap-
pist the monk, DriveMySol, TangoFett, Lotje, Jarmihi, Duoduoduo, Phil A. Fry, Kitfoxxe, Tbhotch, Mileshalverson, FelixtheMagnificent,
RjwilmsiBot, TjBot, Ripchip Bot, HeinzzzderMannn, EmausBot, John of Reading, WikitanvirBot, Timtempleton, Tallungs, Dewritech,
Sharkticon Guy, Roscheray, Faolin42, MechaWave, Dcirovic, Gagarine, P. S. F. Freitas, Jasonanaggie, Mz7, Eagardea, Lolnob, Check-
ingfax, Liquidmetalrob, Bcanoerrecart, NexCarnifex, BWP1234, Ora Stendar, Aronoel, H3llBot, Drangob123, SporkBot, Rapidosity,
TcomptonMA, W163, Gsarwa, Septuaginta, Bomazi, ChuispastonBot, GermanJoe, NorCal764, Knochen, Senator2029, Will Beback Auto,
Jwhimmelspach, ClueBot NG, Cispare, Michaelmas1957, Incompetence, Odisha1, Movses-bot, Wikifun95, Dubious Irony, Frietjes, Cn-
tras, Hazhk, Aurora Glory Paradise, Joshua Gyamfi, Jebethe, Sirkh1, Aurelie Branchereau-Giles, Helpful Pixie Bot, Wbm1058, Bibcode
Bot, Someone35, Areeb cool, Anagramology, BG19bot, Pappy333, Flekkie, Wri0013, Kndimov, AvocatoBot, Zerbu, Davidiad, Bereziny,
Compfreak7, Cadiomals, Enervation, Floating Boat, Bfax, Zmasterodinternetz, In4matt, Mikeanthony1965, Meclee, Hamish59, Maurice
Flesier, Merritttttt, Minsbot, Oleg-ch, Bonkers The Clown, Pskelkar74, MeanMotherJr, Da9iel, ChrisGualtieri, Rezonansowy, Mogism,
Sri555666, Coolness107, Jemappelleungarcon, DouglasDean, Paspie, Jonhope123, Jo-Jo Eumerus, Combating Ignorance, NickKrammes,
Zalunardo8, Chrono85, Jennpliu, Neo Poz, Liketotaly, EllenCT, OldFishHouse, Thevideodrome, Atotalstranger, Bhasinnitish, Whizz40,
Fixuture, Abhikpal2509, Legendiii, Concord hioz, Monkbot, John Ozyer-Key, Hedieh Taraghi, Michael F 1967, Vincent60030, Prisencolin,
Evidense, YJAX, User26954344524345, Ithewanderer, Daniela C DeMaria, Aethyta, Radawebs, ChamithN, DangerousJXD, None159,
Rpot2, Lord Subro, Jlewis144, TechnologyExplorer, Kaufmanitay, Ermagerd117, StanfordLinkBot, Craftdraw, SoSivr, Rajahllame, Ly-
maniffy, Bryte507, Shuffleman117, Abb2webb, Hungryce, Prinsgezinde, KasparBot, MB298, Συντάκτης Βικιλεξικό, SandipBhandari12,
Arifys, Fdfexoex, ScholarM, Sandenig, Chenthil Vel, Singular Near, Hhuan, Zerogravity89, GreenC bot, Robot psychiatrist, Outaouais-
regina, Gzkefpro, Motivação and Anonymous: 2056
• Internet Control Message Protocol Source: https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol?oldid=729681745 Con-
tributors: The Anome, Drj, Wayne Hardman, Matusz, Fubar Obfusco, William Avery, PeterB, SarahEmm, Nixdorf, Shellreef, Kku,
Jnc, Robbot, Chealer, Fredrik, Romanm, Tea2min, Alerante, Mintleaf~enwiki, Niteowlneils, Beowulf king, Bgraabek, Bumm13, Huwr,
Anggarda, Canterbury Tail, Monkeyman, JTN, Pmsyyz, Vsmith, CanisRufus, Sietse Snel, Robotje, Polluks, Wrs1864, Jumbuck, Poweroid,
Caesura, Suruena, Grenavitar, Voxadam, Kenyon, S.emmerson, Nuno Tavares, Woohookitty, RHaworth, DrThompson, Fbriere, Gra-
ham87, Qwertyus, Tlroche, FlaBot, Fresheneesz, Sioux.cz, Alvin-cs, Chobot, YurikBot, Hawaiian717, Me and, Jengelh, Voidxor, SixSix,
DeadEyeArrow, Antiduh, ArielGold, TuukkaH, Mr link, KocjoBot~enwiki, Tjpayne, Hardyplants, Jasminek, Joseanes, Plustgarten, Vina-
iwbot~enwiki, Ugur Basak Bot~enwiki, Oskilian, Mahboud, Manifestation, Celtkin, Kvng, Courcelles, Unixguy, WeggeBot, Phatom87,
Cydebot, UncleBubba, Verdy p, Quibik, Thijs!bot, Dark knight, AntiVandalBot, Bradycardia, JAnDbot, Enjoi4586, Kgfleischmann, Gw-
ern, Ageekymonk, Verdatum, J.delanoy, Mange01, Athaenara, Andareed, Dnevil, VolkovBot, TXiKiBoT, Naveenpf, Goreatic, Piper8,
Whbstare, Rjgodoy, YordanGeorgiev, AlleborgoBot, Logan, Pointy haired fellow, Kbrose, BobHackett, SieBot, VVVBot, Flyer22 Re-
born, Tstojano, Ajk91, Denisarona, Martarius, ClueBot, LAX, Hari36533, VsBot, Adamianash, Alexbot, Jadhav.m, Monkeymaker,
Promethean, Mremail1964, SilvonenBot, Dsimic, Addbot, Favonian, ChenzwBot, HerculeBot, Luckas-bot, Yobot, Massimobeltramo,
Fraggle81, Amirobot, Nallimbot, Eliellou, Ranjithts, Jim1138, RokerHRO, Xqbot, PlaysWithLife, Forton, RibotBOT, Philleb, Electrocut,
Omar35880, FrescoBot, Wikisierracharlie, Ccie5000, FoxBot, RjwilmsiBot, B20180, Xmm0, Mayonaise15, K6ka, ZéroBot, John Cline,
Kalin.KOZHUHAROV, Jay-Sebastos, VictorianMutant, Voomoo, ClueBot NG, Nimiew, CocuBot, Zynwyx, MatthewIreland, Khazar2,
Lythamlatic, Jasubbey1, Bennettaur, Dave Braunschweig, Faizan, ArmbrustBot, Shrivas06, WikiJackool, Joshuaje1, Sangeshitou, DNPRO-
JECT, KasparBot, Fosskevin and Anonymous: 223
• Internet Engineering Task Force Source: https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force?oldid=724750849 Contribu-
tors: The Anome, Stephen Gilbert, RobLa, Css, LA2, Paul~enwiki, Olrick, Polimerek, Liftarn, Lquilter, Looxix~enwiki, Julesd, Glenn,
Hashar, Wikiborg, Magnus.de, Jnc, Shizhao, Shantavira, Robbot, Chealer, Noldoaran, Sunray, Zigger, Behnam, Alvestrand, Piotrus,
Am088, Icairns, Yakovsh, Now3d, Jrp, Rich Farmbrough, Reallycoolguy, Y(J)S, Paolopal~enwiki, Bender235, Spearhead, Coolcaesar,
Robotje, Paulehoffman, Blobglob, Suruena, Mindmatrix, Uncle G, Bkkbrad, Knuckles, Graham87, Rjwilmsi, Tim!, Koavf, Darguz Parsil-
van, FlaBot, Guanxi, Chobot, Zimbabweed, YurikBot, Wavelength, Borgx, FrenchIsAwesome, Howcheng, Scs, Rob evans, Matthewdingley,
Jules.LT, Ninly, E Wing, Jcmarcfl[email protected]~enwiki, SmackBot, FocalPoint, Bazza 7, Charlierichmond, Bluebot, Philosopher, Jon-
Harder, Cybercobra, Andrewpayneaqa, Zearin, IronGargoyle, P199, Joseph Solis in Australia, Paul Foxworthy, Tonyhansen, NickW557,
Lentower, Gregbard, Krauss, SusanLesch, Widefox, Akradecki, JAnDbot, Cjkporter, Magioladitis, Jlenthe, Livingthingdan, STBot, Adzi-
nok, Hardaker, Funandtrvl, VolkovBot, TXiKiBoT, Bob103051, Luksuh, Pigdog234, SieBot, BotMultichill, Flyer22 Reborn, Behind The
Wall Of Sleep, Cbl62, Hatster301, Athletic ro, 718 Bot, CodeCaster, Jeffreyschiller, Jovianeye, Addbot, Ghettoblaster, Mabdul, Toth-
wolf, Ridwan.redo, AnnaFrance, Jarble, Abhayakara, HerculeBot, Sonix, Legobot, Luckas-bot, Yobot, Amirobot, AnomieBOT, Rubinbot,
Coopkev2, Materialscientist, ArthurBot, Xqbot, Khajidha, Miracleworker5263, TruthPraiser, BuffStuffer, Aperson1234567, HJ Mitchell,
Lotje, Vrenator, EmausBot, WikitanvirBot, Gamliel Fishkin, ZéroBot, Wayne Slam, W163, Aldnonymous, ClueBot NG, Chester Markel,
Oddbodz, Be..anyone, Mark Arsten, Chmarkine, Whym, Khazar2, Mogism, Razibot, Michael V Gold (True), RaphaelQS, ArmbrustBot,
Hooah8787, Sofia Lucifairy, Trackteur, 2014Best and Anonymous: 91
• Internet Message Access Protocol Source: https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol?oldid=737980635 Contrib-
utors: Zundark, Koyaanis Qatsi, Christian List, Golem~enwiki, Defrenrokorit, Bdesham, Nixdorf, Liftarn, Yaronf, Julesd, Sinan~enwiki,
Jonik, ASk, Ryochiji, Wik, Shizhao, Finlay McWalter, Robbot, Chealer, RedWolf, Tim Ivorson, Yosri, Hgd, Honta, Giftlite, John-
josephbachir, Anton Mravcek, Jonabbey, Fleminra, Joconnor, Rick Block, Sdfisher, Mboverload, Rchandra, AlistairMcMillan, Falcon
Kirtaran, Espetkov, Joseph Spiros, Nomeata, LiDaobing, Robert Brockway, Pitr, Anirvan, Jlang, Hobart, EagleOne, JTN, Rich Farm-
brough, KneeLess, Pmsyyz, Smyth, Hhielscher, Chadlupkes, ZeroOne, Kaszeta, *drew, Joanjoc~enwiki, Mairi, Apollo2011, Robotje,
Unquietwiki, Wrs1864, Krellis, Guinness~enwiki, Jumbuck, Gary, Guy Harris, AzaToth, Thoric, Ronark, SidP, Suruena, Omphaloscope,
Blaxthos, Ron Ritzman, Mcsee, Karnesky, BårdBjerkeJohannessen, Oliphaunt, Armando, Timosa, Pol098, Jhartmann, Graham87, Sjö,
Rjwilmsi, Koavf, Allen Moore, FlaBot, PeconicSky, TheAnarcat, Kedadi, Gwydion1, HalifaxRage, Chobot, YurikBot, Hairy Dude, Hyad,
Red Slash, Sakurina, Gardar Rurak, Barefootguru, RussNelson, Grafen, Voidxor, Natkeeran, Bota47, Speedoflight, Erpingham, Rwxr-
wxrwx, Cedar101, Drable, Anclation~enwiki, David Biddulph, GrinBot~enwiki, SmackBot, Imz, Pgk, Charlesrh, Skizzik, El Cubano,
Bluebot, Keegan, Thumperward, Snori, MalafayaBot, Deli nk, Uthbrian, Omniplex, Ned Scott, Frap, Chlewbot, JonHarder, Addshore,
Mr.Z-man, Estephan500, Gkanch, Cybercobra, WintersChild, Mwtoews, Ts4z, Tfl, Zac67, Mouse Nightshirt, Trou, NongBot~enwiki,
Adam Marsh, Ktinga, Beetstra, Larrymcp, NaturalBornKiller, RG~enwiki, MTSbot~enwiki, Peyre, Koweja, Caiaffa, Eliashc, Lathspell,
Beno1000, Wsheward, Z4ns4tsu, Mloughran, Ivan Pozdeev, Walling, Danitaz, Pgr94, Chrisahn, Equendil, UncleBubba, L.Petrlik, Tawker-
bot4, Cosmoincarlow, Johayek, Glenn Anderson, Thickycat, SusanLesch, Escarbot, TravisHein, StevenMcCoy, Tgwizard, JAnDbot, Rsfor-
ward, Sophie means wisdom, R27182818, Enjoi4586, BlueRobot~enwiki, Ersalan, FisherQueen, P00r, Sagabot, Doodledoo, AlexJTaylor,
J.delanoy, TimoSirainen, NerdyNSK, Cpiral, AntiSpamBot, SJP, DaleKiefling, Juliancolton, Петър Петров, Ale2006, Fuzzygenius, Md-
cougar, VolkovBot, Areteichi, Tyler9xp, TXiKiBoT, Technopat, Intrigued-user, Jackfork, LeaveSleaves, Sciencewatcher, Billgordon1099,
410 CHAPTER 70. X.25

Haseo9999, WJetChao, Alaniaris, AlleborgoBot, Nagy, Theoneintraining, Kbrose, Arjun024, SieBot, Nubiatech, Nestea Zen, Martin
Kealey, Duplicity, Android Mouse, Jimthing, Faradayplank, ClueBot, Hadrianheugh, Squadri, Excirial, Jotterbot, LobStoR, Sdrtirs, Der-
Borg, V.s.mousavi, DumZiBoT, Danejasper, Brandonsturgeon, 13 of Diamonds, Nekiko, Avisp~enwiki, Nemec~enwiki, Addbot, Mab-
dul, Alexcat, Luckas-bot, Yobot, JackPotte, Ajh16, THEN WHO WAS PHONE?, KamikazeBot, Draney13, Eric-Wester, AnomieBOT,
Materialscientist, RobertEves92, Tktravis, ArthurBot, Xqbot, Wcoole, Hi878, ChristopherKingChemist, LAMurakami, Smallman12q,
Gzbr, Thehelpfulbot, Moloch09, I dream of horses, Jonesey95, Clarkcj12, EmausBot, Rolf the wolf, BabsiSnoecks, Oceans and oceans,
Cmh294, ZéroBot, Александр Цамутали, Westley Turner, Kiwi128, Palosirkka, Donner60, ClueBot NG, Helpful Pixie Bot, Fnordly,
Vagobot, Compfreak7, Klilidiplomus, Codename Lisa, Reatlas, Epicgenius, AbhishekGoel137, Ugog Nizdast, DrBungle, FockeWulf FW
190, Toohai, AKS.9955, TheQ Editor, GlutenFree123, KasparBot, Mrfridy, Fuchshuber and Anonymous: 368
• Internet Protocol Source: https://en.wikipedia.org/wiki/Internet_Protocol?oldid=736311903 Contributors: General Wesc, Bryan Derk-
sen, Zundark, The Anome, Tarquin, Andre Engels, Christian List, Aldie, Paul~enwiki, William Avery, Formulax~enwiki, Dwheeler,
Bdesham, Patrick, Nixdorf, Ixfd64, TakuyaMurata, CesarB, Looxix~enwiki, Ahoerstemeier, Haakon, Jdforrester, GaryW, Glenn,
Caramdir~enwiki, BAxelrod, Harvester, Timwi, Wik, Saltine, Jnc, Gamera2, Olathe, Chuunen Baka, Chealer, Noldoaran, Fredrik,
PedroPVZ, Hemanshu, Wereon, Borislav, Rsduhamel, Tea2min, ManuelGR, SmilingBoy, Giftlite, Brouhaha, Beefman, Kim Bruning,
Reub2000, Ferkelparade, Wikibob, Carlo.Ierna, Eequor, Python eggs, Tagishsimon, Latitudinarian, Antandrus, Dnas, Piotrus, Vanished
user 1234567890, Karol Langner, Dmaftei, Biot, Daniel Staal, Abdull, Trevor MacInnis, EagleOne, Mike Rosoft, Shamino, Imroy, CALR,
DanielCD, JTN, Urvabara, Rich Farmbrough, Wrp103, Naive cynic, Ardonik, Smyth, Cdyson37, Ceo, Paolopal~enwiki, El C, Hayabusa
future, Coolcaesar, Bobo192, Brim, Unquietwiki, SpeedyGonsales, Wrs1864, Helix84, Krellis, Sysiphe, Ogress, Poweroid, PaulHanson,
Ryanmcdaniel, Rgclegg, Echuck215, Kocio, Wtmitchell, BRW, Cburnett, Suruena, Max Naylor, Versageek, Jimgeorge, Woohookitty,
Mindmatrix, Mammad2002, Thorpe, JHolman, Cbdorsett, Hughcharlesparker, Jno, Stevey7788, Graham87, Wcourtney, Qwertyus, Casey
Abell, Demian12358, Vary, Vegaswikian, Yahoolian, Yamamoto Ichiro, FlaBot, RobertG, Intgr, Sperxios, Alvin-cs, Chobot, TkGy, An-
tiuser, Elfguy, Roboto de Ajvol, Hairy Dude, Stephenb, Manop, Yyy, Varnav, NawlinWiki, V-ball, Grafen, Jeff Carr, Maerk, Dead-
EyeArrow, Eclipsed, Anttin, Wknight94, Sandstein, Graciella, Zzuuzz, Closedmouth, Bobguy7, GraemeL, Attilios, SmackBot, Reedy,
Blue520, Hardyplants, Commander Keane bot, Aksi great, Gilliam, Skizzik, Anwar saadat, KD5TVI, MalafayaBot, Robocoder, A. B.,
JonHarder, Yidisheryid, Grover cleveland, Cybercobra, Melter, Nakon, Plustgarten, Jiddisch~enwiki, Warren, Where, Daniel.Cardenas,
Mion, Kukini, Supaplex~enwiki, Adagio Cantabile, Scientizzle, Gobonobo, Minna Sora no Shita, A-moll9, IronGargoyle, Camilo Sanchez,
Mikieminnow, Arkrishna, Kvng, Hetar, Shoeofdeath, Blehfu, Courcelles, Tawkerbot2, Justsee, Imcdnzl, Dgw, Phatom87, Cydebot, Con-
version script, UncleBubba, Bridgecross, Jack Phoenix, Thijs!bot, Epbr123, O, Mojo Hand, Escarbot, Cyclonenim, AntiVandalBot, Wide-
fox, Wayiran, Altamel, Altesys~enwiki, Ppchailley, JAnDbot, Dan D. Ric, Jheiv, Enjoi4586, Bouktin, Drugonot, Magioladitis, JamesB-
Watson, Kgfleischmann, Tiuks, Calltech, Gwern, Jackson Peebles, MartinBot, Poeloq, Angelo.biboudis, Aggelos.Biboudis, Felipe1982,
J.delanoy, Mange01, Iamregin, Brest, DrBag, Andareed, Liangent, FrummerThanThou, Katalaveno, Fish147, The Transhumanist (AWB),
Doria, Andywandy~enwiki, JavierMC, Goatbilly, Funandtrvl, JohnGrantNineTiles, Chinneeb, VolkovBot, Philip Trueman, TXiKiBoT,
Oshwah, Jackfork, Noformation, Bennor, Rkrikorian, Ilyushka88, ARUNKUMAR P.R, Rjgodoy, Brianga, Chenzw, Marr75, Allebor-
goBot, Nightraider0, EverGreg, Kbrose, SieBot, Richard Ye, Nubiatech, BotMultichill, Yintan, Bentogoa, Tezdog, Mahabub398, Oxy-
moron83, Byrialbot, Mailtomeet, Florentino floro, Pinkadelica, Denisarona, ClueBot, Bjornwireen, NGNWiki, RFST, Blanchardb, Otole-
mur crassicaudatus, DragonBot, Alexbot, Anon lynx, Coralmizu, PixelBot, Cynthia Rhoads, Yausman, Versus22, Johnuniq, Apparition11,
Erodium, DumZiBoT, Editorofthewiki, BodhisattvaBot, Defyant, NeoNorm, SkyLined, Karl McClendon, Kurniasan, Rabbit67890, Nub-
caike, Addbot, Some jerk on the Internet, Love manjeet kumar singh, Atethnekos, TutterMouse, Shlomiz, Scientus, LaaknorBot, Chamal
N, Glane23, Torla42, Jasper Deng, Teles, Aekton, SasiSasi, Jarble, Legobot, Luckas-bot, Yobot, Markr123, THEN WHO WAS PHONE?,
Jadounrahul, AnomieBOT, Jim1138, Galoubet, Materialscientist, The High Fin Sperm Whale, Tristantech, Xqbot, Addihockey10, Capri-
corn42, 4twenty42o, Ryamigo, I am Me true, Forton, Sjaak, Corruptcopper, Zarcillo, RibotBOT, Amaury, ‫شات صوتي‬, Sophus Bie,
SpaceRocket, Nageh, Krj373, Recognizance, GreenRoot, Sonicx059, Wikisierracharlie, DivineAlpha, I dream of horses, MastiBot, Serols,
Jauhienij, Jimys salonika, DixonDBot, Lotje, DARTH SIDIOUS 2, Onel5969, Noommos, Granbarreman, EmausBot, Sir Arthur Williams,
Dewritech, Racerx11, Baguettes, Vanished user zq46pw21, Tommy2010, VillemVillemVillem, Dcirovic, John Cline, Fæ, Nialldawson,
Lion789, Wayne Slam, Coasterlover1994, L Kensington, Mentibot, Shiftoften66, Senator2029, Petrb, TheDramatist, ClueBot NG, Nimiew,
Gareth Griffith-Jones, Nugzthepirate, CocuBot, Satellizer, FGont, Cverska, Rezabot, Widr, පසිදු කාවින්ද, 2w133, Northamerica1000, Al-
lecher, Bryanbuang1993, Jedysurya, MrBill3, Sudhir kumar garhwal, Winston Chuen-Shih Yang, IRedRat, Samwalton9, David.moreno72,
Scopecreep, Ducknish, JYBot, Limitmagic1, Wywin, Mlindner, Corn cheese, Reatlas, Joeinwiki, Faizan, DBhavsar709, Kaznovac, Camy-
oung54, Melonkelon, Tentinator, Maura Driscoll, 9445mid, Ginsuloft, Jsennek, UY Scuti, Weknowna, FrB.TG, Mr. Smart LION, Ki-
netic37, Tacmamaeujnayn, Devesh142a, Ssaz 12, Mehnames, ScrapIronIV, Cherdchai Iamwongsrikul, DanWiki1997, Timothyjoseph-
wood, Supdiop, Kim Oun, KasparBot, CAPTAIN RAJU, Nicoya67, Jfrank220, AriesNiNe, Jipdaskip gurugaint, RainFall, Erwin hidayat1
and Anonymous: 522
• Internet protocol suite Source: https://en.wikipedia.org/wiki/Internet_protocol_suite?oldid=737817181 Contributors: Damian Yerrick,
AxelBoldt, Tobias Hoevekamp, Matthew Woodcraft, Brion VIBBER, Mav, Zundark, The Anome, Tarquin, Koyaanis Qatsi, Etu, Gsl, XJaM,
Aldie, Matusz, Paul~enwiki, William Avery, Shii, Imran, B4hand, Mintguy, Branko, Nknight, Edward, Nealmcb, Michael Hardy, Nixdorf,
Ixfd64, Paul A, Ellywa, Ahoerstemeier, Haakon, Ronz, Typhoon, Theresa knott, Glenn, IMSoP, Palfrey, Arteitle, Edmilne, Timwi, Do-
radus, Zoicon5, Kaare, Saltine, Itai, Nv8200pa, Jnc, Ed g2s, Shizhao, Topbanana, Betterworld, Bloodshedder, Olathe, Robbot, TomPhil,
Yas~enwiki, RedWolf, Sunray, Hadal, Pps, Miles, Carnildo, Smjg, Kim Bruning, Wolfkeeper, Ferkelparade, Zigger, Marcika, Rick Block,
Niteowlneils, AlistairMcMillan, SWAdair, Tagishsimon, Golbez, Mendel, Beland, Dnas, Zfr, Biot, Daniel Staal, Chadernook, Ukexpat, Ab-
dull, Zondor, EagleOne, RevRagnarok, Mike Rosoft, Ta bu shi da yu, DanielCD, JTN, Rich Farmbrough, JesterXXV, Vsmith, DerekLaw,
Dmeranda, Jackqu7, Bender235, Tr606~enwiki, Plugwash, Violetriga, STHayden, Joanjoc~enwiki, Jantangring, Sietse Snel, Coolcaesar,
Smalljim, John Vandenberg, Xojo, Obradovic Goran, Wrs1864, Helix84, Krellis, Martyman, PioM, Mrzaius, Alansohn, Sully, Arcenciel,
Duffman~enwiki, Guy Harris, Nealcardwell, Darkhalfactf, Hoary, Kocio, Snowolf, Here, Rick Sidwell, Cburnett, Stephan Leeds, Suruena,
Evil Monkey, Fixman88, RaNo, Kusma, Freyr, Mattbrundage, Ericl234, MilesMi, Ramnath R Iyer, GaelicWizard, Woohookitty, Camw,
Ilario, ^demon, Wikiklrsc, Eyreland, Mckoss, Pfalstad, Leapfrog314, Mandarax, Runis57, Graham87, Magister Mathematicae, Casey
Abell, Jorunn, Sjakkalle, Rjwilmsi, KYPark, Johnblade, Weregeek, Xosé, Vegaswikian, Aapo Laitinen, Yamamoto Ichiro, Sheldrake,
RobertG, Nivix, Aliasptr, Cheesycow5, Otets, Intgr, Bmicomp, Chobot, DVdm, Bgwhite, SuperWiki, Albanaco, Wavelength, Hairy Dude,
Jimp, Mukkakukaku, Hyad, Bhavin, Stephenb, Manop, Cate, Rsrikanth05, Wimt, NawlinWiki, Barberio, Expensivehat, Dogcow, Cecil-
Ward, Layer~enwiki, Nick C, Tony1, Zwobot, Falcon9x5, Yudiweb, Tim Watson, Robost, Phgao, Maltest, Kevin, Katieh5584, Snaxe920,
Eptin, Finell, That Guy, From That Show!, Luk, Yakudza, Erik Sandberg, SmackBot, Paulkramer, KnowledgeOfSelf, Rayward, Unyoyega,
MeiStone, Thunderboltz, Elwood j blues, Ruthherrin, Canthusus, Bernard François, Gilliam, Locketine, Bluebot, SlimJim, Jprg1966,
Thumperward, Snori, EncMstr, Kungming2, Spmion, Rrelf, Vanis314, JonHarder, Gringo.ch, Wonderstruck, Radagast83, Cybercobra,
Richardwhiuk, Kasperd, HarisM, Drphilharmonic, James Mohr, Victor Liu, Reliablesources, Rodeosmurf, Tfl, Nasz, Tmchk, Esrever,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 411

Ana Couto, Doug Bell, Nhorton, Disavian, Breno, Hpnguyen83, Bezenek, CaptainVindaloo, Ckatz, Dicklyon, Kim Rubin, Waggers, Avant
Guard, Rserpool, Kvng, Lee Carre, Iridescent, Paul Koning, Fr34k, Matt Dunn, Tawkerbot2, Brian.fsm, CmdrObot, Imcdnzl, Oheckmann,
NE Ent, RobEby, Whereizben, Nmacu, Equendil, Cydebot, Peripitus, Krauss, Acceptus, Swhitehead, Indeterminate, Roberta F., Dumb-
BOT, NMChico24, Thijs!bot, Epbr123, Wikid77, Hcberkowitz, Headbomb, Electron9, JustAGal, Ekashp, Perfectpasta, Xeesh, Mentifisto,
AntiVandalBot, Konman72, Luna Santin, Widefox, Seaphoto, Smartse, Labongo, Storkk, JAnDbot, Harryzilber, Mwarren us, Holylamp-
posts, Acroterion, Enjoi4586, Magioladitis, Parsecboy, VoABot II, AuburnPilot, JamesBWatson, Swpb, Tedickey, AliMaghrebi, Jatkins,
Rich257, Jrogern, Avicennasis, Edwardando, Logictheo, Techpro30, Papadopa, Inhumandecency, Falcor84, Techmonk, GordonMcKin-
ney, MartinBot, Flexdream, BetBot~enwiki, R'n'B, TinaSDCE, J.delanoy, Pharaoh of the Wizards, Mange01, Public Menace, Skullketon,
AntiSpamBot, NewEnglandYankee, SJP, Mumphius, Inomyabcs, Ross Fraser, Ale2006, Funandtrvl, Meiskam, VolkovBot, TheOtherJesse,
Metaclassing, Philip Trueman, TXiKiBoT, Walor, Nxavar, Leekil, Donjrude, Anna Lincoln, Abdullais4u, Navedahmed123, Lova Falk,
Larree, Alireza.usa, EmxBot, Kbrose, CrinklyCrunk, Thw1309, SieBot, Ethanthej, Nubiatech, Yintan, Mothmolevna, Bentogoa, Martyvis,
EnOreg, Oxymoron83, Ydalal, Tmaufer, DavidDW, BenoniBot~enwiki, Ngriffeth, Svick, Superbeecat, Denisarona, Sitush, Elassint, Clue-
Bot, Zeerak88, Axcess, The Thing That Should Not Be, Rjd0060, Quinxorin, Alek Baka, CounterVandalismBot, Patilravi1985, Mzje,
DragonBot, Jusdafax, Anon lynx, Wiki104~enwiki, Eeekster, Zac439, Tyler, Shiro jdn, Cynthia Rhoads, Dorgan65, Thingg, Johnuniq,
Punjabi101, Dgtsyb, Thatguyflint, Addbot, Atethnekos, Jncraton, Coasting, Jmdavid1789, Glane23, Amungale, Favonian, West.andrew.g,
Tassedethe, Tide rolls, Lightbot, Krano, Globemasterthree, SasiSasi, Legobot, Luckas-bot, Yobot, TaBOT-zerem, Fmrauch, ArchonMag-
nus, Wadamja, AnomieBOT, Rubinbot, Jim1138, Piano non troppo, Law, Materialscientist, OttoTheFish, Citation bot, Aneah, Merlissimo,
Xqbot, TinucherianBot II, Oxwil, Jrtuenge, Karlos77, RibotBOT, SassoBot, Kyng, ‫شات صوتي‬, JediMaster362, Ctm314, Master Con-
jurer, FrescoBot, Weyesr1, ZNott, Kkj11210, Jonathansuh, Barnacle157, JMilty, Citation bot 1, Pokeywiz, I dream of horses, HRoestBot,
A8UDI, Cnwilliams, Weylinp, Pdebee, Yunshui, Renepick, Reaper Eternal, ArticCynda, Suffusion of Yellow, SnoFox, Sideways713,
DARTH SIDIOUS 2, EmausBot, John of Reading, Clark42, Solarra, K6ka, P. S. F. Freitas, Hasty001, StanQuayle, Anororn, The Nut,
Samjoopin, A930913, Aeonx, Cf. Hay, Staszek Lem, W163, GeorgeBarnick, Stefan Milosevski, Putdust, Jsoon eu, DASHBotAV, 28bot,
ClueBot NG, Mechanical digger, GlobalEdge 2010, Stahla92, Widr, HMSSolent, BG19bot, Northamerica1000, AvocatoBot, Zvezda1111,
Winston Chuen-Shih Yang, Tutelary, Rbhagat0, Enterprisey, Indinkgo, Lugia2453, Dave Braunschweig, DBhavsar709, Epicgenius, Red-
eyed demon, Rickh1219rh, PenlroINFS315, Hawkins88, No3mann, Dingdong44, Manul, Abhijith anil, Mr. Smart LION, B Rowanz,
User26954344524345, Haosjaboeces, Akin DSA, MattQuarneri, TeaLover1996, Mehnames, Zortwort, Honeysyrup, JonnieD, CAPTAIN
RAJU, Swaggggg456, Michael Reed, PHMKim and Anonymous: 741
• Internetworking Source: https://en.wikipedia.org/wiki/Internetworking?oldid=729433886 Contributors: Mav, The Anome, Aldie, Ahoer-
stemeier, CatherineMunro, Nickg, Pedant17, Jnc, Nurg, Giftlite, Zigger, Dnas, Deanos, Bobo192, Arthena, Melaen, Kbolino, Woohookitty,
Graham87, Yug, Aapo Laitinen, FlaBot, RobertG, DVdm, Borgx, Gardar Rurak, Bobyllib, Th1rt3en, That Guy, From That Show!,
SmackBot, Ashenai, DHN-bot~enwiki, JonHarder, Weregerbil, Luís Felipe Braga, Bushsf, Jadams76, AdultSwim, Iridescent, Erencexor,
Odie5533, Electron9, MER-C, Matthew Fennell, Mlewis000, ABF, Jamelan, Kbrose, SieBot, Sephiroth storm, Mygerardromance, Flam-
ingSilmaril, Tanketz, Excirial, Muhandes, Grim pim, Johnuniq, XLinkBot, Addbot, Fluffernutter, SpBot, Тиверополник, Luckas-bot,
KamikazeBot, AnomieBOT, Xqbot, Arlo Barnes, Arnold.Y, AlFReD-NSH, EmausBot, John of Reading, WikitanvirBot, K6ka, Szynaka,
J. Martin Wills, W163, ClueBot NG, O.Koslowski, HMSSolent, Clala09, Harmonicsonic, Jeroen Schrauwen, Nkansahrexford, Ginsuloft,
Mabandalone and Anonymous: 79
• IPX/SPX Source: https://en.wikipedia.org/wiki/IPX/SPX?oldid=719799070 Contributors: Maury Markowitz, Bob Jonkman, Stw, Fuz-
heado, Jnc, Nickshanks, Yacht, Snowdog, Jrdioko, Neilc, Rhobite, Naive cynic, Bezthomas, Kundor, Guy Harris, BBird, LFaraone, Blax-
thos, Postrach, Xyzzy288, Camw, Daira Hopwood, Marudubshinki, Lionel Elie Mamane, David H Braun (1964), Lukeonia1, Yurik-
Bot, Borgx, Nick Watts, EJSawyer, KnightRider~enwiki, Saravask, Unyoyega, MeiStone, Grawity, Frap, Cybercobra, Heywüd, Dev920,
Phatom87, Cydebot, Thijs!bot, Electron9, Escarbot, JAnDbot, Magioladitis, KILNA, Algotr, P4k, Pilum, Biasoli, John Nevard, Car-
riearchdale, Dgtsyb, Deineka, Addbot, Ghettoblaster, DoodleSpeed, Lightbot, Yobot, AnomieBOT, FrescoBot, Uncopy, FoxBot, Dinamik-
bot, John of Reading, Vgmddg, ClueBot NG, BG19bot, Compfreak7, Cyberbot II, YFdyh-bot, Asdlkfjsalkdgh, Music1201 and Anony-
mous: 65
• Java remote method invocation Source: https://en.wikipedia.org/wiki/Java_remote_method_invocation?oldid=730642970 Contributors:
Sfmontyo, Frecklefoot, Julesd, IMSoP, Big Bob the Finder, Itai, Robbot, RedWolf, Wlievens, TittoAssini, Jcttrll, Jonabbey, Fleminra,
Zoney, Quadell, Saucepan, Andreas Kaufmann, Abdull, Discospinster, Rich Farmbrough, Juntas, Fasten, Artur adib, LFaraone, Sega381,
Brighterorange, Cheesy123456789, FlaBot, BMF81, YurikBot, Luigi.bozzo, Cancan101, SteveLoughran, CPColin, Lt-wiki-bot, Smack-
Bot, Leeanderson, Vald, AutumnSnow, Nbarth, Audriusa, Volphy, Doug Bell, Momet, Roshan baladhanvi, Valodzka, Simon Brady, Herve-
girod, DavidLeeLambert, Wayiran, Esmond.pitt, SiobhanHansa, Bostonvaulter, MartinBot, In Transit, Klaus Trainer, SciAndTech, Synthe-
bot, SieBot, BotMultichill, VVVBot, Chringle, Osian.h, The Thing That Should Not Be, M4gnum0n, XLinkBot, Phoenix720, Stvaruzek,
Addbot, Jarble, Yobot, Kilom691, AnomieBOT, Rubinbot, Xqbot, JimVC3, Peter lawrey, FrescoBot, RedBot, RazielZero, LogAntiLog,
Dinamik-bot, KF9129, EmausBot, Bruynoogheb, Peaceray, Mr.fylfot, Aaditya025, ClueBot NG, TimElessness, Mark Arsten, Arunava03,
Paericksen, C5st4wr6ch, Gadhatharan, WhatDoYouSee, Zackisrad, Ghfgcgcfghgh, Kkbkkbkkb, Monkbot, Aloksbjain, Extremesarova,
Vidhyasahar T and Anonymous: 96
• Link layer Source: https://en.wikipedia.org/wiki/Link_layer?oldid=706872244 Contributors: Isomorphic, Chealer, Johnh, Wrs1864, Su-
ruena, David Woodward, McGeddon, Gilliam, Dicklyon, CapitalR, Jirka6, Enjoi4586, Bongwarrior, Jacobko, R'n'B, Mange01, Inomyabcs,
Inwind, Kbrose, SieBot, Kbdankbot, Addbot, Jafeluv, Chzz, Lightbot, Yobot, TaBOT-zerem, Royote, Xqbot, Sophus Bie, Psychlohexane,
Pinethicket, Rafostry, Jujutacular, Dewritech, Fred Gandt, Natttam, MrInfo2012, Helpful Pixie Bot, Wbm1058, Dave Braunschweig,
ArmbrustBot and Anonymous: 24
• Maximum transmission unit Source: https://en.wikipedia.org/wiki/Maximum_transmission_unit?oldid=731938195 Contributors:
JeLuF, JohnOwens, Julesd, Pedant17, Kaare, Rvalles, Tempshill, Topbanana, Babbage, Tea2min, ManuelGR, BenFrantzDale, Fleminra,
Mboverload, Dnas, Waskage, Abdull, EagleOne, Zaf, Mormegil, JTN, Jkl, Rich Farmbrough, Alistair1978, Plugwash, Richard W.M. Jones,
Unquietwiki, WaffleMonster, BRW, Danhash, Nightstallion, Kenyon, Kumble2904, Isnow, Dkleeman, Rjwilmsi, FlaBot, Ground Zero,
YurikBot, Wavelength, Borgx, Pi Delport, Shaddack, CecilWard, Xaje, Hgmichna, ZoFreX, CIreland, SmackBot, Ricojonah, Betbest1,
Gilliam, El Cubano, Thumperward, Dhammala, Darth Panda, Chameleons84, Xchbla423, PeteShanosky, Chlewbot, JonHarder, Aldaron,
DylanW, J.smith, Zac67, TenPoundHammer, Peyre, Kvng, Hu12, MS3FGX, Adambiswanger1, Jasrocks, Xcentaur, WeggeBot, Ham-
ster2.0, Jac16888, Cydebot, Xxsquishyxx, Thijs!bot, Epbr123, Tgwaltz, AntiVandalBot, Bigtimepeace, Xhienne, CosineKitty, Niclas
Wiberg, STBotD, N3ddy, X!, TXiKiBoT, Rei-bot, Milan Keršláger, SieBot, Dwandelt, WereSpielChequers, Enduser32, Flyer22 Reborn,
ClueBot, SchreiberBike, DumZiBoT, Andrewborrell, Dsimic, Addbot, CL, Skyschulz, Favonian, Yobot, AnomieBOT, ArthurBot, Xqbot,
SCΛRECROW, I2so4, 802geek, Itusg15q4user, Winterst, Btilm, Jandalhandler, Trappist the monk, Roy muzz, Onel5969, Suplamer,
412 CHAPTER 70. X.25

ChuispastonBot, MOM4Evr, Dfarrell07, Prondou, Conifer, Cyberbot II, Jamesx12345, Tentinator, StianOvrevage, Dai Pritchard, Zmalm-
gren, GreenC bot and Anonymous: 175
• Mealy machine Source: https://en.wikipedia.org/wiki/Mealy_machine?oldid=731347031 Contributors: Damian Yerrick, Michael Hardy,
Rp, Karada, Samw, Greenrd, Robbot, Jaredwf, Gandalf61, Ashley Y, Tea2min, DavidCary, Bigpeteb, Vina, Urhixidur, Karl Dickman,
Slady, Djordjes, Kbh3rd, Leithian, Qwertyus, Rjwilmsi, Allen Moore, Fresheneesz, Bgwhite, Personman, Zimbricchio, Trovatore, JulesH,
William R. Buckley, SmackBot, Adam majewski, SashatoBot, Wvbailey, Amenzix, Cloudwalking, Rizome~enwiki, CmdrObot, Cydebot,
Thijs!bot, WinBot, Rob Kennedy, Dereckson, David Eppstein, KylieTastic, Rei-bot, MohSaied, Prankstar008, Technion, Masgatotkaca,
Rrfwiki, Classicalecon, Elassint, Mild Bill Hiccup, TurionTzukosson, Sun Creator, Addbot, Cuaxdon, Leeaiwei, Luckas-bot, Theburn7,
AnomieBOT, Citation bot, Xqbot, Wparad, Felipebrahm, Arthur MILCHIOR, Iron0037, Fastilysock, Horcrux92, NameIsRon, Wikitan-
virBot, Tanner Swett, Thine Antique Pen, TYelliot, ClueBot NG, Widr, Helpful Pixie Bot, BG19bot, Adityagohad, BattyBot, Deltahedron,
Monkbot, Mohsen shafiei and Anonymous: 69
• Media access control Source: https://en.wikipedia.org/wiki/Media_access_control?oldid=728747249 Contributors: Youssefsan,
Notheruser, Angela, Evercat, Timwi, Zoicon5, Itai, GPHemsley, Robbot, Nurg, Giftlite, Joconnor, Alexander.stohr, Brianhe, A pur-
ple wikiuser, Zachlipton, Guy Harris, Caesura, Rick Sidwell, Cburnett, Suruena, Nuno Tavares, Woohookitty, DenesVadasz, Casey
Abell, ErikHaugen, HappyCamper, FlaBot, Intgr, Srleffler, Borgx, Stassats, NawlinWiki, Steven Hepting, Closedmouth, Extraordinary,
LeonardoRob0t, Sardanaphalus, Leon Hunt, KnightRider~enwiki, Irnavash, KelleyCook, ProveIt, Zanetu, Gilliam, @modi, Snori, Orange-
Dog, DHN-bot~enwiki, HarisM, Luís Felipe Braga, Khazar, Breno, Mr Stephen, Dicklyon, Arkrishna, Dominio~enwiki, Kvng, Arathald,
Beno1000, Mellery, Jesse Viviano, Cydebot, Djg2006, Tawkerbot4, Ebrahim, Thijs!bot, Dawnseeker2000, Widefox, JAnDbot, .anacond-
abot, Enjoi4586, Willy on Wheels over Ethernet, Lihui912, FDD, Mange01, Mojodaddy, Philip Trueman, Crazy Murdoc, PaulTanenbaum,
Figureskatingfan, Vitz-RS, JFSM~enwiki, Logan, Kbrose, SieBot, Nubiatech, Ghez, Bentogoa, Treekids, ClueBot, Gwalker nz, Jusdafax,
Mlaffs, Johnuniq, Pgallert, Dgtsyb, MystBot, Good Olfactory, Kbdankbot, Addbot, JEG14, Luckas-bot, TaBOT-zerem, Nallimbot, Xqbot,
Loosecannon93, GliderMaven, Nageh, W Nowicki, Tolly4bolly, RyanQuinlan, MerlIwBot, Avitesh, YiFeiBot, Pccicpccic and Anonymous:
112
• Moore machine Source: https://en.wikipedia.org/wiki/Moore_machine?oldid=731347153 Contributors: Michael Hardy, Rp, Delirium,
Timwi, Jaredwf, Naveen~enwiki, Fuelbottle, Tea2min, Connelly, DavidCary, Jrdioko, Bigpeteb, Vina, Karl Dickman, MakeRocketGoNow,
BrianWilloughby, RevRagnarok, Harej, Qwertyus, Allen Moore, Mathbot, Fresheneesz, MOF, Peter Grey, YurikBot, Benja, Sangwine,
JulesH, SmackBot, Adam majewski, Bluebot, Jeysaba, OrphanBot, SashatoBot, Tlesher, MedeaMelana, Pgadfor, Gingerjoos, Cydebot,
Thijs!bot, Headbomb, WinBot, Rob Kennedy, Dereckson, Dsigal, Phosphoricx, Magioladitis, Alienmercy, CommonsDelinker, VolkovBot,
AlleborgoBot, Technion, SieBot, Masgatotkaca, Mike Shepherd, MarcMutz, UKoch, BodhisattvaBot, Algebran, DiabolicQ, Addbot, Cuax-
don, AtheWeatherman, Biezl, Luckas-bot, Yobot, Freikorp, AnomieBOT, Materialscientist, Xqbot, Felipebrahm, Sjcjoosten, Ex Puexto,
Belchman, Morton Shumway, Panda-giant, Horcrux92, EmausBot, Helptry, Super48paul, Erianna, LordJeff, Donner60, Jeptx, Tijfo098,
ClueBot NG, AvocatoBot, Akim.demaille, Bkd.online, Dinesh.lei, Deltahedron, Vbergl, My name is not dave and Anonymous: 71
• Network congestion Source: https://en.wikipedia.org/wiki/Network_congestion?oldid=730062306 Contributors: The Anome, Jtk, Stw,
Radiojon, Jnc, Bloodshedder, Neilc, Mvuijlst, Per Olofsson, Wrs1864, Mc6809e, Woohookitty, JFG, Mandarax, GünniX, Mikeblas, SixSix,
QmunkE, Seifried~enwiki, MacsBug, SmackBot, JonHarder, Xofc, Peyre, Kvng, Imcdnzl, Billc.cn, Nick Number, LachlanA, Lfstevens,
JAnDbot, MER-C, Vigyani, Jim.henderson, STBotD, Inwind, Kbrose, Flyer22 Reborn, Tomkerswill, Loftenter, Arjayay, SilvonenBot,
Dsimic, Kbdavis07, Addbot, Graham.Fountain, Тиверополник, Luckas-bot, Yobot, AnomieBOT, Kypzto, LilHelpa, PabloCastellano, The
Evil IP address, FrescoBot, Fortdj33, Itusg15q4user, Gqqnb, Serols, Wschlitz, RA0808, Donner60, Rememberway, ClueBot NG, Nimiew,
Incompetence, Leblondleblond, Maadikhah, MsFionnuala, Mleoking, Khazar2, Cerabot~enwiki, Dough34, ScotXW, Meteor sandwich
yum, Philippe97, Rubbish computer, Akshayka and Anonymous: 41
• Operating system Source: https://en.wikipedia.org/wiki/Operating_system?oldid=735993689 Contributors: Damian Yerrick, Magnus
Manske, Brion VIBBER, Mav, Robert Merkel, The Anome, Tarquin, Stephen Gilbert, Jeronimo, Amillar, Awaterl, Andre Engels, Rmher-
men, Christian List, Fubar Obfusco, Ghakko, SolKarma, SimonP, Hannes Hirzel, Ellmist, Ark~enwiki, Heron, Hirzel, Olivier, Edward,
Ubiquity, Patrick, RTC, Ghyll~enwiki, D, Norm, Kku, Tannin, Wapcaplet, Ixfd64, Eurleif, Dori, Minesweeper, CesarB, Ahoerstemeier,
KAMiKAZOW, Gepotto, Kokamomi, Stevenj, Nanshu, Typhoon, Yaronf, Darkwind, Trisweb, Nikai, IMSoP, Rotem Dan, Evercat, Jordi
Burguet Castell, ²¹², Mxn, GRAHAMUK, Conti, Hashar, Htaccess, Dysprosia, Tpbradbury, Maximus Rex, Furrykef, Cleduc, Bevo,
Traroth, Shizhao, Gerard Czadowski, Joy, Stormie, AnonMoos, Olathe, Lumos3, Sewing, Branddobbe, Robbot, Noldoaran, Sander123,
Fredrik, RedWolf, Moondyne, Romanm, Lowellian, Stewartadcock, Rfc1394, SchmuckyTheCat, Texture, Blainster, Caknuck, Men-
dalus~enwiki, Kagredon, Tea2min, McDutchie, Alexwcovington, Martinwguy, Jpo, Giftlite, DavidCary, Kim Bruning, Kenny sh, Ævar
Arnfjörð Bjarmason, Tom harrison, Zigger, SheikYerBooty, Foot, No Guru, Enigmar007, CyborgTosser, Jfdwolff, Sdfisher, AlistairM-
cMillan, Falcon Kirtaran, VampWillow, Jaan513, Wiki Wikardo, Wmahan, K7jeb, Alexf, Bact, Kjetil r, Antandrus, Beland, Onco p53,
Kusunose, Ablewisuk, Am088, Karol Langner, 1297, Rdsmith4, APH, Bornslippy, Bbbl67, Zfr, Gschizas, Gscshoyru, Creidieki, Hen-
riquevicente, Jh51681, Hillel, Demiurge, Zondor, Squash, Grunt, Canterbury Tail, Bluemask, Gazpacho, Mike Rosoft, Rolandg, D6,
Ta bu shi da yu, Archer3, RossPatterson, Discospinster, Rich Farmbrough, Lovelac7, Florian Blaschke, Wk muriithi, HeikoEvermann,
Notinasnaid, SocratesJedi, Andrew Maiman, Dyl, Rubicon, ESkog, JoeSmack, Ylee, CanisRufus, Livajo, TyrelHa, MBisanz, Ben Web-
ber, El C, Phil [email protected], Mwanner, RoyBoy, EurekaLott, Triona, Dudboi, Coolcaesar, Wareh, Bastique, Afed, Bobo192,
Iamunknown, Viriditas, R. S. Shaw, Polluks, Jjk, Daesotho, Syzygy, Cncxbox, Kjkolb, Nk, Trevj, Minghong, Idleguy, Justinc, Nsaa,
Mdd, Jumbuck, Musiphil, Alansohn, Guy Harris, Conan, Uogl, Atlant, Jeltz, Andrewpmk, Riana, Stephen Turner, Gaurav1146, Wd-
farmer, Snowolf, Wtmitchell, Ronark, Gbeeker, Wtshymanski, Paul1337, Max Naylor, RainbowOfLight, LFaraone, Bsadowski1, Gortu,
Kusma, Freyr, Djsasso, Dan100, Markaci, Rzelnik, Kenyon, Sam Vimes, Woohookitty, Karnesky, Lost.goblin, Shreevatsa, Georgia guy,
TigerShark, Prophile, Ae-a, Thorpe, MattGiuca, Robert K S, Ruud Koot, JeremyA, Hdante, MONGO, Miss Madeline, Acerperi, Rober-
twharvey, Schzmo, Eyreland, Meneth, Umofomia, Waldir, Wayward, , Jbarta, Marudubshinki, Mandarax, Slgrandson, Graham87,
Cuvtixo, BD2412, MC MasterChef, Kbdank71, CarbonUnit, Jclemens, Brolin Empey, Gorrister, Rjwilmsi, Dosman, Koavf, Attitude2000,
Raffaele Megabyte, Alll~enwiki, OKtosiTe, Ian Dunster, MarnetteD, Sango123, DirkvdM, Fish and karate, SNIyer12, Titoxd, Ian Pitch-
ford, Mirror Vax, Pruefer, SchuminWeb, RobertG, Ground Zero, Latka, Winhunter, Crazycomputers, RexNL, Gurch, Patato, Ayla, Intgr,
Zotel, Ahunt, BMF81, Tarmo Tanilsoo, Qaanol, Theshibboleth, King of Hearts, Chobot, SirGrant, Celebere, DVdm, Cactus.man, Car-
losvigopaz, Roboto de Ajvol, YurikBot, Wavelength, TexasAndroid, Hawaiian717, RattusMaximus, X42bn6, Daverocks, Logixoul, De-
stroyerPC, Arado, Gardar Rurak, SpuriousQ, Lar, Hansfn, Stephenb, Gaius Cornelius, Rsrikanth05, Cpuwhiz11, Canageek, Dmlandfair,
Big Brother 1984, NawlinWiki, Shreshth91, Wiki alf, Astral, Grafen, Ang3lboy2001, Jaxl, SivaKumar, RazorICE, Ino5hiro, Nick, Xd-
enizen, Moe Epsilon, Mikeblas, MarkSG, Tony1, Joshlk, Dasnov, DeadEyeArrow, Gogodidi, Ke5crz, Oliverdl, Elkman, Nlu, Mike92591,
Wknight94, Dsda, Daniel C, Floydoid, Phgao, TheguX, Zzuuzz, Tokai, Clindhartsen, Theda, Closedmouth, E Wing, KGasso, Anouymous,
Josh3580, Charlik, JoanneB, Alasdair, LeonardoRob0t, Fram, JLaTondre, Fsiler, Chris1219, Ilmari Karonen, Katieh5584, Simxp, Meegs,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 413

NeilN, Delinka, Teply, Rayngwf, Tyomitch, Arcadie, Kimdino, Luk, Davidam~enwiki, Sardanaphalus, SmackBot, Drummondjacob, Mat-
tieTK, Smadge1, Captain Goggles, Aim Here, Julepalme, KAtremer, Incnis Mrsi, Caminoix, Reedy, Ashley thomas80, KnowledgeOf-
Self, Hydrogen Iodide, Unyoyega, Lvken7, Rokfaith, Blue520, WilyD, Jfg284, KocjoBot~enwiki, Chairman S., Matthuxtable, Jedikaiti,
Monz, BiT, Alsandro, Andrewkantor, Müslimix, Yamaguchi , Macintosh User, SmackEater, Gilliam, Ohnoitsjamie, Hmains, Betacom-
mand, Cybiko123, Ennorehling, ERcheck, JSpudeman, JorgePeixoto, BenAveling, Guess Who, Andyzweb, GoneAwayNowAndRetired,
Bluebot, Bidgee, Unbreakable MJ, DStoykov, Badriram, Thumperward, DJ Craig, Mnemoc, Miquonranger03, MalafayaBot, AlexDitto,
Jerome Charles Potts, Lexlex, Letdorf, Omniplex, Vbigdeli, Baronnet, DHN-bot~enwiki, Charles Nguyen, MovGP0, Philip Howard, Darth
Panda, Cfallin, Verrai, FredStrauss, Emurphy42, Schwallex, Rrelf, J00tel, Can't sleep, clown will eat me, Милан Јелисавчић, Frap,
Onorem, Skidude9950, Parasti, Nixeagle, Sommers, Snowmanradio, JonHarder, Thecomputist, Yidisheryid, Benjamin Mako Hill, DrDnar,
Yoink23, Addshore, Flubbit, Kcordina, Edivorce, Mr.Z-man, Slogan621, SundarBot, Easwarno1, Paul E T, Grover cleveland, Crboyer,
Khoikhoi, World-os.com, Cybercobra, Jhonsrid, Nakon, VegaDark, MisterCharlie, Tompsci, Warren, Renamed user 8263928762779,
Huszone, Tomcool, Mwtoews, Leaflord, Kidde, Sigma 7, LeoNomis, Ck lostsword, Fyver528, Qwerty0, The undertow, SashatoBot, Lam-
biam, Harryboyles, Cdills, Kuru, RTejedor, Vincenzo.romano, Sir Nicholas de Mimsy-Porpington, Linnell, Edwy, Kashmiri, Joffeloff,
Goodnightmush, Antonielly, KenBest, IronGargoyle, Ben Moore, Camilo Sanchez, Tom Hek, Chrisch, Aaronstj, Hanii Puppy, Load-
master, JHunterJ, Ems2, Noah Salzman, Ehheh, Nayak143, Manifestation, Tdscanuck, MTSbot~enwiki, Rlinfinity, Wwagner, Lucid,
Rubena, Emx~enwiki, Iridescent, Casull, Twas Now, Golfington, Beno1000, Jfayel, Zlemming, Courcelles, Linkspamremover, Desola-
tor12, Slobot, Tawkerbot2, Alegoo92, Gumbos, Cartread, Tgnome, EvilRobot69, Fvasconcellos, J Milburn, JForget, James pic, Ahy1,
Unixguy, CmdrObot, Deon, Ale jrb, Raysonho, Mattbr, Flonase, Makeemlighter, Btate, Kev19, Charles dye, RockMaster, Michael B.
Trausch, NE Ent, SolarisBigot, SpooK, TempestSA, Karimarie, Mblumber, Krauss, A876, Oosoom, Mortus Est, Michaelas10, Gogo
Dodo, Travelbird, David Santos, TheWorld, Corpx, Spanglegluppet, Medovina, Odie5533, Kotiwalo, Dynaflow, Christian75, Chrislk02,
DarkLink, Trevjs, Sp, After Midnight, Omicronpersei8, Vanished User jdksfajlasd, Landroo, Maziotis, Rbanzai, Nrabinowitz, JamesAM,
Littlegeisha, Thijs!bot, Epbr123, Kubanczyk, Jobrad, Qwyrxian, Ultimus, Anshuk, N5iln, Jdm64, Ursu17, Marek69, James086, Doyley,
Optimisticrizwan, TommyB7973, Ideogram, TurboForce, CharlotteWebb, CarbonX, Libertyernie2, SusanLesch, Ablonus, Sean William,
TarkusAB, Dawnseeker2000, AlefZet, Escarbot, Dzubint, KrakatoaKatie, AntiVandalBot, Mike33, Luna Santin, Widefox, Guy Macon,
Seaphoto, QuiteUnusual, ForrestVoight, Prolog, Memset, [email protected], PhJ, Credema, Sridip, Yellowdesk, Alphachimpbot, Jstirling,
MichaelR., Storkk, Eleete, MikeLynch, Ioeth, JAnDbot, Chaitanya.lala, SuperLuigi31, Leuko, Numlockfishy, DuncanHill, NapoliRoma,
Ethanhardman3, MER-C, Arch dude, Nvt~enwiki, Socalaaron, Hut 8.5, Greensburger, Knokej, Adams kevin, Bookinvestor, SteveSims,
Raanoo, Bencherlite, Pierre Monteux, RogierBrussee, Jaysweet, Bongwarrior, VoABot II, Nyq, JamesBWatson, Marko75, SHCarter, Ka-
jasudhakarababu, PeterStJohn, Lucyin, Sedmic, Rami R, Inklein, Jatkins, Twsx, Bubba hotep, Manojbp07, Alanbrowne, Bleh999, In-
don, 28421u2232nfenfcenc, Creativename, Papadopa, User A1, Bwildasi, Glen, DerHexer, Wdflake, Janitor Starr, ChaoticHeavens, Call-
tech, Seba5618, Oroso, Stephenchou0722, Adriaan, AVRS, PhantomS, MartinBot, Miaers, BetBot~enwiki, Alexswilliams, Ethan.hardman,
Vanessaezekowitz, Kiore, Twitty666, Aladdin Sane, Comperr, Rettetast, Joemaza, Anaxial, Jonathan Hall, Mickyfitz13, R'n'B, Commons-
Delinker, Nono64, PrestonH, Cesarth~enwiki, Tgeairn, Erkan Yilmaz, Manticore, J.delanoy, Pharaoh of the Wizards, Trusilver, Uncle
Dick, Public Menace, Jesant13, DanDoughty, Johnnaylor, Jerry, Ian.thomson, Cpiral, Alexei-ALXM, Davidm617617, Dispenser, It Is Me
Here, Katalaveno, Mc hammerutime, Grosscha, Silas S. Brown, AntiSpamBot, Plasticup, Dvn805, Warut, NewEnglandYankee, Burkeaj,
Matthardingu, Super Mac Gamer, Cobi, Touch Of Light, Tatrgel, Bigdumbdinosaur, Mufka, Manassehkatz, Orrs, Tdrtdr, DigitallyBorn,
Althepal, Cometstyles, Mwheatland, Simon the Dragon, RB972, Vanished user 39948282, Treisijs, Dekard, MrPaul84, Bonadea, Useight,
TheNewPhobia, CardinalDan, Idioma-bot, Joecoolatjunkmaildotcom, Signalhead, Vox Humana 8', S.borchers, Hammersoft, VolkovBot,
Thedjatclubrock, Thomas.W, Riahc3, Murderbike, S10462, Rhyswynne, Jeff G., AlnoktaBOT, Brownga, Philip Trueman, Kyuuseishu,
TXiKiBoT, Oshwah, Masonkinyon, Amphlett7, Zidonuke, Manmohan Brahma, Neversay.misher, Hqb, NPrice, Ngien, Naohiro19 revert-
vandal, Wingnutamj, Vanished user ikijeirw34iuaeolaseriffic, Anna Lincoln, Ocolon, Lradrama, Melsaran, Mistman123, JhsBot, Sanfran-
man59, Jackfork, LeaveSleaves, Tpk5010, Seb az86556, Random Hippopotamus, 1yesfan, Hrundi Bakshi, Wiae, Kaustubh.singh, Maxim,
Rjgarr, Ngch89, Milan Keršláger, Lejarrag, BigDunc, Andy Dingley, Dirkbb, Jsysinc, Alten~enwiki, Wasted Sapience, Prashanthomesh,
Jpeeling, Benneman~enwiki, Rainsak, WJetChao, Synthebot, Falcon8765, Lbmarshall, Enviroboy, Duke56, RaseaC, Insanity Incarnate,
Brianga, Jackmiles2006, Zx-man, AlleborgoBot, Badhaker, Jimmi Hugh, Bhu z Crecelu, Logan, EmxBot, Deconstructhis, Kbrose, The
Random Editor, SPQRobin, SieBot, Coffee, Utahraptor ostrommaysi, Rektide, YonaBot, Euryalus, BotMultichill, EwokiWiki, Themoose8,
Zephyrus67, Zemoxian, Winchelsea, Josh the Nerd, RavenXtra, Rockstone35, DBishop1984, Triwbe, March23.1999, Yintan, Revent,
DavidHalko, Kaypoh, GrooveDog, Jerryobject, Purbo T, Buonoj, Android Mouse, Toddst1, Flyer22 Reborn, Oda Mari, Aruton, Oxy-
moron83, Antonio Lopez, Harry-, Techman224, BenoniBot~enwiki, Dantheman88, P.Marlow, Pithree, Sphilbrick, Echo95, Pinkadelica,
M2Ys4U, Nergaal, Denisarona, Escape Orbit, Martarius, ClueBot, Avenged Eightfold, GorillaWarfare, PipepBot, Wikievil666, The Thing
That Should Not Be, Alksentrs, MarioRadev, Rilak, Emwave, Jan1nad, ImperfectlyInformed, Arakunem, Drmies, Cp111, Frmorrison,
Unknown-xyz, Mild Bill Hiccup, E.mammadli~enwiki, Kathleen.wright5, Polyamorph, Boing! said Zebedee, McLovin34, Niceguyedc,
Jdrowlands, Mbalamuruga, Lyt701, Danieltobey, Ramif 47, The1DB, Asiri wiki, DragonBot, Rbakels, Excirial, Socrates2008, Jusdafax,
M4gnum0n, Andy pyro, Susheel verma, Eeekster, John Nevard, Kamanleodickson~enwiki, Winston365, Njuuton, Lightedbulb, Posix
memalign, Garlovel, Sun Creator, Tyler, Jotterbot, Josef.94, Tnxman307, Dekisugi, Youwillnevergetthis, Rmere, Yes-minister, Muralihbh,
La Pianista, Ninuxpdb~enwiki, OlurotimiO, Thingg, Andy16666, Callmejosh, Aitias, Bagunceiro, Mdikici, Johnuniq, SF007, Kerowhack,
DumZiBoT, XLinkBot, Aaron north, Spitfire, MarmotteNZ, Stickee, Rror, Agentlame, Rreagan007, Klungel, Skarebo, WikHead, Erkin-
Batu, NellieBly, Galzigler, KenshinWithNoise, Alexius08, Kgoetz, Osarius, HexaChord, JimPlamondon, CalumH93, Ratnadeepm, Ghet-
toblaster, NNLauron, AVand, Wluka, Donhoraldo, Love manjeet kumar singh, Melab-1, Mabdul, Ente75, Non-dropframe, Raywil, Toth-
wolf, Grandscribe, Elsendero, Ronhjones, CanadianLinuxUser, Scherr, Debloper, Lindert, Ka Faraq Gatri, MrOllie, Download, Eivind-
bot, LaaknorBot, Chamal N, CarsracBot, EconoPhysicist, M.r santosh kumar., Glane23, AnnaFrance, Favonian, Kyle1278, LinkFA-Bot,
Jasper Deng, Manickam001, Tide rolls, Luckas Blade, Teles, Gail, Jarble, Legobot, Wisconsinsurfer, Luckas-bot, Yobot, Applechair,
WikiDan61, 2D, OrgasGirl, Senator Palpatine, Josepsbd, II MusLiM HyBRiD II, PlutosGeek, 2nth0nyj, Washburnmav, Mmxx, THEN
WHO WAS PHONE?, Nallimbot, Sven nestle, Golftheman, Baron1984, Timir Saxa, Knownot, Masharabinovich, Amicon, Quarkuar,
TestEditBot, South Bay, Tempodivalse, Synchronism, Jorge.guillen, AnomieBOT, Create g77, 1exec1, Götz, Geph, Lucy-seline, Jim1138,
789455dot38, 9258fahsflkh917fas, Piano non troppo, AdjustShift, Law, Remixsoft10, RandomAct, Flewis, Materialscientist, Mcloud91,
9marksparks9, Twistedkevin, Felyza, Rabi Javed, Johnny039, Waterjuice, GB fan, Ashikpa, Xqbot, TheAMmollusc, Holden15, Capri-
corn42, CoolingGibbon, Biometricse, Nasnema, Mononomic, Jeffwang, Inferno, Lord of Penguins, HDrake, Pmlineditor, Nayvik, Ribot-
BOT, Kyng, Oroba, Karolinski, Cul22dude, Sophus Bie, Sidious1741, Maitchy, N419BH, Bstarynk, =Josh.Harris, Shadowjams, Chatul,
Astatine-210, Kevin586, Endothermic, Jerrysmp, Lkatkinsmith, Captain-n00dle, Erickanner, FrescoBot, OspreyPL, Ashleypurdy, Tri-
maine, Pepper, Mthomp1998, Fobenavi~enwiki, Gauravdce07, Michael93555, Cps274203, Ishanjand, Photonik UK, Clsin, Jjupiter100,
Kwiki, Dhtwiki, WellHowdyDoo, DivineAlpha, Safinaskar, Citation bot 1, Skomes, DrilBot, Pinethicket, I dream of horses, Abazgiri, Vice-
narian, Elockid, AR bd, 10metreh, Martin smith 637, Skyerise, Ngyikp, Bfirsh, Jschnur, RedBot, MastiBot, Serols, Chikoosahu, Meaghan,
414 CHAPTER 70. X.25

Ltomuta, Gtgray1948, Merlion444, White Shadows, Tim1357, Wormsgoat, TobeBot, Trappist the monk, SchreyP, Yunshui, Zonafan39,
‫ئاراس نوری‬, Mptb3, Javierito92, Dinamik-bot, Vrenator, TBloemink, MrX, SeoMac, Defender of torch, Ansumang, Aoidh, Ondertitel,
DeDroa, Rro4785, WikiTome, Weedwhacker128, Lysander89, Tbhotch, Reach Out to the Truth, Jesse V., Programming geek, DARTH
SIDIOUS 2, Dexter Nextnumber, SirGre, Alextyhy, Jfmantis, Onel5969, Kjaleshire, Mean as custard, Mppl3z, TjBot, Pontiacsunfire08,
Stealthmartin, BjörnBergman, Sweet blueberry pie, Sarikaanand, DiaNoCHe, Francis2795, Lordmarlineo, Slon02, Urvashi.iyogi, Deagle
AP, Rollins83, N sharma000, Vinnyzz, EmausBot, Gfoley4, Tasting boob, Odell421, SampigeVenkatesh, GoingBatty, RA0808, Cookdn,
Nwusr123log, Mrankur, CaptRik, NotAnonymous0, Tommy2010, Elvenmuse, Wikipelli, Dcirovic, Jasonanaggie, Alisha.4m, Werieth,
ZéroBot, John Cline, Ida Shaw, Josve05a, Parsonscat, MithrandirAgain, Enna59, NicatronTg, EdEColbert, Bbuss, Ferrenrock, Lt monu,
Vorosgy, Fred Gandt, Hazard-SJ, Bijesh nair, Can You Prove That You're Human, Demonkoryu, Utilitytrack, Tolly4bolly, Thine Antique
Pen, W163, Eab28, Icefirearceus, Arman Cagle, THeReDragOn, OllieWilliamson, L Kensington, Bachinchi, Gsarwa, Donner60, Wik-
iloop, Djonesuk, Puffin, Adityachodya, ChuispastonBot, Wakebrdkid, GrayFullbuster, Sven Manguard, DASHBotAV, Rocketrod1960,
Blu Aardvark III, Jekyllhide, Cgt, Sonicyouth86, Petrb, MetaEntropy, ClueBot NG, Cwmhiraeth, Nothingisoftensomething, Frankdushan-
tha, JetBlast, Matthiaspaul, NULL, Satellizer, Sparkle24, Dhardik007, Adair2324, WorldBrains, SunCountryGuy01, Feedintm, Doh5678,
Sainath468, Muon, Mesoderm, O.Koslowski, Geekman314, 149AFK, Joshua Gyamfi, CaroleHenson, Alenaross07, Widr, WikiPuppies,
Ashish Gaikwad, Sharanbngr, Lawsonstu, Friecode, Cllnk, Helpful Pixie Bot, Jijojohnpj, Mujz1, පසිඳු කාවින්ද, Ndavidow, Calabe1992,
Wbm1058, Karabulutis252, Sunay419, Altay437, Muehlburger, Lowercase sigmabot, Lifemaestro, BG19bot, Pcbsder, Integralexplora,
Northamerica1000, Who.was.phone, MusikAnimal, Snow Rise, Abhik0904, FutureTrillionaire, Atomician, CimanyD, Yowanvista, Dain-
omite, Aranea Mortem, Bcxfu75k, Upthegro, Lmmaaaoooo, Glacialfox, Isacdaavid, GeneralChrisV, Jkl4201, Achowat, Vikrant manore,
ItsMeowAnywhere, Iswariya.r, SupernovaExplosion, Sharkert, Pratyya Ghosh, Cyberbot II, Fronx, DreamFieldArts, Meowmeow8956,
Macintosh123, MadGuy7023, JYBot, TravellerQLD, Dexbot, Sakariyerirash, Kushalbiswas777, FoCuSandLeArN, Codename Lisa, Zii-
ike, Webclient101, Mualif02, 12Danny123, Nozomimous, TwoTwoHello, Frosty, SFK2, Hair, Openmikenite, Sowlos, Harris james, Corn
cheese, Crossy1234, Epicgenius, Poydoy, Acetotyce, Carrot Lord, Pdecalculus, Sosthenes12, ArjunML, Arthurhkt, EngGerm12, AnthonyJ
Lock, Mjoshi91, Comp.arch, JRR Akumal, Melody Lavender, JustBerry, NottNott, Fercho333, AlexanderRedd, Samueljjc, Dannyruthe,
Bbirkinbine, Inaaaa, FrB.TG, TheWiki122, Monkbot, Ganesh1997141, Augbog, Dsprc, JoeHebda, TerryAlex, NQ, Offy284, Suspender
guy, Aethyta, Lycanewolfe, Nelsonkam, TranquilHope, ChamithN, Endlesss2014, Epicalagent56, Derpmeup, Trevor35on, Mathewisgreat,
Epigogue, Ign christian, Kethrus, ToonLucas22, Prakashmeansvictory, Harshkohli1, Kharl denis, Infinite0694, OSMAX20, KasparBot,
Jamesmaclachlan, RippleSax, Qazi Umar FarooqKing, Squingo44, Jainishita, Ralphw, Wywyit, Jay1818, Thallyace, Risc64, Satyaki
Mukherjee (Rik), Nanaymo09090909, Amankesarwani, Wulfan Sravotsk, Nickrascal, Cpraveer, Coolindore2011, Wwsaa, Hauntedmath,
Starglider1, Song Syphan, CLCStudent, Reversepopo, Amitshora, Unisankar and Anonymous: 2504

• OSI model Source: https://en.wikipedia.org/wiki/OSI_model?oldid=735872701 Contributors: Damian Yerrick, AxelBoldt, Bryan Derk-
sen, The Anome, Stephen Gilbert, Manning Bartlett, Amillar, Andre Engels, Gsl, Aldie, Nate Silva, M~enwiki, William Avery, Davi-
dLevinson, Heron, B4hand, Edward, PhilipMW, Michael Hardy, Chris-martin, MartinHarper, Todd, Looxix~enwiki, Mkweise, Ahoerste-
meier, Haakon, Ronz, Nanshu, Glenn, Bogdangiusca, Netsnipe, IMSoP, Evercat, EdH, JidGom, Mulad, Markb, Emperorbma, Fuzheado,
Atreyu42, Markhurd, Tpbradbury, Grendelkhan, Jnc, Ed g2s, Rnbc, Nickshanks, Joy, Fvw, Johnleemk, Finlay McWalter, Phil Boswell,
Robbot, TomPhil, Friedo, Fredrik, Dumbledad, RedWolf, Postdlf, Wjhonson, Rfc1394, Puckly, Rursus, 75th Trombone, Hadal, David
Edgar, Rsduhamel, Filemon, David Gerard, Enochlau, Giftlite, Graeme Bartlett, DavidCary, Cokoli, Jpta~enwiki, Inkling, Tom harrison,
Lupin, Herbee, 0x6D667061, Everyking, CyborgTosser, Itpastorn, EJDyksen, Mboverload, AlistairMcMillan, Alvestrand, Tagishsimon,
Dave2, Gadfium, Pamri, Mendel, Inversetime, Ravikiran r, Eldiablo~enwiki, Sridev, Parakalo~enwiki, Tooki, Kramerino, Lazarus666, Pa-
parodo, Jcw69, Slrobertson, Kevin Rector, Trevor MacInnis, Moxfyre, Safety Cap, EagleOne, DmitryKo, Gazpacho, Mike Rosoft, Venu62,
Hes Nikke, Hgerstung, RossPatterson, Discospinster, Rich Farmbrough, Rhobite, DavidBarak, Lulu of the Lotus-Eaters, Demitsu, Paul Au-
gust, Techtoucian, BACbKA, Kaszeta, CanisRufus, Charm, MBisanz, Lankiveil, Bletch, GarethGilson, Sietse Snel, RoyBoy, Triona, Causa
sui, Rlaager, Bobo192, MarkWahl, Smalljim, John Vandenberg, Dreish, Che090572, AtomicDragon, Elipongo, Mikel Ward, Giraffedata,
SpeedyGonsales, Chirag, Nk, Bdamokos, Wrs1864, Helix84, Krellis, Nsaa, Mdd, Wayfarer, Ogress, Alansohn, Gary, Ghostalker, Snow-
Fire, Guy Harris, Free Bear, Lectonar, OSUKid7, Caesura, Snowolf, Simonfl, Wtmitchell, Rebroad, Wtshymanski, Rick Sidwell, Cburnett,
Stephan Leeds, Suruena, RainbowOfLight, Drat, Mikeo, Pethr, H2g2bob, MIT Trekkie, Pytom, Cxxl, Richwales, Beelaj, Mahanga, Ott,
Feezo, Stemonitis, OwenX, Woohookitty, Camw, LOL, Blueskies238, Ilario, Robert K S, Hdante, Kgrr, Cbustapeck, Eyreland, Prashan-
thns, Andybryant, Palica, Marudubshinki, Kesla, Runis57, Jannetta, Chupon, Jetekus, Josh Parris, Casey Abell, Ketiltrout, Dpark, John-
blade, Jake Wartenberg, Kinu, Inkhorn, CraSH, TAS, Tangotango, SMC, Vegaswikian, Kazrak, BDerrly, ElKevbo, N-Man, Fred Bradstadt,
Syced, Yamamoto Ichiro, Audunv, StuartBrady, FlaBot, Nivix, Ewlyahoocom, Eric Soyke, RobyWayne, Intgr, Fresheneesz, Alphachimp,
Chfalcao, Imnotminkus, Jmorgan, Chobot, Hatch68, Visor, DVdm, JesseGarrett, Bgwhite, Adoniscik, Gwernol, FrankTobia, Roboto de
Ajvol, McGinnis, YurikBot, Albanaco, Borgx, Sceptre, Josef Sábl cz, Joodas, Jonwatson, Bhny, Tyler.szabo, SpuriousQ, Kirill Lokshin,
Joebeone, Grubber, Shell Kinney, CambridgeBayWeather, Eleassar, Pseudomonas, Abarry, Friday, NawlinWiki, ENeville, Grafen, Ra-
zorICE, Nick, Marvin01, Brandon, Moe Epsilon, Kaz219~enwiki, Voidxor, Lomn, Davetrainer, Tony1, PyreneesJIM, Nethgirb, Rjstinyc,
Jessemerriman, Caerwine, MarkBrooks, Wknight94, FF2010, Whitejay251, Lt-wiki-bot, YolanCh, Ageekgal, Closedmouth, Iambk, Fang
Aili, Pb30, Abune, Bariswheel, JoanneB, ThunderBird, Allens, Honeyman, CIreland, Luk, Hiddekel, EJSawyer, Sardanaphalus, SmackBot,
Mmernex, Bonobosarenicer, Irnavash, ThreeDee912, Reedy, KnowledgeOfSelf, Bjelleklang, Brick Thrower, Delldot, Nejko, Jonathanwag-
ner, Gilliam, Psiphiorg, @modi, Djib, Delfeye, Alucard 16, Tree Biting Conspiracy, Stevage, Arroww, Octahedron80, Nbarth, Ctbolt,
Adibob, Thief12, TripleF, Can't sleep, clown will eat me, YamiKaitou, ZachPruckowski, JonHarder, Addshore, Kcordina, Edivorce,
Meepster, SundarBot, Adamantios, UU, Dohzer, Soosed, Apocryphite, Cybercobra, Fullstop, Valenciano, Shadow1, Tompsci, HarisM,
Insineratehymn, Weregerbil, Mwtoews, WoiKiCK, Ged UK, Dino.korah, Umair ahmed123, H34d~enwiki, Kuru, Microchip08, Natara-
juab, Rejax, Martinkop, Adj08, Sir Nicholas de Mimsy-Porpington, Tim Q. Wells, Nux, Goodnightmush, Highpriority, Noahspurrier,
Michael miceli, IronGargoyle, Morten, Vanished user 8ij3r8jwefi, MarkSutton, Krampo, Yms, Mr Stephen, Dicklyon, Kim Rubin, Wag-
gers, Lachlancooper, Anonymous anonymous, IReceivedDeathThreats, Ryulong, Wrlee~enwiki, Citicat, Nbhatla, Kvng, Rcannon100, Lee
Carre, Hetar, Iridescent, Penno, Shoeofdeath, Beno1000, Courcelles, Drwarpmind, Tfinneid, Danlev, Tawkerbot2, Ouishoebean, Stephen-
Falken, Ryt, The Haunted Angel, Mmdoogie, InvisibleK, Sakurambo, KerryVeenstra, CmdrObot, Ale jrb, Nitecruzr, Scohoust, Lighthead,
Naishadh, Andkore, RobEby, Phatom87, Myheadspinsincircles, Mattalyst, Travelbird, Yuokool12, Maguscrowley, Odie5533, Tawkerbot4,
Mattjgalloway, DumbBOT, Chrislk02, Eazy007, Alaibot, Biblbroks, Scolobb, Omicronpersei8, JodyB, Epbr123, Rohwigan03, Jhilving,
Daniel, N5iln, Hcberkowitz, Amitbhatia76, JMatthews, CynicalMe, Marek69, John254, Tellyaddict, Iviney, Ajo Mama, RichardVeryard,
Kaaveh Ahangar~enwiki, Zachary, Dzubint, Turb0chrg, Qexter, KrakatoaKatie, AntiVandalBot, Majorly, Luna Santin, Fjpanna, Seaphoto,
CDima, BommelDing~enwiki, JeTataMe, Alphachimpbot, Graham.rellinger, Myanw, Gökhan, Caper13, JAnDbot, Niaz, Vmguruprasath,
Dereckson, MER-C, Dcooper, LittleOldMe, Enjoi4586, Ideoplex, Bakilas, VoABot II, Ishikawa Minoru, RoscoMck, Davidjk, James-
BWatson, Mbc362, Tedickey, Ifroggie, Panser Born, Animum, Cyktsui, Dili, Mtd2006, MetsBot, Logictheo, Schumi555, BenLiyanage,
WLU, SineChristoNon, Patstuart, Micahcowan, 0612, S3000, Flowanda, MartinBot, Nolyann, Naohiro19, Rettetast, Charles Edward, Ryan
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 415

au, Ore4444, Cputrdoc, Markolinsky, Jschoon4, Smokizzy, RockMFR, J.delanoy, Mange01, Carre, SaxicolousOne, Uncle Dick, Public
Menace, Mr Elmo, Saicome, Dispenser, Katalaveno, DJPohly, Skier Dude, Gurchzilla, Swapcouch, AntiSpamBot, Tarekradi, Kraftlos, Wil-
son.canadian, Jrodor, Lordeaswar, Cometstyles, Inomyabcs, Wily duck, Inwind, S (usurped also), Boikej, Pluyo8989, Mlewis000, Lights,
HamatoKameko, 28bytes, GreYFoXGTi, VolkovBot, Wire323, ABF, Adityagaur 7, Jeff G., Speaker to Lampposts, Lear’s Fool, Meta-
classing, Saddy Dumpington, Khat17, Philip Trueman, DoorsAjar, Oshwah, BuickCenturyDriver, DSParillo, GDonato, Dmottl, Chim-
pex, Anna Lincoln, DennyColt, Leafyplant, BwDraco, PDFbot, BotKung, VidGa, Ibenr, Rjgodoy, Aslambasha09, Coriron, Ayengar,
Sunilmalik1107, Spitfire8520, Henrikholm, AlleborgoBot, PGWG, Jchristn, CMBJ, LOTRrules, Kbrose, SieBot, Mikemoral, Nubiat-
ech, Scarian, Jauerback, Caltas, Matthew Yeager, Triwbe, Yintan, GlassCobra, Bobdrad, Happysailor, Flyer22 Reborn, EnOreg, Oxy-
moron83, Arunachalammanohar, Tpvibes, Steven Crossin, Wishingtown~enwiki, Patrikor, Rkarlsba, StaticGull, ProPuke, Denisarona,
Troy 07, ClueBot, GorillaWarfare, The Thing That Should Not Be, Postmortemjapan, Think4amit, Lawrence Cohen, Unbuttered Parsnip,
Adrianwn, LizardJr8, Anjola, Pmorkert, Puchiko, Andjohn2000, Pointillist, DragonBot, Excirial, Throttler, Alexbot, Jusdafax, Anon
lynx, Erwinkarim, Fleg31789, NuclearWarfare, Arjayay, Jotterbot, Patch1103, DeltaQuad, Botsjeh, Morel, Isthisthingworking, Muro Bot,
Zoobee79, Thingg, Aitias, 7, Subfrowns, Versus22, Mr.ghlban, Mcnuttj, Rgilchrist, Johnuniq, SoxBot III, Apparition11, Bücherwürm-
lein, DumZiBoT, FreshPrinz, XLinkBot, Jovianeye, Tbsdy lives, Logthis, Dgtsyb, Karpouzi, Alexius08, Hellomarius, Jdrrmk, Tranzz,
HexaChord, Bojer~enwiki, Addbot, Mobius R, Willking1979, Akiyukio, 1337 JN, Balajia82, Tcncv, Bzimage.it, Friginator, Syntaxsys-
tem, Djmoa, Scientus, Vishnava, CanadianLinuxUser, NjardarBot, Amtanoli, Cst17, MrOllie, The Athlon Duster, Ottosmo, Evillawng-
nome, Roux, Doniago, TinyTimZamboni, Lockcole, Tide rolls, OlEnglish, Teles, Zorrobot, MuZemike, David0811, Wireless friend,
Another-anomaly, Dcovell, Peni, , Enduser, Angrysockhop, ZX81, Yobot, WikiDan61, Karelklic, Fraggle81, Cflm001, Manishar
us, Therumakna, THEN WHO WAS PHONE?, Brougham96, Gafex, Tempodivalse, AnomieBOT, Duey111, Naresh jangra, Killiondude,
Jim1138, CraigBox, Kingpin13, Ulric1313, Mikeyh56, RandomAct, Flewis, Materialscientist, RobertEves92, ℍuman, 90 Auto, Citation
bot, ShornAssociates, E2eamon, Roux-HG, Crimsonmargarine, Gasp01, Milind m2255, MauritsBot, Xqbot, Saad ziyad, Capricorn42, Nfr-
Maat, Jeffrey Mall, DSisyphBot, Shrofami, AbigailAbernathy, Fuzzball24816, Nasa-verve, GrouchoBot, AVBOT, Wizardist, Rsiddharth,
Shirik, Mathonius, Kallaspriit, Mmmeg, Theelmgren, Shadowjams, Joaquin008, Sesu Prime, A.amitkumar, FrescoBot, DrSpice, Oita2001,
802geek, Advancedtelcotv, Itusg15q4user, VS6507, Kyllys, Recognizance, Nisavid, Runtux, Geek2003, Kismalac, Eliezerb, Vk anantha,
Originalharry, DrDOS, AstaBOTh15, Simple Bob, Mojalefa247, I dream of horses, Ajw901, LittleWink, Jonesey95, A412, Calmer Wa-
ters, Rushbugled13, Jschnur, SpaceFlight89, Isofox, Fumitol, Warrierrakesh, Bmylez, Mohitjoshi999, Merlion444, Mmeerman~enwiki,
Yamike, TobeBot, Ashutosh.mcse, Lotje, Asn1tlv, Dinamik-bot, Nemesis of Reason, Bluefist, Mattmill30, Fiable.biz, JV Smithy, Tb-
hotch, Minimac, Brambleclawx, DARTH SIDIOUS 2, Artur Perwenis, Candc4, Ripchip Bot, Lynnallendaly, Conquest ace, Deagle AP,
Rollins83, EmausBot, Sliceofmiami, Stryn, Immunize, Alex3yoyo, Super48paul, Dewritech, Racerx11, Mrankur, RenamedUser01302013,
Peaceray, John Hopley, Sp33dyphil, Tommy2010, Wikipelli, Dcirovic, K6ka, Savh, Mohitsport, Fæ, Josve05a, PaulWIKIJeffery, Mkage-
nius, Unkownkid123, A930913, Saintfiends, Can You Prove That You're Human, Kyerussell, Cs mat3, SporkBot, Monterey Bay, Gz33,
Wingman4l7, Vanished user fois8fhow3iqf9hsrlgkjw4tus, Elfosardo, Praggu, Crasheral, Tarian.liber, Orange Suede Sofa, ChuispastonBot,
Pastore Italy, Kkbairi, SharePointStacy, Neil P. Quinn, DASHBotAV, Raju5134, Petrb, Encaitar, ClueBot NG, MelbourneStar, Jeanjour,
Satellizer, Lord Chamberlain, the Renowned, Chester Markel, Jjenkins5123, Jakuzem, Bchiap, 336, Widr, Scottonsocks, Suyashparth,
Chrkelly, Theopolisme, MerlIwBot, Novusuna, Johnny C. Morse, Kronn8, WNYY98, BG19bot, HMGb, Island Monkey, Northamer-
ica1000, Hallows AG, Palltrast, Mudasir011, Snehasapte, Mark Arsten, Shraddha deshmukh, BJMdeJong, Dmohantyatgmail, Benzband,
Jatinsinha, Avitesh, MrsValdry, CitationCleanerBot, GGShinobi, Roo314159, Falk.H.G., Nathanashleywild, Mahesh Sarmalkar, Translu-
centCloud, Wannabemodel, Winston Chuen-Shih Yang, Nkansahrexford, Jsonheld, Vanished user lt94ma34le12, Zhaofeng Li, Jimw338,
Taruntan, Sfeldner, Gm shamim, RealHandy, Tprz, Dexbot, Webclient101, Iambossatghari, Mitrabarun, Neevan99, Frosty, Payal1234,
සීසර්, ElgeeC, DBhavsar709, Epicgenius, Davidh63, Immaculate.john95, François Robere, Melonkelon, Apurv.11213, DavidLeighEllis,
Thardrain, Comp.arch, Tilopenda, Spyglasses, Congoblast, Ginsuloft, Semsi Paco Virchow, Quenhitran, Jianhui67, Lengeni, Byte1000101,
Abbotn, Antrocent, Claw of Slime, YitzchakF, Tayyabjamil, User26954344524345, Omare83, TerryAlex, Psycho365, Say which?, Jain
Nupoor, Ajit31, Biochembob, TranquilHope, Prak’s purushot, Candlelighter, Vítor, Superdupernova, Sonicwave32, Lukajohn70, Rishi
Neemkhedia, Sagar22more, Prateek Proo, Neil Schoolman, Virulentvowels, Abcd50000, NgYShung, Krlicmuhamed and Anonymous:
2488
• Physical quantity Source: https://en.wikipedia.org/wiki/Physical_quantity?oldid=732829016 Contributors: Tobias Hoevekamp, The
Epopt, Koyaanis Qatsi, XJaM, PierreAbbat, SimonP, Patrick, SebastianHelm, Ahoerstemeier, Andres, Mxn, Mydogategodshat, Aqualung,
Jusjih, Robbot, Romanm, Giftlite, Herbee, Markus Kuhn, Simian, Karol Langner, Icairns, Notinasnaid, Che090572, Rbj, Dungodung,
Jérôme, Velella, Zoohouse, Gene Nygaard, Linas, Miaow Miaow, Ttwaring, Nihiltres, Physchim62, Chobot, Bgwhite, The Rambling Man,
Jimp, Conscious, Rhythm, Ecoleetage, GrinBot~enwiki, Mejor Los Indios, SmackBot, Slashme, Blue520, KocjoBot~enwiki, Fuhghet-
taboutit, Lambiam, Tarantola, Khazar, John, JoseREMY, Munita Prasad, Lorikeet, Postmodern Beatnik, CmdrObot, Jaeger5432, Kehrli,
Cydebot, Kanags, Paddles, Thijs!bot, Barticus88, PhJ, JAnDbot, Magioladitis, Geboy, R'n'B, Leyo, J.delanoy, Hodja Nasreddin, Ybk33,
NewEnglandYankee, Tygrrr, Idioma-bot, Soroush.mobasheri, WOSlinker, Yk Yk Yk, AlleborgoBot, SieBot, Jdaloner, Lightmouse,
Adamtester, Firefly322, Jonathanstray, ClueBot, Samprul, The Thing That Should Not Be, Spoladore, Enenn, Jeffknight, Jiří Janoušek, Mild
Bill Hiccup, Desruisseaux, Djr32, CohesionBot, Sun Creator, Vegetator, Addbot, Fgnievinski, FiriBot, Bostonquad, Ehrenkater, Lightbot,
Loupeter, Zorrobot, Luckas-bot, Mr.seuss, Yobot, Adi, THEN WHO WAS PHONE?, KamikazeBot, SolePensoso, Götz, Xqbot, Grou-
choBot, FrescoBot, Ribashka, AstaBOTh15, Pinethicket, LittleWink, Triplestop, MikeVanVoorhis, Share and Enjoy, Serols, TheBFG,
Tbhotch, EmausBot, WikitanvirBot, Sumsum2010, GoingBatty, RenamedUser01302013, Your Lord and Master, Hhhippo, Ouzel Ring,
Mar4d, Quondum, Tolly4bolly, L Kensington, Maschen, Donner60, Chlesimhae, Moocow121, ClueBot NG, Ulflund, Widr, Helpful Pixie
Bot, ProjSHiNKiROU, F=q(E+v^B), AK456, Dexbot, Iskandersz, Frosty, Jochen Burghardt, Sergey L. Gladkiy, Daedalus3.14, DavRosen,
Xdever, Gautham komath, Upsilonprime, Maan Karate Buvan, Shafqat mahmood hazarvi, Komal9288 and Anonymous: 112
• Post Office Protocol Source: https://en.wikipedia.org/wiki/Post_Office_Protocol?oldid=737877798 Contributors: Vulture, VincentV,
Arcade~enwiki, Aldie, Hirzel, Ubiquity, Tregoweth, Card~enwiki, Haakon, Hashar, Daniel Quinlan, Pedant17, Shizhao, Joy, Johnleemk,
Wilinckx~enwiki, Psmith, RedWolf, Tim Ivorson, Geoff97, Puckly, Hadal, Daniel Dickman, Varlaam, NSash, Rick block, Rick Block,
Ferdinand Pienaar, Gadfium, Antandrus, Maximaximax, Hobart, Porges, Rpkrawczyk, SimonEast, JTN, Discospinster, Brianhe, Ckelsh,
Mani1, Pavel Vozenilek, Kbh3rd, Foolip, Hayabusa future, John Vandenberg, Cmdrjameson, Unquietwiki, Davidgothberg, Wrs1864,
Mrzaius, Thoric, Bart133, Fourthords, Suruena, TheFlow, Versageek, Adrian.benko, Madmardigan53, Miaow Miaow, Armando, Apokrif,
Tabletop, Ambar, MichaelDubner, Graham87, Amire80, Gareth McCaughan, ElKevbo, FlaBot, Chobot, Antiuser, UkPaolo, The Ram-
bling Man, YurikBot, Wavelength, RobotE, Todd Vierling, Daverocks, Petiatil, Stephenb, Barefootguru, Wimt, SixSix, KGasso, Emc2,
Asterion, SkerHawx, AndrewWTaylor, SmackBot, Bggoldie~enwiki, Unyoyega, Apankrat, SMP, Snori, Deli nk, Oni Ookami Alfador,
Omniplex, Can't sleep, clown will eat me, WintersChild, Markhobley, Mwtoews, Tim Q. Wells, Jttodd, MTSbot~enwiki, Dead3y3, Grblom-
erth, Beno1000, Vinayksharma, FatalError, Zarex, JohnCD, Ozga, WeggeBot, Equendil, UncleBubba, Omicronpersei8, FrancoGG, Glenn
Anderson, Epbr123, Knakts, TXiKi, SusanLesch, Escarbot, Dzubint, AntiVandalBot, LibLord, Brum G, .anacondabot, LarryHughes, Ma-
416 CHAPTER 70. X.25

gioladitis, Cander0000, Rettetast, R'n'B, Felipe1982, Pharaoh of the Wizards, Uncle Dick, Sigmundpetersen, Andareed, HiLo48, Ethd,
Xgmx, Matthew1471, Prhartcom, STBotD, Burzmali, Harry The Bustard, Bonadea, Shiryaev, Ale2006, Idioma-bot, Funandtrvl, Jmco,
VolkovBot, Oshwah, Milan Keršláger, Falcon8765, Chenzw, AlleborgoBot, FlyingLeopard2014, Kbrose, Gaelen S., Nubiatech, Caltas,
Oda Mari, Jimthing, Jdaloner, OKBot, Svick, Andrij Kursetsky, Denisarona, Amymeegan6, Loren.wilton, ClueBot, Snigbrook, The Thing
That Should Not Be, Squadri, Niceguyedc, Rockfang, PixelBot, John Nevard, Lartoven, Jotterbot, Versus22, Isode, Johnuniq, Pierzz, Ad-
dbot, Mabdul, Ronhjones, Vishnava, Fluffernutter, Download, Coasting, ‫ماني‬, Kevinmcolaco, Legobot, Luckas-bot, Yobot, Ptbotgourou,
TaBOT-zerem, Pcap, Xqbot, Joshyedward, Ute in DC, RibotBOT, SassoBot, Chatul, Ez leviathan, HRoestBot, RedBot, JnRouvignac, Tb-
hotch, EmausBot, John of Reading, WikitanvirBot, BabsiSnoecks, GoingBatty, Jera22, Thecheesykid, ZéroBot, Hazard-SJ, Birdsclose22,
ClueBot NG, Blackmetalgrandad, MelbourneStar, Snotbot, SLUG32, Helpful Pixie Bot, Calabe1992, Wbm1058, BG19bot, Green8907,
Compfreak7, Chmarkine, Yaroslav Nikitenko, Felixphew, Codename Lisa, Beige.librarian, Nodove, Comp.arch, JWNoctis, FockeWulf
FW 190, PeterSullivan12, Opencooper, Dorivaldo de C. M. dos Santos, Vj indian, JackeyDee, Fuchshuber and Anonymous: 262
• Programming language Source: https://en.wikipedia.org/wiki/Programming_language?oldid=735524605 Contributors: Magnus Manske,
Matthew Woodcraft, Derek Ross, LC~enwiki, Brion VIBBER, Mav, Koyaanis Qatsi, AstroNomer, Jeronimo, Ap, Malcolm Farmer,
AlexWasFirst, Rjstott, Andre Engels, Fubar Obfusco, SimonP, Merphant, FvdP, Imran, Rlee0001, B4hand, Stevertigo, Hfastedge, Den-
nisDaniels, Edward, K.lee, Michael Hardy, Tim Starling, Chris-martin, Kwertii, Nixdorf, MartinHarper, Ixfd64, TakuyaMurata, Karingo,
Minesweeper, Ahoerstemeier, Nanshu, Angela, Kragen, Poor Yorick, Nikai, Andres, Grin, Evercat, TonyClarke, ²¹², Jonik, Mxn, Vivin,
Speuler, Dave Bell, Dcoetzee, Reddi, Ww, Mac c, Dysprosia, Jitse Niesen, Gutza, Doradus, Zoicon5, 2988, Taxman, ZeWrestler, Bevo, Jph,
Jusjih, David.Monniaux, Mrjeff, Finlay McWalter, Pumpie, AlexPlank, Robbot, Noldoaran, Murray Langton, Friedo, Fredrik, Thniels,
RedWolf, Altenmann, SmartBee, Romanm, Rursus, Wlievens, Hadal, Borislav, Lupo, BigSmoke, Gwicke~enwiki, Tea2min, Ancheta
Wis, Gploc, Centrx, Giftlite, Thv, Dtaylor1984, Akadruid, PaulFord, Cobaltbluetony, Everyking, Esap, Wikibob, Mellum, Jorend, AJim,
Bonaovox~enwiki, Behnam, Ptk~enwiki, Macrakis, VampWillow, Bobblewik, Wmahan, Vadmium, Quagmire, Yath, Beland, Elembis,
Jossi, Phil Sandifer, DenisMoskowitz, Marcos, RainerBlome, Addicted2Sanity, Joyous!, Positron, Quota, Teval~enwiki, Zondor, Damieng,
EagleOne, Gazpacho, Mike Rosoft, Brianjd, SimonEast, Yana209, Noisy, Zaheen, Rich Farmbrough, Leibniz, Jpk, HeikoEvermann, Lulu
of the Lotus-Eaters, LindsayH, Michael Zimmermann, Paul August, Bender235, ESkog, Kbh3rd, Ben Standeven, Danakil, CanisRufus,
Hayabusa future, Shanes, Dgpop, Bobo192, AmosWolfe, Mpils, L33tminion, SpeedyGonsales, Photonique, Tgr, Saccade, Kickstart70,
Sam Korn, Phyzome, Simplyanil, Alansohn, Liao, Guy Harris, Diego Moya, Jeltz, Krischik, Wtmitchell, Suruena, Omphaloscope, Zawersh,
Voxadam, HenryLi, KTC, Forderud, Oleg Alexandrov, Mahanga, Revived, Infinoid, Roland2~enwiki, Hoziron, Woohookitty, NewbieDoo,
Mu301, Nuggetboy, Ilario, Oldadamml, Nameneko, Ruud Koot, Goodgerster, Brentdax, KymFarnik, Dolfrog, Davidfstr, Mangojuice, Tou-
ssaint, Marudubshinki, Yoric~enwiki, Chun-hian, Kbdank71, Mendaliv, Pwv1, Icey, Ketiltrout, Sjakkalle, Rjwilmsi, Tizio, Angusmclel-
lan, Koavf, Swirsky, Wikibofh, Amire80, Quiddity, Bruce1ee, Oblivious, Ligulem, DouglasGreen~enwiki, Bubba73, Reinis, GregAsche,
JanSuchy, Fantom~enwiki, FlaBot, Mathbot, Undeference, Nihiltres, Harmil, Vsion, Xavier Combelle, RexNL, Ewlyahoocom, Gurch,
Mpradeep, Quuxplusone, Tysto, Kri, Windharp, Chobot, Bgwhite, ColdFeet, Wavelength, Hairy Dude, RussBot, Hyad, Arado, Robert A
West, Taejo, Davidpdx, Bhny, Pi Delport, KSmrq, SpuriousQ, Edward301, Stephenb, Gaius Cornelius, Rsrikanth05, Wimt, CarlHewitt,
EngineerScotty, NawlinWiki, Wiki alf, Jaxl, Johann Wolfgang, BirgitteSB, Mccready, Brandon, Jpbowen, JulesH, Sekelsenmat, Nick C,
Tony1, Slaad, Natkeeran, BOT-Superzerocool, DeadEyeArrow, Perry Middlemiss, Ms2ger, Pooryorick~enwiki, WAS 4.250, Novasource,
Zero1328, Rushyo, Closedmouth, Jwissick, Kuciwalker, Cedar101, Peter, Donhalcon, Vahid83, Katieh5584, Kungfuadam, TuukkaH, DVD
R W, SmackBot, Tarret, Slashme, KnowledgeOfSelf, Lagalag, Vald, Brick Thrower, Alksub, Monz, ElAmericano, Xaosflux, Gilliam, Duke
Ganote, Ohnoitsjamie, Bh3u4m, Bluebot, Klasbricks, LinguistAtLarge, JMSwtlk, Persian Poet Gal, SeeAnd, MK8, Jprg1966, Thumper-
ward, Fplay, EncMstr, Victorgrigas, RayAYang, Nbarth, Royboycrashfan, Can't sleep, clown will eat me, Rrburke, Allan McInnes, -Barry-,
Cybercobra, Nick125, MisterCharlie, HarisM, Hammer1980, DMacks, MegaHasher, Vriullop, Derek farn, Ser Amantio di Nicolao, Water-
fles, Zarniwoot, Antonielly, JohnWittle, Ckatz, 16@r, A. Parrot, Eivind F Øyangen, Dan128, Slakr, Alhoori, Pieguy48, Xionbox, Dl2000,
SubSeven, Hu12, Stephen B Streater, Iridescent, Dreftymac, DavidHOzAu, Tawkerbot2, Vkhaitan, Switchercat, INkubusse, Acacix, Ahy1,
Georg Peter, Kris Schnee, Green caterpillar, Burkedavis, Jaxad0127, ShelfSkewed, MarsRover, Napi, Ezrakilty, Charlie Huggard, Ubiq,
Krauss, RenamedUser2, Fl, Peterdjones, Jason5ayers, Blaisorblade, Torc2, NotQuiteEXPComplete, Mattisse, Malleus Fatuorum, Epbr123,
Qwyrxian, N5iln, Headbomb, John254, Merbabu, Ideogram, AccurateOne, Natalie Erin, Escarbot, Acaciz, AntiVandalBot, Tewy, Gioto,
Luna Santin, Seaphoto, MHoover, Prolog, Jj137, Science History, VictorAnyakin, KHaskell, JAnDbot, JaK81600~enwiki, MER-C, IanOs-
good, Andonic, Hut 8.5, PhilKnight, Four Dog Night, VoABot II, Necklace, Foobah, Tedickey, Catgut, Indon, JohnLai, Abednigo, Mkdw,
ArmadilloFromHell, DerHexer, Philg88, Khalid Mahmood, Calltech, Gwern, Kiminatheguardian, MartinBot, Benjaminct, Mschel, Au-
tocratique, Tgeairn, J.delanoy, Pharaoh of the Wizards, Kimse, Trusilver, Giorgios (usurped), Ntalamai, Abeliavsky, Macaldo, Jesant13,
Acalamari, It Is Me Here, LordAnubisBOT, McSly, Nemo bis, Dominator09, SparsityProblem, Raise exception, NewEnglandYankee,
Rwessel, Ohms law, Cmichael, Ultra two, Juliancolton, LordCo Centre, Don't Copy That Floppy, Useight, Izno, Steel1943, Idioma-bot, Fu-
nandtrvl, Reelrt, Ottershrew, Red Thrush’s Bot, VolkovBot, Cireshoe, Philip Trueman, Oshwah, Muro de Aguas, Charlesriver, Tomatensaft,
Lradrama, K12308025, BwDraco, Sgbirch, Noformation, MearsMan, PlayStation 69, Andy Dingley, Yk Yk Yk, Cnilep, AlleborgoBot,
Knyf, S.Örvarr.S, EJF, SieBot, ATS, Sonicology, Tiddly Tom, Speed Air Man, Bill122, Krawi, Timhowardriley, Logarkh, Jerryobject,
Mwaisberg, Bentogoa, Happysailor, Flyer22 Reborn, Ranafon, Ferret, Faradayplank, Lightmouse, Techman224, BenoniBot~enwiki, Shane
A. Bender, HighInBC, ClueBot, CSProfBill, The Thing That Should Not Be, VsBot, Alliswellthen, Kedearian, Mild Bill Hiccup, Blan-
chardb, Takeaway, Robert Skyhawk, Iwantitalllllllll, Skytreader, Jotterbot, Hans Adler, Noosentaal, MelonBot, Chinabuffalo, SoxBot III,
HopeChrist, Darkicebot, Naderi 8189, Cp15, Slashem, Noctibus, MystBot, Dsimic, Addbot, JPINFV, L Gottschalk, DOI bot, Ronhjones,
Fieldday-sunday, Mentisock, Roux, Favonian, LinkFA-Bot, Systemetsys, Wikisedia~enwiki, Tide rolls, Krano, Gail, Jarble, Andylmur-
phy, Ben Ben, Legobot, Luckas-bot, Yobot, Midinastasurazz, OrgasGirl, Fraggle81, TaBOT-zerem, Abram.carolan, Pcap, Ningauble,
Peter Flass, Conor123777, AnomieBOT, Nottsadol, 1exec1, Jim1138, Galoubet, Ulric1313, Lucian1900, Materialscientist, Citation bot,
Maxis ftw, Fayt82, MauritsBot, Xqbot, Capricorn42, Jeffrey Mall, Gilo1969, XZeroBot, Miym, GrouchoBot, Papercutbiology, RibotBOT,
Gbruin, Russell Joseph McCann, Shadowjams, A.amitkumar, Apwestern, Captain-n00dle, Manpreett, Edgars2007, FrescoBot, Mark Re-
nier, Mìthrandir, DivineAlpha, Citation bot 1, I dream of horses, Elockid, HRoestBot, LittleWink, 10metreh, Jonesey95, Jschnur, Σ, Robo
Cop, Txt.file, Trappist the monk, Cmdodanli, ‫ئاراس نوری‬, Callanecc, TheTechFan, Specs112, Diannaa, WikiTome, Suffusion of Yel-
low, Stroppolo, Vaibhavkanwal, DARTH SIDIOUS 2, Mean as custard, TomT0m, John lindgren, EmausBot, Orphan Wiki, Nima1024,
Carbo1200, Nutsnbolts222, Cogiati, Iuliatoyo, H3llBot, Karthikndr, Swatiri, Jguy, Noodleki, Carmichael, BioPupil, DASHBotAV, ClueBot
NG, A520, Mesoderm, Asukite, Snickel11, Danim, Helpful Pixie Bot, DBigXray, BG19bot, Krenair, Kangaroopower, Wiki13, MusikAn-
imal, J991, Compfreak7, Loriendrew, Nbrothers, Thomasuniko, Usman&muzammal, Teammm, Bobbygammill, Amitkumargarg88, Cy-
berbot II, Dexbot, Rezonansowy, Majilis, Damian.rouson, Steamerandy, Kooginup, Svensson1, Cathry, Ueutyi, Seanhalle, Vanamonde93,
Thetimperson, Grouphardev, Carrot Lord, François Robere, Wiki4Blog, Olmerta, Tentinator, Captain Conundrum, Komarov om, Alhade,
Uwe Lück, Ginsuloft, Inaaaa, Danielmask, Racer Omega, Lucky7-phool, Impsswoon, Fastdrummer, Monkbot, Theanimalover, Abdal-
lasyam, Wildkrat52, Whikie, PotatoNinja, Malistomailie, TheMacroChip, Papapasan, Dorivaldo de C. M. dos Santos, Bridgetlane, TaqPol,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 417

Esquivalience, Rubbish computer, Some Gadget Geek, Lee Ann Dickerson, Infinite0694, Rajat293, KasparBot, Jose Diaz Sanchez Pablo
Garica Flores, Aro88, Grabtricks, The Quixotic Potato, LibbyLaneLonne, 45La45Lo33, Lukaslt13, Sahil qutub, Qzd, Music1201, Cap-
tainGummyBearz, Eestrella198, Ushkin N, Arbor Fici, Allynykaza and Anonymous: 781
• Public switched telephone network Source: https://en.wikipedia.org/wiki/Public_switched_telephone_network?oldid=729648328 Con-
tributors: The Anome, Andre Engels, Gsl, Aldie, William Avery, SteveDay, MikkoM, Youandme, Steverapaport, Patrick, JohnOwens,
Michael Hardy, Darkaddress, Cameron Dewe, Looxix~enwiki, Tusixoh, Glenn, Crissov, Dysprosia, Radiojon, SEWilco, Robbot, Rfc1394,
DavidCary, Markus Kuhn, Niteowlneils, Leonard G., Rchandra, Falcon Kirtaran, Tagishsimon, Gloop, Chowbok, JeremiahOeltjen, Adrian
Sampson, Hugh Mason, JTN, Richardelainechambers, MBisanz, Fourpointsix, Bobo192, MarkWahl, Redlentil, Espoo, Disneyfreak96,
Poweroid, ChrisUK, Rohaq, Guy Harris, Wtmitchell, HenryLi, OwenX, ^demon, Ruud Koot, Graham87, BD2412, Yurik, Snafflekid,
Pmj, Rjwilmsi, Makru, FlaBot, Ian Geoffrey Kennedy, Polaralex, Chobot, YurikBot, Rsrikanth05, Cryptic, Hm2k, NickBush24, Adamn,
Jpbowen, Tony1, Nethgirb, Mysid, Elkman, Max Schwarz, Sharkb, Closedmouth, Petri Krohn, Hirudo, SmackBot, MerlinMM, JMiall,
Rick7425, Oli Filth, MalafayaBot, Duckbill, AmiDaniel, -ramz-, Nobodyinpart, Dicklyon, H, Kvng, Iridescent, BobbyLee, Joseph So-
lis in Australia, Az1568, Chetvorno, JohnTechnologist, CmdrObot, Ale jrb, BeenAroundAWhile, Yukoba~enwiki, Alaibot, Dragonòt,
Thijs!bot, Simeon H, Escarbot, Agnvoip, Alphachimpbot, JAnDbot, Harryzilber, Jan Friberg, Sln3412, Albany NY, Bellhead, Verkhoven-
sky, AlephGamma, Kgfleischmann, Calltech, I-baLL, Zahakiel, MartinBot, DrDorkus, Jim.henderson, Nono64, J.delanoy, Peter Chas-
tain, NewEnglandYankee, Manassehkatz, Ishanbhanu, Birczanin, Netmonger, PNG crusade bot, TXiKiBoT, Vipinhari, Abtinb, Rei-bot,
Monkey Bounce, Doug, Isdnip, AlleborgoBot, Kbrose, Quietbritishjim, SieBot, Dwandelt, Gerakibot, Yunghkim, Mahehere, Jojalozzo,
Ebernat, Machina.sapiens, WordyGirl90, ClueBot, EoGuy, Taroaldo, Trivialist, Mlaffs, XLinkBot, Deadlyturtletank, WikHead, Silvo-
nenBot, Dgtsyb, Addbot, AkhtaBot, Download, Numbo3-bot, Lightbot, Loupeter, Zorrobot, Не А, Luckas-bot, Bunnyhop11, Kamikaze-
Bot, Vini 17bot5, AnomieBOT, New2way, Rubinbot, Kingpin13, Abdulraheemsidz, Obersachsebot, Xqbot, Ranjandutta, Toetoetoetoe,
GrouchoBot, SimonInns, FrescoBot, Nageh, Haeinous, Austria156, Ezhuttukari, EmausBot, WikitanvirBot, Super48paul, Boundarylayer,
Rkononenko, Midas02, Anthony.selby, Miguelito2010, ClueBot NG, Widr, ZombieRamen, Voipsatellite, Rlegends, Earflaps, Rp8083,
Mogism, Ptuttle123, Slumberbus, Haminoon, Tc.guho, Spasticsociety, Rajuarya125, Dinnypaul and Anonymous: 238
• Radio Source: https://en.wikipedia.org/wiki/Radio?oldid=738162021 Contributors: WojPob, Brion VIBBER, Mav, The Anome, Christian
List, Ghakko, Roadrunner, Ray Van De Walker, Waveguy, Heron, Someone else, Stevertigo, RTC, Infrogmation, D, Boud, Michael Hardy,
Tim Starling, GABaker, Lexor, Liftarn, Ixfd64, Sannse, Paul Benjamin Austin, Karada, Gbleem, Spliced, Pagingmrherman, Tregoweth,
Gaz~enwiki, Ahoerstemeier, PJC, Haakon, Mac, ZoeB, Ron Davis, TUF-KAT, Plop, TUF-KAT, Msablic, Aarchiba, Ugen64, Glenn, Cyan,
Nikai, GCarty, Marknew, Mxn, Ilyanep, Arteitle, Hashar, Emperorbma, Ed Cormany, Reddi, Dysprosia, Wik, Tpbradbury, Munford,
Omegatron, Mdchachi, Raul654, Gakrivas, Flockmeal, Francs2000, Lumos3, Denelson83, Jni, Twang, Nufy8, Robbot, Pigsonthewing,
PBS, TMC1221, BenBreen2003, ZimZalaBim, Romanm, Modulatum, Meduz, Chris Roy, Academic Challenger, Blainster, Pcr, Hadal,
Wikibot, Borislav, Dhodges, Mushroom, ElBenevolente, Lupo, HaeB, TexasDex, Rsduhamel, Jooler, Alan Liefting, Centrx, Giftlite, Andy,
Wolfkeeper, Inkling, Meursault2004, HangingCurve, Mark.murphy, Wwoods, Everyking, Ssd, RatOmeter, Crusty Curmudgeon, Sundar,
Owen&rob, Jaan513, Bobblewik, Dainamo, Golbez, Wmahan, Doshell, Gadfium, Utcursch, Abu badali, Formeruser-81, Antandrus, Be-
land, OverlordQ, JoJan, Piotrus, SimonArlott, Oneiros, Girolamo Savonarola, Kevin B12, Icairns, Sam Hocevar, Magnum1, Montanean,
Tcr25, Eisnel, Canterbury Tail, Bluemask, Xioyux, Mike Rosoft, D6, Astronouth7303, Archer3, Imroy, Noisy, Brianhe, Rich Farmbrough,
Rhobite, Rydel, FiP, TrbleClef, ArnoldReinhold, Deelkar, Bender235, Andrejj, Kbh3rd, Brian0918, Ht1848, El C, Aude, RoyBoy, Tri-
ona, Bookofjude, Amerika, Jpgordon, Bobo192, Nigelj, Fir0002, Clawson, Davidruben, Shenme, NigelP, Cmacd123, Adrian~enwiki,
ParticleMan, Diceman, Sukiari, MPerel, Merope, St0rm~enwiki, Ranveig, Zachlipton, Mrzaius, Poweroid, Alansohn, JYolkowski, An-
thony Appleyard, Saa, Qwghlm, Tek022, Jeltz, SlimVirgin, Water Bottle, DreamGuy, Snowolf, Wtmitchell, Velella, Fledgeling, Wtshy-
manski, Quaestor~enwiki, Paul1337, Max Naylor, Endersdouble, Cmapm, DV8 2XL, Alai, Ghirlandajo, Redvers, Kazvorpal, Jakes18,
Dennis Bratland, Gosgood, Stemonitis, Gmaxwell, Angr, Richard Arthur Norton (1958- ), RHaworth, BillC, Bonus Onus, Fuss, Fred J,
Wikiklrsc, Andromeda321, LadyofHats, Jon Harald Søby, MechBrowman, Prashanthns, Gimboid13, Weevil, Kryptops, Zpb52, Pgosta,
Dysepsion, LimoWreck, Kesla, Graham87, Marskell, Qwertyus, Chun-hian, MC MasterChef, Kbdank71, Canderson7, Sjö, Rjwilmsi,
Koavf, Misternuvistor, Bruce1ee, Vegaswikian, Mbutts, Fred Bradstadt, Sango123, Yamamoto Ichiro, SNIyer12, Kevmitch, FayssalF,
SchuminWeb, RobertG, Musical Linguist, Doc glasgow, Nsjoker, Nihiltres, Fragglet, RexNL, Gurch, Talk1370, Lmatt, Windharp, Toi,
King of Hearts, Frappyjohn, Sharkface217, DVdm, Mhking, Peter Grey, Roboto de Ajvol, Wavelength, Samuel Wiki, Phantomsteve, Russ-
Bot, J. M., Conscious, Splash, GLaDOS, DanMS, SpuriousQ, Chaser, Chrisjustinparr, Zelmerszoetrop, RadioFan2 (usurped), Stephenb,
Gaius Cornelius, Zimbricchio, CambridgeBayWeather, Alvinrune, Rsrikanth05, Dsmouse, Wimt, Willpo~enwiki, NawlinWiki, Ethan,
SEWilcoBot, Wiki alf, Rjensen, Steven Hepting, Irishguy, Malcolma, DAJF, Davidpk212, Alex43223, Flyset, Bucketsofg, Dbfirs, Dead-
EyeArrow, Nescio, Groink, Xedaf, Thomas H. White, Werdna, Djdaedalus, Gohiking, Wknight94, Searchme, FF2010, Sadistik, Light
current, 21655, Deville, Zzuuzz, MaNeMeBasat, ToyoWolf, Nelson50, HereToHelp, Tyrenius, Spliffy, Ethan Mitchell, Crazyquesadilla,
Allens, Junglecat, Snaxe920, RG2, Carlosguitar, Mohylek, Cmglee, Linkminer, DVD R W, Kf4bdy, David.hillshafer, Veinor, SmackBot,
MattieTK, Haza-w, Terry1944, KnowledgeOfSelf, Hydrogen Iodide, McGeddon, Pgk, Sea diver, Jagged 85, Davewild, Thunderboltz,
Stephensuleeman, Renesis, Delldot, Fractal3, Jonathanwagner, Kintetsubuffalo, Alsandro, SmartGuy Old, Gilliam, Ohnoitsjamie, Skizzik,
Carl.bunderson, Micwea, Jcarroll, Cabe6403, Kmarinas86, Science3456, Hraefen, Armeria, Schmiteye, Chris the speller, Kharker, Wuffyz,
MK8, Miquonranger03, Domthedude001, SchfiftyThree, Akanemoto, Leoni2, Mark7-2, Whispering, Baronnet, CMYK, Can't sleep, clown
will eat me, Shalom Yechiel, Jennica, Snowmanradio, Ostermana, Darthgriz98, Yidisheryid, WinstonSmith, Rrburke, Benjamin Mako
Hill, ArmitageShanks, Edivorce, Renegade Lisp, Mugaliens, Badbilltucker, Huon, Jmlk17, Ganchelkas, Aldaron, MrRadioGuy, Smooth
O, BesselDekker, Quizman1967, Mindraker, Funky Monkey, MisterCharlie, RobHarding, Xagent86, Kalathalan, Bretonbanquet, Cotting-
ham, Ck lostsword, Kukini, Qmwne235, The undertow, Petr Kopač, Quendus, Kuru, Euchiasmus, Vgy7ujm, Arthuralee, J 1982, An-
drewjuren, Kipala, GCW50, Coredesat, Minna Sora no Shita, Gwest1, MonstaPro, Mr. Lefty, Otterman665, A. Parrot, MarkSutton, Slakr,
Beetstra, Kondspi, Bendzh, Waggers, CUTKD, E-Kartoffel, Butler david, Dr.K., Peter Horn, Kvng, Hu12, Ginkgo100, Levineps, Douglas-
Calvert, OnBeyondZebrax, White Ash, Spark, Cynric~enwiki, IvanLanin, Stereorock, Az1568, Courcelles, Linkspamremover, Bannanas,
Waffler, Tawkerbot2, Cassamine, Daniel5127, Chetvorno, Dan1679, Jchittoor, Fritz28408, The Haunted Angel, JohnTechnologist, Ian-
Wills, Mosaffa, JForget, Peter1c, Scohoust, Nczempin, Mig11, MrZap, Birdhurst, McVities, Requestion, Lazulilasher, Ravensfan5252,
Yaris678, Book M, Gogo Dodo, B0Rn2bL8, Anonymi, Flowerpotman, Pascal.Tesson, Scott14, Trident13, DumbBOT, Phonemonkey,
JodyB, Vanished User jdksfajlasd, Nol888, Gimmetrow, Click23, Ozguy89, Marqmike2, Epbr123, Doct.proloy, Kussy, Pampas Cat,
Mishmash8, Dnyhagen, Spunker540, Picus viridis, X201, Mnemeson, Leon7, Sgaragan, MichaelMaggs, Natalie Erin, CTZMSC3, Es-
carbot, Grandin, Mentifisto, AntiVandalBot, Seaphoto, Mrshaba, Jbaranao, Epischedda, Venya, Xbox360wraith, Tomgray, LuckyLouie,
Jc3, Chill doubt, Bdean1963, Beachyboy, LegitimateAndEvenCompelling, Myanw, Uusitunnus, JAnDbot, Husond, Harryzilber, Barek,
MER-C, Fetchcomms, Andonic, Erpel13, Greensburger, Masked boy~enwiki, Parcemihi~enwiki, Jed S, SiobhanHansa, Acroterion, Ge-
niac, Magioladitis, Creationlaw, Bongwarrior, VoABot II, AuburnPilot, JNW, Yandman, Paymani, Puddhe, Doug Coldwell, Jatkins,
Robomojo, Recurring dreams, Sgr927, Biokinetica, Cpl Syx, Glen, DerHexer, TheRanger, NatureA16, PhantomS, MartinBot, Meam-
418 CHAPTER 70. X.25

vagabond, GM11, Jim.henderson, Rettetast, Rob Lindsey, Kostisl, Sfrandzi~enwiki, CommonsDelinker, AlexiusHoratius, Paulmcdonald,
Jmccormac, Gutta Percha, LedgendGamer, Mausy5043, RockMFR, J.delanoy, Trusilver, Anilbg, Wa3frp, Tntdj, Uncle Dick, Maurice
Carbonaro, Jesant13, Jreferee, JA.Davidson, Shawn in Montreal, NX1Z, Listen2myradio, Jigesh, Jayden54, Chalyres, Jackobyte, Anti-
SpamBot, RoboMaxCyberSem, GhostPirate, NewEnglandYankee, Fountains of Bryn Mawr, Nwbeeson, Micz.flor, SJP, Gregfitzy, Ontari-
oboy, Liliana-60, BigHairRef, Smitty, Prhartcom, 2help, Cometstyles, Jamesontai, Znx, Davidezell, Bonadea, Useight, Eduardo Mendonça
de Lima, CardinalDan, Idioma-bot, Funandtrvl, X!, Deor, VolkovBot, ABF, Almazi, Rclocher3, Chienlit, Philip Trueman, Majorxp, Jhon
montes24, Oshwah, Mercy, Ldonna, The Original Wildbear, Pachayachachic, Mr Percy, Drestros power, SteveStrummer, Arnon Chaffin,
Pjdd2, Qxz, Monkey Bounce, Anna Lincoln, Clarince63, Dendodge, HorusHawkX, Corvus cornix, DocteurCosmos, Martin451, Slysplace,
Person324, Abdullais4u, Eatabullet, LeaveSleaves, Raymondwinn, Arthurs1212, Uannis~enwiki, Greswik, Andy Dingley, Wasted Sapi-
ence, Synthebot, Falcon8765, Enviroboy, Burntsauce, GlassFET, Thor12x, Ka6s, Symane, Logan, DigitalC, Tesla4life, EJF, Blue borg,
Smobri, Romeodesign, Millars, Tiddly Tom, Scarian, WereSpielChequers, NB-NB, Hertz1888, Dawn Bard, Viskonsas, Caltas, Matthew
Yeager, Command5, Thyroe, Yintan, M.thoriyan, MyNickname, Best 24, Dochdododo, Keilana, Bentogoa, Happysailor, Sletfsak2, Oda
Mari, ScAvenger lv, Faradayplank, AngelOfSadness, Joydrop, Stoneygirl45, Katecummings, Lightmouse, Manway, Rafamachine, Svick,
Datadrainacidblast, Jongleur100, Kristine.clara, Dust Filter, Mr. Stradivarius, Ascidian, PerryTachett, Denisarona, Jons63, Asher196,
Troy 07, Valiant11, Serialdownloader, Elassint, Rhyshuw1~enwiki, ClueBot, SummerWithMorons, LAX, Michael Gary Scott, Fspade,
Deviator13, GorillaWarfare, Jackollie, Snigbrook, Foxj, The Thing That Should Not Be, Littlekorea34, FLAHAM, Leonard 280, Dr-
mies, Frmorrison, DanielDeibler, Wikijens, CounterVandalismBot, Skeeball93, Niceguyedc, EconomicsGuy, Gointv, Mayawi, Bob bo-
bato, Neverquick, Nseidule, Chelseax3rose, Excirial, Jusdafax, Anquiliquest, Moreau1, Rcooley~enwiki, Wikitumnus, Eeekster, Conical
Johnson, Samx0x0x0, Abrech, Dropsoffire, Atomicfro, Vinhchaule, Arjayay, Jotterbot, Tinje, 7&6=thirteen, Razorflame, Dekisugi, Dev-
iljin21, SchreiberBike, Mlaffs, Safreeman, Q1w2e88, Calor, Girtyzg, Thingg, Maczad, Aitias, Footballfan190, 500million, Versus22, Sled-
dog71, Superherogirl7, Johnuniq, Egmontaz, Vanished user uih38riiw4hjlsd, Vanished User 1004, DumZiBoT, Qwertyqwertqwert, Aris-
tokrata, Willem103, XLinkBot, Hotcrocodile, Spitfire, Barış uçurum, Gnowor, Andyl620, Vividenblem, Stickee, Rror, Bradv, Ed1234ab,
21stCenturyGreenstuff, Avoided, WikHead, SilvonenBot, Badgernet, Noctibus, Artaxerxes, Subversive.sound, JinJian, S TiZzL3, Radio-
data researcher, Milos Stevanovic, Addbot, Mortense, Manuel Trujillo Berges, Fyrael, Captain-tucker, Kingjames528, Otisjimmy1, Frigi-
nator, Fgnievinski, Swampfire, Bob sagget jr., Fieldday-sunday, Laurinavicius, Kman543210, Aashleynj, Ka Faraq Gatri, Vrray people107,
MrOllie, XRK, Dylanrules123456789, LinkFA-Bot, 84user, Tide rolls, Lightbot, OlEnglish, Helt, Serge Lachinov, Gail, David0811, Al-
beiror24, Gursis11, Luckas-bot, Vedran12, Yobot, Fraggle81, II MusLiM HyBRiD II, Aldebaran66, Melvalevis, Joetaras, Troymacgill,
Washburnmav, SwisterTwister, Knownot, Axel22, MacTire02, OregonD00d, AnomieBOT, Stears81, Quangbao, Sertion, Jim1138, Ga-
loubet, Eating Tomatoes, Piano non troppo, Kingpin13, RandomAct, Materialscientist, Citation bot, Anthonypunk1, Beenturns23, Crim-
sonmargarine, Kirchsw, TinucherianBot II, Timir2, LeX4051, The sock that should not be, Capricorn42, Drilnoth, Tex-linke, Jeffrey
Mall, Rainshower, Batesmas214, Teamitem, Crabman90210, AbigailAbernathy, TheIntersect, DjbFire, Ab1, Brandon5485, DaleDe, Yo-
ganate79, EMDavidson, Astatine-210, Fotaun, GliderMaven, FrescoBot, Magnagr, Tangent747, Tobby72, A.Abdel-Rahim, Sky Attacker,
HJ Mitchell, Audemat, Blacky111, Jamesooders, Cannolis, HamburgerRadio, Citation bot 1, Connerandtom, MacMed, Pinethicket, I
dream of horses, Hard Sin, PrincessofLlyr, Pillo, Skyerise, Jschnur, Tesladeservescredit, Serols, SpaceFlight89, Meaghan, D1tempo, Hy-
ater, Pankaj2211, EdoDodo, Cnwilliams, Postdeleter, Gryllida, Hsnmoom, Thrissel, Discographer, MAS10, Francis E Williams, Vrena-
tor, Davish Krail, Gold Five, Wiki-Updater 2.0, Everyone Dies In the End, Mttcmbs, Brian the Editor, Suffusion of Yellow, Tbhotch,
Reach Out to the Truth, Sideways713, Marie Poise, Mean as custard, Qwerky0o0, Jonathan Levy, Johnjones5278, Slon02, EmausBot,
Nebabc11, Thetofuseezall, Yuhter, Ken95, Immunize, Gfoley4, Jorge c2010, Yaleshen, Ajraddatz, TLPA2004, Dewritech, Courcelles
is travelling, GoingBatty, RA0808, Robert376, CaptRik, Smappy, Cherrybear101, Slightsmile, Tommy2010, Hagis5555550, Wikipelli,
K6ka, Hagisman, Thecheesykid, Kkm010, 15turnsm, 88frog88, Susfele, Chuck Baggett, Fæ, A930913, H3llBot, Wayne Slam, Rc-
sprinter123, TechWriterNJ, Gsarwa, Adbatson, ChuispastonBot, Teapeat, 28bot, Superdeffhound, Halfbreed m, Cgt, ClueBot NG, Smtcha-
hal, Winsladed08, CocuBot, This lousy T-shirt, BarrelProof, Jayanthkrishna, DobriAtanassovBatovski, Jocelyncarrasco, Snotbot, Cross-
fireradio, Mesoderm, Widr, Reify-tech, Theopolisme, Oddbodz, Helpful Pixie Bot, Ghostshock, Kiwitunza3, Strike Eagle, Titodutta,
Wbm1058, Lowercase sigmabot, BG19bot, Stupidguy24, TCN7JM, Spoons14, Northamerica1000, ISTB351, Commandochris, MusikAn-
imal, Planetary Chaos Redux, Mark Arsten, JHobson2, Robert the Devil, Soerfm, 17morria, Loriendrew, Klilidiplomus, Tucci mayne,
Happenstancial, Cqdx, Miszatomic, Jamecons, MartinBoudreault, Embrittled, Diyanah satariah, Total-MAdMaN, Epicwo, Nikeboy175,
Adias13, Elddup11, Rahulradio, Hmainsbot1, Webclient101, Boby9952, SFK2, Reatlas, Iturbe Online, Fycafterpro, Faizan, Aftabbanoori,
Baconatorsforall, JamesMoose, Jakec, DetroitSeattle, Do Thang, Syamsunders, DavidLeighEllis, Kavithasri362, Liquid Lime18, Sirwalter-
douglas, Comp.arch, Finnusertop, Ginsuloft, George8211, Noyster, Mrman21, UY Scuti, Meteor sandwich yum, Bballer123456789321,
Esfil555666, TrekkieSpeller, Mortifierr, HHubi, Crookedy0ungg, Superdragonmonster, Monkbot, Nemasdia5673, Patient Zero, Sssredg,
Phemmyjohnson, ♥Golf, Meep876, 3primetime3, HMSLavender, Idunnowhat, Himisterpie, Beeshal Khadka, Craig Leo Johnson, Sci-
entistmangesh, REDIRECT, SQMeaner, KasparBot, Chand3994, Blamheadshot11, Agricola123, ProprioMe OW, Pulltea, Swissinator,
Filpro, Bigmike88, Bigboombox, Goose121, CLCStudent, Duraka Radio, Jekson Bim, Wobblytabletop, Mariusrobin1981, Westofawe-
some, Radio batista ide, Sufi69, Stuffthings1234567891011121314151617181920, On the ceiling, Electivo000 and Anonymous: 1504

• Semantics Source: https://en.wikipedia.org/wiki/Semantics?oldid=736198078 Contributors: The Anome, Youssefsan, Vaganyik, Or-


tolan88, Ben-Zin~enwiki, Hannes Hirzel, Heron, Ryguasu, Netesq, Stevertigo, Michael Hardy, Pit~enwiki, Gdarin, Rp, Kku,
Looxix~enwiki, Glenn, Rossami, Andres, Hectorthebat, Jitse Niesen, Mjklin, Haukurth, Shizhao, Fvw, Jens Meiert, Jon Roland, Seriv,
Robbot, Lambda, Pigsonthewing, Jakohn, Kiwibird, Sverdrup, Rursus, Moink, Spellbinder, Marc Venot, Gwalla, Markus Krötzsch,
Jpta~enwiki, HHirzel, Everyking, Zhen Lin, Eequor, Khalid hassani, Jackol, Javier Carro, JoJan, Mukerjee, Augur, Kntg, Bornslippy,
Urhixidur, Yuriz, Lucidish, Rich Farmbrough, Cacycle, Rama, Slipstream, Kzzl, Dbachmann, Paul August, Jaberwocky6669, Evice, El C,
Chalst, Joanjoc~enwiki, Linkoman, Stesmo, Enric Naval, Nortexoid, Jonsafari, Jooyoonchung, Helix84, Anthony Appleyard, Mark Dinge-
manse, Sligocki, Cdc, Sabrebattletank, Ish ishwar, Tycho, EvenT, Jason L. Gohlke, Redvers, Simlorie, Galaxiaad, Ott, Jtauber, Velho,
Woohookitty, Mindmatrix, Kokoriko, Kelisi, Analogisub, SDC, Mandarax, Graham87, Imersion, Rjwilmsi, Mayumashu, Koavf, Jivecat,
Dmccreary, Brighterorange, Mlinar~enwiki, NeoAmsterdam, FlaBot, Sinatra, Nihiltres, Isotope23, Ben Babcock, Vonkje, Comiscuous,
Lambyuk, Chobot, Sonic Mew, Roboto de Ajvol, YurikBot, Wavelength, Hairy Dude, Retodon8, Stephenb, Anomalocaris, NawlinWiki,
Maunus, MarkBrooks, JECompton, WAS 4.250, Light current, G. Lakoff, Lt-wiki-bot, Donald Albury, SMcCandlish, JuJube, Pred, AG-
Toth, NickelShoe, Sardanaphalus, SmackBot, Zerida, Unyoyega, Shamalyguy, Gilliam, Lindosland, Chris the speller, MasterofUnvrs314,
MK8, MalafayaBot, Droll, Jerome Charles Potts, A. B., Scwlong, Zsinj, Frap, Ioscius, Chlewbot, SundarBot, Khoikhoi, Cybercobra,
Iblardi, Battamer, Jon Awbrey, Byelf2007, SashatoBot, 16@r, Hvn0413, Nabeth, Kvng, Hu12, Gandalf1491, J Di, DEddy, Ziusudra,
George100, Stifynsemons, Wolfdog, Sir Vicious, Kensall, Gregbard, FilipeS, Cydebot, Warhorus, ST47, Quibik, Nickleus, Gimmetrow,
Thijs!bot, Wikid77, Runch, Mbell, Dalahäst, Azymuthca, X201, Nick Number, Mentifisto, AntiVandalBot, Shawn wiki, Gioto, Widefox,
TimVickers, Dylan Lake, Danny lost, JAnDbot, MER-C, Shermanmonroe, Jmchambers90, Dcooper, .anacondabot, Daveh1, AndriesVan-
Renssen, Tmusgrove, Nicodemus13, Mahitgar, Revery~enwiki, Mechanismic, Ekotkie, MartinBot, J.delanoy, Cyborg Ninja, Piercetheor-
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 419

ganist, Dbiel, Rod57, AKA MBG, Lygophile, Erick.Antezana, Lrunge, RasputinJSvengali, Macedonian, LokiClock, Philip Trueman, Amos
Han, TXiKiBoT, Purpose Observatory, Aaeamdar, Goberiko~enwiki, HillarySco, Merijn2, Synthebot, Lova Falk, Cnilep, Jimbo2222, Lo-
gan, Botev, SieBot, Nubiatech, Kgoarany, Asderff, PaulColby, Jerryobject, Yerpo, ScAvenger lv, Strife911, Bguest, MiNombreDeGuerra,
Doc honcho, CharlesGillingham, Emptymountains, Martarius, ClueBot, Bbadree, Tanglewood4, Eklir, Niceguyedc, DragonBot, Awi007,
PixelBot, Vanisheduser12345, Rhododendrites, MacedonianBoy, Cenarium, Aleksd, Micmachete, MystBot, Alanthehat, Addbot, Rdan-
neskjold, The singapore ministry of education sucks, AVand, Guoguo12, Landon1980, Friginator, K1US, Aboctok, Ayatniazi, Canadian-
LinuxUser, Pirtskhalava, CarsracBot, Numbo3-bot, Erutuon, Tide rolls, JAHendler, Krixou, Legobot, Luckas-bot, TaBOT-zerem, Van-
ished user rt41as76lk, AnakngAraw, 8ung3st, Molewood6, Rockypedia, Rjanag, Govindmaheswaran, Jim1138, Materialscientist, Citation
bot, LilHelpa, Xqbot, Hyggelig, Lynch9000s, Aenioc, JustinCope82, Omnipaedista, Benjamin Dominic, FrescoBot, Levalley, Citation
bot 1, Mundart, Smithonian, Harold Philby, Pinethicket, Joost.b, RedBot, MastiBot, Nora lives, FoxBot, ‫کاشف عقیل‬, Jonkerz, Lotje,
Theyetiman12345, RobotQuistnix, 2bluey, Mchcopl, Zegarad, EmausBot, Jefffi, Active Banana, Hpvpp, Dcirovic, Alexey.kudinkin, Lla-
mas4drama'10, Unreal7, SporkBot, Gabnh, Eric Biggs, Edunoramus, Kgsbot, Ready, Odysseus1479, Tijfo098, Manytexts, ClueBot NG,
Squarrels, Aniketdalal, Movses-bot, Helpful Pixie Bot, BG19bot, BenSmak, Boblibr, KateWishing, Lawandeconomics1, MusikAnimal,
Davidiad, Tom Pippens, Semantia, UnconsciousInferno, Darylgolden, Suraduttashandilya, Dave5702, Kevin12xd, Faizan, Bienmanchot,
Ahernandez33, Didigodot, Noizy Boy, Sarahjane212013, Pavel Stankov, Seagull123, Csusarah, FelixRosch, Good afternoon, Nøkkenbuer,
Spyker247, KasparBot, Vjpand, George Bakouropoulos, Sykonos, Jman2324, Wilhelm Turing and Anonymous: 289
• SOAP Source: https://en.wikipedia.org/wiki/SOAP?oldid=737607701 Contributors: Joakim Ziegler, Mav, The Anome, Christopher Ma-
han, Aldie, Lloy0076, Hannes Hirzel, Derek~enwiki, Sytone~enwiki, Michael Hardy, Ezra Wax, Modster, Nixdorf, Liftarn, Wwwwolf,
Kricxjo, Ronz, Samuelsen, Netsnipe, OliD~enwiki, Ehn, Nohat, Dysprosia, Rednblu, Jnc, Traroth, Joy, Khym Chanur, Veghead, Un-
invitedCompany, Chuunen Baka, Robbot, Celsius1414, Kristof vt, RedWolf, Kowey, Securiger, Wjhonson, Rrjanbiah, Diberri, David
Gerard, Javidjamae, Thv, Elf, Holizz, HangingCurve, Average Earthman, Bkonrad, Dawidl, Khalid hassani, Bluetulip, Tagishsimon,
Pgan002, Saucepan, Mzajac, Zmydlarz, BeakerK44, Andreas Kaufmann, Ferrans, Kustere, AliveFreeHappy, Delepster, Discospinster,
Pmsyyz, Dpm64, Smyth, Pavel Vozenilek, ColBatGuano, CanisRufus, MBisanz, Hayabusa future, Mkosmul, Triona, Saturnight, Aaron-
brick, Femto, Kgaughan, Bobo192, Nigelj, Yongxinge, John Vandenberg, Duk, Darwinek, Dtynan, Flammifer, Minghong, Maebmij, He-
lix84, Krellis, Bijee~enwiki, Andrisi, Phils, Jumbuck, GoClick~enwiki, Alansohn, WickieNcf, Fg, Calton, !melquiades, RoySmith, Wt-
mitchell, Suruena, RubenSchade, Ethilien, Voxadam, Ironwolf, Mindmatrix, Unixer, WadeSimMiser, Schzmo, Al E., MyFavoriteMartin,
Gyrae, Toussaint, Marudubshinki, Gwil, Ashmoo, Tzadikv, Jetekus, Kbdank71, Yurik, Rogerd, Isaac Rabinovitch, Rillian, Netan'el,
Ttwaring, Boteman, HughJorgan, Munahaf, FlaBot, Margosbot~enwiki, Jamiecampbell, Ben Babcock, Sderose, M7bot, Marcuswittig,
Lasombra, Daev, Chobot, DVdm, Adam J. Sporka, Peterl, YurikBot, RobotE, Todd Vierling, TimNelson, DanMS, SpuriousQ, Manop,
Pseudomonas, Bovineone, Wiki alf, Bachrach44, Grafen, Prickus, LodeRunner, BrEyes, Scope creep, Simon80, MurrayRM, Quick-
BrownFox, 21655, Cedar101, CIreland, Algae, SmackBot, Herostratus, Vald, Mr link, Zserghei, RlyehRising, Brossow, HalfShadow,
Gilliam, Skizzik, Nahtanoj04, NickGarvey, Psiphiorg, ARK, Thumperward, Oli Filth, Jerome Charles Potts, Jenny MacKinnon, Can't sleep,
clown will eat me, Eliyahu S, Nixeagle, Kaimiddleton, Jpaulm, Safwankenobi, Cybercobra, Warren, Iridescence, DMacks, Crandmck,
Fireswordfight, DKEdwards, Wiesel 99, Zearin, JzG, Vanished user 9i39j3, Soap, Soumyasch, Bezenek, Nux, Wickethewok, Ernstde-
haan, Loadmaster, Optimale, Brainix, Yaxh, Kvng, Syberguru, Hu12, Dreftymac, Paul Foxworthy, Zero sharp, Destro, Danlev, FatalEr-
ror, JForget, DSosnoski, WeggeBot, Cydebot, Nessymonster, Ryan, MC10, Gogo Dodo, Daniel Olsen, Thijs!bot, Epbr123, Robsinden,
Gamer007, Towopedia, RickinBaltimore, TXiKi, OrenBochman, Desmoh, Escarbot, AntiVandalBot, Mack2, Dockurt2k, JAnDbot, Sjlain,
Coolhandscot, Acroterion, Enjoi4586, Magioladitis, Bongwarrior, VoABot II, Nyq, JNW, JamesBWatson, Eltener, Tedickey, Rami R,
Scharer, Slartibartfast1992, Ianaf4you, Japo, SemiEvolved, Seashorewiki, KarlPihlblad, Lengyeltom, PDX Aaron, MartinBot, Actorma,
Mooglemoogle, J.delanoy, Mange01, Sorek, JohnicholasHines, Satchy, Reedy Bot, Asbjornu, LordAnubisBOT, Grshiplett, GaborLa-
jos, Midnight Madness, Cometstyles, BOTones, Ale2006, BBilge, Lights, Netmonger, HughD, Leebo, Tcotco, Reinhardheydt, Edjanx,
Jsawiuk, Miranda, Rei-bot, Janom e, LeaveSleaves, Drappel, Waycool27, Najand, WinTakeAll, Dangiankit, Mcmohd20, Abhinav316,
Sapph, Vitz-RS, HiDrNick, Kbrose, Waxy Protector, Gorpik, Jzhang2007, VVVBot, Dawn Bard, Caltas, RJaguar3, Eclectic star, Al-
thena, Samisa.abeysinghe, Happysailor, Darkimmortal, Truthandsanity, Alex.muller, OKBot, Svick, Nattelsker, ClueBot, Blanchardb,
Jusdafax, DavidABraun, Northernhenge, PixelBot, JeffDonner, SpikeToronto, Vivio Testarossa, Dtwong, JamieS93, Pyrofork, Dekisugi,
Roberto999, Alejandro.imass, Bobcat43, Versus22, SoxBot III, DumZiBoT, Stabbyboyo, XLinkBot, Gnowor, Majkiw, JaredWBurt, DAud
IcI, WikHead, Dsimic, Sterremix, Ghettoblaster, Some jerk on the Internet, Shawisland, Aleksander Zawitkowski, Scientus, MrOllie, Laa-
knorBot, Edmund.vonderburg, Liassic, Tide rolls, Zorrobot, Kmacdowe, Menew222, Legobot, Luckas-bot, Yobot, Antonycarthy, KSi-
imson, Jim1138, Piano non troppo, Ham12343, Materialscientist, Superandoni, ArthurBot, Xqbot, Silver Spoon Sokpop, Cliffhanger,
Robmanson, RibotBOT, Bahaba, Cartque, 78.26, Intelliproject, Reggaloza, Cjolley101, Danested, Ilovenagpur, Sae1962, Iamfool, Rid-
vany, Pinethicket, I dream of horses, Arctic Night, RedBot, Jandalhandler, SchreyP, Yunshui, Reaper Eternal, Tbhotch, Reach Out to the
Truth, Soaguy, Christoph hausner, Jann.poppinga, VernoWhitney, DASHBot, Kadavralol, Apparati, EmausBot, Rsankarg39, IAMTHE-
ORIGINALTED, RenamedUser01302013, Tommy2010, Wikipelli, K6ka, Xi3nt, Bveratudela, ZéroBot, Fæ, Access Denied, Oliynykd,
Manoj.aimca2, Coasterlover1994, Blanghals, Donner60, ChuispastonBot, Wjburnett, ClueBot NG, Laurentdk01, Gareth Griffith-Jones,
Snanda85, Arnold4411, Widr, Helpful Pixie Bot, DBigXray, BG19bot, Jkonkle, Iriducibilli, Dentalplanlisa, Negara13, Thomas Vissers,
Japrin, Achowat, BattyBot, David.moreno72, Cyberbot II, Mardux, Deyafragrance, 069952497a, Epicgenius, Koppor, Faisalsarfraz.fs,
Chasing chintu, BhavnaSharma9, Ketuls, Logan Lynn Roberts, Nikify, Jpnh7, Wowowwewa, NicksterDaRemixer, PromanXd, Vineet-
battula, Ajjensen13, Skrynauw, Play123play123, Daniele.Brundu, GeneralizationsAreBad, ErdrickLoto, Rimal11, Hippopotomonstros-
esquipedaliophobia, The idiot with paedos up above and Anonymous: 684
• Software Source: https://en.wikipedia.org/wiki/Software?oldid=738232299 Contributors: Damian Yerrick, Peter Winnberg, WojPob,
Mav, Uriyan, Bryan Derksen, The Anome, Ap, Malcolm Farmer, Andre Engels, Christian List, Matusz, Fubar Obfusco, Ray Van De
Walker, SimonP, Ben-Zin~enwiki, Ezubaric, Leandrod, K.lee, Michael Hardy, Wshun, Chris-martin, Wm, Nixdorf, Pnm, Liftarn, Ixfd64,
GTBacchus, Delirium, Minesweeper, Mdebets, Ahoerstemeier, DavidWBrooks, Nanshu, Angela, Александър, Salsa Shark, Nikai, Jiang,
Hectorthebat, Rl, Harvester, Mxn, Smack, Denny, Hashar, Feedmecereal, RickK, Jay, Andrewman327, Greenrd, DJ Clayworth, Maximus
Rex, Wernher, Bevo, Traroth, Topbanana, Joy, Raul654, Jusjih, Guppy, Chuunen Baka, Robbot, Paranoid, Chealer, Murray Langton,
Brent Gulanowski, Fredrik, RedWolf, Jmabel, ZimZalaBim, Nurg, Stewartadcock, Rholton, Meelar, Mendalus~enwiki, Hadal, JesseW,
ElBenevolente, Lupo, TPK, Cyrius, Dina, Dave6, Jop~enwiki, Centrx, Giftlite, Ktanzer, Kenny sh, Peruvianllama, Everyking, Erdal Ron-
ahi, Guanaco, AlistairMcMillan, Horatio, Richard cocks, Jaan513, Edcolins, Ragib, ALargeElk, Gadfium, Utcursch, Bact, Slowking Man,
Antandrus, Beland, Jam2k, Karol Langner, Maximaximax, Supadawg, Icairns, Raylu, Lindberg G Williams Jr, Jcw69, Revised~enwiki,
Jh51681, Torinor, Andreas Kaufmann, Asiananimal, Trevor MacInnis, Canterbury Tail, RevRagnarok, Gazpacho, Mike Rosoft, Scrool,
Dreamatalana, Poccil, Imroy, Jiy, Mindspillage, RossPatterson, Discospinster, Rich Farmbrough, Guanabot, Oliver Lineham, Michal Ju-
rosz, Roybb95~enwiki, Paul August, Gronky, Bender235, ZeroOne, Andrejj, Neurophyre, S.K., Fenice, Danakil, Livajo, Hayabusa future,
Mwanner, Quinobi, PhilHibbs, Dennis Brown, Triona, Coolcaesar, Spoon!, Jpgordon, Causa sui, Bobo192, Stesmo, Smalljim, Xevious,
420 CHAPTER 70. X.25

R. S. Shaw, Matt Britt, Nk, Minghong, Nsaa, Mdd, Liberty Miller, Knucmo2, Jumbuck, Michael Drüing, Alansohn, Gary, Liao, Guy
Harris, Conan, Jtalledo, Riana, Wtmitchell, Velella, TaintedMustard, Super-Magician, Rebroad, Suruena, A.K.R., Itsmine, Versageek,
HenryLi, Dan100, Markaci, Kenyon, Oleg Alexandrov, Daveydweeb, Roland2~enwiki, Weyes, Kelly Martin, Woohookitty, Mindmatrix,
Recnilgiarc, RHaworth, Georgia guy, Andrewspencer, Ruud Koot, WadeSimMiser, JeremyA, MONGO, Schzmo, Pufferfish101, GregorB,
Jonnabuz, Wayward, Mandarax, BD2412, Chun-hian, Reisio, Sjö, Seidenstud, Koavf, XP1, Nneonneo, Ligulem, Jehochman, Bubba73,
AlisonW, Fred Bradstadt, Utuado, Sango123, Yamamoto Ichiro, Flarn2006, FlaBot, Old Moonraker, DLMahnken, Nihiltres, Gurch,
KFP, Alphachimp, Silivrenion, Imnotminkus, Butros, Psantora, Chobot, Frappyjohn, DVdm, Gwernol, The Rambling Man, Wavelength,
Kinneyboy90, StuffOfInterest, Pip2andahalf, RussBot, Bhny, Gardar Rurak, SpuriousQ, KevinCuddeback, Stephenb, Gaius Cornelius,
CambridgeBayWeather, Rsrikanth05, Wimt, DBHunter, LauriO~enwiki, Friday, NawlinWiki, Wiki alf, Grafen, AlMac, Justin Eiler,
Tejas81, Pohatu771, Malcolma, Xdenizen, Jpbowen, Mjchonoles, Moe Epsilon, Lucianob, Syrthiss, T, Brucevdk, Brat32, DeadEyeAr-
row, Jeremy Visser, Werdna, Navstar, Flipjargendy, Pooryorick~enwiki, Tigershrike, K.Nevelsteen, Emana, Ali K, Fang Aili, KGasso,
Th1rt3en, GraemeL, JoanneB, Alasdair, Rurik, CWenger, Thelb4, JLaTondre, Caballero1967, Allens, Katieh5584, Fctk~enwiki, TLSuda,
Rwwww, Gordmoo, CIreland, Arcadie, Luk, Sintonak.X, SmackBot, Reedy, Hydrogen Iodide, McGeddon, Lagalag, Unyoyega, Pgk,
Rbreen, DanielPenfield, WookieInHeat, Aoratos, Commander Keane bot, Yamaguchi , Cunya, Gilliam, Ohnoitsjamie, Hmains, Nmrd,
Mr Barndoor, Skizzik, Chris the speller, Bluebot, SlimJim, Quinsareth, Thumperward, Liamdaly620, Miquonranger03, Hmcnally, Lagge-
dOnUser, SchfiftyThree, Xx236, J. Spencer, Nbarth, Vbigdeli, Philip Howard, Darth Panda, Edlin, Anabus, Carl007, Dethme0w, Can't
sleep, clown will eat me, AussieLegend, Frap, Ashawley, Nixeagle, MeekSaffron, Snowmanradio, JonHarder, Yidisheryid, Addshore, Rgill,
Edivorce, Normxxx, Virtualsfera, Spectrogram, E. Sn0 =31337=, Cybercobra, Valenciano, Jiddisch~enwiki, Richard001, Grahamperrin,
Mini-Geek, Weregerbil, Sigma 7, LeoNomis, Jóna Þórunn, Sadi Carnot, Pilotguy, Mgrand, ArglebargleIV, Derek farn, Howdoesthiswo,
Kuru, Microchip08, Mike1901, Sadeq, Gobonobo, Nharipra, Park3r, Evenios, Tim Q. Wells, RomanSpa, 16@r, A. Parrot, Ehheh, Arkr-
ishna, GilbertoSilvaFan, Optakeover, TastyPoutine, Ryulong, Axcelis555, Nabeth, Xionbox, MrDolomite, Hu12, Iridescent, Wimbit, J
Di, Paul Foxworthy, GDallimore, Tawkerbot2, Daniel5127, Flubeca, JForget, CmdrObot, Dycedarg, Dbstommy, Page Up, JohnCD, Nun-
quam Dormio, NickW557, Mpete510, FlyingToaster, Pgr94, Dan Fuhry, Skybon, Safalra, Equendil, Phatom87, Cahk, MC10, Crossmr,
Gogo Dodo, Fazilati, ST47, Nike8, Tawkerbot4, Clovis Sangrail, Christian75, Torc2, DumbBOT, Kozuch, Omicronpersei8, Landroo,
Tuxide, Epbr123, Brinnington, Marek69, DmitTrix, Neil916, NorwegianBlue, James086, Nick Number, Big Bird, SusanLesch, Men-
tifisto, SC979, KrakatoaKatie, AntiVandalBot, Blarrrgy, Luna Santin, Seaphoto, Turlo Lomon, Rehnn83, Vanjagenije, Ellenaz, Man-
ionc, Spencer, Yoooder, Myanw, MikeLynch, JAnDbot, Random89, Zarkos, Barek, MER-C, The Transhumanist, Instinct, Hello32020,
Hno3, Andonic, PhilKnight, Bearly541, LittleOldMe, Acroterion, True Genius, Magioladitis, Swikid, Bongwarrior, VoABot II, Auburn-
Pilot, Wikidudeman, Tasja~enwiki, JamesBWatson, Ff1959, Frip1000, Kajasudhakarababu, Faizhaider, Tedickey, Twsx, Brusegadi, Paul
Niquette, KConWiki, Catgut, Teryan2006, PIrish, GSCC, Saleem110, Mkdw, Cpl Syx, Ripogenus77, DerHexer, WLU, Slingerjansen,
Oicumayberight, PeaceAnywhere, MartinBot, Dugmn, Mermaid from the Baltic Sea, Cargils02, Rettetast, Kostisl, R'n'B, Autocratique,
CommonsDelinker, Siliconov, EdBever, J.delanoy, Trusilver, Abby, Hans Dunkelberg, Aweiredguy, Public Menace, Jesant13, Ginseng-
bomb, 12dstring, Jreferee, Gueldenberg, Cpiral, DanielEng, Dispenser, Dominator09, AntiSpamBot, The Transhumanist (AWB), Dar-
rendeng, Rwessel, FJPB, Aatayyab, Jackaranga, KylieTastic, Alien4, Entropy, Петър Петров, Remember the dot, Jester7777, Gtg204y,
Bonadea, Alan012, Sigondronggondrong~enwiki, Idioma-bot, Jsheadixon, Wikieditor06, VolkovBot, Johan1298~enwiki, ABF, Jcuadros,
Jeff G., Supersteve04038, Ademsaykin, Ishara665g, Jacqueline7894y, Lareina3656y, RainierHa, Philip Trueman, TXiKiBoT, Oshwah,
Lookingchris, Technopat, Dj stone, Zybez, Poo1000, Zerokewl, Seraphim, Canaima, Jackfork, Eidetic Man, Ah2190, Seb az86556,
Ilyushka88, Milan Keršláger, Nathanielrichards, Flash man999, Manik762007, Mwilso24, Kurowoofwoof111, BigDunc, Aleemqureshi,
Boriszex, Andy Dingley, This acccount is 4 vandalism, Dirkbb, Synthebot, Purgatory Fubar, Oldwes, Monty845, Nickels360, Rainier3,
Fredtheflyingfrog, Gabecuevas, Kbrose, Tharcore, SieBot, Casperdog2227, Krawi, Gerakibot, One more night, Dawn Bard, Viskon-
sas, Timhowardriley, Triwbe, Dibcom, Yintan, Soler97, Lajpatdhingra, Keilana, Flyer22 Reborn, Oda Mari, Nosferatus2007, Jarda-
wien, Allmightyduck, Zedlik, Oxymoron83, Listlist, Harry-, Hello71, Steven Crossin, Redmercury82, Miguel.mateo, Fratrep, Macy,
Kumioko, Majorbrainy, Iknowyourider, Jacob.jose, Maralia, Egbsystem, Denisarona, Into The Fray, Stillwaterising, Mr. Granger, Mar-
tarius, Sokrato~enwiki, Elassint, ClueBot, Kathmandu2007, Safarj, Prohlep, Artichoker, Hutcher, Fyyer, Foxj, The Thing That Should
Not Be, Rodhullandemu, Starkiller88, Jan1nad, Hellosandimas, Wysprgr2005, Ahadrt, Kornxi, Drmies, Mild Bill Hiccup, Uncle Milty,
Boing! said Zebedee, Wikijens, Davennmarr, CounterVandalismBot, N n abc123, Passargea, Puchiko, Pointillist, Narayana vvss, Drag-
onBot, PEH2, Drewster1829, Excirial, Jusdafax, M4gnum0n, Jamesiemiller, Monobi, Eeekster, Setveen, Totie, Aqeelbilal, Ykhwong,
NuclearWarfare, Jotterbot, M.O.X, Elizium23, Noosentaal, ChrisHodgesUK, La Pianista, Timothy Neilen, Thingg, Versus22, Doriftu,
Perkinsleslie, HumphreyW, Apparition11, Party, Matthias M., SF007, SewerCat, DumZiBoT, Editorofthewiki, Bean2thousand, XLinkBot,
Fastily, Gnowor, SwirlBoy39, Jovianeye, Avoided, Skarebo, SilvonenBot, IngerAlHaosului, Cburress, Big milsy, Siggy28, Darkevilfairy,
Addbot, Pyfan, Some jerk on the Internet, Betterusername, Binary TSO, Ronhjones, CoolD, Scientus, CanadianLinuxUser, Fluffernutter,
Cst17, MrOllie, BalderV, Chzz, Mcdonald.ross5, Favonian, ChenzwBot, Doniago, Jasper Deng, Quercus solaris, 5 albert square, Japonca,
Naik5abhi, Numbo3-bot, Dayewalker, Shakya ind, Tide rolls, Lightbot, Emvn, Krano, Teles, Wireless friend, Jarble, Phillip Ca, Legobot,
Kurtis, Yobot, OrgasGirl, Cloudyed, Ptbotgourou, Senator Palpatine, Fraggle81, TaBOT-zerem, MarioS, Pcap, The Earwig, ArchonMag-
nus, THEN WHO WAS PHONE?, TheBiaatch, A Stop at Willoughby, Fern80, Rogger.Ferguson, KamikazeBot, Knownot, Esoteric Rogue,
Whitew123, South Bay, Matty, Backslash Forwardslash, AnomieBOT, Message From Xenu, Kerfuffler, Jim1138, Galoubet, Dwayne, Piano
non troppo, AdjustShift, Kingpin13, Amalhotra124, Materialscientist, Kc03, The High Fin Sperm Whale, E2eamon, La comadreja, Felyza,
LilHelpa, Kuldeep06march, MauritsBot, Xqbot, JimVC3, Jtbatalla, Lunaumbrax, P99am, S0aasdf2sf, Frosted14, T4tarzan, Sivaguru411,
RibotBOT, Wikicrazier2011, Amaury, Sorryranga94, Thurak13, Chongkian, Cyberstrike3000X, Shadowjams, A.amitkumar, Dougof-
borg, GliderMaven, FrescoBot, Luntrasul, Tangent747, Rhye123, W Nowicki, Recognizance, Zero Thrust, MD66, HJ Mitchell, Quin-
tusQuill, Ragha joshi, DivineAlpha, Maggyero, Intelligentsium, Rajeshmagic, Trueshow111, T3h 1337 b0y, Boxplot, Winterst, Program-
mer13, Pinethicket, I dream of horses, HRoestBot, Edderso, Deggalega, Jonathandeamer, 10metreh, NinjaCross, NurAzije, LinDrug,
Skyerise, Hoo man, Jschnur, RedBot, Muffhen, Евгени Симеонов, Serols, Citypanther, Curtis23, Bgpaulus, Davie4125, Aardvarkzz,
FoxBot, SchreyP, DixonDBot, LogAntiLog, Drawnman247, Dinamik-bot, Vrenator, MrX, January, Allen4names, Aoidh, Nourybouraqadi,
Reaper Eternal, Jeffrd10, Nascar1996, Tbhotch, Hauberk, Burnisk, DARTH SIDIOUS 2, Andrea105, Mean as custard, RjwilmsiBot,
Shafaet, DSP-user, Rollins83, DASHBot, EmausBot, JMetzler, John of Reading, Orphan Wiki, Happyisenough, Nima1024, Speaksleft,
Gfoley4, 021-adilk, Priyadarshi.pratyush, Freeeeeesoft, Dinhtuydzao, Racerx11, Ethine, GoingBatty, RA0808, RenamedUser01302013,
Kelldall, Solarra, Slowmo1993, Tommy2010, Wexhammer, Dcirovic, K6ka, Anirudh Emani, Sitarherophil, Haunting The Better, Abu-
faisal65, Fæ, Angela 2502, MithrandirAgain, Funnysens, Dffgd, Howling wolf of the jungle, AManWithNoPlan, Wayne Slam, Ocaasi,
Tolly4bolly, Puneet1507, EricWesBrown, Crazykr, Arman Cagle, Vale Len, L Kensington, Jguy, Mayur, Donner60, Virtualenv, Arnabat-
cal, Pigduckmeatshroom, Rihannoufal, Sven Manguard, DASHBotAV, 28bot, Venkisree, Web20image, Cgt, Petrb, Xanchester, ABC1A1,
Gwen-chan, ClueBot NG, Salmon92, Standalone0109, Shaluhijas, Xplodercop, Iiii I I I, Matthiaspaul, Satellizer, Jcrwaford5, Shad-
dim, Hamiltøn, HectorAE, Seven.cardwell, Delusion23, Mesoderm, O.Koslowski, DURWHAT, Manishgoyal.indian, Ankur 360, Widr,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 421

Matt j fox, JordoCo, Vibhijain, Oddbodz, Helpful Pixie Bot, Alazlogexi, Calibooboo1, HMSSolent, Ifftikhaarrr, Titodutta, Wbm1058,
SteveWringsfield, BG19bot, Pine, Prahim, Jennapresley, Salmank120, Hz.tiang, Tiffu, Ceradon, Northamerica1000, Ex-dot, Marcelnache,
P.deshmukh09, Travelour, Joydeep, Altaïr, Jcdericco, Dynix, Insidiae, Morning Sunshine, Klilidiplomus, Achowat, Wannabemodel, Cal-
cifero, Knodir, EricEnfermero, Yasirilyas, BattyBot, David.moreno72, Labscientist, Pratyya Ghosh, SaadTeenager, Dominic9821, Piasa1,
Vishwajith33, Zatya34, ChrisGualtieri, MrDKing, TC Cannon, Adriancjr, YountLor, Markwaugh117, FoCuSandLeArN, Priyaranjan-
champatiray, Cwobeel, Majilis, Hackguard, Codename Lisa, MaggieMidnight, TwoTwoHello, Buspirtraz, Lugia2453, Andro flip, Frosty,
SFK2, Xxtt, Sriharsh1234, Joeinwiki, Ipodsof, Dave Braunschweig, Softwarenod, Moony22, Red-eyed demon, Gregwinwood11, Afos-
hay, Deboub, I am One of Many, Carrot Lord, Aura707, Anand8prakash, Kogmaw, Jakec, Taylor Bohl, Shubabegum, EvergreenFir,
Probusiness, Scharge, Reneve48, Oleg3280, Ahmlmh, Daideep patel, Sugavin, Babitaarora, Diptytiw, A Certain Lack of Grandeur, Wik-
iuser13, Ugog Nizdast, Melody Lavender, JustBerry, Markchloe, George8211, Lukeama, Dannyruthe, Parth pratim, Inaaaa, Andy Xucha,
Mmadade, WikiJuggernaut, Dee59, Rangerbot962, Jesus Morales Arce, Crow, Zeshannehal, Saisuryakattamuri, SergioGaeta, Abdllahijaz,
Hiranya Kumar Rajbongshi, Giliofelix, Charithvalluru1993, Filedelinkerbot, Prasoonnegi17, Vikash1122, Scarlettail, U2fanboi, Waggie,
Sanuamrani, Khali khelo, IagoQnsi, Gnamus, Forextread, Xombear, Thandi moyo, Marcel15255, Avidwriterforever, 3primetime3, Anny
Johnson, Malerisch, Asdklf;, Blurseeps, Eurodyne, JLalou, Shivanshis4, Kingabzy7, Firas Boudaqa, Gurjyottheman, X3mofile, Zppix,
Abdulrahmanimthihar, Hussa095, Shahnawaz hussain nagori, SDSJAFDHSA, TROLLED81, Shantanuspark, SafeerAhmedAbro, Mon-
aiva, Miaitza, AlishiaHolmes, Bazlul1, NANCYNCIT, OSMAX20, KasparBot, Bakosjen, MH Rabby khan, Adam9007, WhiteChek,
Priyanksoni9713, Saira500, Abhinavsfc, Oluwa2Chainz, Sro23, Ganeshkavhar1, Mahnoorali1305, Ruhulamin.khatri, Kurousagi, Sociable
Computer, Raheemhacker, MartinZ02, Thomasclewer1234, Hyperham51197, Ronaepaul, Qzd, I will erase, Athaniya nizamuddin, Tan-
veerdogar, Nooriezak, Emotionalllama, Naman kashyap, Fmadd, Madi Gregi, Asadsoft, JazzGW, Jeezidkwhatmedoinhere, Kayallwestfall
and Anonymous: 1597
• State (computer science) Source: https://en.wikipedia.org/wiki/State_(computer_science)?oldid=732690552 Contributors: The Anome,
SimonP, Mjb, Lexor, TakuyaMurata, Grendelkhan, Owen, Ancheta Wis, Giftlite, COMPATT, Hypertex, Zuidervled, BoP, Abdull, Diego
Moya, Kusma, MIT Trekkie, Dpv, RobyWayne, Fresheneesz, Hairy Dude, Hydrargyrum, Zzuuzz, Reyk, SmackBot, BiT, Dfletter, Jon-
Harder, Jaibe, Kvng, Ellin Beltz, Chetvorno, ChrisCork, Cydebot, Thijs!bot, Nick Number, Nthep, Magioladitis, Usien6, R'n'B, Hans
Dunkelberg, Matthew Yeager, M4gnum0n, Posix memalign, SchreiberBike, GlasGhost, DumZiBoT, Addbot, Ptbotgourou, JimVC3, Mark
Renier, Sae1962, Jfmantis, FluffySquid, BG19bot, EditorRob, MrBill3, YFdyh-bot, Werddemer, Monkbot, Shannon hedges and Anony-
mous: 20
• Syntax Source: https://en.wikipedia.org/wiki/Syntax?oldid=732551480 Contributors: Mav, RoseParks, Andre Engels, Karl E. V. Palmen,
Youssefsan, Vaganyik, William Avery, Ben-Zin~enwiki, Hannes Hirzel, Hirzel, Stevertigo, K.lee, Michael Hardy, Kwertii, Looxix~enwiki,
Ahoerstemeier, Darkwind, Glenn, Cadr, Hectorthebat, Chronotox, Charles Matthews, Haukurth, Hyacinth, Ed g2s, PuzzletChung, Robbot,
RedWolf, Altenmann, Dittaeva, Sverdrup, Academic Challenger, Rursus, Ojigiri~enwiki, Hippietrail, Hadal, Spellbinder, Rik G., Giftlite,
Marnanel, Raymond Meredith, Linguizic, Jdavidb, Neilc, Physicist, Andycjp, J. 'mach' wust, Sonjaaa, Beland, OverlordQ, MarkSweep,
Mukerjee, Oneiros, Karl-Henner, Tooki, Robin klein, N-k, D6, Poccil, Haggen Kennedy, Skal, Discospinster, Rich Farmbrough, Ben-
der235, El C, Cherry blossom tree, Joanjoc~enwiki, Sietse Snel, Bobo192, Beige Tangerine, Viriditas, Dungodung, Kappa, Joe Jarvis,
Kjkolb, Morganiq, Jonsafari, Anthony Appleyard, Mark Dingemanse, Atlant, CR7, Ciceronl, Cromwellt, Ish ishwar, RJFJR, Mikeo,
Axeman89, Stemonitis, Nuno Tavares, Angr, Simetrical, Woohookitty, Mindmatrix, Bellenion, Kokoriko, JeremyA, Keta, Eilthireach,
Pasta Salad, Palica, Mrcool1122, Graham87, FreplySpang, Mayumashu, NatusRoma, TheRingess, Wooddoo-eng, Krash, Nguyen Thanh
Quang, Whimemsz, Malhonen, CJLL Wright, Chobot, DVdm, Martin Hinks, KEJ, YurikBot, Wavelength, RobotE, RussBot, Hyad, Pig-
man, Polyvios, Anomalocaris, Cquan, Zarel, Bayle Shanks, Pdblues, Action potential, Maunus, Wknight94, Zzuuzz, Donald Albury,
Miguelmrm~enwiki, JoanneB, CWenger, Thomas Blomberg, TuukkaH, Torgo, SmackBot, David Kernow, Jasy jatere, KnowledgeOf-
Self, Zerida, David.Mestel, Unyoyega, Aurista25, C.Fred, Mgreenbe, Neutral-en, BiT, Niro5, Jwestbrook, Gilliam, Jcarroll, Rmosler2100,
Bluebot, Mazeface, Thom2002, MalafayaBot, J. Spencer, Rlevse, Can't sleep, clown will eat me, Mr.Z-man, Allan McInnes, Sundar-
Bot, Stevenmitchell, Ghiraddje, RandomP, Jon Awbrey, Fuzzypeg, FlyHigh, Byelf2007, SashatoBot, Derek farn, Rijkbenik, Tim Q. Wells,
Minna Sora no Shita, 16@r, J Crow, Slakr, Novangelis, Kvng, Joseph Solis in Australia, Joshuagross, Stifynsemons, Macetw, Thomasmeeks,
Gregbard, FilipeS, Icek~enwiki, Cydebot, Kallerdis, Robzy213, Thijs!bot, Epbr123, Jobber, ClosedEyesSeeing, John254, Adw2000, Nick
Number, Angryafghan, Pprabhakarrao, KrakatoaKatie, AntiVandalBot, Luna Santin, Prabhakar P Rao, Comhreir, Wayiran, Bogger, JAnD-
bot, Leuko, FromFoamsToWaves, MER-C, Rollred15, Freedomlinux, VoABot II, Pleckaitis, Rivertorch, Eldumpo, Yaxu, Glen, DerHexer,
CapnPrep, Kornfan71, Anaxial, R'n'B, Dwspig2, Smokizzy, J.delanoy, Hippasus, EscapingLife, Bogey97, Numbo3, Jerry, McSly, Rwessel,
SJP, Hulten, Idioma-bot, VolkovBot, Semmelweiss, Johan1298~enwiki, Jeff G., Gbouzon, TXiKiBoT, Oshwah, Guillaume2303, PaulTa-
nenbaum, ^demonBot2, Natg 19, Yannis1962, Synthebot, Cnilep, Wiredrabbit, Jimbo2222, SieBot, Mycomp, Nihil novi, Flyer22 Reborn,
Space Dracula, Sky1er, Yerpo, Hexham, Oxymoron83, Tautologist, ClueBot, JonnybrotherJr, Pi zero, Mike Klaassen, CyrilThePig4,
Wutsje, ChandlerMapBot, Zack wadghiri, Rhododendrites, Divespluto, Fattyjwoods, SchreiberBike, Acabashi, Aitias, Versus22, Will
Hen, Cc116, XLinkBot, Jbeans, Starfire777, Nyoro n, Addbot, Xp54321, ConCompS, Willking1979, Rmalouf, Vishnava, Coffeeas-
sured, Numbo3-bot, Lpjurca, Erutuon, Tide rolls, OlEnglish, Jarble, Legobot, Luckas-bot, Yobot, Ptbotgourou, Denispir, Raimundo Pas-
tor, AnomieBOT, Quangbao, Rjanag, Springindd, IRP, JackieBot, Glenfarclas, Materialscientist, Citation bot, ArthurBot, TwigsCogito,
Jchthys, Xqbot, Triplejo2, Dr Oldekop, Omnipaedista, RibotBOT, MarkkuP, Acb4341, LucienBOT, Krj373, Airborne84, Mundart, So-
pher99, Pinethicket, Jonesey95, Full-date unlinking bot, Dude1818, Jauhienij, Æk, Lotje, Tjo3ya, Reaper Eternal, Kajervi, Brian the Edi-
tor, Tbhotch, DARTH SIDIOUS 2, 2bluey, Mean as custard, Ripchip Bot, Uanfala, Jmonk95, EmausBot, GoingBatty, RA0808, Dcirovic,
K6ka, Mainstreet27, Goudron, Neddy1234, Tijfo098, ClueBot NG, AK IM OP, Iloveandrea, Helpful Pixie Bot, BG19bot, CityOfSil-
ver, Solomon7968, AdventurousSquirrel, CitationCleanerBot, Qetuth, Nuyhij, ChrisGualtieri, Grahas02, ComfyKem, BigBangTheoryLad,
Kevin12xd, Beatrice57, BreakfastJr, JKJasmineWongLaiKwan, Cmckain14, Wikiuser13, Werddemer, ANALYN AYCOCHO, Monkbot,
Boblamus, Qwertyxp2000, Crystallizedcarbon, Loraof, YeOldeGentleman, Faze4life2k16 and Anonymous: 314
• Technical standard Source: https://en.wikipedia.org/wiki/Technical_standard?oldid=728787835 Contributors: The Cunctator, Zundark,
Ben-Zin~enwiki, Olivier, Michael Hardy, Wapcaplet, Delirium, Gbleem, Mac, Yaronf, Darkwind, Glenn, Tobias Conradi, Dysprosia,
Hyacinth, Mackensen, Jusjih, Gentgeen, Vespristiano, Cyrius, Pengo, Adam78, Markus Kuhn, Bensaccount, Iceberg3k, Tagishsimon,
Jurema Oliveira, Saucepan, Secfan, Icairns, Karl-Henner, Zondor, EagleOne, CALR, Rich Farmbrough, Pjacobi, Mani1, Fajro, Azure
Haights, Hardwick, RussBlau, Schnolle, Gary, Spangineer, Wtshymanski, TShilo12, Angr, Mel Etitis, Pixeltoo, DESiegel, BD2412, Short-
enfs, Rjwilmsi, SpNeo, Vegaswikian, Makru, AJackl, Computor, ColdFeet, Mercury McKinnon, YurikBot, RussBot, DMahalko, Gaius
Cornelius, Retired username, Malcolma, Wangi, Nescio, 21655, Aufaber, Liujiang, Crystallina, SmackBot, Brick Thrower, Eskimbot,
Alsandro, Chris the speller, Thumperward, Nmyers, Darius Dhlomo, Karlhauth, Hongooi, Frap, Yidisheryid, Azumanga1, Mordea, Derek
farn, Ckatz, 16@r, Sijo Ripa, Adomenic, Levineps, V111P, IvanLanin, Chetvorno, J Milburn, CmdrObot, Harej bot, Krauss, LouisBB,
Travelbird, Escarbot, Milesflint, Danger, Albany NY, Bongwarrior, Dekimasu, Gabriel Kielland, Ratherhaveaheart, Alro, Lilac Soul,
422 CHAPTER 70. X.25

Rlsheehan, WarthogDemon, Sbipes, Mercurywoodrose, Martin451, Gotox, Val.policelli, Altermike, !dea4u, Pkgx, Yintan, KathrynLy-
barger, Alex.muller, StaticGull, Havarn, ClueBot, Arakunem, A3camero, Dekisugi, StanStandard, Rror, Alexius08, Addbot, ‫ماني‬, Jakob-
Voss, TaBOT-zerem, Hugoham7, Sillypants85, Sivanov87, Piano non troppo, AdjustShift, Barf73~enwiki, Materialscientist, Citypanes89,
Shaymetcalfe, Isheden, Wgladwin, FrescoBot, Originalwana, Merlion444, EmausBot, Chuchart W, ZéroBot, Ego White Tray, Dineshku-
mar Ponnusamy, ClueBot NG, Organicdev, MerlIwBot, Wbm1058, PhnomPencil, Kolarp, Some Gadget Geek, KasparBot, New Media
Theorist, Gluons12 and Anonymous: 94
• Telecommunication Source: https://en.wikipedia.org/wiki/Telecommunication?oldid=736395538 Contributors: The Cunctator, Mav,
Bryan Derksen, The Anome, Ap, Rjstott, Aldie, Heron, Olivier, Edward, Michael Hardy, Mahjongg, Dan Koehl, Kku, Ixfd64, Dcljr,
Sannse, Tregoweth, Card~enwiki, Ahoerstemeier, DavidWBrooks, Haakon, Bluelion, Glenn, Nikai, Tristanb, Raven in Orbit, Guaka,
Ralesk, Reddi, Hydnjo, Will, Wik, Tpbradbury, Munford, Maximus Rex, SEWilco, Topbanana, Fvw, Chuunen Baka, Robbot, Chrism,
Vespristiano, RedWolf, Romanm, Modulatum, Richardpitt, Stewartadcock, Rfc1394, Steeev, Rasmus Faber, Hadal, Borislav, Betsumei,
Fuelbottle, Cedars, Stirling Newberry, Giftlite, Inkling, Mblaze, Bradeos Graphon, Curps, Rick Block, Mboverload, Bobblewik, Edcolins,
Gloop, Mendel, Sonjaaa, Spatch, Antandrus, MarkSweep, Piotrus, Quarl, MacGyverMagic, Bumm13, PFHLai, Neutrality, Ratiocinate,
Deglr6328, M1ss1ontomars2k4, Trevor MacInnis, Bluemask, Jayjg, CALR, Indosauros, Discospinster, 4pq1injbok, Rich Farmbrough,
Bert490, Smyth, Mjpieters, Pavel Vozenilek, Bender235, ZeroOne, Radavidson, Kjoonlee, JoeSmack, Violetriga, Borofkin, El C, Phil-
Hibbs, Art LaPella, Bobo192, Shenme, MaxHund, Maurreen, K12u, Jerryseinfeld, Timsheridan, Sysiphe, Jumbuck, Alansohn, Polarscribe,
Riana, Batmanand, Denniss, Wtmitchell, Rick Sidwell, TenOfAllTrades, Ceyockey, Herodotos, Kelly Martin, Woohookitty, Mindma-
trix, Pol098, Tabletop, Wikiklrsc, MarkPos, Ajshm, MrSomeone, RuM, Matilda, Graham87, BD2412, Kbdank71, Mendaliv, Snafflekid,
Casey Abell, Drbogdan, Rjwilmsi, Koavf, Hulagutten, Rillian, Vegaswikian, Makru, Titoxd, Margosbot~enwiki, RexNL, RobyWayne,
Intgr, Terrx, Srleffler, Phoenix2~enwiki, DVdm, Bgwhite, Stephenw77, YurikBot, Wavelength, Radishes, RobotE, Splash, Admiral Roo,
CambridgeBayWeather, Pseudomonas, Robbyyy, NawlinWiki, Cquan, Jaxl, Usingha~enwiki, Anareon, Sir48, PhilipO, Mikeblas, Tony1,
Zwobot, Bucketsofg, BOT-Superzerocool, FF2010, Light current, 2over0, David Jordan, GraemeL, Tyrenius, ArielGold, Johnpseudo,
TLSuda, Rwwww, GrinBot~enwiki, Sbyrnes321, Veinor, SmackBot, InverseHypercube, Unyoyega, CyclePat, Blue520, Misto, Eskim-
bot, KelleyCook, Lakhim, Gilliam, Ohnoitsjamie, Hmains, Ppntori, Chris the speller, Persian Poet Gal, Payxystaxna, Oli Filth, Jeysaba,
Silly rabbit, Vasu99a, Telecom.portal, Colonies Chris, A. B., Stenson jack, Милан Јелисавчић, Mitsuhirato, Rrburke, Addshore, DR04,
A5b, Mion, Ugur Basak Bot~enwiki, SashatoBot, Rory096, Harryboyles, Demicx, Mike1901, Smasafy, Bushsf, GothCabbage, Aden Scott,
IronGargoyle, 16@r, Special-T, Shangrilaista, Beetstra, Milesdowsett, Mr Stephen, Dicklyon, InedibleHulk, SandyGeorgia, TastyPoutine,
Totel, Ffxaddict899, Jose77, Kvng, ShakingSpirit, SansSanity, OnBeyondZebrax, Iridescent, Joseph Solis in Australia, Ohad.cohen, Cour-
celles, Tawkerbot2, JohnTechnologist, JForget, CRGreathouse, CmdrObot, Wafulz, JohnCD, N2e, SkylineEvo, Thomasmeeks, Penbat,
Cydebot, Obornp, Gogo Dodo, Hughdbrown, Studerby, Krakfly, Tawkerbot4, Ethan01, Kozuch, Lxdbsn, Malleus Fatuorum, Thijs!bot,
Hcberkowitz, John254, Tellyaddict, Solveforce, Dawnseeker2000, Escarbot, Mentifisto, KrakatoaKatie, AntiVandalBot, Majorly, Luna
Santin, Grammargal, Venya, Qsa5kn, PJY, Juzaily, Julie Deanna, Lperez2029, Once in a Blue Moon, JAnDbot, Harryzilber, MER-C,
CosineKitty, PhilKnight, Kerotan, Magioladitis, VoABot II, Appraiser, Verkhovensky, Bwhack, ClovisPt, LorenzoB, DerHexer, Oicumay-
beright, Kayau, Gwern, Europaandio, MartinBot, Jim.henderson, R'n'B, CommonsDelinker, Erkan Yilmaz, J.delanoy, Pharaoh of the
Wizards, Trusilver, Wa3frp, Jesant13, A New Nation, It Is Me Here, McSly, Brolsma, Skier Dude, Zedh, The Transhumanist (AWB),
Fountains of Bryn Mawr, KylieTastic, DASonnenfeld, Mlewis000, Idioma-bot, Funandtrvl, Remi0o, Sam Blacketer, VolkovBot, DM-
cMPO11AAUK, AlnoktaBOT, Coreyxbs, Gaianauta, Sdsds, Philip Trueman, TXiKiBoT, Chimpex, GcSwRhIc, Bogatabeav, Saligron,
Canaima, From-cary, Mezzaluna, PDFbot, Bhavin105, Wiae, ARUNKUMAR P.R, SpecMode, Madhero88, Kjoseph7777, Mohan0704,
Aulman, Meters, IdleUser, Synthebot, Insanity Incarnate, Symane, Logan, Kbrose, SieBot, Moonriddengirl, Scarian, Gerakibot, Keilana,
JD554, Andrew Hartford, Matthewedwards, SPACKlick, WannabeAmatureHistorian, Ioverka, Nazi 2007, Lightmouse, RW Marloe, Ngrif-
feth, OKBot, Svick, Spitfire19, Kristine.clara, Rapaporta, Jayeshtula, WikiLaurent, Asocall, Denisarona, Ossguy, Tuxa, Twinsday, Church,
Martarius, Elassint, ClueBot, Valeria70, GorillaWarfare, PipepBot, Qedu, Pvineet131, The Thing That Should Not Be, WaltBusterkeys,
SyntaxBlitz, Wutsje, Businessphonesystems, Bbb2007, Excirial, Hadiyana, Hugsforsale, Sun Creator, Georgiamonet, Arjayay, Razorflame,
Muro Bot, Pwarrior, BOTarate, Hdorren, Murali intl, Carlroddam, Johnuniq, SoxBot III, Vanished user uih38riiw4hjlsd, Skunkboy74,
XLinkBot, NocturnalA6 2.7, Setherson, Sweetpoet, Gggh, Addbot, DOI bot, Fgnievinski, Bkmays, Leszek Jańczuk, Fluffernutter, Ku-
tulus, MrOllie, Download, Favonian, 5 albert square, Tyw7, Lightbot, OlEnglish, Gail, Zorrobot, MuZemike, ‫זרם‬-‫טבעת‬, Solidice190,
Luckas-bot, Yobot, OrgasGirl, TaBOT-zerem, Samsam.yh, THEN WHO WAS PHONE?, KamikazeBot, Nyat, AnomieBOT, Srobak,
Rsayles, Bsimmons666, Bowmanmas229, Jim1138, Galoubet, Gaga.vaa, Piano non troppo, Kjkarthikmaddy, AdjustShift, Materialscien-
tist, Whiskers9, Citation bot, Jeremyjf22, Freeness, Elm-39, Schproject, DynamoDegsy, Readiwip, ArthurBot, MauritsBot, Xqbot, Capri-
corn42, 4twenty42o, IMarc89, LoKiLeCh, DSofa, Ched, Srich32977, Coretheapple, Wiki2contrib, Nasa-verve, GrouchoBot, Wizardist,
Omnipaedista, Smartishkindaguy, Bo98, Shadowjams, 11cookeaw1, SD5, Gururaju, A.amitkumar, Anth12, Tsiuser09, FrescoBot, GEB-
Stgo, Alarics, Mìthrandir, Finalius, Citation bot 1, XxTimberlakexx, Biker Biker, MacMed, I dream of horses, Lars Washington, MastiBot,
Ezhuttukari, Bridget Huntley, Serols, Blycroft, ‫הסיסמא‬123, Crusoe8181, Thrissel, V4nd3r, TobeBot, Trappist the monk, SchreyP, Paul
J Wayman, Lotje, Callanecc, Vrenator, Aoidh, TheGrimReaper NS, Merlinsorca, Minimac, Sideways713, DARTH SIDIOUS 2, Mean
as custard, Offnfopt, Basangbur, Haylstorms, EmausBot, John of Reading, Orphan Wiki, WikitanvirBot, Gfoley4, Katherine, Pugliavi,
Primefac, GoingBatty, RA0808, MCI telcomm, Telecomman, Wikipelli, Sprinklezz, Kkm010, Vihar7, Cogiati, Fæ, H3llBot, Marc Spod-
dle, LIVPAT, Alrino, IGeMiNix, Kaeh4, Donner60, Rifasj123, Rangoon11, Chris857, ChuispastonBot, ThePowerofX, Philippe BINANT,
Teapeat, Sepersann, 28bot, ClueBot NG, JetBlast, This lousy T-shirt, Draksis314, Satellizer, DobriAtanassovBatovski, Mrgates, Mr Myson,
Muon, Widr, Glauki, Helpful Pixie Bot, BG19bot, Hittman627, Brittanyab, Northamerica1000, Ashishkulshreshtha, Graham11, Colbry53,
Axis Research Mind, Joydeep, Swamynathan007, Elagoutova, HelinaZ, Achowat, Fylbecatulous, Pratyya Ghosh, Oreileao, Khazar2, Mna-
tivesacl, Mhughes38, Katiewiltshire, FoCuSandLeArN, Opensourceyk, Thermocycler, PeacefulPlanet3, Lugia2453, Perep80, Me, Myself,
and I are Here, Reatlas, Joeinwiki, Phamnhatkhanh, Faizan, Anawesomeeditor, Rizwaanahamed3, Chriyu, DavidLeighEllis, Daideep pa-
tel, Ugog Nizdast, Melody Lavender, NottNott, Ginsuloft, Jianhui67, Danieltele, Joancdocyogen, Mendisar Esarimar Desktrwaimar, Ia-
mandrewg, HHubi, Salton Finneger, Monkbot, Dsprc, Trackteur, Wikijuanjo1514, Chicken butt0192, MRD2014, Vkryla, ChamithN,
Prinzpopo, Esquivalience, NekoKatsun, MarkyNToby, JaDam, Aman.singh5317, Deborah Chiaravalloti, Unibateman, KasparBot, Dinny-
paul, Kiprorodri, Srednuas Lenoroc, Salwati6, SamWolves23, Jhansiranim, Kate A. Steel, GSS-1987, Yazebi, JMBeggs74, Rajram123,
Fmadd, Monvoip and Anonymous: 758
• Timeout (computing) Source: https://en.wikipedia.org/wiki/Timeout_(computing)?oldid=725752926 Contributors: Radiojon, Alerante,
Nabla, Sleske, Hooperbloob, Cédric, Pfalstad, RobyWayne, Srleffler, CiaPan, Pi Delport, Robchurch, VinceBowdren, Deville, Breznan-
derl~enwiki, Tinucherian, Stijn Vermeeren, Jim.henderson, Jamelan, SieBot, DragonBot, Addbot, Jacopo Werther, AnomieBOT, Mike-
spedia, Lotje, AvocatoBot, Dexbot, Dnfkagogo and Anonymous: 12
• Transmission Control Protocol Source: https://en.wikipedia.org/wiki/Transmission_Control_Protocol?oldid=737259878 Contributors:
WojPob, Brion VIBBER, Zundark, The Anome, AlexWasFirst, Andre Engels, Aldie, Fubar Obfusco, Jtk, Mjb, B4hand, PeterB, Edward,
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 423

Michael Hardy, Nixdorf, Kku, Meekohi, Karada, Dori, Pde, Mac, William M. Connolley, Ojs, BAxelrod, Harvester, Eirik (usurped),
Samuel~enwiki, Nikola Smolenski, Idcmp, Hashar, Timwi, Dcoetzee, Sepper, Andrewman327, Wkcheang, Jnc, Gamera2, Shizhao, Bet-
terworld, Raul654, Rogper~enwiki, Robbot, Chealer, Fredrik, Tomchiukc, RedWolf, Nurg, PedroPVZ, PxT, Jondel, Bkell, Lupo, Dina,
Giftlite, Graeme Bartlett, DavidCary, Sim~enwiki, Kim Bruning, Inter, Wolfkeeper, Fleminra, Frencheigh, Saaga, Mboverload, Nayuki,
Jaan513, Jackol, SWAdair, Jsavage, Kasperl, Fishal, Haggis, Mendel, LiDaobing, Beland, Dnas, StuartCheshire, Mozzerati, Biot, Daniel
Staal, SamSim, Jewbacca, Thorwald, RevRagnarok, Scrool, N328KF, Imroy, Pmadrid, JTN, Discospinster, Pak21, Hydrox, Qutezuce,
Wrp103, Smyth, Bender235, Dewet, ZeroOne, Goplat, Plugwash, Glenn Willen, Evice, Syp, CanisRufus, Purplefeltangel, Kwamikagami,
Spearhead, Sietse Snel, RoyBoy, Spoon!, GalaxiaGuy, Smalljim, John Vandenberg, Arnhemcr, Foobaz, Makomk, Giraffedata, SpeedyGon-
sales, Toh, Nk, Mhandley, Ryan Stone, Wrs1864, Helix84, MtB, Krellis, Klhuillier, Zachlipton, Guy Harris, DariuszT, Nealcardwell, Yamla,
SHIMONSHA, Lightdarkness, Fawcett5, Snowolf, Markrod, Vedantm, Velella, Rick Sidwell, Mark Bergsma, Cburnett, Suruena, Evil
Monkey, Egg, Sleigh, Boscobiscotti, Voxadam, Kenyon, Tariqabjotu, GilHamilton, Lime~enwiki, Gmaxwell, Boothy443, Woohookitty,
Beccus, StradivariusTV, Bkkbrad, Pol098, Alexescalona, Palica, Pfalstad, Graham87, Bilbo1507, Rjwilmsi, Plainsong, CraSH, Bruce1ee,
Ryk, Fredrikh, Brighterorange, Fred Bradstadt, FlaBot, Jowagner, Shultzc, Ysangkok, Otets, Aliljet, Choess, Intgr, Fresheneesz, Alvin-cs,
Synchrite, Butros, Daev, Chobot, Moocha, P0per, YurikBot, Hairy Dude, Phantomsteve, Arado, Akamad, Stephenb, Manop, Gaius Cor-
nelius, Yyy, Shaddack, Rsrikanth05, Wimt, NawlinWiki, Zwobot, Maerk, Phandel, DeadEyeArrow, Fabiob~enwiki, Harput, Bstrand, J.
Nguyen, Arthur Rubin, Jogers, JoanneB, Elfalem, Fsiler, Garion96, GrinBot~enwiki, TuukkaH, Kf4bdy, Marty Pauley, Luk, Amalthea,
Erik Sandberg, SmackBot, PaulWay, Ymiaji, DaveSymonds, The Monster, StephenHemminger, Doc Strange, Canthusus, Timotheus Ca-
nens, Agi896, BillMcGonigle, Andy M. Wang, Anwar saadat, Stevenwagner, Djdawso, Coinchon, Oli Filth, EncMstr, Colonies Chris,
LeiZhu, Can't sleep, clown will eat me, Neo139, OrphanBot, JonHarder, Logicwax, Zvar, Addshore, Ortzinator, Clements, Dharmabum420,
NeilGoneWiki, Duckbill, Alca Isilon~enwiki, Martijn Hoekstra, Mini-Geek, DylanW, Jwh, Acdx, A5b, Daniel.Cardenas, LeoNomis,
Tfl, DKEdwards, Masterpjz9, Qwerty0, Via strass, SashatoBot, Miss Saff, Trou, Breno, A-moll9, Bezenek, Prasannaxd, Stonesand, Jec,
Tasc, Peytons, Aarktica, Mattabat, Jgrahn, Prunk, MTSbot~enwiki, Kvng, Iridescent, Akill, Pegasus1138, Bill Malloy, Alexh19740110,
Phuyal, Svinodh, MrBoo, Cheburashka, Unixguy, CmdrObot, Imcdnzl, Agent Koopa, Nviladkar, Mr Echo, Splint9, Lark ascending,
Pgr94, MeekMark, Equendil, Phatom87, Revolus, Sbnoble, UncleBubba, Gogo Dodo, Tawkerbot4, Quibik, JCO312, Asenine, Christo-
pher P, CobbSalad, Omicronpersei8, M.S.K., Hilgerdenaar, Thijs!bot, Epbr123, Kubanczyk, El pak, Oldiowl, Marek69, TangentCube,
Uruiamme, LachlanA, I already forgot, AntiVandalBot, Majorly, Yonatan, Luna Santin, Widefox, DarkAudit, NKarstens, D235~enwiki,
Alphachimpbot, Altamel, Sdomin3, Esmond.pitt, Lanilsson, JAnDbot, Harryzilber, MER-C, Okiefromokla (old), Leolaursen, PhilKnight,
Enjoi4586, CrizCraig, Ideoplex, Magioladitis, Fisherisland14, VoABot II, TheVoid~enwiki, Kevinmon, Bubba hotep, PureRumble, Pa-
padopa, Kgfleischmann, WLU, I-baLL, Gwern, HiB2Bornot2B, Blacksqr, Perfgeek, MartinBot, AirCombat, Poeloq, Rettetast, Jonathan
Hall, FDD, Leyo, Lilac Soul, Gthm159, Mange01, Blendmaster, Jesant13, Jayden54, AntiSpamBot, Squidish, West81, Kraftlos, Bigdumb-
dinosaur, Juliancolton, Cometstyles, Manlyjacques, OsirisV, Wlgrin, Inwind, Izno, Ale2006, Tjhiker, Lights, Maksym.Yehorov, VolkovBot,
Chris.selwyn, Scorpiondiain, Umar420e, MenasimBot, Loor39, Lunadesign, Philip Trueman, JuneGloom07, TXiKiBoT, ALexL33, Sh
manu, Drake Redcrest, Gwinnadain, Rodowen, Cbrettin, Vinu Padmanabhan, Oxfordwang, Anna Lincoln, David.bar, Ziounclesi, Costela,
Katimawan2005, Neshom, Nave.notnilc, Enviroboy, Michael Frind, Jehorn, Jxw13, Kbrose, Nubiatech, Nestea Zen, ToePeu.bot, Panagos-
TheOther, Brech~enwiki, Smsarmad, TediousFellow, Danielgrad, Flyer22 Reborn, Cjdaniel, Oxymoron83, Jjinno, Rdone, Alt-sysrq, Ngrif-
feth, OKBot, Aprice457, StaticGull, WikiLaurent, Savagejumpin, Sasha Callahan, Explicit, Youpilot, ClueBot, The Thing That Should
Not Be, Mild Bill Hiccup, DnetSvg, Blanchardb, Lucasbfr2, Alexbot, Jusdafax, Ciprian Dorin Craciun, PixelBot, Dregin1, Technobad-
ger, Pluknet, Kumarat9pm, Charles.partellow, Nedim.sh, Frederico1234, The-tenth-zdog, Cincaipatrin, Akshaymathur156, Johnuniq, Or-
doon, DumZiBoT, Darkicebot, Astronomerren, Nneuman, BodhisattvaBot, WikHead, StubbyT, Alexius08, TravisAF, Dsimic, Oxyacan-
thous, Maimai009, Addbot, Mortense, Ghettoblaster, Jgeer, Psyced, Mootros, Anichandran.mca, Scientus, CanadianLinuxUser, Leszek
Jańczuk, Graham.Fountain, MrOllie, Glane23, Torla42, Loukris, 5 albert square, IOLJeff, AgadaUrbanit, Numbo3-bot, Tide rolls, Ar-
senal9boi, Krano, Teles, Jarble, Quantumobserver, Luckas-bot, Yobot, Kartano, THEN WHO WAS PHONE?, AnotherNitPicker, Swis-
terTwister, Eric-Wester, Centrew, AnomieBOT, Jim1138, IRP, Piano non troppo, Shadowjain, Materialscientist, Ursushoribilis, Citation
bot, MithrasPriest, Mbruck, DirlBot, Nifky?, LilHelpa, Xqbot, Sergiodc, TechBot, Prashant.khodade, The Evil IP address, PlaysWithLife,
RodrigoCruzatti, RibotBOT, Oddeyed, ‫شات صوتي‬, Shadowjams, Tstills, Kvmswitch42, Gmaran23, FrescoBot, Lokacit443, Rrazdan,
BenzolBot, Kwiki, Citation bot 1, Awy997, AstaBOTh15, 10metreh, Hamtechperson, Encognito, RedBot, MastiBot, PBSurf, HarrisonLi,
Fraxtil, Jandalhandler, Banej, Mohitjoshi999, Cwats124, Lam Kin Keung, Lotje, Longuniongirl, Rafalq, Rtclawson, Vrenator, PS3ninja,
MoreNet, Danielbarnabas, Some Wiki Editor, Ashwinsbhat, Jfmantis, RjwilmsiBot, Xaphnir, Scil100, WildBot, EmausBot, Zeroboo,
Ouimetch, John of Reading, Acather96, Velowiki, Dewritech, GoingBatty, RA0808, Urmajest, Smappy, Tommy2010, Wikipelli, Dcirovic,
Jasonanaggie, Ahson7, Ru.in.au, Kirelagin, Ancientphoenixians, Access Denied, DrHannibal216, Henriktudborg, Ocaasi, Thine Antique
Pen, Nateshwar kamlesh, L Kensington, Putdust, Ego White Tray, Cpaasch, L2d4y3, Venkatarun95, MacStep, A.upperwal, ClueBot NG,
Nimiew, Jack Greenmaven, Satellizer, GarryAnderson, Karthick.s5, FGont, BlackcurrantTea, Ltsampros2, JeffClarkis, Clark-gr, Help-
ful Pixie Bot, HMSSolent, Silverwindx, Calabe1992, Mtsz, MultWiki, BG19bot, Arnavchaudhary, Deepblue1, Iitywybmad, Northamer-
ica1000, Mrzehak, Neøn, Prakash mit, Compfreak7, Altaïr, Tony Tan, Chmarkine, Masud.pce, Fcp999, Jcarlos-causa, A1vast, Nikhil
raskar, Maclion, Talel Atias, BattyBot, David.moreno72, C10191, Padmini Gaur, Cyberbot II, Ych06391, Dexbot, Vshebordaev, Codename
Lisa, Hainesr2000, Lone boatman, Sethwm, Frosty, Kapilsharma15, Sfgiants1995, Wywin, Ekips39, Dave Braunschweig, DBhavsar709,
Camyoung54, Koszik, Srigaurav1986, Soham, Scornay, Moris560, AlexanderRedd, Kind Tennis Fan, Shrivas06, Luxure, WikiJackool,
St170e, Kieranmcgr, Valeritn, WaterSnail, User26954344524345, Jterminator, Zppix, Ravinskumar, ToonLucas22, Nbro, Bhussai3, My
Chemistry romantic, Gdccdg, Ee586tedtalk, Atombinary, GreenC bot, Clay your and Anonymous: 942
• Transmission medium Source: https://en.wikipedia.org/wiki/Transmission_medium?oldid=724232317 Contributors: Michael Hardy,
Stevenj, Reddi, Big Bob the Finder, Bearcat, Beland, Kevin Rector, Discospinster, Xezbeth, Aude, Giraffedata, Stemonitis, NebY, BjKa,
KFP, Srleffler, Chobot, Commander Nemet, YurikBot, Schadel, Jenblower, Salsb, Malcolma, 2over0, Reyk, Johnpseudo, Mebden, Smack-
Bot, Rojomoke, Gilliam, Daniel.Cardenas, Iridescent, IvanLanin, JohnTechnologist, Bmk, Slazenger, Future Perfect at Sunrise, Thijs!bot,
Barticus88, Guy Macon, Harryzilber, Kevinmon, Oicumayberight, Mårten Berglund, J.delanoy, Maurice Carbonaro, AntiSpamBot, Win-
terSpw, Rexparry sydney, VolkovBot, The Original Wildbear, Kbrose, SieBot, Jojalozzo, ClueBot, Ljasie, Excirial, PixelBot, Addbot,
OlEnglish, Legobot, Yobot, Gobbleswoggler, TestEditBot, AmritasyaPutra, DemocraticLuntz, Materialscientist, Isheden, AbigailAber-
nathy, NOrbeck, GrouchoBot, Erik9bot, FrescoBot, Recognizance, Pinethicket, HRoestBot, 10metreh, Tom.Reding, Tinton5, Miracle
Pen, Rzuwig, EmausBot, Plaidoa, Gwen-chan, ClueBot NG, Cntras, Widr, FoCuSandLeArN, Group9 tele, Crystallizedcarbon, Adyaman,
King dboyj and Anonymous: 76
• Transport layer Source: https://en.wikipedia.org/wiki/Transport_layer?oldid=715128996 Contributors: Rmhermen, Aldie, Nealmcb, Nix-
dorf, MartinHarper, Looxix~enwiki, Jimfbleak, Zoicon5, SatyrTN, Jnc, Fredrik, BenBreen2003, Kadin2048, Altenmann, Costello, Liotier,
Mirv, Kwi, Yacht, Hadal, Giftlite, 0x0077BE, AlistairMcMillan, Alvestrand, LiDaobing, JimR, ZeroOne, Limbo socrates, Alansohn, Guy
Harris, Conan, Mmmready, Suruena, Marcan, Kbolino, Lost.goblin, ScottDavis, JHolman, Hullbr3ach~enwiki, Fred Bradstadt, Gavinatkin-
424 CHAPTER 70. X.25

son, MTC, Adoniscik, YurikBot, Borgx, RobotE, Phantomsteve, Hede2000, Yyy, PrologFan, Bota47, Xpclient, LeonardoRob0t, Kung-
fuadam, Eggnock, SmackBot, Commander Keane bot, Gilliam, Andreyf, MalafayaBot, Robth, Bigmantonyd, Gurnec, Butko, Jec, Kvng,
Choudesh, Andrew Hampe, Kkkdc, FatalError, CmdrObot, Imcdnzl, Phatom87, Quibik, Wmasterj, AntiVandalBot, Widefox, JAnDbot,
Enjoi4586, GermanX, Ovy, JonThackray, J.delanoy, Mange01, Inwind, Izno, Idioma-bot, Brettmeyers, Butlerm, TXiKiBoT, Vipinhari,
Highlandsun, Kbrose, SieBot, YonaBot, Yintan, EnOreg, Tpvibes, Int21h, Retroguy90, Simon04, Tcmcfaul, Alexbot, Zac439, Razorflame,
1ForTheMoney, Johnuniq, Dgtsyb, Dsimic, Addbot, Jafeluv, SamatBot, Lightbot, Luckas Blade, Legobot, Luckas-bot, TaBOT-zerem,
AnomieBOT, Rubinbot, Ipatrol, Kingpin13, Materialscientist, MauritsBot, Xqbot, RibotBOT, Schw3rt, Fmunshi, Jeffrd10, Suffusion of
Yellow, EmausBot, Samjoopin, Rcsprinter123, ChuispastonBot, ClueBot NG, Dzlinker, Dave Braunschweig, BronsonP, Dough34, Adri-
anf0, SheikhMkashif and Anonymous: 145
• Tunneling protocol Source: https://en.wikipedia.org/wiki/Tunneling_protocol?oldid=737075295 Contributors: The Anome, Mjb, Kku,
CesarB, Palfrey, Rl, JidGom, Chealer, Kizor, Jtg, Subsolar, Fleminra, Cloud200, Mozzerati, MementoVivere, EagleOne, Sysy, FT2, Ebelu-
lar, Vsmith, Indil, Sietse Snel, Unquietwiki, Arthena, Hégésippe Cormier, Laug, Suruena, RJFJR, Larytet, Karnesky, Mindmatrix, Knuck-
les, Eyreland, Bruns, Lusitana, FlaBot, JYOuyang, Matt314, YurikBot, Bota47, Cavan, Jules.LT, Nachoman-au, GraemeL, Edgar181,
Yamaguchi , Jerome Charles Potts, SkipHuffman, NickPenguin, Zearin, Accurizer, Noahspurrier, Aleenf1, 16@r, Exlex, Negrulio,
Megajuice, Alessandro57, IronJohnSr, CmdrObot, ThreeBlindMice, Alexamies, Drummle, UncleBubba, Bposert, JamesAM, Hcberkowitz,
Ministry of Truth, JAnDbot, Enjoi4586, VoABot II, PierreCG, Mange01, Liangent, The MAZZTer, Starunj, Reelrt, VolkovBot, Rei-bot,
Jamelan, ErikWarmelink, Kbrose, Emesee, Ngriffeth, Klaus100, Chris D Heath, Gforce20, Plat'Home, PeterZacSmith, Skarebo, Dsimic,
Tclavel, Addbot, MrOllie, LaaknorBot, Surabh7, Jasper Deng, Erik Streb, Lightbot, EttAme, Luckas-bot, Riad.Bot~enwiki, Sourabhforu,
Mail2yogie, Materialscientist, ArthurBot, PabloCastellano, Ccostis, FrescoBot, Mr565, Kobekatt, Winterst, Xcvista, Jandalhandler, Lotje,
Silversatellite, EmausBot, Rolf the wolf, Dcirovic, Pazkooda, Noggo, Joshuaterrill, ClueBot NG, Watson1966, Rohitkalaskar, Popescu-
calin, Hayneskl43, Jamesx12345, Randomusername404, Captain Conundrum, Monochrome Monitor, Ugog Nizdast, Ginsuloft, TheHoster,
DrOfAwesomeness, Serypol, Brandont93 and Anonymous: 117
• User Datagram Protocol Source: https://en.wikipedia.org/wiki/User_Datagram_Protocol?oldid=737966456 Contributors: Damian Yer-
rick, Bryan Derksen, The Anome, Fubar Obfusco, Jtk, Mahjongg, Nixdorf, Alfio, Ronz, Александър, BAxelrod, Samuel~enwiki, Van-
ished user 5zariu3jisj0j4irj, Tpbradbury, Wkcheang, Itai, Gamera2, Shizhao, Tjdw, Robbot, Fredrik, RedWolf, Romanm, Modulatum,
PedroPVZ, Robbe~enwiki, Tea2min, Psb777, Giftlite, Fennec, Beefman, Reub2000, Gracefool, SWAdair, Matt Darby, Neilc, Gordoni,
Thray, Erik Garrison, Daniel Staal, Joachim Wuttke, RevRagnarok, JTN, Twinxor, Ardonik, Xezbeth, Alistair1978, Michael Zimmermann,
Mani1, Bender235, Djordjes, Plugwash, Joanjoc~enwiki, Kwamikagami, Mpeg4codec, Towel401, Krellis, Frodet, Terrycojones, Nroets,
Guy Harris, Ayeroxor, Rick Sidwell, Cburnett, Suruena, Cvalda, Voxadam, DSatz, Mindmatrix, ^demon, Hdante, Ashmoo, Graham87,
E090, BD2412, CraSH, Quiddity, Bruce1ee, Wiarthurhu, Fredrikh, Aapo Laitinen, Alvin-cs, DVdm, YurikBot, Borgx, Phantomsteve,
RussBot, Jengelh, Rsrikanth05, Voidxor, Zwobot, Falcon9x5, DeadEyeArrow, Eclipsed, Bota47, Bobstopper, E Wing, Tdangkhoa, Petri
Krohn, Rwwww, SmackBot, InverseHypercube, The Monster, Od Mishehu, Golwengaud, Smeggysmeg, BenAveling, CrookedAsterisk,
Cassan, MLeb, DavidSol, Misterdom, A5b, Jóna Þórunn, Paulish, SashatoBot, Breno, Ben Moore, Clalansingh, Kvng, Johnny 0, Ginkgo100,
Teemuk, Conrad.Irwin, Burisch, Phatom87, Reywas92, Sammydee, UncleBubba, Thijs!bot, JNighthawk, DesTroy, AntiVandalBot, Wide-
fox, Opelio, Esmond.pitt, JAnDbot, Dicentra, CombatWombat42, Enjoi4586, Ideoplex, Recurring dreams, 28421u2232nfenfcenc, Kgfleis-
chmann, Mike6271, Anaxial, Gthm159, Mange01, Public Menace, Gzkn, Sci13960, Aram33~enwiki, 83d40m, STBotD, Zara1709, Mike
V, Gnipahellir, AlnoktaBOT, Vinu Padmanabhan, DennyColt, Kovianyo, Spearsall, Teh roflmaoer, Chenzw, Andrew Kember, Kbrose, S-
n-ushakov, SieBot, Nubiatech, Acasson, Eagleal, R2richar, Mam711, Bentogoa, Oxymoron83, Jjinno, Jdaloner, FrisoB~enwiki, Bane1998,
NHSKR, ClueBot, Uncle Milty, Hitherebrian, WestwoodMatt, Pelesl, Dfurbeck, Razorflame, The-tenth-zdog, Cincaipatrin, Chiefmanzzz,
Upadhyaykc, Johnuniq, Delt01, Mwholt, BodhisattvaBot, SilvonenBot, Dsimic, Samersarhan83, Jncraton, MagnusA.Bot, Jasper Deng,
Тиверополник, Lightbot, Legobot, Yobot, Eduardopinheiro, KamikazeBot, AnomieBOT, Rubinbot, 1exec1, Fromageestciel, Flewis, Ma-
terialscientist, ArthurBot, Gsmgm, Xqbot, Locos epraix, Fightin' Phillie, Omnipaedista, RibotBOT, Kyng, Locobot, Ll1324, Frozenevolu-
tion, Uncopy, Plindemann, I dream of horses, RedBot, Lissajous, Cnwilliams, FoxBot, Headbangerkenny, Fox Wilson, Rimidalw, The
Utahraptor, WildBot, Alison22, EmausBot, Ouimetch, WikitanvirBot, Bongoramsey, Bobby Caudwell, Wingman4l7, Tolly4bolly, Ir-
rypride, Gorryf, ChuispastonBot, Pqqq1, Teapeat, Rememberway, ClueBot NG, Fudgefr, Dkogh, Theopolisme, Ssd293, Benqmonitor,
Helpful Pixie Bot, BG19bot, Beacon11, McZusatz, Chmarkine, Timothyjaden, Dhruvv7, Achowat, IRedRat, PatheticCopyEditor, Popes-
cucalin, Pratyya Ghosh, Yelojakit, Areh adeola, TechyOne, Rotlink, Dave Braunschweig, Fakenerd, Jsztabzyb, ArmbrustBot, MortenZdk,
Psycoconnetic, Jackmcbarn, Dough34, Rubenprot, Pall123ban, KasparBot, Blasher, Er.adk and Anonymous: 350
• World Wide Web Consortium Source: https://en.wikipedia.org/wiki/World_Wide_Web_Consortium?oldid=735723846 Contributors:
Peter Winnberg, Lee Daniel Crocker, The Anome, Larry Sanger, Christian List, Mjb, Bdesham, Michael Hardy, Tompagenet, Delir-
ium, Tregoweth, CesarB, ArnoLagrange, Mac, Nanshu, Den fjättrade ankan~enwiki, Kingturtle, LittleDan, Harvester, Jonik, Mxn,
Hashar, Andrewman327, Pedant17, Shizhao, David.Monniaux, Robbot, Chealer, Pigsonthewing, Moondyne, Yacht, Gidonb, Baojie,
Alba, Carlj7, Diberri, Ancheta Wis, Giftlite, Philwiki, DocWatson42, Sjh~enwiki, Lisbk, Itpastorn, Enkrates, Khalid hassani, Golbez,
Zhouxiaohu~enwiki, LiDaobing, Oneiros, Mzajac, Icairns, Almit39, Squash, Gregorio~enwiki, Kathar, Wikiacc, Smyth, Night Gyr, ES-
kog, Evice, El C, MITalum, Larryv, Helix84, Pearle, Wayfarer, ClementSeveillac, Milant, A.M.~enwiki, Hu, Suruena, Josh3736, Zor-
blek, Brookie, Shimeru, NantonosAedui, Simetrical, Wedesoft, Georgia guy, Miaow Miaow, Duncan.france, Rchamberlain, Toussaint,
TNLNYC, Paxsimius, Graham87, Scottkeir, Phoenix-forgotten, Nightscream, MZMcBride, Infosocialist, ElKevbo, Dmccreary, Ttwaring,
Sleepyhead81, DirkvdM, FlaBot, Margosbot~enwiki, AndriuZ, Alphachimp, Ahunt, Chobot, Skraz, UkPaolo, YurikBot, RussBot, Arado,
Spainhour, Ansell, Manop, CambridgeBayWeather, WulfTheSaxon, Jeh, Ms2ger, Josh3580, ZabMilenko, Whaa?, Rathfelder, Toniher,
DEng, Katieh5584, GrinBot~enwiki, Masonbarge, SmackBot, Renku, Sebesta, Gilliam, Anwar saadat, Hugoh, Persian Poet Gal, Emu-
farmers, JF Manning, Daviddec, Vbigdeli, TheRaven7, Rrburke, Jcravens42, Greenshed, Edivorce, Mr.Z-man, Cybercobra, Nakon, Al-
ibabs, DDima, Vina-iwbot~enwiki, Ohconfucius, SashatoBot, Zearin, Gobonobo, 16@r, Hu12, IvanLanin, Aeons, Dka1, Tawkerbot2,
Wspencer11, Dennylin93, Linuxerist, Patchouli, Comrade42, Nczempin, Argon233, Old Guard, Simeon, Steveliang, Krauss, Meno25,
Mpidge, Epbr123, Joshuagay, Qwyrxian, Monkle, Marek69, Cplot, I already forgot, AntiVandalBot, Ministry of Truth, Widefox, Azbond-
girl, Melmelmarms, Jatkins, Cic, Everton1984, DominiqueHazaelMassieux, Jodi.a.schneider, Lijnema, Oicumayberight, B9 humming-
bird hovering, AVRS, CommonsDelinker, Ramesh Chandra, JMJimmy, Hanteng, Javawizard, Ian.thomson, Arite, Ignatzmice, Frequen-
cydip, Chronorick, Josh Tumath, Paolo Baggia, Bonadea, Jacroe, Technopat, Donatus, Qxz, Seanho, Andy Dingley, Wegates, Synthe-
bot, Legoktm, S.Örvarr.S, SieBot, Tiddly Tom, Leahcim nai, Jack Merridew, Pao662~enwiki, NO ACMLM,AND XKEPPER SUCK
!, Triwbe, Execvator, Pxma, MiNombreDeGuerra, Lightmouse, Kanonkas, Leranedo, The Thing That Should Not Be, Joshi1983, Su-
perHamster, TarzanASG, Alexbot, PixelBot, Adimovk5, Rhododendrites, Dmyersturnbull, Amerdeni, DumZiBoT, JRWoodwardMSW,
BarretB, XLinkBot, Dthomsen8, Safepage, Addbot, Ghettoblaster, Some jerk on the Internet, Mabdul, Twinzor, Favonian, Krano, Luckas
Blade, Gail, Rojypala, Nickscoco, Luckas-bot, Yobot, Bunnyhop11, Fraggle81, Evereyes, KamikazeBot, AnomieBOT, Joe2008, Galou-
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 425

bet, Xqbot, Almabot, Amaury, Bpmcneilly, Raznice, Redrose64, Jonesey95, Meaghan, Jonkerz, Lotje, KarlDubost, Jskhuman, Yondon-
jamts, Wolfhoundfeet, Sleepinginisgivingin, EmausBot, Goswamir14, Jesmania, D'oh!, Beware podpeople, ArtBarstow, Gewild, Between-
Myths, Petrb, ClueBot NG, Youngdesigner, Widr, Radiojoe329, Helpful Pixie Bot, Wbm1058, ARIENGGO, Bmusician, MusikAn-
imal, LuLxFakie, 100arab.saurabh, Whym, BattyBot, Liam987, Wrcsuk, Msiderwicz, Rajesh.kk99, Koaliemoon, Lugia2453, Frosty,
Goatcheese3, Jadephx, Enock4seth, GRIFFnDOOR, RaphaelQS, General534, KaseyPollard, TheCommanderOf, Monkbot, Nutty151,
C1776M, Mxschumacher, TheMagikCow, TheFreeSeven, Tymon.r, Piglatin2369, Kyawthuya1089, Zaqpdos6969, Kripmo, Jerodlycett,
StinkyBrownApple, Smwrd, Bekandmike, Mnestis.wiki, Craft6789 and Anonymous: 264
• X.25 Source: https://en.wikipedia.org/wiki/X.25?oldid=736868114 Contributors: Aldie, Maury Markowitz, Vaughan, Ahoerstemeier,
Ronz, Yaronf, Smack, Crissov, Itai, Finlay McWalter, Lumos3, Kizor, Stewartadcock, Hella~enwiki, Gidonb, Hadal, Xanzzibar, Vac-
uum, Itpastorn, Gzornenplatz, VampWillow, Tagishsimon, Karlward, Beland, Bumm13, Karl Dickman, MementoVivere, Abdull, Rich
Farmbrough, Guanabot, Wk muriithi, YUL89YYZ, Eric Shalov, Ray Dassen, MarkWahl, Nwsmith, Ivansanchez, Helix84, Guy Har-
ris, RoySmith, GL, Stephan Leeds, Danhash, RJII, Blaxthos, Ilario, Tabletop, Eyreland, Commking, Haikupoet, Rjwilmsi, Gary Brown,
SAK, FlaBot, Ewlyahoocom, Overand, YurikBot, NTBot~enwiki, Gaius Cornelius, Barberio, Mortein, Mikeroetto, SmackBot, Reedy,
Bernard François, Chris the speller, GK tramrunner, Dvermeirre, Villarinho, JonHarder, Adamantios, Kotul, HarisM, Sparky-sama, Chari-
vari, SashatoBot, Dave314159, Deceglie, Kvng, Huntscorpio, Prof 7, Caomhin, Mblumber, Gogo Dodo, Daenney, Quibik, Thijs!bot,
Hcberkowitz, Headbomb, Dawnseeker2000, Cocjh1, KMeyer, Dougher, IrishFlukey, JAnDbot, PrimroseGuy, Scostas, CommonsDelinker,
Mange01, ISC PB, Cpiral, Birczanin, VolkovBot, Vrac, Kurgus, TXiKiBoT, Dermots, Gbuchana, BotKung, Kbrose, SieBot, Dialate,
LeadSongDog, Lightmouse, CharlesGillingham, Ken123BOT, EoGuy, Kanchanghavle, Alexbot, PixelBot, IlliniFlag, Dgtsyb, Addbot,
Pieman196, Tonkie67, Enduser, Yobot, AnomieBOT, Citation bot, LilHelpa, Xqbot, Giddeon Fox, FrescoBot, Pepper, Merlion444, Fro-
mOrleans, John of Reading, Orphan Wiki, RFClover, The Mysterious El Willstro, Jasonanaggie, ZéroBot, Westley Turner, Jgoodchild,
Ermishin, ChuispastonBot, ClueBot NG, Wdchk, Helpful Pixie Bot, BG19bot, Doodlebug777, Leikai Meetei, Cwobeel, Mogism, Cer-
abot~enwiki, Comp.arch, Monkbot, KasparBot and Anonymous: 106

70.11.2 Images
• File:1990_CPA_6190.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/77/1990_CPA_6190.jpg License: Public domain
Contributors: http://s-collection.com.ua/ru_co1_marki_sssr_1990_g_html.html Original artist: Post of Soviet Union.
• File:3_Park_Avenue.JPG Source: https://upload.wikimedia.org/wikipedia/commons/0/0c/3_Park_Avenue.JPG License: CC-BY-SA-
3.0 Contributors: Transferred from en.wikipedia. Original artist: ButtonwoodTree at en.wikipedia
• File:4_bit_counter.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/76/4_bit_counter.svg License: Public domain Con-
tributors: Own work Original artist: Gargan
• File:8bit-dynamiclist_(reversed).gif Source: https://upload.wikimedia.org/wikipedia/commons/c/cc/8bit-dynamiclist_%28reversed%
29.gif License: CC-BY-SA-3.0 Contributors: This file was derived from: 8bit-dynamiclist.gif
Original artist: Seahen, User:Rezonansowy
• File:A_syntactic_parse_of_\char"0022\relax{}Alfred_spoke\char"0022\relax{}_under_the_dependency_formalism..png
Source: https://upload.wikimedia.org/wikipedia/commons/b/bc/A_syntactic_parse_of_%22Alfred_spoke%22_under_the_dependency_
formalism..png License: CC BY-SA 4.0 Contributors: Own work Original artist: Christian Nassif-Haynes
• File:After_earthquake_INGV_site_down_-_5_April_2009.jpg Source: https://upload.wikimedia.org/wikipedia/commons/b/bf/
After_earthquake_INGV_site_down_-_5_April_2009.jpg License: CC BY 2.0 Contributors: After earthquake INGV site down Original
artist: Pietro Zanarini
• File:Alan_Turing.jpg Source: https://upload.wikimedia.org/wikipedia/commons/5/57/Alan_Turing.jpg License: CC BY 2.0 Contribu-
tors: Alan Turing Original artist: Jon Callas from San Jose, USA
• File:Alexandra_Palace_mast.JPG Source: https://upload.wikimedia.org/wikipedia/commons/3/30/Alexandra_Palace_mast.JPG Li-
cense: CC-BY-SA-3.0 Contributors: Transferred from en.wikipedia to Commons by Oxyman using CommonsHelper. Original artist:
Angmering at English Wikipedia
• File:Ambox_important.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/b4/Ambox_important.svg License: Public do-
main Contributors: Own work, based off of Image:Ambox scales.svg Original artist: Dsmurat (talk · contribs)
• File:Amfm3-en-de.gif Source: https://upload.wikimedia.org/wikipedia/commons/a/a4/Amfm3-en-de.gif License: CC BY-SA 2.5 Con-
tributors: Own work Original artist: Berserkerus
• File:Android_5.0-en.png Source: https://upload.wikimedia.org/wikipedia/commons/1/1b/Android_5.0-en.png License: Apache License
2.0 Contributors: Android 5.0 “Lollipop” Original artist: NikoM
• File:Antenna.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/76/Antenna.jpg License: CC BY 2.5 Contributors: Own
work Original artist: Yonatan Horan
• File:AppleTalk_logo_from_Control_Panel.gif Source: https://upload.wikimedia.org/wikipedia/en/8/86/AppleTalk_logo_from_
Control_Panel.gif License: Fair use Contributors: http://applemuseum.bott.org/sections/os.html Original artist: Apple Inc
• File:Apple_LocalTalk_box_interior_1.jpg Source: https://upload.wikimedia.org/wikipedia/commons/b/b7/Apple_LocalTalk_box_
interior_1.jpg License: CC BY-SA 3.0 Contributors: Own work Original artist: DMahalko / Dale Mahalko
• File:Apple_LocalTalk_box_interior_2_-_auto_termination_switch.jpg Source: https://upload.wikimedia.org/wikipedia/commons/
8/8c/Apple_LocalTalk_box_interior_2_-_auto_termination_switch.jpg License: CC BY-SA 3.0 Contributors: Own work Original artist:
DMahalko / Dale Mahalko
• File:Apple_Macintosh_Desktop.png Source: https://upload.wikimedia.org/wikipedia/en/5/50/Apple_Macintosh_Desktop.png License:
? Contributors:
unknown
Original artist: ?
426 CHAPTER 70. X.25

• File:Arpanet_logical_map,_march_1977.png Source: https://upload.wikimedia.org/wikipedia/commons/b/bf/Arpanet_logical_map%


2C_march_1977.png License: Public domain Contributors: The Computer History Museum ([1]), en:File:Arpnet-map-march-1977.png
Original artist: ARPANET
• File:Bakelite_radio.jpg Source: https://upload.wikimedia.org/wikipedia/commons/4/4c/Bakelite_radio.jpg License: CC BY-SA 3.0
Contributors: Transfered from en.wikipedia Transfer was stated to be made by User:Storkk. Original artist: Original uploader was Robneild
at en.wikipedia
• File:Bangalore_India_Tech_books_for_sale_IMG_5261.jpg Source: https://upload.wikimedia.org/wikipedia/commons/1/19/
Bangalore_India_Tech_books_for_sale_IMG_5261.jpg License: CC BY-SA 3.0 Contributors: Own work Original artist: Victorgrigas
• File:Bohr_atom_model_English.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a5/Bohr_atom_model_English.svg
License: CC-BY-SA-3.0 Contributors: Created by Brighterorange, based on GFDL/cc image: Bohratommodel.png. Original artist:
Brighterorange
• File:Bus_icon.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/ca/Bus_icon.svg License: Public domain Contributors: No
machine-readable source provided. Own work assumed (based on copyright claims). Original artist: No machine-readable author provided.
Booyabazooka assumed (based on copyright claims).
• File:Bush_house.jpg Source: https://upload.wikimedia.org/wikipedia/commons/9/9b/Bush_house.jpg License: CC BY 2.5 Contributors:
? Original artist: ?
• File:C_Hello_World_Program.png Source: https://upload.wikimedia.org/wikipedia/commons/3/39/C_Hello_World_Program.png Li-
cense: CC0 Contributors: Own work Original artist: Esquivalience
• File:Command_line.png Source: https://upload.wikimedia.org/wikipedia/commons/a/aa/Command_line.png License: GPL Contributors:
Own work Original artist: The GNU Dev team, and the Arch Linux Dev team (for the Pacman command in the example)
• File:Commons-logo.svg Source: https://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg License: CC-BY-SA-3.0 Contribu-
tors: ? Original artist: ?
• File:Communication-System.png Source: https://upload.wikimedia.org/wikipedia/commons/0/09/Communication-System.png Li-
cense: CC0 Contributors: Own work Original artist: Hugo Spinelli
• File:Communication_emisor.jpg Source: https://upload.wikimedia.org/wikipedia/commons/b/b0/Communication_emisor.jpg License:
CC BY 2.5 Contributors: Transferred from en.wikipedia to Commons by Sreejithk2000 using CommonsHelper. Original artist: Yupi666
at English Wikipedia
• File:Communication_shannon-weaver2.svg Source: https://upload.wikimedia.org/wikipedia/commons/3/37/Communication_
shannon-weaver2.svg License: CC-BY-SA-3.0 Contributors: Own work Original artist: Einar Faanes
• File:Compiler.svg Source: https://upload.wikimedia.org/wikipedia/commons/6/6b/Compiler.svg License: CC-BY-SA-3.0 Contributors:
self-made SVG version of Image:Ideal compiler.png by User:Raul654. Incorporates Image:Computer n screen.svg and Image:Nuvola
mimetypes source.png. Original artist: Surachit
• File:Compiler_design.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/cc/Compiler_design.svg License: CC BY-SA 3.0
Contributors: File:Compiler design IPL.png Original artist: Pronesto
• File:Complex-adaptive-system.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/00/Complex-adaptive-system.jpg Li-
cense: Public domain Contributors: Own work by Acadac : Taken from en.wikipedia.org, where Acadac was inspired to create this graphic
after reading: Original artist: Acadac
• File:Computer_from_inside_018.jpg Source: https://upload.wikimedia.org/wikipedia/commons/a/ac/Computer_from_inside_018.jpg
License: Public domain Contributors: Own work Original artist: kallerna
• File:Crepuscular_rays8_-_NOAA.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/0f/Crepuscular_rays8_-_NOAA.
jpg License: Public domain Contributors: ? Original artist: ?
• File:Crystal_Clear_app_browser.png Source: https://upload.wikimedia.org/wikipedia/commons/f/fe/Crystal_Clear_app_browser.png
License: LGPL Contributors: All Crystal icons were posted by the author as LGPL on kde-look Original artist: Everaldo Coelho and
YellowIcon
• File:Crystal_Clear_app_network.png Source: https://upload.wikimedia.org/wikipedia/commons/4/49/Crystal_Clear_app_network.
png License: LGPL Contributors: All Crystal Clear icons were posted by the author as LGPL on kde-look; Original artist: Everaldo Coelho
and YellowIcon;
• File:Crystal_Clear_device_cdrom_unmount.png Source: https://upload.wikimedia.org/wikipedia/commons/1/10/Crystal_Clear_
device_cdrom_unmount.png License: LGPL Contributors: All Crystal Clear icons were posted by the author as LGPL on kde-look;
Original artist: Everaldo Coelho and YellowIcon;
• File:Crystal_radio_receiver.PNG Source: https://upload.wikimedia.org/wikipedia/commons/6/64/Crystal_radio_receiver.PNG Li-
cense: CC-BY-SA-3.0 Contributors: Transferred from en.wikipedia to Commons. Original artist: The original uploader was Reddi at
English Wikipedia
• File:DFAexample.svg Source: https://upload.wikimedia.org/wikipedia/commons/9/9d/DFAexample.svg License: Public domain Con-
tributors: Own work Original artist: Cepheus
• File:Data-flow-diagram-notation.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/24/Data-flow-diagram-notation.
svg License: Public domain Contributors: Own work Original artist: wooptoo
• File:DataFlowDiagram_Example.png Source: https://upload.wikimedia.org/wikipedia/commons/c/c8/DataFlowDiagram_Example.
png License: CC BY-SA 3.0 Contributors: Own work Original artist: Edited by User:AutumnSnow with GIMP, based on Image:
DataFlowDiagram Esempio1.png created by User:Ilario
• File:Data_Flow_Diagram_Example.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/0f/Data_Flow_Diagram_
Example.jpg License: Public domain Contributors: Introduction to Systems Engineering Practices Original artist: John Azzolini
• File:Degen_de1103.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/67/Degen_de1103.jpg License: GFDL Contribu-
tors: Own work Original artist: Mohylek
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 427

• File:Desktop_computer_clipart_-_Yellow_theme.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/d7/Desktop_


computer_clipart_-_Yellow_theme.svg License: CC0 Contributors: https://openclipart.org/detail/17924/computer Original artist: AJ from
openclipart.org
• File:Digital_broadcast_standards.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/bd/Digital_broadcast_standards.
svg License: Public domain Contributors: Self-made from Image:BlankMap-World6.svg and listings at the relevant Wikipedia articles.
Original artist: EnEdC
• File:Dolphin_FileManager.png Source: https://upload.wikimedia.org/wikipedia/commons/5/51/Dolphin_FileManager.png License:
GPL Contributors: http://www.kde.org/applications/system/dolphin/ Original artist: KDE
• File:Edit-clear.svg Source: https://upload.wikimedia.org/wikipedia/en/f/f2/Edit-clear.svg License: Public domain Contributors: The
Tango! Desktop Project. Original artist:
The people from the Tango! project. And according to the meta-data in the file, specifically: “Andreas Nilsson, and Jakub Steiner (although
minimally).”
• File:Emblem_of_the_United_Nations.svg Source: https://upload.wikimedia.org/wikipedia/commons/5/52/Emblem_of_the_United_
Nations.svg License: Public domain Contributors: Based on File:Flag_of_the_United_Nations.svg Original artist: Spiff
• File:Emoji_u1f4bb.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/d7/Emoji_u1f4bb.svg License: Apache License 2.0
Contributors: https://code.google.com/p/noto/ Original artist: Google
• File:Encoding_communication.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/79/Encoding_communication.jpg Li-
cense: CC BY 2.5 Contributors: Transferred from en.wikipedia to Commons by Sreejithk2000 using CommonsHelper. Original artist:
Yupi666 at English Wikipedia
• File:Erdfunkstelle_Raisting_2.jpg Source: https://upload.wikimedia.org/wikipedia/commons/4/40/Erdfunkstelle_Raisting_2.jpg Li-
cense: CC BY-SA 2.5 Contributors: Own work Original artist: Richard Bartz, Munich aka Makro Freak <a href='//commons.wikimedia.org/
wiki/File:MFB.jpg' class='image'><img alt='MFB.jpg' src='https://upload.wikimedia.org/wikipedia/commons/1/1e/MFB.jpg' width='80'
height='15' data-file-width='80' data-file-height='15' /></a>
• File:Euclid’{}s_algorithm_Book_VII_Proposition_2_2.png Source: https://upload.wikimedia.org/wikipedia/commons/8/89/Euclid%
27s_algorithm_Book_VII_Proposition_2_2.png License: CC BY 3.0 Contributors: Own work Original artist: Wvbailey
• File:Euclid’{}s_algorithm_Inelegant_program_1.png Source: https://upload.wikimedia.org/wikipedia/commons/4/49/Euclid%27s_
algorithm_Inelegant_program_1.png License: CC BY 3.0 Contributors: Own work Original artist: Wvbailey
• File:Euclid’{}s_algorithm_structured_blocks_1.png Source: https://upload.wikimedia.org/wikipedia/commons/4/44/Euclid%27s_
algorithm_structured_blocks_1.png License: CC BY 3.0 Contributors: Own work Original artist: Wvbailey
• File:Euclid_flowchart.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/db/Euclid_flowchart.svg License: CC BY-SA
4.0 Contributors: Own work Original artist: Somepics
• File:Euclids-algorithm-example-1599-650.gif Source: https://upload.wikimedia.org/wikipedia/commons/e/e1/
Euclids-algorithm-example-1599-650.gif License: CC BY-SA 3.0 Contributors: Own work Original artist: Swfung8
• File:Farlon_localtalk.jpg Source: https://upload.wikimedia.org/wikipedia/en/f/f0/Farlon_localtalk.jpg License: Cc-by-sa-3.0 Contribu-
tors: ? Original artist: ?
• File:Fibreoptic.jpg Source: https://upload.wikimedia.org/wikipedia/commons/4/49/Fibreoptic.jpg License: CC-BY-SA-3.0 Contribu-
tors: First upload: (Sep 25 2004) en:Wikipedia Original artist: BigRiz
• File:Finite_State_Machine_Logic.svg Source: https://upload.wikimedia.org/wikipedia/commons/6/64/Finite_State_Machine_Logic.
svg License: Public domain Contributors: Own work based on: Image:Finite_state_machine_definition.gif. Original artist: jjbeard; im-
proved and German added by Perhelion
• File:Finite_state_machine_example_with_comments.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/cf/Finite_
state_machine_example_with_comments.svg License: Public domain Contributors: Own work based on: en:File:Finite state machine
example with comments.gif Original artist: 1st Macguy314, reworked by Perhelion
• File:First-arpanet-imp-log.jpg Source: https://upload.wikimedia.org/wikipedia/commons/e/e4/First-arpanet-imp-log.jpg License:
Public domain Contributors: UCLA Kleinrock Center for Internet Studies ([1]) Original artist: Charles S. Kline
• File:First_Web_Server.jpg Source: https://upload.wikimedia.org/wikipedia/commons/d/d1/First_Web_Server.jpg License: CC-BY-
SA-3.0 Contributors: Own work Original artist: User:Coolcaesar at en.wikipedia
• File:Fisher_500_radio.jpg Source: https://upload.wikimedia.org/wikipedia/commons/b/b1/Fisher_500_radio.jpg License: GFDL 1.2
Contributors: Photo by uploader, taken at The History of Audio: The Engineering of Sound, an exhibition of the San Francisco Air-
port Museums[1] in SFO Airport, Terminal 3 from 2006-09 to 2007-05. Original artist: Gregory F. Maxwell <[email protected]>
PGP:0xB0413BFA
• File:Flag_of_the_United_Nations.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/2f/Flag_of_the_United_Nations.
svg License: Public domain Contributors: Flag of the United Nations from the Open Clip Art website. Modifications by Denelson83,
Zscout370 and Madden. Official construction sheet here.
United Nations (1962) The United Nations flag code and regulations, as amended November 11, 1952, New York OCLC: 7548838. Original
artist: Wilfried Huss / Anonymous
• File:Folder_Hexagonal_Icon.svg Source: https://upload.wikimedia.org/wikipedia/en/4/48/Folder_Hexagonal_Icon.svg License: Cc-by-
sa-3.0 Contributors: ? Original artist: ?
• File:ForeRunnerLE_25_ATM_Network_Interface_(1).jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/6c/
ForeRunnerLE_25_ATM_Network_Interface_%281%29.jpg License: CC BY-SA 3.0 Contributors: Own work Original artist: Barcex
• File:Free-to-read_lock_75.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/80/Free-to-read_lock_75.svg License: CC0
Contributors:
Adapted from <a href='//en.wikipedia.org/wiki/File:Open_Access_logo_PLoS_white_green.svg' class='image' ti-
tle='Open_Access_logo_PLoS_white_green.svg'><img alt='Open_Access_logo_PLoS_white_green.svg' src='//upload.wikimedia.
428 CHAPTER 70. X.25

org/wikipedia/commons/thumb/9/90/Open_Access_logo_PLoS_white_green.svg/9px-Open_Access_logo_PLoS_white_green.svg.png'
width='9' height='14' srcset='//upload.wikimedia.org/wikipedia/commons/thumb/9/90/Open_Access_logo_PLoS_white_green.svg/
14px-Open_Access_logo_PLoS_white_green.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/90/Open_Access_
logo_PLoS_white_green.svg/18px-Open_Access_logo_PLoS_white_green.svg.png 2x' data-file-width='640' data-file-height='1000'
/></a>
Original artist:
This version:Trappist_the_monk (talk) (Uploads)
• File:Free_and_open-source_software_logo_(2009).svg Source: https://upload.wikimedia.org/wikipedia/commons/3/31/Free_and_
open-source_software_logo_%282009%29.svg License: Public domain Contributors: FOSS Logo.svg Original artist: Free Software Portal
Logo.svg (FOSS Logo.svg): ViperSnake151
• File:Front_Z9_2094.jpg Source: https://upload.wikimedia.org/wikipedia/commons/2/21/Front_Z9_2094.jpg License: Public domain
Contributors: Own work Original artist: Ing. Richard Hilber
• File:Fsm_Moore_model_door_control.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/71/Fsm_Moore_model_door_
control.svg License: Public domain Contributors: Vectorized version of File:Door moore de.png Original artist: Saman
• File:Fsm_mealy_model_door_control.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/72/Fsm_mealy_model_door_
control.svg License: Public domain Contributors: Vectorized version of File:Door mealy example de.png Original artist: Saman
• File:Fsm_parsing_word_nice.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a8/Fsm_parsing_word_nice.svg License:
Public domain Contributors: en:Image:Fsm parsing word nice.jpg Original artist: en:User:Thowa, redrawn by User:Stannered
• File:FullDuplex.JPG Source: https://upload.wikimedia.org/wikipedia/commons/7/72/FullDuplex.JPG License: Public domain Contribu-
tors: Transferred from en.wikipedia to Commons. Original artist: Greggreggreg at English Wikipedia
• File:GPS_Receivers.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/6b/GPS_Receivers.jpg License: CC-BY-SA-3.0
Contributors: ? Original artist: ?
• File:Globe_of_letters.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/de/Globe_of_letters.svg License: LGPL Contrib-
utors:
• <a href='//commons.wikimedia.org/wiki/File:Gnome-globe.svg' class='image'><img alt='' src='https://upload.
wikimedia.org/wikipedia/commons/thumb/f/f3/Gnome-globe.svg/120px-Gnome-globe.svg.png' width='120' height='120'
srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Gnome-globe.svg/180px-Gnome-globe.svg.png 1.5x,
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Gnome-globe.svg/240px-Gnome-globe.svg.png 2x' data-file-
width='48' data-file-height='48' /></a>

Gnome-globe.svg
• <a href='//commons.wikimedia.org/wiki/File:Globe_of_letters.png' class='image'><img alt='' src='https://upload.
wikimedia.org/wikipedia/commons/thumb/6/62/Globe_of_letters.png/120px-Globe_of_letters.png' width='120' height='97'
srcset='https://upload.wikimedia.org/wikipedia/commons/6/62/Globe_of_letters.png 1.5x' data-file-width='144' data-file-
height='116' /></a>

Globe of letters.png
Original artist: Seahen
• File:Great_Seal_of_the_United_States_(obverse).svg Source: https://upload.wikimedia.org/wikipedia/commons/5/5c/Great_Seal_
of_the_United_States_%28obverse%29.svg License: Public domain Contributors: Extracted from PDF version of Our Flag, available here
(direct PDF URL here.) Original artist: U.S. Government
• File:HTML.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/84/HTML.svg License: CC BY-SA 2.5 Contributors:
HTML.svg Original artist: Dreftymac
• File:HTML5-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/6/61/HTML5_logo_and_wordmark.svg License: CC
BY 3.0 Contributors: Official HTML5 logo by W3C. Licensed under the CC-by 3.0 Original artist: W3C
• File:HTML_Example_Code.png Source: https://upload.wikimedia.org/wikipedia/en/9/94/HTML_Example_Code.png License: CC-
BY-SA-3.0 Contributors:
Own work
Original artist:
Zafiraman
• File:HalfDuplex.JPG Source: https://upload.wikimedia.org/wikipedia/commons/b/b3/HalfDuplex.JPG License: Public domain Contrib-
utors: Transferred from en.wikipedia to Commons. Original artist: Greggreggreg at English Wikipedia
• File:Hash_table_3_1_1_0_1_0_0_SP.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/7d/Hash_table_3_1_1_0_1_0_
0_SP.svg License: CC BY-SA 3.0 Contributors: Own work Original artist: Jorge Stolfi
• File:Http_request_telnet_ubuntu.png Source: https://upload.wikimedia.org/wikipedia/commons/c/c6/Http_request_telnet_ubuntu.
png License: Public domain Contributors: Own work Original artist: TheJosh
• File:IBM360-65-1.corestore.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/6a/IBM360-65-1.corestore.jpg License:
CC-BY-SA-3.0 Contributors: http://www.corestore.org/36065-1.jpg Original artist: Michael J. Ross

• File:IBM_Turboways_ATM_155.jpg Source: https://upload.wikimedia.org/wikipedia/commons/2/26/IBM_Turboways_ATM_155.


jpg License: Public domain Contributors: Transferred from en.wikipedia to Commons by Sreejithk2000 using CommonsHelper. Origi-
nal artist: Rjamorim at English Wikipedia
• File:IEEE_logo.svg Source: https://upload.wikimedia.org/wikipedia/en/2/21/IEEE_logo.svg License: Fair use Contributors:
Direct link to image can be found here as found on this archived page of the organization’s official website Original artist: ?
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 429

• File:IETF_Logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/9/98/IETF_Logo.svg License: Public domain Contribu-


tors: http://www.ietf.org/images/logos/ Original artist: the IETF Trust
• File:IP_stack_connections.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/c4/IP_stack_connections.svg License: CC-
BY-SA-3.0 Contributors: Prior Wikipedia artwork by en:User:Cburnett Original artist: en:User:Kbrose
• File:ISO_Members.svg Source: https://upload.wikimedia.org/wikipedia/commons/0/05/ISO_Members.svg License: Public domain Con-
tributors: Own work Original artist: Ichwan Palongengi
• File:ITU.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/77/ITU.jpg License: CC-BY-SA-3.0 Contributors: Own work
Original artist: Yann Forget
• File:ITU_monument,_Bern.jpg Source: https://upload.wikimedia.org/wikipedia/commons/a/a9/ITU_monument%2C_Bern.jpg Li-
cense: CC-BY-SA-3.0 Contributors: No machine-readable source provided. Own work assumed (based on copyright claims). Original
artist: No machine-readable author provided. Gdr assumed (based on copyright claims).
• File:Icannheadquartersplayavista.jpg Source: https://upload.wikimedia.org/wikipedia/commons/4/46/Icannheadquartersplayavista.
jpg License: CC BY-SA 3.0 Contributors: Own work Original artist: Coolcaesar
• File:Icon_Camera.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/43/Icon_Camera.svg License: Attribution Contribu-
tors: Own work Original artist: me
• File:Interaction_comm_model.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/79/Interaction_comm_model.svg Li-
cense: Public domain Contributors:
• Interaction_comm_model.jpg Original artist: Interaction_comm_model.jpg: JasonSWrench
• File:International_Telecommunication_Union_11c_1965_issue_U.S._stamp.jpg Source: https://upload.wikimedia.org/wikipedia/
commons/d/d9/International_Telecommunication_Union_11c_1965_issue_U.S._stamp.jpg License: Public domain Contributors: U.S.
Postal Service; National Postal Museum: International Telecommunication Union Issue Original artist: Bureau of Engraving and Print-
ing. Designed by Thomas F. Naegele.
• File:Internet1.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/75/Internet1.jpg License: GFDL Contributors: Own work
Original artist: Rock1997
• File:InternetUsersByLanguagePieChart.svg Source: https://upload.wikimedia.org/wikipedia/commons/e/e0/
InternetUsersByLanguagePieChart.svg License: CC BY-SA 3.0 Contributors: Own work, based on data from “Number of In-
ternet Users by Language”, Internet WorldStats, Miniwatts Marketing Group, 31 May 2011, accessed 22 March 1960, URL:
http://www.internetworldstats.com/stats7.htm
Original artist: Jeff Ogden (W163)

• File:Internet_Censorship_and_Surveillance_World_Map.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/c8/


Internet_Censorship_and_Surveillance_World_Map.svg License: CC0 Contributors: Own work based on the article Internet censorship and
surveillance by country as well as the classifications from Reporters Without Borders, the OpenNet Initiative, the Freedom on the Net reports
from Freedom House, and the <a href='https://en.wikipedia.org/wiki/United_States%27_Country_Reports_on_Human_Rights_Practices'
class='extiw' title='wikipedia:United States’ Country Reports on Human Rights Practices’>Country Reports on Human Rights Practices</a>
of the U.S. Department of State
Original artist: Jeffrey Ogden (W163)

• File:Internet_Connectivity_Distribution_&_Core.svg Source: https://upload.wikimedia.org/wikipedia/commons/3/36/Internet_


Connectivity_Distribution_%26_Core.svg License: CC BY-SA 3.0 Contributors: Internet Connectivity Distribution&Core.svg Original
artist: User:Ludovic.ferre
• File:Internet_layering.svg Source: https://upload.wikimedia.org/wikipedia/en/a/a6/Internet_layering.svg License: CC-BY-SA-3.0 Con-
tributors:
I (Jsoon eu (talk)) created this work entirely by myself. Original artist:
Jsoon eu (talk)
• File:Internet_map_1024.jpg Source: https://upload.wikimedia.org/wikipedia/commons/d/d2/Internet_map_1024.jpg License: CC BY
2.5 Contributors: Originally from the English Wikipedia; description page is/was here. Original artist: The Opte Project
• File:Internet_map_1024_-_transparent,_inverted.png Source: https://upload.wikimedia.org/wikipedia/commons/3/3f/Internet_map_
1024_-_transparent%2C_inverted.png License: CC BY 2.5 Contributors: Originally from the English Wikipedia; description page is/was
here. Original artist: The Opte Project
• File:Internet_users_per_100_inhabitants_ITU.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/29/Internet_users_
per_100_inhabitants_ITU.svg License: CC BY-SA 3.0 Contributors: Own work Original artist: Jeff Ogden (W163)
• File:KDE_4.png Source: https://upload.wikimedia.org/wikipedia/commons/5/54/KDE_4.png License: GPL Contributors: Self-made
screenshot Original artist: KDE
• File:Kernel_Layout.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/8f/Kernel_Layout.svg License: CC BY-SA 3.0
Contributors: Own work Original artist: Bobbo
• File:LampFlowchart.svg Source: https://upload.wikimedia.org/wikipedia/commons/9/91/LampFlowchart.svg License: CC-BY-SA-3.0
Contributors: vector version of Image:LampFlowchart.png Original artist: svg by Booyabazooka

• File:Latimeria_chalumnae01.jpg Source: https://upload.wikimedia.org/wikipedia/commons/3/3d/Latimeria_chalumnae01.jpg License:


CC-BY-SA-3.0 Contributors: No machine-readable source provided. Own work assumed (based on copyright claims). Original artist: No
machine-readable author provided. JoJan assumed (based on copyright claims).
• File:Linear_comm_model.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/83/Linear_comm_model.svg License: Pub-
lic domain Contributors: Linear comm model.jpg Original artist: Linear comm model.jpg: JasonSWrench
430 CHAPTER 70. X.25

• File:Logo_sociology.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a6/Logo_sociology.svg License: Public domain


Contributors: Own work Original artist: Tomeq183
• File:Mac_OSX_Lion_screen.png Source: https://upload.wikimedia.org/wikipedia/en/8/80/Mac_OSX_Lion_screen.png License: Fair
use Contributors:
Screenshot
Original artist: ?
• File:Manchester_Mark2.jpg Source: https://upload.wikimedia.org/wikipedia/en/d/d8/Manchester_Mark2.jpg License: Fair use Contrib-
utors:
http://www.computer50.org/mark1/ip-mm1.mark1.html Original artist: ?
• File:Mealy.png Source: https://upload.wikimedia.org/wikipedia/commons/b/b4/Mealy.png License: CC BY-SA 3.0 Contributors: ‫תמונה‬
‫ זו נוצרה בעזרת‬OmniGraffle. Original artist: ‫עצמי‬.
• File:Member_states_of_the_International_Telecommunication_Union.png Source: https://upload.wikimedia.org/wikipedia/
commons/3/33/Member_states_of_the_International_Telecommunication_Union.png License: CC-BY-SA-3.0 Contributors: Transferred
from en.wikipedia to Commons. Original artist: Alinor at English Wikipedia
• File:Memory_plaque_of_founding_ISA_in_Prague_cropped.jpg Source: https://upload.wikimedia.org/wikipedia/commons/c/c0/
Memory_plaque_of_founding_ISA_in_Prague_cropped.jpg License: CC BY-SA 3.0 Contributors: Own work from File:Memory plaque
of founding ISA in Prague.jpg Original artist: Luděk Kovář – [email protected]

• File:Mergefrom.svg Source: https://upload.wikimedia.org/wikipedia/commons/0/0f/Mergefrom.svg License: Public domain Contribu-


tors: ? Original artist: ?
• File:Message_flows.svg Source: https://upload.wikimedia.org/wikipedia/en/b/b0/Message_flows.svg License: CC-BY-SA-3.0 Contribu-
tors:
I (Jsoon eu (talk)) created this work entirely by myself. Original artist:
Jsoon eu (talk)
• File:Message_flows_and_Routing.svg Source: https://upload.wikimedia.org/wikipedia/en/a/a5/Message_flows_and_Routing.svg Li-
cense: CC-BY-SA-3.0 Contributors:
I (Jsoon eu (talk)) created this work entirely by myself. Original artist:
Jsoon eu (talk)
• File:Moore-Automat-en.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/1f/Moore-Automat-en.svg License: Public
domain Contributors: Own work Original artist: Biezl
• File:Moore_Machine.svg Source: https://upload.wikimedia.org/wikipedia/commons/c/c3/Moore_Machine.svg License: CC BY-SA 4.0
Contributors: Own work Original artist: Htarage
• File:Multiplexing_diagram.svg Source: https://upload.wikimedia.org/wikipedia/commons/6/6f/Multiplexing_diagram.svg License: CC
BY-SA 3.0 Contributors: Own work Original artist: The Anome
• File:NSFNET-backbone-T3.png Source: https://upload.wikimedia.org/wikipedia/commons/e/e5/NSFNET-backbone-T3.png License:
CC BY-SA 3.0 Contributors: Merit Network, Inc. Original artist: Merit Network, Inc.
• File:NX1Z_Radio.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/02/NX1Z_Radio.jpg License: Public domain Con-
tributors: Transferred from en.wikipedia to Commons by Linhhp using CommonsHelper. Original artist: NX1Z at English Wikipedia
• File:OSI-model-Communication.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/41/OSI-model-Communication.svg
License: Public domain Contributors: Own work Original artist: Runtux
• File:OSI_Model_v1.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/8d/OSI_Model_v1.svg License: Public domain
Contributors: Own work Original artist: Offnfopt
• File:Office-book.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a8/Office-book.svg License: Public domain Contribu-
tors: This and myself. Original artist: Chris Down/Tango project
• File:OilCleanupAfterValdezSpill.jpg Source: https://upload.wikimedia.org/wikipedia/commons/5/52/OilCleanupAfterValdezSpill.jpg
License: Public domain Contributors: ? Original artist: ?
• File:Old_HTML_Logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/12/Old_HTML_Logo.svg License: Public do-
main Contributors: http://www.w3.org/Icons/WWW/html_48x48.gif at http://www.w3.org/Icons/WWW/ Original artist: World Wide Web
Consortium (W3C)
• File:Operating_system_placement_(software).svg Source: https://upload.wikimedia.org/wikipedia/commons/8/87/Operating_
system_placement_%28software%29.svg License: CC BY-SA 3.0 Contributors: This file was derived from Operating system place-
ment.svg: <a href='//commons.wikimedia.org/wiki/File:Operating_system_placement.svg' class='image'><img alt='Operating system
placement.svg' src='https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Operating_system_placement.svg/70px-Operating_
system_placement.svg.png' width='70' height='104' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Operating_
system_placement.svg/105px-Operating_system_placement.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/e/
e1/Operating_system_placement.svg/140px-Operating_system_placement.svg.png 2x' data-file-width='250' data-file-height='370' /></a>
Original artist: Golftheman
• File:OptischerTelegraf.jpg Source: https://upload.wikimedia.org/wikipedia/commons/9/94/OptischerTelegraf.jpg License: CC-BY-
SA-3.0 Contributors: Own work Original artist: Lokilech at German Wikipedia
• File:PC_DOS_1.10_screenshot.png Source: https://upload.wikimedia.org/wikipedia/commons/f/f9/PC_DOS_1.10_screenshot.png Li-
cense: Public domain Contributors: Originally uploaded as “PC DOS Command Window.gif” on 21 May 2006 by Alexzero77. This new
version is in the PNG format and is exactly the same quality as the original but with a smaller file size. Transferred from en.wikipedia to
Commons by User:Leyo using CommonsHelper. Original artist: Remember the dot at en.wikipedia (PNG)
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 431

• File:PD-icon.svg Source: https://upload.wikimedia.org/wikipedia/en/6/62/PD-icon.svg License: PD Contributors: ? Original artist: ?


• File:PDP-11-M7270.jpg Source: https://upload.wikimedia.org/wikipedia/commons/8/88/PDP-11-M7270.jpg License: CC BY-SA 3.0
Contributors: Own work Original artist: Retro-Computing Society of Rhode Island
• File:Passive_FTP_Verbindung.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/84/Passive_FTP_Verbindung.svg Li-
cense: CC BY-SA 3.0 Contributors: Own work Original artist: Michael Lorer
• File:Personal_computer,_exploded_6.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/4e/Personal_computer%2C_
exploded_6.svg License: CC BY 2.5 Contributors: Self-published work by User:HereToHelp and File:Personal computer, exploded 5.svg
Original artist: User:HereToHelp
• File:PikiWiki_Israel_32304_The_Internet_Messenger_by_Buky_Schwartz.JPG Source: https://upload.wikimedia.org/wikipedia/
commons/9/93/PikiWiki_Israel_32304_The_Internet_Messenger_by_Buky_Schwartz.JPG License: CC BY 2.5 Contributors: Dr. Avishai
Teicher via the PikiWiki - Israel free image collection project Original artist: Dr. Avishai Teicher
• File:Portal-puzzle.svg Source: https://upload.wikimedia.org/wikipedia/en/f/fd/Portal-puzzle.svg License: Public domain Contributors: ?
Original artist: ?
• File:Priv_rings.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/2f/Priv_rings.svg License: CC-BY-SA-3.0 Contributors:
Transferred from en.wikipedia to Commons. Original artist: Hertzsprung at English Wikipedia
• File:Protocol_and_Software_layering.svg Source: https://upload.wikimedia.org/wikipedia/en/b/bd/Protocol_and_Software_layering.
svg License: CC-BY-SA-3.0 Contributors:
I (Jsoon eu (talk)) created this work entirely by myself. Original artist:
Jsoon eu (talk)
• File:Putty_ssh_tunnel_L.png Source: https://upload.wikimedia.org/wikipedia/commons/2/2d/Putty_ssh_tunnel_L.png License: CC0
Contributors: Own work Original artist: Erik Streb
• File:Python_add5_parse.png Source: https://upload.wikimedia.org/wikipedia/commons/a/ac/Python_add5_parse.png License: Public
domain Contributors: Transferred from en.wikipedia to Commons. Original artist: Lulu of the Lotus-Eaters at English Wikipedia
• File:Python_add5_syntax.svg Source: https://upload.wikimedia.org/wikipedia/commons/e/e1/Python_add5_syntax.svg License: Copy-
righted free use Contributors: http://en.wikipedia.org/wiki/Image:Python_add5_syntax.png Original artist: Xander89
• File:Question_book-new.svg Source: https://upload.wikimedia.org/wikipedia/en/9/99/Question_book-new.svg License: Cc-by-sa-3.0
Contributors:
Created from scratch in Adobe Illustrator. Based on Image:Question book.png created by User:Equazcion Original artist:
Tkgd2007
• File:RG-59.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/73/RG-59.jpg License: CC-BY-SA-3.0 Contributors: ?
Original artist: ?
• File:RMI-Stubs-Skeletons.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/ba/RMI-Stubs-Skeletons.svg License: CC
BY-SA 3.0 Contributors: Own work Original artist: Kilom691
• File:Radio_DAB.JPG Source: https://upload.wikimedia.org/wikipedia/commons/4/40/Radio_DAB.JPG License: CC-BY-SA-3.0 Con-
tributors: Transferred from en.wikipedia to Commons by QuiteUnusual using CommonsHelper. Original artist: The original uploader was
Rhyshuw1 at English Wikipedia
• File:Radio_icon.png Source: https://upload.wikimedia.org/wikipedia/commons/1/1d/Radio_icon.png License: Public domain Contribu-
tors: ? Original artist: ?
• File:SOAP.svg Source: https://upload.wikimedia.org/wikipedia/commons/5/59/SOAP.svg License: CC BY-SA 3.0 Contributors: Own
work Original artist: Silver Spoon Sokpop
• File:SRI_First_Internetworked_Connection_diagram.jpg Source: https://upload.wikimedia.org/wikipedia/commons/d/d5/SRI_
First_Internetworked_Connection_diagram.jpg License: CC BY-SA 3.0 Contributors: SRI International Original artist: SRI International
• File:SRI_Packet_Radio_Van.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/0d/SRI_Packet_Radio_Van.jpg License:
CC BY-SA 3.0 Contributors: SRI International Original artist: SRI International
• File:SSH_Tunnel_(remote).png Source: https://upload.wikimedia.org/wikipedia/commons/2/2c/SSH_Tunnel_%28remote%29.png Li-
cense: CC BY-SA 4.0 Contributors: Own work Original artist: Serypol
• File:SdlStateMachine.png Source: https://upload.wikimedia.org/wikipedia/commons/3/38/SdlStateMachine.png License: CC-BY-SA-
3.0 Contributors: ? Original artist: ?
• File:Siemens-DAG-64_front.jpg Source: https://upload.wikimedia.org/wikipedia/commons/6/64/Siemens-DAG-64_front.jpg License:
Copyrighted free use Contributors: ? Original artist: ?
• File:Signal_processing_system.png Source: https://upload.wikimedia.org/wikipedia/commons/4/46/Signal_processing_system.png Li-
cense: CC BY-SA 3.0 Contributors: Own work;... Uses File:EAR.jpg and File:Sexy-Red-Lips Happy-Girl.jpg Original artist: Brews ohare
• File:Smcr.jpg Source: https://upload.wikimedia.org/wikipedia/commons/8/86/Smcr.jpg License: CC BY 3.0 Contributors: Own work
Original artist: JasonSWrench
• File:Sorting_quicksort_anim.gif Source: https://upload.wikimedia.org/wikipedia/commons/6/6a/Sorting_quicksort_anim.gif License:
CC-BY-SA-3.0 Contributors: originally upload on the English Wikipedia Original artist: Wikipedia:en:User:RolandH
• File:Speakerlink-new.svg Source: https://upload.wikimedia.org/wikipedia/commons/3/3b/Speakerlink-new.svg License: CC0 Contribu-
tors: Own work Original artist: Kelvinsong
• File:Ssh-L-Tunnel.png Source: https://upload.wikimedia.org/wikipedia/commons/d/dc/Ssh-L-Tunnel.png License: CC BY-SA 4.0 Con-
tributors: Own work Original artist: Serypol
• File:Stamps_of_Azerbaijan,_2015-1223.jpg Source: https://upload.wikimedia.org/wikipedia/commons/1/14/Stamps_of_
Azerbaijan%2C_2015-1223.jpg License: Public domain Contributors: azermarka.az Original artist: Post of Azerbaijan/Azermarka
432 CHAPTER 70. X.25

• File:Symbol_book_class2.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/89/Symbol_book_class2.svg License: CC


BY-SA 2.5 Contributors: Mad by Lokal_Profil by combining: Original artist: Lokal_Profil
• File:Symbol_list_class.svg Source: https://upload.wikimedia.org/wikipedia/en/d/db/Symbol_list_class.svg License: Public domain Con-
tributors: ? Original artist: ?
• File:Symbol_neutral_vote.svg Source: https://upload.wikimedia.org/wikipedia/en/8/89/Symbol_neutral_vote.svg License: Public do-
main Contributors: ? Original artist: ?
• File:TCP_CLOSE.svg Source: https://upload.wikimedia.org/wikipedia/commons/5/55/TCP_CLOSE.svg License: CC BY-SA 3.0 Con-
tributors: https://secure.wikimedia.org/wikipedia/commons/wiki/File:Fin_de_conexi%C3%B3n_TCP.svg Original artist: Clemente
• File:TTL_npn_nand.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/d4/TTL_npn_nand.svg License: CC-BY-SA-3.0
Contributors: Own work, made with Adobe Illustrator CS2 Original artist: Sakurambo
• File:Tcp.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/db/Tcp.svg License: CC-BY-SA-3.0 Contributors: Own work
Original artist: Mike de
• File:Tcp_state_diagram_fixed_new.svg Source: https://upload.wikimedia.org/wikipedia/commons/f/f6/Tcp_state_diagram_fixed_
new.svg License: CC BY-SA 3.0 Contributors: Based on File:Tcp state diagram fixed.svg Original artist: Sergiodc2, Marty Pauley, Scil100
• File:Telecom-icon.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/4e/Telecom-icon.svg License: Public domain Con-
tributors: Vectorized by User:Booyabazooka from original small PD raster image File:Telecom-icon.jpg Original artist: Vectorized by
User:Booyabazooka from original small PD raster image File:Telecom-icon.jpg
• File:Televideo925Terminal.jpg Source: https://upload.wikimedia.org/wikipedia/commons/8/87/Televideo925Terminal.jpg License:
Public domain Contributors: ? Original artist: ?
• File:Text_document_with_red_question_mark.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a4/Text_document_
with_red_question_mark.svg License: Public domain Contributors: Created by bdesham with Inkscape; based upon Text-x-generic.svg
from the Tango project. Original artist: Benjamin D. Esham (bdesham)
• File:Thai-coup-detat-2014-social-media-banner.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/01/
Thai-coup-detat-2014-social-media-banner.jpg License: CC BY-SA 4.0 Contributors: Own work Original artist: Pratyeka
• File:The_PVR.jpg Source: https://upload.wikimedia.org/wikipedia/commons/c/c3/The_PVR.jpg License: CC BY 2.0 Contributors:
Flickr.com - image description page Original artist: Duncan Rawlinson
• File:Tim_Berners-Lee_April_2009.jpg Source: https://upload.wikimedia.org/wikipedia/commons/c/c8/Tim_Berners-Lee_April_
2009.jpg License: CC BY 2.0 Contributors: Con Tim Berners-Lee Original artist: Enrique Dans from Madrid, Spain
• File:Tim_Berners-Lee_CP_2.jpg Source: https://upload.wikimedia.org/wikipedia/commons/7/7e/Tim_Berners-Lee_CP_2.jpg Li-
cense: CC BY 2.0 Contributors: originally posted to Flickr as Tim Berners-Lee Original artist: Silvio Tanaka
• File:Torniqueterevolution.jpg Source: https://upload.wikimedia.org/wikipedia/commons/9/97/Torniqueterevolution.jpg License:
GFDL Contributors: Own work Original artist: Sebasgui
• File:Transactional_comm_model.jpg Source: https://upload.wikimedia.org/wikipedia/commons/0/0d/Transactional_comm_model.
jpg License: CC BY 3.0 Contributors: Own work Original artist: JasonSWrench
• File:Turnstile_state_machine_colored.svg Source: https://upload.wikimedia.org/wikipedia/commons/9/9e/Turnstile_state_machine_
colored.svg License: CC0 Contributors: Own work Original artist: Chetvorno
• File:UDP_encapsulation.svg Source: https://upload.wikimedia.org/wikipedia/commons/3/3b/UDP_encapsulation.svg License: CC-BY-
SA-3.0 Contributors: Original artwork by en:User:Cburnett Original artist: en:User:Cburnett original work, colorization by en:User:Kbrose
• File:UML_state_machine_Fig5.png Source: https://upload.wikimedia.org/wikipedia/commons/2/20/UML_state_machine_Fig5.png
License: CC BY-SA 3.0 Contributors: Own work (Original text: I (Mirosamek (talk)) created this work entirely by myself.) Original artist:
Mirosamek (talk)
• File:Ubuntu_12.04_Final_Live_CD_Screenshot.png Source: https://upload.wikimedia.org/wikipedia/commons/b/b9/Ubuntu_12.04_
Final_Live_CD_Screenshot.png License: GPL Contributors: Live CD screenshot Original artist: Canonical Ltd
• File:Virtual_memory.svg Source: https://upload.wikimedia.org/wikipedia/commons/6/6e/Virtual_memory.svg License: CC BY-SA 3.0
Contributors: Own work Original artist: Ehamberg
• File:Von_Neumann_Architecture.svg Source: https://upload.wikimedia.org/wikipedia/commons/e/e5/Von_Neumann_Architecture.
svg License: CC BY-SA 3.0 Contributors: Own work Original artist: Kapooht
• File:Waricon.svg Source: https://upload.wikimedia.org/wikipedia/en/6/65/Waricon.svg License: PD Contributors: ? Original artist: ?
• File:WebsitesByLanguagePieChart.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/88/
WebsitesByLanguagePieChart.svg License: CC BY-SA 3.0 Contributors: Own work, based on data from “Usage of content lan-
guages for websites”, W3Techs.com, a division of Q-Success DI Gelbmann GmbH, original on 22 April 2012 accessed 30 December
2011, update on 2 July 2013 accessed 26 April 2013, URL: http://w3techs.com/technologies/overview/content_language/all
Original artist: Jeff Ogden (W163)

• File:Wiki_letter_w_cropped.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/1c/Wiki_letter_w_cropped.svg License:


CC-BY-SA-3.0 Contributors: This file was derived from Wiki letter w.svg: <a href='//commons.wikimedia.org/wiki/File:
Wiki_letter_w.svg' class='image'><img alt='Wiki letter w.svg' src='https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Wiki_
letter_w.svg/50px-Wiki_letter_w.svg.png' width='50' height='50' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/
Wiki_letter_w.svg/75px-Wiki_letter_w.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Wiki_letter_w.svg/
100px-Wiki_letter_w.svg.png 2x' data-file-width='44' data-file-height='44' /></a>
Original artist: Derivative work by Thumperward
• File:Wikibooks-logo-en-noslogan.svg Source: https://upload.wikimedia.org/wikipedia/commons/d/df/Wikibooks-logo-en-noslogan.
svg License: CC BY-SA 3.0 Contributors: Own work Original artist: User:Bastique, User:Ramac et al.
70.11. TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES 433

• File:Wikibooks-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg License: CC BY-SA 3.0


Contributors: Own work Original artist: User:Bastique, User:Ramac et al.
• File:Wikidata-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/f/ff/Wikidata-logo.svg License: Public domain Con-
tributors: Own work Original artist: User:Planemad
• File:Wikinews-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/2/24/Wikinews-logo.svg License: CC BY-SA 3.0
Contributors: This is a cropped version of Image:Wikinews-logo-en.png. Original artist: Vectorized by Simon 01:05, 2 August 2006 (UTC)
Updated by Time3000 17 April 2007 to use official Wikinews colours and appear correctly on dark backgrounds. Originally uploaded by
Simon.
• File:WikipediaBinary.svg Source: https://upload.wikimedia.org/wikipedia/commons/b/bb/WikipediaBinary.svg License: CC BY 2.5
Contributors: User:Spinningspark made this file Original artist: qiwuwjywyhhwhwhhw User:Spinningspark
• File:Wikiquote-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/f/fa/Wikiquote-logo.svg License: Public domain
Contributors: Own work Original artist: Rei-artur
• File:Wikisource-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg License: CC BY-SA 3.0
Contributors: Rei-artur Original artist: Nicholas Moreau
• File:Wikiversity-logo-Snorky.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/1b/Wikiversity-logo-en.svg License:
CC BY-SA 3.0 Contributors: Own work Original artist: Snorky
• File:Wikiversity-logo.svg Source: https://upload.wikimedia.org/wikipedia/commons/9/91/Wikiversity-logo.svg License: CC BY-SA 3.0
Contributors: Snorky (optimized and cleaned up by verdy_p) Original artist: Snorky (optimized and cleaned up by verdy_p)
• File:Wiktionary-logo-v2.svg Source: https://upload.wikimedia.org/wikipedia/commons/0/06/Wiktionary-logo-v2.svg License: CC BY-
SA 4.0 Contributors: Own work Original artist: Dan Polansky based on work currently attributed to Wikimedia Foundation but originally
created by Smurrayinchester
• File:Windows_logo_–_2012_(dark_blue).svg Source: https://upload.wikimedia.org/wikipedia/commons/e/ee/Windows_logo_%E2%
80%93_2012_%28dark_blue%29.svg License: Public domain Contributors: Windows 10 Original artist: File:Windows 10 Logo.svg: Mul-
tiple editors; see image description page
• File:World_map_of_submarine_cables.png Source: https://upload.wikimedia.org/wikipedia/commons/7/7d/World_map_of_
submarine_cables.png License: Public domain Contributors: Originally uploaded with the filename Submarine cables.png, overwriting the
previous version. That version was restored so this is now being uploaded with a different filename. Original artist: Rarelibra
• File:X25-network-diagram-0a.svg Source: https://upload.wikimedia.org/wikipedia/commons/5/5c/X25-network-diagram-0a.svg Li-
cense: Public domain Contributors: Own work Original artist: Adamantios
• File:Xxx_Scanner_and_parser_example_for_C.gif Source: https://upload.wikimedia.org/wikipedia/commons/5/5b/Xxx_Scanner_
and_parser_example_for_C.gif License: CC BY-SA 3.0 Contributors: Own work Original artist: Jochen Burghardt

70.11.3 Content license


• Creative Commons Attribution-Share Alike 3.0

You might also like