Download as pdf or txt
Download as pdf or txt
You are on page 1of 462

Contents

Algorithm

1.1

Informal denition

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2

Formalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.2.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.4

Computer algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5

Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.1

Algorithm example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.2

Euclids algorithm

1.5.3

Testing the Euclid algorithms

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.5.4

Measuring and improving the Euclid algorithms . . . . . . . . . . . . . . . . . . . . . . .

1.6

Expressing algorithms

Algorithmic analysis

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Classication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7.1

By implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7.2

By design paradigm

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7.3

Optimization problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.7.4

By eld of study

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.7.5

By complexity

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.8

Continuous algorithms

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.9

Legal issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.7

1.6.1

Formal versus empirical

1.6.2

Execution eciency

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 (193637, 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

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

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

2.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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

3.2

Design

3.3

Addressing

3.4

Protocols

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.4.1

AppleTalk Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

3.4.2

AppleTalk Data Stream Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

CONTENTS

3.4.3

Apple Filing Protocol

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

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

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

External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

4.2

4.7
5

iii
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

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 trac 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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

AX.25

53

6.1

Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Communicating sequential processes

56

7.1

56

History
7.1.1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Applications

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

Informal description

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

7.2.1

Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

7.2.2

Algebraic operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

7.2.3

Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

Formal denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

7.2

7.3

CONTENTS
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 eective human communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

8.7.1

Cultural aspects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

Nonhuman communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

8.8.1

Animals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

8.8.2

Plants and fungi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

8.8.3

Bacteria quorum sensing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

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

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 specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

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

8.8

8.9

9.6

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
11.1 History

87
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.1.1 Compilation

87

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

11.3 Compiler construction

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

11.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

11.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

11.8 References

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

11.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

11.5 Related techniques

12 Computer hardware

95

12.1 Von Neumann architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

12.2 Sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

12.3 Dierent 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
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii
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 ow 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
22.1 Denitions
22.2 History

124

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
22.6.3 Hybrid schemes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 rewall traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
23.2.5 Dierences 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

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 Classication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
24.9 Optimization

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 nite-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 Specic 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 specication 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-specic denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
29.1 Etymology

170
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

29.2 Information theory approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171


29.3 As sensory input

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

29.4 As representation and complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171


29.5 As an inuence 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
29.9 As records

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 eld 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
32.3 History
32.4 Structure

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
32.9 Criticism

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
34.2 History

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
35.1 Technical details

214

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Denition 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 denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Classication 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 eects 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, ows, 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 Oce Protocol

286

52.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286


52.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
52.3 Extensions and Specications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
52.3.1 STARTTLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.3.2 SDPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
52.3.3 Kerberized Post Oce 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 Denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289


53.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
53.2.1 Early developments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
53.2.2 Renement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
60.1 Etymology

333
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
62.6.2 Telephone

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 ooad

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 rewall 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 Specication 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 Certication

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
cisely denes a sequence of operations.[11] which would
include all computer programs, including programs that
do not perform numeric calculations. Generally, a program is only an algorithm if it stops eventually.[12]

For other uses, see Algorithm (disambiguation).


In mathematics and computer science, an algorithm
( i /lrm/ AL-g-ri-dhm) is a self-contained stepby-step set of operations to be performed. Algorithms
perform calculation, data processing, and/or automated
reasoning tasks.

A prototypical example of an algorithm is Euclids algorithm 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-Khwrizm. Al-Khwrizm (Persian: , ow chart above and as an example in a later section.
c. 780850) was a Persian mathematician, astronomer, Boolos & Jerey (1974, 1999) oer an informal meaning
geographer, and scholar.
of the word in the following quotation:
An algorithm is an eective method that can be expressed within a nite amount of space and time[1]
and in a well-dened formal language[2] for calculating a function.[3] Starting from an initial state and initial input (perhaps empty),[4] the instructions describe
a computation that, when executed, proceeds through a
nite[5] number of well-dened successive states, eventually producing output[6] and terminating at a nal ending state. The transition from one state to the next is
not necessarily deterministic; some algorithms, known as
randomized algorithms, incorporate random input.[7]

No human being can write fast enough, or


long enough, or small enough ( "smaller and
smaller without limit ...you'd be trying to write
on molecules, on atoms, on electrons) to list
all members of an enumerably innite set by
writing out their names, one after another, in
some notation. But humans can do something
equally useful, in the case of certain enumerably innite sets: They can give explicit instructions for determining the nth member of the set,
for arbitrary nite n. Such instructions are to
be given quite explicitly, in a form in which they
could be followed by a computing machine, or
by a human who is capable of carrying out only
very elementary operations on symbols.[13]

The concept of algorithm has existed for centuries; however, a partial formalization of what would become
the modern algorithm began with attempts to solve the
Entscheidungsproblem (the decision problem) posed
by David Hilbert in 1928. Subsequent formalizations
were framed as attempts to dene "eective calculability"[8] or eective method";[9] those formalizations included the GdelHerbrandKleene recursive functions
of 1930, 1934 and 1935, Alonzo Church's lambda calculus of 1936, Emil Post's "Formulation 1" of 1936,
and Alan Turing's Turing machines of 19367 and 1939.
Giving a formal denition of algorithms, corresponding
to the intuitive notion, remains a challenging problem.[10]

An enumerably innite set is one whose elements can


be put into one-to-one correspondence with the integers.
Thus, Boolos and Jerey are saying that an algorithm implies instructions for a process that creates output integers from an arbitrary input integer or integers that, in
theory, can be arbitrarily large. Thus an algorithm can be
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 dene the notion indicate that
the word implies much more than this, something on the
order of (for the addition example):

1.1 Informal denition


For a detailed presentation of the various points of
view on the denition of algorithm, see Algorithm
characterizations.

Precise instructions (in language understood


by the computer)[14] for a fast, ecient,
good[15] process that species the moves of
the computer (machine or human, equipped

An informal denition could be a set of rules that pre1

CHAPTER 1. ALGORITHM

ENTRY
Euclid's algorithm for the
greatest common divisor (gcd)
of two numbers
1

INPUT A, B

yes

B = 0?
no

yes

A > B?
no (< or =)

4
5

B-A

GOTO 2

A-B

GOTO 2

PRINT A

END

Flow chart of an algorithm (Euclids algorithm) for calculating


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)
(more accurately the number b in location B is greater than or
equal to the number a in location A) THEN, the algorithm species B B A (meaning the number b a replaces the old
b). Similarly, IF A > B, THEN A A B. The process terminates when (the contents of) B is 0, yielding the g.c.d. in A. (Algorithm derived from Scott 2009:13; symbols and drawing style
from Tausworthe 1977).

with the necessary internally contained information and capabilities)[16] to nd, decode, and then process arbitrary input integers/symbols m and n, symbols + and = ...
and eectively[17] produce, in a reasonable
time,[18] output-integer y at a specied place

and in a specied format.


The concept of algorithm is also used to dene the notion
of decidability. That notion is central for explaining how
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 apparently related with our customary physical dimension.
From such uncertainties, that characterize ongoing work,
stems the unavailability of a denition of algorithm that
suits both concrete (in some sense) and abstract usage of
the term.

1.2 Formalization
Algorithms are essential to the way computers process
data. Many computer programs contain algorithms that
detail the specic instructions a computer should perform
(in a specic order) to carry out a specied task, such
as calculating employees paychecks or printing students
report cards. Thus, an algorithm can be considered to
be any sequence of operations that can be simulated by
a Turing-complete system. Authors who assert this thesis include Minsky (1967), Savage (1987) and Gurevich
(2000):
Minsky: But we will also maintain, with
Turing . . . that any procedure which could
naturally be called eective, can in fact be
realized by a (simple) machine. Although this
may seem extreme, the arguments . . . in its
favor are hard to refute.[19]
Gurevich: "...Turings informal argument
in favor of his thesis justies a stronger thesis:
every algorithm can be simulated by a Turing
machine ... according to Savage [1987], an algorithm is a computational process dened by
a Turing machine.[20]
Typically, when an algorithm is associated with processing information, data are read from an input source, written to an output device, and/or stored for further processing. Stored data are regarded as part of the internal state
of the entity performing the algorithm. In practice, the
state is stored in one or more data structures.
For some such computational process, the algorithm must
be rigorously dened: specied in the way it applies in all
possible circumstances that could arise. That is, any conditional steps must be systematically dealt with, case-bycase; the criteria for each case must be clear (and computable).
Because an algorithm is a precise list of precise steps, the
order of computation is always crucial to the functioning
of the algorithm. Instructions are usually assumed to be

1.3. IMPLEMENTATION
listed explicitly, and are described as starting from the
top and going down to the bottom, an idea that is described more formally by ow of control.
So far, this discussion of the formalization of an algorithm has assumed the premises of imperative programming. This is the most common conception, and it attempts 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
derives from the intuition of "memory" as a scratchpad.
There is an example below of such an assignment.
For some alternate conceptions of what constitutes an algorithm see functional programming and logic programming.

1.2.1

1.3 Implementation

Vcc
Q
A
B
GND

Expressing algorithms

Algorithms can be expressed in many kinds of notation,


including natural languages, pseudocode, owcharts,
drakon-charts, programming languages or control tables
(processed by interpreters). Natural language expressions
of algorithms tend to be verbose and ambiguous, and are
rarely used for complex or technical algorithms. Pseudocode, owcharts, drakon-charts and control tables are
structured ways to express algorithms that avoid many of
the ambiguities common in natural language statements.
Programming languages are primarily intended for expressing algorithms in a form that can be executed by a
computer, but are often used as a way to dene or document algorithms.
There is a wide variety of representations possible and
one can express a given Turing machine program as
a sequence of machine tables (see more at nite state
machine, state transition table and control table), as
owcharts and drakon-charts (see more at state diagram),
or as a form of rudimentary machine code or assembly
code called sets of quadruples (see more at Turing machine).

Logical NAND algorithm implemented electronically in 7400


chip

Most algorithms are intended to be implemented as


computer programs. However, algorithms are also implemented by other means, such as in a biological neural
network (for example, the human brain implementing
arithmetic or an insect looking for food), in an electrical
circuit, or in a mechanical device.

1.4 Computer algorithms


In computer systems, an algorithm is basically an instance
of logic written in software by software developers to be
eective for the intended target computer(s) to produce
output from given (perhaps null) input. An optimal algorithm, even running in old hardware, would produce
faster results than a non-optimal (higher time complexity) algorithm for the same purpose, running in more efcient hardware; that is why algorithms, like computer
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 informally in Knuth and precisely in Chaitin:
1 High-level description "...prose to describe an algoKnuth: ". . .we want good algorithms in some
rithm, ignoring the implementation details. At this
loosely dened aesthetic sense. One criterion .
level we do not need to mention how the machine
. . is the length of time taken to perform the almanages its tape or head.
gorithm . . .. Other criteria are adaptability of
2 Implementation description "...prose used to dene
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 its the smallest possible program
3 Formal description Most detailed, lowest level,
for producing the output that it does[23]
gives the Turing machines state table.
Chaitin prefaces his denition 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).

CHAPTER 1. ALGORITHM
A computer (or human computor[25] ) is a restricted
type of machine, a discrete deterministic mechanical device[26] that blindly follows its instructions.[27]
Melzaks and Lambeks primitive models[28] reduced this
notion to four elements: (i) discrete, distinguishable locations, (ii) discrete, indistinguishable counters[29] (iii) an
agent, and (iv) a list of instructions that are eective relative to the capability of the agent.[30]
Minsky describes a more congenial variation of Lambeks abacus model in his Very Simple Bases for
Computability".[31] Minskys machine proceeds sequentially through its ve (or six, depending on how one
counts) instructions, unless either a conditional IF
THEN GOTO or an unconditional GOTO changes program ow out of sequence. Besides HALT, Minskys 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 instructions: conditional GOTO, unconditional GOTO, assignment/replacement/substitution, and HALT.[34]

Flowchart examples of the canonical Bhm-Jacopini structures:


the SEQUENCE (rectangles descending the page), the WHILEDO and the IF-THEN-ELSE. The three structures are made of
the primitive conditional GOTO (IF test=true THEN GOTO step
xxx) (a diamond), the unconditional GOTO (rectangle), various
assignment operators (rectangle), and HALT (rectangle). Nesting of these structures inside assignment-blocks result in complex
diagrams (cf Tausworthe 1977:100,114).

Algorithm versus function computable by an algorithm:


For a given function multiple algorithms may exist. This
is true, even without expanding the available instruction
set available to the programmer. Rogers observes that
It is . . . important to distinguish between the notion
of algorithm, i.e. procedure and the notion of function
computable by algorithm, i.e. mapping yielded by procedure. The same function may have several dierent
algorithms.[24]
Unfortunately there may be a tradeo between goodness
(speed) and elegance (compactness)an elegant program may take more steps to complete a computation
than one less elegant. An example that uses Euclids algorithm appears below.
Computers (and computors), models of computation:

Simulation of an algorithm: computer (computor) language: 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 eectively execute. Stone gives an example of this: when computing the roots of a quadratic equation the computor must
know how to take a square root. If they don't, then the
algorithm, to be eective, must provide a set of rules for
extracting a square root.[36]
This means that the programmer must know a language
that is eective relative to the target computing agent
(computer/computor).
But what model should be used for the simulation? Van
Emde Boas observes even if we base complexity theory
on abstract instead of concrete machines, arbitrariness of
the choice of a model remains. It is at this point that
the notion of simulation enters.[37] When speed is being
measured, the instruction set matters. For example, the
subprogram in Euclids algorithm to compute the remainder would execute much faster if the programmer had a
"modulus" instruction available rather than just subtraction (or worse: just Minskys decrement).
Structured programming, canonical structures: Per the
ChurchTuring thesis, any algorithm can be computed
by a model known to be Turing complete, and per
Minskys demonstrations, Turing completeness requires
only four instruction typesconditional GOTO, unconditional GOTO, assignment, HALT. Kemeny and Kurtz

1.5. EXAMPLES

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
1. If there are no numbers in the set then there is no
programs in a structured language.[38] Tausworthe aug[39]
highest number.
ments the three Bhm-Jacopini canonical structures:
SEQUENCE, IF-THEN-ELSE, and WHILE-DO, with
2. Assume the rst number in the set is the largest numtwo more: DO-WHILE and CASE.[40] An additional
ber in the set.
benet of a structured program is that it lends itself to
[41]
proofs of correctness using mathematical induction.
3. For each remaining number in the set: if this number
Canonical owchart symbols[42] : The graphical aide
is larger than the current largest number, consider
called a owchart oers 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 pro4. When there are no numbers left in the set to iterate
gram ow of a Minsky machine, a owchart always starts
over, consider the current largest number to be the
at the top of a page and proceeds down. Its primary symlargest number of the set.
bols are only four: the directed arrow showing program
ow, the rectangle (SEQUENCE, GOTO), the diamond
(IF-THEN-ELSE), and the dot (OR-tie). The Bhm (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
Algorithm LargestNumber Input: A list of numbers L.
shown in the diagram.
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

1.5.1

Algorithm example

that follows.

1.5.2 Euclids algorithm

An animation of the quicksort algorithm sorting an array of randomized values. The red bars mark the pivot element; at the start
of the animation, the element farthest to the right hand side is
chosen as the pivot.

Further information: Euclids algorithm


Euclids 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 nd their greatest
common measure. He denes A number [to be] a multitude composed of units": a counting number, a positive 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
qs, q being the quotient, or remainder r is the modulus,
the integer-fractional part left over after the division.[45]

For Euclids method to succeed, the starting lengths must


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 nd the largest num- must guarantee that the smaller of the two numbers is subber 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).

CHAPTER 1. ALGORITHM
Computer language for Euclids algorithm
Only a few instruction types are required to execute Euclids algorithmsome 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 written in lower case letter(s) and (usually) associated
with the locations name. For example, location L
at the start might contain the number l = 3009.
An inelegant program for Euclids algorithm

The example-diagram of Euclids algorithm from T.L. Heath


(1908), with more detail added. Euclid does not go beyond a
third measuring, and gives no numerical examples. Nicomachus
gives the example of 49 and 21: I subtract the less from the
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;
from which I again subtract 7 (for this is possible); 7 is left, but
7 cannot be subtracted from 7. Heath comments that, The last
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
number'."(Heath 1908:300).

The following algorithm is framed as Knuths four-step


version of Euclids and Nicomachus, but, rather than using division to nd the remainder, it uses successive subtractions of the shorter length s from the remaining length
r until r is less than s. The high-level description, shown
in boldface, is adapted from Knuth 1973:24:
INPUT:
1 [Into two locations L and S put the numbers l and s
that represent the two lengths]: INPUT L, S 2 [Initialize R: make the remaining length r equal to the starting/initial/input length l]: R L
E0: [Ensure r s.]

Euclids original proof adds a third requirement: the two


lengths must not be prime to one another. Euclid stipulated this so that he could construct a reductio ad absurdum proof that the two numbers common measure is in
fact the greatest.[46] While Nicomachus algorithm is the
same as Euclids, when the numbers are prime to one another, it yields the number 1 for their common measure.
So, to be precise, the following is really Nicomachus algorithm.

3 [Ensure the smaller of the two numbers is in S and the


larger in R]: IF R > S THEN the contents of L is the
larger number so skip over the exchange-steps 4, 5 and
6: GOTO step 6 ELSE swap the contents of R and S. 4
L R (this rst step is redundant, but is useful for later
discussion). 5 R S 6 S L
E1: [Find remainder]: Until the remaining length r in
R is less than the shorter length s in S, repeatedly subtract
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 measure was exact, the remainder in R is zero, and the program 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 CONTINUE TO step 11,

A graphical expression of Euclids algorithm to nd the greatest


common divisor for 1599 and 650.
1599 = 6502 + 299 650 = 2992 + 52 299 = 525 + 39 52
= 391 + 13 39 = 133 + 0

E3: [Interchange s and r]: The nut of Euclids algorithm. Use remainder r to measure what was previously
smaller number s; L serves as a temporary location.
11 L R 12 R S 13 S L 14 [Repeat the measuring
process]: GOTO 7

1.5. EXAMPLES

7
of instructions. The owchart of Elegant can be found
at the top of this article. In the (unstructured) Basic language, the steps are numbered, and the instruction LET
[] = [] is the assignment instruction symbolized by .
5 REM Euclids 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:
// Euclids algorithm for greatest common divisor integer 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 ( Dierence = 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 suce to conrm core functionality. One source[47] uses 3009 and 884. Knuth suggested 40902, 24140. Another interesting case is the two
relatively prime numbers 14157 and 5950.
But exceptional cases must be identied and tested. Will
Inelegant perform properly when R > S, S > R, R = S?
Ditto for Elegant": B > A, A > B, A = B? (Yes to all).
What happens when one number is zero, both numbers
are zero? (Inelegant computes forever in all cases; Elegant 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 com15 [Done. S contains the greatest common divisor]: puted by the algorithm/program, is to include only positive integers including zero, then the failures at zero indiPRINT S
cate that the algorithm (and the program that instantiates
DONE:
it) is a partial function rather than a total function. A notable failure due to exceptions is the Ariane 5 Flight 501
16 HALT, END, STOP.
rocket failure (4 June 1996).
Inelegant is a translation of Knuths version of the algorithm
with a subtraction-based remainder-loop replacing his use of division (or a modulus instruction). Derived from Knuth 1973:2
4. Depending on the two numbers Inelegant may compute the
g.c.d. in fewer steps than Elegant.

Proof of program correctness by use of mathematical induction: Knuth demonstrates the application of
mathematical induction to an extended version of EuThe following version of Euclids algorithm requires only clids algorithm, and he proposes a general method apsix 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
An elegant program for Euclids algorithm

8
of a program be the length of its correctness proof.[49]

CHAPTER 1. ALGORITHM
not counted, or O(n) if it is counted.

Dierent algorithms may complete the same task with a


dierent set of instructions in less or more time, space,
1.5.4 Measuring and improving the Euclid or 'eort' than others. For example, a binary search alalgorithms
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. However, 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, Proling (comerage 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
judges a program t and eectivethat is, it computes the function intended by its authorthen the question becomes, can it be improved?
The compactness of Inelegant can be improved by
the elimination of ve steps. But Chaitin proved that
compacting an algorithm cannot be automated by a
generalized algorithm;[51] rather, it can only be done
heuristically; i.e., by exhaustive search (examples to be
found at Busy beaver), trial and error, cleverness, insight, application of inductive reasoning, etc. Observe
that steps 4, 5 and 6 are repeated in steps 11, 12 and
13. Comparison with Elegant provides a hint that these
steps, together with steps 2 and 3, can be eliminated. This
reduces the number of core instructions from thirteen to
eight, which makes it more elegant than Elegant, at
nine steps.
The speed of Elegant can be improved by moving the
B=0?" test outside of the two subtraction loops. This
change calls for the addition of three instructions (B = 0?,
A = 0?, GOTO). Now Elegant computes the examplenumbers faster; whether this is always the case for any
given A, B and R, S would require a detailed analysis.

The analysis and study of algorithms is a discipline of


computer science, and is often practiced abstractly without the use of a specic programming language or implementation. In this sense, algorithm analysis resembles other mathematical disciplines in that it focuses on
the underlying properties of the algorithm and not on
the specics of any particular implementation. Usually
pseudocode is used for analysis as it is the simplest and
most general representation. However, ultimately, most
algorithms are usually implemented on particular hardware / software platforms and their algorithmic eciency
is eventually put to the test using real code. For the solution of a one o problem, the eciency of a particular
algorithm may not have signicant consequences (unless
n is extremely large) but for algorithms designed for fast
interactive, commercial or long life scientic usage it may
be critical. Scaling from small n to large n frequently exposes inecient algorithms that are otherwise benign.
Empirical testing is useful because it may uncover unexpected interactions that aect performance. Benchmarks
may be used to compare before/after potential improvements to an algorithm after program optimization.

1.6 Algorithmic analysis

1.6.2 Execution eciency

Main article: Analysis of algorithms

Main article: Algorithmic eciency

It is frequently important to know how much of a particular resource (such as time or storage) is theoretically
required for a given algorithm. Methods have been developed for the analysis of algorithms to obtain such quantitative answers (estimates); for example, the sorting algorithm above has a time requirement of O(n), using the big
O notation with n as the length of the list. At all times the
algorithm only needs to remember two values: the largest
number found so far, and its current position in the input
list. Therefore, it is said to have a space requirement of
O(1), if the space required to store the input numbers is

To illustrate the potential improvements possible even in


well established algorithms, a recent signicant innovation, relating to FFT algorithms (used heavily in the eld
of image processing), can decrease processing time up
to 1,000 times for applications like medical imaging.[52]
In general, speed improvements depend on special properties of the problem, which are very common in practical applications.[53] Speedups of this magnitude enable
computing devices that make extensive use of image processing (like digital cameras and medical equipment) to
consume less power.

1.7. CLASSIFICATION

1.7 Classication

9
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 alits own merits.
gorithms solve the problem with exact decision
at every step of the algorithm whereas nondeterministic algorithms solve problems via guess1.7.1 By implementation
ing although typical guesses are made more accurate
through the use of heuristics.
One way to classify algorithms is by implementation
means.

Exact or approximate While many algorithms reach an


exact solution, approximation algorithms seek an
approximation that is close to the true solution. Approximation may use either a deterministic or a random strategy. Such algorithms have practical value
for many hard problems.

Recursion A recursive algorithm is one that invokes


(makes reference to) itself repeatedly until a certain condition (also known as termination condition)
matches, which is a method common to functional
programming. Iterative algorithms use repetitive
constructs like loops and sometimes additional data Quantum algorithm They run on a realistic model of
quantum computation. The term is usually used for
structures like stacks to solve the given problems.
those algorithms which seem inherently quantum, or
Some problems are naturally suited for one impleuse some essential feature of quantum computation
mentation or the other. For example, towers of
such as quantum superposition or quantum entanHanoi is well understood using recursive implemenglement.
tation. Every recursive version has an equivalent
(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
as: Algorithm = logic + control.[54] The logic component expresses the axioms that may be used in
the computation and the control component determines the way in which deduction is applied to the
axioms. This is the basis for the logic programming
paradigm. In pure logic programming languages the
control component is xed and algorithms are specied by supplying only the logic component. The
appeal of this approach is the elegant semantics: a
change in the axioms has a well-dened change in
the algorithm.

Another way of classifying algorithms is by their design


methodology or paradigm. There is a certain number of
paradigms, each dierent from the other. Furthermore,
each of these categories include many dierent types of
algorithms. Some common paradigms are:
Brute-force or exhaustive search This is the naive
method of trying every possible solution to see
which is best.[55]
Divide and conquer A divide and conquer algorithm
repeatedly reduces an instance of a problem to one
or more smaller instances of the same problem (usually recursively) until the instances are small enough
to solve easily. One such example of divide and
conquer is merge sorting. Sorting can be done on
each segment of data after dividing data into segments and sorting of entire data can be obtained in
the conquer phase by merging the segments. A simpler variant of divide and conquer is called a decrease and conquer algorithm, that solves an identical subproblem and uses the solution of this subproblem to solve the bigger problem. Divide and
conquer divides the problem into multiple subproblems and so the conquer stage is more complex than
decrease and conquer algorithms. An example of
decrease and conquer algorithm is the binary search
algorithm.

Serial, parallel or distributed Algorithms are usually


discussed with the assumption that computers execute one instruction of an algorithm at a time. Those
computers are sometimes called serial computers.
An algorithm designed for such an environment is
called a serial algorithm, as opposed to parallel algorithms or distributed algorithms. Parallel algorithms take advantage of computer architectures
where several processors can work on a problem at
the same time, whereas distributed algorithms utilize multiple machines connected with a network.
Parallel or distributed algorithms divide the problem into more symmetrical or asymmetrical subproblems and collect the results back together. The
resource consumption in such algorithms is not only
processor cycles on each processor but also the communication overhead between the processors. Some Search and enumeration Many problems (such as
playing chess) can be modeled as problems on
sorting algorithms can be parallelized eciently, but
graphs. A graph exploration algorithm species
their communication overhead is expensive. Iterarules for moving around a graph and is useful for
tive algorithms are generally parallelizable. Some

10

CHAPTER 1. ALGORITHM
such problems. This category also includes search
algorithms, branch and bound enumeration and
backtracking.

such a problem if it can be proved that all restrictions for integer values are supercial, i.e., the solutions satisfy these restrictions anyway. In the general
case, a specialized algorithm or an algorithm that
nds approximate solutions is used, depending on
the diculty of the problem.

Randomized algorithm Such algorithms make some


choices randomly (or pseudo-randomly). They can
be very useful in nding approximate solutions for
problems where nding 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 apsolution to a problem can be constructed from opproximations 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 dierent 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, FloydWarshall
algorithm, the shortest path to a goal from a
vertex in a weighted graph can be found by using
1. Monte Carlo algorithms return a correct answer with
the shortest path to the goal from all adjacent
high-probability. E.g. RP is the subclass of these
vertices. Dynamic programming and memoization
that run in polynomial time.
go together. The main dierence between dynamic
programming and divide and conquer is that sub2. Las Vegas algorithms always return the correct anproblems are more or less independent in divide and
swer, but their running time is only probabilistically
conquer, whereas subproblems overlap in dynamic
bound, e.g. ZPP.
programming. The dierence between dynamic
programming and straightforward recursion is in
Reduction of complexity This technique involves solvcaching or memoization of recursive calls. When
ing a dicult problem by transforming it into a betsubproblems are independent and there is no repeter known problem for which we have (hopefully)
tition, memoization does not help; hence dynamic
asymptotically optimal algorithms. The goal is to
programming is not a solution for all complex
nd a reducing algorithm whose complexity is not
problems. By using memoization or maintaining
dominated by the resulting reduced algorithms. For
a table of subproblems already solved, dynamic
example, one selection algorithm for nding the meprogramming reduces the exponential nature of
dian in an unsorted list involves rst sorting the list
many problems to polynomial complexity.
(the expensive portion) and then pulling out the middle 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 condynamic 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 modications. For some problems
For optimization problems there is a more specic clasthey can nd the optimal solution while for others
sication 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 decannot be improved by the algorithm but are not opscribed above as well as into one of the following:
timum. The most popular use of greedy algorithms
is for nding the minimal spanning tree where ndLinear programming When searching for optimal soing the optimal solution is possible with this method.
lutions to a linear function bound to linear equalHuman Tree, Kruskal, Prim, Sollin are greedy ality and inequality constraints, the constraints of the
gorithms that can solve this optimization problem.
problem can be used directly in producing the opoptimization
problems,
timal solutions. There are algorithms that can solve The heuristic method In
heuristic algorithms can be used to nd a soluany problem in this category, such as the popular
simplex algorithm.[57] Problems that can be solved
tion close to the optimal solution in cases where
with linear programming include the maximum ow
nding the optimal solution is impractical. These
problem for directed graphs. If a problem additionalgorithms 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 classied in integer programrun for an innite amount of time, they will nd
ming. A linear programming algorithm can solve
the optimal solution. Their merit is that they can

1.8. CONTINUOUS ALGORITHMS


nd a solution very close to the optimal solution
in a relatively short time. Such algorithms include
local search, tabu search, simulated annealing, and
genetic algorithms. Some of them, like simulated
annealing, are non-deterministic algorithms while
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
approximation algorithm.

1.7.4

By eld of study

See also: List of algorithms


Every eld of science has its own problems and
needs ecient algorithms. Related problems in one
eld are often studied together.
Some example
classes are search algorithms, sorting algorithms, merge
algorithms, numerical algorithms, graph algorithms,
string algorithms, computational geometric algorithms,
combinatorial algorithms, medical algorithms, machine
learning, cryptography, data compression algorithms and
parsing techniques.
Fields tend to overlap with each other, and algorithm advances in one eld may improve those of other, sometimes completely unrelated, elds. For example, dynamic
programming was invented for optimization of resource
consumption in industry, but is now used in solving a
broad range of problems in many elds.

11
p. 107). This is closely related to the study of methods
of hypercomputation.

1.8 Continuous algorithms


The adjective continuous when applied to the word algorithm can mean:
An algorithm operating on data that represents continuous quantities, even though this data is represented by discrete approximationssuch algorithms
are studied in numerical analysis; or
An algorithm in the form of a dierential equation
that operates continuously on the data, running on
an analog computer.[58]

1.9 Legal issues


See also: Software patents for a general
overview of the patentability of software, including computer-implemented algorithms.

Algorithms, by themselves, are not usually patentable. In


the United States, a claim consisting solely of simple manipulations of abstract concepts, numbers, or signals does
not constitute processes (USPTO 2006), and hence algorithms are not patentable (as in Gottschalk v. Benson).
However, practical applications of algorithms are sometimes patentable. For example, in Diamond v. Diehr, the
1.7.5 By complexity
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
patenting of software is highly controversial, and there
ity
are highly criticized patents involving algorithms, especially data compression algorithms, such as Unisys' LZW
Algorithms can be classied 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 diering complexity, while other problems might have no algo- 1.10 Etymology
rithms or no known ecient 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-Khwrizm. Al-Khwrizm (Persian: ,
the problems themselves instead of the algorithms into c. 780850) 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 denition of algorithms that relaxes the common requirement that the
output of the algorithm that computes a function must
be determined after a nite number of steps. He denes a super-recursive class of algorithms as a class of
algorithms in which it is possible to compute functions
not computable by any Turing machine (Burgin 2005,

a region that was part of Greater Iran and is now in


Uzbekistan.[59][60] About 825, he wrote a treatise in the
Arabic language, which was translated into Latin in the
12th century under the title Algoritmi de numero Indorum.
This title means Algoritmi on the numbers of the Indians, where Algoritmi was the translators Latinization
of Al-Khwarizmis name.[61] Al-Khwarizmi was the most

12

CHAPTER 1. ALGORITHM

widely read mathematician in Europe in the late Middle


Ages, primarily through his other book, the Algebra.[62]
In late medieval Latin, algorismus, English 'algorism', the
corruption of his name, simply meant the decimal number system. In the 15th century, under the inuence
of the Greek word 'number' (cf. 'arithmetic'),
the Latin word was altered to algorithmus, and the corresponding English term 'algorithm' is rst attested in the
17th century; the modern sense was introduced in the
19th century.[63]

1.11.4 Mechanical contrivances with discrete states

The clock: Bolter credits the invention of the weightdriven clock as The key invention [of Europe in the Middle Ages]", in particular the verge escapement[68] that
provides us with the tick and tock of a mechanical clock.
The accurate automatic machine[69] led immediately
to mechanical automata" beginning in the 13th century
and nally to computational machinesthe dierence
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 rst creation of an algorithm intended
for processing on a computer Babbages analytical ennotion of algorithm
gine, the rst device considered a real Turing-complete
computer instead of just a calculator and is sometimes
1.11.1 Ancient Near East
called historys rst programmer as a result, though a
full implementation of Babbages 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 1870Stanley Jevons' logical abacus
in Introduction to Arithmetic by Nicomachus,[64][65]:Ch 9.2
and logical machine: The technical problem was to reand the Euclidean algorithm, which was rst described
duce Boolean equations when presented in a form similar
in Euclids 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 rst a simple abacus of slips of wood furto compute the time and place of signicant astronomical
nished with pins, contrived so that any part or class of the
[66]
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 ocks, their sacks
21 keys like those of a piano [etc] . . .. With this maof grain and their money the ancients used tallying: accuchine 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. 1641). the Royal Society.[72] Another logician John Venn, howTally marks appear prominently in unary numeral system ever, in his 1881 Symbolic Logic, turned a jaundiced eye
arithmetic used in Turing machine and PostTuring ma- to this eort: I have no high estimate myself of the interest or importance of what are sometimes called logchine computations.
ical machines ... it does not seem to me that any contrivances at present known or likely to be discovered re1.11.3 Manipulation of symbols as place ally deserve the name of logical machines"; see more at
Algorithm characterizations. But not to be outdone he
holders for numbers: algebra
too presented a plan somewhat analogous, I apprehend,
The work of the ancient Greek geometers (Euclidean al- to Prof. Jevons abacus ... [And] [a]gain, correspondgorithm), the Indian mathematician Brahmagupta, and ing to Prof. Jevonss logical machine, the following conthe 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
logical machine.[73]
Leibniz's notion of the calculus ratiocinator (ca 1680):
A good century and a half ahead of his
time, Leibniz proposed an algebra of logic, an
algebra that would specify the rules for manipulating logical concepts in the manner that ordinary algebra species the rules for manipulating numbers.[67]

Jacquard loom, Hollerith punch cards, telegraphy and


telephonythe electromechanical relay: Bell and Newell
(1971) indicate that the Jacquard loom (1801), precursor
to Hollerith cards (punch cards, 1887), and telephone
switching technologies were the roots of a tree leading to the development of the rst computers.[74] By the
mid-19th century the telegraph, the precursor of the tele-

1.11. HISTORY: DEVELOPMENT OF THE NOTION OF ALGORITHM


phone, was in use throughout the world, its discrete and
distinguishable encoding of letters as dots and dashes a
common sound. By the late 19th century the ticker tape
(ca 1870s) was in use, as was the use of Hollerith cards
in the 1890 U.S. census. Then came the teleprinter (ca.
1910) with its punched-paper use of Baudot code on tape.
Telephone-switching networks of electromechanical
relays (invented 1835) was behind the work of George
Stibitz (1937), the inventor of the digital adding device.
As he worked in Bell Laboratories, he observed the
burdensome' use of mechanical calculators with gears.
He went home one evening in 1937 intending to test
his idea... When the tinkering was over, Stibitz had
constructed a binary adding device.[75]
Davis (2000) observes the particular importance of the
electromechanical relay (with its two binary states open
and closed):
It was only with the development, beginning in
the 1930s, of electromechanical calculators using electrical relays, that machines were built
having the scope Babbage had envisioned.[76]

1.11.5

13

succeed). In rapid succession the following appeared:


Alonzo Church, Stephen Kleene and J.B. Rosser's calculus[80] a nely honed denition of general recursion from the work of Gdel acting on suggestions
of Jacques Herbrand (cf. Gdels Princeton lectures
of 1934) and subsequent simplications by Kleene.[81]
Churchs proof[82] that the Entscheidungsproblem was
unsolvable, Emil Post's denition of eective calculability as a worker mindlessly following a list of instructions to move left or right through a sequence of
rooms and while there either mark or erase a paper or
observe the paper and make a yes-no decision about
the next instruction.[83] Alan Turings proof of that the
Entscheidungsproblem was unsolvable by use of his a[automatic-] machine[84] in eect almost identical to
Posts formulation, J. Barkley Rosser's denition of
eective method in terms of a machine.[85] S. C.
Kleene's proposal of a precursor to "Church thesis" that
he called Thesis I,[86] and a few years later Kleenes
renaming his Thesis Churchs Thesis[87] and proposing
Turings Thesis.[88]

1.11.6 Emil Post (1936) and Alan Turing


(193637, 1939)

Mathematics during the 19th century up to the mid-20th century


Here is a remarkable coincidence of two men not know-

Symbols and rules: In rapid succession the mathematics


of George Boole (1847, 1854), Gottlob Frege (1879),
and Giuseppe Peano (18881889) reduced arithmetic to
a sequence of symbols manipulated by rules. Peanos The
principles of arithmetic, presented by a new method (1888)
was the rst attempt at an axiomatization of mathematics in a symbolic language.[77]

ing each other but describing a process of men-ascomputers working on computationsand they yield virtually identical denitions.
Emil Post (1936) described the actions of a computer
(human being) as follows:
"...two concepts are involved: that of a symbol
space in which the work leading from problem
to answer is to be carried out, and a xed unalterable set of directions.

But Heijenoort gives Frege (1879) this kudos: Freges is


perhaps the most important single work ever written in
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 specic symbols that
are manipulated according to denite rules.[78] The work
a two way innite sequence of spaces or
of Frege was further simplied and amplied 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 caMathematica (19101913).
pable of being in, and operating in but one box
at a time.... a box is to admit of but two possiThe paradoxes: At the same time a number of disturbble conditions, i.e., being empty or unmarked,
ing paradoxes appeared in the literature, in particular the
and having a single mark in it, say a vertical
Burali-Forti paradox (1897), the Russell paradox (1902
stroke.
03), and the Richard Paradox.[79] The resultant considerations led to Kurt Gdel's paper (1931)he specically cites the paradox of the liarthat completely reOne box is to be singled out and called the
duces rules of recursion to numbers.
starting point. ...a specic problem is to be
Eective calculability: In an eort to solve the
Entscheidungsproblem dened precisely by Hilbert in
1928, mathematicians rst set about to dene what was
meant by an eective method or eective calculation
or eective calculability (i.e., a calculation that would

given in symbolic form by a nite number


of boxes [i.e., INPUT] being marked with a
stroke. Likewise the answer [i.e., OUTPUT]
is to be given in symbolic form by such a conguration of marked boxes....

14

CHAPTER 1. ALGORITHM
A set of directions applicable to a general
problem sets up a deterministic process when
applied to each specic problem. This process
terminates only when it comes to the direction of type (C ) [i.e., STOP]".[89] See more
at PostTuring machine

of states of mind which need be taken into account is nite...


Let us imagine that the operations performed
by the computer to be split up into 'simple operations which are so elementary that it is not
easy to imagine them further divided.[93]
Turings 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.

Alan Turings statue at Bletchley Park.

Alan Turing's work[90] preceded that of Stibitz (1937);


it is unknown whether Stibitz knew of the work of Turing. Turings biographer believed that Turings use of
a typewriter-like model derived from a youthful interest: Alan had dreamt of inventing typewriters as a boy;
Mrs. Turing had a typewriter; and he could well have begun by asking himself what was meant by calling a typewriter 'mechanical'".[91] Given the prevalence of Morse
code and telegraphy, ticker tape machines, and teletypewriters we might conjecture that all were inuences.

It may be that some of these change necessarily invoke


a change of state of mind. The most general single operation must therefore be taken to be one of the following:
"(A) A possible change (a) of symbol together with a possible change
of state of mind.
"(B) A possible change (b) of observed squares, together with a possible change of state of mind
We may now construct a machine to do the
work of this computer.[93]

Turinghis model of computation is now called a Turing


machinebegins, as did Post, with an analysis of a human 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 denition) with this forceful expression of it:
step further and creates a machine as a model of computation of numbers.[92]
A function is said to be eectively calculaComputing is normally done by writing certain symbols on paper. We may suppose this
paper is divided into squares like a childs arithmetic book....I assume then that the computation is carried out on one-dimensional paper,
i.e., on a tape divided into squares. I shall also
suppose that the number of symbols which may
be printed is nite....
The behaviour of the computer at any moment
is determined by the symbols which he is observing, and his state of mind at that moment.
We may suppose that there is a bound B to the
number of symbols or squares which the computer can observe at one moment. If he wishes
to observe more, he must use successive observations. We will also suppose that the number

ble if its values can be found by some purely


mechanical process. Though it is fairly easy to
get an intuitive grasp of this idea, it is nevertheless desirable to have some more denite,
mathematical expressible denition . . . [he
discusses the history of the denition pretty
much as presented above with respect to Gdel,
Herbrand, Kleene, Church, Turing and Post]
. . . We may take this statement literally,
understanding by a purely mechanical process
one which could be carried out by a machine.
It is possible to give a mathematical description, in a certain normal form, of the structures of these machines. The development of
these ideas leads to the authors denition of
a computable function, and to an identication
of computability with eective calculability
....

1.12. SEE ALSO


" We shall use the expression
computable function to mean a
function calculable by a machine,
and we let eectively calculable
refer to the intuitive idea without
particular identication with any
one of these denitions.[94]

1.11.7

15

1.11.8 History after 1950


A number of eorts have been directed toward further
renement of the denition of algorithm, and activity is on-going because of issues surrounding, in particular, foundations of mathematics (especially the Church
Turing thesis) and philosophy of mind (especially arguments about articial intelligence). For more, see
Algorithm characterizations.

J. B. Rosser (1939) and S. C. Kleene


(1943)
1.12

J. Barkley Rosser dened an 'eective [mathematical]


method' in the following manner (italicization added):

See also

Abstract machine
Algorithm engineering

"'Eective method' is used here in the rather


special sense of a method each step of which
is precisely determined and which is certain
to produce the answer in a nite number of
steps. With this special meaning, three different precise denitions have been given to
date. [his footnote #5; see discussion immediately below]. The simplest of these to state
(due to Post and Turing) says essentially that an
eective method of solving certain sets of problems exists if one can build a machine which will
then solve any problem of the set with no human
intervention beyond inserting the question and
(later) reading the answer. All three denitions are equivalent, so it doesn't matter which
one is used. Moreover, the fact that all three
are equivalent is a very strong argument for the
correctness of any one. (Rosser 1939:2256)

Algorithm characterizations
Algorithmic composition
Algorithmic synthesis
Algorithmic trading
Garbage in, garbage out
Introduction to Algorithms
List of algorithm general topics
List of important publications in theoretical computer science Algorithms
Numerical Mathematics Consortium
Theory of computation
Computability theory
Computational complexity theory

Rossers footnote #5 references the work of (1) Church


and Kleene and their denition of -denability, in particular Churchs use of it in his An Unsolvable Problem
of Elementary Number Theory (1936); (2) Herbrand and
Gdel and their use of recursion in particular Gdels
use in his famous paper On Formally Undecidable Propositions of Principia Mathematica and Related Systems I
(1931); and (3) Post (1936) and Turing (19367) in their
mechanism-models of computation.
Stephen C. Kleene dened as his now-famous Thesis I
known as the ChurchTuring thesis. But he did this in
the following context (boldface in original):
12. Algorithmic theories... In setting up a complete algorithmic theory, what we do is to describe a procedure, performable for each set of
values of the independent variables, which procedure necessarily terminates and in such manner that from the outcome we can read a denite answer, yes or no, to the question, is
the predicate value true?"" (Kleene 1943:273)

1.13 Notes
[1] Any classical mathematical algorithm, for example, can
be described in a nite number of English words (Rogers
1987:2).
[2] Well dened with respect to the agent that executes the
algorithm: There is a computing agent, usually human,
which can react to the instructions and carry out the computations (Rogers 1987:2).
[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
generality, (Rogers 1987:1).
[4] An algorithm has zero or more inputs, i.e., quantities
which are given to it initially before the algorithm begins
(Knuth 1973:5).
[5] A procedure which has all the characteristics of an algorithm except that it possibly lacks niteness may be called
a 'computational method'" (Knuth 1973:5).

16

CHAPTER 1. ALGORITHM

[6] An algorithm has one or more outputs, i.e. quantities which have a specied relation to the inputs (Knuth
1973:5).

[27] A robot": A computer is a robot that performs any task


that can be described as a sequence of instructions. cf
Stone 1972:3

[7] Whether or not a process with random interior processes


(not including the input) is an algorithm is debatable.
Rogers opines that: a computation is carried out in a discrete stepwise fashion, without use of continuous methods
or analogue devices . . . carried forward deterministically,
without resort to random methods or devices, e.g., dice
Rogers 1987:2.

[28] Lambeks abacus is a countably innite number of locations (holes, wires etc.) together with an unlimited supply of counters (pebbles, beads, etc). The locations are
distinguishable, the counters are not. The holes have
unlimited capacity, and standing by is an agent who understands and is able to carry out the list of instructions
(Lambek 1961:295). Lambek references Melzak who denes his Q-machine as an indenitely large number of
locations . . . an indenitely large supply of counters
distributed among these locations, a program, and an operator whose sole purpose is to carry out the program
(Melzak 1961:283). B-B-J (loc. cit.) add the stipulation that the holes are capable of holding any number of
stones (p. 46). Both Melzak and Lambek appear in The
Canadian Mathematical Bulletin, vol. 4, no. 3, September
1961.

[8] Kleene 1943 in Davis 1965:274


[9] Rosser 1939 in Davis 1965:225
[10] Moschovakis, Yiannis N. (2001). What is an algorithm?". In Engquist, B.; Schmid, W. Mathematics Unlimited 2001 and beyond. Springer. pp. 919936 (Part
II). ISBN 9783540669135.
[11] Stone 1973:4
[12] Stone simply requires that it must terminate in a nite
number of steps (Stone 1973:78).
[13] Boolos and Jerey 1974,1999:19
[14] cf Stone 1972:5

[29] If no confusion results, the word counters can be


dropped, and a location can be said to contain a single
number.
[30] We say that an instruction is eective if there is a procedure that the robot can follow in order to determine precisely how to obey the instruction. (Stone 1972:6)

[15] Knuth 1973:7 states: In practice we not only want algorithms, we want good algorithms ... one criterion of goodness is the length of time taken to perform the algorithm
... other criteria are the adaptability of the algorithm to
computers, its simplicity and elegance, etc.

[31] cf Minsky 1967: Chapter 11 Computer models and


Chapter 14 Very Simple Bases for Computability pp.
255281 in particular

[16] cf Stone 1973:6

[33] But always preceded by IFTHEN to avoid improper subtraction.

[17] Stone 1973:78 states that there must be, "...a procedure
that a robot [i.e., computer] can follow in order to determine precisely how to obey the instruction. Stone adds
niteness of the process, and deniteness (having no ambiguity in the instructions) to this denition.
[18] Knuth, loc. cit
[19] Minsky 1967, p. 105
[20] Gurevich 2000:1, 3
[21] Sipser 2006:157
[22] Knuth 1973:7
[23] Chaitin 2005:32

[32] cf Knuth 1973:3.

[34] However, a few dierent assignment instructions (e.g.


DECREMENT, INCREMENT and
ZERO/CLEAR/EMPTY for a Minsky machine)
are also required for Turing-completeness; their exact
specication is somewhat up to the designer. The unconditional GOTO is a convenience; it can be constructed
by initializing a dedicated location to zero e.g. the
instruction " Z 0 "; thereafter the instruction IF Z=0
THEN GOTO xxx is unconditional.
[35] Knuth 1973:4
[36] Stone 1972:5. Methods for extracting roots are not trivial:
see Methods of computing square roots.

[24] Rogers 1987:12

[37] Leeuwen, Jan (1990). Handbook of Theoretical Computer


Science: Algorithms and complexity. Volume A. Elsevier.
p. 85. ISBN 978-0-444-88071-0.

[25] In his essay Calculations by Man and Machine: Conceptual Analysis Seig 2002:390 credits this distinction
to Robin Gandy, cf Wilfred Seig, et al., 2002 Reections
on the foundations of mathematics: Essays in honor of
Solomon Feferman, Association for Symbolic Logic, A.
K Peters Ltd, Natick, MA.

[38] John G. Kemeny and Thomas E. Kurtz 1985 Back to


Basic: The History, Corruption, and Future of the Language, Addison-Wesley Publishing Company, Inc. Reading, MA, ISBN 0-201-13433-0.

[26] cf Gandy 1980:126, Robin Gandy Churchs Thesis and


Principles for Mechanisms appearing on pp. 123148 in
J. Barwise et al. 1980 The Kleene Symposium, NorthHolland Publishing Company.

[39] Tausworthe 1977:101


[40] Tausworthe 1977:142
[41] Knuth 1973 section 1.2.1, expanded by Tausworthe 1977
at pages 100 and Chapter 9.1

1.13. NOTES

17

[42] cf Tausworthe 1977


[43] Heath 1908:300; Hawkings Dover 2005 edition derives
from Heath.
[44] " 'Let CD, measuring BF, leave FA less than itself.' This is
a neat abbreviation for saying, measure along BA successive lengths equal to CD until a point F is reached such that
the length FA remaining is less than CD; in other words,
let BF be the largest exact multiple of CD contained in
BA (Heath 1908:297)

[60] Oaks, Jerey A. Was al-Khwarizmi an applied algebraist?". University of Indianapolis. Retrieved 2008-0530.
[61] Brezina, Corona (2006). Al-Khwarizmi: The Inventor Of
Algebra. The Rosen Publishing Group. ISBN 978-14042-0513-0.
[62] Foremost mathematical texts in history, according to Carl
B. Boyer.
[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
1), plus more discussion of Euclids algorithm in Knuth
1969:293297 (Volume 2).
[46] Euclid covers this question in his Proposition 1.
[47] Euclids Elements, Book VII, Proposition
Aleph0.clarku.edu. Retrieved May 20, 2012.

2.

[48] Knuth 1973:1318. He credits the formulation of


algorithm-proving in terms of asertions and induction to
R. W. Floyd, Peter Naur, C. A. R. Hoare, H. H. Goldstine
and J. von Neumann. Tausworth 1977 borrows Knuths
Euclid example and extends Knuths method in section 9.1
Formal Proofs (pages 288298).
[49] Tausworthe 1997:294
[50] cf Knuth 1973:7 (Vol. I), and his more-detailed analyses
on pp. 1969:294-313 (Vol II).
[51] Breakdown occurs when an algorithm tries to compact itself. Success would solve the Halting problem.
[52] Gillian Conahan (January 2013). Better Math Makes
Faster Data Networks. discovermagazine.com.
[53] Haitham Hassanieh, Piotr Indyk, Dina Katabi, and Eric
Price, "ACM-SIAM Symposium On Discrete Algorithms
(SODA), Kyoto, January 2012. See also the sFFT Web
Page.
[54] Kowalski 1979
[55] Carroll, Sue; Daughtrey, Taz (July 4, 2007). Fundamental
Concepts for the Software Quality Engineer. American Society for Quality. pp. 282 et seq. ISBN 978-0-87389720-4.
[56] For instance, the volume of a convex polytope (described
using a membership oracle) can be approximated to high
accuracy by a randomized polynomial time algorithm, but
not by a deterministic one: see Dyer, Martin; Frieze, Alan;
Kannan, Ravi (January 1991), A Random Polynomialtime Algorithm for Approximating the Volume of Convex
Bodies, J. ACM, New York, NY, USA: ACM, 38 (1): 1
17, doi:10.1145/102782.102783.

[64] Eratosthenes.
[65] Cooke, Roger L. (2005). The History of Mathematics: A
Brief Course. John Wiley & Sons. ISBN 9781118460290.
[66] Aaboe, Asger (2001), Episodes from the Early History of
Astronomy, New York: Springer, pp. 4062, ISBN 0387-95136-9
[67] Davis 2000:18
[68] Bolter 1984:24
[69] Bolter 1984:26
[70] Bolter 1984:3334, 204206.
[71] All quotes from W. Stanley Jevons 1880 Elementary
Lessons in Logic: Deductive and Inductive, Macmillan and
Co., London and New York. Republished as a googlebook; cf Jevons 1880:199201. Louis Couturat 1914 the
Algebra of Logic, The Open Court Publishing Company,
Chicago and London. Republished as a googlebook; cf
Couturat 1914:7576 gives a few more details; interestingly he compares this to a typewriter as well as a piano.
Jevons states that the account is to be found at Jan . 20,
1870 The Proceedings of the Royal Society.
[72] Jevons 1880:199200
[73] All quotes from John Venn 1881 Symbolic Logic, Macmillan and Co., London. Republished as a googlebook. cf
Venn 1881:120125. The interested reader can nd a
deeper explanation in those pages.
[74] Bell and Newell diagram 1971:39, cf. Davis 2000
[75]

Melina Hill, Valley News Correspondent, A Tinkerer Gets a Place in History, Valley News West
Lebanon NH, Thursday March 31, 1983, page 13.

[76] Davis 2000:14


[77] van Heijenoort 1967:81
[78] van Heijenoorts commentary on Freges Begrisschrift,
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:3640

[58] Tsypkin (1971). Adaptation and learning in automatic systems. Academic Press. p. 54. ISBN 978-0-08-095582-7.

[80] cf. footnote in Alonzo Church 1936a in Davis 1965:90


and 1936b in Davis 1965:110

[59] Hogendijk, Jan P. (1998). al-Khwarzimi. Pythagoras.


38 (2): 45. Archived from the original on April 12, 2009.

[81] Kleene 19356 in Davis 1965:237, Kleene 1943 in


Davis 1965:255

18

[82] Church 1936 in Davis 1965:88


[83] cf. Formulation I, Post 1936 in Davis 1965:289290
[84] Turing 19367 in Davis 1965:116
[85] Rosser 1939 in Davis 1965:226
[86] Kleene 1943 in Davis 1965:273274
[87] Kleene 1952:300, 317
[88] Kleene 1952:376
[89] Turing 19367 in Davis 1965:289290
[90] Turing 1936 in Davis 1965, Turing 1939 in Davis
1965:160
[91] Hodges, p. 96
[92] Turing 19367:116
[93] Turing 19367 in Davis 1965:136
[94] Turing 1939 in Davis 1965:160

1.14 References
Axt, P (1959). On a Subrecursive Hierarchy
and Primitive Recursive Degrees. Transactions of
the American Mathematical Society. 92: 85105.
doi:10.2307/1993169.
Bell, C. Gordon and Newell, Allen (1971), Computer Structures: Readings and Examples, McGraw
Hill Book Company, New York. ISBN 0-07004357-4.
Bellah, Robert Neelly (1985). Habits of the Heart:
Individualism and Commitment in American Life.
Berkeley: University of California Press. ISBN
978-0-520-25419-0.
Blass, Andreas;
Gurevich, Yuri (2003).
Algorithms: A Quest for Absolute Denitions (PDF). Bulletin of European Association for
Theoretical Computer Science. 81. Includes an
excellent bibliography of 56 references.
Boolos, George; Jerey, Richard (1999) [1974].
Computability and Logic (4th ed.). Cambridge University Press, London. ISBN 0-521-20402-X.: cf.
Chapter 3 Turing machines where they discuss certain enumerable sets not eectively (mechanically)
enumerable.
Burgin, Mark (2004). Super-Recursive Algorithms.
Springer. ISBN 978-0-387-95569-8.
Campagnolo, M.L., Moore, C., and Costa, J.F.
(2000) An analog characterization of the subrecursive functions. In Proc. of the 4th Conference on
Real Numbers and Computers, Odense University,
pp. 91109

CHAPTER 1. ALGORITHM
Church, Alonzo (1936a). An Unsolvable Problem of Elementary Number Theory. The American Journal of Mathematics. 58 (2): 345363.
doi:10.2307/2371045. JSTOR 2371045. Reprinted
in The Undecidable, p. 89. The rst expression of
Churchs Thesis. See in particular page 100 (The
Undecidable) where he denes the notion of eective calculability in terms of an algorithm, and he
uses the word terminates, etc.
Church, Alonzo (1936b). A Note on the Entscheidungsproblem. The Journal of Symbolic Logic.
1 (1): 4041. doi:10.2307/2269326. JSTOR
2269326. Church, Alonzo (1936). Correction
to a Note on the Entscheidungsproblem. The
Journal of Symbolic Logic. 1 (3): 101102.
doi:10.2307/2269030. JSTOR 2269030. Reprinted
in The Undecidable, p. 110. Church shows that
the Entscheidungsproblem is unsolvable in about 3
pages of text and 3 pages of footnotes.
Daa', Ali Abdullah al- (1977). The Muslim contribution to mathematics. London: Croom Helm.
ISBN 0-85664-464-1.
Davis, Martin (1965). The Undecidable: Basic Papers On Undecidable Propositions, Unsolvable Problems and Computable Functions. New York: Raven
Press. ISBN 0-486-43228-9. Davis gives commentary before each article. Papers of Gdel, Alonzo
Church, Turing, Rosser, Kleene, and Emil Post are
included; those cited in the article are listed here by
authors name.
Davis, Martin (2000). Engines of Logic: Mathematicians and the Origin of the Computer. New York:
W. W. Nortion. ISBN 0-393-32229-7. Davis offers concise biographies of Leibniz, Boole, Frege,
Cantor, Hilbert, Gdel and Turing with von Neumann as the show-stealing villain. Very brief bios
of Joseph-Marie Jacquard, Babbage, Ada Lovelace,
Claude Shannon, Howard Aiken, etc.

This article incorporates public domain material from the NIST document: Black, Paul E.
algorithm. Dictionary of Algorithms and Data
Structures.

Dean, Tim (2012). Evolution and moral diversity. Baltic International Yearbook of Cognition,
Logic and Communication. 7.
Dennett, Daniel (1995). Darwins Dangerous Idea.
New York: Touchstone/Simon & Schuster. ISBN
0-684-80290-2.
Yuri Gurevich, Sequential Abstract State Machines
Capture Sequential Algorithms, ACM Transactions
on Computational Logic, Vol 1, no 1 (July 2000),
pages 77111. Includes bibliography of 33 sources.

1.14. REFERENCES
Hertzke, Allen D.; McRorie, Chris (1998). The
Concept of Moral Ecology. In Lawler, Peter Augustine; McConkey, Dale. Community and Political
Thought Today. Westport, CT: Praeger.
Kleene, Stephen C. (1936).
General Recursive Functions of Natural Numbers.
Mathematische Annalen.
112 (5): 727742.
doi:10.1007/BF01565439.
Presented to the
American Mathematical Society, September 1935.
Reprinted in The Undecidable, p. 237. Kleenes
denition of general recursion (known now as
mu-recursion) was used by Church in his 1935 paper An Unsolvable Problem of Elementary Number
Theory that proved the decision problem to be
undecidable (i.e., a negative result).
Kleene, Stephen C. (1943). Recursive Predicates and Quantiers.
American Mathematical Society Transactions.
54 (1): 4173.
doi:10.2307/1990131. JSTOR 1990131. Reprinted
in The Undecidable, p. 255. Kleene rened his
denition of general recursion and proceeded in
his chapter 12. Algorithmic theories to posit
Thesis I (p. 274); he would later repeat this thesis
(in Kleene 1952:300) and name it Churchs Thesis"(Kleene 1952:317) (i.e., the Church thesis).
Kleene, Stephen C. (1991) [1952]. Introduction to Metamathematics (Tenth ed.).
NorthHolland Publishing Company. ISBN 0-7204-21039.
Excellentaccessible, readablereference
source for mathematical foundations.
Knuth, Donald (1997). Fundamental Algorithms,
Third Edition. Reading, Massachusetts: Addison
Wesley. ISBN 0-201-89683-4.
Knuth, Donald (1969). Volume 2/Seminumerical Algorithms, The Art of Computer Programming First
Edition. Reading, Massachusetts: AddisonWesley.
Kosovsky, N. K. Elements of Mathematical Logic
and its Application to the theory of Subrecursive Algorithms, LSU Publ., Leningrad, 1981
Kowalski,
Robert
(1979).
AlgoCommunications
rithm=Logic+Control.
of
the
ACM.
22
(7):
424436.
doi:10.1145/359131.359136.
A. A. Markov (1954) Theory of algorithms. [Translated by Jacques J. Schorr-Kon and PST sta] Imprint Moscow, Academy of Sciences of the USSR,
1954 [i.e., Jerusalem, Israel Program for Scientic Translations, 1961; available from the Ofce of Technical Services, U.S. Dept. of Commerce, Washington] Description 444 p. 28 cm.
Added t.p. in Russian Translation of Works of the
Mathematical Institute, Academy of Sciences of the
USSR, v. 42. Original title: Teoriya algerifmov.

19
[QA248.M2943 Dartmouth College library. U.S.
Dept. of Commerce, Oce of Technical Services,
number OTS 60-51085.]
Minsky, Marvin (1967). Computation: Finite and
Innite Machines (First ed.). Prentice-Hall, Englewood Clis, NJ. ISBN 0-13-165449-7. Minsky
expands his "...idea of an algorithman eective
procedure... in chapter 5.1 Computability, Eective
Procedures and Algorithms. Innite machines.
Post, Emil (1936). Finite Combinatory Processes,
Formulation I. The Journal of Symbolic Logic.
1 (3): 103105. doi:10.2307/2269031. JSTOR
2269031. Reprinted in The Undecidable, p. 289.
Post denes a simple algorithmic-like process of a
man writing marks or erasing marks and going from
box to box and eventually halting, as he follows a
list of simple instructions. This is cited by Kleene as
one source of his Thesis I, the so-called Church
Turing thesis.
Rogers, Jr, Hartley (1987). Theory of Recursive
Functions and Eective Computability. The MIT
Press. ISBN 0-262-68052-1.
Rosser, J.B. (1939). An Informal Exposition of
Proofs of Godels Theorem and Churchs Theorem. Journal of Symbolic Logic. 4: 5360.
doi:10.2307/2269059. Reprinted in The Undecidable, p. 223. Herein is Rossers famous denition of eective method": "...a method each step
of which is precisely predetermined and which is
certain to produce the answer in a nite number of
steps... a machine which will then solve any problem
of the set with no human intervention beyond inserting the question and (later) reading the answer (p.
225226, The Undecidable)
Santos-Lang, Christopher (2014). Moral Ecology Approaches to Machine Ethics. In van Rysewyk, Simon; Pontier, Matthijs. Machine Medical
Ethics (PDF). Switzerland: Springer. pp. 111127.
doi:10.1007/978-3-319-08108-3_8.
Scott, Michael L. (2009). Programming Language
Pragmatics (3rd ed.). Morgan Kaufmann Publishers/Elsevier. ISBN 978-0-12-374514-9.
Sipser, Michael (2006). Introduction to the Theory
of Computation. PWS Publishing Company. ISBN
0-534-94728-X.
Sober, Elliott; Wilson, David Sloan (1998). Unto
Others: The Evolution and Psychology of Unselsh
Behavior. Cambridge: Harvard University Press.
Stone, Harold S. (1972). Introduction to Computer Organization and Data Structures (1972 ed.).
McGraw-Hill, New York. ISBN 0-07-061726-0.
Cf. in particular the rst chapter titled: Algorithms,

20

CHAPTER 1. ALGORITHM
Turing Machines, and Programs. His succinct informal denition: "...any sequence of instructions that
can be obeyed by a robot, is called an algorithm" (p.
4).

Tausworthe, Robert C (1977). Standardized Development of Computer Software Part 1 Methods. Englewood Clis NJ: PrenticeHall, Inc. ISBN 0-13842195-1.
Turing, Alan M. (193637). On Computable
Numbers, With An Application to the Entscheidungsproblem.
Proceedings of the London
Mathematical Society, Series 2. 42: 230265.
doi:10.1112/plms/s2-42.1.230.. Corrections, ibid,
vol. 43(1937) pp. 544546. Reprinted in The
Undecidable, p. 116. Turings famous paper
completed as a Masters dissertation while at Kings
College Cambridge UK.
Turing, Alan M. (1939). Systems of Logic Based
on Ordinals. Proceedings of the London Mathematical Society. 45: 161228. doi:10.1112/plms/s245.1.161. Reprinted in The Undecidable, p. 155.
Turings paper that dened the oracle was his PhD
thesis while at Princeton USA.
Wallach, Wendell; Allen, Colin (November 2008).
Moral Machines: Teaching Robots Right from
Wrong. USA: Oxford University Press. ISBN 9780-19-537404-9.
United States Patent and Trademark Oce
(2006), 2106.02 **>Mathematical Algorithms:
2100 Patentability, Manual of Patent Examining
Procedure (MPEP). Latest revision August 2006

1.15 Further reading


Jean Luc Chabert (1999). A History of Algorithms:
From the Pebble to the Microchip. Springer Verlag.
ISBN 978-3-540-63369-3.
Algorithmics.: The Spirit of Computing. AddisonWesley. 2004. ISBN 978-0-321-11784-7.
Knuth, Donald E. (2000). Selected Papers on Analysis of Algorithms. Stanford, California: Center for
the Study of Language and Information.
Knuth, Donald E. (2010). Selected Papers on Design
of Algorithms. Stanford, California: Center for the
Study of Language and Information.
Berlinski, David (2001). The Advent of the Algorithm: The 300-Year Journey from an Idea to
the Computer. Harvest Books. ISBN 978-0-15601391-8.
Thomas H. Cormen; Charles E. Leiserson; Ronald
L. Rivest; Cliord Stein (2009). Introduction To
Algorithms, Third Edition. MIT Press. ISBN 9780262033848.

1.16 External links


Hazewinkel, Michiel, ed. (2001), Algorithm,
Encyclopedia of Mathematics, Springer, ISBN 9781-55608-010-4
Algorithms at DMOZ
Weisstein, Eric W. Algorithm. MathWorld.

1.14.1

Secondary references

Bolter, David J. (1984). Turings Man: Western Culture in the Computer Age (1984 ed.). The University
of North Carolina Press, Chapel Hill NC. ISBN 08078-1564-0., ISBN 0-8078-4108-0 pbk.
Dilson, Jesse (2007). The Abacus ((1968,1994)
ed.). St. Martins Press, NY. ISBN 0-312-10409X., ISBN 0-312-10409-X (pbk.)
van Heijenoort, Jean (2001). From Frege to Gdel,
A Source Book in Mathematical Logic, 18791931
((1967) ed.). Harvard University Press, Cambridge,
MA. ISBN 0-674-32449-8., 3rd edition 1976[?],
ISBN 0-674-32449-8 (pbk.)
Hodges, Andrew (1983). Alan Turing: The Enigma
((1983) ed.). Simon and Schuster, New York. ISBN
0-671-49207-1., ISBN 0-671-49207-1. Cf. Chapter The Spirit of Truth for a history leading to, and
a discussion of, his proof.

Dictionary of Algorithms and Data Structures


National Institute of Standards and Technology
Algorithms and Data Structures by Dr Nikolai
Bezroukov
Algorithm repositories
The Stony Brook Algorithm RepositoryState
University of New York at Stony Brook
Netlib RepositoryUniversity of Tennessee and
Oak Ridge National Laboratory
Collected Algorithms of the ACMAssociation for
Computing Machinery
The Stanford GraphBaseStanford University
CombinatoricaUniversity of Iowa and State University of New York at Stony Brook

1.16. EXTERNAL LINKS

21

Library of Ecient Datastructures and Algorithms


(LEDA)previously from Max-Planck-Institut fr
Informatik
Lecture notes
Algorithms Course Materials.
University of Illinois.

Je Erickson.

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
understanding by the receiver of a message including
them. Analogy is important not only in ordinary language and common sense (where proverbs and idioms
give many examples of its application) but also in
science, philosophy, and the humanities. The concepts of
association, comparison, correspondence, mathematical
and morphological homology, homomorphism, iconicity,
isomorphism, metaphor, resemblance, and similarity are
closely related to analogy. In cognitive linguistics, the notion of conceptual metaphor may be equivalent to that of
analogy.

Analogy (from Greek ,


analogia,
proportion[1][2] ) is a cognitive process of transferring information or meaning from a particular subject
(the analogue or source) to another (the target), or a
linguistic expression corresponding to such a process. In
a narrower sense, analogy is an inference or an argument
from one particular to another particular, as opposed to
deduction, induction, and abduction, where at least one
of the premises or the conclusion is general. The word
analogy can also refer to the relation between the source
and the target themselves, which is often, though not
necessarily, a similarity, as in the biological notion of
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 analn =3
of orbits
ogy, most notably in cognitive science.
n =2

2.1 Usage of the terms source


and target

n =1

With respect to the terms source and target there are two
distinct traditions of usage:
A photon is emitted
with energy E = hf

The logical and cultures and economics tradition


speaks of an arrow, homomorphism, mapping, or
morphism from what is typically the more complex
domain or source to what is typically the less complex codomain or target, using all of these words in
the sense of mathematical category theory.

Rutherfords model of the atom (modied by Niels Bohr) made


an analogy between the atom and the solar system.

Analogy plays a signicant role in problem solving such


as, decision making, perception, memory, creativity,
emotion, explanation, and communication. It lies behind basic tasks such as the identication of places, objects and people, for example, in face perception and
facial recognition systems. It has been argued that
analogy is the core of cognition.[3] Specic analogical language comprises exemplication, comparisons,

The tradition in cognitive psychology, in literary theory, and in specializations within philosophy outside
of logic, speaks of a mapping from what is typically
the more familiar area of experience, the source, to
what is typically the more problematic area of experience, the target.

2.2 Models and theories

22

2.2. MODELS AND THEORIES

2.2.1

Identity of relation

In ancient Greek the word (analogia) originally meant proportionality, in the mathematical sense,
and it was indeed sometimes translated to Latin as proportio. From there analogy was understood as identity of
relation between any two ordered pairs, whether of mathematical nature or not. Kants Critique of Judgment held
to this notion. Kant argued that there can be exactly the
same relation between two completely dierent objects.
The same notion of analogy was used in the US-based
SAT tests, that included analogy questions in the form
A is to B as C is to what?" For example, Hand is to palm
as foot is to ____?" These questions were usually given in
the Aristotelian format: HAND : PALM : : FOOT : ____
While most competent English speakers will immediately
give the right answer to the analogy question (sole), it is
more dicult to identify and describe the exact relation
that holds both between pairs such as hand and palm, and
between foot and sole. This relation is not apparent in
some lexical denitions of palm and sole, where the former is dened as the inner surface of the hand, and the
latter as the underside of the foot. Analogy and abstraction
are dierent cognitive processes, and analogy is often an
easier one. This analogy is not comparing all the properties between a hand and a foot, but rather comparing the
relationship between a hand and its palm to a foot and its
sole.[4] While a hand and a foot have many dissimilarities,
the analogy focuses on their similarity in having an inner
surface. A computer algorithm has achieved human-level
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 between the pairs HAND:PALM and FOOT:SOLE) by statistical analysis of a large collection of text. It answers
SAT questions by selecting the choice with the highest
relational similarity.[5]

2.2.2

Shared abstraction

23
necessarily a relation, but also an idea, a pattern, a regularity, an attribute, an eect or a philosophy. These
authors also accepted that comparisons, metaphors and
images (allegories) could be used as arguments, and
sometimes they called them analogies. Analogies should
also make those abstractions easier to understand and give
condence to the ones using them.
The Middle Age saw an increased use and theorization of
analogy. Roman lawyers had already used analogical reasoning and the Greek word analogia. Medieval lawyers
distinguished analogia legis and analogia iuris (see below). In Islamic logic, analogical reasoning was used for
the process of qiyas in Islamic sharia law and qh jurisprudence. In Christian theology, analogical arguments
were accepted in order to explain the attributes of God.
Aquinas made a distinction between equivocal, univocal
and analogical terms, the last being those like healthy that
have dierent but related meanings. Not only a person
can be healthy, but also the food that is good for health
(see the contemporary distinction between polysemy and
homonymy). Thomas Cajetan wrote an inuential treatise on analogy. In all of these cases, the wide Platonic and Aristotelian notion of analogy was preserved.
James Francis Ross in Portraying Analogy (1982), the
rst substantive examination of the topic since Cajetans
De Nominum Analogia, demonstrated that analogy is a
systematic and universal feature of natural languages,
with identiable and law-like characteristics which explain how the meanings of words in a sentence are interdependent.

2.2.3 Special case of induction


On the contrary, Ibn Taymiyya,[7][8][9] Francis Bacon and
later John Stuart Mill argued that analogy is simply a
special case of induction.[6] In their view analogy is an
inductive inference from common known attributes to another probable common attribute, which is known only
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 useful 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 serial manner.[13][14] Empirical evidence shows that human
analogical mapping performance is inuenced by information presentation order.[15]

2.2.5 High-level perception

According to Shelley (2003), the study of the coelacanth drew


heavily on analogies from other sh.

Douglas Hofstadter and his team[16] challenged the


shared structure theory and mostly its applications in
computer science. They argue that there is no line between perception, including high-level perception, and
analogical thought. In fact, analogy occurs not only
after, but also before and at the same time as highlevel perception. In high-level perception, humans make
representations by selecting relevant information from
low-level stimuli. Perception is necessary for analogy,
but analogy is also necessary for high-level perception.
Chalmers et al. conclude that analogy actually is highlevel perception. Forbus et al. (1998) claim that this is
only a metaphor.[17] It has been argued (Morrison and
Dietrich 1995) that Hofstadters and Gentners groups do
not defend opposite views, but are instead dealing with
dierent aspects of analogy.[18]

tle, but framed by Gentners (1983) structure mapping


theory.[10] The same idea of mapping between source
and target is used by conceptual metaphor and conceptual
blending theorists. Structure mapping theory concerns
both psychology and computer science. According to this
view, analogy depends on the mapping or alignment of
the elements of source and target. The mapping takes
place not only between objects, but also between relations
of objects and between relations of relations. The whole
mapping yields the assignment of a predicate or a relation
to the target. Structure mapping theory has been applied
and has found considerable conrmation in psychology.
It has had reasonable success in computer science and ar- 2.2.6 Analogy and Complexity
ticial intelligence (see below). Some studies extended
the approach to specic subjects, such as metaphor and Antoine Cornujols[19] has presented analogy as a principle of economy and computational complexity.
similarity.[11]
Keith Holyoak and Paul Thagard (1997) developed their
multiconstraint theory within structure mapping theory.
They defend that the "coherence" of an analogy depends
on structural consistency, semantic similarity and purpose. Structural consistency is maximal when the analogy is an isomorphism, although lower levels are admitted. Similarity demands that the mapping connects similar elements and relations of source and target, at any
level of abstraction. It is maximal when there are identical relations and when connected elements have many
identical attributes. An analogy achieves its purpose insofar as it helps solve the problem at hand. The multiconstraint theory faces some diculties when there are multiple sources, but these can be overcome.[6] Hummel and
Holyoak (2005) recast the multiconstraint theory within a
neural network architecture. A problem for the multiconstraint theory arises from its concept of similarity, which,
in this respect, is not obviously dierent from analogy itself. Computer applications demand that there are some
identical attributes or relations at some level of abstraction. The model was extended (Doumas, Hummel, and
Sandhofer, 2008) to learn relations from unstructured examples (providing the only current account of how symbolic representations can be learned from examples).[12]

Reasoning by analogy is a process of, from a given pair


(x,f(x)), extrapolating the function f. In the standard
modeling, analogical reasoning involves two objects":
the source and the target. The target is supposed to be
incomplete and in need for a complete description using
the source. The target has an existing part St and a missing part Rt. We assume that we can isolate a situation of
the source Ss, which corresponds to a situation of target
St, and the result of the source Rs, which correspond to
the result of the target Rt. With Bs, the relation between
Ss and Rs, we want Bt, the relation between St and Rt.
If the source and target are completely known:
Using Kolmogorov complexity K(x), dened as the size of
the smallest description of x and Solomono's approach
to induction, Rissanen (89),[20] Wallace & Boulton (68)
proposed the principle of Minimum description length.
This principle leads to minimize the complexity K(target|
Source) of producing the target from the source.

This is unattractive in Articial Intelligence, as it requires


a computation over abstract Turing machines. Suppose
that Ms and Mt are local theories of the source and the
target, available to the observer. The best analogy between 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 memK(Ms) + K(Ss|Ms) + K(Bs|Ms) + K(Mt|Ms) +
ory constraints as well as structural, semantic and pragK(St|Mt) + K(Bt|Mt) (1).
matic constraints, so that a subset of the base analog is

2.3. APPLICATIONS AND TYPES


If the target is completely unknown:
All models and descriptions Ms, Mt, Bs, Ss, and St leading
to the minimization of:
K(Ms) + K(Ss|Ms) + K(Bs|Ms) + K(Mt|Ms) +
K(St|Mt) (2)
are also those who allow to obtain the relationship Bt, and
thus the most satisfactory Rt for formula (1).
The analogical hypothesis, which solves an analogy between a source case and a target case, has two parts:
Analogy, like induction, is a principle of economy.
The best analogy between two cases is the one which
minimizes the amount of information necessary for
the derivation of the source from the target (1).
Its most fundamental measure is the computational
complexity theory.
When solving or completing a target case with a
source case, the parameters which minimize (2) are
postulated to minimize (1), and thus, produce the
best response.
However, a cognitive agent may simply reduce the amount
of information necessary for the interpretation of the
source and the target, without taking into account the cost
of data replication. So, it may prefer to the minimization
of (2) the minimization of the following simplied formula:

25
Linguistics
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 governed by rules. For example, the English verb help
once had the preterite holp and the past participle
holpen. These obsolete forms have been discarded
and replaced by helped by the power of analogy (or
by widened application of the productive Verb-ed
rule.) This is called leveling. However, irregular
forms can sometimes be created by analogy; one example is the American English past tense form of
dive: dove, formed on analogy with words such as
drive: drove.
Neologisms can also be formed by analogy with existing words. A good example is software, formed
by analogy with hardware; other analogous neologisms such as rmware and vaporware have followed. Another example is the humorous[21] term
underwhelm, formed by analogy with overwhelm.
Analogy is often presented as an alternative mechanism to generative rules for explaining productive
formation of structures such as words. Others argue
that in fact they are the same mechanism, that rules
are analogies that have become entrenched as standard parts of the linguistic system, whereas clearer
cases of analogy have simply not (yet) done so (e.g.
Langacker 1987.445447). This view has obvious
resonances with the current views of analogy in cognitive 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 sciences 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 functional behaviours of similar systems. For instance, an
Logic
analogy commonly used in electronics textbooks compares electrical circuits to hydraulics. Another example is
Logicians analyze how analogical reasoning is used in the analog ear based on electrical, electronic or mechanarguments from analogy.
ical devices.

2.3 Applications and types

Rhetoric
An analogy is a spoken or textual comparison between two words (or sets of words) to highlight some
form of semantic similarity between them. Such
analogies can be used to strengthen political and
philosophical arguments, even when the semantic
similarity is weak or non-existent (if crafted carefully for the audience). Analogies are sometimes
used to persuade those that cannot detect the awed
or non-existent arguments.

Mathematics
Some types of analogies can have a precise mathematical
formulation through the concept of isomorphism. In detail, this means that given two mathematical structures of
the same type, an analogy between them can be thought
of as a bijection between them which preserves some or
all of the relevant structure. For example, R2 and C are
isomorphic as vector spaces, but the complex numbers,
C , have more structure than R2 does: C is a eld as well
as a vector space.

26
Category theory takes the idea of mathematical analogy
much further with the concept of functors. Given two categories C and D, a functor F from C to D can be thought
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
structure mapping theory of analogy of Dedre Gentner, in
that it formalizes the idea of analogy as a function which
satises certain conditions.
Articial intelligence

CHAPTER 2. ANALOGY
his Conversation Theory asserts there exists an analogy
exhibiting both similarities and dierences between any
pair of the participants internal models or concepts.

2.3.3 In normative matters


Morality
Analogical reasoning plays a very important part in
morality. This may be in part because morality is supposed to be impartial and fair. If it is wrong to do something in a situation A, and situation B is analogous to A in
all relevant features, then it is also wrong to perform that
action in situation B. Moral particularism accepts analogical moral reasoning, rejecting both deduction and induction, since only the former can do without moral principles.

Steven Phillips and William H. Wilson [22][23] use


category theory to mathematically demonstrate how the
analogical reasoning in the human mind, that is free of the
spurious inferences that plague conventional articial intelligence models, (called systematicity), could arise naturally 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 t
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 between analogous reasoning from written law and analogy
See also case-based reasoning.
to precedent case law.
Anatomy
See also: Analogy (biology)
In anatomy, two anatomical structures are considered to
be analogous when they serve similar functions but are
not evolutionarily related, such as the legs of vertebrates
and the legs of insects. Analogous structures are the result of convergent evolution and should be contrasted with
homologous structures.
Engineering
Often a physical prototype is built to model and represent
some other physical object. For example, wind tunnels
are used to test scale models of wings and aircraft, which
act as an analog to full-size wings and aircraft.

Analogies from codes and statutes In civil law systems, where the preeminent source of law is legal codes
and statutes, a lacuna (a gap) arises when a specic issue
is not explicitly dealt with in written law. Judges will try
to identify a provision whose purpose applies to the case
at hand. That process can reach a high degree of sophistication, as judges sometimes not only look at a specic
provision to ll lacunae (gaps), but at several provisions
(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. Besides the not very frequent lling of lacunae, analogy is
very commonly used between dierent provisions in order to achieve substantial coherence. Analogy from previous judicial decisions is also common, although these
decisions are not binding authorities.

For example, the MONIAC (an analog computer) used


the ow of water in its pipes as an analog to the ow of
Analogies from precedent case law By contrast, in
money in an economy.
common law systems, where precedent cases are the primary 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 nds 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 estabdescribe internal models inside the participants. Pask in lished in the previous case is justied.

2.4. SEE ALSO


In gender science
In the 19th century, there was increased attention to differences in gender. Scientists started to use an analogy
between race and gender to explain gender dierences.
In gender, the female represents a lower race than the
male. Researchers record the data of womens bodies for
analysis. Nancy Leys Stepan believes that the analogy is
so crucial in science that it shapes and inuences scientic 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 disseminate new, usually technical vocabularies. The analogy
dened what was problematic about these social groups,
what aspects of them needed further investigation, and
which kinds of measurements and what data would be
signicant for scientic inquiry.

2.3.4

In teaching strategies

Analogies as dened in rhetoric are a comparison between words, but an analogy can be used in teaching as
well. An analogy as used in teaching would be comparing a topic that students are already familiar with, with
a new topic that is being introduced so that students can
get a better understanding of the topic and relate back
to previous knowledge. Shawn Glynn, a professor in the
department of educational psychology and instructional
technology at the University of Georgia,[25] developed a
theory on teaching with analogies and developed steps to
explain the process of teaching with this method. The
steps for teaching with analogies are as follows: Step one
is introducing the new topic that is about to be taught and
giving some general knowledge on the subject. Step two
is reviewing the concept that the students already know to
ensure they have the proper knowledge to assess the similarities between the two concepts. Step three is nding
relevant features within the analogy of the two concepts.
Step four is nding similarities between the two concepts
so students are able to compare and contrast them in order to understand. Step ve is indicating where the analogy breaks down between the two concepts. And nally,
step six is drawing a conclusion about the analogy and
comparison of the new material with the already learned
material. Typically this method is used to learn topics in
science.[26]
In 1989 Kerry Ruef, a teacher, began an entire program,
which she titled The Private Eye Project. It is a method of
teaching that revolves around using analogies in the classroom to better explain topics. She thought of the idea to
use analogies as a part of curriculum because she was observing objects once and she said, my mind was noting
what else each object reminded me of... This led her to
teach with the question, what does [the subject or topic]
remind you of?" The idea of comparing subjects and concepts led to the development of The Private Eye Project
as a method of teaching.[27] The program is designed to

27
build critical thinking skills with analogies as one of the
main themes revolving around it. While Glynn focuses on
using analogies to teach science, The Private Eye Project
can be used for any subject including writing, math, art,
social studies, and invention. It is now used by thousands
of schools around the country.[28] There are also various pedagogic innovations now emerging that use visual
analogies for cross-disciplinary teaching and research, for
instance between science and the humanities.[29]

2.4 See also


Conceptual metaphor
Conceptual blending
Argument from analogy
False analogy
Metaphor
Simile
Hypocatastasis
Allegory
Argumentum e contrario
Parable
Casuistry Case-based reasoning
Abductive reasoning
Duck test
I know it when I see it
Commonsense reasoning

2.5 Notes
[1] , Henry George Liddell, Robert Scott, A GreekEnglish Lexicon, on Perseus Digital Library
[2] analogy, Online Etymology Dictionary
[3] Hofstadter in Gentner et al. 2001.
[4] , Michael A. Martin, The Use of Analogies and Heuristics
in Teaching Introductory Statistical Methods
[5] Turney 2006
[6] Shelley 2003
[7] Hallaq, Wael B. (19851986). The Logic of Legal Reasoning in Religious and Non-Religious Cultures: The
Case of Islamic Law and the Common Law. Cleveland
State Law Review. 34: 7996 [935]

28

[8] Ruth Mas (1998). Qiyas: A Study in Islamic Logic


(PDF). Folia Orientalia. 34: 113128. ISSN 0015-5675.
[9] John F. Sowa; Arun K. Majumdar (2003). Analogical
reasoning. Conceptual Structures for Knowledge Creation
and Communication, Proceedings of ICCS 2003. Berlin:
Springer-Verlag., pp. 1636
[10] See Dedre Gentner et al. 2001
[11] See Gentner et al. 2001 and Gentners publication page.
[12] Doumas, Hummel, and Sandhofer, 2008
[13] Keane, M.T. and Brayshaw, M. (1988). The Incremental
Analogical Machine: a computational model of analogy.
In D. Sleeman (Ed). European working session on learning. (pp.5362). London: Pitman.
[14] Keane, M.T. Ledgeway; Du, S (1994). Constraints
on analogical mapping: a comparison of three models.
Cognitive Science. 18: 387334. doi:10.1016/03640213(94)90015-9.
[15] Keane, M.T. (1997). What makes an analogy dicult?
The eects of order and causal structure in analogical
mapping. Journal of Experimental Psychology: Learning,
Memory and Cognition. 23: 946967. doi:10.1037/02787393.23.4.946.
[16] See Chalmers et al. 1991
[17] Forbus et al., 1998
[18] Morrison and Dietrich, 1995
[19] Cornujols, A. (1996). Analogie, principe dconomie et
complexit algorithmique. In Actes des 11mes Journes
Franaises de lApprentissage. Ste.
[20] Rissanen J. (1989) : Stochastical Complexity and Statistical
Inquiry. World Scientic Publishing Company, 1989.
[21] http://www.oxforddictionaries.com/us/definition/
american_english/underwhelm
[22] Phillips, Steven; Wilson, William H. (July 2010).
Categorial Compositionality:
A Category Theory Explanation for the Systematicity of Human
Cognition.
PLoS Computational Biology.
6 (7).
doi:10.1371/journal.pcbi.1000858.
[23] Phillips, Steven; Wilson, William H. (August 2011).
Categorial Compositionality II: Universal Constructions
and a General Theory of (Quasi-)Systematicity in Human Cognition. PLoS Computational Biology. 7 (8).
doi:10.1371/journal.pcbi.1002102.
[24] Stepan, Nancy Leys (Jun 1986). Race and Gender: The
Role of Analogy in Science. Isis. 77 (2): 261277.
doi:10.1086/354130. JSTOR 232652.

CHAPTER 2. ANALOGY

[28] The Private Eye Project. The Private Eye Project. 2013.
[29] Mario Petrucci. Crosstalk, Mutation, Chaos: bridgebuilding between the sciences and literary studies using
Visual Analogy.

2.6 References
Cajetan, Tommaso De Vio, (1498), De Nominum
Analogia, P.N. Zammit (ed.), 1934, The Analogy
of Names, Koren, Henry J. and Bushinski, Edward
A (trans.), 1953, Pittsburgh: Duquesne University
Press.
Chalmers, D.J. et al. (1991). Chalmers, D.J.,
French, R.M., Hofstadter, D., High-Level Perception, Representation, and Analogy.
Coelho, Ivo (2010). Analogy. ACPI Encyclopedia of Philosophy. Ed. Johnson J. Puthenpurackal.
Bangalore: ATC. 1:64-68.
Cornujols, A. (1996).
Analogie, principe
dconomie et complexit algorithmique. In Actes
des 11mes Journes Franaises de lApprentissage.
Ste.
Cornujols, A. (1996). Analogy, principle of economy and computational complexity.* Doumas, L.
A. A., Hummel, J.E., and Sandhofer, C. (2008). A
Theory of the Discovery and Predication of Relational Concepts. Psychological Review, 115, 1-43.
Forbus, K. et al.
(1998).
Analogy just
looks like high-level perception.* Gentner, D.
(1983). Structure-mapping: A theoretical framework for analogy. Cognitive Science, 7, 155170.
(Reprinted in A. Collins & E. E. Smith (Eds.), Readings in cognitive science: A perspective from psychology and articial intelligence. Palo Alto, CA:
Kaufmann).
Gentner, D., Holyoak, K.J., Kokinov, B. (Eds.)
(2001). The Analogical Mind: Perspectives from
Cognitive Science. Cambridge, MA, MIT Press,
ISBN 0-262-57139-0
Hofstadter, D. (2001). Analogy as the Core of
Cognition, in Dedre Gentner, Keith Holyoak, and
Boicho Kokinov (eds.) The Analogical Mind: Perspectives from Cognitive Science, Cambridge, MA:
The MIT Press/Bradford Book, 2001, pp. 499538.

[26] Glynn, Shawn M. Teaching with Analogies. 2008.

Holland, J.H., Holyoak, K.J., Nisbett, R.E., and


Thagard, P. (1986). Induction: Processes of Inference, Learning, and Discovery. Cambridge, MA,
MIT Press, ISBN 0-262-58096-9.

[27] Johnson, Katie. Educational Leadership: Exploring the


World with the Private Eye. September 1995. 16 October
2013 .

Holyoak, K.J., and Thagard, P. (1995). Mental


Leaps: Analogy in Creative Thought. Cambridge,
MA, MIT Press, ISBN 0-262-58144-2.

[25] University of Georgia. Curriculum Vitae of Shawn M.


Glynn. 2012. 16 October 2013

2.7. EXTERNAL LINKS


Holyoak, K.J., and Thagard, P. (1997). The Analogical Mind.
Hummel, J.E., and Holyoak, K.J. (2005). Relational
Reasoning in a Neurally Plausible Cognitive Architecture
Itkonen, E. (2005). Analogy as Structure and Process. Amsterdam/Philadelphia: John Benjamins
Publishing Company.
Juthe, A. (2005). Argument by Analogy, in Argumentation (2005) 19: 127.
Keane, M.T. Ledgeway; Du, S (1994). Constraints on analogical mapping: a comparison of
three models. Cognitive Science. 18: 287334.
doi:10.1016/0364-0213(94)90015-9.
Keane, M.T. (1997). What makes an analogy difcult? The eects of order and causal structure in
analogical mapping. Journal of Experimental Psychology: Learning, Memory and Cognition. 123:
946967.
Kokinov, B. (1994). A hybrid model of reasoning
by analogy.
Kokinov, B. and Petrov, A. (2001). Integration of
Memory and Reasoning in Analogy-Making.
Lamond, G. (2006). Precedent and Analogy in Legal Reasoning, in Stanford Encyclopedia of Philosophy.
Langacker, Ronald W. (1987). Foundations of Cognitive grammar. Vol. I, Theoretical prerequisites.
Stanford: Stanford University Press.
Little, J (2000). Analogy in Science: Where Do
We Go From Here?". Rhetoric Society Quarterly.
30: 6992. doi:10.1080/02773940009391170.
Little, J (2008).
The Role of Analogy in
George Gamows Derivation of Drop Energy.
Technical Communication Quarterly. 17: 119.
doi:10.1080/10572250701878876.

29
Ross, J.F., (1958), A Critical Analysis of the Theory
of Analogy of St Thomas Aquinas, (Ann Arbor, MI:
University Microlms Inc).
Shelley, C. (2003). Multiple analogies in Science
and Philosophy. Amsterdam/Philadelphia: John
Benjamins Publishing Company.
Turney, P.D.; Littman, M.L. (2005). Corpusbased learning of analogies and semantic relations. Machine Learning. 60 (13): 251278.
doi:10.1007/s10994-005-0913-1.
Turney, P.D. (2006). Similarity of semantic relations. Computational Linguistics. 32 (3): 379416.
doi:10.1162/coli.2006.32.3.379.

2.7 External links


Stanford Encyclopedia of Philosophy Analogy and
Analogical Reasoning, by Paul Bartha.
Stanford Encyclopedia of Philosophy Medieval
Theories of Analogy, by E. Jennifer Ashworth.
Stanford Encyclopedia of Philosophy Precedent and
Analogy in Legal Reasoning, by Grant Lamond.
Dictionary of the History of Ideas Analogy in Early
Greek Thought.
Dictionary of the History of Ideas Analogy in Patristic and Medieval Thought.
Dedre Gentners publications page, most of them on
analogy and available for download.
Shawn Glynns publications page, all on teaching
with analogies and some available for download.
Keith Holyoaks publications page, many on analogy
and available for download.
Boicho Kokinovs publications page, most of them
on analogy and available for download.

Morrison, C., and Dietrich, E. (1995). StructureMapping vs. High-level Perception.

The Private Eye Projects publications page, all on


teaching with analogies (and thinking by analogy)
and some available for download.

Ross, J.F., (1982), Portraying Analogy. Cambridge:


Cambridge University Press.

jMapper Java Library for Analogy/Metaphor Generation

Ross, J.F. (October 1970). Analogy and The


Resolution of Some Cognitivity Problems. The
Journal of Philosophy.
67 (20): 725746.
doi:10.2307/2024008. JSTOR 2024008.

Analogy games Analogy used as the basis for a


cultural game

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


of Meaning for Religious Language. International Philosophical Quarterly. 1 (3): 468502.
doi:10.5840/ipq19611356.

Chapter 3

AppleTalk
AppleTalk was a proprietary suite of networking protocols developed by Apple Inc. for their Macintosh computers. AppleTalk includes a number of features that allow local area networks to be connected with no prior
setup or the need for a centralized router or server of any
sort. Connected AppleTalk-equipped systems automatically assign addresses, update the distributed namespace,
and congure any required inter-networking routing. It is
a plug-n-play system.
AppleTalk was released in 1985, and was the primary
protocol used by Apple devices through the 1980s and
1990s. Versions were also released for the IBM PC and
compatibles and the Apple IIGS. AppleTalk support was
also available in most networked printers (especially laser
printers), some le servers, and a number of routers.
The rise of TCP/IP during the 1990s led to a reimplementation of most of these types of support on that protocol,
and AppleTalk became unsupported as of the release of
Mac OS X v10.6 in 2009. Many of AppleTalks more
advanced autoconguration features have since been introduced in Bonjour, while Universal Plug and Play serves
similar needs.

3.1 History
3.1.1

AppleNet

After the release of the Apple Lisa computer in January


1983, Apple invested considerable eort in the development of a local area networking (LAN) system for the
machines. Known as AppleNet, it was based on the seminal Xerox XNS protocol stack[1] but running on a custom 1 Mbit/s coaxial cable system rather than Xeroxs
2.94 Mbit/s Ethernet. AppleNet was announced early in
1983 with a fall introduction at the target price of $500
for plug-in AppleNet cards for the Lisa and the Apple
II.[2]
At that time, early LAN systems were just coming to
market, including Ethernet, Token Ring and ARCNET.
This was a topic of major commercial eort at the time,
dominating shows like the National Computer Conference (NCC) in Anaheim in May 1983. All of the systems

were jockeying for position in the market, but even at this


time Ethernets widespread acceptance suggested it was
to become a de facto standard.[3] It was at this show that
Steve Jobs asked Gursharan Sidhu a seemingly innocuous
question, Why has networking not caught on?"[4]
Four months later, in October, AppleNet was cancelled.
At the time, they announced that Apple realized that
its not in the business to create a networking system.
We built and used AppleNet in-house, but we realized
that if we had shipped it, we would have seen new standards coming up.[5] In January, Jobs announced that they
would instead be supporting IBM's Token Ring, which he
expected to come out in a few months.[5]

3.1.2 AppleBus
Through this period, Apple was deep in development of
the Macintosh computer. During development, engineers
had made the decision to use the Zilog 8530 serial controller chip (SCC) instead of the lower cost and more
common UART to provide serial port connections.[6]
The SCC cost about $5 more than a UART, but oered
much higher speeds up to 250 kilobits per second (or
higher with additional hardware) and internally supported
a number of basic networking-like protocols like IBMs
Bisync.[7]
The SCC was chosen because it would allow multiple devices to be attached to the port. Peripherals equipped
with similar SCCs could communicate using the built-in
protocols, interleaving their data with other peripherals
on the same bus. This would eliminate the need for more
ports on the back of the machine, and allowed for the
elimination of expansion slots for supporting more complex devices. The initial concept was known as AppleBus, envisioning a system controlled by the host Macintosh polling dumb devices in a fashion similar to the
modern Universal Serial Bus.[8]

3.1.3 AppleBus networking


The Macintosh team had already begun work on what
would become the LaserWriter, and had considered a
number of other options of how to share these expensive

30

3.1. HISTORY

31

machines and other resources. A series of memos from


Bob Belleville claried these concepts, outlining the Mac,
LaserWriter and a le server system which would become
Macintosh Oce.[4] By late 1983 it was clear that IBMs
Token Ring would not be ready in time for the launch of
the Mac, and might miss the launch of these other products as well. In the end, Token Ring would not ship until
October 1985.[9]

dressing system allowed for expansion to 255 nodes in a


LAN (although only 32 could be used at that time), and
by using bridges (which came to be known as routers,
although technically not the same) one could interconnect
LANs into larger collections. Zones allowed devices to
be addressed within a bridge-connected internet. Additionally, AppleTalk was designed from the start to allow
use with any potential underlying physical link.[14]

Jobs earlier question to Sidhu had already sparked a number of ideas. When AppleNet was cancelled in October, Sidhu led an eort to develop a new networking system based on the AppleBus hardware. This new system
would not have to conform to any existing preconceptions, and was designed to be worthy of the Mac - a system that was user-installable, had zero-conguration, and
no xed network addresses - in short, a true plug-andplay network.[10] Considerable eort was needed, but by
the time the Mac was released, the basic concepts had
been outlined, and some of the low-level protocols were
on their way to completion. Sidhu mentioned the work to
Belleville only two hours after the Mac was announced.[4]

The main advantage of AppleTalk was that it was completely maintenance-free. To join a device to a network, you simply plugged the adaptor into the machine,
then connected a cable from it to any free port on any
other adaptor. AppleTalks internal protocols negotiated
a working network address number, automatically gave
the computer a human-readable name, and collected up
a list of the names and types of other machines on the
network so the user could browse the devices through
the GUI-based Chooser. AppleTalk was so easy to use
that ad-hoc networks tended to appear whenever multiple
Macs were in the same room.[15] Apple would later use
this in an advertisement showing a network being created
between two seats in an airplane.[16]

The new AppleBus was announced in early 1984,[N 1]


allowing direct connection from the Mac or Lisa through
a small box that plugged into the serial port and connected 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 developed 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 Apples connecJust prior to its release in early 1985, AppleBus was re- tor that had conventional phone jacks instead of Apples
named AppleTalk. The system had a number of limita- round connectors. PhoneNet allowed AppleTalk nettions, 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 SCCs ability to
tire networking stack required only about 6 kB of RAM, read external clocks in order to support higher transmission speeds, up to 1 Mbit/s. In these systems the external
allowing it to run on any Mac.[13]
adaptor also included its own clock, and used that to sigThe relatively slow speed of AppleTalk allowed further nal the SCCs clock input pins. The best known such sysreductions in cost. Instead of using RS-422's balanced tem was Centrams FlashTalk, which ran at 768 kbit/s,
transmit and receive circuits, the AppleTalk Personal and was intended to be used with their TOPS networkNetwork cabling used a single common electrical ground, ing system.[18] A similar solution was the 850 kbit/s Daywhich limited speeds to about 500 kbit/s, but allowed naTalk, which used a separate box that plugged in beone 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 oered 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 caThere 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 ofThe system was designed for future expansion; the ad- ten caused problems.

32

3.1.6

CHAPTER 3. APPLETALK

EtherTalk, TokenTalk and Apple- device in the 2nd Floor zone to indicate its physical location. Phase II also included changes to the underlying
Share

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 commuMacintosh 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, Apcal connection to use for networking (from Built-in or pleTalk software and LocalTalk hardware for the IBM
EtherTalk). The releases new networking stack also PC, EtherTalk for Apples A/UX operating system allowexpanded 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 problem using a single port on the back of the computer into
same drivers.
which the user could plug an adaptor for any given caThe 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 rst 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 numproduct 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 Apples 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
product, a dedicated le server that ran on any Mac with
512 kB of RAM or more. A common AppleShare machine was the Mac Plus with an external SCSI hard drive.
AppleShare was the #3 network operating system in the
late 1980s, behind Novell NetWare and Microsofts MSNet.[24] AppleShare was eectively the replacement for
the failed Macintosh Oce eorts, which had been based
on a dedicated le server device.

3.1.8 The capital-I Internet

In 1988 Apple had released MacTCP, a system that allowed the Mac to support TCP/IP on machines with
suitable Ethernet hardware. However, this left many
universities with the problem of supporting IP on their
many LocalTalk-equipped Macs. Stanford University pioneered development of MacIP, which allowed IP packets to be routed over LocalTalk networks with the support
of a suitable gateway machine. These were initially custom 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
would not become a standard part of the Mac OS unopments
til 1994,[27] by which time it also supported SNMP and
A signicant 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 prisidered an eort 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, Euthan 255 nodes, and zones were no longer associated with dora, eXodus, NewsWatcher and the NCSA packages, esphysical networks, but were entirely virtual constructs pecially NCSA Mosaic and its ospring, Netscape Naviused simply to organize nodes. For instance, one could gator.[28] Additionally, a number of server products apnow 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
clients connected to the Internet as any other platform,[29]
despite the relatively small overall marketshare.
As the world quickly moved to IP for both LAN and
WAN uses, Apple was faced with maintaining two increasingly outdated code bases on an ever-wider group
of machines as well as the introduction of the PowerPC
based machines. This led to the Open Transport eorts,
which re-implemented both MacTCP and AppleTalk on
an entirely new code base adapted from the Unix standard
STREAMS. Early versions had problems and did not become stable for some time.[30] By that point, Apple was
deep in their ultimately doomed Copland eorts.

3.1.9

Legacy and abandonment

With the purchase of NeXT and subsequent development


of Mac OS X, AppleTalk was strictly a legacy system.
Support was added to OS X in order to provide support
for the large number of existing AppleTalk devices, notably laser printers and le shares, but alternate connection solutions common in this era, notably USB for printers, limited their demand. As Apple abandoned many of
these product categories, and all new systems were based
on IP, AppleTalk became less and less common. AppleTalk support was nally removed from the MacOS in
Mac OS X v10.6 in 2009.[31]

33
concept was to allow routers to provide the information
or hardwire the system to known addresses and names.
On larger networks where AARP could cause problems
as new nodes searched for free addresses, the addition of
a router could reduce chattiness. Together AARP and
NBP made AppleTalk an easy-to-use networking system.
New machines were added to the network by plugging
them and optionally giving them a name. The NBP lists
were examined and displayed by a program known as the
Chooser which would display a list of machines on the local network, divided into classes such as le-servers and
printers.

3.3 Addressing
An AppleTalk address was a 4-byte quantity. This consisted of a two-byte network number, a one-byte node
number, and a one-byte socket number. Of these, only
the network number required any conguration, being obtained from a router. Each node dynamically chose its
own node number, according to a protocol (originally the
LocalTalk Link Access Protocol LLAP and later the AppleTalk Address Resolution Protocol, AARP)[32] which
handled contention between dierent nodes accidentally
choosing the same number. For socket numbers, a few
well-known numbers were reserved for special purposes
specic to the AppleTalk protocol itself. Apart from
these, all application-level protocols were expected to use
dynamically-assigned socket numbers at both the client
and server end.

However, the loss of AppleTalk did not reduce the desire for networking solutions that combined its ease-ofuse with IP routing. Apple has led development of many
such eorts, from the introduction of the AirPort router
to the development of the Zero conguration networking
Because of this dynamism, users could not be expected
system and their implementation of it, Bonjour.
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 suciently long to minimize the chance of conicts.
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 Apsystems, 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. Nevof the machine itself. Thus, services could be moved to
ertheless, many portions of the AppleTalk system have a dierent 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 dierentiation for AppleTalk was it contained
two protocols aimed at making the system completely
self-conguring. The AppleTalk address resolution protocol (AARP) allowed AppleTalk hosts to automatically
generate their own network addresses, and the Name
Binding Protocol (NBP) was a dynamic system for mapping network addresses to user-readable names. Although systems similar to AARP existed in other systems,
Banyan VINES for instance, nothing like NBP has existed
until recently.

dierent in order to continue accessing the service. And


the same machine could host any number of instances of
services of the same type, without any network connection conicts.

Contrast this with A records in the DNS, where a name


translates to a machines address, not including the port
number that might be providing a service. Thus, if people
are accustomed to using a particular machine name to access a particular service, their access will break when the
service is moved to a dierent machine. This can be mitBoth AARP and NBP had dened 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 lesystem. 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 commands d performing out-of-band status queries. It also
tocol
allowed the server to send asynchronous attention mesAARP 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
asking for a network address, intending to hear back from
controllers such as routers. If no address is provided, one
is picked at random from the base subnet, 0. It then
broadcasts another packet saying I am selecting this address, and then waits to see if anyone else on the network complains. If another machine has that address, it
will pick another address, and keep trying until it nds
a free one. On a network with many machines it may
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
machines are added a few at a time, only one or two tries
are needed before the address eectively become constant.

3.4.5 Datagram Delivery Protocol


DDP was the lowest-level data-link-independent transport protocol. It provided a datagram service with no
guarantees of delivery. All application-level protocols,
including the infrastructure protocols NBP, RTMP and
ZIP, were built on top of DDP. AppleTalks DDP corresponds closely to the Network layer of the Open Systems
Interconnection (OSI) communication model.

3.4.6 Name Binding Protocol

Name Binding Protocol was a dynamic, distributed system 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
provided a system for checking that no other machine had
3.4.2 AppleTalk Data Stream Protocol
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 maprotocol suite, done when it became clear that a TCP- chines to nd that service. NBP provided browseability
style reliable connection-oriented transport was needed. (what are the names of all the services available?") as
well as the ability to nd a service with a particular name.
Signicant dierences from TCP were:
Names were human readable, containing spaces, upper
and lower case letters, and including support for search a connection attempt could be rejected
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
3.4.7 AppleTalk Echo Protocol
full-duplex, not dual simplex).

3.4.3

Apple Filing Protocol

The Apple Filing Protocol (AFP), formerly AppleTalk


Filing Protocol, is the protocol for communicating with
AppleShare le servers. Built on top of AppleTalk Session Protocol (for legacy AFP over DDP) or the Data
Stream Interface (for AFP over TCP), it provides services for authenticating users (extensible to dierent authentication methods including two-way random-number
exchange) and for performing operations specic to the

AEP (AppleTalk Echo Protocol) is a transport layer protocol designed to test the reachability of network nodes.
AEP generates packets to be sent to the network node
and is identied in the Type eld of a packet as an AEP
packet. The packet is rst passed to the source DDP. After it is identied as an AEP packet, it is forwarded to the
node where the packet is examined by the DDP at the destination. After the packet is identied as an AEP packet,
the packet is then copied and a eld in the packet is altered to create an AEP reply packet, and is then returned
to the source node.

3.5. PHYSICAL IMPLEMENTATION

3.4.8

Printer Access Protocol

35
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 clients 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 ow 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, handled 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
ports at 230.4 kbit/s. LocalTalk used a splitter box
far away it thought they were.
in the RS-422 port to provide an upstream and downstream cable from a single port. The topology was a
bus: cables were daisy-chained from each connected
3.4.10 Zone Information Protocol
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 todays 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 oce. Other larger computers,
contiguous section of the network, a zone could include such as UNIX or VAX workstations, would commonly
be networked via Ethernet.
several dierent discontiguous portions of the network.
Other physical implementations were also available. One
common replacement for LocalTalk was PhoneNet, a
3rd party solution (from a company called Farallon,
3.5 Physical implementation
now called Netopia) that also used the RS-422 port and
was indistinguishable from LocalTalk as far as Apples
LocalTalk port drivers were concerned, but ran over
the two unused wires in standard four-wire phone cabling. PhoneNet was considerably less expensive to install and maintain. Ethernet and Token Ring was also
supported, known as EtherTalk and TokenTalk respecInterior
tively. EtherTalk in particular gradually became the domof 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

3.6 Networking model


3.7 Versions

CHAPTER 3. APPLETALK

3.9 See also


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

3.8 Cross-platform solutions

Samba
Server Message Block

When AppleTalk was rst introduced, the dominant ofce computing platform was the PC compatible running
MS-DOS. Apple introduced the AppleTalk PC Card in
early 1987, allowing PCs to join AppleTalk networks and
print to LaserWriter printers.[33] A year later AppleShare
PC was released, allowing PCs to access AppleShare le
servers.[34]

3.10 Notes
[1] AppleBus is mentioned by name in Steve Jobs introduction of the Macintosh at the Boston Computer Society
meeting in 1984. It appears just after the 7:20 mark in
the video.

The TOPS Teleconnector[35] MS-DOS networking system 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 le, 3.11.1 Citations
drive and printer sharing. As well as allowing the construction of a PC-only AppleTalk network, it allowed [1] John Marko, Apple plans slower, aordable local area
network, InfoWorld, 14 February 1983, p. 14
communication between PCs and Macs with TOPS software 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 Apples own either in ease of use or in ro16-19, Anaheim, California, Creative Computing, August
1983, p. 188
bustness and freedom from crashes, but the DOS software
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 AppleTalk through an open source project called Netatalk,
which implements the complete protocol suite and allows
them to both act as native le or print servers for Macintosh computers, and print to LocalTalk printers over the
network.
The Windows Server operating systems supported AppleTalk starting with Windows NT and ending after
Windows Server 2003. Miramar included AppleTalk
in its PC MacLAN product which was discontinued
by CA in 2007. GroupLogic continues to bundle its
AppleTalk protocol with its ExtremeZ-IP server software for Macintosh-Windows integration which supports
Windows 2008 Server and Windows Vista as well prior
versions. HELIOS Software GmbH oers a proprietary
implementation of the AppleTalk protocol stack, as part
of their HELIOS UB2 server. This is essentially a File
and Print Server suite that runs on a whole range of different platforms.

[5] Bartimo 1984, p. 45.


[6] Oppenheimer 2004, Slide 6.
[7] Zilog Z8530 Users Manual, Zilog, p. 1-1
[8] Oppenheimer 2004, Slide 9.
[9] Token-Ring Technical Summary, Section 1.2
[10] Oppenheimer 2004, Slide 10.
[11] Jim Barimo, Apple, waiting for IBM net, links micros
with AppleBus, InfoWorld, 26 March 1984, pp 45-46
[12] Oppenheimer 2004, Slide 15.
[13] Oppenheimer 2004, Slide 19.
[14] Oppenheimer 2004, Slide 17.
[15] Lee Larson, LocalTalk to EtherTalk?", Louisville Computer 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 avors 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

[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 nds 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, InfoWorld, 18 January 1988, p. 29
[35] Mark Stephens, TOPS Teleconnector Connets PCs 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

37

Chapter 4

ARPANET
For the producer, see Gerald Donald. For the seventh
episode of the second season of the television series The
Americans, see Arpanet (The Americans).
See also: History of the Internet
The Advanced Research Projects Agency Network
(ARPANET) was an early packet switching network
and the rst network to implement the protocol suite
TCP/IP. Both technologies became the technical foundation of the Internet. ARPANET was initially funded
by the Advanced Research Projects Agency (ARPA) of
the United States Department of Defense.[1][2][3][4][5]
The packet switching methodology employed in the
ARPANET was based on concepts and designs by Americans Leonard Kleinrock and Paul Baran, British scientist Donald Davies, and Lawrence Roberts of the Lincoln
Laboratory.[6] The TCP/IP communications protocols
were developed for ARPANET by computer scientists
Robert Kahn and Vint Cerf, and incorporated concepts
by Louis Pouzin for the French CYCLADES project.
As the project progressed, protocols for internetworking
were developed by which multiple separate networks
could be joined into a network of networks. Access to
the ARPANET was expanded in 1981 when the National
Science Foundation (NSF) funded the Computer Science Network (CSNET). In 1982, the Internet protocol
suite (TCP/IP) was introduced as the standard networking protocol on the ARPANET. In the early 1980s the
NSF funded the establishment for national supercomputing centers at several universities, and provided interconnectivity in 1986 with the NSFNET project, which also
created network access to the supercomputer sites in the
United States from research and education organizations.
ARPANET was decommissioned in 1990.

4.1 History
Packet switchingtoday the dominant basis for data
communications worldwidewas a new concept at the
time of the conception of the ARPANET. Prior to the
advent of packet switching, both voice and data communications had been based on the idea of circuit switch-

ing, as in the traditional telephone circuit, wherein each


telephone call is allocated a dedicated, end to end, electronic connection between the two communicating stations. Such stations might be telephones or computers.
The (temporarily) dedicated line is typically composed
of many intermediary lines which are assembled into a
chain that stretches all the way from the originating station
to the destination station. With packet switching, a data
system could use a single communication link to communicate with more than one machine by collecting data
into datagrams and transmitting these as packets onto the
attached network link, as soon as the link becomes idle.
Thus, not only can the link be shared, much as a single
post box can be used to post letters to dierent destinations, but each packet can be routed independently of
other packets.[7]
The earliest ideas for a computer network intended to allow general communications among computer users were
formulated by computer scientist J. C. R. Licklider of
Bolt, Beranek and Newman (BBN), in April 1963, in
memoranda discussing the concept of the "Intergalactic
Computer Network". Those ideas encompassed many
of the features of the contemporary Internet. In October 1963, Licklider was appointed head of the Behavioral
Sciences and Command and Control programs at the Defense Departments Advanced Research Projects Agency
(ARPA). He convinced Ivan Sutherland and Bob Taylor
that this network concept was very important and merited development, although Licklider left ARPA before
any contracts were assigned for development.[8]
Sutherland and Taylor continued their interest in creating the network, in part, to allow ARPA-sponsored
researchers at various corporate and academic locales
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 oce, each connected to separate computers,
which ARPA was funding: one for the System Development Corporation (SDC) Q-32 in Santa Monica, one for
Project Genie at the University of California, Berkeley,
and another for Multics at the Massachusetts Institute of
Technology. Taylor recalls the circumstance: For each
of these three terminals, I had three dierent sets of user
commands. So, if I was talking online with someone at

38

4.1. HISTORY
S.D.C., and I wanted to talk to someone I knew at Berkeley, or M.I.T., about this, I had to get up from the S.D.C.
terminal, go over and log into the other terminal and get
in touch with them. I said, Oh Man!", its obvious what
to do: If you have these three terminals, there ought to
be one terminal that goes anywhere you want to go. That
idea is the ARPANET.[10]
Meanwhile, since the early 1960s, Paul Baran at the
RAND Corporation had been researching systems that
could survive nuclear war and developed the idea of
distributed adaptive message block switching.[11] Donald
Davies at the United Kingdoms National Physical Laboratory (NPL) independently invented the same concept in
1965.[12][13] His work, presented by a colleague, initially
caught the attention of ARPANET developers at a conference in Gatlinburg, Tennessee, in October 1967.[14]
He gave the rst public demonstration, having coined the
term packet switching, on 5 August 1968 and incorporated
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
ARPANET were the rst two networks in the world to use
packet switching,[17][18] and were themselves connected
together in 1973.[19][20] The NPL network was using line
speeds of 768 kbit/s, and the proposed line speed for
ARPANET was upgraded from 2.4 kbit/s to 50 kbit/s.[21]

4.1.1

Creation

By mid-1968, Taylor had prepared a complete plan for


a computer network, and, after ARPAs approval, a
Request for Quotation (RFQ) was issued for 140 potential bidders. Most computer science companies regarded
the ARPATaylor proposal as outlandish, and only twelve
submitted bids to build a network; of the twelve, ARPA
regarded only four as top-rank contractors. At years end,
ARPA considered only two contractors, and awarded the
contract to build the network to BBN Technologies on 7
April 1969. The initial, seven-person BBN team were
much aided by the technical specicity of their response
to the ARPA RFQ, and thus quickly produced the rst
working system. This team was led by Frank Heart. The
BBN-proposed network closely followed Taylors ARPA
plan: a network composed of small computers called
Interface Message Processors (or IMPs), similar to the
later concept of routers, that functioned as gateways interconnecting local resources. At each site, the IMPs
performed store-and-forward packet switching functions,
and were interconnected with leased lines via telecommunication data sets (modems), with initial data rates
of 56kbit/s. The host computers were connected to the
IMPs via custom serial communication interfaces. The
system, including the hardware and the packet switching
software, was designed and installed in nine months.[22]

39
magnetic-core memory, and a 16-channel Direct Multiplex Control (DMC) direct memory access unit.[23] The
DMC established custom interfaces with each of the host
computers and modems. In addition to the front-panel
lamps, the DDP-516 computer also features a special set
of 24 indicator lamps showing the status of the IMP communication channels. Each IMP could support up to four
local hosts, and could communicate with up to six remote
IMPs via leased lines. The network connected one computer in Utah with three in California. Later, the Department of Defense allowed the universities to join the
network for sharing hardware and software resources.

4.1.2 Debate on design goals


In A Brief History of the Internet, the Internet Society denies that ARPANET was designed to survive a nuclear
attack:
It was from the RAND study that the false rumor started, claiming that the ARPANET was
somehow related to building a network resistant to nuclear war. This was never true of the
ARPANET; only the unrelated RAND study
on secure voice considered nuclear war. However, the later work on Internetting did emphasize robustness and survivability, including the
capability to withstand losses of large portions
of the underlying networks.[24]
The RAND study was conducted by Paul Baran and pioneered packet switching.[11] In an interview he conrmed
that while ARPANET did not exactly share his projects
goal, his work had greatly contributed to the development of ARPANET.[25] Minutes taken by Elmer Shapiro
of Stanford Research Institute at the ARPANET design
meeting of 910 Oct. 1967 indicate that a version of
Barans routing method and suggestion of using a xed
packet size was expected to be employed.[26]
According to Stephen J. Lukasik, who as Deputy Director and Director of DARPA (19671974) was the person who signed most of the checks for Arpanets development":
The goal was to exploit new computer technologies to meet the needs of military command and control against nuclear threats,
achieve survivable control of US nuclear
forces, and improve military tactical and management decision making.[27]

The ARPANET incorporated distributed computation


(and frequent re-computation) of routing tables. This
The rst-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 signicant destruction - even
DDP-516 computer congured 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


was incorporated into the early ARPANET made many
believe that this had been a design goal.
The ARPANET was designed to survive subordinatenetwork losses, since the principal reason was that the
switching nodes and network links were unreliable, even
without any nuclear attacks. Resource scarcity supported
the creation of the ARPANET, according to Charles
Herzfeld, ARPA Director (19651967):
The ARPANET was not started to create a
Command and Control System that would survive a nuclear attack, as many now claim. To
build such a system was, clearly, a major military need, but it was not ARPAs mission to do
this; in fact, we would have been severely criticized had we tried. Rather, the ARPANET
came out of our frustration that there were only
a limited number of large, powerful research
computers in the country, and that many research investigators, who should have access
to them, were geographically separated from
them.[28]

NLS system, a very important early hypertext system, and would run the Network Information Center (NIC), with the SDS 940 that ran NLS, named
Genie, being the rst host attached;
University of California, Santa Barbara (UCSB),
with the Culler-Fried Interactive Mathematics Centers IBM 360/75, running OS/MVT being the machine attached;
The University of Utah's Computer Science Department, where Ivan Sutherland had moved, running a
DEC PDP-10 operating on TENEX.

The rst successful message on the ARPANET was sent


by UCLA student programmer Charley Kline, at 10:30
pm on 29 October 1969, from Boelter Hall 3420.[32]
Kline transmitted from the universitys SDS Sigma 7 Host
computer to the Stanford Research Institutes SDS 940
Host computer. The message text was the word login; on
an earlier attempt the l and the o letters were transmitted,
but the system then crashed. Hence, the literal rst message over the ARPANET was lo. About an hour later,
after the programmers repaired the code that caused the
crash, the SDS Sigma 7 computer eected a full login.
The rst 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

Historical document: First ARPANET IMP log: the rst message


ever sent via the ARPANET, 10:30 pm, 29 October 1969. This
IMP Log excerpt, kept at UCLA, describes setting up a message
transmission from the UCLA SDS Sigma 7 Host computer to the
SRI SDS 940 Host computer.

The initial ARPANET consisted of four IMPs:[31]

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. Thereafter, 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 government hosts); 29 IMPs by August 1972, and 40 by September 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
connecting approximately every twenty days.[31]
In 1973 a transatlantic satellite link connected
the Norwegian Seismic Array (NORSAR) to the
ARPANET, making Norway the rst country outside the
US to be connected to the network. At about the same
time a terrestrial circuit added a London IMP.[34]

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 Network Measurement Center, with an SDS Sigma 7 In September 1984 work was completed on restructuring
the ARPANET giving U.S. military sites their own Milibeing the rst computer attached to it;
tary Network (MILNET) for unclassied defense depart The Augmentation Research Center at Stanford ment communications.[35][36] Controlled gateways conResearch 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


and military networks reduced the 113-node ARPANET
by 68 nodes. The MILNET later became the NIPRNet.

4.1.5

Rules and etiquette

41
... it is somewhat tting to end on the note that
the ARPANET program has had a strong and
direct feedback into the support and strength
of computer science, from which the network,
itself, sprang.[44]

Because of its government funding, certain forms of trafc were discouraged or prohibited. A 1982 handbook
on computing at MITs AI Lab stated regarding network
etiquette:[38]

In the wake of ARPANET being formally decommissioned on 28 February 1990, Vinton Cerf wrote
the following lamentation, entitled Requiem of the
ARPANET":[45]

It is considered illegal to use the ARPANet


for anything which is not in direct support of
Government business ... personal messages
to other ARPANet subscribers (for example,
to arrange a get-together or check and say
a friendly hello) are generally not considered
harmful ... Sending electronic mail over the
ARPANet for commercial prot or political
purposes is both anti-social and illegal. By
sending such messages, you can oend many
people, and it is possible to get MIT in serious
trouble with the Government agencies which
manage the ARPANet.

It was the rst, and being rst, was best,


but now we lay it down to ever rest.
Now pause with me a moment, shed some
tears.
For auld lang syne, for love, for years and years
of faithful service, duty done, I weep.
Lay down thy packet, now, O friend, and sleep.
-Vinton Cerf

Senator Albert Gore, Jr. began to craft the High Performance 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 submitted to Congress by a group chaired by Leonard KleinSupport 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 signicantly lighter) Honeywell 316 as an IMP.
It could also be congured as a Terminal Interface Processor (TIP), which provided terminal server support for 4.2 Software and protocols
up to 63 ASCII serial terminals through a multi-line controller 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 dened
less expensive and easier to maintain. The 316 was con- the transmission of messages to an IMP.[48] The message
gured 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 esand 56 kB for TIPs, in 1973.
sentially consisted of a message type, a numeric host adIn 1975, BBN introduced IMP software running on the dress, and a data eld. To send a data message to another
Pluribus multi-processor. These appeared in a few sites. host, the transmitting host formatted a data message conIn 1981, BBN introduced IMP software running on its taining the destination hosts address and the data message being sent, and then transmitted the message through
own C/30 processor product.
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
ARPANETs principal protocol, and the ARPANET then it to a locally connected host, or by delivering it to anbecame 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 inBBN 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 reliable. Nonetheless, the 1822 protocol proved inadequate for handling multiple connections among dierent applications residing in a host computer. This problem was addressed with the Network Control Program
(NCP), which provided a standard method to establish
reliable, ow-controlled, bidirectional communications
links among dierent processes in dierent host computers. The NCP interface allowed application software to connect across the ARPANET by implementing
higher-level communication protocols, an early example
of the protocol layering concept incorporated to the OSI
model.[40]
In 1983, TCP/IP protocols replaced NCP as the
ARPANETs principal protocol, and the ARPANET then
became one component of the early Internet.[41]

4.2.1

Network applications

NCP provided a standard set of network services that


could be shared by several applications running on a single host computer. This led to the evolution of application protocols that operated, more or less, independently
of the underlying network service. When the ARPANET
migrated to the Internet protocols in 1983, the major application protocols migrated with it.

E-mail In 1971, Ray Tomlinson, of BBN sent the rst


network e-mail (RFC 524, RFC 561).[49] By 1973,
e-mail constituted 75 percent of ARPANET trac.
File transfer By 1973, the File Transfer Protocol
(FTP) specication had been dened (RFC 354)
and implemented, enabling le transfers over the
ARPANET.
Voice trac The Network Voice Protocol (NVP) specications were dened in 1977 (RFC 741), then implemented, but, because of technical shortcomings,
conference calls over the ARPANET never worked
well; the contemporary Voice over Internet Protocol
(packet voice) was decades away.

4.2.2

Password protection

The Purdy Polynomial hash algorithm was developed for


ARPANET to protect passwords in 1971 at the request of
Larry Roberts, head of ARPA at that time. It computed
a polynomial of degree 224 + 17 modulo the 64-bit prime
p = 264 - 59. The algorithm was later used by DEC to
hash passwords in their OpenVMS operating system, and
is still being used for this purpose.

4.3 ARPANET in popular culture


Computer Networks: The Heralds of Resource Sharing, a 30-minute documentary lm[50] featuring
Fernando J. Corbato, J.C.R. Licklider, Lawrence
G. Roberts, Robert Kahn, Frank Heart, William
R. Sutherland, Richard W. Watson, John R. Pasta,
Donald W. Davies, and economist, George W.
Mitchell.
Scenario, a February 1985 episode of the U.S.
television sitcom Benson (season 6, episode 20), was
the rst incidence of a popular TV show directly
referencing the Internet or its progenitors. The
show includes a scene in which the ARPANET is
accessed.[51]
There is an electronic music artist known as
Arpanet, Gerald Donald, one of the members of
Drexciya. The artists 2002 album Wireless Internet
features commentary on the expansion of the internet via wireless communication, with songs such as
NTT DoCoMo, dedicated to the mobile communications giant based in Japan.
Thomas Pynchon mentions ARPANET in his 2009
novel Inherent Vice, which is set in Los Angeles in
1970, and in his 2013 novel Bleeding Edge.
The 1993 television series The X-Files featured the
ARPANET in a season 5 episode, titled "Unusual
Suspects". John Fitzgerald Byers oers to help Susan Modeski (known as Holly . . . just like the
sugar) by hacking into the ARPANET to obtain
sensitive information.[52]
In the spy-drama television series The Americans, a Russian scientist defector oers access to
ARPANET to the Russians in a plea to not be repatriated (Season 2 Episode 5 The Deal). Episode
7 of Season 2 is named 'ARPANET' and features
Russian inltration to bug the network.
In the television series Person of Interest, main character Harold Finch hacked ARPANET in 1980 using a homemade computer during his rst eorts to
built a prototype of the Machine.[53][54] This corresponds with the real life virus that occurred in October of that year that temporarily halted ARPANET
functions.[55][56] The ARPANET hack was rst discussed in the episode 2PiR where a computer science teacher called it the most famous hack in history and one that was never solved. Finch later mentioned it to Person of Interest Caleb Phipps and his
role was rst indicated when he showed knowledge
that it was done by a kid with a homemade computer which Phipps, who had researched the hack,
had never heard before.

4.5. REFERENCES

4.4 See also

43

[12] Scantlebury, Roger (25 June 2013). "Internet pioneers airbrushed from history". The Guardian. Retrieved 1 August
2015.

.arpa, a top-level domain used exclusively for technical infrastructure purposes


[13] "Packets of data were the key...". NPL. Retrieved 1 Au AMPRNet, AMateur Packet Radio Network

gust 2015.

Computer Networks: The Heralds of Resource Sharing1972 documentary lm

[14] Isaacson, Walter (2014). The Innovators: How a Group of


Hackers, Geniuses, and Geeks Created the Digital Revolution. Simon & Schuster. p. 237. ISBN 9781476708690.

NPL network

[15] The accelerator of the modern age. BBC News. 5 August 2008. Retrieved 19 May 2009.

Project Cybersyn1970 Chilean national net


project
Usenet, A Poor Mans ARPAnet

4.5 References
[1] L.A Lievrouw - Handbook of New Media: Student Edition (p.253) (edited by L.A Lievrouw, S.M. Livingstone),
published by SAGE 2006 (abridged, reprint, revised), 475
pages, ISBN 1412918731 [Retrieved 2015-08-15]
[2] G. Schneider; J. Evans; K. Pinard. The Internet - Illustrated. published by Cengage Learning 26 Oct 2009,
296 pages, ISBN 0538750987, Available Titles Skills Assessment Manager (SAM) - Oce 2010 Series Illustrated
(Course Technology). Retrieved 2015-08-15.
[3] K.G. Coman & A.M. Odlyzco - Optical Fiber Telecommunications IV-B: Systems and Impairments published by
Academic Press 22 May 2002, 1022 pages, Optics and
Photonics, ISBN 0080513190, (edited by I. Kaminow &
T. Li) [Retrieved 2015-08-15]
[4] R. Oppliger. Internet and Intranet Security (p.12). Artech
House, 1 Jan 2001, 403 pages, Artech House computer security series, ISBN 1580531660. Retrieved 2015-08-15.
[5] (ed. by H. Bidgoli). The Internet Encyclopedia, G O.
published by John Wiley & Sons 11 May 2004, 840 pages,
ISBN 0471689963, Volume 2 of The Internet Encyclopedia. Retrieved 2015-08-15.
[6] Lawrence Roberts Manages The ARPANET Program.
Living Internet.com. Retrieved 6 November 2008.
[7] Packet Switching History, Living Internet, retrieved 26
August 2012
[8] J.C.R. Licklider And The Universal Network, Living
Internet
[9] IPTO Information Processing Techniques Oce, Living Internet
[10] John Marko (20 December 1999). An Internet Pioneer Ponders the Next Revolution. The New York Times.
Archived from the original on 22 September 2008. Retrieved 20 September 2008.
[11] Paul Baran and the Origins of the Internet. RAND corporation. Retrieved 29 March 2011.

[16] Cambell-Kelly, Martin (Autumn 2008). Pioneer Proles: Donald Davies. Computer Resurrection (44). ISSN
0958-7403.
[17] Roberts, Lawrence G. (November 1978). The Evolution
of Packet Switching. Retrieved 9 April 2016.
[18] Donald Davies. thocp.net; Donald Davies. internethalloame.org.
[19] C. Hempstead; W. Worthington. Encyclopedia of 20thCentury Technology. Routledge 8 Aug 2005, 992 pages,
(edited by C. Hempstead, W. Worthington),. Retrieved
2015-08-15.(source: Gatlinburg, ... Association for Computing Machinery)
[20] M. Ziewitz & I. Brown (2013). Research Handbook on
Governance of the Internet. Edward Elgar Publishing. p.
7. ISBN 1849805040. Retrieved 2015-08-16.
[21] Brief History of the Internet. Internet Society. Retrieved April 9, 2016.
[22] IMP Interface Message Processor, Living Internet
[23] Wise, Adrian.
Honeywell DDP-516.
Computers.com. Retrieved 21 September 2008.

Old-

[24] A Brief History of the Internet. Internet Society.


Archived from the original on 18 September 2008. Retrieved 20 September 2008.
[25] Brand, Stewart (March 2001). Founding Father. Wired
(9.03). Retrieved 31 December 2011.
[26] Shapiro: Computer Network Meeting of October 9-10,
1967. stanford.edu.
[27] Lukasik, Stephen J. (2011). Why the Arpanet Was
Built. IEEE Annals of the History of Computing. 33 (3):
420. doi:10.1109/MAHC.2010.11.
[28] Charles Herzfeld on ARPANET and Computers.
About.com. Retrieved 21 December 2008.
[29] Janet Abbate (2000) Inventing the Internet pp.194-5
[30] Vernon W. Ruttan (2005) Is War Necessary for Economic
Growth? p.125
[31] ARPANET The First Internet, Living Internet
[32] Jessica Savio (1 April 2011). Browsing history: A heritage site has been set up in Boelter Hall 3420, the room
the rst Internet message originated in. Daily Bruin.
UCLA.

44

[33] Chris Sutton (2 September 2004). Internet Began 35


Years Ago at UCLA with First Message Ever Sent Between Two Computers. UCLA. Archived from the original on 8 March 2008.
[34] NORSAR and the Internet. NORSAR (Norway Seismic Array Research). Retrieved 25 August 2012.
[35] DEFENSE DATA NETWORK NEWSLETTER DDNNEWS 26, 6 May 1983
[36] ARPANET INFORMATION BROCHURE (NIC
50003) Defense Communications Agency, December
1985.
[37] Fritz E. Froehlich; Allen Kent (1990). ARPANET, the
Defense Data Network, and Internet. The Froehlich/Kent
Encyclopedia of Telecommunications. 1. CRC Press. pp.
341375. ISBN 978-0-8247-2900-4.
[38] Stacy, Christopher C. (7 September 1982). Getting Started
Computing at the AI Lab. AI Lab, Massachusetts Institute
of Technology. p. 9.
[39] Kirstein, Peter T. (JulySeptember 2009). The Early
Days of the Arpanet. IEEE Annals of the History of Computing. 31 (3): 67. doi:10.1109/mahc.2009.35. ISSN
1058-6180.
[40] NCP Network Control Program, Living Internet
[41] TCP/IP Internet Protocol, Living Internet
[42] NSFNET National Science Foundation Network, Living Internet
[43] Digital Communication.
[44] III. A History of the ARPANET: The First Decade
(PDF) (Report). Arlington, VA: Bolt, Beranek & Newman Inc. 1 April 1981. p. 132. section 2.3.4
[45] Abbate, Janet (11 June 1999). Inventing the Internet.
Cambridge, MA: MIT Press. ASIN B003VPWY6E.
ISBN 0-262-01172-7.
[46] "Milestones:Birthplace of the Internet, 1969. IEEE
Global History Network. IEEE. Retrieved 4 August 2011.
[47] "Milestones:Inception of the ARPANET, 1969. IEEE
Global History Network. IEEE. Retrieved 4 August 2011.
[48] Interface Message Processor: Specications for the Interconnection of a Host and an IMP, Report No. 1822, Bolt
Beranek and Newman, Inc. (BBN)
[49] Tomlinson, Ray. The First Network Email. BBN. Retrieved 6 March 2012.
[50] Steven King (Producer), Peter Chvany (Director/Editor)
(1972). Computer Networks: The Heralds of Resource
Sharing. Retrieved 20 December 2011.
[51] Scenario, Benson, Season 6, Episode 132 of 158, American Broadcasting Company (ABC), Witt/Thomas/Harris
Productions, 22 February 1985
[52] The X-Files Season 5, Ep. 3 Unusual Suspects.

CHAPTER 4. ARPANET

[53] Season 2, Episode 11 2R


[54] Season 3, Episode 12 Aletheia
[55] BBC News - SCI/TECH - Hacking:
bbc.co.uk.

A history.

[56] Hobbes Internet Timeline - the denitive ARPAnet &


Internet history. zakon.org.

4.6 Further reading


Norberg, Arthur L.; O'Neill, Judy E. (1996). Transforming Computer Technology: Information Processing for the Pentagon, 19621982. Johns Hopkins University. pp. 153196. ISBN 978-0-80186369-1.
A History of the ARPANET: The First Decade
(PDF) (Report). Arlington, VA: Bolt, Beranek &
Newman Inc. 1 April 1981.
Hafner, Katie; Lyon, Matthew (1996). Where Wizards Stay Up Late: The Origins of the Internet. Simon and Schuster. ISBN 0-7434-6837-6.
Abbate, Janet (11 June 1999). Inventing the Internet.
Cambridge, MA: MIT Press. pp. 36111. ASIN
B003VPWY6E. ISBN 0-262-01172-7.
Banks, Michael A. (2008). On the Way to the Web:
The Secret History of the Internet and Its Founders.
APress/Springer Verlag. ISBN 1-4302-0869-4.
Salus, Peter H. (1 May 1995). Casting the Net:
from ARPANET to Internet and Beyond. AddisonWesley. ISBN 978-0-201-87674-1.
Waldrop, M. Mitchell (23 August 2001). The
Dream Machine: J. C. R. Licklider and the Revolution That Made Computing Personal. New
York: Viking. ASIN B00008MNVW. ISBN 0-67089976-3.
The Computer History Museum, SRI International,
and BBN Celebrate the 40th Anniversary of First
ARPANET Transmission. Computer History Museum. 27 October 2009.

4.6.1 Oral histories


Oral history interview with Robert E. Kahn. University of Minnesota, Minneapolis: Charles Babbage Institute. 24 April 1990. Retrieved 15 May
2008. Focuses on Kahns role in the development 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 being written and

4.7. EXTERNAL LINKS


then implemented, and his role in the public demonstration of the ARPANET. The interview continues
into Kahns 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 networks.
Oral history interview with Vinton Cerf. University of Minnesota, Minneapolis: Charles Babbage
Institute. 24 April 1990. Retrieved 1 July 2008.
Cerf describes his involvement with the ARPA network, and his relationships with Bolt Beranek and
Newman, Robert Kahn, Lawrence Roberts, and the
Network Working Group.
Oral history interview with Paul Baran. University
of Minnesota, Minneapolis: Charles Babbage Institute. 5 March 1990. Retrieved 1 July 2008. Baran
describes his work at RAND, and discusses his interaction with the group at ARPA who were responsible for the later development of the ARPANET.
Oral history interview with Leonard Kleinrock.
University of Minnesota, Minneapolis: Charles
Babbage Institute. 3 April 1990. Retrieved 1
July 2008. Kleinrock discusses his work on the
ARPANET.
Oral history interview with Larry Roberts. University of Minnesota, Minneapolis: Charles Babbage Institute. 4 April 1989. Retrieved 1 July 2008.
Oral history interview with Stephen Lukasik. University of Minnesota, Minneapolis: Charles Babbage Institute. 17 October 1991. Retrieved 1 July
2008. Lukasik discusses his tenure at the Advanced
Research Projects Agency (ARPA), the development of computer networks and the ARPANET.

4.6.2

Detailed technical reference works

Roberts, Larry; Marrill, Tom (October 1966).


Toward a Cooperative Network of Time-Shared
Computers. Fall AFIPS Conference.
Roberts, Larry (October 1967). Multiple computer
networks and intercomputer communication. ACM
Symposium on Operating System Principles.
Davies, D. W.; Bartlett, K. A.; Scantlebury, R. A.;
Wilkinson, P. T. (October 1967). A digital communications network for computers giving rapid response at remote terminals. ACM Symposium on
Operating Systems Principles.
Roberts, Larry; Wessler, Barry (May 1970).
Computer Network Development to Achieve Resource

45
Sharing. Proceedings of the Spring Joint Computer
Conference, Atlantic City, New Jersey.
Heart, Frank; Kahn, Robert; Ornstein, Severo;
Crowther, William; Walden, David (1970). The
Interface Message Processor for the ARPA Computer Network (PDF). 1970 Spring Joint Computer
Conference. AFIPS Proc. 36. pp. 551567.
doi:10.1145/1476936.1477021.
Carr, Stephen; Crocker, Stephen; Cerf, Vinton
(1970). Host-Host Communication Protocol in the
ARPA Network. 1970 Spring Joint Computer
Conference. AFIPS Proc. 36. pp. 589598.
doi:10.1145/1476936.1477024. RFC 33 .
Ornstein, Severo; Heart, Frank; Crowther, William;
Russell, S. B.; Rising, H. K.; Michel, A. (1972).
The Terminal IMP for the ARPA Computer Network.
1972 Spring Joint Computer Conference. AFIPS
Proc. 40. pp. 243254.
McQuillan, John; Crowther, William; Cosell,
Bernard; Walden, David; Heart, Frank (1972).
Improvements in the Design and Performance of the
ARPA Network. 1972 Fall Joint Computer Conference part II. AFIPS Proc. 41. pp. 741754.
Feinler, Elizabeth J.; Postel, Jonathan B. (January
1978). ARPANET Protocol Handbook, NIC 7104.
Menlo Park: Network Information Center (NIC),
SRI International. ASIN B000EN742K.
Roberts, Larry (November 1978).
The
Evolution of Packet Switching.
Proceedings of the IEEE. 66 (11):
13071313.
doi:10.1109/PROC.1978.11141.
Roberts, Larry (September 1986).
The
ARPANET & Computer Networks. ACM.

4.7 External links


ARPANET Maps 1969 to 1977. California State
University, Dominguez Hills (CSUDH). 4 January
1978. Retrieved 17 May 2012.
Walden, David C. (February 2003). Looking back
at the ARPANET eort, 34 years later. Living Internet. East Sandwich, Massachusetts: livinginternet.com. Retrieved 17 August 2005.
Images of ARPANET from 1964 onwards. The
Computer History Museum. Retrieved 29 August
2004. Timeline.
Paul Baran and the Origins of the Internet. RAND
Corporation. Retrieved 3 September 2005.

46
Kleinrock, Leonard. The Day the Infant Internet Uttered its First Words. UCLA. Retrieved 11
November 2004. Personal anecdote of the rst message ever sent over the ARPANET
Doug Engelbarts 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 Internet Revolution. 50 years of Bridging the Gap.
DARPA. pp. 7885. Retrieved 26 August 2012.
A picture of the ARPANET team.
Robert X Cringely: A Brief History of the Internet.

CHAPTER 4. ARPANET

Chapter 5

Asynchronous Transfer Mode


Asynchronous Transfer Mode (ATM) is, according to
the ATM Forum, a telecommunications concept dened
by ANSI and ITU (formerly CCITT) standards for carriage of a complete range of user trac, including voice,
data, and video signals.[1] ATM was developed to meet
the needs of the Broadband Integrated Services Digital
Network, as dened 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 trac (e.g., le transfers), and realtime, 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 encodes data into small, xed-sized packets (ISO-OSI
frames) called cells. This diers 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 beMarconi 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 precongured by 5.1.1 Cell size
the service provider, or switched, i.e. set up on a percall 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 trac (trac 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 xed 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
2), the basic transfer units are generically called frames.
In ATM these frames are of a xed (53 octets or bytes)
length and specically called cells.

Thus, the designers of ATM utilized small data cells to reduce jitter (delay variance, in this case) in the multiplexing of data streams. Reduction of jitter (and also endto-end round-trip delays) is particularly important when

47

48
carrying voice trac, because the conversion of digitized
voice into an analogue audio signal is an inherently realtime process, and to do a good job, the decoder (codec)
that does this needs an evenly spaced (in time) stream of
data items. If the next data item is not available when it
is needed, the codec has no choice but to produce silence
or guess and if the data is late, it is useless, because
the time period when it should have been converted to a
signal has already passed.
At the time of the design of ATM, 155 Mbit/s
Synchronous Digital Hierarchy (SDH) with 135 Mbit/s
payload was considered a fast optical network link, and
many plesiochronous digital hierarchy (PDH) links in the
digital network were considerably slower, ranging from
1.544 to 45 Mbit/s in the USA, and 2 to 34 Mbit/s in
Europe.

CHAPTER 5. ASYNCHRONOUS TRANSFER MODE


payloads because the small size (and therefore short transmission times) simplify voice applications with respect to
echo cancellation. Most of the European parties eventually came around to the arguments made by the Americans, but France and a few others held out for a shorter
cell length. With 32 bytes, France would have been able
to implement an ATM-based voice network with calls
from one end of France to the other requiring no echo
cancellation. 48 bytes (plus 5 header bytes = 53) was
chosen as a compromise between the two sides. 5-byte
headers were chosen because it was thought that 10% of
the payload was the maximum price to pay for routing
information.[2] ATM multiplexed these 53-byte cells instead of packets which reduced worst-case cell contention
jitter by a factor of almost 30, reducing the need for echo
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 demight exceed the gure of 7.8 ms several times over, scribed above.
in addition to any packet generation delay in the shorter ATM denes two dierent cell formats: UNI (Userspeech packet. This was clearly unacceptable for speech Network Interface) and NNI (Network-Network Intertrac, 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)
Have a playback buer between the network and the
codec, one large enough to tide the codec over almost all the jitter in the data. This allows smoothing
out the jitter, but the delay introduced by passage
through the buer would require echo cancellers
even in local networks; this was considered too expensive at the time. Also, it would have increased
the delay across the channel, and conversation is difcult over high-delay channels.
Build a system that can inherently provide low jitter
(and minimal overall delay) to trac that needs it.
Operate on a 1:1 user basis (i.e., a dedicated pipe).
The design of ATM aimed for a low-jitter network interface. However, cells were introduced into the design to
provide short queuing delays while continuing to support
datagram trac. ATM broke up all packets, data, and
voice streams into 48-byte chunks, adding a 5-byte routing header to each one so that they could be reassembled
later. The choice of 48 bytes was political rather than
technical.[6] When the CCITT (now ITU-T) was standardizing ATM, parties from the United States wanted
a 64-byte payload because this was felt to be a good compromise in larger payloads optimized for data transmission and shorter payloads optimized for real-time applications like voice; parties from Europe wanted 32-byte

VPI = Virtual Path Identier (8 bits UNI, or 12


bits NNI)
VCI = Virtual Channel identier (16 bits)
PT = Payload Type (3 bits)
PT bit 3 (msbit): Network management cell. If 0, user data cell and
the following apply:
PT bit 2: Explicit forward congestion indication (EFCI); 1 = network
congestion experienced
PT bit 1 (lsbit): ATM user-to-user
(AAU) bit. Used by AAL5 to indicate packet boundaries.
CLP = Cell Loss Priority (1-bit)
HEC = Header Error Control (8-bit CRC,
polynomial = X8 + X2 + X + 1)
ATM uses the PT eld to designate various special kinds
of cells for operations, administration and management
(OAM) purposes, and to delineate packet boundaries in
some ATM adaptation layers (AAL). If the most signicant bit of the PT eld is 0, this is a user data cell, and the
other two bits are used to indicate network congestion and
as a general purpose header bit available for ATM adaptation layers.

5.1. LAYER 2 DATAGRAMS

49

If the msbit of the PT bit is 1, this is a management cell,


and the other two bits indicate the type. (Network management segment, network management end-to-end, resource management, and reserved for future use.)

least 576 bytes. SAR performance limits mean that the


fastest IP router ATM interfaces are STM16 - STM64
which actually compares, while as of 2004 POS can operate at OC-192 (STM64) with higher speeds expected
Several ATM link protocols use the HEC eld to drive in the future.
a CRC-based framing algorithm, which allows locating On slower or congested links (622 Mbit/s and bethe 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 virA UNI cell reserves the GFC eld for a local ow control/submultiplexing system between users. This was intended to allow several terminals to share a single network
connection, in the same way that two Integrated Services
Digital Network (ISDN) phones can share a single basic
rate ISDN connection. All four GFC bits must be zero
by default.
The NNI cell format replicates the UNI format almost
exactly, except that the 4-bit GFC eld is re-allocated to
the VPI eld, extending the VPI to 12 bits. Thus, a single NNI ATM interconnection is capable of addressing
almost 212 VPs of up to almost 216 VCs each (in practice
some of the VP and VC numbers are reserved).

5.1.3

Cells in practice

ATM supports dierent types of services via AALs.


Standardized AALs include AAL1, AAL2, and AAL5,
and the rarely used AAL3 and AAL4. AAL1 is used for
constant bit rate (CBR) services and circuit emulation.
Synchronization is also maintained at AAL1. AAL2
through AAL4 are used for variable bitrate (VBR) services, and AAL5 for data. Which AAL is in use for a
given cell is not encoded in the cell. Instead, it is negotiated by or congured at the endpoints on a per-virtualconnection basis.
Following the initial design of ATM, networks have become much faster. A 1500 byte (12000-bit) full-size
Ethernet frame takes only 1.2 s to transmit on a 10
Gbit/s network, reducing the need for small cells to reduce jitter due to contention. Some consider that this
makes a case for replacing ATM with Ethernet in the
network backbone. However, it should be noted that the
increased link speeds by themselves do not alleviate jitter due to queuing. Additionally, the hardware for implementing the service adaptation for IP packets is expensive at very high speeds. Specically, at speeds of
OC-3 and above, the cost of segmentation and reassembly (SAR) hardware makes ATM less competitive for IP
than Packet Over SONET (POS); because of its xed 48byte cell payload, ATM is not suitable as a data link layer
directly underlying IP (without the need for SAR at the
data link level) since the OSI layer on which IP operates
must provide a maximum transmission unit (MTU) of at

tual medium, although other techniques exist, such as


Multi-link PPP and Ethernet VLANs, which are optional
in VDSL implementations. DSL can be used as an access method for an ATM network, allowing a DSL termination point in a telephone central oce to connect to
many internet service providers across a wide-area ATM
network. In the United States, at least, this has allowed
DSL providers to provide DSL access to the customers
of many internet service providers. Since one DSL termination point can support multiple ISPs, the economic
feasibility of DSL is substantially improved.

5.1.4 Why virtual circuits?


ATM operates as a channel-based transport layer, using
virtual circuits (VCs). This is encompassed in the concept of the Virtual Paths (VP) and Virtual Channels. Every ATM cell has an 8- or 12-bit Virtual Path Identier
(VPI) and 16-bit Virtual Channel Identier (VCI) pair
dened in its header.[7] The VCI, together with the VPI,
is used to identify the next destination of a cell as it passes
through a series of ATM switches on its way to its destination. The length of the VPI varies according to whether
the cell is sent on the user-network interface (on the edge
of the network), or if it is sent on the network-network
interface (inside the network).
As these cells traverse an ATM network, switching takes
place by changing the VPI/VCI values (label swapping).
Although the VPI/VCI values are not necessarily consistent from one end of the connection to the other, the concept of a circuit is consistent (unlike IP, where any given
packet could get to its destination by a dierent route than
the others).[8] ATM switches use the VPI/VCI elds to
identify the Virtual Channel Link (VCL) of the next network that a cell needs to transit on its way to its nal destination. The function of the VCI is similar to that of the
data link connection identier (DLCI) in frame relay and
the Logical Channel Number & Logical Channel Group
Number in X.25.
Another advantage of the use of virtual circuits comes
with the ability to use them as a multiplexing layer, allowing dierent services (such as voice, Frame Relay,
n* 64 channels, IP). The VPI is useful for reducing the
switching table of some virtual circuits which have com-

50

CHAPTER 5. ASYNCHRONOUS TRANSFER MODE

mon paths.

5.1.5

Using cells and virtual circuits for


trac engineering

Another key ATM concept involves the trac contract.


When an ATM circuit is set up each switch on the circuit
is informed of the trac class of the connection.

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
a whole series of cells until the next packet starts. This
reduces the number of useless cells in the network, saving bandwidth for full packets. EPD and PPD work with
AAL5 connections as they use the end of packet marker:
the ATM User-to-ATM User (AUU) Indication bit in the
Payload Type eld of the header, which is set in the last
cell of a SAR-SDU.

ATM trac contracts form part of the mechanism by


which "quality of service" (QoS) is ensured. There are
four basic types (and several variants) which each have a Trac shaping
set of parameters describing the connection.

Trac shaping usually takes place in the network inter1. CBR - Constant bit rate: a Peak Cell Rate (PCR) is face card (NIC) in user equipment, and attempts to ensure
specied, which is constant.
that the cell ow on a VC will meet its trac 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 trac policing
Cell Rate (SCR) is specied, 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 specied.

5.1.6 Types of virtual circuits and paths

4. UBR - Unspecied bit rate: trac is allocated to all


ATM can build virtual circuits and virtual paths either
remaining transmission capacity.
statically or dynamically. Static circuits (permanent virVBR has real-time and non-real-time variants, and serves tual circuits or PVCs) or paths (permanent virtual paths or
for bursty trac. Non-real-time is sometimes abbrevi- PVPs) require that the circuit is composed of a series of
segments, one for each pair of interfaces through which
ated to vbr-nrt.
it passes.
Most trac classes also introduce the concept of Cell
Delay Variation Tolerance (CDVT), which denes the PVPs and PVCs, though conceptually simple, require signicant eort in large networks. They also do not support
clumping of cells in time.
the re-routing of service in the event of a failure. Dynamically built PVPs (soft PVPs or SPVPs) and PVCs (soft
Trac 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.
trac policing to virtual circuits to limit them to their
Finally, ATM networks create and remove switched virtrac contracts at the entry points to the network, i.e. the
tual circuits (SVCs) on demand when requested by an
usernetwork 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 trac will normally be
policed to a PCR and CDVt alone, whereas VBR trac
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 trac on a virtual circuit is exceeding its trac
contract, as determined by the GCRA, the network can
either drop the cells or mark the Cell Loss Priority (CLP)
bit (to identify a cell as potentially redundant). Basic
policing works on a cell by cell basis, but this is suboptimal for encapsulated packet trac (as discarding a

Private Network-to-Network Interface (PNNI) protocol.


PNNI uses the same shortest-path-rst algorithm used by
OSPF and IS-IS to route IP packets to share topology information between switches and select a route through a
network. PNNI also includes a very powerful summarization mechanism to allow construction of very large

5.4. SEE ALSO


networks, as well as a call admission control (CAC) algorithm which determines the availability of sucient
bandwidth on a proposed route through a network in order to satisfy the service requirements of a VC or VP.

5.1.8

Call admission and connection establishment

A network must establish a connection before two parties can send cells to each other. In ATM this is called
a virtual circuit (VC). It can be a permanent virtual circuit (PVC), which is created administratively on the end
points, or a switched virtual circuit (SVC), which is created as needed by the communicating parties. SVC creation is managed by signaling, in which the requesting
party indicates the address of the receiving party, the type
of service requested, and whatever trac parameters may
be applicable to the selected service. Call admission is
then performed by the network to conrm that the requested resources are available and that a route exists for
the connection.

5.1.9

Reference model

51
cells are transmitted from base stations to mobile terminals. Mobility functions are performed at an ATM switch
in the core network, known as crossover switch,[18]
which is similar to the MSC (mobile switching center) of
GSM Networks. The advantage of Wireless ATM is its
high bandwidth and high speed handos done at Layer
2. In the early 1990s, Bell Labs and NEC[19] Research
Labs worked actively in this eld. Andy Hopper from
Cambridge University Computer Laboratory also worked
in this area.[20] There was a Wireless ATM Forum formed
to standardize the technology behind Wireless ATM Networks. The forum was supported by several telecommunication companies, including NEC, Fujitsu, AT&T,
etc. Mobile ATM aimed to provide high speed multimedia communications technology, capable of delivering
broadband mobile communications beyond that of GSM
and WLANs.

5.4 See also


VoATM

5.5 Notes

ATM denes three layers:[12]


1. ATM adaptation layer (AAL)
2. ATM layer, roughly corresponding to the OSI data
link layer
3. physical layer, equivalent to the OSI physical layer

5.2 Deployment
ATM became popular with telephone companies and
many computer makers in the 1990s. However, even
by the end of the decade, the better price/performance
of Internet Protocol-based products was competing with
ATM technology for integrating real-time and bursty network trac.[13] Companies such as FORE Systems focused on ATM products, while other large vendors such
as Cisco Systems provided ATM as an option.[14] After
the burst of the dot-com bubble, some still predicted that
ATM is going to dominate.[15] However, in 2005 the
ATM Forum, which had been the trade organization promoting the technology, merged with groups promoting
other technologies, and eventually became the Broadband
Forum.[16]

5.3 Wireless ATM or Mobile ATM

[1] ATM Forum, The User Network Interface (UNI), v. 3.1,


ISBN 0-13-393828-X, Prentice Hall PTR, 1995, page 2.
[2] Ayanoglu, Ender; Akar, Nail. B-ISDN (Broadband Integrated Services Digital Network)". Center for Pervasive
Communications and Computing, UC Irvine. Retrieved 3
June 2011.
[3] McDysan, David E. and Spohn, Darrel L., ATM : Theory
and Application, ISBN 0-07-060362-6, McGraw-Hill series on computer communications, 1995, page 563.
[4] Recommendation I.150, B-ISDN asynchronous transfer
mode functional characteristics. ITU.
[5] McDysan (1999), p. 287.
[6] D. Stevenson, Electropolitical Correctness and HighSpeed Networking, or, Why ATM is like a Nose,
Proceedings of TriCom '93, April 1993.
[7] Cisco Systems Guide to ATM Technology (2000). Section
Operation of an ATM Switch. Retrieved 2 June 2011.
[8] Cisco Systems Guide to ATM Technology (2000). Section
ATM Cell Header Formats. Retrieved 2 June 2011.
[9] ITU-T, Trac control and congestion control in B ISDN,
Recommendation I.371, International Telecommunication Union, 2004, page 17
[10] ITU-T, Trac control and congestion control in B ISDN,
Recommendation I.371, International Telecommunication 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,


Catalyst 8510 MSR, and LightStream 1010 ATM Switch
Routers (PDF). Customer Order Number: DOC-786275.
Cisco Systems. 2000. Retrieved 19 July 2011.

5.7 External links

[13] Steve Steinberg (October 1996). Netheads vs Bellheads.


Wired. 4 (10). Retrieved 24 September 2011.

ATM Info and resources

[14] Whats in store for FORE?". Network World. 16


September 1996. p. 12. Retrieved 24 September 2011.

A tutorial from Juniper web site

[15] Optical Ethernet rms brave stormy industry seas. Network World. 7 May 2001. p. 14. Retrieved 24 September
2011.
[16] About the Broadband Forum: Forum History. Retrieved 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 multimedia personal communication, D. Raychaudhuri,at.al
[20] Cambridge Mobile ATM work

5.6 References
Black, Uyless D. (1998). ATMVolume III: Internetworking 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-13262189-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 Systems

ATM forum. Archived from the original on 1 July


2005.

ATM ChipWeb - Chip and NIC database

ATM Tutorial
Vuskovic Marko, Broadband Communication Networks Lectures, San Diego State University.
ATM at Cisco DocWiki

Chapter 6

AX.25
AX.25 (Amateur X.25) is a data link layer protocol derived from the X.25 protocol suite and designed for use
by amateur radio operators.[1] It is used extensively on
amateur packet radio networks.

repeaters, receiving, decoding and retransmitting packets


from local stations. They allow multi-hop connections to
be established between two stations unable to communicate directly.

AX.25 v2.0 and later occupies the data link layer, the second layer of the OSI model. It is mainly responsible for
establishing connections and transferring data encapsulated in frames between nodes and detecting errors introduced by the communications channel. As AX.25 is
a pre-OSI-model protocol, the original specication was
not written to cleanly separate into OSI layers. This was
rectied with version 2.0 (1984), which assumes compliance with OSI level 2.

The AX.25 specication does dene a complete, albeit point to point only network layer protocol, but this
has seen little use outside of keyboard-to-keyboard or
keyboard-to-BBS connections. NET/ROM, ROSE, and
TexNet exist to provide routing between nodes. In principle, a variety of layer 3 protocols can be used with AX.25,
including the ubiquitous Internet protocol. This approach
is used by AMPRNet, which is an amateur radio TCP/IP
network using AX.25 UI-frames at the datalink layer.

In practice, it is not uncommon to nd 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,
like Ethernet, AX.25 frames are not engineered to support switching. For this reason, AX.25 supports a somewhat limited form of source routing. Although possible
to build AX.25 switches in a manner not unlike how Ethernet switches work, this has not yet been accomplished.

6.2 Implementations
Traditionally, amateur radio operators have connected to
AX.25 networks through the use of a terminal node controller, which contains a microprocessor and an implementation of the protocol in rmware. These devices allow network resources to be accessed using only a dumb
terminal and a transceiver.

6.1 Specication

More recently, AX.25 implementations have appeared


for personal computers. For example, the Linux kernel
AX.25 does not dene 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
See full article at KISS (TNC)
HF exists today. At the physical layer, AX.25 denes only
a physical layer state machine and some timers related
AX.25 is often used with a TNC that implements the
to transmitter and receiver switching delays.
KISS[5] framing as a low-cost alternative to using expenAt the datalink level, AX.25 species 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
nor is it sent over the air. It merely serves to encapsulate
approach with collision recovery (CSMA/CR).
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 dedatagram-style connectionless modes of operation. The rived from SLIP, and makes many of the same assumplatter is used to great eect 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 SLIPA 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
and the PC involved. Among other things, this makes it
awkward to address multiple TNCs without having multiple (serial) data channels.
Alternatives to KISS do exist that address these limitations, such as 6PACK.[6]

6.3 Applications
AX.25 has most frequently been used to establish direct,
point-to-point links between packet radio stations, without any additional network layers. This is sucient for
keyboard-to-keyboard contacts between stations and for
accessing local bulletin board systems and DX clusters.
In recent years, the Automatic Packet Reporting System
(APRS) has become a popular application.

CHAPTER 6. AX.25
new radio level modulations would need dierent
radio gear than what is currently in use and the resulting system would be incompatible with the existing one thus requiring a large initial investment
in new radio gear,
adoption of newer line codings potentially including
forward error correction takes more eort than the
1,200 bit/s AFSK of Bell 202. Previously sucient
small 8-bit microprocessors with 128 bytes of RAM
would not be enough, and new ones might cost USD
30 instead of USD 3. Phil Karn did demo decoding of this new modulation of his by running it on a
Pentium II machine some 10 years later, mid-level
embedded microprocessors are capable enough to
do the same with under USD 50 system cost.[8]

Despite these limitations, an extension to the AX.25 proFor tunneling of AX.25 packets over IP, AXIP and AX- tocol, supporting forward error correction, has been creUDP 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 channel occupation by radio receiver RSSI (Received Signal
6.4 Limitations
Strength Indication) to know when not to send. Transmitting 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 sucient 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. Hownot 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 identies 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 com0 through 15. At ITU WARC2003 meeting earlier ra- patible with the current Bell 202 modulation is unlikely to
dio amateur station call-sign specication was amended be widely adopted. The current modulation seems to fulso that earlier maximum length of 6 character was raised ll sucient 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 sigof 6 characters, which means a 7 character call-sign can- nicant 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,
limited-bandwidth radio links, citing its lack of forward
error correction (FEC) and automatic data compression.
However, a viable widely adopted successor to AX.25 has
yet to emerge. Likely reasons may include:
a large existing deployment of recycled narrowband
FM radios and especially existing APRS applications,
easy availability of cheap, low-power FM transmitters, especially for the 430 MHz UHF band, to
match existing legacy radio gear,

Packet Radio
Automatic Packet Reporting System (APRS)

6.6 References
[1] AX.25 Link Access Protocol for Amateur Packet Radio
(PDF). Tucson Amateur Packet Radio. 1997. Retrieved
2014-01-15.
[2] James Miller G3RUH (1995). 9600 Baud Packet Radio
Modem Design. Retrieved 2012-02-03.

6.7. FURTHER READING

[3] ISO/IEC 3309: Information technology. Telecommunications and information exchange between systems. Highlevel Data Link Control (HDLC) procedures. Frame
structure (1984).
[4] John Ackermann (2002). Linux AX.25 Conguration.
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] Je 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 Amateur Packet-Radio Link-Layer Protocol, Version 2.0
(PDF). Newington, CT: ARRL. p. 18. ISBN 087259-011-9.
Rich Roznoy, K1OF, ed. (1997). Packet: Speed,
More Speed and Applications (2nd Edition). Newington, CT: American Radio Relay League, Inc.
ISBN 0-87259-605-2.
AMPRNet a project to construct a global, radiobased 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 Bruningas ocial APRS website.

55

Chapter 7

Communicating sequential processes


In computer science, communicating sequential processes (CSP) is a formal language for describing patterns
of interaction in concurrent systems.[1] It is a member
of the family of mathematical theories of concurrency
known as process algebras, or process calculi, based on
message passing via channels. CSP was highly inuential
in the design of the occam programming language,[1][2]
and also inuenced the design of programming languages
such as Limbo[3] and Go.[4]
CSP was rst described in a 1978 paper by Tony Hoare,[5]
but has since evolved substantially.[6] CSP has been practically applied in industry as a tool for specifying and verifying the concurrent aspects of a variety of dierent systems, such as the T9000 Transputer,[7] as well as a secure
ecommerce system.[8] The theory of CSP itself is also
still the subject of active research, including work to increase its range of practical applicability (e.g., increasing
the scale of the systems that can be tractably analyzed).[9]

7.1 History
The version of CSP presented in Hoares original 1978
paper was essentially a concurrent programming language
rather than a process calculus. It had a substantially different syntax than later versions of CSP, did not possess
mathematically dened semantics,[10] and was unable to
represent unbounded nondeterminism.[11] Programs in
the original CSP were written as a parallel composition
of a xed number of sequential processes communicating with each other strictly through synchronous messagepassing. In contrast to later versions of CSP, each process
was assigned an explicit name, and the source or destination of a message was dened by specifying the name of
the intended sending or receiving process. For example,
the process
COPY = *[c:character; west?c east!c]
repeatedly receives a character from the process named
west, and then sends that character to process named east.
The parallel composition
[west::DISASSEMBLE || X::COPY || east::ASSEMBLE]
assigns the names west to the DISASSEMBLE process,

X to the COPY process, and east to the ASSEMBLE process, and executes these three processes concurrently.[5]
Following the publication of the original version of CSP,
Hoare, Stephen Brookes, and A. W. Roscoe developed
and rened the theory of CSP into its modern, process
algebraic form. The approach taken in developing CSP
into a process algebra was inuenced by Robin Milner's
work on the Calculus of Communicating Systems (CCS),
and vice versa. The theoretical version of CSP was initially presented in a 1984 article by Brookes, Hoare,
and Roscoe,[12] and later in Hoares book Communicating Sequential Processes,[10] which was published in 1985.
In September 2006, that book was still the third-most
cited computer science reference of all time according
to Citeseer (albeit an unreliable source due to the nature
of its sampling). The theory of CSP has undergone a
few minor changes since the publication of Hoares book.
Most of these changes were motivated by the advent of
automated tools for CSP process analysis and verication.
Roscoes The Theory and Practice of Concurrency[1] describes this newer version of CSP.

7.1.1 Applications
An early and important application of CSP was its use
for specication and verication of elements of the INMOS T9000 Transputer, a complex superscalar pipelined
processor designed to support large-scale multiprocessing. CSP was employed in verifying the correctness of
both the processor pipeline, and the Virtual Channel Processor which managed o-chip communications for the
processor.[7]
Industrial application of CSP to software design has usually focused on dependable and safety-critical systems.
For example, the Bremen Institute for Safe Systems and
Daimler-Benz Aerospace modeled a fault management
system and avionics interface (consisting of some 23,000
lines of code) intended for use on the International Space
Station in CSP, and analyzed the model to conrm that
their design was free of deadlock and livelock.[13][14] The
modeling and analysis process was able to uncover a number of errors that would have been dicult to detect using
testing alone. Similarly, Praxis High Integrity Systems

56

7.2. INFORMAL DESCRIPTION

57

applied CSP modeling and analysis during the develop- Prex The prex operator combines an event and a proment of software (approximately 100,000 lines of code)
cess to produce a new process. For example,
for a secure smart-card Certication Authority to verify
that their design was secure and free of deadlock. Praxis
claims that the system has a much lower defect rate than
aP
comparable systems.[8]
Since CSP is well-suited to modeling and analyzing sysis the process which is willing to communicate
tems that incorporate complex message exchanges, it has
a with its environment, and, after a , behaves
also been applied to the verication of communications
like the process P .
and security protocols. A prominent example of this
sort of application is Lowes use of CSP and the FDR
renement-checker to discover a previously unknown at- Deterministic Choice The deterministic (or external)
choice operator allows the future evolution of a protack on the Needham-Schroeder public-key authenticacess to be dened as a choice between two compotion protocol, and then to develop a corrected protocol
nent processes, and allows the environment to reable to defeat the attack.[15]
solve the choice by communicating an initial event
for one of the processes. For example,

7.2 Informal description


(a P ) (b Q)
As its name suggests, CSP allows the description of systems in terms of component processes that operate independently, and interact with each other solely through
is the process which is willing to communicate
message-passing communication. However, the Sequenthe initial events a and b , and subsequently
tial part of the CSP name is now something of a misbehaves as either P or Q depending on which
nomer, since modern CSP allows component processes to
initial event the environment chooses to combe dened both as sequential processes, and as the parallel
municate. If both a and b were communicated
composition of more primitive processes. The relationsimultaneously the choice would be resolved
ships between dierent processes, and the way each pronondeterministically.
cess communicates with its environment, are described
using various process algebraic operators. Using this al- Nondeterministic Choice The nondeterministic (or ingebraic 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 dened as a choice between two
component processes, but does not allow the environment any control over which one of the compo7.2.1 Primitives
nent processes will be selected. For example,
CSP provides two classes of primitives in its process algebra:
(a P ) (b Q)
Events Events represent communications or interactions. They are assumed to be indivisible and instantaneous. They may be atomic names (e.g. on, o),
compound names (e.g. valve.open, valve.close), or
input/output events (e.g. mouse?xy, screen!bitmap).
Primitive processes
Primitive processes represent fundamental behaviors:
examples include STOP (the process that communicates nothing, also called deadlock), and SKIP
(which represents successful termination).

7.2.2

Algebraic operators

CSP has a wide range of algebraic operators. The principal ones are:

can behave like either (a P ) or (b Q)


. It can refuse to accept a or b , and is only
obliged to communicate if the environment offers both a and b . Nondeterminism can be inadvertently introduced into a nominally deterministic choice if the initial events of both sides
of the choice are identical. So, for example,

(a a ST OP ) (a b ST OP )
is equivalent to

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 representation of a chocolate vending machine and its interactions with a person wishing to buy some chocolate. This
P ||| Q
vending machine might be able to carry out two dierent events, coin and choc which represent the insertion of payment and the delivery of a chocolate respecbehaves as both P and Q simultaneously. The
tively. A machine which demands payment before oerevents from both processes are arbitrarily ining a chocolate can be written as:
terleaved in time.
Interface Parallel The interface parallel operator represents 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
requires that P and Q must both be able to perform event a before that event can occur. So,
for example, the process

These two processes can be put in parallel, so that they


can interact with each other. The behaviour of the composite process depends on the events that the two component processes must synchronise on. Thus,

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


(a P ) |[{a}]| (a Q)

whereas if synchronization was only required on coin,


we would obtain

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)
will simply deadlock.

we get the nondeterministic process

(choc STOP) STOP

Hiding The hiding operator provides a way to abstract This is a process which either oers 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., someone 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
in P , simply reduces to

7.3 Formal denition


7.3.1 Syntax
The syntax of CSP denes the legal ways in which processes 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


can be dened as:

P roc

::=
|
|
|
|
|
|
|
|
|
|
|

STOP
SKIP
e Proc
Proc Proc
Proc Proc
Proc ||| Proc
Proc |[{X}]| Proc
Proc \ X
Proc; Proc
if b then Proc else P roc
Proc Proc
Proc Proc

The stable failures model extends the traces model with


refusal sets, which are sets of events X that a process can refuse to perform. A failure is a pair (s, X) ,
consisting of a trace s , and a refusal set X which iden(prexing)
ties the events that a process may refuse once it has
(external choice)
executed the trace s . The observed behavior of a pro(nondeterministic choice)
cess in the stable failures model is described by the pair
(interleaving)
(traces (P ) , failures (P )) . For example,
(interface parallel)
(hiding)
failures ((a STOP) (b STOP)) =
(sequential composition) {(, ) , (a, {a, b}) , (b, {a, b})}
(boolean conditional)
failures ((a STOP) (b STOP)) =
(timeout)
{(, {a}) , (, {b}) , (a, ) , (b, ) , (a, {a, b}) , (b, {a, b
(interrupt)

Note that, in the interests of brevity, the syntax presented


above omits the div process, which represents divergence,
as well as various operators such as alphabetized parallel,
piping, and indexed choices.

7.3.2

where is the set of all possible nite sequences of


events.

Formal semantics

The failures/divergence model further extends the failures model to handle divergence. The semantics of
a process in the failures/divergences model is a pair
(failures (P ) , divergences (P )) where divergences (P )
is dened as the set of all traces that can lead to divergent behavior and failures (P ) = failures (P )
{(s, X) | s divergences (P )} .

CSP has been imbued with several dierent formal semantics, which dene the meaning of syntactically cor- 7.4 Tools
rect CSP expressions. The theory of CSP includes mutually 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
of machine-readable syntaxes for CSP, making input
Denotational semantics
les written for dierent tools incompatible. However,
The three major denotational models of CSP are the most CSP tools have now standardized on the machinetraces model, the stable failures model, and the fail- readable dialect of CSP devised by Bryan Scattergood,
[16]
The CSPM dialect
ures/divergences model. Semantic mappings from pro- sometimes referred to as CSPM.
cess expressions to each of these three models provide of CSP possesses a formally dened operational semantics, which includes an embedded functional programthe denotational semantics for CSP.[1]
ming language.
The traces model denes the meaning of a process expression as the set of sequences of events (traces) that the The most well-known CSP tool is probably Failures/Divergence Renement 2 (FDR2), which is a comprocess can be observed to perform. For example,
mercial product developed by Formal Systems (Europe)
Ltd. FDR2 is often described as a model checker,
traces (STOP) = {} since STOP perbut is technically a renement checker, in that it conforms no events
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 renement of the other within
(a b STOP) can be observed to
some specied 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 renement check. FDR2 has been succeeded
model is dened 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.
traces (P ) is prex-closed)

The Adelaide Renement Checker (ARC) [19] is a CSP renement checker developed by the Formal Modelling and

60

CHAPTER 7. COMMUNICATING SEQUENTIAL PROCESSES

Verication Group at The University of Adelaide. ARC


diers from FDR2 in that it internally represents CSP
processes as Ordered Binary Decision Diagrams (OBDDs), which alleviates the state explosion problem of explicit LTS representations without requiring the use of
state-space compression algorithms such as those used in
FDR2.
The ProB project,[20] which is hosted by the Institut fr
Informatik, Heinrich-Heine-Universitt Dsseldorf, was
originally created to support analysis of specications
constructed in the B method. However, it also includes
support for analysis of CSP processes both through renement checking, and LTL model-checking. ProB can
also be used to verify properties of combined CSP and B
specications. A ProBE CSP Animator is integrated in
FDR3.
The Process Analysis Toolkit (PAT) [21][22] is a CSP analysis tool developed in the School of Computing at the
National University of Singapore. PAT is able to perform
renement checking, LTL model-checking, and simulation of CSP and Timed CSP processes. The PAT process
language extends CSP with support for mutable shared
variables, asynchronous message passing, and a variety
of fairness and quantitative time related process constructs such as deadline and waituntil. The underlying
design principle of the PAT process language is to combine a high-level specication language with procedural
programs (e.g. an event in PAT may be a sequential program or even an external C# library call) for greater expressiveness. Mutable shared variables and asynchronous
channels provide a convenient syntactic sugar for wellknown process modelling patterns used in standard CSP.
The PAT syntax is similar, but not identical, to CSPM.[23]
The principal dierences between the PAT syntax and
standard CSPM are the use of semicolons to terminate
process expressions, the inclusion of syntactic sugar for
variables and assignments, and the use of slightly dierent syntax for internal choice and parallel composition.
CSPsim[24] is a lazy simulator. It does not model check
CSP, but is useful for exploring very large (potentially
innite) systems.

7.5 Related formalisms


Several other specication languages and formalisms
have been derived from, or inspired by, the classic untimed CSP, including:
Timed CSP, which incorporates timing information
for reasoning about real-time systems
Receptive Process Theory, a specialization of CSP
that assumes an asynchronous (i.e. nonblocking)
send operation
CSPP

HCSP
Wright, an architecture description language
TCOZ, an integration of Timed CSP and Object Z
Circus, an integration of CSP and Z based on the
Unifying Theories of Programming
CML (COMPASS Modelling Language), a combination of Circus and VDM developed for the modelling of Systems of Systems (SoS)
CspCASL, an extension of CASL that integrates
CSP
LOTOS, an international standard[25] that incorporates features of CSP and CCS.

7.6 Comparison with the Actor


Model
In as much as it is concerned with concurrent processes
that exchange messages, the Actor model is broadly similar to CSP. However, the two models make some fundamentally dierent choices with regard to the primitives
they provide:
CSP processes are anonymous, while actors have
identities.
CSP message-passing fundamentally involves a rendezvous between the processes involved in sending and receiving the message, i.e. the sender cannot transmit a message until the receiver is ready
to accept it. In contrast, message-passing in actor
systems is fundamentally asynchronous, i.e. message transmission and reception do not have to happen at same time, and senders may transmit messages before receivers are ready to accept them.
These approaches may be considered duals of each
other, in the sense that rendezvous-based systems
can be used to construct buered communications
that behave as asynchronous messaging systems,
while asynchronous systems can be used to construct rendezvous-style communications by using a
message/acknowledgement protocol to synchronize
senders and receivers.
CSP uses explicit channels for message passing,
whereas actor systems transmit messages to named
destination actors. These approaches may also be
considered duals of each other, in the sense that
processes receiving through a single channel eectively have an identity corresponding to that channel, while the name-based coupling between actors
may be broken by constructing actors that behave as
channels.

7.8. FURTHER READING

7.7 See also


Trace theory, the general theory of traces.
Trace monoid and history monoid, the mathematical
formalism of which CSP is an example.

61

7.8 Further reading


Hoare, C. A. R. (2004) [1985]. Communicating
Sequential Processes. Prentice Hall International.
ISBN 0-13-153271-5.

occam was the rst language implementing a CSP


model.

This book has been updated by Jim Davies at


the Oxford University Computing Laboratory
and the new edition is available for download
as a PDF le at the Using CSP website.

Ease programming language combines the process


constructs of CSP with logically shared data structures.

Roscoe, A. W. (1997). The Theory and Practice of


Concurrency. Prentice Hall. ISBN 0-13-674409-5.

JCSP is a blending of CSP and occam concepts in a


Java thread support API.

Some links relating to this book are available


here. The full text is available for download
as a PS or PDF le from Bill Roscoes list of
academic publications.

XC is a language developed by XMOS which was


heavily inuenced by CSP and occam
Limbo is a language that implements concurrency
inside the Inferno operating system, in a style inspired by CSP.
Plan 9 from Bell Labs and Plan 9 from User Space
include the libthread library which allows the use of
a CSP-inspired concurrency model from C.
VerilogCSP is a set of macros added to Verilog
HDL to support communicating sequential processes channel communications.
SystemVerilogCSP[26]
is
a
package
for
SystemVerilog that enables abstract CSP-like
communication actions in SystemVerilog.
Go is a programming language by Google incorporating ideas from CSP.[4][27]
Joyce is a programming language based on the principles of CSP, developed by Brinch Hansen around
1989.
SuperPascal is a programming language also developed by Brinch Hansen, inuenced by CSP and his
earlier work with Joyce.
Ada implements features of CSP such as the rendezvous.
DirectShow is the video framework inside DirectX,
it uses the CSP concepts to implement the audio and
video lters.

7.9 References
[1] Roscoe, A. W. (1997). The Theory and Practice of Concurrency. Prentice Hall. ISBN 0-13-674409-5.
[2] INMOS (1995-05-12). occam 2.1 Reference Manual
(PDF). SGS-THOMSON Microelectronics Ltd., INMOS
document 72 occ 45 03
[3] Resources about threaded programming in the Bell Labs
CSP style. Retrieved 2010-04-15.
[4] Language Design FAQ: Why build concurrency on the
ideas of CSP?".
[5] Hoare, C. A. R. (1978). Communicating sequential processes. Communications of the ACM. 21 (8): 666677.
doi:10.1145/359576.359585.
[6] Abdallah, Ali E.; Jones, Cli B.; Sanders, Je W. (2005).
Communicating Sequential Processes: The First 25 Years.
LNCS. 3525. Springer.
[7] Barrett, G. (1995).
Model checking in practice:
The T9000 Virtual Channel Processor. IEEE Transactions on Software Engineering.
21 (2): 6978.
doi:10.1109/32.345823.
[8] Hall, A; Chapman, R. (2002). Correctness by construction: Developing a commercial secure system (PDF).
IEEE Software. 19 (1): 1825. doi:10.1109/52.976937.
[9] Creese, S. (2001). Data Independent Induction: CSP
Model Checking of Arbitrary Sized Networks. D. Phil.
Oxford University.
[10] Hoare, C. A. R. (1985). Communicating Sequential Processes. Prentice Hall. ISBN 0-13-153289-8.

OpenComRTOS is a formally developed network[11] Clinger, William (June 1981). Foundations of Actor Secentric distributed RTOS based on a pragmatic sumantics. Mathematics Doctoral Dissertation. MIT.
perset of CSP.
Input/output automaton
Parallel programming model

[12] Brookes, Stephen; Hoare, C. A. R.; Roscoe, A. W.


(1984). A Theory of Communicating Sequential ProJournal of the ACM. 31 (3): 560599.
cesses.
doi:10.1145/828.833.

62

CHAPTER 7. COMMUNICATING SEQUENTIAL PROCESSES

[13] Buth, B.; M. Kouvaras; J. Peleska; H. Shi (December


1997). Deadlock analysis for a fault-tolerant system.
Proceedings of the 6th International Conference on Algebraic Methodology and Software Technology (AMAST97).
pp. 6075.
[14] Buth, B.; J. Peleska; H. Shi (January 1999). Combining methods for the livelock analysis of a fault-tolerant
system. Proceedings of the 7th International Conference on Algebraic Methodology and Software Technology
(AMAST98). pp. 124139.
[15] Lowe, G. (1996). Breaking and xing the NeedhamSchroeder public-key protocol using FDR. Tools and
Algorithms for the Construction and Analysis of Systems
(TACAS). Springer-Verlag. pp. 147166.
[16] Scattergood, J.B. (1998). The Semantics and Implementation of Machine-Readable CSP. D.Phil. Oxford University Computing Laboratory.
[17] A.W. Roscoe (1994). Model-checking CSP. In A Classical Mind: essays in Honour of C.A.R. Hoare. Prentice
Hall.
[18] Introduction to FDR3
[19] Parashkevov, Atanas N.; Yantchev, Jay (1996). ARC - a
tool for ecient renement and equivalence checking for
CSP. IEEE Int. Conf. on Algorithms and Architectures for
Parallel Processing ICA3PP '96. pp. 6875. 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 Verication under Fairness (PDF).
Proceedings of the 20th International Conference on
Computer-Aided Verication (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 Analysis Toolkit (PDF). Proceedings of the Third International
Symposium on Leveraging Applications of Formal Methods, Verication and Validation (ISoLA 2008). Communications in Computer and Information Science. Springer.
pp. 307322. Retrieved 2009-01-15.
[23] Sun, Jun; Liu, Yang; Dong, Jin Song; Chen, Chunqing (2009). Integrating Specications and Programs
for System Specication and Verication (PDF). IEEE
Int. Conf. on Theoretical Aspects of Software Engineering
TASE '09. Retrieved 2009-04-13.
[24] Brooke, Phillip; Paige, Richard (2007). Lazy Exploration and Checking of CSP Models with CSPsim. Communicating Process Architectures 2007.
[25] ISO 8807, Language of Temporal Ordering Specication
[26] Saifhashemi, A.; Beerel, P. (June 2011). SystemVerilogCSP: Modeling Digital Asynchronous Circuits Using
SystemVerilog Interfaces. Proceedings of Communicating Process Architectures 2011 - WoTUG- 33 (CPA2011).

[27] Origins of Go concurrency style. Talk by Rob Pike at OSCONs Emerging Languages Camp 2010.

7.10 External links


A PDF version of Hoares CSP book - Copyright restriction apply, see the page text before downloading.
WoTUG, a User Group for CSP and occam style
systems, contains some information about CSP and
useful links.
CSP Citations from CiteSeer
LuaCSP, a framework that allows you to create CSP
Occam-like Lua-based programming language embeddable in your application.
scala-gopher is an implementation of CSP in scala

Chapter 8

Communication
Communication (from Latin commnicre, meaning to
share[1] ) is the act of conveying intended meanings from
one entity or group to another through the use of mutually
understood signs and semiotic rules.

Nonverbal communication describes the process of conveying meaning in the form of non-word messages. Examples of nonverbal communication include haptic communication, chronemic communication, gestures, body
language, facial expression, eye contact, and how one
The basic steps of communication are:
dresses. Nonverbal communication also relates to intent 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
non-verbal facial expressions, and a further 38% through
of signals using a specic channel or medium
para-language.[3] It aects communication most at the
subconscious level and establishes trust. Likewise, writ5. reception of signals
ten texts include nonverbal elements such as handwriting style, spatial arrangement of words and the use of
6. reconstruction of the original message
emoticons to convey emotion.
7. interpretation and making sense of the reconstructed
Nonverbal communication demonstrates one of Wazlawmessage.
icks 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 nonverbal communication in humans are to complement and il information theory which studies the quantication, lustrate, to reinforce and emphasize, to replace and substorage, and communication of information in gen- stitute, to control and regulate, and to contradict the denotative message.
eral;
communication studies which concerns human communication;

8.2 Verbal communication

biosemiotics which examines the communication of


organisms in general.
Eective 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 clarication. Human
electromagnetic, or biochemical. Human communication language can be dened as a system of symbols (sometimes known as lexemes) and the grammars (rules) by
is unique for its extensive use of abstract language.
which the symbols are manipulated. The word language also refers to common properties of languages.
Language learning normally occurs most intensively dur8.1 Nonverbal communication
ing human childhood. Most of the thousands of human languages use patterns of sound or gesture for symMain article: Nonverbal communication
bols which enable communication with others around
them. Languages tend to share certain properties, al63

64

CHAPTER 8. COMMUNICATION

though there are exceptions. There is no dened line between a language and a dialect. Constructed languages
such as Esperanto, programming languages, and various
mathematical formalism is not necessarily restricted to
the properties shared by human languages. Communication is two-way process not merely one way

of tautologies in the universe.[7] This process, which requires a vast repertoire of skills in interpersonal processing, listening, observing, speaking, questioning, analyzing, gestures, and evaluating enables collaboration and
cooperation.[8]

Misunderstandings can be anticipated and solved through


formulations, questions and answers, paraphrasing, examples, and stories of strategic talk. Written commuUse standard terminology when communicating in- nication can be claried by planning follow-up talks on
critical written communication as part of the everyday
formation.
way of doing business. A few minutes spent talking in
Request and provide clarication when needed.
the present will save valuable time later by avoiding misunderstandings in advance. A frequent method for this
Ensure statements are direct and unambiguous.
purpose is reiterating what one heard in ones own words
Inform the appropriate individuals when the mission and asking the other person if that really was what was
meant (paraphrasing).[9]
or plans change.

An Eective Communication Process*:


1.
2.
3.
4.

5. Communicate all information needed by those individuals or teams external to the team.
6. Use nonverbal communication appropriately.
7. Use proper
information.[5]

order

when

8.4 Business communication

communicating Main article: Business communication

* for formal English-speaking groups

8.3 Written communication and its


historical development

Business communications is used for a wide variety of


activities including, but not limited to: strategic communications planning, media relations, public relations
(which can include social media, broadcast and written
communications, and more), brand management, reputation management, speech-writing, customer-client relations, and internal/employee communications.

Companies with limited resources may choose to engage


in only a few of these activities, while larger organizations
may employ a full spectrum of communications. Since it
is dicult to develop such a broad range of skills, communications 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 knowlinto three information communication revolutions":[6]
edge of most of them. By far, the most important qualications communications professionals can possess are
1. Written communication rst emerged through the excellent writing ability, good 'people' skills, and the cause of pictographs. The pictograms were made in pacity to think critically and strategically.
stone, hence written communication was not yet mobile. Pictograms began to develop standardized and
simplied forms.
Over time the forms of and ideas about communication
have evolved through the continuing progression of technology. Advances include communications psychology
and media psychology, an emerging eld of study.

8.5 Family communication

2. The next step occurred when writing began to appear on paper, papyrus, clay, wax, and other media with common shared writing systems, leading to
adaptable alphabets. Communication became mobile.

Family communication is the study and of the communication perspective in a broadly dened family, with intimacy and trusting relationship.[10] The main goal of family communication is to understand the interactions of
3. The nal stage is characterized by the trans- family and the pattern of behaviors of family members
fer of information through controlled waves of in dierent circumstances.
electromagnetic radiation (i.e., radio, microwave, Family communication study looks at topics such as faminfrared) and other electronic signals.
ily rules, family roles or family dialectics and how those
factors could aect 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


as marriage, parenthood or divorce and how communication stands in those situations. It is important for family
members to understand communication as a trusted way
which leads to a well constructed family.

8.6 Interpersonal communication


In simple terms, interpersonal communication is the communication between one person and another (or others).
It is often referred to as face-to-face communication between two (or more) people. Both verbal and nonverbal
communication, or body language, play a part in how one
person understands another. In verbal interpersonal communication there are two types of messages being sent: a
content message and a relational message. Content messages are messages about the topic at hand and relational
messages are messages about the relationship itself.[11]
This means that relational messages come across in how
one says something and it demonstrates a persons feelings, whether positive or negative, towards the individual they are talking to, indicating not only how they feel
about the topic at hand, but also how they feel about their
relationship with the other individual.[11] When texting or
posting something on social media the relational message
is lost and can cause people to misinterpret the message.
Computer-mediated communication is a largely studied
topic for this reason along with many others.

8.7 Barriers to eective human


communication
Barriers to eective communication can retard or distort
the message and intention of the message being conveyed
which may result in failure of the communication process or an eect that is undesirable. These include ltering, selective perception, information overload, emotions, language, silence, communication apprehension,
gender dierences and political correctness[12]
This also includes a lack of expressing knowledgeappropriate communication, which occurs when a person uses ambiguous or complex legal words, medical jargon, or descriptions of a situation or environment that is
not understood by the recipient.
Physical barriers. Physical barriers are often due
to the nature of the environment. An example of
this is the natural barrier which exists if sta are
located in dierent buildings or on dierent sites.
Likewise, poor or outdated equipment, particularly
the failure of management to introduce new technology, may also cause problems. Sta shortages
are another factor which frequently causes communication diculties for an organization.

65

System design. System design faults refer to problems with the structures or systems in place in an
organization. Examples might include an organizational structure which is unclear and therefore makes
it confusing to know whom to communicate with.
Other examples could be inecient or inappropriate
information systems, a lack of supervision or training, and a lack of clarity in roles and responsibilities
which can lead to sta being uncertain about what
is expected of them.
Attitudinal barriers. Attitudinal barriers come
about as a result of problems with sta in an organization. These may be brought about, for example, by
such factors as poor management, lack of consultation with employees, personality conicts which can
result in people delaying or refusing to communicate, the personal attitudes of individual employees
which may be due to lack of motivation or dissatisfaction at work, brought about by insucient training to enable them to carry out particular tasks, or
simply resistance to change due to entrenched attitudes and ideas.
Ambiguity of words/phrases. Words sounding the
same but having dierent meaning can convey a different meaning altogether. Hence the communicator must ensure that the receiver receives the same
meaning. It is better if such words are avoided by
using alternatives whenever possible.
Individual linguistic ability. The use of jargon,
dicult or inappropriate words in communication
can prevent the recipients from understanding the
message. Poorly explained or misunderstood messages can also result in confusion. However, research in communication has shown that confusion
can lend legitimacy to research when persuasion
fails.[13][14]
Physiological barriers. These may result from
individuals personal discomfort, causedfor
exampleby ill health, poor eyesight or hearing
diculties.
Bypassing. These happens when the communicators (sender and the receiver) do not attach the same
symbolic meanings to their words. It is when the
sender is expressing a thought or a word but the receiver take it in a dierent meaning. For exampleASAP, Rest room
Technological multi-tasking and absorbency.
With a rapid increase in technologically-driven communication in the past several decades, individuals
are increasingly faced with condensed communication in the form of e-mail, text, and social updates.
This has, in turn, led to a notable change in the
way younger generations communicate and perceive
their own self-ecacy to communicate and connect

66

CHAPTER 8. COMMUNICATION
with others. With the ever-constant presence of another world in ones pocket, individuals are multitasking both physically and cognitively as constant
reminders of something else happening somewhere
else bombard them. Though perhaps too new of an
advancement to yet see long-term eects, this is a
notion currently explored by such gures as Sherry
Turkle.[15]

Fear of being criticized. This is a major factor that


prevents good communication. If we exercise simple practices to improve our communication skill,
we can become eective communicators. For example, read an article from the newspaper or collect
some news from the television and present it in front
of the mirror. This will not only boost your condence, but also improve your language and vocabulary.

8.7.1

Cultural aspects

Paralinguistics are the voice involved in communication other than actual language and involves tones,
pitch, vocal cues etc. It also include sounds from
throat and all these are greatly inuenced by cultural
dierences across borders.
Proxemics deals with the concept of space element
in communication. Proxemics explains four zones
of spaces namely intimate personal, social and public. This concept diers with dierent culture as the
permissible space vary in dierent countries.
Artifactics studies about the non verbal signals or
communication which emerges from personal accessories such as dresses or fashion accessories worn
and it varies with culture as people of dierent countries follow dierent dressing codes.
Chronemics deal with the time aspects of communication and also include importance given to
the time. some issues explaining this conceptpt
are pauses, silences and response lag during an
interaction. This aspect of communication is also
inuenced by cultural dierences as it is well known
that there is a great dierence in the value given by
dierent cultures to time.

Cultural
dierences
exist
within
countries
(tribal/regional dierences, dialects etc.), between
religious groups and in organisations or at an organisa Kinesics mainly deals with the body languages such
tional level - where companies, teams and units may have
as postures, gestures, head nods, leg movements etc.
dierent expectations, norms and idiolects. Families
In
dierent countiessame gestures and postures are
and family groups may also experience the eect of
used
to convey dierent messages. Sometimes even
cultural barriers to communication within and between
a
particular
kinesic indicating something good in a
dierent family members or groups. For example:
country
may
have a negative meaning in any other
words, colours and symbols have dierent meanings in
culture.
dierent cultures. In most parts of the world, nodding
your head means agreement, shaking your head means
So in order to have an eective communication across
no, except in some parts of the world.[16]
world it is desirable to have a knowledge of cultural variCommunication to a great extent is inuenced by culables eecting 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 dierent 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 imcommunication are of great relevance in todays world portant and the speaker controls the interaction; and
which is now a global village, thanks to globalisation. contained in a relatively short, dened time frame.
Cultural aspects of communication are the cultural dif- However, traditional Aboriginal conversational interacferences which inuences communication across borders. tion is communal, broadcast to many people, eye conImpact of cultural dierences on communication compo- tact is not important, the listener controls the interaction;
and continuous, spread over a longer, indenite time
nents are explained below:
frame.[21][22]
1) Verbal communication refers to form of communication 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 dierence play its role. All countries have
dierent languages and to have a better understanding of See also: Biocommunication (science), Interspecies
dierent culture it is required to have knowledge of lan- communication, and Biosemiotics
guages of dierent countries.
2) Non verbal communication is a very wide concept and
it includes all the other forms of communication which
do not uses written or spoken words. Non verbal communication takes following forms:

Every information exchange between living organisms


i.e. transmission of signals that involve a living sender
and receiver can be considered a form of communication; and even primitive creatures such as corals are

8.9. MODELS OF COMMUNICATION

67

competent to communicate. Nonhuman communication


also include cell signaling, cellular communication, and
chemical transmissions between primitive organisms like
bacteria and within the plant and fungal kingdoms.

organism to react. This implies that fungal organisms can


dierentiate between molecules taking part in biotic messages and similar molecules being irrelevant in the situation. So far ve dierent primary signalling molecules are
known to coordinate dierent behavioral patterns such as
lamentation, mating, growth, and pathogenicity. Behavioral coordination and production of signaling substances
8.8.1 Animals
is achieved through interpretation processes that enables
The broad eld of animal communication encompasses the organism to dier between self or non-self, a biotic
most of the issues in ethology. Animal communication indicator, biotic message from similar, related, or noncan be dened as any behavior of one animal that af- related species, and even lter 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 human 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 eld, 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 elds 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 bacteconduct, long thought to be well understood, has been ria. This was rst observed by Fuqua et al. in marine
[27]
revolutionized. A special eld of animal communication microorganisms like V. harveyi and V. scheri.
has been investigated in more detail such as vibrational
communication.[23]

8.9 Models of communication

8.8.2

Plants and fungi

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 governed by syntactic, pragmatic, and semantic rules, and
are possible because of the decentralized nervous system of plants. The original meaning of the word neuron in Greek is vegetable ber and recent research has
shown that most of the microorganism plant communication processes are neuron-like.[24] Plants also communicate via volatiles when exposed to herbivory attack behavior, thus warning neighboring plants.[25] In parallel they
produce other volatiles to attract parasites which attack
these herbivores. In stress situations plants can overwrite
the genomes they inherited from their parents and revert
to that of their grand- or great-grandparents.
Fungi communicate to coordinate and organize their
growth and development such as the formation of
Marcelia and fruiting bodies. Fungi communicate with
their own and related species as well as with non fungal
organisms in a great variety of symbiotic interactions, especially with bacteria, unicellular eukaryote, plants and
insects through biochemicals of biotic origin. The biochemicals trigger the fungal organism to react in a specic manner, while if the same chemical molecules are
not part of biotic messages, they do not trigger the fungal

Main article: Models of communication


The rst major model for communication was intro-

Shannon and Weaver Model of Communication

duced by Claude Shannon and Warren Weaver for Bell


Laboratories in 1949[28] The original model was designed
to mirror the functioning of radio and telephone technologies. Their initial model consisted of three primary
parts: sender, channel, and receiver. The sender was the
part of a telephone a person spoke into, the channel was
the telephone itself, and the receiver was the part of the
phone where one could hear the other person. Shannon
and Weaver also recognized that often there is static that
interferes with one listening to a telephone conversation,
which they deemed noise.
In a simple model, often referred to as the transmission
model or standard view of communication, information
or content (e.g. a message in natural language) is sent in
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 signals


3. A channel, to which signals are adapted for transmission
Berlos Sender-Message-Channel-Receiver Model of Communication

4. A noise source, which distorts the signal while it


propagates through the channel

5. A receiver, which 'decodes (reconstructs) the mesencoder to a destination/ receiver/ decoder. This comsage from the signal.
mon conception of communication simply views com6. A destination, where the message arrives.
munication as a means of sending and receiving information. The strengths of this model are simplicity, generality, and quantiability. 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:
1. An information source, which produces a message.

The technical problem: how accurately can the


message be transmitted?

8.9. MODELS OF COMMUNICATION


The semantic problem: how precisely is the
meaning 'conveyed'?
The eectiveness problem: how eectively
does the received meaning aect behavior?
Daniel Chandler[29]
stating:

69
secondary phenomena that followed the primary acquisition of communicative competences within social interactions.

In light of these weaknesses, Barnlund (2008) proposed


a transactional model of communication.[32] The basic
critiques the transmission model by premise of the transactional model of communication is
that individuals are simultaneously engaging in the sending and receiving of messages.

It assumes communicators are isolated individuals.


No allowance for diering purposes.
No allowance for diering interpretations.
No allowance for unequal power relations.
No allowance for situational contexts.
In 1960, David Berlo expanded on Shannon and Weavers
(1949) linear model of communication and created
the SMCR Model of Communication.[30] The SenderMessage-Channel-Receiver Model of communication
separated the model into clear parts and has been expanded upon by other scholars.
Communication is usually described along a few major
dimensions: Message (what type of things are communicated), source / emisor / sender / encoder (by whom),
form (in which form), channel (through which medium),
destination / receiver / target / decoder (to whom), and
Receiver. Wilbur Schram (1954) also indicated that we
should also examine the impact that a message has (both
desired and undesired) on the target of the message.[31]
Between parties, communication includes acts that confer
knowledge and experiences, give advice and commands,
and ask questions. These acts may take many forms, in
one of the various manners of communication. The form
depends on the abilities of the group communicating. Together, communication content and form make messages
that are sent towards a destination. The target can be oneself, another person or being, another entity (such as a
corporation or group of beings).

In a slightly more complex form a sender and a receiver


are linked reciprocally. This second attitude of communication, referred to as the constitutive model or constructionist view, focuses on how an individual communicates
as the determining factor of the way the message will be
interpreted. Communication is viewed as a conduit; a
passage in which information travels from one individual
to another and this information becomes separate from
the communication itself. A particular instance of communication is called a speech act. The senders personal
lters and the receivers personal lters may vary depending upon dierent regional traditions, cultures, or gender; which may alter the intended meaning of message
contents. In the presence of "communication noise" on
the transmission channel (air, in this case), reception and
decoding of content may be faulty, and thus the speech
act may not achieve the desired eect. One problem
with this encode-transmit-receive-decode model is that
the processes of encoding and decoding imply that the
sender and receiver each possess something that functions
as a codebook, and that these two code books are, at the
very least, similar if not identical. Although something
like code books is implied by the model, they are nowhere
represented in the model, which creates many conceptual
diculties.

Theories of coregulation describe communication as a


creative and dynamic continuous process, rather than
a discrete exchange of information. Canadian media
scholar Harold Innis had the theory that people use different types of media to communicate and which one
they choose to use will oer dierent possibilities for the
shape and durability of society (Wark, McKenzie 1997).
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 dierent properties stone and papyrus. Papyrus is what he called 'Space Binding'. it made possible
1. Pragmatic (concerned with the relations between the transmission of written orders across space, empires
and enables the waging of distant military campaigns and
signs/expressions and their users)
colonial administration. The other is stone and 'Time
2. Semantic (study of relationships between signs and Binding', through the construction of temples and the
pyramids can sustain their authority generation to gensymbols and what they represent) and
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

8.10 Noise
In any communication model, noise is interference with
the decoding of messages sent over a channel by an encoder. There are many examples of noise:
Environmental noise. Noise that physically disrupts communication, such as standing next to loud
speakers at a party, or the noise from a construction
site next to a classroom making it dicult to hear
the professor.
Physiological-impairment noise. Physical maladies that prevent eective communication, such
as actual deafness or blindness preventing messages
from being received as they were intended.
Semantic noise. Dierent interpretations of the
meanings of certain words. For example, the word
weed can be interpreted as an undesirable plant in
a yard, or as a euphemism for marijuana.
Syntactical noise. Mistakes in grammar can disrupt communication, such as abrupt changes in verb
tense during a sentence.
Organizational noise. Poorly structured communication can prevent the receiver from accurate interpretation. For example, unclear and badly stated
directions can make the receiver even more lost.
Cultural noise. Stereotypical assumptions can
cause misunderstandings, such as unintentionally offending a non-Christian person by wishing them a
Merry Christmas.
Psychological noise. Certain attitudes can also
make communication dicult. For instance, great
anger or sadness may cause someone to lose focus on
the present moment. Disorders such as autism may
also severely hamper eective communication.[33]

CHAPTER 8. COMMUNICATION
Four Cs of 21st century learning
Human communication
Inter Mirica
Intercultural communication
Ishin-denshin
Sign system
Small talk
SPEAKING
Telecommunication
Telepathy
Understanding
21st century skills

8.13 References
[1] Harper, Douglas. communication. Online Etymology
Dictionary. Retrieved 2013-06-23.
[2] Types of Body Language. www.simplybodylanguage.
com. Retrieved 2016-02-08.
[3] Mehrabian, A. (1972).
Transaction Publishers.

Nonverbal communication.

[4] Wazlawick, Paul (1970s) opus


[5] Eective Communication. Be Inuenced, Figure 7-1
Presents a Communication Model. SHANNONS COMMUNICATIONS MODEL(n.d.): n. pag. Web.
[6] Xin Li. Complexity Theory the Holy Grail of 21st Century. Lane Dept of CSEE, West Virginia University.
[7] Bateson, Gregory (1960) Steps to an Ecology of Mind
[8] communication. The oce of superintendent of Public
Instruction. Washington.

8.11 Communication as academic


discipline
Main article: Communication studies

8.12 See also


Advice
Augmentative and alternative communication
Communication rights
Data communication

[9] Heyman, Richard. Why Didn't You Say That in the First
Place? How to Be Understood at Work.
[10] Turner, L. H., & West, R. L. (2013). Perspectives on family communication. Boston, MA: McGraw-Hill.
[11] Trenholm, Sarah; Jensen, Arthur (2013). Interpersonal
Communication Seventh Edition. New York: Oxford University Press. pp. 360361.
[12] Robbins, S., Judge, T., Millett, B., & Boyle, M. (2011).
Organisational Behaviour. 6th ed. Pearson, Frenchs Forest, NSW p315-317.
[13] What Should Be Included in a Project Plan - Retrieved
December 18th, 2009
[14] J. Scott Armstrong (1980). Baegab Pays (PDF). Psychology Today: 12.

8.14. FURTHER READING

[15] Technology can sometimes hinder communication, TR


staers observe - The Collegian. The Collegian. Retrieved 2016-01-11.
[16] Nageshwar Rao, Rajendra P.Das, Communication skills,
Himalaya Publishing House, 9789350516669, p.48
[17] http://expertscolumn.com/content/
communication-and-cognitive-components-culture
[18] http://www.beyondintractability.org/bi-essay/
cross-cultural-communication

71

[32] Barnlund, D. C. (2008). A transactional model of communication. In. C. D. Mortensen (Eds.), Communication
theory (2nd ed., pp47-57). New Brunswick, New Jersey:
Transaction.
[33] Roy M. Berko, et al., Communicating. 11th ed. (Boston,
MA: Pearson Education, Inc., 2010) 9-12

8.14 Further reading

Innis, Harold. Empire and Communications. Rev.


[19] http://www.studymode.com/essays/
by Mary Q. Innis; foreword by Marshall McLuhan.
Important-Components-Of-Cross-Cultural-Communication-595745.
Toronto, Ont.: University of Toronto Press, 1972.
html
[20] http://www.ijdesign.org/ojs/index.php/IJDesign/article/
view/313/155
[21] Zuckermann, Ghil'ad; et al. (2015), ENGAGING - A
Guide to Interacting Respectfully and Reciprocally with
Aboriginal and Torres Strait Islander People, and their Arts
Practices and Intellectual Property (PDF), Australian Government: Indigenous Culture Support, p. 12, retrieved 25
June 2016
[22] Walsh, Michael (1997), Cross cultural communication
problems in Aboriginal Australia, Australian National University, North Australia Research Unit, pp. 79, retrieved
25 June 2016
[23] Randall J.A. (2014). Vibrational Communication: Spiders to Kangaroo Rats. In: Witzany, G. (ed). Biocommunication 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):
277279. 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 Communication, 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 eects of communication
(pp. 326). Urbana, Illinois: University of Illinois Press.

xii, 184 p. N.B.: Here he [i.e. Innis] develops his


theory that the history of empires is determined to
a large extent by their means of communication.
From the back cover of the books pbk. ed. ISBN
0-8020-6119-2 pbk

Chapter 9

Communications protocol
In telecommunications, a communication protocol is
a system of rules that allow two or more entities of a
communications system to transmit information via any
kind of variation of a physical quantity. These are the
rules or standard that denes the syntax, semantics and
synchronization of communication and possible error recovery methods. Protocols may be implemented by
hardware, software, or a combination of both.[1]

using a shared transmission medium. Transmission is not


necessarily reliable, and individual systems may use different hardware or operating systems.

To implement a networking protocol, the protocol software modules are interfaced with a framework implemented on the machines operating system. This framework implements the networking functionality of the operating system.[6] The best known frameworks are the
Communicating systems use well-dened 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 comfrom a range of possible responses pre-determined piler and operating system design and, given the similarfor that particular situation. The specied behavior is ities between programming languages and communicatypically 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 hanis 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
suite.[9] Some of the best known protocol suites include:
programming languages are to computations.[3]
IPX/SPX, X.25, AX.25, AppleTalk and TCP/IP.

The information exchanged between devices through a


network, or other media is governed by rules and conventions that can be set out in technical specications
called communications protocol standards. The nature
of a communication, the actual data exchanged and any
state-dependent behaviors, is dened by these specications.

The protocols can be arranged based on functionality in


groups, for instance there is a group of transport protocols. The functionalities are mapped onto the layers, each
layer solving a distinct class of problems relating to, for
instance: application-, transport-, internet- and network
interface-functions.[10] To transmit a message, a protocol
has to be selected from each layer, so some sort of multiplexing and demultiplexing takes place. The selection of
the next protocol is accomplished by extending the message with a protocol selector for each layer.[11]

In digital computing systems, the rules can be expressed


by algorithms and data structures. Expressing the algorithms in a portable programming language makes the
protocol software operating-system independent.

9.2 Basic requirements of protocols

Operating systems usually contain a set of cooperating


processes that manipulate shared data to communicate
with each other. This communication is governed by
well-understood protocols, which can be embedded in the
process code itself.[4][5]

Messages are sent and received on communicating systems to establish communications. Protocols should
therefore specify rules governing the transmission. In
general, much of the following should be addressed:[12]

In contrast, because there is no common memory, communicating systems have to communicate with each other

Data formats for data exchange. Digital message

9.1 Communicating systems

72

9.3. PROTOCOLS AND PROGRAMMING LANGUAGES

73

bitstrings are exchanged. The bitstrings are divided


in elds and each eld carries information relevant
to the protocol. Conceptually the bitstring is divided
into two parts called the header area and the data
area. The actual message is stored in the data area,
so the header area contains the elds with more relevance to the protocol. Bitstrings longer than the
maximum transmission unit (MTU) are divided in
pieces of appropriate size.[13]

a permanently broken link, the retransmission has no


eect so the number of retransmissions is limited.
Exceeding the retry limit is considered an error.[18]

Address formats for data exchange. Addresses are


used to identify both the sender and the intended
receiver(s). The addresses are stored in the header
area of the bitstrings, allowing the receivers to determine whether the bitstrings are intended for themselves and should be processed or should be ignored.
A connection between a sender and a receiver can be
identied using an address pair (sender address, receiver address). Usually some address values have
special meanings. An all-1s address could be taken
to mean an addressing of all stations on the network,
so sending to this address would result in a broadcast on the local network. The rules describing the
meanings of the address value are collectively called
an addressing scheme.[14]

Direction of information ow needs to be addressed


if transmissions can only occur in one direction at a
time as on half-duplex links. This is known as Media
Access Control. Arrangements have to be made to
accommodate the case when two parties want to gain
control at the same time.[19]
Sequence control. We have seen that long bitstrings
are divided in pieces, and then sent on the network individually. The pieces may get lost or delayed or take dierent routes to their destination on
some types of networks. As a result, pieces may
arrive out of sequence. Retransmissions can result
in duplicate pieces. By marking the pieces with sequence information at the sender, the receiver can
determine what was lost or duplicated, ask for necessary retransmissions and reassemble the original
message.[20]
Flow control is needed when the sender transmits
faster than the receiver or intermediate network
equipment can process the transmissions. Flow control can be implemented by messaging from receiver
to sender.[21]

Address mapping. Sometimes protocols need to map


addresses of one scheme on addresses of another
scheme. For instance to translate a logical IP address specied by the application to an Ethernet Getting the data across a network is only part of the probhardware address. This is referred to as address lem for a protocol. The data received has to be evalumapping.[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 semannected using routers. This way of connecting net- tics of the communications.
works is called internetworking.
Detection of transmission errors is necessary on networks 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 dierences caused by errors.
or proThe receiver rejects the packets on CRC dierences Protocols are to communications what algorithms
[3][22]
gramming
languages
are
to
computations.
[16]
and arranges somehow for retransmission.
This analogy has important consequences for both the de Acknowledgements of correct reception of packets sign and the development of protocols. One has to conis required for connection-oriented communication. sider the fact that algorithms, programs and protocols are
Acknowledgements are sent from receivers back to just dierent ways of describing expected behavior of intheir 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 suer from long de- pages which are the actual web protocols.
lays. To cope with this, under some protocols, a
sender may expect an acknowledgement of correct
reception from the receiver within a certain amount
of time. On timeouts, the sender must assume the
packet was not received and retransmit it. In case of

In programming languages the association of identiers


to a value is termed a denition. Program text is structured using block constructs and denitions can be local
to a block. The localized association of an identier to a
value established by a denition is termed a binding and

74
the region of program text in which a binding is eective
is known as its scope.[23] The computational state is kept
using two components: the environment, used as a record
of identier bindings, and the store, which is used as a
record of the eects of assignments.[24]

CHAPTER 9. COMMUNICATIONS PROTOCOL


gle universal protocol would be very hard to design and
implement correctly. Instead, the IETF decided to reduce
complexity by assuming a relatively simple network architecture allowing decomposition of the single universal
networking protocol into two generic protocols, TCP and
IP, and two classes of specic protocols, one dealing with
the low-level network details and one dealing with the
high-level details of common network applications (remote login, le transfer, email and web browsing). ISO
choose a similar but more general path, allowing other
network architectures, to standardize protocols.

In communications, message values are transferred using


transmission media. By analogy, the equivalent of a store
would be a collection of transmission media, instead of
a collection of memory locations. A valid assignment
in a protocol (as an analog of programming language)
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 identies 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 proaddress]:=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 synchronization of communication. The syntax and semantics of
tocolling language could easily be imagined.
the communication governed by a low-level protocol usuOperating systems provide reliable communication and
ally have modest complexity, so they can be coded with
synchronization facilities for communicating objects conrelative ease. High-level protocols with relatively large
ned to the same system by means of system libraries. A
complexity could however merit the implementation of
programmer using a general purpose programming lanlanguage 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 proConcurrent programming has traditionally been a topic
tocolling language.
in operating systems theory texts.[28] Formal verication 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] Concurvariety, because all networking protocols use the same rency can also be modelled using nite state machines
underlying principles and concepts, in the same way. like Mealy and Moore machines. Mealy and Moore maSo, the use of a general purpose programming language chines are in use as design tools in digital electronics syswould yield a large number of applications only dier- tems, which we encounter in the form of hardware used in
ing in the details.[27] A suitably dened (dedicated) pro- telecommunications or electronic devices in general.[31]
tocolling language would therefore have little syntax, perThis 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 demaking 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 eect be a protocol, hardly diering
from this universal networking protocol. In this (net- 9.5.1 A basis for protocol design
working) context a protocol is a language.
Systems do not use a single protocol to handle a transmission. Instead they use a set of cooperating protocols,
sometimes called a protocol family or protocol suite.[9] To
cooperate the protocols have to communicate with each
other, so some kind of conceptual framework is needed to
make this communication possible. Also note that softNetworking protocols operate in very heterogeneous en- ware is needed to implement both the 'xfer-mechanism'
vironments consisting of very dierent 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 analoThe notion of a universal networking protocol provides
a rationale for standardization of networking protocols;
assuming the existence of a universal networking protocol, development of protocol standards using a consensus
model (the agreement of a group of experts) might be a
viable way to coordinate protocol design eorts.

9.5. PROTOCOL DESIGN

75

gies between computer communication and program- Protocol layering


ming. By analogy we could say that the aforementioned '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 independent of one another by providing separate execution 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
UDP

TCP
IP
Ethernet protocol

Application
Transport
Internet
Network interface

Figure 2. The TCP/IP model or Internet layering scheme and its


relation to some common protocols.

The communications protocols in use on the Internet are


designed to function in very diverse and complex settings.
To ease design, communications protocols are structured
using a layering scheme as a basis. Instead of using a single universal protocol to handle all transmission tasks, a
set of cooperating protocols tting the layering scheme
is used.[34] The layering scheme in use on the Internet is
called the TCP/IP model. The actual protocols are collectively called the Internet protocol suite. The group responsible for this design is called the Internet Engineering
Task Force (IETF).
Typically, a hardware delivery mechanism layer is used
to build a connectionless packet delivery system on top of
which a reliable transport layer is built, on top of which is
the application software. Layers below and above these
can be dened, and protocols are very often stacked to
give tunnelling, for example the internet protocol can be
tunnelled across an ATM network protocol to provide
connectivity by layering the internet protocol on top of
the ATM protocol transport layer.

Figure 3. Message ows using a protocol suite. Black loops show


the actual messaging loops, red loops are the eective communications between layers enabled by the lower layers.

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
also a functional decomposition, because each protocol
belongs to a functional class, called a protocol layer.[34]
The protocol layers each solve a distinct class of communication problems. The Internet protocol suite consists
of the following layers: application-, transport-, internetand network interface-functions.[10] Together, the layers
make up a layering scheme or model.
In computations, we have algorithms and data, and in
communications, we have protocols and messages, so the
analog of a data ow diagram would be some kind of message ow diagram.[22] To visualize protocol layering and
protocol suites, a diagram of the message ows in and
between two systems, A and B, is shown in gure 3.
The systems both make use of the same protocol suite.
The vertical ows (and protocols) are in system and the
horizontal message ows (and protocols) are between systems. The message ows are governed by rules, and data
formats specied by protocols. The blue lines therefore
mark the boundaries of the (horizontal) protocol layers.
The vertical protocols are not layered because they don't
obey the protocol layering principle which states that a
layered protocol is designed so that layer n at the destination receives exactly the same object sent by layer n at the
source. The horizontal protocols are layered protocols and
all belong to the protocol suite. Layered protocols allow
the protocol designer to concentrate on one layer at a time,
without worrying about how other layers perform.[33]

The number of layers of a layering scheme and the way


the layers are dened can have a drastic impact on the
protocols involved. This is where the analogies come
into play for the TCP/IP model, because the designers
of TCP/IP employed the same techniques used to conquer 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 asand its layering scheme.[35]
sumptions to ensure the protocol layering principle holds

76
for the layered protocols. This can be achieved using a
technique called Encapsulation.[36]
Usually, a message or a stream of data is divided into
small pieces, called messages or streams, packets, IP datagrams 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
identies the source and the destination on the network
of the packet, the protocol, and other data meaningful to
the protocol like CRCs of the data to be sent, data length,
and a timestamp.[37][38]

CHAPTER 9. COMMUNICATIONS PROTOCOL

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 ows in the presence of a router
the reverse is to happen on the receiving side. The result is that at the lowest level the piece looks like this:
Physical networks are interconnected by routers.
'Header1,Header2,Header3,data' and in the layer directly
Routers forward packets between interconnected
above it: 'Header2,Header3,data' and in the top layer:
networks making it possible for hosts to reach hosts
'Header3,data', both on the sending and receiving side.
on other physical networks. The message ows beThis rule therefore ensures that the protocol layering printween two communicating system A and B in the
ciple holds and eectively virtualizes all but the lowest
presence of a router R are illustrated in gure 4.
transmission lines, so for this reason some message ows
Datagrams are passed from router to router until a
are coloured red in gure 3.
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 delivalso carry data identifying the protocol in their header.
ery).[45] To decide whether a datagram is to be delivThe 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 condesigned without the other.[39] Some of the more imporsulted. 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
router known to be closer to the destination.[46] A
The Internet oers universal interconnection, which
special entry can specify that a default router is chomeans that any pair of computers connected to the
sen when there are no known paths.[47]
Internet is allowed to communicate. Each computer
is identied by an address on the Internet. All the in All networks are treated equal. A LAN, a WAN or
terconnected physical networks appear to the user as
a point-to-point link between two computers are all
a single large network. This interconnection scheme
considered as one network.[48]
[40]
is called an internetwork or internet.
Conceptually, an Internet addresses consists of a
netid and a hostid. The netid identies a network and
the hostid identies a host. The term host is misleading in that an individual computer can have multiple
network interfaces each having its own Internet address. An Internet Address identies a connection
to the network, not an individual computer.[41] The
netid is used by routers to decide where to send a
packet.[42]
Network technology independence is achieved using the low-level address resolution protocol (ARP)
which is used to map Internet addresses to physical addresses. The mapping is called address resolution. This way physical addresses are only used
by the protocols of the network interface layer.[43]
The TCP/IP protocols can make use of almost any
underlying communication technology.[44]

A Connectionless packet delivery (or packetswitched) system (or service) is oered by the
Internet, because it adapts well to dierent hardware, including best-eort delivery mechanisms
like the ethernet. Connectionless delivery means
that the messages or streams are divided into
pieces that are multiplexed separately on the high
speed intermachine connections allowing the
connections to be used concurrently. Each piece
carries information identifying the destination.
The delivery of packets is said to be unreliable,
because packets may be lost, duplicated, delayed
or delivered out of order without notice to the
sender or receiver. Unreliability arises only when
resources are exhausted or underlying networks
fail.[49] The unreliable connectionless delivery
system is dened by the Internet Protocol (IP). The
protocol also species the routing function, which

9.5. PROTOCOL DESIGN

77

chooses a path over which data will be sent.[50]


It is also possible to use TCP/IP protocols on
connection oriented systems. Connection oriented
systems build up virtual circuits (paths for exclusive
use) between senders and receivers. Once built
up the IP datagrams are sent as if they were data
through the virtual circuits and forwarded (as data)
to the IP protocol modules. This technique, called
tunneling, can be used on X.25 networks and ATM
networks.[51]

ate. The bottom module directly interacts with the bottom module of system B, so the message is sent across.
On the receiving system B the reverse happens, so ultimately (and assuming there were no transmission errors
or protocol violations etc.) the message gets delivered in
its original form to the topmodule of system B.[54]
On protocol errors, a receiving module discards the piece
it has received and reports back the error condition to the
original source of the piece on the same layer by handing
the error message down or in case of the bottom module
sending it across.[55]
The division of the message or stream of data into pieces
and the subsequent reassembly are handled in the layer
that introduced the division/reassembly. The reassembly
is done at the destination (i.e. not on any intermediate
routers).[56]

A reliable stream transport service using the unreliable connectionless packet delivery service is dened by the transmission control protocol (TCP).
The services are layered as well and the application
programs residing in the layer above it, called the
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 protocol (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 protobytes. The application program passes data to the
cols, the protocol designer can now resume with the softtransport layer for delivery.
ware design. The software has a layered organization and
its relationship with protocol layering is visualized in g Transport layer. The transport layer provides comure 5.
munication from one application to another. The

Figure 5: Protocol and software layering

The software modules implementing the protocols are


represented by cubes. The information ow between the
modules is represented by arrows. The (top two horizontal) red arrows are virtual. The blue lines mark the layer
boundaries.
To send a message on system A, the top module interacts with the module directly below it and hands over the
message to be encapsulated. This module reacts by encapsulating the message in its own data area and lling
in its header data in accordance with the protocol it implements and interacts with the module below it by handing over this newly formed message whenever appropri-

transport layer may regulate ow of information and


provide reliable transport, ensuring that data arrives
without error and in sequence. To do so, the receiving side sends back acknowledgments and the
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 destination 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 communication between machines. Packets to be sent
are accepted from the transport layer along with an
identication of the receiving machine. The packets
are encapsulated in IP datagrams and the datagram
headers are lled. A routing algorithm is used to
determine if the datagram should be delivered directly or sent to a router. The datagram is passed to
the appropriate network interface for transmission.
Incoming datagrams are checked for validity and
the routing algorithm is used to decide whether the
datagram should be processed locally or forwarded.
If the datagram is addressed to the local machine,
the datagram header is deleted and the appropriate
transport protocol for the packet is chosen. ICMP
error and control messages are handled as well in
this layer.

78

CHAPTER 9. COMMUNICATIONS PROTOCOL

Network interface layer. The network interface layer


is responsible for accepting IP datagrams and transmitting them over a specic network. A network interface may consist of a device driver or a complex
subsystem that uses its own data link protocol.

TCP/IP model, in other words some of the protocols behave in ways not described by the model.[62] To improve
on the model, an oending protocol could, perhaps be
split up into two protocols, at the cost of one or two extra
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-o to be made here
for the designer and clarity for the
lems: compiler, assembler, link editor, and loader. As a between preciseness
[63]
intended
user.
result, the translation software is layered as well, allowing
the software layers to be designed independently. Noting
that the ways to conquer the complexity of program translation could readily be applied to protocols because of the 9.5.3 Formal specication
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 communicaimposing 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- nite-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 lls in 9.6 Protocol development
the memory locations (ethernet addresses) to produce executable 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 datastructs, 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 lancursively denote data representations. Program transla- guage, makes the protocol software operating system intion forms a linear sequence, because each layers out- dependent. The source code could be considered a proput is passed as input to the next layer. Furthermore, the tocol specication. This form of specication, 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 dene 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
all the other layers only use IP addresses. The boundary between network interface layer and Internet layer is
called the high-level protocol address boundary.[58] The
modules below the application layer are generally considered part of the operating system. Passing data between these modules is much less expensive than passing
data between an application program and the transport
layer. The boundary between application layer and transport layer is called the operating system boundary.[59]
Strict layering

the modules on paper and agreeing on the interfaces, implementers are free to do it their way. This is referred to
as source independence. By specifying the algorithms on
paper and detailing hardware dependencies in an unambiguous way, a paper draft is created, that when adhered
to and published, ensures interoperability between software and hardware.
Such a paper draft can be developed into a protocol standard by getting the approval of a standards organization.
To get the approval the paper draft needs to enter and
successfully complete the standardization process. This
activity is referred to as protocol development. The members of the standards organization agree to adhere to the
standard on a voluntary basis. Often the members are in
control of large market-shares relevant to the protocol and
in many cases, standards are enforced by law or the government, because they are thought to serve an important
public interest, so getting approval can be very important
for the protocol.

Strictly adhering to a layered model, a practice known


as strict layering, is not always the best approach to
networking.[60] Strict layering, can have a serious impact
on the performance of the implementation, so there is at
least a trade-o between simplicity and performance.[61]
Another, perhaps more important point can be shown by
considering the fact that some of the protocols in the It should be noted though that in some cases protocol stanInternet Protocol Suite cannot be expressed using the dards are not sucient 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 menpublic.
tioned, cooperate closely with each other.[67]

9.6.1

The need for protocol standards

The need for protocol standards can be shown by looking at what happened to the bi-sync protocol (BSC) invented by IBM. BSC is an early link-level protocol used
to connect two separate nodes. It was originally not intended to be used in a multinode network, but doing so revealed several deciencies of the protocol. In the absence
of standardization, manufacturers and organizations felt
free to 'enhance' the protocol, creating incompatible versions on their networks. In some cases, this was deliberately done to discourage users from using equipment
from other manufacturers. There are more than 50 variants of the original bi-sync protocol. One can assume,
that a standard would have prevented at least some of this
from happening.[6]
In some cases, protocols gain market dominance without going through a standardization process. Such protocols are referred to as de facto standards. De facto
standards are common in emerging markets, niche markets, or markets that are monopolized (or oligopolized).
They can hold a market in a very negative grip, especially
when used to scare away competition. From a historical
perspective, standardization should be seen as a measure
to counteract the ill-eects of de facto standards. Positive exceptions exist; a 'de facto standard' operating system like GNU/Linux does not have this negative grip on
its market, because the sources are published and maintained in an open way, thus inviting competition. Standardization is therefore not the only solution for open systems interconnection.

9.6.2

Standards organizations

9.6.3 The standardization process


The standardization process starts o with ISO commissioning a sub-committee workgroup. The workgroup issues working drafts and discussion documents to interested parties (including other standards bodies) in order
to provoke discussion and comments. This will generate
a lot of questions, much discussion and usually some disagreement on what the standard should provide and if it
can satisfy all needs (usually not). All conicting views
should be taken into account, often by way of compromise, to progress to a draft proposal of the working group.
The draft proposal is discussed by the member countries standard bodies and other organizations within each
country. Comments and suggestions are collated and national views will be formulated, before the members of
ISO vote on the proposal. If rejected, the draft proposal
has to consider the objections and counter-proposals to
create a new draft proposal for another vote. After a lot
of feedback, modication, and compromise the proposal
reaches the status of a draft international standard, and
ultimately an international standard.
The process normally takes several years to complete.
The original paper draft created by the designer will differ substantially from the standard, and will contain some
of the following 'features:
Various optional modes of operation, for example
to allow for setup of dierent packet sizes at startup
time, because the parties could not reach consensus
on the optimum packet size.
Parameters that are left undened or allowed to take
on values of a dened set at the discretion of the
implementor. This often reects conicting views
of some of the members.

Some of the standards organizations of relevance for


communications protocols are the International Orga Parameters reserved for future use, reecting that
nization for Standardization (ISO), the International
the members agreed the facility should be provided,
Telecommunication Union (ITU), the Institute of Elecbut could not reach agreement on how this should be
trical and Electronics Engineers (IEEE), and the Internet
done in the available time.
Engineering Task Force (IETF). The IETF maintains the
protocols in use on the Internet. The IEEE controls many
Various inconsistencies and ambiguities will insoftware and hardware protocols in the electronics inevitably be found when implementing the standard.
dustry for commercial and consumer devices. The ITU
is an umbrella organization of telecommunication engineers designing the public switched telephone network International standards are reissued periodically to handeciencies and reect changing views on the
(PSTN), as well as many radio communications systems. dle the [68]
subject.
For marine electronics the NMEA standards are used.
The World Wide Web Consortium (W3C) produces protocols 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 operate. It is therefore important to develop a generalpurpose, future-proof framework suitable for structured
protocols (such as layered protocols) and their standardization. This would prevent protocol standards with overlapping functionality and would allow clear denition of
the responsibilities of a protocol at the dierent levels
(layers).[69] This gave rise to the OSI Open Systems Interconnection reference model (RM/OSI), which is used as a
framework for the design of standard protocols and services conforming to the various layer specications.[70]

The session layer may provide the following services to the presentation layer: establishment and release of session connections, normal and expedited
data exchange, a quarantine service which allows the
sending presentation entity to instruct the receiving
session entity not to release data to its presentation
entity without permission, interaction management
so presentation entities can control whose turn it is to
perform certain control functions, resynchronization
of a session connection, reporting of unrecoverable
exceptions to the presentation entity.[74]

In the OSI model, communicating systems are assumed


to be connected by an underlying physical medium providing a basic (and unspecied) transmission mechanism.
The layers above it are numbered (from one to seven); the
nth layer is referred to as (n)-layer. Each layer provides
service to the layer above it (or at the top to the application process) using the services of the layer immediately
below it. The layers communicate with each other by
means of an interface, called a service access point. Corresponding layers at each system are called peer entities.
To communicate, two peer entities at a given layer use an
(n)-protocol, which is implemented by using services of
the (n-1)-layer. When systems are not directly connected,
intermediate peer entities (called relays) are used. An address uniquely identies a service access point. The address naming domains need not be restricted to one layer,
so it is possible to use just one naming domain for all
layers.[71] For each layer there are two types of standards:
protocol standards dening how peer entities at a given
layer communicate, and service standards dening how a
given layer communicates with the layer above it.

The transport layer provides reliable and transparent data transfer in a cost-eective way as required
by the selected quality of service. It may support the
multiplexing of several transport connections on to
one network connection or split one transport connection into several network connections.[75]

In the original version of RM/OSI, the layers and their


functionality are (from highest to lowest layer):
The application layer may provide the following
services to the application processes: identication
of the intended communication partners, establishment of the necessary authority to communicate,
determination of availability and authentication of
the partners, agreement on privacy mechanisms for
the communication, agreement on responsibility for
error recovery and procedures for ensuring data integrity, synchronization between cooperating application processes, identication of any constraints on
syntax (e.g. character sets and data structures), determination of cost and acceptable quality of service, selection of the dialogue discipline, including
required logon and logo procedures.[72]

The network layer does the setup, maintenance and


release of network paths between transport peer entities. When relays are needed, routing and relay
functions are provided by this layer. The quality
of service is negotiated between network and transport entities at the time the connection is set up.
This layer is also responsible for network congestion
control.[76]
The data link layer does the setup, maintenance and
release of data link connections. Errors occurring in
the physical layer are detected and may be corrected.
Errors are reported to the network layer. The exchange of data link units (including ow control) is
dened by this layer.[77]
The physical layer describes details like the electrical characteristics of the physical connection, the
transmission techniques used, and the setup, maintenance and clearing of physical connections.[78]
In contrast to the TCP/IP layering scheme, which assumes a connectionless network, RM/OSI assumed a
connection-oriented network. Connection-oriented networks are more suitable for wide area networks and connectionless networks are more suitable for local area
networks. Using connections to communicate implies
some form of session and (virtual) circuits, hence the
(in the TCP/IP model lacking) session layer. The constituent members of ISO were mostly concerned with
wide area networks, so development of RM/OSI concentrated on connection oriented networks and connectionless networks were only mentioned in an addendum to
RM/OSI.[79] At the time, the IETF had to cope with this
and the fact that the Internet needed protocols which simply were not there. As a result, the IETF developed its
own standardization process based on rough consensus
and running code.[80]

The presentation layer may provide the following


services to the application layer: a request for the
establishment of a session, data transfer, negotiation
of the syntax to be used between the application layers, any necessary syntax transformations, formatting and special purpose transformations (e.g. data
The standardization process is described by RFC2026.
compression and data encryption).[73]

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
Internet Message Access Protocol (IMAP)
extended its model to include connectionless services and
because of this, both TCP and IP could be developed into
international standards.
Other instances of high level interaction protocols are:

9.7 Taxonomies
Classication schemes for protocols usually focus on domain of use and function. As an example of domain
of use, connection-oriented protocols and connectionless
protocols are used on connection-oriented networks and
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 packets can be passed across a transport system using the highlevel protocol.
A layering scheme combines both function and domain
of use. The dominant layering schemes are the ones proposed by the IETF and by ISO. Despite the fact that the
underlying assumptions of the layering schemes are different enough to warrant distinguishing the two, it is a
common practice to compare the two by relating common protocols to the layers of the two schemes.[81] For
an example of this practice see: List of network protocols.
The layering scheme from the IETF is called Internet layering or TCP/IP layering. The functionality of the layers
has been described in the section on software layering and
an overview of protocols using this scheme is given in the
article on Internet protocols.
The layering scheme from ISO is called the OSI model
or ISO layering. The functionality of the layers has been
described in the section on the future of standardization
and an overview of protocols using this scheme is given
in the article on OSI protocols.

9.8 Examples of protocols


Main article: Lists of network protocols

General Inter-ORB Protocol (GIOP)


Java remote method invocation (RMI)
Distributed Component Object Model (DCOM)
Dynamic Data Exchange (DDE)
SOAP

9.9 Notes
[1] Licesio J. Rodrguez-Aragn: Tema 4: Internet y Teleinformtica. retrieved 2013-04-24. (Spanish)
[2] Protocol, Encyclopedia Britannica, retrieved 2012-09-24
[3] Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, They (protocols) are to communication
what programming languages are to computation
[4] Ben-Ari 1982, chapter 2 - The concurrent programming
abstraction, p. 18-19, states the same.
[5] Ben-Ari 1982, Section 2.7 - Summary, p. 27, summarizes
the concurrent programming abstraction.
[6] Marsden 1986, Section 6.1 - Why are standards necessary?, p. 64-65, uses BSC as an example to show the need
for both standard protocols and a standard framework.
[7] Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, explains this by drawing analogies between
computer communication and programming languages.
[8] Sect. 11.10 - The Disadvantage Of Layering, p. 192,
states: layering forms the basis for protocol design.
[9] Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, states the same.
[10] Comer 2000, Sect. 11.3 - The Conceptual Layers Of Protocol Software, p. 178, Each layer takes responsibility for
handling one part of the problem.

The Internet Protocol is used in concert with other protocols within the Internet Protocol Suite. Prominent mem- [11] Comer 2000, Sect. 11.11 - The Basic Idea Behind Multiplexing And Demultiplexing, p. 192, states the same.
bers of which include:
Transmission Control Protocol (TCP)
User Datagram Protocol (UDP)
Internet Control Message Protocol (ICMP)
Hypertext Transfer Protocol (HTTP)
Post Oce Protocol (POP)

[12] Marsden 1986, Chapter 3 - Fundamental protocol concepts and problem areas, p. 26-42, explains much of the
following.
[13] Comer 2000, Sect. 7.7.4 - Datagram Size, Network
MTU, and Fragmentation, p. 104, Explains fragmentation and the eect on the header of the fragments.
[14] Comer 2000, Chapter 4 - Classful Internet Addresses, p.
64-67;71.

82

CHAPTER 9. COMMUNICATIONS PROTOCOL

[15] Marsden 1986, Section 14.3 - Layering concepts and general denitions, p. 187, explains address mapping.

[34] Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, introduces the decomposition in layers.

[16] Marsden 1986, Section 3.2 - Detection and transmission


errors, p. 27, explains the advantages of backward error
correction.

[35] Comer 2000, Sect. 11.2 - The need for multiple protocols, p. 178, explains similarities protocol software and
compiler, assembler, linker, loader.

[17] Marsden 1986, Section 3.3 - Acknowledgement, p. 2833, explains the advantages of positive only acknowledgement and mentions datagram protocols as exceptions.

[36] Comer 2000, Glossary of Internetworking terms, p.686:


term encapsulation.

[18] Marsden 1986, Section 3.4 - Loss of information - timeouts and retries, p. 33-34.
[19] Marsden 1986, Section 3.5 - Direction of information
ow, p. 34-35, explains master/slave and the negotiations
to gain control.
[20] Marsden 1986, Section 3.6 - Sequence control, p. 35-36,
explains how packets get lost and how sequencing solves
this.
[21] Marsden 1986, Section 3.7 - Flow control, p. 36-38.
[22] Comer 2000, Sect. 1.3 - Internet Services, p. 3, Protocols are to communication what algorithms are to computation
[23] Tennent 1981, Section 2.3.1 - Denitions, p.15, denes
scope and binding.
[24] Tennent 1981, Section 2.3.2 Environments and stores,
p.16, the semantics of blocks and denitions are described using environments and stores.
[25] Hoare (1985), Ch. 4 - Communication, p. 133, In the
introduction: a communication is an event described by a
pair c.v where c is the name of the communication channel
and v is the value of the message.
[26] Tanenbaum, Andrew S. (2003). Computer networks.
Prentice Hall Professional. p. 235. ISBN 978-0-13066102-9. Retrieved 22 June 2011.

[37] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Reference Model, p. 184, Describes the transformations of
messages or streams that can be observed in the protocol
layers.
[38] Comer 2000, Sect. 2.4.10 - Ethernet Frame Format, p.
30, Ethernet frames are used as an example for administrative data for the protocol itself.
[39] Comer 2000, Sect. 11.4 - Functionality Of The Layers, p.
181, states the same about the software organization.
[40] Comer 2000, Sect. 3.3 - Network-Level Interconnection,
p. 55, explains universal interconnection and internetworking.
[41] Comer 2000, Sect. 4.4 - Addresses Specify Network Connections, p. 86, explains this.
[42] Comer 2000, Sect. 4.3 - The Original Classful Addressing
Scheme, p. 64, explains the address scheme, netid and
routing.
[43] Comer 2000, Sect. 5.13 - Summary, p. 86, explains ARP.
[44] Comer 2000, Sect. 2.11 - Other Technologies Over
Which TCP/IP Has Been Used, p. 46, states the same.
[45] Comer 2000, Sect. 8.3.2 - Indirect Delivery, p. 118, states
the same.
[46] Comer 2000, Sect. 8.5 - Next-Hop Routing, p. 120, gives
details on the routing table.

[27] Comer 2000, Foreword To The First Edition By The Late


Jon Postel, xxv, The principles of architecture, layering,
multiplexing, encapsulation, addressing and address mapping, routing, and naming are quite similar in any protocol
suite, though of course, dierent in detail..

[47] Comer 2000, Sect. 8.6 - Default Routes, p. 121, explains


default routing and its use.

[28] Ben-Ari 1982, in his preface, p. xiii.

[49] Comer 2000, Sect. 7.5 - Connectionless Delivery System,


p. 97, explains the delivery system.

[48] Comer 2000, Sect. 3.8 - All Networks Are Equal, p. 59,
states the same.

[29] Ben-Ari 1982, in his preface, p. xiv.


[30] Hoare 1985, Chapter 4 - Communication, p. 133, deals
with communication.
[31] S. Srinivasan, NPTEL courses:::: Electronics & Communication Engineering :: Digital Circuits and Systems, available online: http://nptel.iitm.ac.in/video.php?
courseId=1005&p=3
[32] Comer 2000, Sect. 11.2 - The Need For Multiple Protocols, p. 177, states more or less the same, using other
analogies.
[33] Comer 2000, Sect. 11.7 - The Protocol Layering Principle, p. 187, explains layered protocols.

[50] Comer 2000, Sect. 7.6 - Purposes Of The Internet Protocol, p. 97, states the same.
[51] Comer 2000, Sect. 2.11.1 - X25NET And Tunnels, p.
46-47, explains tunneling X.25 and mentions ATM.
[52] Comer 2000, Sect. 13.1 - Introduction, p. 209, introduces
TCP.
[53] Comer 2000, Sect. 12.10 - Summary, p. 206, explains
UDP.
[54] Comer 2000, Sect. 11.3 - The Conceptual Layers Of Protocol Software, p. 179, the rst two paragraphs describe
the sending of a message through successive layers.

9.10. REFERENCES

[55] Comer 2000, Sect. 9.3 - Error Reporting vs. Error Correction, p. 131, describes the ICMP protocol that is used
to handle datagram errors.
[56] Comer 2000, Sect. 7.7.5 - Reassembly Of Fragments, p.
104, describes reassembly of datagrams.
[57] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Reference Model, p. 184, explains functionality of the layers.
[58] Comer 2000, Sect. 11.9.1 - High-Level Protocol Boundary, p. 191, describes the boundary.

83

[76] Marsden 1986, Section 14.8 - The network layer, p. 192,


explains this.
[77] Marsden 1986, Section 14.9 - The data link layer, p. 194,
explains this.
[78] Marsden 1986, Section 14.10 - The physical layer, p. 195,
explains this.
[79] Marsden 1986, Section 14.11 - Connectionless mode and
RM/OSI, p. 195, mentions this.

[59] Comer 2000, Sect. 11.9.1 - Operating System Boundary,


p. 192, describes the operating system boundary.

[80] Comer 2000, Section 1.9 - Internet Protocols And Standardization, p. 12, explains why the IETF did not use existing protocols.

[60] IETF 1989, Sect 1.3.1 - Organization, p. 15, 2nd paragraph: many design choices involve creative breaking
of strict layering.

[81] Comer 2000, Sect. 11.5.1 - The TCP/IP 5-Layer Reference Model, p. 183, states the same.

[61] Comer 2000, Sect. 11.10 - The Disadvantage Of Layering, p. 192, explains why strict layering can be extremely
inecient giving examples of optimizations.

9.10 References

[62] IETF 1989, Sect 1.3.1 - Organization, p. 15, 2nd paragraph, explaining why strict layering is an imperfect
model
[63] IETF 1989, Sect 1.3.1 - Organization, p. 15, states: This
layerist organization was chosen for simplicity and clarity.
[64] Bochmann, G. (1978). Finite state description of communication protocols. Computer Networks (1976). 2 (4
5): 361201. doi:10.1016/0376-5075(78)90015-6.
[65] Comer 2000, Glossary of Internetworking Terms and Abbreviations, p. 704, term protocol.
[66] Brand, Daniel; Zaropulo, Pitro (1983). On Communicating Finite-State Machines. Journal of the ACM. 30
(2): 323. doi:10.1145/322374.322380.
[67] Marsden 1986, Section 6.3 - Advantages of standardisation, p. 66-67, states the same.
[68] Marsden 1986, Section 6.4 - Some problems with standardisation, p. 67, follows HDLC to illustrate the process.
[69] Marsden 1986, Section 6.1 - Why are standards necessary?, p. 65, explains lessons learned from ARPANET.
[70] Marsden 1986, Section 14.1 - Introduction, p. 181, introduces OSI.
[71] Marsden 1986, Section 14.3 - Layering concepts and general denitions, p. 183-185, explains terminology.
[72] Marsden 1986, Section 14.4 - The application layer, p.
188, explains this.
[73] Marsden 1986, Section 14.5 - The presentation layer, p.
189, explains this.
[74] Marsden 1986, Section 14.6 - The session layer, p. 190,
explains this.
[75] Marsden 1986, Section 14.7 - The transport layer, p. 191,
explains this.

Radia Perlman: Interconnections: Bridges, Routers,


Switches, and Internetworking Protocols. 2nd Edition. Addison-Wesley 1999, ISBN 0-201-634481. In particular Ch. 18 on network design folklore, which is also available online at http://www.
informit.com/articles/article.aspx?p=20482
Gerard J. Holzmann: Design and Validation of Computer Protocols. Prentice Hall, 1991, ISBN 0-13539925-4. Also available online at http://spinroot.
com/spin/Doc/Book91.html
Douglas E. Comer (2000). Internetworking with
TCP/IP - Principles, Protocols and Architecture (4th
ed.). Prentice Hall. ISBN 0-13-018380-6. In particular Ch.11 Protocol layering. Also has a RFC
guide and a Glossary of Internetworking Terms and
Abbreviations.
Internet Engineering Task Force abbr. IETF (1989):
RFC1122, Requirements for Internet Hosts -- Communication Layers, R. Braden (ed.), Available online at http://tools.ietf.org/html/rfc1122. Describes
TCP/IP to the implementors of protocolsoftware. In
particular the introduction gives an overview of the
design goals of the suite.
M. Ben-Ari (1982): Principles of concurrent programming 10th Print. Prentice Hall International,
ISBN 0-13-701078-8.
C.A.R. Hoare (1985): Communicating sequential
processes 10th Print. Prentice Hall International,
ISBN 0-13-153271-5. Available online via http:
//www.usingcsp.com
R.D. Tennent (1981): Principles of programming
languages 10th Print. Prentice Hall International,
ISBN 0-13-709873-1.

84
Brian W Marsden (1986): Communication network
protocols 2nd Edition. Chartwell Bratt, ISBN 086238-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


Javvins Protocol Dictionary
Overview of protocols in telecontrol eld with OSI
Reference Model
List of Data Communication Protocols
PDF-Chart showing the Protocols and the OSI reference layer
Blog to discuss ideas about modeling and testing of
communication protocols

CHAPTER 9. COMMUNICATIONS PROTOCOL

Chapter 10

Communications system
an optical ber. The light forms a carrier signal that is
modulated to carry information.

Communication system

An electronic communications system using electronic signals

A radio communication system is composed of several


communications subsystems that give exterior communications capabilities.[1][2][3] A radio communication system comprises a transmitting conductor[4] in which electrical 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 receiving conductor[4] at such distant point adapted to be excited by the oscillations or currents propagated from the
transmitter.[8][9][10][11]
Power line communication systems operate by impressing a modulated carrier signal on power wires. Dierent types of powerline communications use dierent frequency bands, depending on the signal transmission characteristics of the power wiring used. Since the power
wiring system was originally intended for transmission
of AC power, the power wire circuits have only a limited ability to carry higher frequencies. The propagation
problem is a limiting factor for each type of power line
communications.

In telecommunication, a communications system is


a collection of individual communications networks,
transmission systems, relay stations, tributary stations,
and data terminal equipment (DTE) usually capable of
interconnection and interoperation to form an integrated
whole. The components of a communications system
serve a common purpose, are technically compatible,
use common procedures, respond to controls, and operate in union. Telecommunications is a method of communication (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
two connected parties or devices which can communicate
than the larger assembly under consideration...
with one another in both directions. The term duplex is
used when describing communication between two parties or devices. Duplex systems are employed in nearly all
10.1 Types
communications networks, either to allow for a communication two-way street between two connected parties
or to provide a reverse path for the monitoring and re10.1.1 By media
mote adjustment of equipment in the eld. 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
Hansell, Clarence W., U.S. Patent 2,389,432, "Comforces, and (d) usually requires extremely short installamunication system by pulses through the Earth".
tion times, usually on the order of hours, in order to meet
the requirements of frequent relocation.
This article incorporates public domain material
An Emergency communication system is any system (typfrom the General Services Administration document
ically computer based) that is organized for the priFederal Standard 1037C (in support of MIL-STDmary purpose of supporting the two way communica188).
tion of emergency messages between both individuals and
groups of individuals. These systems are commonly designed 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 service (such as for product or service complaints), ordering
by telephone (such as in a ticket oce), or coordination
services (such as in air trac control).
A Voice Communication Control System (VCCS) is essentially an ACD with characteristics that make it more
adapted to use in critical situations (no waiting for dialtone, or lengthy recorded announcements, radio and telephone 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). Communication systems and techniques. New York: IEEE
Press.
[2] Rappaport, T. S. (1996). Wireless communications: principles 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,
see Compiler (anime).
Compile and compiling redirect here. For the
software company, see Compile (publisher). For other
uses, see Compilation.

code generation, and code optimization. Program faults


caused by incorrect compiler behavior can be very dicult to track down and work around; therefore, compiler
implementors invest signicant eort to ensure compiler
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
usage (char *name)
{
printf ("Usage:\n");
printf ("%s -a [-c file",
name};
#ifdef LOFI
printf ("[-g] [-s] ");
#endif
printf ("[-g what] [-r]
[-u file [type]]");
#ifdef LOFI
printf (" [-z size] ");
#endif

The name compiler is primarily used for programs that


translate source code from a high-level programming language to a lower level language (e.g., assembly language
or machine code). If the compiled program can run on
a computer whose CPU or operating system is dierent
from the one on which the compiler runs, the compiler
is known as a cross-compiler. More generally, compilers
are a specic type of translator.

A program that translates from a low level language to


a higher level one is a decompiler. A program that
translates between high-level languages is usually called
a source-to-source compiler or transpiler. A language
rewriter is usually a program that translates the form of
expressions without a change of language. The term
compiler-compiler is sometimes used to refer to a parser
generator, a tool often used to help create the lexer and
parser. A compiler is likely to perform many or all of
the following operations: lexical analysis, preprocessing,
parsing, semantic analysis (syntax-directed translation),

Language 1 source code

Compiler front-end for language 1


Lexical Analyzer (Scanner)

Language 2 source code

Compiler front-end for language 2


Lexical Analyzer (Scanner)

Syntax/Semantic
Analyzer (Parser)

Syntax/Semantic
Analyzer (Parser)

Intermediate-code
Generator

Intermediate-code
Generator

Non-optimized intermediate code

While all programs that take a set of programming specications and translate them, i.e. create a means to execute those specications, are technically compilers, the
term generally means a program that produces a separate
executable from the compiler (that may require a run time
library or subsystem to operate), a compiler that merely
executes the original specications is usually referred to
as an "interpreter", although because of diering methods of analyzing what represents compilation and what
represents interpretation, there is some overlap between
the two terms.

public class OddEven {


private int input;
public OddEven() {
input = Integer.parseInt()
}
public void calculate() {
if (input % 2 == 0)
System.out.println("Even");
else
System.out.printin("Odd");
}
public void main(String[] args) {
}
}

Non-optimized intermediate code

Intermediate code optimizer


Optimized intermediate code

Target-1
Code Generator
Target-1 machine code

Target-2
Code Generator
Target-2 machine code

A diagram of the operation of a typical multi-language, multitarget compiler

assembly language. Although the rst high level language


is nearly as old as the rst computer, the limited memory
capacity of early computers led to substantial technical
challenges when the rst compilers were designed.
The rst high-level programming language (Plankalkl)
was proposed by Konrad Zuse in 1943. The rst compiler
was written by Grace Hopper, in 1952, for the A-0 programming language; the A-0 functioned more as a loader
or linker than the modern notion of a compiler. The

87

88

CHAPTER 11. COMPILER

rst autocode and its compiler were developed by Alick spite of its simplicity, the PL/0 compiler introduced sevGlennie in 1952 for the Mark 1 computer at the Univer- eral inuential concepts to the eld:
sity of Manchester and is considered by some to be the
rst compiled programming language.[2] The FORTRAN
1. Program development by stepwise renement (also
team led by John Backus at IBM is generally credited as
the title of a 1971 paper by Wirth)[8]
having introduced the rst complete compiler in 1957.
2. The use of a recursive descent parser
COBOL was an early language to be compiled on multiple architectures, in 1960.[3]
3. The use of Extended BackusNaur 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 expand4. A code generator producing portable P-code
ing functionality supported by newer programming languages and the increasing complexity of computer archi5. The use of tombstone diagrams in the formal detectures, compilers have become more complex.
scription of the bootstrapping problem.
Early compilers were written in assembly language. The
rst 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 imOne classication 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 implethe target platform.
mentation language. Building a self-hosting compiler is a
bootstrapping problemthe rst such compiler for a lan- A native or hosted compiler is one which output is inguage must be compiled either by hand or by a compiler tended to directly run on the same type of computer and
written in a dierent language, or (as in Hart and Levins 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 dierent
platform. Cross compilers are often used when developinterpreter.
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 classied as native or cross
FORTRAN, the rst 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, ofchine code, it has to be modied or rewritten if the pro- ten viewed as some sort of portable assembler, can also be
gram is to be executed on dierent computer hardware the target language of a compiler. E.g.: Cfront, the original compiler for C++ used C as target language. The
architecture.
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 specic hardware. Once the target program is generated, the user can execute the program.

11.1.2

Compilers in education

Compiler construction and compiler optimization are


taught at universities and schools as part of a computer
science curriculum.[6] Such courses are usually supplemented with the implementation of a compiler for an
educational programming language. A well-documented
example is Niklaus Wirth's PL/0 compiler, which Wirth
used to teach compiler construction in the 1970s.[7] In

11.2.1 Compiled versus interpreted languages


Higher-level programming languages usually appear with
a type of translation in mind: either designed as compiled
language or interpreted language. However, in practice
there is rarely anything about a language that requires it
to be exclusively compiled or exclusively interpreted, although it is possible to design languages that rely on reinterpretation at run time. The categorization usually reects the most popular or widespread implementations of

11.3. COMPILER CONSTRUCTION


a language for instance, BASIC is sometimes called an
interpreted language, and C a compiled one, despite the
existence of BASIC compilers and C interpreters.
Interpretation does not replace compilation completely.
It only hides it from the user and makes it gradual. Even
though an interpreter can itself be interpreted, a directly
executed program is needed somewhere at the bottom of
the stack (see machine language). Modern trends toward
just-in-time compilation and bytecode interpretation at
times blur the traditional categorizations of compilers and
interpreters.
Some language specications spell out that implementations must include a compilation facility; for example,
Common Lisp. However, there is nothing inherent in the
denition of Common Lisp that stops it from being interpreted. Other languages have features that are very easy
to implement in an interpreter, but make writing a compiler much harder; for example, APL, SNOBOL4, and
many scripting languages allow programs to construct arbitrary source code at runtime with regular string operations, and then execute that code by passing it to a special evaluation function. To implement these features in
a compiled language, programs must usually be shipped
with a runtime library that includes a version of the compiler itself.

11.2.2

Special type of compilers

89
bytecode is then compiled using a JIT compiler to native machine code just when the execution of the program is required.[9]
hardware compilers (also known as syntheses tools)
are compilers whose output is a description of the
hardware conguration instead of a sequence of instructions.
The output of these compilers target computer
hardware at a very low level, for example
a eld-programmable gate array (FPGA) or
structured application-specic integrated circuit (ASIC).[10] Such compilers are said to be
hardware compilers, because the source code
they compile eectively controls the nal conguration of the hardware and how it operates.
The output of the compilation is only an interconnection of transistors or lookup tables.
An example of hardware compiler is
XST,[11][12] the Xilinx Synthesis Tool used
for conguring FPGAs. Similar tools are
available from Altera,[13] Synplicity, Synopsys
and other hardware vendors.

11.3 Compiler construction

While the typical compiler outputs machine code, there Compilers bridge source programs in high-level lanare several other types:
guages with the underlying hardware. A compiler veries code syntax, generates ecient 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 aected by the complexity of the protransform 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. Fortrans 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
quality output is required, the design may be split into a
implementations
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 dierent 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 compilation stages are deferred to run-time. Examples
are implemented in Smalltalk, Java and Microsoft
.NET's Common Intermediate Language (CIL) systems.

The division of the compilation processes into phases


was championed by the Production Quality CompilerCompiler Project (PQCC) at Carnegie Mellon University.
This project introduced the terms front end, middle end,
and back end.

Applications are rst 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 dened.

90

11.3.1

CHAPTER 11. COMPILER

One-pass versus multi-pass compilers

Classifying compilers by number of passes has its background in the hardware resource limitations of computers. Compiling involves performing lots of work and
early computers did not have enough memory to contain
one program that did all of this work. So compilers were
split up into smaller programs which each made a pass
over the source (or some representation of it) performing
some of the required analysis and translations.
The ability to compile in a single pass has classically been
seen as a benet because it simplies the job of writing a
compiler and one-pass compilers generally perform compilations faster than multi-pass compilers. Thus, partly
driven by the resource limitations of early systems, many
early languages were specically designed so that they
could be compiled in a single pass (e.g., Pascal).
In some cases the design of a language feature may require a compiler to perform more than one pass over the
source. For instance, consider a declaration appearing on
line 20 of the source which aects the translation of a
statement appearing on line 10. In this case, the rst pass
needs to gather information about declarations appearing
after statements that they aect, with the actual translation happening during a subsequent pass.
The disadvantage of compiling in a single pass is that
it is not possible to perform many of the sophisticated
optimizations needed to generate high quality code. It
can be dicult to count exactly how many passes an optimizing compiler makes. For instance, dierent phases
of optimization may analyse one expression many times
but only analyse another expression once.

checking by collecting type information. Generates


errors and warnings, if any, highlighting them on the
source code. Aspects of the front end include lexical analysis, syntax analysis, and semantic analysis. Eventually generates an intermediate representation or IR of the source code for processing by the
middle-end. This IR is usually a lower level of representation of the program with respect to the source
code.
The middle end performs optimizations on a form
other than the source code or machine code. This
source code/machine code independence is intended
to enable generic optimizations to be shared between versions of the compiler supporting dierent languages and target processors. Examples of
middle end optimizations are removal of useless
or unreachable code, discovery and propagation of
constant values, relocation of computation to a less
frequently executed place (e.g., out of a loop), or
specialization of computation based on the context.
Eventually it may generate another IR for to be used
in the back end.
The back end takes the output from the middle end.
It may perform more analysis, transformations and
optimizations that are for a particular computer.
Generates the target-dependent assembly code, performing register allocation in process. Performs optimizations of the target code utilization of the hardware, like guring out how to keep parallel execution
units busy by lling delay slots. Although most
algorithms for optimization are NP-hard, heuristic
techniques are well-developed and currently implemented in production-quality compilers.[14] Typically the output of a back end is machine code specialized for a particular processor and operating system.

Splitting a compiler up into small programs is a technique


used by researchers interested in producing provably correct compilers. Proving the correctness of a set of small
programs often requires less eort than proving the correctness of a larger, single, equivalent program.
This front/middle/back-end approach makes it possible
to combine front ends for dierent languages with back
ends for dierent CPUs. Practical examples of this ap11.3.2 Three phases compiler structure
proach are the GNU Compiler Collection, LLVM,[15] and
the Amsterdam Compiler Kit, which have multiple frontRegardless of the exact number of stages which a comends, 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.

Compiler design

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
the source code to associated information such as location, type and scope.

While the frontend can be a single monolithic function or


The front end veries syntax and semantics accord- program, as in a scannerless parser, it is more commonly
ing to a specic 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,
identier or symbol name. The token syntax is typically a regular language, so a nite 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.

Lexer and parser example for C. Starting from the sequence of


characters if(net>0.0)total+=net*(1.0+tax/100.0);", the scanner composes a sequence of tokens, and categorizes each of them,
for example as identier, reserved word, number literal, or operator. The latter sequence is transformed by the parser into
a syntax tree, which is then treated by the remaining compiler
phases. The scanner and parser handles the regular and properly context-free parts of the grammar for C, respectively.

execute sequentially or concurrently. This method is favored due to its modularity and separation of concerns.
Most commonly today, the frontend is broken into three
phases: lexical analysis (also known as lexing), parsing, and semantic analysis. Lexical analysis and parsing
comprise the syntactic analysis (word syntax and phrase
syntax, respectively), and in simple cases these modules
(the lexer and parser) can be automatically generated
from a grammar for the language, though in more complex cases these require manual modication. The lexical grammar and phrase grammar are usually contextfree grammars, which simplies analysis signicantly,
with context-sensitivity handled at the semantic analysis phase. The semantic analysis phase is generally more
complex and written by hand, but can be partially or fully
automated using attribute grammars. These phases themselves can be further broken down lexing as scanning
and evaluating, parsing as rst building a concrete syntax
tree (CST, parse tree), and then transforming it into an
abstract syntax tree (AST, syntax tree).
In some cases additional phases are used, notably line reconstruction and preprocessing, but these are rare. A detailed list of possible phases includes:
1. Line reconstruction: Languages which strop their
keywords or allow arbitrary spaces within identiers
require a phase before parsing, which converts the
input character sequence to a canonical form ready
for the parser. The top-down, recursive-descent,
table-driven parsers used in the 1960s typically read
the source one character at a time and did not require a separate tokenizing phase. Atlas Autocode,
and Imp (and some implementations of ALGOL
and Coral 66) are examples of stropped languages
which compilers would have a Line Reconstruction
phase.

3. Preprocessing. Some languages, e.g., C, require a


preprocessing phase which supports macro substitution and conditional compilation. Typically the
preprocessing phase occurs before syntactic or semantic analysis; e.g. in the case of C, the preprocessor manipulates lexical tokens rather than syntactic forms. However, some languages such as
Scheme support macro substitutions based on syntactic forms.
4. Syntax analysis involves parsing the token sequence
to identify the syntactic structure of the program.
This phase typically builds a parse tree, which replaces the linear sequence of tokens with a tree
structure built according to the rules of a formal
grammar which dene the languages syntax. The
parse tree is often analyzed, augmented, and transformed by later phases in the compiler.
5. Semantic analysis is the phase in which the compiler adds semantic information to the parse tree and
builds the symbol table. This phase performs semantic checks such as type checking (checking for
type errors), or object binding (associating variable
and function references with their denitions), or
denite assignment (requiring all local variables to
be initialized before use), rejecting incorrect programs or issuing warnings. Semantic analysis usually requires a complete parse tree, meaning that this
phase logically follows the parsing phase, and logically precedes the code generation phase, though it
is often possible to fold multiple phases into one pass
over the code in a compiler implementation.

11.3.4 Back end


The term back end is sometimes confused with code generator because of the overlapped functionality of generating assembly code. Some literature uses middle end to
distinguish the generic analysis and optimization phases
in the back end from the machine-dependent code generators.
The main phases of the back end include the following:
1. Analysis: This is the gathering of program information from the intermediate representation derived

92

CHAPTER 11. COMPILER


from the input; data-ow analysis is used to build
use-dene chains, together with dependence analysis, alias analysis, pointer analysis, escape analysis,
etc. Accurate analysis is the basis for any compiler
optimization. The call graph and control ow graph
are usually also built during the analysis phase.

according to its language specication.[16] Techniques include developing the compiler using formal methods and
using rigorous testing (often called compiler validation)
on an existing compiler.

2. Optimization: the intermediate language represen- 11.4 Conferences and organizatation 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 eld of programming languages present advances in compiler construction as one
and even automatic parallelization.
of their main topics.
3. Code generation: the transformed intermediate lanACM SIGPLAN supports a number of conferences, inguage is translated into the output language, usually
cluding:
the native machine language of the system. This involves resource and storage decisions, such as de Programming Language Design and Implementaciding which variables to t into registers and memtion (PLDI)
ory and the selection and scheduling of appropriate
machine instructions along with their associated ad Principles of Programming Languages (POPL)
dressing modes (see also Sethi-Ullman algorithm).
Debug data may also need to be generated to facili Object-Oriented Programming, Systems, Lantate debugging.
guages, and Applications (OOPSLA)
Compiler analysis is the prerequisite for any compiler optimization, and they tightly work together. For example,
dependence analysis is crucial for loop transformation.

International Conference on Functional Programming (ICFP)

In addition, the scope of compiler analysis and optimizations vary greatly, from as small as a basic block to the
procedure/function level, or even over the whole program
(interprocedural optimization). Obviously, a compiler
can potentially do a better job using a broader view. But
that broad view is not free: large scope analysis and optimizations are very costly in terms of compilation time
and memory space; this is especially true for interprocedural analysis and optimizations.

The European Joint Conferences on Theory and Practice


of Software (ETAPS) sponsors the International Conference on Compiler Construction, with papers from both
the academic and industrial sectors.[17]

Interprocedural analysis and optimizations are common


in modern commercial compilers from HP, IBM, SGI,
Intel, Microsoft, and Sun Microsystems. The open source
GCC was criticized for a long time for lacking powerful
interprocedural optimizations, but it is changing in this
respect. Another open source compiler with full analysis and optimization infrastructure is Open64, which is
used by many organizations for research and commercial
purposes.

11.5 Related techniques

Asian Symposium on Programming Languages and Systems (APLAS) is organized by the Asian Association for
Foundation of Software (AAFS).

Main article: Translator (computing)


Assembly language is a type of low-level language and
a program that compiles it is more commonly known
as an assembler, with the inverse program known as a
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
last term is usually applied to translations that do not in11.3.5 Compiler correctness
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

11.6 See also


Abstract interpretation
Binary recompiler
Bottom-up parsing
Compile and go loader
Compile farm
List of compilers
List of important publications in computer science
Compilers
Metacompilation

11.7 Notes

93

[12] Xilinx Inc. XST Synthesis Overview. Xilinx.com.


Xilinx Inc. Retrieved 20 June 2016.
[13] Altera Corporation. Spectra-Q Engine. altera.com.
Altera Corporation. Retrieved 20 June 2016.
[14] LLVM community. The LLVM Target-Independent
Code Generator. LLVM Documentation. Retrieved 17
June 2016.
[15] Lattner, Chris. LLVM. In Brown, Amy; Wilson, Greg.
The Architecture of Open Source Applications (1 ed.).
[16] Chlipala, Adam. Syntactic Proofs of Compositional
Compiler Correctness (PDF). Harvard University Cambridge, Massachusetts, USA.
[17] ETAPS - European Joint Conferences on Theory and
Practice of Software. Cf. CC (Compiler Construction)
subsection.

11.8 References

[1] Denition of:compiler". PC Magazine.


[2] Knuth, D. E., & Pardo, L. T. (1980). The early development of programming languages. A history of computing
in the twentieth century, 197-273.
[3] IP: The Worlds First COBOL Compilers. interestingpeople.org. 12 June 1997.
[4] T. Hart and M. Levin. The New Compiler, AIM-39 CSAIL Digital Archive - Articial Intelligence Laboratory
Series (PDF). publications.ai.mit.edu.
[5] Sheridan, Peter B (1959). The arithmetic translatorcompiler of the IBM FORTRAN automatic coding system. Communications of the ACM. ACM. 2 (2): 921.
doi:10.1145/368280.368289.
[6] Chakraborty, P., Saxena, P. C., Katti, C. P., Pahwa,
G., Taneja, S. A new practicum in compiler construction. Computer Applications in Engineering Education, In
Press. http://onlinelibrary.wiley.com/doi/10.1002/cae.
20566/pdf
[7] The PL/0 compiler/interpreter.
[8] The ACM Digital Library.
[9] Aycock, John (June 2003). A Brief History of Just-intime. ACM Comput. Surv. New York, NY, USA. 35 (2):
93113. doi:10.1145/857076.857077.
[10] Swartz, Jordan S.; Betz, Vaugh; Rose, Jonathan. A Fast
Routability-Driven Router for FPGAs (PDF). Department of Electrical and Computer Engineering, University
of Toronto.
[11] Lysaght, Patrick; Blodget, Brandon; Mason, Je; Young,
Jay; Bridgford, Brendan (2006). Invited paper: Enhanced architectures, design methodologies and cad tools
for dynamic reconguration of xilinx fpgas. 2006 International Conference on Field Programmable Logic and
Applications. IEEE.

1. Compiler textbook references A collection of references to mainstream Compiler Construction Textbooks


2. Aho, Alfred V.; Sethi, Ravi; Ullman, Jerey
D. (1986). Compilers: Principles, Techniques,
and Tools (1st ed.). Addison-Wesley. ISBN
9780201100884.
3. Allen, Frances E. (September 1981). A History
of Language Processor Technology in IBM (PDF).
IBM Journal of Research and Development. IBM.
25 (5). doi:10.1147/rd.255.0535. (subscription required (help)).
4. Allen, Randy; Kennedy, Ken (2001). Optimizing
Compilers for Modern Architectures. Morgan Kaufmann Publishers. ISBN 1-55860-286-0.
5. Appel, Andrew Wilson (2002). Modern Compiler
Implementation in Java (2nd ed.). Cambridge University Press. ISBN 0-521-82060-X.
6. Appel, Andrew Wilson (1998). Modern Compiler
Implementation in ML. Cambridge University Press.
ISBN 0-521-58274-1.
7. Bornat, Richard (1979). Understanding and Writing Compilers: A Do It Yourself Guide (PDF).
Macmillan Publishing. ISBN 0-333-21732-2.
8. Cooper, Keith D.; Torczon, Linda (2004). Engineering a Compiler. Morgan Kaufmann. ISBN 155860-699-8.
9. Leverett, Bruce W.; Cattell, R. G. G.; Newcomer,
Joseph M.; Hobbs, S.O.; Reiner, A.H.; Schatz, B.R.;
Wulf, W.A. (August 1980). An Overview of the
Production Quality Compiler Compiler Project.

94

CHAPTER 11. COMPILER


Computer. Carnegie-Mellon University. 13 (8): 38
49. doi:10.1109/MC.1980.1653748. ISSN 00189162. (subscription required (help)).

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


Wortman, David B. (1970). A Compiler Generator.
Englewood Clis, NJ: Prentice-Hall. ISBN 0-13155077-2.
11. Muchnick, Steven (1997). Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers. ISBN 1-55860-320-4.
12. Scott, Michael Lee (2005). Programming Language
Pragmatics (2nd ed.). Morgan Kaufmann. ISBN 012-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++. International Thomson Computer Press. ISBN 1-85032298-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 Mogensen
Short animation on YouTube explaining the key
conceptual dierence between compilers and interpreters
Syntax Analysis & LL1 Parsing on YouTube
Lets 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 describes a design architecture for an electronic digital
computer with subdivisions of a processing unit consisting of an arithmetic logic unit and processor registers, 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 perforthe 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 tangible physical objects.[1] By contrast, software is instructions that can be stored and run by hardware.
Software is any set of machine-readable instructions that
directs a computers processor to perform specic operations. A combination of hardware and software forms a
usable computing system.[2]

12.2 Sales

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 acMain 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 Dierent systems

computers are usually small enough to t under a desk;


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

Power supply

10

5
9

Main article: Power supply unit (computer)

12

11

15
14

7
1

16

13

Basic hardware components of a modern personal computer,


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

A power supply unit (PSU) converts alternating current


(AC) electric power to low-voltage DC power for the internal components of the computer. Laptops are capable
of running from a built-in battery, normally for a period
of hours.[6]
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 motherboard include:

Inside a custom-built computer: power supply at the bottom has


its own cooling fan

The personal computer, also known as the PC, is one of


the most common types of computer due to its versatility
and relatively low price. Laptops are generally very similar, although they may use lower-power or reduced size
components.
Case
Main article: Computer case
The computer case is a plastic or metal enclosure that
houses most of the components. Those found on desktop

The CPU (Central Processing Unit), which performs most of the calculations which enable a computer 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
Unit (GPU). The clock speed of CPUs governs how
fast it executes instructions, and is measured in GHz;
typical values lie between 1 GHz and 5 GHz. Many
modern computers have the option to overclock the
CPU which enhances performance at the expense of
greater thermal output and thus a need for improved
cooling.
The chipset, which includes the north bridge, mediates communication between the CPU and the other
components of the system, including main memory.
Random-Access Memory (RAM), which stores
the code and data that are being actively accessed
by the CPU. RAM usually comes on DIMMs in the
sizes 2GB, 4GB, and 8GB, but can be much larger.

12.3. DIFFERENT SYSTEMS


Read-Only Memory (ROM), which stores the
BIOS that runs when the computer is powered on
or otherwise begins execution, a process known as
Bootstrapping, or "booting" or booting up. The
BIOS (Basic Input Output System) includes boot
rmware and power management rmware. Newer
motherboards use Unied Extensible Firmware Interface (UEFI) instead of BIOS.

97
usefulness depends on being readable by other systems;
the majority of machines have an optical disk drive, and
virtually all have a USB port.
Input and output peripherals
Main article: Peripheral

Buses that connect the CPU to various internal comInput 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 generally 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 sysgraphics cards are better suited to handle strenuous tems typically use a touchpad instead of a mouse. Other
input devices include webcams, microphones, joysticks,
tasks, such as playing intensive video games.
and image scanners.
Expansion cards
Main article: Expansion card

Output device Output devices display information in


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
motherboard or backplane to add functionality to a computer system via the expansion bus. Expansions cards can
be used to obtain or expand on features not oered by the
motherboard.

Mainframe computer

Storage devices
Main article: Computer data storage
A storage device is any computing hardware that is used
for storing, porting and extracting data les and objects.
It can hold and store information both temporarily and
permanently, and can be internal or external to a computer, 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 fundamental component of computers.
Fixed media Data is stored by a computer using a variety 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 ecient,
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 perforA mainframe computer is a much larger computer that
mance or reliability.
typically lls 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 ash drive or optical disc may be used. Their governments and large enterprises.

98

12.3.3

CHAPTER 12. COMPUTER HARDWARE

Departmental computing

Main article: Minicomputer


In the 1960s and 1970s, more and more departments
started to use cheaper and dedicated systems for specic
purposes like process control and laboratory automation.

12.5 See also


Electronic hardware
List of computer hardware manufacturers
Computer architecture
Open-source computing hardware

12.6 References
12.3.4

Supercomputer

Main article: Supercomputer


A supercomputer is supercially similar to a mainframe,
but is instead intended for extremely demanding computational tasks. As of June 2016, the fastest supercomputer in the world is the Sunway TaihuLight, in Jiangsu,
China.[7]
The term supercomputer does not refer to a specic technology. Rather it indicates the fastest computers available at any given time. In mid 2011, the fastest supercomputers boasted speeds exceeding one petaop, or 1
quadrillion (10^15 or 1,000 trillion) oating point operations per second. Super computers are fast but extremely
costly so they are generally used by large organizations to
execute computationally demanding tasks involving large
data sets. Super computers typically run military and scientic applications. Although they cost millions of dollars, they are also being used for commercial applications where huge amounts of data must be analyzed. For
example, large banks employ supercomputers to calculate the risks and returns of various investment strategies,
and healthcare organizations use them to analyze giant
databases of patient data to determine optimal treatments
for various diseases and problems incurring to the country.

12.4 Hardware upgrade


When using computer hardware, an upgrade means
adding new hardware to a computer that improves its performance, 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 les 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 upgrade the GPU for extra rendering power. Performing
such hardware upgrades may be necessary for older computers to meet a programs system requirements.

[1] Parts of computer. Microsoft. Retrieved 5 December


2013.
[2] Smither, Roger. Use of computers in audiovisual
archives. UNESCO. Retrieved 5 December 2013.
[3] von Neumann, John (1945). First Draft of a Report on
the EDVAC (PDF).
[4] Markgraf, Joey D. (2007). The Von Neumann bottleneck. Archived from the original on 2011-06-09. Retrieved 24 August 2011.
[5] US B2B Channel sales reach nearly $62 Billion in 2013,
According to The NPD Group. NPD Group. February
4, 2014.
[6] How long should a laptop battery last?". Computer Hope.
Retrieved 9 December 2013.
[7] Alba, Davey. Chinas Tianhe-2 Caps Top 10 Supercomputers. IEEE. Retrieved 9 December 2013.

12.7 External links


Media related to Computer hardware at Wikimedia
Commons
Learning materials related to Computer hardware at
Wikiversity

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
Concurrent computing is a form of computing in which
several computations are executed during overlapping
time periods concurrently instead of sequentially
(one completing before the next starts). This is a property of a system this may be an individual program,
a computer, or a network and there is a separate execution point or thread of control for each computation
(process). A concurrent system is one where a computation can advance without waiting for all other computations to complete; where more than one computation can
advance at the same time.[1]

For example, concurrent processes can be executed on


one core by interleaving the execution steps of each process via time-sharing slices: only one process runs at a
time, and if it does not complete during its time slice, it is
paused, another process begins or resumes, and then later
the original process is resumed. In this way, multiple processes are part-way through execution at a single instant,
but only one process is being executed at that instant.

Concurrent computations may be executed in


parallel,[2][5] for example by assigning each process
to a separate processor or processor core, or distributing
a computation across a network, but in general, the lanAs 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 eld 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 nished before T2 or vice


versa (serial and sequential);

See also: Parallel computing


Concurrent computing is related to but distinct from
parallel computing, though these concepts are frequently
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
physical instant, for example on separate processors
of a multi-processor machine, with the goal of speeding up computationsparallel computing is impossible on a (one-core) single processor, as only one computation can occur at any instant (during any single
clock cycle).[lower-alpha 1] By contrast, concurrent computing consists of process lifetimes overlapping, but execution need not happen at the same instant. The goal here
is to model processes in the outside world that happen
concurrently, such as multiple clients accessing a server
at the same time. Structuring software systems as composed of multiple concurrent, communicating parts can

T1 and T2 may be executed alternately (serial and


concurrent);
T1 and T2 may be executed simultaneously at the
same instant of time (parallel and concurrent).

The word sequential is used as an antonym for both


concurrent and parallel"; when these are explicitly distinguished, concurrent/sequential and parallel/serial are
used as opposing pairs.[6] A schedule in which tasks execute one at a time (serially, no parallelism), without interleaving (sequentially, no concurrency: no task begins
until the prior task ends) is called a serial schedule. A
set of tasks that can be scheduled serially is serializable,
which simplies concurrency control.

99

100

13.1.1

CHAPTER 13. CONCURRENT COMPUTING

Coordinating access to shared re- 13.2


sources

Models

There are several models of concurrent computing, which


The main challenge in designing concurrent programs can be used to understand and analyze concurrent sysis concurrency control: ensuring the correct sequencing tems. These models include:
of the interactions or communications between dierent computational executions, and coordinating access
Actor model
to resources that are shared among executions.[5] Po Object-capability model for security
tential problems include race conditions, deadlocks, and
resource starvation. For example, consider the following
Petri nets
algorithm to make withdrawals from a checking account
Process calculi such as
represented by the shared resource balance:
1 bool withdraw(int withdrawal) 2 { 3 if (balance >=
withdrawal) 4 { 5 balance -= withdrawal; 6 return true;
7 } 8 return false; 9 }

Ambient calculus
Calculus of communicating systems (CCS)
Communicating sequential processes (CSP)

-calculus
Suppose balance = 500, and two concurrent threads make
Join-calculus
the calls withdraw(300) and withdraw(350). If line 3 in
both operations executes before line 5 both operations
Input/output automaton
will nd that balance >= withdrawal evaluates to true,
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 problems with shared resources need the use of concurrency A number of dierent methods can be used to implecontrol, 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 access to these resources.

13.3.1 Interaction and communication

Unfortunately, while many solutions exist to the problem


of a conict 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:
Shared memory communication Concurrent components communicate by altering the contents of
shared memory locations (exemplied by Java and
C#). This style of concurrent programming usu Increased program throughputparallel execution
ally needs the use of some form of locking (e.g.,
of a concurrent program allows the number of tasks
mutexes, semaphores, or monitors) to coordinate
completed in a given time to increase.
between threads. A program that properly implements any of these is said to be thread-safe.
High
responsiveness
for
input/output
input/output-intensive programs mostly wait Message passing communication Concurrent compofor input or output operations to complete. Connents communicate by exchanging messages (exemcurrent programming allows the time that would be
plied 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 structuresome probceived. Asynchronous message passing may be relems and problem domains are well-suited to repliable or unreliable (sometimes referred to as send
resentation as concurrent tasks or processes.
and pray). Message-passing concurrency tends to

13.1.2

Advantages

13.6. LANGUAGES SUPPORTING IT

101

be far easier to reason about than shared-memory


Process
concurrency, and is typically considered a more ro Thread
bust form of concurrent programming. A wide variety 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 deMessage passing can be eciently implemented via vices.
symmetric multiprocessing, with or without shared
memory cache coherence.

13.6 Languages supporting it


Shared memory and message passing concurrency have
dierent performance characteristics. Typically (although not always), the per-process memory overhead
and task switching overhead is lower in a message passing
system, but the overhead of message passing is greater
than for a procedure call. These dierences are often
overwhelmed by other performance factors.

13.4 History

Concurrent programming languages are programming


languages that use language constructs for concurrency.
These constructs may involve multi-threading, support
for distributed computing, message passing, shared
resources (including shared memory) or futures and
promises. Such languages are sometimes described as
Concurrency Oriented Languages or Concurrency Oriented Programming Languages (COPL).[8]
Today, the most commonly used programming languages
that have specic constructs for concurrency are Java
and C#. Both of these languages fundamentally use a
shared-memory concurrency model, with locking provided by monitors (although message-passing models can
and have been implemented on top of the underlying
shared-memory model). Of the languages that use a
message-passing concurrency model, Erlang is probably
the most widely used in industry at present.

Concurrent computing developed out of earlier work on


railroads and telegraphy, from the 19th and early 20th
century, and some terms date to this period, such as
semaphores. These arose to address the question of how
to handle multiple trains on the same railroad system
(avoiding collisions and maximizing eciency) and how
to handle multiple transmissions over a given set of wires
(improving eciency), such as via time-division multiMany concurrent programming languages have been deplexing (1870s).
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
rst paper in this eld, 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:

13.5 Prevalence

Adageneral purpose, with native support for message passing and monitor based concurrency

Concurrency is pervasive in computing, occurring from


low-level hardware on a single chip to world-wide networks. Examples follow.

Alefconcurrent, with threads and message passing, for system programming in early versions of
Plan 9 from Bell Labs

At the programming language level:

Aliceextension to Standard ML, adds support for


concurrency via futures

Channel
Coroutine
Futures and promises
At the operating system level:
Computer multitasking, including both cooperative
multitasking and preemptive multitasking
Time-sharing, which replaced sequential batch
processing of jobs with concurrent use of a
system

Ateji PXextension to Java with parallel primitives


inspired from -calculus
Axumdomain specic, concurrent, based on actor
model and .NET Common Language Runtime using
a C-like syntax
C++std::thread
C (C omega)for research, extends C#, uses
asynchronous communication
C#supports concurrent computing since version
5.0 using lock, yield, async and await keywords

102

CHAPTER 13. CONCURRENT COMPUTING

Clojuremodern Lisp for the JVM

Join Javaconcurrent, based on Java language

Concurrent Cleanfunctional programming, similar to Haskell

Jouledataow-based, communicates by message


passing

Concurrent Collections (CnC)Achieves implicit


parallelism independent of memory model by explicitly dening ow of data and control

Joyceconcurrent, teaching, built on Concurrent


Pascal with features from CSP by Per Brinch Hansen

Concurrent Haskelllazy, pure functional language


operating concurrent processes on shared memory

LabVIEWgraphical, dataow, functions are


nodes in a graph, data is wires between the nodes;
includes object-oriented language

Concurrent MLconcurrent extension of Standard


ML

Limborelative of Alef, for system programming


in Inferno (operating system)

Concurrent Pascalby Per Brinch Hansen

MultiLispScheme variant extended to support


parallelism

Curry
Dmulti-paradigm system programming language
with explicit support for concurrent programming
(actor model)
Euses promises to preclude deadlocks
ECMAScriptpromises available in various libraries, proposed for inclusion in standard in ECMAScript 6

Modula-2for system programming, by N. Wirth


as a successor to Pascal with native support for
coroutines
Modula-3modern member of Algol family with
extensive support for threads, mutexes, condition
variables
Newsqueakfor research, with channels as rstclass values; predecessor of Alef

Eielthrough its SCOOP mechanism based on


the concepts of Design by Contract

Node.jsa server-side runtime environment for


JavaScript

Elixirdynamic and functional meta-programming


aware language running on the Erlang VM.

occaminuenced heavily by communicating sequential processes (CSP)

Erlanguses asynchronous message passing with


nothing shared

occam-a modern variant of occam, which


incorporates ideas from Milners -calculus

FAUSTreal-time functional, for signal processing, compiler provides automatic parallelization via
OpenMP or a specic work-stealing scheduler

Orcheavily concurrent, nondeterministic, based


on Kleene algebra

Fortrancoarrays and do concurrent are part of


Fortran 2008 standard
Gofor system programming, with a concurrent
programming model based on CSP
Humefunctional, concurrent, for bounded space
and time environments where automata processes
are described by synchronous channels patterns and
message passing
Ioactor-based concurrency
Janusfeatures distinct askers and tellers to logical
variables, bag channels; is purely declarative
JavaThread class or Runnable interface.
JavaScriptvia web workers, in a browser environment, promises, and callbacks.
JoCamlconcurrent and distributed channel based,
extension of OCaml, implements the Join-calculus
of processes

Oz-Mozartmultiparadigm, supports shared-state


and message-passing concurrency, and futures
ParaSailobject-oriented, parallel, free of pointers,
race conditions
Pictessentially an executable implementation of
Milners -calculus
Perl with AnyEvent and Coro
Python with Twisted, greenlet and gevent
Reiauses asynchronous message passing between
shared-nothing objects
Red/Systemfor system programming, based on
Rebol
Ruby with Concurrent Ruby and Celluloid
Rustfor system programming, focus on massive
concurrency, using message-passing with move semantics, shared immutable memory, and shared
mutable memory that is provably free of race conditions.[9]

13.8. NOTES

103

SALSAactor-based with token-passing, join, and


rst-class continuations for distributed computing
over the Internet
Scalageneral purpose, designed to express common programming patterns in a concise, elegant,
and type-safe way
SequenceLgeneral purpose functional, main design objectives are ease of programming, code
clarity-readability, and automatic parallelization for
performance on multicore hardware, and provably
free of race conditions
SRfor research

Sheaf (mathematics)
Software transactional memory
Transaction processing
Java ConcurrentMap

13.8 Notes
[1] This is discounting parallelism internal to a processor
core, such as pipelining or vectorized instructions. A onecore, one-processor machine may be capable of some parallelism, such as with a coprocessor, but the processor
alone is not.

Stackless Python
StratiedJScombinator-based concurrency, based
on JavaScript

13.9 References

SuperPascalconcurrent, for teaching, built on


Concurrent Pascal and Joyce by Per Brinch Hansen

[1] Operating System Concepts 9th edition, Abraham Silberschatz. Chapter 4: Threads

Uniconfor research

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


2012, Rob Pike (slides) (video)

Termite Schemeadds Erlang-like concurrency to


Scheme

[3] Parallelism vs. Concurrency. Haskell Wiki.

TNSDLfor developing telecommunication exchanges, uses asynchronous message passing


VHSIC
Hardware
Description
(VHDL)IEEE STD-1076

Language

XCconcurrency-extended subset of C language


developed by XMOS, based on communicating
sequential processes, built-in constructs for programmable I/O
Many other languages provide support for concurrency in
the form of libraries, at levels roughly comparable with
the above list.

13.7 See also


List of important publications in concurrent, parallel, and distributed computing

[4] Schneider, Fred B. On Concurrent Programming.


Springer. ISBN 9780387949420.
[5] Ben-Ari, Mordechai (2006). Principles of Concurrent
and Distributed Programming (2nd ed.). Addison-Wesley.
ISBN 978-0-321-31283-9.
[6] Patterson & Hennessy 2013, p. 503.
[7] PODC Inuential Paper Award: 2002, ACM Symposium
on Principles of Distributed Computing, retrieved 2009-0824
[8] Armstrong, Joe (2003). Making reliable distributed systems in the presence of software errors.
[9] Blum, Ben (2012). Typesafe Shared Mutable State. Retrieved 2012-11-14.

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


Computer Organization and Design: The Hardware/Software Interface. The Morgan Kaufmann
Series in Computer Architecture and Design (5 ed.).
Morgan Kaufmann. ISBN 978-0-12407886-4.

Chu space
Critical section
Flow-based programming
Multitasking
Parallel computing
Ptolemy Project
Race condition

13.10 Further reading


Dijkstra, E. W. (1965). Solution of a problem in concurrent programming control.
Communications of the ACM. 8 (9):
569.
doi:10.1145/365559.365617.
Herlihy, Maurice (2008) [2008]. The Art of Multiprocessor Programming. Morgan Kaufmann. ISBN
978-0123705914.

104
Downey, Allen B. (2005) [2005]. The Little Book
of Semaphores (PDF). Green Tea Press. ISBN 14414-1868-7.
Filman, Robert E.; Daniel P. Friedman (1984). Coordinated Computing: Tools and Techniques for Distributed Software. New York: McGraw-Hill. p.
370. ISBN 0-07-022439-0.
Leppjrvi, Jouni (2008). A pragmatic, historically
oriented survey on the universality of synchronization
primitives (PDF). University of Oulu.
Taubenfeld, Gadi (2006). Synchronization Algorithms and Concurrent Programming. Pearson /
Prentice Hall. p. 433. ISBN 0-13-197259-6.

13.11 External links


Concurrent Systems Virtual Library

CHAPTER 13. CONCURRENT COMPUTING

Chapter 14

Connection-oriented communication
Connection-oriented (CO-mode[1] ) communication is
a network communication mode in telecommunications
and computer networking, where a communication session or a semi-permanent connection is established before any useful data can be transferred, and where a
stream of data is delivered in the same order as it was
sent. The alternative to connection-oriented transmission is connectionless communication, for example the
datagram mode communication used by the IP and UDP
protocols, where data may be delivered out of order, since
dierent packets are routed independently, and may be
delivered over dierent paths.
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 transport layer virtual circuit protocol such as the TCP protocol, allowing data to be delivered in order although the
lower layer switching is connectionless, or it may be a
data link layer or network layer switching mode, where
all data packets belonging to the same trac stream are
delivered over the same path, and trac ows are identied by some connection identier rather than by complete routing information, allowing fast hardware based
switching.
Connection-oriented protocol services are often but not
always reliable network services, that provide acknowledgment after successful delivery, and automatic repeat
request functions in case of missing data or detected biterrors. ATM, Frame Relay and MPLS are examples of a
connection-oriented, unreliable protocol.

14.1 Circuit switching


Circuit switched communication, for example the public
switched telephone network, ISDN, SONET/SDH and
optical mesh networks, are intrinsically connectionoriented communications systems. Circuit mode communication provides guarantees that data will arrive with
constant bandwidth and at constant delay and in-order delivery of a bit stream or byte stream is provided. The
switches are recongured during a circuit establishment
phase.

14.2 Virtual circuit switching


Packet switched communication may also be connectionoriented, which is called virtual circuit mode communication. Due to the packet switching, the communication
may suer from variable bit rate and delay, due to varying trac load and packet queue lengths. Connectionoriented communication are not necessarily reliable protocols.
Because they can keep track of a conversation,
connection-oriented protocols are sometimes described
as stateful.

14.2.1 Transport layer connection mode


communication
Connection-oriented transport layer protocols provide
connection-oriented communications over connectionless communications systems. A connection-oriented
transport layer protocol, such as TCP, may be based
on a connectionless network layer protocol (such as IP),
but still achieves in-order delivery of a byte-stream, by
means of segment sequence numbering on the sender
side, packet buering and data packet reordering on the
receiver side. The sequence numbering requires two-way
synchronization of segment counters during a three-step
connection establishment phase.

14.2.2 Datalink and network layer virtual


circuit switching
In a connection-oriented packet switched data link layer
or network layer protocol, all data is sent over the same
path during a communication session. The protocol identies trac ows only by a channel/data stream number, often denoted virtual circuit identier (VCI), rather
than by complete routing information for each packet
(source and destination addresses) used in connectless
datagram switching such as conventional IP routers. In
connection-oriented communication, routing information
may be provided to the network nodes during the connection establishment phase, where the VCI is dened in tables 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 identier 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 characteristically connectionless protocols, such as IP trac,
14.4 See also
are being tagged with connection-oriented header prexes
(e.g., as with MPLS, or IPv6's built-in Flow ID eld).
Statistical time division multiplexing
ATM and Frame Relay, for example, are both examples
Packet
of a connection-oriented, unreliable data link layer protocols. There are also reliable connectionless protocols
Segment
as well, such as AX.25 network layer protocol, when it
passes data in I-frames. But this combination is rare,
and reliable-connectionless is uncommon in modern net14.5 References
works.
Connection-oriented protocols handle real-time trac
substantially more eciently than connectionless protocols, especially with short constant length packets, which
is why ATM has yet to be replaced with Ethernet for carrying real-time, isochronous trac streams, especially in
heavily aggregated networks like backbones, where the
motto bandwidth is cheap fails to deliver on its promise.
Experience has also shown that over-provisioning bandwidth does not resolve all quality of service issues. Hence,
(10-)gigabit Ethernet is not expected to replace ATM at
this time.
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 communication, 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 protocol.

[1] Information Processing Systems - Open Systems Interconnection, Transport Service Denition, International
Organization for Standardization, International Standard
8072, June 1986.
[2] Ramos-Escano; et al. (2005-06-02). US Patent Application Publication 2005/0117529 A1. Retrieved 2008-0519.
[3] Ramos-Escano; et al. (2005-06-02). US Patent Application Publication 2005/0117529 A1. Retrieved 2008-0519.

Chapter 15

Connectionless communication
Connectionless communication, often referred to as
CL-mode communication,[1] is a data transmission
method used in packet switching networks by which each
data unit is individually addressed and routed based on
information carried in each unit, rather than in the setup
information of a prearranged, xed data channel as in
connection-oriented communication.

(and hence cache) routing-related information, avoiding


re-computation for every packet. Network components
could also reserve capacity for the transfer of the subsequent data units of a video download, for example.
Distinction between connectionless and connectionoriented transmission may take place at several layers of
the OSI Reference Model:

Under connectionless communication between two network end points, a message can be sent from one end
point to another without prior arrangement. The device at
one end of the communication transmits data addressed
to the other, without rst ensuring that the recipient is
available and ready to receive the data. Some protocols allow for error correction by requested retransmission. Internet Protocol (IP) and User Datagram Protocol
(UDP) are connectionless protocols.

Transport Layer: TCP is a connection-oriented


transport protocol. UDP is connectionless.
Network Layer.
Data Link Layer: The IEEE 802.2 protocol at the
Logical Link Control sublayer of the data link layer
may provide both connectionless and connectionoriented services. In fact, some network protocols
(such as SNA's Path Control in its early stages) require a connection-oriented data link layer. Others
(like IP) do not. (After the appearance of APPN,
SNA could operate on a connectionless data link service as well.)

A packet transmitted in a connectionless mode is frequently called a datagram.


Connectionless protocols are usually described as
stateless protocols because the end points have no
protocol-dened way to remember where they are in a
conversation of message exchanges.
In connection-oriented communication the communicating peers must rst establish a logical or physical data
channel or connection in a dialog preceding the exchange
of user data.

15.1 Notable connectionless protocols


Internet Protocol (IP)

The connectionless communications has the advantage


over connection-oriented communications in that it has
low overhead. It also allows for multicast and broadcast
operations in which the same data are transmitted to several recipients in a single transmission.

User Datagram Protocol (UDP)


Internet Control Message Protocol (ICMP)
Internetwork Packet Exchange (IPX)

In connectionless transmissions the service provider usually cannot guarantee that there will be no loss, error insertion, misdelivery, duplication, or out-of-sequence delivery of the packet. However, the eect of errors may
be reduced by implementing error correction within an
application protocol.
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
such a data exchange the components (routers, bridges)
along the network path would be able to pre-compute

TIPC
NetBEUI
Hypertext Transfer Protocol (HTTP)

15.2 References

107

[1] Information Processing Systems - Open Systems Interconnection, Transport Service Denition - Addendum

108

CHAPTER 15. CONNECTIONLESS COMMUNICATION

1: Connectionless-mode Transmission, International Organization 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 ow diagram
16.2 Theory

Data ow diagram example

Data ow diagram example.[1]

Function
A data ow diagram (DFD) is a graphical representation of the ow 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 design).

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 information about whether processes will operate in sequence
or in parallel (which is shown on a owchart).

Input/Output

16.1 History
Flow
Larry Constantine, the original developer of structured
design,[3] based on Martin and Estrins Data Flow
Data ow diagram - Yourdon/DeMarco notation
Graph model of computation.
Starting in the 1970s, data ow diagrams (DFD) became
a popular way to visualize the major steps and data involved in software system processes. DFDs were usually
used to show data ow in a computer system, although
they could in theory be applied to business process modeling. DFD were useful to document the major data ows
or to explore a new high-level design in terms of data
ow.[4]

Data ow diagrams are also known as bubble charts.[5]


DFD is a designing tool used in the top-down approach
to Systems Design. This context-level DFD is next exploded, to produce a Level 1 DFD that shows some of
the detail of the system being modeled. The Level 1 DFD
shows how the system is divided into sub-systems (processes), each of which deals with one or more of the data
ows 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.


It also identies internal data stores that must be present
in order for the system to do its job, and shows the ow
of data between the various parts of the system.

Data island

Data ow diagrams are one of the three essential perspectives of the structured-systems analysis and design
method SSADM. The sponsor of a project and the end
users will need to be briefed and consulted throughout all
stages of a systems evolution. With a data ow diagram,
users are able to visualize how the system will operate,
what the system will accomplish, and how the system will
be implemented. The old systems dataow diagrams can
be drawn up and compared with the new systems data
ow diagrams to draw comparisons to implement a more
ecient system. Data ow diagrams can be used to provide the end user with a physical idea of where the data
they input ultimately has an eect upon the structure of
the whole system from order to dispatch to report. How
any system is developed can be determined through a data
ow diagram model.

Functional ow block diagram

In the course of developing a set of levelled data ow diagrams the analyst/designer is forced to address how the
system may be decomposed into component sub-systems,
and to identify the transaction data in the data model.

Dataow
Directed acyclic graph

Function model
IDEF0
Logical Data Flow
Pipeline
Structured Analysis and Design Technique
Structure chart
System context diagram
Value stream mapping
Workow

16.4 References

Data ow diagrams can be used in both Analysis and Design phase of the SDLC.

[1] John Azzolini (2000). Introduction to Systems Engineering Practices. July 2001.

There are dierent notations to draw data ow diagrams


(Yourdon & Coad and Gane & Sarson[6] ), dening dierent visual representations for processes, data stores, data
ow, and external entities.[7]

[2] Bruza, P. D., Van der Weide, Th. P., The Semantics of
Data Flow Diagrams, University of Nijmegen, 1993.

16.2.1

Physical DFD

A physical DFD shows how the system is actually implemented, either at the moment (Current Physical DFD), or
how the designer intends it to be in the future (Required
Physical DFD). Thus, a Physical DFD may be used to
describe the set of data items that appear on each piece
of paper that move around an oce, and the fact that a
particular set of pieces of paper are stored together in a
ling cabinet. It is quite possible that a Physical DFD
will include references to data that are duplicated, or redundant, and that the data stores, if implemented as a set
of database tables, would constitute an un-normalised (or
de-normalised) relational database. In contrast, a Logical
DFD attempts to capture the data ow aspects of a system
in a form that has neither redundancy nor duplication.

[3] W. Stevens, G. Myers, L. Constantine, Structured Design, IBM Systems Journal, 13 (2), 115-139, 1974.
[4] Craig Larman, Applying UML and Patterns, Pearson
Education, ISBN 978-81-7758-979-5
[5] Introduced by Clive Finkelstein in Australia, CACI in the
UK, and later writers such as James Martin
[6] Chris Gane and Trish Sarson. Structured Systems Analysis: Tools and Techniques. McDonnell Douglas Systems
Integration Company, 1977
[7] How to draw Data Flow Diagrams

16.5 Further reading


Scott W. Ambler. The Object Primer 3rd Edition
Agile Model Driven Development with UML 2

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 dataow diagram for


Acme Fashion Supplies" ..and accompanying elementary process descriptions

Control ow diagram

16.6. EXTERNAL LINKS


"Yourdons chapter on DFDs"
Example of using presentation "DataFlow PowerPoint Diagram"

111

Chapter 17

Data structure
keys

17.1 Overview

hash
function

buckets
00

John Smith
Lisa Smith
Sandra Dee

01

521-8976

02

521-1234

03
:

13
14
15

521-9655

Data structures are generally based on the ability of a


computer to fetch and store data at any place in its memory, specied by a pointera bit string, representing a
memory address, that can be itself stored in memory and
manipulated by the program. Thus, the array and record
data structures are based on computing the addresses of
data items with arithmetic operations; while the linked
data structures are based on storing addresses of data
items within the structure itself. Many data structures use
both principles, sometimes combined in non-trivial ways
(as in XOR linking).

The implementation of a data structure usually requires


writing a set of procedures that create and manipulate instances of that structure. The eciency of a data structure cannot be analyzed separately from those operations.
This observation motivates the theoretical concept of an
abstract data type, a data structure that is dened indiNot to be confused with data type.
rectly by the operations that may be performed on it, and
the mathematical properties of those operations (includIn 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 eciently.[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 structure and the computional complexity of those operations.
Main article: List of data structures
In comparison, a data structure is a concrete implementation of the specication provided by an ADT.
There are numerous types of data structures, generally
Dierent kinds of data structures are suited to dierbuilt upon simpler primitive data types:
ent kinds of applications, and some are highly specialized to specic tasks. For example, relational databases
An array is a number of elements in a specic order,
commonly use B-tree indexes for data retrieval,[3] while
typically all of the same type. Elements are accessed
compiler implementations usually use hash tables to look
using an integer index to specify which element is
up identiers.
required (Depending on the language, individual elData structures provide a means to manage large amounts
ements may either all be forced to be the same type,
of data eciently for uses such as large databases and
or may be of almost any type). Typical implementainternet indexing services. Usually, ecient data structions allocate contiguous memory words for the eletures are key to designing ecient algorithms. Some forments of arrays (but this is not always a necessity).
mal design methods and programming languages emphaArrays may be xed-length or resizable.
size data structures, rather than algorithms, as the key or A linked list (also just called list) is a linear collection
ganizing factor in software design. Data structures can be
of data elements of any type, called nodes, where
used to organize the storage and retrieval of information
each node has itself a value, and points to the next
stored in both main memory and secondary memory.
A hash table.

112

17.4. SEE ALSO


node in the linked list. The principal advantage of a
linked list over an array, is that values can always be
eciently inserted and removed without relocating
the rest of the list. Certain other operations, such
as random access to a certain element, are however
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
values, typically in xed number and sequence and
typically indexed by names. The elements of records
are usually called elds or members.
A union is a data structure that species which of a
number of permitted primitive types may be stored
in its instances, e.g. oat or long integer. Contrast
with a record, which could be dened to contain a
oat and an integer; whereas in a union, there is only
one value at a time. Enough space is allocated to
contain the widest member datatype.
A tagged union (also called variant, variant record,
discriminated union, or disjoint union) contains an
additional eld indicating its current type, for enhanced type safety.
A class is a data structure that contains data elds,
like a record, as well as various methods which operate on the contents of the record. In the context
of object-oriented programming, records are known
as plain old data structures to distinguish them from
classes.

17.3 Language support


Most assembly languages and some low-level languages,
such as BCPL (Basic Combined Programming Language), lack built-in support for data structures. On the
other hand, many high-level programming languages and
some higher-level assembly languages, such as MASM,
have special syntax or other built-in support for certain data structures, such as records and arrays. For
example, the C and Pascal languages support structs
and records, respectively, in addition to vectors (onedimensional arrays) and multi-dimensional arrays.[4][5]
Most programming languages feature some sort of library
mechanism that allows data structure implementations to
be reused by dierent programs. Modern languages usually come with standard libraries that implement the most
common data structures. Examples are the C++ Standard
Template Library, the Java Collections Framework, and
Microsoft's .NET Framework.
Modern languages also generally support modular programming, the separation between the interface of a library module and its implementation. Some provide
opaque data types that allow clients to hide implementation details. Object-oriented programming languages,

113
such as C++, Java and Smalltalk may use classes for this
purpose.
Many known data structures have concurrent versions that
allow multiple computing threads to access the data structure simultaneously.

17.4 See also


Abstract data type
Concurrent data structure
Data model
Dynamization
Linked data structure
List of data structures
Persistent data structure
Plain old data structure

17.5 References
[1] Paul E. Black (ed.), entry for data structure in Dictionary
of Algorithms and Data Structures. U.S. National Institute
of Standards and Technology. 15 December 2004. Online
version Accessed May 21, 2009.
[2] Entry data structure in the Encyclopdia Britannica
(2009) Online entry accessed on May 21, 2009.
[3] Gavin Powell (2006). Chapter 8: Building FastPerforming Database Models. Beginning Database Design ISBN 978-0-7645-7490-0. Wrox Publishing.
[4] The GNU C Manual. Free Software Foundation. Retrieved 15 October 2014.
[5] Free Pascal: Reference Guide. Free Pascal. Retrieved
15 October 2014.

17.6 Further reading


Peter Brass, Advanced Data Structures, Cambridge
University Press, 2008.
Donald Knuth, The Art of Computer Programming,
vol. 1. Addison-Wesley, 3rd edition, 1997.
Dinesh Mehta and Sartaj Sahni Handbook of
Data Structures and Applications, Chapman and
Hall/CRC Press, 2007.
Niklaus Wirth, Algorithms and Data Structures,
Prentice Hall, 1985.

114

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 perspective
Schaer, C. Data Structures and Algorithm Analysis

CHAPTER 17. DATA STRUCTURE

Chapter 18

De facto standard
A de facto standard is a custom, convention, product,
or system that has achieved a dominant position by public acceptance or market forces (such as early entrance to
the market). De facto is a Latin phrase that means in fact
(literally by or from fact) in the sense of in practice but
not necessarily ordained by law or in practice or actuality, but not ocially established, as opposed to de jure.

music distribution, then replaced it it is now


supported by the vast majority of music players, audio transport, audio storage and noncommercial media. WAV and MP3 are also
"de jure ISO formats.
with consolidation by uniqueness and eciency:
HTML (computer le format) started as "de
facto" (1993-1995) and became the "de jure"
standard (1995present day).

The term de facto standard is used in contrast with obligatory standards (also known as "de jure standards); or to
express the dominant voluntary standard, when there is
more than one standard available for the same use.

PDF (computer le format) was rst created


in 1993 by Adobe. Adobe internal standards
were part of its software quality systems, but
they were neither published nor coordinated by
a standards body. With the Acrobat Reader
program available for free, and continued support of the format, PDF eventually became the
de facto standard for printable documents. In
2005, PDF/A became a de jure standard as
ISO 19005-1:2005.[3] In 2008 Adobes PDF
1.7 became ISO 32000-1:2008.[4][5]

In social sciences, a voluntary standard that is also a de


facto standard is a typical solution to a coordination problem.[1] The choice of a de facto standard tends to be stable
in situations in which all parties can realize mutual gains,
but only by making mutually consistent decisions. In contrast, an enforced "de jure standard is a solution to the
prisoners problem.[1]

18.1 Examples
A selection of well-known and illustrative examples of de
facto and de jure standards are:

Examples of long-time de facto but never de jure standards (for computer le formats):

with consolidation by tradition of use:


The drivers seat side in a given country starts
as a user/industry preference, turning to a local
tradition, then a trac code local norm.
The QWERTY system was one of several options for the layout of letters on typewriter (and
later keyboard) keys. It was developed to prevent adjacent keys from jamming on early and
later mechanical typewriters, often attributed
to the typists speed.[2] It became a de facto
standard because it was used on the most commercially successful early typewriters.

AutoCAD DXF: a de facto ASCII format for import


and export of CAD drawings and fragments in the
1980s and 1990s. In the 2000s, XML based standards emerged as de facto standards.
Microsoft Word DOC (over all other old PC word
processors): one of the best known de facto standards. Due to the market dominance of Word, it
is supported by all oce applications that intend to
compete with it, typically by reverse engineering the
undocumented le format. Microsoft has repeatedly
internally changed the le specication between versions of Word to suit their own needs, while continuing to reuse the same le extension identier for
dierent versions.

The ASCII text character set, standardized in


1963 is still in use. Document les containing Other examples:
ASCII usually have the TXT extension.
The MP3 audio format started as an alternative to CD WAV (lossless format) for Internet
115

Most American-made spark plugs require a 13/16inch socket to remove or install.

116
The 1/2-inch (12.7 mm) spacing of the rollers in a
bicycle chain.
The IBM Personal Computer (PC). By one year
after its 1981 release, John Dvorak described
the PC as rapidly becoming a de facto standard microcomputer.[6] With the MS-DOS and
Microsoft Windows operating systems, it gained a
large share of the personal computer market. Because of the great inuence of the IBM PC on the
personal computer market, competing products like
the Rainbow 100 were eventually withdrawn.
Interpreted programming languages such as PHP
that have multiple implementations tend to also have
a de facto standard. In PHPs case the de facto standard is the binaries available from php.net, rather
than the Phalanger implementation for example.

CHAPTER 18. DE FACTO STANDARD

18.3 See also


Dominant design
Free market
Format war
Monopoly
Real versus nominal value

18.4 References
[1] Ullmann-Margalit, Edna (1977). The Emergence of
Norms. Oxford: Clarendon Press. ISBN 0-19-8244118.
[2] QWERTY

18.2 Standards battles

[3] ISO 19005-1:2005 - Document management -- Electronic document le format for long-term preservation -Part 1: Use of PDF 1.4 (PDF/A-1)". Retrieved 17 April
2015.

There are many examples of de facto consolidation (of


a standard) by market forces and competition, in a twosided market, after a dispute. Examples:

[4] ISO 32000-1:2008 - Document management -- Portable


document format -- Part 1: PDF 1.7. Retrieved 17 April
2015.

Alternating current over direct current: see War of


Currents.
VHS over Betamax (see videotape format war):
when the VHS format for videotape recording was
introduced, other recording formats were already
available in the market. Regardless of whether Betamax 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 denition optical 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 OpenOce,
LibreOce, Calligra, KOce et al. use it as
default le format)) vs Microsofts Oce Open
XML format (a de facto standard for MS-Windows
users).
Adobe Flash vs Scalable Vector Graphics (SVG), for
vector graphics web page animations.

[5] Adobe - Release PDF for Industry Standardization


FAQ. Retrieved 17 April 2015.
[6] Zussman, John Unger (1982-08-23). Lets keep those
systems open. InfoWorld. p. 29. Retrieved 29 January
2015.

Chapter 19

Distributed Component Object Model


Dcom redirects here. For the doctoral degree, see won out over both of them. Microsoft, at one point, atDoctor of Commerce. For other uses, see DCOM tempted and failed to head this o by adding an extra http
(disambiguation).
transport to DCE/RPC called ncacn_http (Network Computing 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 communication among software components distributed across net- DCOM is supported natively in Windows NT 4.0, Winworked 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
2012, Windows Server 2012 R2 and the Windows Server
application server infrastructure.
The addition of the D to COM was due to exten- 2016 Technical Preview.
sive use of DCE/RPC (Distributed Computing Environment/Remote Procedure Calls) more specically Microsofts enhanced version, known as MSRPC.

19.1 Hardening

In terms of the extensions it added to COM, DCOM had


As part of the initiative that began at Microsoft as part
to solve the problems of
of Secure Development Lifecycle to re-architect insecure code, DCOM saw some signicant security-focused
Marshalling serializing and deserializing the arguchanges in Windows XP Service Pack 2.[1]
ments and return values of method calls over the
wire.
Distributed garbage collection ensuring that references held by clients of interfaces are released when,
for example, the client process crashed, or the network connection was lost.
It had to combine Hundreds/Tens of Thousands of
objects held in the clients browser with a single
transmission in order to minimize bandwidth utilization.
One of the key factors in solving these problems is the
use of DCE/RPC as the underlying RPC mechanism behind DCOM. DCE/RPC has strictly dened rules regarding marshalling and who is responsible for freeing memory.

19.2 Alternative versions and implementations


COMsource: Its source code is available, along with full
and complete documentation, sucient to use and also
implement an interoperable version of DCOM. According to that documentation, COMsource comes directly
from the Windows NT 4.0 source code, and even includes
the source code for a Windows NT Registry Service.

The Wine Team is also implementing DCOM for binary


interoperability purposes; they are not currently interested in the networking side of DCOM, which is provided
by MSRPC. They are restricted to implementing NDR
(Network Data Representation) through Microsofts 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 diculties involved in getting ei- TangramCOM is a separate project from Wine, fother of these technologies to work over Internet rewalls, cusing on implementing DCOM on Linux-based smartand 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 binaryinteroperability, as the Samba MSRPC implementation is
far from binary-interoperable with Microsofts 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 Specication
The Open Groups COMsource
COMsource
TangramCOM
EntireX DCOM

Chapter 20

Duplex (telecommunications)
A duplex communication system is a point-to-point system 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 duplex system has two clearly dened data transmissions,
with each path carrying information in only one direction: 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.

20.1 Half-duplex

In a full duplex system, both parties can communicate


with each other simultaneously. An example of a fullduplex device is a telephone; the parties at both ends of a
call can speak and be heard by the other party simultaneously. 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
A half-duplex (HDX) system provides communication in
are two communication paths/channels between them.
both directions, but only one direction at a time (not siIn a half-duplex system, there are still two clearly dened 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 transmitother 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 o 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 o the the same frequency. A good analogy for a half-duplex
system would be a one-lane road with trac controllers at
transmitter.
each end, such as a two-lane bridge under re-construction.
Duplex systems are employed in many communications Trac can ow in both directions, but only one direction
networks, either to allow for a communication two-way at a time, regulated by the trac controllers.
street between two connected parties or to provide a reverse path for the monitoring and remote adjustment of Half-duplex systems are usually used to conserve
bandwidth, since only a single communication channel
equipment in the eld.
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
In automatically run communications systems, such as
direction.
two-way data-links, the time allocations for communications in a half-duplex system can be rmly controlled by
119

120
the hardware. Thus, there is no waste of the channel for
switching. For example, station A on one end of the data
link could be allowed to transmit for exactly one second,
then station B on the other end could be allowed to transmit for exactly one second, and then the cycle repeats.

CHAPTER 20. DUPLEX (TELECOMMUNICATIONS)


capacity is available in both directions because the send
and receive functions are separate. Third, since there is
only one transmitter on each twisted pair, stations (nodes)
do not need to wait for others to complete their transmissions.

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 operasages.
tion, since their poll-and-response schemes could not tolerate the slight delays in reversing the direction of transmission in a half-duplex line.

20.2 Full-duplex
20.3 Full-duplex emulation

A simple illustration of a full-duplex communication system.


Full-duplex is not common in handheld radios as shown here due
to the cost and complexity of common duplexing methods, but is
used in telephones, cellphones and cordless phones.

A full-duplex (FDX) system, or sometimes called doubleduplex, allows communication in both directions, and,
unlike half-duplex, allows this to happen simultaneously.
Land-line telephone networks are full-duplex, since they
allow both callers to speak and be heard at the same
time, with the transition from four to two wires being
achieved by a hybrid coil in a telephone hybrid. Modern
cell phones are also full-duplex.[1]

Where channel access methods are used in point-tomultipoint networks (such as cellular networks) for dividing forward and reverse communication channels on the
same physical communications medium, they are known
as duplexing methods, such as time-division duplexing and
frequency-division duplexing.

20.3.1 Time-division duplexing


Time-division duplexing (TDD) is the application of timedivision multiplexing to separate outward and return signals. It emulates full duplex communication over a half
duplex communication link.

Time-division duplexing has a strong advantage in the


case where there is asymmetry of the uplink and downlink
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 trac 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 adceived 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 communications transmitted on any single frequency always travel in
The Chinese TD-LTE 4-G, TD-SCDMA 3-G mothe same direction.
bile communications air interface.
Full-duplex Ethernet connections work by making simultaneous use of two physical twisted pairs inside the same
jacket, which are directly connected to each networked
device: one pair is for receiving packets, while the other
pair is for sending packets. This eectively makes the
cable itself a collision-free environment and doubles the
maximum total transmission capacity supported by each
Ethernet connection.

DECT wireless telephony

Full-duplex has also several benets over the use of halfduplex. First, there are no collisions so time is not wasted
by having to retransmit frames. Second, full transmission

IEEE 802.16 WiMAX

Half-duplex packet switched networks based on


carrier sense multiple access, for example 2-wire or
hubbed Ethernet, Wireless local area networks and
Bluetooth, can be considered as time-division duplexing systems, albeit not TDMA with xed framelengths.

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 sig20.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 dierent 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 hardstation. The station must be able to send and receive a ware implementations. They can be independent compotransmission 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 systems central processing unit. Devices
mode of operation is referred to as duplex mode or oset 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 oset. Frequency-division duplexing
can be ecient in the case of symmetric trac. In this
case time-division duplexing tends to waste bandwidth
during the switch-over from transmitting to receiving, has
greater inherent latency, and may require more complex
circuitry.
Another advantage of frequency-division duplexing is
that it makes radio planning easier and more ecient,
since base stations do not hear each other (as they transmit and receive in dierent sub-bands) and therefore will
normally not interfere with each other. On the converse,
with time-division duplexing systems, care must be taken
to keep guard times between neighboring base stations
(which decreases spectral eciency) or to synchronize
base stations, so that they will transmit and receive at
the same time (which increases network complexity and
therefore cost, and reduces bandwidth allocation exibility as all base stations and sectors will be forced to use
the same uplink/downlink ratio)
Examples of frequency-division duplexing systems are:

20.4 See also


Duplex mismatch
Four-wire circuit
Multiplexing
Duplexer
Communications channel
Crossband operation
Push to talk
Simplex communication
Radio resource management

20.5 References

ADSL and VDSL

[1] Cell phone Frequencies. HowStuWorks.

Most
cellular
systems,
including
the
UMTS/WCDMA use frequency-division duplexing
mode and the cdma2000 system.

[2] Greenstein, Shane; Stango, Victor (2006). Standards and


Public Policy. Cambridge University Press. pp. 129132.
ISBN 978-1-139-46075-0.

IEEE 802.16 WiMax also uses frequency-division


duplexing mode.

20.3.3

Echo cancellation

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

20.6 Further reading


Tanenbaum, Andrew S. (2003). Computer Networks. Prentice Hall. ISBN 0-13-038488-7.

Chapter 21

Dynamic Data Exchange


In computing, Dynamic Data Exchange (DDE) is a
method of interprocess communication under Microsoft
Windows or OS/2. It allows one program to subscribe
to items made available by another program, for example
a cell in a Microsoft Excel spreadsheet, and be notied
whenever that item changes. DDE was partially superseded by Object Linking and Embedding (OLE), but remains used for simple interprocess communication tasks.

21.1 History
Dynamic Data Exchange was rst introduced in 1987
with the release of Windows 2.0 as a method of
interprocess communication so that one program could
communicate with or control another program, somewhat
like Suns RPC (Remote Procedure Call).[1] It used the
Windows Messaging Layer functionality within Windows. DDE continues to work even in modern versions
of Windows, but has been superseded by newer technologies. Windows for Workgroups introduced a remoting
version called NetDDE.
OLE and OLE Automation are more advanced than
DDE, but have proven to be bulky and dicult to code.
OLE is far more sophisticated and capable than DDE because it is built on top of Microsofts Component Object
Model, but also suers from COMs problems of a higher
performance penalty and a much steeper learning curve.
COM that works between networked machines is known
as DCOM (Distributed COM). .NET Remoting provides
a layered architecture for interprocess communication in
the .NET Framework. However, legacy DDE is still used
in several places inside Windows, e.g. for Shell le associations and for the copy, cut and paste functions.

21.2 Overview

was established by a simple, three-segment model. Each


program was known to DDE by its application name.
Each application could further organize information by
groups known as topic and each topic could serve up
individual pieces of data as an item. For example, if a
user wanted to pull a value from Microsoft Excel which
was contained in a spreadsheet called Book1.xls in the
cell in the rst row and rst column, the application would
be Excel, the topic Book1.xls and the item r1c1.
A common use of DDE is for custom-developed applications to control o-the-shelf software. For example,
a custom in-house application might use DDE to open a
Microsoft Excel spreadsheet and ll it with data, by opening a DDE conversation with Excel and sending it DDE
commands. Today, however, one could also use the Excel
object model with OLE Automation (part of COM). The
technique is, however, still in use, particularly for distribution of nancial data.[2] DDE has also been widely used
in the SAS programming language for manipulating Excel and transferring data between SAS and Excel and can
be used to format Excel workbooks from within a SAS
program.

21.3 NetDDE
California-based company Wonderware (acquired by
French company Schneider Electric from Invensys Plc
in January 2014) developed an extension for DDE called
NetDDE that could be used to initiate and maintain the
network connections needed for DDE conversations between DDE-aware applications running on dierent computers in a network and transparently exchange data. A
DDE conversation is an interaction between client and
server applications. NetDDE could be used along with
DDE and the DDE management library (DDEML) in applications.

/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 ver122

21.7. EXTERNAL LINKS


sions of Windows from Windows for Workgroups to
Windows XP. In addition, Wonderware also sold an enhanced version of NetDDE to their own customers that
included support for TCP/IP. The technology is extensively used in the SCADA eld. Basic Windows applications 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 Programming 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

123

Chapter 22

Error detection and correction


Not to be confused with error handling.

data, and attaches a xed number of check bits (or parity data), which are derived from the data bits by some
deterministic algorithm. If only error detection is required, a receiver can simply apply the same algorithm
to the received data bits and compare its output with the
received check bits; if the values do not match, an error
has occurred at some point during the transmission. In a
system that uses a non-systematic code, the original message is transformed into an encoded message that has at
least as many bits as the original message.

In information theory and coding theory with applications


in computer science and telecommunication, error detection and correction or error control are techniques
that enable reliable delivery of digital data over unreliable
communication channels. Many communication channels are subject to channel noise, and thus errors may be
introduced during transmission from the source to a receiver. Error detection techniques allow detecting such
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 communication channel. Common channel models include
memory-less models where errors occur randomly and
with a certain probability, and dynamic models where
22.1 Denitions
errors occur primarily in bursts. Consequently, errordetecting and correcting codes can be generally distinThe general denitions 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
If the channel capacity cannot be determined, or is highly
from the transmitter to the receiver.
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),
which is a combination of ARQ and error-correction cod22.2 History
ing.
The modern development of error-correcting codes in
1947 is due to Richard W. Hamming.[1] A description of
Hammings code appeared in Claude Shannon's A Mathe- 22.4 Implementation
matical Theory of Communication[2] and was quickly generalized by Marcel J. E. Golay.[3]
Error correction may generally be realized in two dierent ways:

22.3 Introduction
The general idea for achieving error detection and correction is to add some redundancy (i.e., some extra data)
to a message, which receivers can use to check consistency of the delivered message, and to recover data determined to be corrupted. Error-detection and correction
schemes can be either systematic or non-systematic: In
a systematic scheme, the transmitter sends the original
124

Automatic repeat request (ARQ) (sometimes also referred to as backward error correction): This is an
error control technique whereby an error detection
scheme is combined with requests for retransmission of erroneous data. Every block of data received
is checked using the error detection code used, and
if the check fails, retransmission of the data is requested this may be done repeatedly, until the data
can be veried.

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 reconstructed data is what is deemed the most likely Main article: Parity bit
original data.
ARQ and FEC may be combined, such that minor errors are corrected without retransmission, and major errors are corrected via a request for retransmission: this is
called hybrid automatic repeat-request (HARQ).

A parity bit is a bit that is added to a group of source


bits to ensure that the number of set bits (i.e., bits with
value 1) in the outcome is even or odd. It is a very simple scheme that can be used to detect single or any other
odd number (i.e., three, ve, etc.) of errors in the output.
An even number of ipped 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 xed-length tag to a message, which enables
receivers to verify the delivered message by recomputing
22.5.3 Checksums
the tag and comparing it with the one provided.
There exists a vast variety of dierent 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
of message code words of a xed word length (e.g., byte
dancy check's performance in detecting burst errors).
values). The sum may be negated by means of a onesA random-error-correcting code based on minimum dis- complement operation prior to transmission to detect ertance 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 inecient, a repetition code is suitable in schemes, such as the Damm algorithm, the Luhn algosome applications of error correction and detection due rithm, and the Verhoe algorithm, are specically designed to detect errors commonly introduced by humans
to its simplicity.
in writing down or remembering identication numbers.

22.5.1

Repetition codes

Main article: Repetition code


A repetition code is a coding scheme that repeats the bits
across a channel to achieve error-free communication.
Given a stream of data to be transmitted, the data are divided into blocks of bits. Each block is transmitted some
predetermined number of times. For example, to send
the bit pattern 1011, the four-bit block can be repeated
three times, thus producing 1011 1011 1011. However, if this twelve-bit pattern was received as 1010 1011
1011 where the rst block is unlike the other two it
can be determined that an error has occurred.

22.5.4 Cyclic redundancy checks (CRCs)


Main article: Cyclic redundancy check
A cyclic redundancy check (CRC) is a non-secure hash
function designed to detect accidental changes to digital
data in computer networks; as a result, it is not suitable
for detecting maliciously introduced errors. It is characterized by specication of what is called a generator
polynomial, which is used as the divisor in a polynomial
long division over a nite eld, taking the input data as
the dividend, such that the remainder becomes the result.
A cyclic code has favorable properties that make it well
suited for detecting burst errors. CRCs are particularly
easy to implement in hardware, and are therefore commonly used in digital networks and storage devices such
as hard disk drives.

A repetition code is very inecient, and can be susceptible to problems if the error occurs in exactly the same
place for each group (e.g., 1010 1010 1010 in the previous example would be detected as correct). The advantage 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.

22.5.5

or the error persists beyond a predetermined number of


retransmissions.

Cryptographic hash functions

Main article: Cryptographic hash function


The output of a cryptographic hash function, also known
as a message digest, can provide strong assurances about
data integrity, whether changes of the data are accidental (e.g., due to transmission errors) or maliciously introduced. Any modication to the data will likely be detected through a mismatching hash value. Furthermore,
given some hash value, it is infeasible to nd some input
data (other than the one given) that will yield the same
hash value. If an attacker can change not only the message but also the hash value, then a keyed hash or message
authentication code (MAC) can be used for additional security. Without knowing the key, it is infeasible for the
attacker to calculate the correct keyed hash value for a
modied message.

22.5.6

Error-correcting codes

Main article: Forward error correction


Any error-correcting code can be used for error detection.
A code with minimum Hamming distance, d, can detect up
to d 1 errors in a code word. Using minimum-distancebased error-correcting codes for error detection can be
suitable if a strict limit on the minimum number of errors
to be detected is desired.

Three types of ARQ protocols are Stop-and-wait ARQ,


Go-Back-N ARQ, and Selective Repeat ARQ.
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
of a back channel, results in possibly increased latency
due to retransmissions, and requires the maintenance of
buers and timers for retransmissions, which in the case
of network congestion can put a strain on the server and
overall network capacity.[6]
For example, ARQ is used on shortwave radio data links
in the form of ARQ-E, or combined with multiplexing as
ARQ-M.

22.6.2 Error-correcting code


An error-correcting code (ECC) or forward error correction (FEC) code is a process of adding redundant data,
or parity data, to a message, such that it can be recovered by a receiver even when a number of errors (up to
the capability of the code being used) were introduced,
either during the process of transmission, or on storage.
Since the receiver does not have to ask the sender for retransmission of the data, a backchannel is not required
in forward error correction, and it is therefore suitable
for simplex communication such as broadcasting. Errorcorrecting codes are frequently used in lower-layer communication, as well as for reliable storage in media such
as CDs, DVDs, hard disks, and RAM.

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 implementation in hardware, and the Viterbi decoder allows
optimal decoding.

22.6 Error correction


22.6.1

Automatic repeat request (ARQ)

Main article: Automatic repeat request


Automatic Repeat reQuest (ARQ) is an error control
method for data transmission that makes use of errordetection codes, acknowledgment and/or negative acknowledgment messages, and timeouts to achieve reliable
data transmission. An acknowledgment is a message sent
by the receiver to indicate that it has correctly received a
data frame.
Usually, when the transmitter does not receive the acknowledgment before the timeout occurs (i.e., within a
reasonable amount of time after sending the data frame),
it retransmits the frame until it is either correctly received

Block codes are processed on a block-by-block basis.


Early examples of block codes are repetition codes,
Hamming codes and multidimensional parity-check
codes. They were followed by a number of ecient codes, ReedSolomon codes being the most
notable due to their current widespread use. Turbo
codes and low-density parity-check codes (LDPC)
are relatively new constructions that can provide almost optimal eciency.
Shannons theorem is an important theorem in forward
error correction, and describes the maximum information
rate at which reliable communication is possible over a
channel that has a certain error probability or signal-tonoise ratio (SNR). This strict upper limit is expressed in
terms of the channel capacity. More specically, the theorem says that there exist codes such that with increasing 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 capacity. The code rate is dened as the fraction k/n of k In a typical TCP/IP stack, error control is performed at
multiple levels:
source symbols and n encoded symbols.
The actual maximum code rate allowed depends on the
error-correcting code used, and may be lower. This is
because Shannons proof was only of existential nature,
and did not show how to construct codes which are both
optimal and have ecient encoding and decoding algorithms.

22.6.3

Hybrid schemes

Main article: Hybrid ARQ


Hybrid ARQ is a combination of ARQ and forward error
correction. There are two basic approaches:[6]
Messages are always transmitted with FEC parity
data (and error-detection redundancy). A receiver
decodes a message using the parity information, and
requests retransmission using ARQ only if the parity data was not sucient for successful decoding
(identied through a failed integrity check).
Messages are transmitted without parity data (only
with error-detection information). If a receiver detects an error, it requests FEC information from the
transmitter using ARQ, and uses it to reconstruct the
original message.

Each Ethernet frame carries a CRC-32 checksum.


Frames received with incorrect checksums are discarded by the receiver hardware.
The IPv4 header contains a checksum protecting the
contents of the header. Packets with mismatching
checksums are dropped within the network or at the
receiver.
The checksum was omitted from the IPv6 header in
order to minimize processing costs in network routing and because current link layer technology is assumed to provide sucient error detection (see also
RFC 3819).
UDP has an optional checksum covering the payload
and addressing information from the UDP and IP
headers. Packets with incorrect checksums are discarded by the operating system network stack. The
checksum is optional under IPv4, only, because the
Data-Link layer checksum may already provide the
desired level of error protection.
TCP provides a checksum for protecting the payload and addressing information from the TCP and
IP headers. Packets with incorrect checksums are
discarded within the network stack, and eventually
get retransmitted using ARQ, either explicitly (such
as through triple-ack) or implicitly due to a timeout.

The latter approach is particularly attractive on an erasure


22.7.2
channel when using a rateless erasure code.

22.7 Applications
Applications that require low latency (such as telephone
conversations) cannot use Automatic Repeat reQuest
(ARQ); they must use forward error correction (FEC).
By the time an ARQ system discovers an error and retransmits it, the re-sent data will arrive too late to be any
good.
Applications where the transmitter immediately forgets
the information as soon as it is sent (such as most television cameras) cannot use ARQ; they must use FEC because when an error occurs, the original data is no longer
available. (This is also why FEC is used in data storage
systems such as RAID and distributed data store).

Deep-space telecommunications

Development of error-correction codes was tightly coupled with the history of deep-space missions due to
the extreme dilution of signal power over interplanetary distances, and the limited power availability aboard
space probes. Whereas early missions sent their data
uncoded, starting from 1968 digital error correction
was implemented in the form of (sub-optimally decoded) convolutional codes and ReedMuller codes.[8]
The ReedMuller code was well suited to the noise the
spacecraft was subject to (approximately matching a bell
curve), and was implemented at the Mariner spacecraft
for missions between 1969 and 1977.

The Voyager 1 and Voyager 2 missions, which started in


1977, were designed to deliver color imaging amongst
scientic information of Jupiter and Saturn.[9] This
resulted in increased coding requirements, and thus
Applications that use ARQ must have a return channel; the spacecraft were supported by (optimally Viterbiapplications 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 implemeninspection engineering also make use of the theory of tation of a ReedSolomon code: the concatenated Reed
SolomonViterbi (RSV) code allowed for very powerful
error-correcting codes.[7]

128

CHAPTER 22. ERROR DETECTION AND CORRECTION

error correction, and enabled the spacecrafts 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 recoding due to ECC system upgrades after 1989.
dundancy and/or parity les to recover portions of corThe 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 increasingly falling out of favor with space missions, and are
replaced by more powerful codes such as Turbo codes or
LDPC codes.
The dierent kinds of deep space and orbital missions
that are conducted suggest that trying to nd a one size
ts all error correction system will be an ongoing problem for some time to come. For missions close to Earth
the nature of the channel noise is dierent from that
which a spacecraft on an interplanetary mission experiences. Additionally, as a spacecraft increases its distance from Earth, the problem of correcting for noise gets
larger.

Modern hard drives use CRC codes to detect and Reed


Solomon codes to correct minor errors in sector reads,
and to recover data from sectors that have gone bad and
store that data in the spare sectors.[10] RAID systems use
a variety of error correction techniques to correct errors
when a hard drive completely fails. Filesystems such as
ZFS or Btrfs, as well as some RAID implementations,
support data scrubbing and resilvering, which allows bad
blocks to be detected and (hopefully) recovered before
they are used. The recovered data may be re-written to
exactly the same physical location, to spare blocks elsewhere on the same piece of hardware, or to replacement
hardware.

22.7.3

22.7.5 Error-correcting memory

Satellite broadcasting (DVB)

The demand for satellite transponder bandwidth continues to grow, fueled by the desire to deliver television (including new channels and High Denition TV) and IP
data. Transponder availability and bandwidth constraints
have limited this growth, because transponder capacity
is determined by the selected modulation scheme and
Forward error correction (FEC) rate.
Overview

Main article: ECC memory


DRAM memory may provide increased protection
against soft errors by relying on error correcting codes.
Such error-correcting memory, known as ECC or EDACprotected memory, is particularly desirable for high faulttolerant applications, such as servers, as well as deepspace 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 redundancy.
the delivery of digital satellite TV.
Interleaving allows distributing the eect of a single cos Higher order modulation schemes such as 8PSK,
mic ray potentially upsetting multiple physically neigh16QAM and 32QAM have enabled the satellite inboring bits across multiple words by associating neighbordustry to increase transponder eciency by several
ing bits to dierent 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
maintained.[11]
antennas.
Tests conducted using the latest chipsets demonstrate that the performance achieved by using Turbo
Codes may be even lower than the 0.8 dB gure assumed in early designs.

22.7.4

Data storage

Error detection and correction codes are often used to


improve the reliability of data storage media. A parity
track was present on the rst magnetic tape data storage in 1951. The Optimal Rectangular Code used in
group code recording tapes not only detects but also corrects single-bit errors. Some le formats, particularly

In addition to hardware providing features required for


ECC memory to operate, operating systems usually contain related reporting facilities that are used to provide
notications when soft errors are transparently recovered. An increasing rate of soft errors might indicate
that a DIMM module needs replacing, and such feedback information would not be easily available without
the related reporting capabilities. An example is the
Linux kernel's EDAC subsystem (previously known as
bluesmoke), which collects the data from error-checkingenabled components inside a computer system; beside
collecting and reporting back the events related to ECC
memory, it also supports other checksumming errors, including 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.

22.8 See also

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


kernel.org. 2014-06-16. Retrieved 2014-08-12.

Berger code
Burst error-correcting code
Forward error correction
Link adaptation

22.10 Further reading


Shu Lin; Daniel J. Costello, Jr. (1983). Error
Control Coding: Fundamentals and Applications.
Prentice Hall. ISBN 0-13-283796-X.

List of algorithms for error detection and correction


List of error-correcting codes
List of hash functions
Reliability (computer networking)

22.9 References
[1] Thompson, Thomas M. (1983), From Error-Correcting
Codes through Sphere Packings to Simple Groups, The
Carus Mathematical Monographs (#21), The Mathematical Association of America, p. vii, ISBN 0-88385-023-0
[2] Shannon, C.E. (1948), A Mathematical Theory of Communication, Bell System Tech. Journal, p. 418, 27
[3] Golay, Marcel J. E. (1949), Notes on Digital Coding,
Proc.I.R.E. (I.E.E.E.), p. 657, 37
[4] Frank van Gerwen. Numbers (and other mysterious) stations. Retrieved 12 March 2012.
[5] Gary Cutlack (25 August 2010). Mysterious Russian
'Numbers Station' Changes Broadcast After 20 Years.
Gizmodo. Retrieved 12 March 2012.
[6] A. J. McAuley, Reliable Broadband Communication Using a Burst Erasure Correcting Code, ACM SIGCOMM,
1990.
[7] Ben-Gal I.; Herer Y.; Raz T. (2003). Self-correcting inspection procedure under inspection errors (PDF). IIE
Transactions on Quality and Reliability, 34(6), pp. 529540.
[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] Human, William Cary; Pless, Vera S. (2003). Fundamentals 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 University, Beijing. Retrieved 2009-02-16.
[12] Je Layton. Error Detection and Correction. Linux
Magazine. Retrieved 2014-08-12.

22.11 External links


The on-line textbook: Information Theory, Inference, and Learning Algorithms, by David J.C.
MacKay, contains chapters on elementary errorcorrecting codes; on the theoretical limits of
error-correction; and on the latest state-of-theart error-correcting codes, including low-density
parity-check codes, turbo codes, and fountain codes.
Compute parameters of linear codes an on-line
interface for generating and computing parameters
(e.g. minimum distance, covering radius) of linear
error-correcting codes.
ECC Page
SoftECC: A System for Software Memory Integrity
Checking
A Tunable, Software-based DRAM Error Detection
and Correction Library for HPC
Detection and Correction of Silent Data Corruption
for Large-Scale High-Performance Computing

Chapter 23

File Transfer Protocol


FTP redirects here. For other uses, see FTP (disam- 23.2.1
biguation).
The File Transfer Protocol (FTP) is a standard network
protocol used to transfer computer les between a client
and server on a computer network.
FTP is built on a client-server model architecture and uses
separate control and data connections between the client
and the server.[1] FTP users may authenticate themselves
with a clear-text sign-in protocol, normally in the form of
a username and password, but can connect anonymously
if the server is congured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS
(FTPS). SSH File Transfer Protocol (SFTP) is sometimes
also used instead, but is technologically dierent.

Communication and data transfer

21

PC1
PASV

PC2
PC1

21
PORT PS1

A
PC2

PS1

The rst FTP client applications were command-line proPC1


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
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


how
the data connection is established.[5] In both cases,
23.1 History of FTP server
the client creates a TCP control connection from a random, usually an unprivileged, port N to the FTP server
The original specication 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 In active mode, the client starts listening for incomdecessor of TCP/IP.[2] The protocol was later replaced by
ing data connections from the server on port M. It
a TCP/IP version, RFC 765 (June 1980) and RFC 959
sends the FTP command PORT M to inform the
(October 1985), the current specication. Several proserver on which port it is listening. The server then
posed standards amend RFC 959, for example RFC 1579
initiates a data channel to the client from its port 20,
(February 1994) enables Firewall-Friendly FTP (passive
the FTP server data port.
mode), RFC 2228 (June 1997) proposes security extensions, RFC 2428 (September 1998) adds support for IPv6
In situations where the client is behind a rewall and
and denes 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
to the server and then receives a server IP address
23.2 Protocol overview
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
The server responds over the control connection with
three-digit status codes in ASCII with an optional text
message. For example, 200 (or 200 OK) means that
the last command was successful. The numbers represent
the code for the response and the optional text represents
a human-readable explanation or request (e.g. <Need account for storing le>).[1] An ongoing transfer of le data
over the data connection can be aborted using an interrupt
message sent over the control connection.

Login

FTP login utilizes a normal username and password


scheme for granting access.[2] The username is sent to
the server using the USER command, and the password is
sent using the PASS command.[2] If the information provided by the client is accepted by the server, the server
will send a greeting to the client and the session will
commence.[2] If the server supports it, users may log in
without providing login credentials, but the same server
may authorize only limited access for such sessions.[2]

While transferring data over the network, four data representations can be used:[2][3][4]

23.2.3 Anonymous FTP


ASCII mode: Used for text. Data is converted,
if needed, from the sending hosts character representation to 8-bit ASCII before transmission, and
(again, if necessary) to the receiving hosts character representation. As a consequence, this mode is
inappropriate for les that contain data other than
plain text.

A host that provides an FTP service may provide


anonymous FTP access.[2] Users typically log into the service with an 'anonymous (lower-case and case-sensitive
in some FTP servers) account when prompted for user
name. Although users are commonly asked to send their
email address instead of a password,[3] no verication 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 le 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 rewall traversal

EBCDIC mode: Used for plain text between hosts


FTP normally transfers data by having the server connect
using the EBCDIC character set.
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 resetups to send data in a proprietary format without walls, which do not allow connections from the Internet
towards internal hosts.[11] For NATs, an additional comthe need to convert it to ASCII.
plication is that the representation of the IP addresses and
For text les, dierent format control and record structure port number in the PORT command refer to the internal
options are provided. These features were designed to hosts IP address and port, rather than the public IP address and port of the NAT.
facilitate les containing Telnet or ASA.
Data transfer can be done in any of three modes:[1][2]
Stream mode: Data is sent as a continuous stream,
relieving FTP from doing any processing. Rather,
all processing is left up to TCP. No End-of-le indicator is needed, unless the data is divided into
records.

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
the FTP client to the server.[11] This is widely used by
modern FTP clients. Another approach is for the NAT
to alter the values of the PORT command, using an
application-level gateway for this purpose.[11]

Block mode: FTP breaks the data into several blocks


(block header, byte count, and data eld) and then 23.2.5 Dierences from HTTP
passes it on to TCP.[4]
HTTP essentially xes 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


current working directory and other ags, and each transfer requires a secondary connection through which the
data are transferred. In passive mode this secondary
connection is from client to server, whereas in the default
active mode this connection is from server to client.
This apparent role reversal when in active mode, and random port numbers for all transfers, is why rewalls 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 numbers, which trivially passes through NAT gateways and is
simple for rewalls to manage.

tion of the username and password that must be used to


access this resource.
More details on specifying a username and password may
be found in the browsers documentation (e.g., Firefox[13]
and Internet Explorer[14] ). By default, most web browsers
use passive (PASV) mode, which more easily traverses
end-user rewalls.

23.4 Security

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 probto 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
le 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
Packet capture
cheap. While HTTP has subsequently gained the ability
to reuse the TCP connection for multiple transfers, the
Port stealing
conceptual model is still of independent requests rather
Spoong attack
than a session.
When FTP is transferring over the data connection, the
control connection is idle. If the transfer takes long
enough, the rewall or NAT may decide that the control
connection is dead and stop tracking it, eectively breaking the connection and confusing the download. The
single HTTP connection is only idle between requests
and it is normal and expected for such connections to be
dropped after a time-out.

23.3 Web browser support


Most common web browsers can retrieve les hosted on
FTP servers, although they may not support protocol extensions such as FTPS.[3][12] When an FTPrather than
an HTTPURL is supplied, the accessible contents on
the remote server are presented in a manner that is similar to that used for other web content. A full-featured
FTP client can be run within Firefox in the form of an
extension called FireFTP.

23.3.1

Username protection
FTP does not encrypt its trac; all transmissions are in
clear text, and usernames, passwords, commands and data
can be read by anyone able to perform packet capture
(sning) on the network.[2][15] This problem is common
to many of the Internet Protocol specications (such as
SMTP, Telnet, POP and IMAP) that were designed prior
to the creation of encryption mechanisms such as TLS or
SSL.[4]
Common solutions to this problem include:
1. Using the secure versions of the insecure protocols,
e.g., FTPS instead of FTP and TelnetS instead of
Telnet.
2. Using a dierent, more secure protocol that can
handle the job, e.g. SSH File Transfer Protocol or
Secure Copy Protocol.
3. Using a secure tunnel such as Secure Shell (SSH) or
virtual private network (VPN).

Syntax
23.4.1 FTP over SSH

FTP URL syntax is described in RFC 1738, taking 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 le my- protocol that is still in use), it is particularly dicult to
le.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-toURL ftp://user001:secretpassword@private.ftp-servers. server connection on port 21) will protect only that chanexample.com/mydirectory/myfile.txt adds a specica- 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 condentiality or integrity protection.
Simple File Transfer Protocol (the rst protocol abbreviOtherwise, it is necessary for the SSH client software to
ated SFTP), as dened by RFC 913, was proposed as an
have specic knowledge of the FTP protocol, to mon(unsecured) le transfer protocol with a level of complexitor and rewrite FTP control channel messages and auity 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 Hischannels. Software packages that support this mode intoric status by the IETF. It runs through port 115, and
clude:
often receives the initialism of SFTP. It has a command
[16]
Tectia ConnectSecure (Win/Linux/Unix) of SSH set of 11 commands and support three types of data transmission: ASCII, binary and continuous. For systems with
Communications Security's software suite
a word size that is a multiple of 8 bits, the implementation of binary and continuous is the same. The protocol also supports login with user ID and password, hier23.5 Derivatives
archical folders and le 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 dened 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 connection. It was specied to use dierent ports than plain
Main article: List of FTP server return codes
FTP.
Below is a summary of FTP reply codes that may be returned by an FTP server. These codes have been standardized in RFC 959 by the IETF. The reply code is a
Main article: SSH File Transfer Protocol
three-digit value. The rst digit is used to indicate one of
three possible outcomes success, failure, or to indicate
The SSH le transfer protocol (chronologically the sec- an error or incomplete reply:
ond of the two protocols abbreviated SFTP) transfers les
and has a similar command set for users, but uses the
2yz Success reply
Secure Shell protocol (SSH) to transfer les. Unlike FTP,
4yz or 5yz Failure reply
it encrypts both commands and data, preventing passwords 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 denes the kind of error:

23.5.2

SSH File Transfer Protocol

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 information.

Trivial File Transfer Protocol (TFTP) is a simple, lockstep FTP that allows a client to get from or put a le onto a
remote host. One of its primary uses is in the early stages
of booting from a local area network, because TFTP is
very simple to implement. TFTP lacks security and most
of the advanced features oered by more robust le transfer protocols such as File Transfer Protocol. TFTP was
rst standardized in 1981 and the current specication for
the protocol can be found in RFC 1350.

x2z Connections. Replies referring to the control


and data connections.
x3z Authentication and accounting. Replies for
the login process and accounting procedures.
x4z Not dened.
x5z File system. These replies relay status codes
from the server le system.

134
The third digit of the reply code is used to provide additional detail for each of the categories dened by the
second digit.

23.8 See also


Comparison of FTP client software
Comparison of FTP server software
Curl-loader FTP/S loading/testing open-source
software
File eXchange Protocol (FXP)
File Service Protocol (FSP)
FTAM
FTPFS

CHAPTER 23. FILE TRANSFER PROTOCOL

[9] Preston, J. (January 2005). Deate transmission mode for


FTP. IETF. I-D draft-preston-ftpext-deate-03.txt. https:
//tools.ietf.org/html/draft-preston-ftpext-deflate-03.txt.
Retrieved 27 January 2016.
[10] RFC 1635 (Informational) How to Use Anonymous FTP.
P. & Emtage, A. & Marine, A. (May 1994).
[11] Gleason, Mike (2005). The File Transfer Protocol and
Your Firewall/NAT. Ncftp.com.
[12] Matthews, J. (2005). Computer Networking: Internet Protocols in Action (1st ed.). Danvers, MA: John Wiley &
Sons Inc.
[13] Accessing FTP servers | How to | Firefox Help. Support.mozilla.com. 2012-09-05. Retrieved 2013-01-16.
[14] How to Enter FTP Site Password in Internet Explorer.
Support.microsoft.com. 2011-09-23. Retrieved 201503-28. Written for IE versions 6 and earlier. Might work
with newer versions.

List of le transfer protocols

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

List of FTP commands

[16] http://ssh.com/index.php/products/
tectia-pci-point-to-point-encryption.html

List of FTP server return codes


Managed File Transfer
OBEX
Shared le access
TCP Wrapper

23.9 References
[1] Forouzan, B.A. (2000). TCP/IP: Protocol Suite (1st ed.).
New Delhi, India: Tata McGraw-Hill Publishing Company Limited.
[2] Kozierok, Charles M. (2005). The TCP/IP Guide v3.0.
Tcpipguide.com.
[3] Dean, Tamara (2010). Network+ Guide to Networks. Delmar. pp. 168171.
[4] Clark, M.P. (2003). Data Networks IP and the Internet
(1st ed.). West Sussex, England: John Wiley & Sons Ltd.
[5] Active FTP vs. Passive FTP, a Denitive Explanation.
Slacksite.com. Archived from the original on 2014-1231.
[6] Parker, Don (September 2005). Understanding the FTP
Protocol. Windowsnetworking.com.
[7] RFC 959 (Standard) File Transfer Protocol (FTP). Postel,
J. & Reynolds, J. (October 1985).
[8] RFC 2428 (Proposed Standard) Extensions for IPv6,
NAT, and Extended Passive Mode. Allman, M. & Metz,
C. & Ostermann, S. (September 1998).

23.10 Further reading


RFC 697 CWD Command of FTP. July 1975.
RFC 959 (Standard) File Transfer Protocol (FTP).
J. Postel, J. Reynolds. October 1985.
RFC 1579 (Informational) Firewall-Friendly FTP.
February 1994.
RFC 1635 (Informational) How to Use Anonymous FTP. May 1994.
RFC 1639 FTP Operation Over Big Address
Records (FOOBAR). June 1994.
RFC 1738 Uniform Resource Locators (URL).
December 1994.
RFC 2228 (Proposed Standard) FTP Security Extensions. October 1997.
RFC 2389 (Proposed Standard) Feature negotiation mechanism for the File Transfer Protocol. August 1998.
RFC 2428 (Proposed Standard) Extensions for
IPv6, NAT, and Extended passive mode. September 1998.
RFC 2577 (Informational) FTP Security Considerations. May 1999.
RFC 2640 (Proposed Standard) Internationalization of the File Transfer Protocol. July 1999.

23.10. FURTHER READING


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 Protocol HOST Command for Virtual Hosts. March
2014.
IANA FTP Commands and Extensions registry
The ocial registry of FTP Commands and Extensions

135

Chapter 24

Finite-state machine
State machine redirects here. For innite state ma- FSMs are studied in the more general eld 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.
24.1 Example: coin-operated turnFinite Automata redirects here. For the electroindustrial group, see Finite Automata (band).
stile
A nite-state machine (FSM) or nite-state automaton (FSA, plural: automata), or simply a state machine,
Coin
Push
is a mathematical model of computation used to design
both computer programs and sequential logic circuits. It
Locked
is conceived as an abstract machine that can be in one
of a nite number of states. The machine is in only one
state at a time; the state it is in at any given time is called
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 dened 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
many devices in modern society that perform a predetermined sequence of actions depending on a sequence
of events with which they are presented. Simple examples are vending machines, which dispense products when
the proper combination of coins is deposited, elevators,
which drop riders o at upper oors before going down,
trac lights, which change sequence when cars are waiting, and combination locks, which require the input of
combination numbers in the proper order.

Unlocked
Push

Coin

An example of a very simple mechanism that can be modeled by a state machine is a turnstile.[2][3] A turnstile, used
to control access to subways and amusement park rides, is
a gate with three rotating arms at waist height, one across
the entryway. Initially the arms are locked, blocking the
entry, preventing patrons from passing through. Depositing a coin or token in a slot on the turnstile unlocks the
arms, allowing a single customer to push through. After
the customer passes through, the arms are locked again
until another coin is inserted.

Considered as a state machine, the turnstile has two states:


Locked and Unlocked.[2] There are two inputs that aect
its state: putting a coin in the slot (coin) and pushing the
arm (push). In the locked state, pushing on the arm has
no eect; no matter how many times the input push is
given, it stays in the locked state. Putting a coin in that
is, giving the machine a coin input shifts the state from
Locked to Unlocked. In the unlocked state, putting additional coins in has no eect; that is, giving additional coin
Considered as an abstract model of computation, the 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
state back to Locked.
[1]
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
transition table, showing for each state the new state and
memory is limited by the number of states.
the output (action) resulting from each input
Finite-state machines can model a large number of problems, among which are electronic design automation,
communication protocol design, language parsing and
other engineering applications. In biology and articial
intelligence research, state machines or hierarchies of
state machines have been used to describe neurological
systems. In linguistics, they are used to describe simple
parts of the grammars of natural languages.

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


A state is a description of the status of a system that is
waiting to execute a transition. A transition is a set of actions to be executed when a condition is fullled 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
the next station. When the system is in the CD state,
the next stimulus results in moving to the next track.
Identical stimuli trigger dierent actions depending on
the current state.

Fig. 2 SDL state machine example

For an introduction, see State diagram.

24.3.1 State/Event table

Several state transition table types are used. The most


common representation is shown below: the combination
of current state (e.g. B) and input (e.g. Y) shows the next
state (e.g. C). The complete actions information is not
In some nite-state machine representations, it is also directly described in the table and can only be added uspossible to associate actions with a state:
ing footnotes. A FSM denition including the full actions
information is possible using state tables (see also virtual
Entry action: performed when entering the state,
nite-state machine).

138

CHAPTER 24. FINITE-STATE MACHINE

state

1
opened
E: open
door

24.3.4 Other state diagrams


There are a large number of variants to represent an FSM
such as the one in gure 3.

transition
close
open
transition condition

2
closed

entry action

SDL embeds basic data types called Abstract Data Types,


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

E: close
door

24.4 Usage
In addition to their use in modeling reactive systems
presented here, nite state automata are signicant
in many dierent areas, including electrical engineering, linguistics, computer science, philosophy, biology,
mathematics, and logic. Finite state machines are a class
of automata studied in automata theory and the theory of
computation. In computer science, nite state machines
are widely used in modeling of application behavior, design of hardware digital systems, software engineering,
compilers, network protocols, and the study of computation and languages.

Fig. 3 Example of a simple nite state machine

24.3.2

UML state machines

24.5 Classication

The Unied Modeling Language has a notation for de- The state machines can be subdivided into Transducers,
scribing state machines. UML state machines overcome Acceptors, Classiers and Sequencers.[4]
the limitations of traditional nite state machines while
retaining their main benets. UML state machines introduce 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
1
2
3
4
both Mealy machines and Moore machines. They supStart
n_found
i_found
c_found
n
i
c
port actions that depend on both the state of the system
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

24.3.3

SDL state machines

Error

Success

The Specication and Description Language is a standard


from ITU that includes graphical symbols to describe acFig. 4 Acceptor FSM: parsing the string nice
tions in the transition:
send an event
receive an event
start a timer
cancel a timer
start another concurrent state machine
decision

Acceptors (also called recognizers and sequence detectors) produce binary output, indicating whether or not received input is accepted. Each state of an FSM is either
accepting or not accepting. Once all input has been
received, if the current state is an accepting state, the input is accepted; otherwise it is rejected. As a rule, input
is a series of symbols (characters); actions are not used.
The example in gure 4 shows a nite state machine that
accepts the string nice. In this FSM, the only accepting
state is state 7.

24.5. CLASSIFICATION
A machine could also be described as dening a language,
that would contain every string accepted by the machine
but none of the rejected ones; that language is accepted
by the machine. By denition, the languages accepted by
FSMs are the regular languages; a language is regular
if there is some FSM that accepts it.

139
Classier is a generalization that, similar to acceptor,
produces single output when terminates but has more than
two terminal states.

24.5.2 Transducers

The problem of determining the language accepted by


a given FSA is an instance of the algebraic path problemitself a generalization of the shortest path problem
to graphs with edges weighted by the elements of an (arbitrary) semiring.[5][6][7]

1
opened

close

sensor opened

Start state
The start state is usually shown drawn with an arrow
pointing at it from any where (Sipser (2006) p. 34).

open
2
closing

4
opening

close

Accept (or nal) states

sensor closed
open
3
closed

Fig. 6 Transducer FSM: Moore model example

Main article: Finite-state transducer

Fig. 5: Representation of a nite-state machine; this example


shows one that determines whether a binary number has an even
number of 0s, where S1 is an accepting state.

Transducers generate output based on a given input


and/or a state using actions. They are used for control
applications and in the eld of computational linguistics.
In control applications, two types are distinguished:

Accept states (also referred to as accepting or nal 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 lanof the Moore model is a simplication of the beguage it accepts. Accepting states are usually represented
haviour. Consider an elevator door. The state maby double circles.
chine recognizes two commands: command_open
and command_close, which trigger state changes.
The start state can also be an accepting state, in which
The entry action (E:) in state Opening starts a mocase the automaton accepts the empty string. If the start
tor opening the door, the entry action in state Closstate is not an accepting state and there are no connecting
ing starts a motor in the other direction closing the
edges to any of the accepting states, then the automaton
door. States Opened and Closed stop the mois accepting nothing.
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 sita deterministic nite 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.,
output depends on input and state. The use of a
which an even number of 0s has been input. S1 is thereMealy FSM leads often to a reduction of the numfore an accepting state. This machine will nish in an
ber of states. The example in gure 7 shows a
accept state, if the binary string contains an even number
Mealy FSM implementing the same behaviour as in
of 0s (including any binary string containing no 0s). Exthe Moore example (the behaviour depends on the
amples of strings accepted by this DFA are (the empty
string), 1, 11, 11, 00, 010, 1010, 10110, etc
implemented FSM execution model and will work,

140

CHAPTER 24. FINITE-STATE MACHINE

sensor closed
1
opened

2
closed

I:

I:
sensor opened

Fig. 7 Transducer FSM: Mealy model example

states, orthogonal regions, state actions, and transition


actions.[12]

24.7 FSM logic


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 motor in the other direction to open the door if command_open arrives. The opening and closing
intermediate states are not shown.

24.5.3

State
transition
conditions

Generators

The sequencers or generators are a subclass of aforementioned types that have a single-letter input alphabet.
They produce only one sequence, which can be interpreted as output sequence of transducer or classier outputs.

24.5.4

Determinism

State

Output

A further distinction is between deterministic (DFA)


conditions
and non-deterministic (NFA, GNFA) automata. In deterministic automata, every state has exactly one transition for each possible input. In non-deterministic automata, 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
24.8 Mathematical model
tools.[8]

24.6 Alternative semantics


There are other sets of semantics available to represent
state machines. For example, there are tools for modeling and designing logic for embedded controllers.[9] They
combine hierarchical state machines, ow graphs, and
truth tables into one language, resulting in a dierent formalism and set of semantics.[10] Figure 8 illustrates this
mix of state machines and ow graphs with a set of states
to represent the state of a stopwatch and a ow graph to
control the ticks of the watch. These charts, like Harels
original state machines,[11] support hierarchically nested

In accordance with the general classication, the following formal denitions are found:
A deterministic nite state machine or acceptor
deterministic nite state machine is a quintuple
(, S, s0 , , F ) , where:
is the input alphabet (a nite, non-empty set
of symbols).
S is a nite, non-empty set of states.
s0 is an initial state, an element of S .
is the state-transition function: : S
S (in a nondeterministic nite automaton it

24.10. IMPLEMENTATION

141

would be : S P(S) , i.e., would


return a set of states).
F is the set of nal states, a (possibly empty)
subset of S .

Optimizing an FSM means nding the machine with


the minimum number of states that performs the same
function. The fastest known algorithm doing this is
the Hopcroft minimization algorithm.[15][16] Other techniques 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 dened for every combination of q S and x . If an FSM M is in a state
q , the next symbol is x and (q, x) is not dened, then 24.10 Implementation
M can announce an error (i.e. reject the input). This is
useful in denitions 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 nite-state machine is a restricted Turing machine
where the head can only perform read operations, and
always moves from left to right.[13]
A nite state transducer
(, , S, s0 , , ) , where:

is

sextuple

is the input alphabet (a nite non-empty set


of symbols).
is the output alphabet (a nite, non-empty
set of symbols).
S is a nite, non-empty set of states.
s0 is the initial state, an element of S . In a
nondeterministic nite automaton, s0 is a set
of initial states.
is the state-transition function: : S
S.
is the output function.

Fig. 9 The circuit diagram for a 4-bit TTL counter, a type of


state machine

In a digital circuit, an FSM may be built using a


programmable logic device, a programmable logic controller, logic gates and ip ops or relays. More specifically, a hardware implementation requires a register to
store state variables, a block of combinational logic that
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 denition 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 denition corresponds to connected to the state ip-ops, that is when output functhe Moore model, and can be modelled as a Moore ma- tion is simple identity, is known as Medvedev FSM.[18] It
chine. A nite-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 rst 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
output-equivalent Mealy machine by setting the output
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 straightforward because a Mealy machine state may have dierent output labels on its incoming transitions (edges). Every such state needs to be split in multiple Moore machine
states, one for every incident output symbol.[14]

Through state encoding for low power state machines may


be optimized to minimize power consumption.

24.10.2 Software applications


The following concepts are commonly used to build software applications with nite state machines:
Automata-based programming

24.9 Optimization
Main article: DFA minimization

Event-driven FSM
Virtual FSM (VFSM)
State design pattern

142

24.10.3

CHAPTER 24. FINITE-STATE MACHINE

Finite automata and compilers

24.12 References

Finite automata are often used in the frontend of programming language compilers. Such a frontend may
comprise several nite state machines that implement a
lexical analyzer and a parser. Starting from a sequence of
characters, the lexical analyzer builds a sequence of language tokens (such as reserved words, literals, and identiers) from which the parser builds a syntax tree. The lexical analyzer and the parser handle the regular and contextfree parts of the programming languages grammar.[19]

[1] Belzer, Jack; Holzman, Albert George; Kent, Allen


(1975). Encyclopedia of Computer Science and Technology, Vol. 25. USA: CRC Press. p. 73. ISBN 0-82472275-2.

24.11 See also

[4] Keller, Robert M. (2001). Classiers, Acceptors, Transducers, and Sequencers (PDF). Computer Science: Abstraction to Implementation (PDF). Harvey Mudd College.
p. 480.

Abstract state machines (ASM)


Articial intelligence (AI)
Abstract State Machine Language (AsmL)
Behavior model
Communicating nite-state machine
Control system
Control table
Decision tables
DEVS: Discrete Event System Specication
Extended nite-state machine (EFSM)
Finite state machine with datapath
Hidden Markov model
Petri net
Pushdown automaton
Quantum nite automata (QFA)
Recognizable language
Sequential logic
Specication and Description Language
State diagram
State pattern
SCXML
Transition system
Tree automaton
Turing machine
UML state machine
YAKINDU Statechart Tools

[2] Koshy, Thomas (2004). Discrete Mathematics With Applications. Academic Press. p. 762. ISBN 0-12-421180-1.
[3] Wright, David R. (2005). Finite State Machines (PDF).
CSC215 Class Notes. Prof. David R. Wright website, N.
Carolina State Univ. Retrieved July 14, 2012.

[5] Pouly, Marc; Kohlas, Jrg (2011). Generic Inference: A


Unifying Theory for Automated Reasoning. John Wiley &
Sons. Chapter 6. Valuation Algebras for Path Problems,
p. 223 in particular. ISBN 978-1-118-01086-0.
[6] Storer, J. A. (2001). An Introduction to Data Structures
and Algorithms. Springer Science & Business Media. p.
337. ISBN 978-0-8176-4253-2.
[7] http://www.iam.unibe.ch/~{}run/talks/
2008-06-05-Bern-Jonczy.pdf, p. 34
[8] Brutscheck, M., Berger, S., Franke, M., Schwarzbacher,
A., Becker, S.: Structural Division Procedure for Ecient IC Analysis. IET Irish Signals and Systems Conference, (ISSC 2008), pp.18-23. Galway, Ireland, 1819
June 2008.
[9] Tiwari, A. (2002). Formal Semantics and Analysis Methods for Simulink Stateow Models.
[10] Hamon, G. (2005). A Denotational Semantics for Stateow. International Conference on Embedded Software.
Jersey City, NJ: ACM. pp. 164172. CiteSeerX:
10.1.1.89.8817.
[11] Harel, D. (1987). A Visual Formalism for Complex Systems. Science of Computer Programming , 231274.
[12] Alur, R., Kanade, A., Ramesh, S., & Shashidhar, K. C.
(2008). Symbolic analysis for improving simulation coverage of Simulink/Stateow models. International Conference on Embedded Software (pp. 8998). Atlanta,
GA: ACM.
[13] Black, Paul E (12 May 2008). Finite State Machine.
Dictionary of Algorithms and Data Structures. U.S.
National Institute of Standards and Technology.
[14] Anderson, James Andrew; Head, Thomas J. (2006).
Automata theory with modern applications. Cambridge
University Press. pp. 105108. ISBN 978-0-521-848879.
[15] Hopcroft, John E. (1971). An n log n algorithm for minimizing states in a nite automaton (PDF) (Technical Report). CS-TR-71-190. Stanford Univ.

24.13. FURTHER READING

[16] Almeida, Marco; Moreira, Nelma; Reis, Rogerio (2007).


On the performance of automata minimization algorithms
(PDF) (Technical Report). DCC-2007-03. Porto Univ.
[17] Revuz, D. (1992). Minimization of Acyclic automata in
Linear Time. Theoretical Computer Science. Elsevier.
92: 181189. doi:10.1016/0304-3975(92)90142-3.
[18] Kaeslin, Hubert (2008). Mealy, Moore, Medvedev-type
and combinatorial output bits. Digital Integrated Circuit
Design: From VLSI Architectures to CMOS Fabrication.
Cambridge University Press. p. 787. ISBN 978-0-52188267-5.

143
Ginsburg, S., An Introduction to Mathematical Machine Theory. Addison-Wesley, 1962.

24.13.2 Finite state machines (automata


theory) in theoretical computer
science
Arbib, Michael A. (1969). Theories of Abstract Automata (1st ed.). Englewood Clis, N.J.: PrenticeHall, Inc. ISBN 0-13-913368-2.

[19] Aho, Alfred V.; Sethi, Ravi; Ullman, Jerey D. (1986).


Compilers: Principles, Techniques, and Tools (1st ed.).
Addison-Wesley. ISBN 978-0-201-10088-4.

Bobrow, Leonard S.; Arbib, Michael A. (1974).


Discrete Mathematics: Applied Algebra for Computer
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
Number 67-25924.

24.13.1

General

Sakarovitch, Jacques (2009). Elements of automata


theory. Translated from the French by Reuben
Thomas. Cambridge University Press. ISBN 9780-521-84425-3. Zbl 1188.68177
Wagner, F., Modeling Software with Finite State
Machines: A Practical Approach, Auerbach Publications, 2006, ISBN 0-8493-8086-3.
ITU-T, Recommendation Z.100 Specication and
Description Language (SDL)
Samek, M., Practical Statecharts in C/C++, CMP
Books, 2002, ISBN 1-57820-110-1.
Samek, M., Practical UML Statecharts in C/C++,
2nd Edition, Newnes, 2008, ISBN 0-7506-8706-1.
Gardner, T., Advanced State Management, 2007
Cassandras, C., Lafortune, S., Introduction to Discrete Event Systems. Kluwer, 1999, ISBN 0-79238609-4.

Boolos, George; Jerey, Richard (1999) [1989].


Computability and Logic (3rd ed.). Cambridge,
England: Cambridge University Press. ISBN 0521-20402-X.
Brookshear, J. Glenn (1989). Theory of Computation: Formal Languages, Automata, and Complexity.
Redwood City, California: Benjamin/Cummings
Publish Company, Inc. ISBN 0-8053-0143-7.
Davis, Martin; Sigal, Ron; Weyuker, Elaine J.
(1994). Computability, Complexity, and Languages
and Logic: Fundamentals of Theoretical Computer
Science (2nd ed.). San Diego: Academic Press, Harcourt, Brace & Company. ISBN 0-12-206382-1.
Hopcroft, John;
Ullman, Jerey (1979).
Introduction to Automata Theory, Languages,
and Computation (1st ed.).
Reading Mass:
Addison-Wesley. ISBN 0-201-02988-X.

Timothy Kam, Synthesis of Finite State Machines:


Functional Optimization. Kluwer Academic Publishers, Boston 1997, ISBN 0-7923-9842-4

Hopcroft, John E.; Motwani, Rajeev; Ullman, Jeffrey D. (2001). Introduction to Automata Theory,
Languages, and Computation (2nd ed.). Reading
Mass: Addison-Wesley. ISBN 0-201-44124-1.

Tiziano Villa, Synthesis of Finite State Machines:


Logic Optimization. Kluwer Academic Publishers,
Boston 1997, ISBN 0-7923-9892-0

Hopkin, David; Moss, Barbara (1976). Automata.


New York: Elsevier North-Holland. ISBN 0-44400249-9.

Carroll, J., Long, D., Theory of Finite Automata with


an Introduction to Formal Languages. Prentice Hall,
Englewood Clis, 1989.
Kohavi, Z., Switching and Finite Automata Theory.
McGraw-Hill, 1978.
Gill, A., Introduction to the Theory of Finite-state
Machines. McGraw-Hill, 1962.

Kozen, Dexter C. (1997). Automata and Computability (1st ed.). New York: Springer-Verlag.
ISBN 0-387-94907-0.
Lewis, Harry R.; Papadimitriou, Christos H. (1998).
Elements of the Theory of Computation (2nd ed.).
Upper Saddle River, New Jersey: Prentice-Hall.
ISBN 0-13-262478-8.

144

CHAPTER 24. FINITE-STATE MACHINE

Linz, Peter (2006). Formal Languages and Automata (4th ed.). Sudbury, MA: Jones and Bartlett.
ISBN 978-0-7637-3798-6.
Minsky, Marvin (1967). Computation: Finite and
Innite Machines (1st ed.). New Jersey: PrenticeHall.
Papadimitriou, Christos (1993). Computational
Complexity (1st ed.). Addison Wesley. ISBN 0-20153082-1.

McCluskey, E. J. (1965). Introduction to the Theory


of Switching Circuits (1st ed.). New York: McGrawHill Book Company, Inc. Library of Congress Card
Catalog Number 65-17394.
Hill, Fredrick J.; Peterson, Gerald R. (1965). Introduction to the Theory of Switching Circuits (1st ed.).
New York: McGraw-Hill Book Company. Library
of Congress Card Catalog Number 65-17394.

24.13.6 Finite Markov chain processes

Pippenger, Nicholas (1997). Theories of Computability (1st ed.). Cambridge, England: Cambridge University Press. ISBN 0-521-55380-6.

We may think of a Markov chain


as a process that moves successively
through a set of states s1 , s2 , , sr.
if it is in state si it moves on to
the next stop to state sj with probability pij. These probabilities can
be exhibited in the form of a transition matrix (Kemeny (1959), p.
384)

Rodger, Susan; Finley, Thomas (2006). JFLAP: An


Interactive Formal Languages and Automata Package (1st ed.). Sudbury, MA: Jones and Bartlett.
ISBN 0-7637-3834-4.
Sipser, Michael (2006). Introduction to the Theory
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 nite type.
ed.). New York: Harper & Row, Publishers, Inc.
Booth, Taylor L. (1967). Sequential Machines and
ISBN 0-06-047208-1.
Automata Theory (1st ed.). New York: John Wiley
and Sons, Inc. Library of Congress Card Catalog
Number 67-25924.
24.13.3 Abstract state machines in theo-

retical computer science


Gurevich, Yuri (July 2000). Sequential Abstract
State Machines Capture Sequential Algorithms
(PDF). ACM Transactions on Computational Logic.
1 (1): 77111. doi:10.1145/343369.343384.

24.13.4

Machine learning using nite24.14


state algorithms

Mitchell, Tom M. (1997). Machine Learning (1st


ed.). New York: WCB/McGraw-Hill Corporation.
ISBN 0-07-042807-7.

24.13.5

Kemeny, John G.; Mirkil, Hazleton; Snell, J. Laurie; Thompson, Gerald L. (1959). Finite Mathematical Structures (1st ed.). Englewood Clis, N.J.:
Prentice-Hall, Inc. Library of Congress Card Catalog Number 59-12841. Chapter 6 Finite Markov
Chains.

Hardware engineering: state minimization and synthesis of sequential circuits

Booth, Taylor L. (1967). Sequential Machines and


Automata Theory (1st ed.). New York: John Wiley
and Sons, Inc. Library of Congress Card Catalog
Number 67-25924.
Booth, Taylor L. (1971). Digital Networks and Computer Systems (1st ed.). New York: John Wiley and
Sons, Inc. ISBN 0-471-08840-4.

External links

Finite State Automata at DMOZ


Modeling a Simple AI behavior using a Finite State
Machine Example of usage in Video Games
Free On-Line Dictionary of Computing description
of Finite State Machines
NIST Dictionary of Algorithms and Data Structures
description of Finite State Machines
Interactive FSM: Control Circuit, demonstrates the
logic ow of the Finite State Machines.
FSM simulator, simulates DFAs, NFAs and NFAs, including generated by regular expression.

Chapter 25

General Inter-ORB Protocol


In distributed computing, General Inter-ORB Protocol (GIOP) is the message protocol by which object request brokers (ORBs) communicate in CORBA. Standards associated with the protocol are maintained by the
Object Management Group (OMG). The current version
of GIOP is 2.0.2. The GIOP architecture provides several concrete protocols, including:
1. Internet InterORB Protocol (IIOP) The Internet Inter-Orb Protocol is an implementation of the
GIOP for use over the Internet, and provides a
mapping between GIOP messages and the TCP/IP
layer.[1]

25.2 Messages
25.3 Further reading
The ocial CORBA standard from the OMG
group.

25.4 References

2. SSL InterORB Protocol (SSLIOP) SSLIOP


is IIOP over SSL, providing encryption and
authentication.
3. HyperText InterORB Protocol (HTIOP) HTIOP
is IIOP over HTTP, providing transparent proxy bypassing.
4. Zipped IOP (ZIOP) A zipped version of GIOP
that reduces the bandwidth usage

25.1 Environment Specic InterORB Protocols


As an alternative to GIOP, CORBA includes the concept
of an Environment Specic Inter-ORB Protocol (ESIOP). While GIOP is dened to meet general-purpose
needs of most CORBA implementations, an ESIOP attempts to address special requirements. For example, an
ESIOP might use an alternative protocol encoding to improve eciency over networks with limited bandwidth or
high latency. ESIOPs can also be used to layer CORBA
on top of some non-CORBA technology stack, such as
Distributed Computing Environment (DCE).[2][3]
DCE Common Inter-ORB Protocol (DCE-CIOP) is an
ESIOP for use in DCE. It maps CORBA to DCE RPC
and CDR (Command Data Representation).[2][4]:48[3]
DCE-CIOP is dened in chapter 16 of the CORBA 2.6.1
standard.[5]
145

[1] http://www.omg.org/library/iiop4.html
[2] Linda Rising (23 July 2001). Design Patterns in Communications Software. Cambridge University Press. p.
445. ISBN 978-0-521-79040-6. In addition to the standard GIOP and IIOP protocols, the CORBA specication
allows ORB implementors to dene Environment Specic Inter-ORB Protocols (ESIOP)s... Only one ESIOP
protocol is dened in the CORBA 2.x family of specications: the DCE Common Inter-ORB Protocol (DCECIOP). The OMG is attempting to standardize other protocols for such domains, such as wireless and mobile systems, which have unique performance characteristics and
optimization points.
[3] Zahir Tari; Omran Bukhres (7 April 2004).
Fundamentals of Distributed Object Systems: The
CORBA Perspective. John Wiley & Sons. p. 178. ISBN
978-0-471-46411-2.
ESIOP (Environment Specic
Inter-ORB Protocol) is a concrete GIOP protocol which
is used to communicate in a particular environment.
An ESIOP is optimized for a specic environment and
may be chosen over TCP/IP... An example of ESIOP is
DCE-CIOP (DCE-Common Inter-ORB Protocol) which
makes use of a subset of DCE-RPC facilities and parts of
GIOP specication.
[4] Kim, Dong Jin; Namgoong, Han; Lew, Young-Chul (5
December 1997). Danthine, Andre; Diot, Christophe,
eds. A bridge for heterogeneous communication between
CORBA and DCE. From Multimedia Services to Network Services: 4th International COST 237 Workshop,
Lisboa, Portugal, December 15-19, 1997. Proceedings. Springer. p. 4558. ISBN 978-3-540-639350. The other approach is using Environment Specic
Inter-ORB Protocol(ESIOP), the DCE Common InterORB Protocol(DCE-CIOP). DCE-CIOP messages repre-

146

CHAPTER 25. GENERAL INTER-ORB PROTOCOL

sent OMG IDL types by using the Common Data Representation(CDR) transfer syntax.
[5] The DCE ESIOP. The Common Object Request Broker: Architecture and Specication: Revision 2.6.1 (PDF).
OMG. May 2002. p. 557. Retrieved 2016-05-11.
This chapter species an Environment-Specic InterORB 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 standard 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 describes the structure of a web page semantically and originally 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 documents 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 /> introduce content into the page directly. Others such as
<p>...</p> surround and provide information about document 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 language such as JavaScript which aect the behavior and
content of web pages. Inclusion of CSS denes the look
and layout of content. The World Wide Web Consortium (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 funding, but the project was not formally adopted by CERN.
In his personal notes[4] from 1990 he listed[5] some of
26.1.1 Development
the many areas in which hypertext is used and put an
In 1980, physicist Tim Berners-Lee, then a contractor at encyclopedia rst.
CERN, proposed and prototyped ENQUIRE, a system The rst publicly available description of HTML was
for CERN researchers to use and share documents. In a document called HTML Tags, rst 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 specied HTML describes 18 elements comprising the initial, relatively
147

148

CHAPTER 26. HTML


cluded an SGML Document Type Denition to dene
the grammar.[9] The draft expired after six months, but
was notable for its acknowledgment of the NCSA Mosaic browsers custom tag for embedding in-line images,
reecting the IETFs philosophy of basing standards on
successful prototypes.[10] Similarly, Dave Raggett's competing Internet-Draft, HTML+ (Hypertext Markup Format)", from late 1993, suggested standardizing alreadyimplemented features like tables and ll-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 rst HTML specication intended to be treated as a standard against which
future implementations should be based.[12]

Tim Berners-Lee

Further development under the auspices of the IETF


was stalled by competing interests. Since 1996, the
HTML specications have been maintained, with input 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),
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 inuenced 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 November 25, 1995: RFC 1867 (form-based
terpret and compose text, images, and other material into
le upload)
visual or audible web pages. Default characteristics for
every item of HTML markup are dened in the browser,
May 1996: RFC 1942 (tables)
and these characteristics can be altered or enhanced by
August 1996: RFC 1980 (client-side image
the web page designers additional use of CSS. Many of
maps)
the text elements are found in the 1988 ISO technical
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 rst version dewere derived from the commands used by typesetters to
veloped and standardized exclusively by the W3C,
manually format documents. However, the SGML conas 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
eects, 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
SGML. It was formally dened as such by the Internet
Engineering Task Force (IETF) with the mid-1993 publication of the rst proposal for an HTML specication: Hypertext Markup Language (HTML)" InternetDraft by Berners-Lee and Dan Connolly, which in-

Netscape's visual markup tags. Netscapes blink element and Microsoft's marquee element were omitted due to a mutual agreement between the two
companies.[13] A markup for mathematical formulas similar to that in HTML was not standardized
until 14 months later in MathML.

26.1. HISTORY

149

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


W3C Recommendation. It oers three variations:
Strict, in which deprecated elements are forbidden
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-specic element types and attributes,
but at the same time sought to phase out Netscapes
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
Logo of HTML5
edits without incrementing the version number.
December 24, 1999 HTML 4.01[21] was published as a
W3C Recommendation. It oers the same three
variations as HTML 4.0 and its last errata were published on May 12, 2001.

replaced by a second version[31] one month later,


followed by six further drafts published by IETF
itself[32] that nally 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
3.0[33]
1, Subcommittee 34 Document description and April 1995 (authored March 1995) HTML
[22]
was proposed as a standard to the IETF, but the
processing languages).
proposal expired ve 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 Raggetts HTML+
XML-based language XHTML occupied the W3Cs
proposal, such as support for tables, text ow around
HTML Working Group through the early and midgures and the display of complex mathematical
2000s.
formulas.[34]
October 28, 2014 HTML5[24] was published as a W3C
Recommendation.[25]
HTML draft version timeline
October 1991 HTML Tags,[6] an informal CERN document listing 18 HTML tags, was rst mentioned in
public.
June 1992 First informal draft of the HTML DTD,[26]
with seven[27][28][29] subsequent revisions (July 15,
August 6, August 18, November 17, November 19,
November 20, November 22)
November 1992 HTML DTD 1.1 (the rst with a version number, based on RCS revisions, which start
with 1.1 rather than 1.0), an informal draft[29]
June 1993 Hypertext Markup Language[30] was published by the IETF IIIR Working Group as an Internet Draft (a rough proposal for a standard). It was

W3C began development of its own Arena browser


as a test bed for HTML 3 and Cascading Style
Sheets,[35][36][37] but HTML 3.0 did not succeed for
several reasons. The draft was considered very large
at 150 pages and the pace of browser development,
as well as the number of interested parties, had outstripped the resources of the IETF.[13] Browser vendors, including Microsoft and Netscape at the time,
chose to implement dierent subsets of HTML 3s
draft features as well as to introduce their own extensions to it.[13] (see Browser wars). These included
extensions to control stylistic aspects of documents,
contrary to the belief [of the academic engineering community] that such things as text color, background texture, font size and font face were denitely outside the scope of a language when their
only intent was to specify how a document would be
organized.[13] Dave Raggett, who has been a W3C
Fellow for many years, has commented for example:
To a certain extent, Microsoft built its business on

150

CHAPTER 26. HTML


the Web by extending HTML features.[13]

January 2008 HTML5 was published as a Working


Draft (link) by the W3C.[38]
Although its syntax closely resembles that of SGML,
HTML5 has abandoned any attempt to be an SGML
application and has explicitly dened its own html
serialization, in addition to an alternative XMLbased XHTML5 serialization.[39]
2011 HTML5 Last Call On 14 February 2011, the
W3C extended the charter of its HTML Working
Group with clear milestones for HTML5. In May
2011, the working group advanced HTML5 to Last
Call, an invitation to communities inside and outside W3C to conrm the technical soundness of the
specication. The W3C developed a comprehensive test suite to achieve broad interoperability for
the full specication by 2014, which was the target
date for recommendation.[40] In January 2011, the
WHATWG renamed its HTML5 living standard
to HTML. The W3C nevertheless continues its
project to release HTML5.[41]
2012 HTML5 Candidate Recommendation In July
2012, WHATWG and W3C decided on a degree of
separation. W3C will continue the HTML5 specication work, focusing on a single denitive standard,
which is considered as a snapshot by WHATWG.
The WHATWG organization will continue its work
with HTML5 as a Living Standard. The concept of a living standard is that it is never complete
and is always being updated and improved. New
features can be added but functionality will not be
removed.[42]

XHTML 1.0,[49] published January 26, 2000, as a


W3C Recommendation, later revised and republished August 1, 2002. It oers the same three
variations as HTML 4.0 and 4.01, reformulated in
XML, with minor restrictions.
XHTML 1.1,[50] published May 31, 2001, as a W3C
Recommendation. It is based on XHTML 1.0 Strict,
but includes minor changes, can be customized, is
reformulated using modules from Modularization of
XHTML, which was published April 10, 2001, as a
W3C Recommendation.
XHTML 2.0 was a working draft, but work on it was
abandoned in 2009 in favor of work on HTML5 and
XHTML5.[51][52][53] XHTML 2.0 was incompatible
with XHTML 1.x and, therefore, would be more accurately characterized as an XHTML-inspired new
language than an update to XHTML 1.x.
An XHTML syntax, known as XHTML5.1, is
being dened alongside HTML5 in the HTML5
draft.[54]

26.2 Markup

HTML markup consists of several key components, including those called tags (and their attributes), characterbased data types, character references and entity references. HTML tags most commonly come in pairs like
<h1> and </h1>, although some represent empty elements
and so are unpaired, for example <img>. The rst 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 renderimplementations.[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
programming languages, scripting languages and markup
posed Recommendation.[46]
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 specicaa title</title> </head> <body> <p>Hello world!</p>
[48]
tion process is complete.
</body> </html>
XHTML versions
Main article: XHTML

(The text between <html> and </html> describes the web


page, and the text between <body> and </body> is the
visible page content. The markup text "<title>This is a title</title>" denes 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

26.2.1

Elements

151
<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 dierence 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.
These indicate other information, such as identiers for
sections within the document, identiers used to bind
style information to the presentation of the document,
and for some tags such as the <img> used to embed images, the reference to the image resource.

This is a link in HTML. To create a link the <a> tag is


used. The href= attribute holds the URL address of the
link.
<a href="https://www.wikipedia.org/">A
Wikipedia!</a>

link

to

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
commonly used paragraph element <p>, are optional. An
HTML browser or other agent can infer the closure for the
end of an element from the context and the structural rules
dened by the HTML standard. These rules are complex
and not widely understood by most HTML coders.

Comments can help in the understanding of the markup


and do not display in the webpage.
There are several types of markup elements used in
HTML:

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 atas a second-level heading. Structural markup does
tribute2="value2">''content''</tag>.
Some HTML
not denote any specic rendering, but most web
elements are dened 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
tags 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 renderings 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
aural user agent should interpret the latter two
<head> <title>The Title</title> </head>
elements. However, they are not equivalent to their
presentational counterparts: it would be undesirable
Headings: HTML headings are dened 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
4.0 specication in favor of using CSS for styling.

Hypertext markup makes parts of a document into


links to other documents
An anchor element creates a hyperlink in the document and its href attribute sets the links target
URL. For example, the HTML markup, <a
href="http://www.google.com/">Wikipedia</a>,
will render the word "Wikipedia" as a hyperlink.
To render an image as a hyperlink, an img
element is inserted as content into the a element. Like br, img is an empty element
with attributes but no content or closing tag. <a
href="http://example.org"><img src="image.gif
alt="descriptive text width="50 height="50
border="0"></a>.
Attributes

may be specied; for example class="notation important puts the element into both the notation
and the important classes.
An author may use the style attribute to assign presentational properties to a particular element. It is
considered better practice to use an elements id or
class attributes to select the element from within a
stylesheet, though sometimes this can be too cumbersome for a simple, specic, or ad hoc styling.
The title attribute is used to attach subtextual explanation to an element. In most browsers this attribute
is displayed as a tooltip.
The lang attribute identies the natural language
of the elements contents, which may be dierent
from that of the rest of the document. For example,
in an English-language document:
<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,
separated by "=" and written within the start tag of an
element after the elements name. The value may be enclosed in single or double quotes, although values consisting of certain characters can be left unquoted in HTML
(but not XHTML) .[58][59] Leaving attribute values unquoted is considered unsafe.[60] In contrast with namevalue pair attributes, there are some attributes that affect the element simply by their presence in the start tag
of the element,[6] like the ismap attribute for the img
element.[61]

The abbreviation element, abbr, can be used to demonstrate some of these attributes :
<abbr id="anId class="jargon style="color:purple;"
title="Hypertext Markup Language">HTML</abbr>
This example displays as HTML; in most browsers, pointing the cursor at the abbreviation should display the title
text Hypertext Markup Language.

Most elements take the language-related attribute dir to


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 :
The id attribute provides a document-wide unique
identier for an element. This is used to identify
the element so that stylesheets can alter its presentational properties, and scripts may alter, animate
or delete its contents or presentation. Appended to
the URL of the page, it provides a globally unique
identier for the element, typically a sub-section
of the page. For example, the ID Attributes in
http://en.wikipedia.org/wiki/HTML#Attributes

26.2.2 Character and entity references


See also: List of XML and HTML character entity
references and Unicode and HTML

As of version 4.0, HTML denes a set of 252 character


entity references and a set of 1,114,050 numeric character references, both of which allow individual characters
to be written via simple markup, rather than literally. A
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 referbe 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


&quot; or &#x22; or &#34; when it appears within the attribute value itself. Equivalently, the single-quote character ('), when not used to quote an attribute value, must also
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
need to escape such characters, some browsers can be
very forgiving and try to use context to guess their intent. The result is still invalid markup, which makes the
document less accessible to other browsers and to other
user agents that may try to parse the document for search
and indexing purposes for example.

153
An example of an HTML 4 doctype
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.01//EN "http://www.w3.org/TR/html4/strict.dtd">
This declaration references the DTD for the strict version of HTML 4.01. SGML-based validators read the
DTD in order to properly parse the document and to perform validation. In modern browsers, a valid doctype activates standards mode as opposed to quirks mode.
In addition, HTML 4.01 provides Transitional and
Frameset DTDs, as explained below. Transitional type
is the most inclusive, incorporating current tags as well as
older or deprecated tags, with the Strict DTD excluding deprecated tags. Frameset has all tags necessary to
make frames on a page along with the tags included in
transitional type.

Escaping also allows for characters that are not easily typed, or that are not available in the documents
character encoding, to be represented within element and
attribute content. For example, the acute-accented e (),
a character typically found only on Western European
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 charac26.3 Semantic HTML
ters that are available on all keyboards and are supported
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
worlds writing systems.[65]
Semantic HTML is a way of writing HTML that emphasizes the meaning of the encoded information over its presentation (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 denes 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 encournumbers, 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 conAll of these data types are specializations of character tent.[68]
data.
In a 2001 discussion of the Semantic Web, Tim BernersLee and others gave examples of ways in which intelligent software agents may one day automatically crawl
26.2.4 Document type declaration
the web and nd, lter and correlate previously unrelated,
[69]
Such
HTML documents are required to start with a Document published facts for the benet of human users.
Type Declaration (informally, a doctype). In browsers, agents are not commonplace even now, but some of the
the doctype helps to dene the rendering mode ideas of Web 2.0, mashups and price comparison websites may be coming close. The main dierence between
particularly whether to use quirks mode.
these web application hybrids and Berners-Lees semanThe 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 Denition (DTD). The developers, who already know the web locations and the
DTD to which the DOCTYPE refers contains a machine- API semantics of the specic 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
of what it might nd, is the web crawler or search-engine
the DTD.
spider. These software agents are dependent on the seHTML5 does not dene a DTD; therefore, in HTML5 the mantic clarity of web pages they nd 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 facilities without which the World Wide Webs usefulness

154

CHAPTER 26. HTML

would be greatly reduced.


In order for search-engine spiders to be able to rate the
signicance of pieces of text they nd in HTML documents, and also for those creating mashups and other
hybrids as well as for more automated agents as they are
developed, the semantic structures that exist in HTML
need to be widely and uniformly applied to bring out the
meaning of published text.[70]
Presentational markup tags are deprecated in current
HTML and XHTML recommendations and are illegal in
HTML5.
Good semantic HTML also improves the accessibility
of web documents (see also Web Content Accessibility
Guidelines). For example, when a screen reader or audio
browser can correctly ascertain the structure of a document, it will not waste the visually impaired users time
by reading out repeated or irrelevant information when it
has been marked up correctly.

26.4.2 HTML e-mail


Main article: HTML email
Most graphical email clients allow the use of a subset
of HTML (often ill-dened) to provide formatting and
semantic markup not available with plain text. This may
include typographic information like coloured headings,
emphasized and quoted text, inline images and diagrams.
Many such clients include both a GUI editor for composing HTML e-mail messages and a rendering engine for
displaying them. Use of HTML in e-mail is criticized by
some because of compatibility issues, because it can help
disguise phishing attacks, because of accessibility issues
for blind or visually impaired people, because it can confuse spam lters and because the message size is larger
than plain text.

26.4.3 Naming conventions

The most common lename extension for les containing HTML is .html. A common abbreviation of this is
.htm, which originated because some early operating systems and le systems, such as DOS and the limitations
HTML documents can be delivered by the same means
imposed by FAT data structure, limited le extensions to
as any other computer le. However, they are most often
three letters.[74]
delivered either by HTTP from a web server or by email.

26.4 Delivery

26.4.4 HTML Application


26.4.1

HTTP

Main article: HTML Application

Main article: Hypertext Transfer Protocol


The World Wide Web is composed primarily of HTML
documents transmitted from web servers to web browsers
using the Hypertext Transfer Protocol (HTTP). However,
HTTP is used to serve images, sound, and other content,
in addition to HTML. To allow the web browser to know
how to handle each document it receives, other information is transmitted along with the document. This meta
data usually includes the MIME type (e.g. text/html or
application/xhtml+xml) and the character encoding (see
Character encoding in HTML).

An HTML Application (HTA; le extension ".hta) is a


Microsoft Windows application that uses HTML and Dynamic HTML in a browser to provide the applications
graphical interface. A regular HTML le is conned to
the security model of the web browsers security, communicating only to web servers and manipulating only webpage objects and site cookies. An HTA runs as a fully
trusted application and therefore has more privileges, like
creation/editing/removal of les and Windows Registry
entries. Because they operate outside the browsers security model, HTAs cannot be executed via HTTP, but
must be downloaded (just like an EXE le) and executed
from local le system.

In modern browsers, the MIME type that is sent with the


HTML document may aect how the document is initially 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
ever-breaking links, links going outward only, quotes you
lenient with HTML.
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]
dations 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 vari1. The language for an element should be specied
ous browser vendors. The latest standards surrounding
with a lang attribute rather than the XHTML
HTML reect eorts to overcome the sometimes chaotic
xml:lang attribute. XHTML uses XMLs built in
development of the language[77] and to create a ratiolanguage-dening functionality attribute.
nal foundation for building both meaningful and wellpresented documents. To return HTML to its role as a se2. 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 presentation. In conjunction, the HTML specication 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
further explanation).
There are two axes dierentiating various variations of
HTML as currently specied: SGML-based HTML versus XML-based HTML (referred to as XHTML) on one
axis, and strict versus transitional (loose) versus frameset
on the other axis.

4. If present, remove the XML declaration. (Typically this is: <?xml version="1.0 encoding="utf8"?>).

26.5.1

5. Ensure that the documents MIME type is set


to text/html. For both HTML and XHTML, this
comes from the HTTP Content-Type header sent by
the server.

SGML-based versus XML-based


HTML

One dierence in the latest HTML specications lies


in the distinction between the SGML-based specication and the XML-based specication. The XML-based
specication is usually called XHTML to distinguish it
clearly from the more traditional denition. However,
the root element name continues to be html even in the
XHTML-specied HTML. The W3C intended XHTML
1.0 to be identical to HTML 4.01 except where limitations of XML over the more complex SGML require
workarounds. Because XHTML and HTML are closely
related, they are sometimes documented in parallel. In
such circumstances, some authors conate the two names
as (X)HTML or X(HTML).

6. Change the XML empty-element syntax to an


HTML style empty element (<br/> to <br>).
Those are the main changes necessary to translate a document from XHTML 1.0 to HTML 4.01. To translate
from HTML to XHTML would also require the addition
of any omitted opening or closing tags. Whether coding
in HTML or XHTML it may just be best to always include the optional tags within an HTML document rather
than remembering which tags can be omitted.

A well-formed XHTML document adheres to all the syntax requirements of XML. A valid document adheres to
Like HTML 4.01, XHTML 1.0 has three sub- the content specication for XHTML, which describes
the document structure.
specications: strict, transitional and frameset.
Aside from the dierent opening declarations for a doc- The W3C recommends several conventions to ensure an
ument, the dierences between an HTML 4.01 and easy migration between HTML and XHTML (see HTML
XHTML 1.0 documentin each of the corresponding Compatibility Guidelines). The following steps can be
DTDsare 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,
and even empty elements which must not have an end
tag. By contrast, XHTML requires all elements to have an
opening tag and a closing tag. XHTML, however, also introduces a new shortcut: an XHTML tag may be opened
and closed within the same tag, by including a slash before
the end of the tag like this: <br/>. The introduction of
this shorthand, which is not used in the SGML declaration
for HTML 4.01, may confuse earlier software unfamiliar
with this new convention. A x for this is to include a
space before closing the tag, as such: <br />.[78]
To understand the subtle dierences between HTML and
XHTML, consider the transformation of a valid and well-

Include both xml:lang and lang attributes on any elements assigning language.
Use the empty-element syntax only for elements
specied as empty in HTML.
Include an extra space in empty-element tags: for
example <br /> instead of <br>.
Include explicit close tags for elements that permit content but are left empty (for example,
<div></div>, not <div />).
Omit the XML declaration.

156

CHAPTER 26. HTML

By carefully following the W3Cs compatibility guidelines, a user agent should be able to interpret the document equally as HTML or XHTML. For documents that
are XHTML 1.0 and have been made compatible in this
way, the W3C permits them to be served either as HTML
(with a text/html MIME type), or as XHTML (with an
application/xhtml+xml or application/xml MIME type).
When delivered as XHTML, browsers should use an
XML parser, which adheres strictly to the XML specications for parsing the documents contents.

26.5.2

Transitional versus strict

HTML 4 dened three dierent versions of the language:


Strict, Transitional (once called Loose) and Frameset.
The Strict version is intended for new documents and
is considered best practice, while the Transitional and
Frameset versions were developed to make it easier to
transition documents that conformed to older HTML
specication or didn't conform to any specication to a
version of HTML 4. The Transitional and Frameset versions allow for presentational markup, which is omitted
in the Strict version. Instead, cascading style sheets are
encouraged to improve the presentation of HTML documents. Because XHTML 1 only denes an XML syntax
for the language dened by HTML 4, the same dierences apply to XHTML 1 as well.
The Transitional version allows the following parts of the
vocabulary, which are not included in the Strict version:
A looser content model
Inline elements and plain text are allowed directly in: body, blockquote, form, noscript and
noframes
Presentation related elements
underline (u)(Deprecated. can confuse a visitor with a hyperlink.)
strike-through (s)
center (Deprecated. use CSS instead.)
font (Deprecated. use CSS instead.)
basefont (Deprecated. use CSS instead.)
Presentation related attributes

align (Deprecated. use CSS instead.), border,


vspace and hspace attributes on img and object (caution: the object element is only supported in Internet Explorer (from the major
browsers)) elements
align (Deprecated. use CSS instead.) attribute
on legend and caption elements
align (Deprecated. use CSS instead.) and bgcolor (Deprecated. use CSS instead.) on table
element
nowrap (Obsolete), bgcolor (Deprecated. use
CSS instead.), width, height on td and th elements
bgcolor (Deprecated. use CSS instead.) attribute on tr element
clear (Obsolete) attribute on br element
compact attribute on dl, dir and menu elements
type (Deprecated. use CSS instead.), compact (Deprecated. use CSS instead.) and start
(Deprecated. use CSS instead.) attributes on
ol and ul elements
type and value attributes on li element
width attribute on pre element
Additional elements in Transitional specication
menu (Deprecated. use CSS instead.) list
(no substitute, though unordered list is recommended)
dir (Deprecated. use CSS instead.) list (no
substitute, though unordered list is recommended)
isindex (Deprecated.)
(element requires
server-side support and is typically added to
documents server-side, form and input elements can be used as a substitute)
applet (Deprecated. use the object element instead.)
The language (Obsolete) attribute on script element (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 target (Deprecated in the map, link and form
tribute on div, form, paragraph (p) and headelements.) attribute on a, client-side imageing (h1...h6) elements
map (map), link, form and base elements
align (Deprecated. use CSS instead.), noshade
(Deprecated. use CSS instead.), size (Deprecated. use CSS instead.) and width (Depre- The Frameset version includes everything in the Transicated. use CSS instead.) attributes on hr ele- tional version, as well as the frameset element (used instead of body) and the frame element.
ment

26.7. HYPERTEXT FEATURES NOT IN HTML

26.5.3

157

Frameset versus transitional

other, i.e., the work on HTML5 started with an older


WHATWG draft, and later the WHATWG living stanIn addition to the above transitional dierences, the dard was based on HTML5 drafts in 2011.[79][80]
frameset specications (whether XHTML 1.0 or HTML
4.01) specify a dierent content model, with frameset replacing 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 specication versions

As this list demonstrates, the loose versions of the specication are maintained for legacy support. However, contrary to popular misconceptions, the move to XHTML
does not imply a removal of this legacy support. Rather
the X in XML stands for extensible and the W3C is
modularizing the entire specication and opening it up
to independent extensions. The primary achievement
in the move from XHTML 1.0 to XHTML 1.1 is the
modularization of the entire specication. The strict
version of HTML is deployed in XHTML 1.1 through
a set of modular extensions to the base XHTML 1.1
specication. Likewise, someone looking for the loose
(transitional) or frameset specications will nd similar extended XHTML 1.1 support (much of it is contained in the legacy or frame modules). The modularization also allows for separate features to develop
on their own timetable. So for example, XHTML 1.1
will allow quicker migration to emerging XML standards
such as MathML (a presentational and semantic math
language based on XML) and XFormsa new highly
advanced web-form technology to replace the existing
HTML forms.

HTML lacks some of the features found in earlier hypertext systems, such as source tracking, fat links and
others.[81] Even some hypertext features that were in early
versions of HTML have been ignored by most popular
web browsers until recently, such as the link element and
in-browser Web page editing.
Sometimes Web services or browser manufacturers remedy these shortcomings. For instance, wikis and content
management systems allow surfers to edit the Web pages
they visit.

26.8 WYSIWYG editors


There are some WYSIWYG editors (What You See Is
What You Get), in which the user lays out everything as it
is to appear in the HTML document using a graphical user
interface (GUI), often similar to word processors. The
editor renders the document rather than show the code,
so authors do not require extensive knowledge of HTML.

The WYSIWYG editing model has been criticized,[82][83]


primarily because of the low quality of the generated code; there are voices advocating a change to the
In summary, the HTML 4 specication primarily reined WYSIWYM model (What You See Is What You Mean).
in all the various HTML implementations into a single
clearly written specication based on SGML. XHTML WYSIWYG editors remain a controversial topic because
1.0, ported this specication, as is, to the new XML de- of their perceived aws such as:
ned specication. Next, XHTML 1.1 takes advantage
of the extensible nature of XML and modularizes the
Relying mainly on layout as opposed to meaning, ofwhole specication. XHTML 2.0 was intended to be the
ten using markup that does not convey the intended
rst step in adding new features to the specication 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
of HTML and CSS.
26.6 HTML5 variations

26.6.1

WHATWG HTML versus HTML5

Main article: HTML5


The WHATWG considers their work as living standard
HTML for what constitutes the state of the art in major browser implementations by Apple (Safari), Google
(Chrome), Mozilla (Firefox), Opera (Opera), and others.
HTML5 is specied by the HTML Working Group of
the W3C following the W3C process. As of 2013 both
specications are similar and mostly derived from each

Often producing ungrammatical markup, called tag


soup or semantically incorrect markup (such as
<em> for italics).
As a great deal of the information in HTML documents is not in the layout, the model has been criticized for its what you see is all you get"-nature.[85]

26.9 See also


Breadcrumb (navigation)

158
Comparison of HTML parsers
Dynamic web page
HTML decimal character rendering
List of document markup languages
List of XML and HTML character entity references
Microdata (HTML)
Microformat
Polyglot HTML
Semantic HTML
W3C (X)HTML Validator

26.10 References
[1] Flanagan, David. JavaScript - The denitive guide (6 ed.).
p. 1. JavaScript is part of the triad of technologies that
all Web developers must learn: HTML to specify the content of web pages, CSS to specify the presentation of web
pages, and JavaScript to specify the behaviour of web
pages.
[2] HTML 4.0 Specication W3C Recommendation
Conformance: requirements and recommendations.
World Wide Web Consortium. December 18, 1997. Retrieved July 6, 2015.
[3] Tim Berners-Lee, Information Management: A Proposal. CERN (March 1989, May 1990). W3.org
[4] Tim Berners-Lee, Design Issues
[5] Tim Berners-Lee, Design Issues
[6] Tags used in HTML. World Wide Web Consortium.
November 3, 1992. Retrieved November 16, 2008.
[7] First mention of HTML Tags on the www-talk mailing
list. World Wide Web Consortium. October 29, 1991.
Retrieved April 8, 2007.
[8] Index of elements in HTML 4. World Wide Web Consortium. December 24, 1999. Retrieved April 8, 2007.
[9] Tim Berners-Lee (December 9, 1991).
Re:
SGML/HTML docs, X Browser (archived wwwtalk mailing list post)". Retrieved June 16, 2007. SGML
is very general. HTML is a specic application of the
SGML basic syntax applied to hypertext documents with
simple structure.
[10] Raymond, Eric. IETF and the RFC Standards Process.
The Art of Unix Programming. In IETF tradition, standards have to arise from experience with a working prototype implementation but once they become standards,
code that does not conform to them is considered broken
and mercilessly scrapped. ...Internet-Drafts are not specications; software implementers and vendors are specifically barred from claiming compliance with them as if

CHAPTER 26. HTML

they were specications. Internet-Drafts are focal points


for discussion, usually in a working group... Once an
Internet-Draft has been published with an RFC number,
it is a specication to which implementers may claim conformance. It is expected that the authors of the RFC and
the community at large will begin correcting the specication with eld experience.
[11] HTML+ Internet-Draft Abstract. Browser writers
are experimenting with extensions to HTML and it is now
appropriate to draw these ideas together into a revised
document format. The new format is designed to allow a
gradual roll over from HTML, adding features like tables,
captioned gures and ll-out forms for querying remote
databases or mailing questionnaires.
[12] Berners-Lee, Tim; Connelly, Daniel (November 1995).
RFC 1866 Hypertext Markup Language 2.0. Internet Engineering Task Force. Retrieved 1 December 2010.
This document thus denes an HTML 2.0 (to distinguish
it from the previous informal specications). Future (generally upwardly compatible) versions of HTML with new
features will be released with higher version numbers.
[13] Raggett, Dave (1998). Raggett on HTML 4. Retrieved July
9, 2007.
[14] HTML5 Hypertext Markup Language 5.0. Internet
Engineering Task Force. 28 October 2014. Retrieved 25
November 2014. This document recommends HTML 5.0
after completion.
[15] HTML 3.2 Reference Specication. World Wide Web
Consortium. January 14, 1997. Retrieved November 16,
2008.
[16] IETF HTML WG. Retrieved June 16, 2007. Note: This
working group is closed
[17] Arnoud Engelfriet. Introduction to Wilbur. Web Design Group. Retrieved June 16, 2007.
[18] HTML 4.0 Specication. World Wide Web Consortium. December 18, 1997. Retrieved November 16,
2008.
[19] HTML 4 4 Conformance: requirements and recommendations. Retrieved December 30, 2009.
[20] HTML 4.0 Specication. World Wide Web Consortium. April 24, 1998. Retrieved November 16, 2008.
[21] HTML 4.01 Specication. World Wide Web Consortium. December 24, 1999. Retrieved November 16,
2008.
[22] ISO (2000). ISO/IEC 15445:2000 Information technology Document description and processing languages
HyperText Markup Language (HTML)". Retrieved December 26, 2009.
[23] Cs.Tcd.Ie. Cs.Tcd.Ie (2000-05-15). Retrieved on 201202-16.
[24] HTML5: A vocabulary and associated APIs for HTML
and XHTML. World Wide Web Consortium. 28 October 2014. Retrieved 31 October 2014.

26.10. REFERENCES

159

[25] Open Web Platform Milestone Achieved with HTML5


Recommendation (Press release). World Wide Web
Consortium. 28 October 2014. Retrieved 31 October
2014.

[43] HTML5. W3.org. 2012-12-17. Retrieved 2013-06-15.

[26] Connolly, Daniel (6 June 1992). MIME as a hypertext


architecture. CERN. Retrieved 24 October 2010.

[45] HTML5: A vocabulary and associated APIs for HTML


and XHTML (Editors Draft).. World Wide Web Consortium. Retrieved 12 April 2010.

[27] Connolly, Daniel (15 July 1992). HTML DTD enclosed. CERN. Retrieved 24 October 2010.
[28] Connolly, Daniel (18 August 1992). document type declaration subset for Hyper Text Markup Language as dened by the World Wide Web project. CERN. Retrieved
24 October 2010.
[29] Connolly, Daniel (24 November 1992). Document Type
Denition for the Hyper Text Markup Language as used
by the World Wide Web application. CERN. Retrieved
24 October 2010. See section Revision History
[30] Berners-Lee, Tim; Connolly, Daniel (June 1993). Hyper
Text Markup Language (HTML) Internet Draft version
1.1. IETF IIIR Working Group. Retrieved 18 September
2010.
[31] Berners-Lee, Tim; Connolly, Daniel (June 1993).
Hypertext Markup Language (HTML) Internet Draft
version 1.2. IETF IIIR Working Group. Retrieved 18
September 2010.

[44] When Will HTML5 Be Finished?". FAQ. WHAT Working Group. Retrieved 29 November 2009.

[46] Call for Review: HTML5 Proposed Recommendation


Published W3C News. W3.org. 2014-09-16. Retrieved
2014-09-27.
[47] Open Web Platform Milestone Achieved with HTML5
Recommendation. W3C. 28 October 2014. Retrieved
29 October 2014.
[48] HTML5 specication nalized, squabbling over specs
continues. Ars Technica. 2014-10-29. Retrieved 201410-29.
[49] XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)". World Wide Web Consortium.
January 26, 2000. Retrieved November 16, 2008.
[50] XHTML 1.1 Module-based XHTML Second Edition. World Wide Web Consortium. February 16, 2007.
Retrieved November 16, 2008.
[51] XHTM 2.0. World Wide Web Consortium. July 26,
2006. Retrieved November 16, 2008.

[32] Berners-Lee, Tim; Connolly, Daniel (28 November


1994). HyperText Markup Language Specication
2.0 INTERNET DRAFT. IETF. Retrieved 24 October
2010.

[52] XHTML 2 Working Group Expected to Stop Work End


of 2009, W3C to Increase Resources on HTML5. World
Wide Web Consortium. July 17, 2009. Retrieved November 16, 2008.

[33] HTML 3.0 Draft (Expired!) Materials. World Wide


Web Consortium. December 21, 1995. Retrieved
November 16, 2008.

[53] W3C XHTML FAQ.

[34] HyperText Markup Language Specication Version 3.0.


Retrieved June 16, 2007.

[55] Activating Browser Modes with Doctype. Hsivonen.iki..


Retrieved on 2012-02-16.

[35] Raggett, Dave (28 March 1995). HyperText Markup


Language Specication Version 3.0. HTML 3.0 Internet
Draft Expires in six months. World Wide Web Consortium. Retrieved 17 June 2010.

[56] HTML Elements. w3schools. Retrieved 16 March


2015.

[36] Bowers, Neil. Weblint: Just Another Perl Hack.


[37] Lie, Hkon Wium; Bos, Bert (April 1997). Cascading
style sheets: designing for the Web. Addison Wesley Longman. p. 263. Retrieved 9 June 2010.
[38] HTML5. World Wide Web Consortium. June 10,
2008. Retrieved November 16, 2008.
[39] HTML5, one vocabulary, two serializations. Retrieved
February 25, 2009.
[40] W3C Conrms May 2011 for HTML5 Last Call, Targets
2014 for HTML5 Standard. World Wide Web Consortium. 14 February 2011. Retrieved 18 February 2011.

[54] HTML5. W3C. 19 October 2013.

[57] CSS Introduction. W3schools. Retrieved 16 March


2015.
[58] On SGML and HTML. World Wide Web Consortium.
Retrieved November 16, 2008.
[59] XHTML 1.0 Dierences with HTML 4. World Wide
Web Consortium. Retrieved November 16, 2008.
[60] Korpela, Jukka (July 6, 1998). Why attribute values
should always be quoted in HTML. Cs.tut.. Retrieved
November 16, 2008.
[61] Objects, Images, and Applets in HTML documents.
World Wide Web Consortium. December 24, 1999. Retrieved November 16, 2008.

[41] Hickson, Ian. HTML Is the New HTML5. Retrieved


21 January 2011.

[62] H56: Using the dir attribute on an inline element to resolve problems with nested directional runs. Techniques
for WCAG 2.0. W3C. Retrieved 18 September 2010.

[42] HTML5 gets the splits.. netmagazine.com. Retrieved


23 July 2012.

[63] Character Entity Reference Chart. World Wide Web


Consortium. October 24, 2012.

160

CHAPTER 26. HTML

[64] The Named Character Reference &apos;". World Wide


Web Consortium. January 26, 2000.

[79] Hickson, Ian (2011-01-19). HTML is the new HTML5.


The WHATWG blog. Retrieved 2013-01-14.

[65] The Unicode Standard: A Technical Introduction. Retrieved 2010-03-16.

[80] HTML5 Smile, its a Snapshot!". W3C Blog. 201212-17. Retrieved 2013-01-14.

[66] HTML: The Markup Language (an HTML language reference)". Retrieved 2013-08-19.

[81] Jakob Nielsen (January 3, 2005). Reviving Advanced


Hypertext. Retrieved June 16, 2007.

[67] Berners-Lee, Tim; Fischetti, Mark (2000). Weaving the


Web: The Original Design and Ultimate Destiny of the
World Wide Web by Its Inventor. San Francisco: Harper.
ISBN 978-0-06-251587-2.

[82] Sauer, C.: WYSIWIKI Questioning WYSIWYG in the


Internet Age. In: Wikimania (2006)

[68] Raggett, Dave (2002). Adding a touch of style. W3C.


Retrieved October 2, 2009. This article notes that presentational HTML markup may be useful when targeting
browsers before Netscape 4.0 and Internet Explorer 4.0.
See the list of web browsers to conrm that these were
both released in 1997.

[83] Spiesser, J., Kitchen, L.: Optimization of HTML automatically generated by WYSIWYG programs. In: 13th
International Conference on World Wide Web, pp. 355
364. WWW '04. ACM, New York, NY (New York, NY,
U.S., May 1720, 2004)
[84] XHTML Reference: blockquote. Xhtml.com. Retrieved
on 2012-02-16.

[69] Tim Berners-Lee, James Hendler and Ora Lassila (2001).


The Semantic Web. Scientic American. Retrieved
October 2, 2009.

[85] Doug Engelbarts INVISIBLE REVOLUTION . Invisiblerevolution.net. Retrieved on 2012-02-16.

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


The Semantic Web Revisited (PDF). IEEE Intelligent
Systems. Retrieved October 2, 2009.

26.11 External links

[71] XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)". World Wide Web Consortium. 2002 [2000]. Retrieved December 7, 2008.
XHTML Documents which follow the guidelines set forth
in Appendix C, HTML Compatibility Guidelines may
be labeled with the Internet Media Type text/html
[RFC2854], as they are compatible with most HTML
browsers. Those documents, and any other document
conforming to this specication, may also be labeled with
the Internet Media Type application/xhtml+xml as dened in [RFC3236].
[72] RFC 2119: Key words for use in RFCs to Indicate Requirement Levels. Harvard University. 1997. Retrieved
December 7, 2008. 3. SHOULD This word, or the adjective RECOMMENDED, mean that there may exist
valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood
and carefully weighed before choosing a dierent course.
[73] XHTML 1.1 Module-based XHTML Second Edition. World Wide Web Consortium. 2007. Retrieved
December 7, 2008. XHTML 1.1 documents SHOULD
be labeled with the Internet Media Type text/html as dened in [RFC2854] or application/xhtml+xml as dened
in [RFC3236].
[74] Naming Files, Paths, and Namespaces. Microsoft. Retrieved 16 March 2015.
[75] Ted Nelson (29 January 1999). Ted Nelsons 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.

WHATWG's HTML Living Standard


W3C's HTML 5.1, the upcoming version of HTML
W3C's HTML5, the most recent nished specication (28 October 2014)
W3C's HTML 4.01 specication (24 December
1999)
Dave Raggetts Introduction to HTML
Tim Berners-Lee Gives the Web a New Denition

Chapter 27

Hypertext Transfer Protocol


The Hypertext Transfer Protocol (HTTP) is an
application protocol for distributed, collaborative,
hypermedia information systems.[1] HTTP is the foundation of data communication for the World Wide
Web.

ample, may be the client and an application running on


a computer hosting a web site may be the server. The
client submits an HTTP request message to the server.
The server, which provides resources such as HTML les
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
response
contains completion status information about
(hyperlinks) between nodes containing text. HTTP is the
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 BernersLee 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 disComments (RFCs). The rst denition of HTTP/1.1, plays web content.
the version of HTTP in common use, occurred in RFC HTTP is designed to permit intermediate network el2068 in 1997, although this was obsoleted by RFC 2616 ements to improve or enable communications between
clients and servers. High-trac websites often benein 1999.
A later version, the successor HTTP/2, was standardized t from web cache servers that deliver content on behalf 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 trac.
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 denition 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 Discovery Protocol (SSDP).
HTTP resources are identied and located on the network
by uniform resource locators (URLs), using the uniform
resource identier (URI) schemes http and https. URIs
and hyperlinks in Hypertext Markup Language (HTML)
documents form inter-linked hypertext documents.
HTTP/1.1 is a revision of the original HTTP (HTTP/1.0).
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 requestresponse protocol in the reuse a connection multiple times to download images,
clientserver computing model. A web browser, for ex- scripts, stylesheets, etc after the page has been delivURL beginning with the HTTP scheme and the WWW domain
name label.

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 dened in RFC 2068 was ocially released in January
presents considerable overhead.
1997. Improvements and updates to the HTTP/1.1 standard were released under RFC 2616 in June 1999.

27.2 History

In 2007, the HTTPbis Working Group was formed, in


part, to revise and clarify the HTTP/1.1 specication. In
June 2014, the WG released an updated six-part specication 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

Tim Berners-Lee

The term hypertext was coined by Ted Nelson in 1965


in the Xanadu Project, which was in turn inspired by
Vannevar Bush's vision (1930s) of the microlm-based
information retrieval and management "memex" system
described in his essay As We May Think (1945). Tim
Berners-Lee and his team at CERN are credited with
inventing the original HTTP along with HTML and the
associated technology for a web server and a text-based
web browser. Berners-Lee rst proposed the WorldWideWeb project in 1989 now known as the World
Wide Web. The rst version of the protocol had only one
method, namely GET, which would request a page from
a server.[3] The response from the server was always an
HTML page.[4]
The rst 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
with extended operations, extended negotiation, richer
meta-information, tied with a security protocol which became more ecient by adding additional methods and
header elds.[5][6] RFC 1945 ocially introduced and
recognized HTTP V1.0 in 1996.

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

27.3 HTTP session


An HTTP session is a sequence of network requestresponse transactions. An HTTP client initiates a request
by establishing a Transmission Control Protocol (TCP)
connection to a particular port on a server (typically port
80, occasionally port 8080; see List of TCP and UDP port
numbers). An HTTP server listening on that port waits
for a clients request message. Upon receiving the request,
the server sends back a status line, such as HTTP/1.1 200
OK, and a message of its own. The body of this message is typically the requested resource, although an error
message or other information may also be returned.[1]

27.4 HTTP Authentication

HTTP provides multiple authentication schemes such as


Basic access authentication and Digest access authentication which operate via a challenge-response mechanism
whereby the server identies and issues a challenge beThe 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 adoption 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 arbiant. That same web hosting company reported that by trary, implementation specic construct for further dividJune 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 transroot URI to form the protection space component of the
port the entire content.
challenge. This in eect allows the server to dene sepaPOST The POST method requests that the server acrate authentication scopes under one root URI[10]
cept the entity enclosed in the request as a new subordinate of the web resource identied by the URI.
The data POSTed might be, for example, an annota27.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 modied; 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 specied
resource.
TRACE The TRACE method echoes the received request 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.

HTTP denes methods (sometimes referred to as verbs)


to indicate the desired action to be performed on the identied resource. What this resource represents, whether
pre-existing data or data that is generated dynamically,
depends on the implementation of the server. Often, the resource corresponds to a le or the output of
an executable residing on the server. The HTTP/1.0
specication[11] dened the GET, POST and HEAD
methods and the HTTP/1.1 specication[12] added 5
new methods: OPTIONS, PUT, DELETE, TRACE and
CONNECT. By being specied in these documents their
semantics are well known and can be depended on. Any
client can use any method and the server can be congured to support any combination of methods. If a method
is unknown to an intermediate it will be treated as an unsafe and non-idempotent method. There is no limit to the
number of methods that can be dened and this allows
for future methods to be specied without breaking existing infrastructure. For example, WebDAV dened 7 new
methods and RFC 5789 specied the PATCH method.

OPTIONS The OPTIONS method returns the HTTP


methods that the server supports for the specied
URL. This can be used to check the functionality of
a web server by requesting '*' instead of a specic
resource.
CONNECT [16] The CONNECT method converts the
request connection to a transparent TCP/IP tunnel, usually to facilitate SSL-encrypted communication (HTTPS) through an unencrypted HTTP
proxy.[17][18] See HTTP CONNECT tunneling.
PATCH The PATCH method applies partial modications to a resource.[19]
All general-purpose HTTP servers are required to implement at least the GET and HEAD methods,[20] and,
whenever possible, also the OPTIONS method.

27.5.1 Safe methods

Some of the methods (for example, HEAD, GET, OPTIONS and TRACE) are, by convention, dened as safe,
which means they are intended only for information retrieval and should not change the state of the server. In
other words, they should not have side eects, beyond
relatively harmless eects such as logging, caching, the
serving of banner advertisements or incrementing a web
counter. Making arbitrary GET requests without regard
to the context of the applications 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.
GET The GET method requests a representation of the
specied resource. Requests using GET should only
retrieve data and should have no other eect. (This
is also true of some other HTTP methods.)[1] The
W3C has published guidance principles on this distinction, saying, "Web application design should be
informed by the above principles, but also by the relevant limitations.[13] See safe methods below.

164
By contrast, methods such as POST, PUT, DELETE and
PATCH are intended for actions that may cause side effects either on the server, or external side eects such
as nancial transactions or transmission of email. Such
methods are therefore not usually used by conforming
web robots or web crawlers; some that do not conform
tend to make requests without regard to context or consequences.

CHAPTER 27. HYPERTEXT TRANSFER PROTOCOL

27.5.3 Security
The TRACE method can be used as part of a class of
attacks known as cross-site tracing; for that reason, common security advice is for it to be disabled in the server
conguration.[21] Microsoft IIS supports a proprietary
TRACK method, which behaves similarly, and which
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 discouraged, because it can cause problems for web caching,
27.6 Status codes
search engines and other automated agents, which can
make unintended changes on the server.
See also: List of HTTP status codes
In HTTP/1.0 and since, the rst line of the HTTP response is called the status line and includes a numeric status code (such as "404") and a textual reason phrase (such
as Not Found). The way the user agent handles the re27.5.2 Idempotent methods and web appli- sponse primarily depends on the code and secondarily on
the other response header elds. Custom status codes can
cations
be used since, if the user agent encounters a code it does
not recognize, it can use the rst digit of the code to deMethods PUT and DELETE are dened 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 eect 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 nareturns may be dierent 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 species
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 diIn contrast, the POST method is not necessarily idempotent, and therefore sending an identical POST request
multiple times may further aect state or cause further
side eects (such as nancial transactions). In some cases
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 rst request
was successful. While web browsers may show alert dialog boxes to warn users in some cases where reloading
a page may re-submit a POST request, it is generally up
to the web application to handle cases where a POST request should not be submitted more than once.
Note that whether a method is idempotent is not enforced
by the protocol or web server. It is perfectly possible to
write a web application in which (for example) a database
insert or other non-idempotent action is triggered by a
GET or other request. Ignoring this recommendation,
however, may result in undesirable consequences, if a
user agent assumes that repeating the same request is safe
when it isn't.

vided into ve groups for better explanation of request


and responses between client and server as named: Informational 1XX, Successful 2XX, Redirection 3XX, Client
Error 4XX and Server Error 5XX.

27.7 Persistent connections


Main article: HTTP persistent connection
In HTTP/0.9 and 1.0, the connection is closed after a
single request/response pair. In HTTP/1.1 a keep-alivemechanism was introduced, where a connection could
be reused for more than one request. Such persistent
connections reduce request latency perceptibly, because
the client does not need to re-negotiate the TCP 3-WayHandshake connection after the rst request has been
sent. Another positive side eect is that in general the
connection becomes faster with time due to TCPs slowstart-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 buered. HTTP pipelining further reduces lag time,
A status line which includes the status code and reaallowing clients to send multiple requests before waiting
son message (e.g., HTTP/1.1 200 OK, which indifor each response. Another addition to the protocol was
cates that the clients request succeeded).
byte serving, where a server transmits just the portion of
Response header elds (e.g., Content-Type:
a resource explicitly requested by a client.
text/html).

27.8 HTTP session state

An empty line.
An optional message body.

HTTP is a stateless protocol. A stateless protocol does


not require the HTTP server to retain information or status about each user for the duration of multiple requests.
However, some web applications implement states or
server side sessions using for instance HTTP cookies or
hidden variables within web forms.

The status line and other header elds must all end
with <CR><LF>. The empty line must consist of only
<CR><LF> and no other whitespace.[27] This strict requirement for <CR><LF> is relaxed somewhat within
message bodies for consistent use of other system linebreaks such as <CR> or <LF> alone.[29]

27.9 Encrypted connections

27.12 Example session

The most popular way of establishing an encrypted HTTP


connection is HTTP Secure.[23] Two other methods for
establishing an encrypted HTTP connection also exist: Secure Hypertext Transfer Protocol, and using the
HTTP/1.1 Upgrade header to specify an upgrade to TLS.
Browser support for these two is, however, nearly nonexistent.[24][25][26]

Below is a sample conversation between an HTTP client


and an HTTP server running on www.example.com, port
80.

27.12.1 Client request


GET /index.html HTTP/1.1 Host: www.example.com

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


and only one header eld) is followed by a blank line, so
that the request ends with a double newline, each in the
form of a carriage return followed by a line feed. The
The request message consists of the following:
Host eld 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).

27.10 Request message

Request header elds (e.g., Accept-Language: en).


An empty line.
An optional message body.
The request line and other header elds must each end
with <CR><LF> (that is, a carriage return character followed by a line feed character). The empty line must consist of only <CR><LF> and no other whitespace.[27] In
the HTTP/1.1 protocol, all header elds except Host are
optional.

27.12.2 Server response


HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34
GMT Content-Type:
text/html; charset=UTF-8
Content-Encoding: UTF-8 Content-Length: 138 LastModied: Wed, 08 Jan 2003 23:11:55 GMT Server:
Apache/1.3.3.7 (Unix) (Red-Hat/Linux) ETag: 3f80f1b6-3e1cb03b Accept-Ranges: bytes Connection:
close <html> <head> <title>An Example Page</title>
</head> <body> Hello World, this is a very simple
HTML document. </body> </html>

A request line containing only the path name is accepted The ETag (entity tag) header eld is used to determine
by servers to maintain compatibility with HTTP clients if a cached version of the requested resource is identibefore the HTTP/1.0 specication in RFC 1945.[28]
cal to the current version of the resource on the server.

166

CHAPTER 27. HYPERTEXT TRANSFER PROTOCOL

Content-Type species the Internet media type of the data


conveyed by the HTTP message, while Content-Length
indicates its length in bytes. The HTTP/1.1 webserver
publishes its ability to respond to requests for certain byte
ranges of the document by setting the eld Accept-Ranges:
bytes. This is useful, if the client needs to have only certain portions[30] of a resource sent by the server, which
is called byte serving. When Connection: close is sent, it
means that the web server will close the TCP connection
immediately after the transfer of this response.

List of HTTP header elds

Most of the header lines are optional. When ContentLength is missing the length is determined in other ways.
Chunked transfer encoding uses a chunk size of 0 to mark
the end of the content. Identity encoding without ContentLength reads content until the socket is closed.

WebSocket

A Content-Encoding like gzip can be used to compress the


transmitted data.

List of HTTP status codes


Representational state transfer (REST)
Variant object
Waka (protocol) An HTTP replacement proposed
by Roy Fielding
Web cache

Wireshark

27.15 Notes

27.13 Similar protocols

[1] Fielding, Roy T.; Gettys, James; Mogul, Jerey C.;


Nielsen, Henrik Frystyk; Masinter, Larry; Leach, Paul J.;
Berners-Lee, Tim (June 1999). Hypertext Transfer Protocol -- 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
protocol is an alternative to HTTP developed at Google,
it is superseded by the new HTTP protocol, HTTP/2.

[2] Overall Operation. p. 12. sec. 1.4. RFC 2616. https:


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

27.14 See also


Basic access authentication
Constrained Application Protocol A semantically
similar protocol to HTTP but used UDP or UDPlike messages targeted for devices with limited processing capability. Re-uses HTTP and other internet
concepts like Internet media type and web linking
(RFC 5988)[31]

[3] Berners-Lee, Tim. HyperText Transfer Protocol.


World Wide Web Consortium. Retrieved 31 August
2010.
[4] Tim Berners-Lee. The Original HTTP as dened in
1991. World Wide Web Consortium. Retrieved 24 July
2010.
[5] Raggett, Dave. Dave Raggetts Bio. World Wide Web
Consortium. Retrieved 11 June 2010.
[6] Raggett, Dave; Berners-Lee, Tim. Hypertext Transfer
Protocol Working Group. World Wide Web Consortium. Retrieved 29 September 2010.

Content negotiation

[7] Raggett, Dave. HTTP WG Plans. World Wide Web


Consortium. Retrieved 29 September 2010.

Curl-loader HTTP/S loading and testing opensource software

[8] Simon Spero. Progress on HTTP-NG. World Wide


Web Consortium. Retrieved 11 June 2010.

Digest access authentication

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


2009-05-29.

Fiddler (software)
HTTP compression

[10] Fielding, Roy T.; Reschke, Julian F. (June 2014).


Hypertext Transfer Protocol (HTTP/1.1): Authentication.
IETF. RFC 7235. https://tools.ietf.org/html/rfc7235.

HTTP/2 developed by the IETFs Hypertext [11] Berners-Lee, Tim; Fielding, Roy T.; Nielsen, Henrik
Transfer Protocol Bis (httpbis) working group.[32]
Frystyk. Method Denitions. Hypertext Transfer Pro HTTP-MPLEX A backwards compatible enhancement to HTTP to improve page and web object retrieval time in congested networks proposed
by Robert Mattson
HTTPS
List of le transfer protocols

tocol -- HTTP/1.0. IETF. pp. 30-32. sec. 8. RFC 1945.


https://tools.ietf.org/html/rfc1945#section-8.
[12] Method Denitions. pp. 51-57. sec. 9. RFC 2616.
https://tools.ietf.org/html/rfc2616#section-9.
[13] Jacobs, Ian (2004). URIs, Addressability, and the use
of HTTP GET and POST. Technical Architecture Group
nding. W3C. Retrieved 26 September 2010.

27.17. EXTERNAL LINKS

[14] POST. p. 54. sec. 9.5. RFC 2616. https://tools.ietf.


org/html/rfc2616#section-9.5.
[15] PUT. p. 55. sec. 9.6. RFC 2616. https://tools.ietf.org/
html/rfc2616#section-9.6.
[16] CONNECT. Hypertext Transfer Protocol -- HTTP/1.1.
IETF. June 1999. p. 57. sec. 9.9. RFC 2616. https:
//tools.ietf.org/html/rfc2616#section-9.9. Retrieved 23
February 2014.
[17] Khare, Rohit; Lawrence, Scott (May 2000). Upgrading
to TLS Within HTTP/1.1. IETF. RFC 2817. https://tools.
ietf.org/html/rfc2817.
[18] Vulnerability Note VU#150227: HTTP proxy default
congurations allow arbitrary TCP connections. USCERT. 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 Security. Norwood, MA: Artech House. pp. 8283. ISBN
9781580531764.
[24] Zalewski, Michal. Browser Security Handbook. Retrieved 30 April 2015.
[25] Chromium Issue 4527: implement RFC 2817: Upgrading 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 draftietf-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

167

27.17 External links


Change History for HTTP. W3.org. Retrieved
2010-08-01. A detailed technical history of HTTP.
Design Issues for HTTP. W3.org. Retrieved
2010-08-01. Design Issues by Berners-Lee when he
was designing the protocol.
Classic HTTP Documents. W3.org. 1998-05-14.
Retrieved 2010-08-01. list of other classic documents recounting the early protocol history

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, specication, but often it is the number of tasks, poor planning and
standard, algorithm, or policy.
inadequate resourcing that causes problems with an implementation project, rather than any of the tasks being
particularly dicult. Similarly with the cultural issues it
is often the lack of adequate consultation and two-way
28.1 Industry-specic denitions
communication that inhibits achievement of the desired
results.

28.1.1

Computer science

In computer science, an implementation is a realization


of a technical specication or algorithm as a program,
software component, or other computer system through
computer programming and deployment. Many implementations may exist for a given specication or standard.
For example, web browsers contain implementations of
World Wide Web Consortium-recommended specications, and software development tools contain implementations of programming languages.
A special case occurs in object-oriented programming,
when a concrete class implements an interface; in this
case the concrete class is an implementation of the interface and it includes methods which are implementations
of those methods specied by the interface.

28.1.3 Political science


Main article: political science
In political science, implementation refers to the carrying
out of public policy. Legislatures pass laws that are then
carried out by public servants working in bureaucratic
agencies. This process consists of rule-making, ruleadministration and rule-adjudication. Factors impacting
implementation include the legislative intent, the administrative capacity of the implementing bureaucracy, interest group activity and opposition, and presidential or
executive support.

28.1.4 Social and health sciences


28.1.2

Information technology

Main article: Information technology

Implementation is dened as a specied set of activities


designed to put into practice an activity or program of
known dimensions. According to this denition, implementation processes are purposeful and are described in
sucient detail such that independent observers can detect the presence and strength of the specic set of activities related to implementation. In addition, the activity
or program being implemented is described in sucient
detail so that independent observers can detect its presence and strength.[1]

In the information technology industry, implementation


refers to post-sales process of guiding a client from purchase to use of the software or hardware that was purchased. This includes requirements analysis, scope analysis, customizations, systems integrations, user policies,
user training and delivery. These steps are often overseen
by a project manager using project management methodologies. Software Implementations involve several professionals 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 impriate sequence. Utilising a well-proven implementation proving the quality of water bodies.
168

28.3. SEE ALSO

169
What are the most ecient ways of storing this data?

Types:
Direct changeover

What database management system should we


use?[2]

Parallel running or as known as parallel


Pilot introduction or as known as pilot

28.3 See also

Well-trade
Phased implementation

28.2 Role of end users


System implementation generally benets from high levels of user involvement and management support. User
participation in the design and operation of information
systems has several positive results. First, if users are
heavily involved in systems design, they move opportunities 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 positively to the change process. Incorporating user knowledge and expertise leads to better solutions.
The relationship between users and information systems
specialists has traditionally been a problem area for information systems implementation eorts. Users and information systems specialists tend to have dierent backgrounds, interests, and priorities. This is referred to as the
user-designer communications gap. These dierences
lead to divergent organizational loyalties, approaches to
problem solving, and vocabularies.[2] Examples of these
dierences 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 t into my daily
business schedule?[2]

28.2.2

Designer concerns

How much disk storage space will the master le


consume?
How many lines of program code will it take to perform this function?
How can we cut down on CPU time when we run
the system?

Application software

28.4 References
[1] The National Implementation Research Network
[2] Laudon, K., & Laudon, J. (2010). Management Information Systems: Managing the Digital Firm. Eleventh
Edition (11 ed.). New Jersey: Prentice Hall.

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
via a sequence of signals). It can also be encrypted for
safe storage and communication.

101
110
110
110
111
110
110
110
110

0111
1001
1011
1001
0000
0101
0100
1001
0001

Information resolves uncertainty. The uncertainty of an


event is measured by its probability of occurrence and
is inversely proportional to that. The more uncertain an
event, the more information is required to resolve uncertainty of that event. The bit is a typical unit of information, but other units such as the nat may be used. Example: information in one fair coin ip: log2 (2/1) = 1 bit,
and in two fair coin ips is log2 (4/1) = 2 bits.
The concept that information is the message has different meanings in dierent contexts.[2] Thus the concept of information becomes closely related to notions of constraint, communication, control, data, form,
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,


the numeral system most commonly used for encoding textual
computer information

See also: History of the word and concept information

In other words, it is the answer to a question of some kind.


It is also that from which data and knowledge can be derived, as data represents values attributed to parameters,
and knowledge signies understanding of real things or
abstract concepts.[1] As it regards data, the informations
existence is not necessarily coupled to an observer (it exists beyond an event horizon, for example), while in the
case of knowledge, the information requires a cognitive
observer.

The English word was apparently derived from the Latin


stem (information-) of the nominative (informatio): this
noun is derived from the verb informare (to inform) in
the sense of to give form to the mind, to discipline,
instruct, teach. Inform itself comes (via French informer) from the Latin verb informare, which means to
give form, or to form an idea of. Furthermore, Latin itself
already contained the word informatio meaning concept
or idea, but the extent to which this may have inuenced
the development of the word information in English is not
clear.

At its most fundamental, information is any propagation of cause and eect within a system. Information is
conveyed either as the content of a message or through direct or indirect observation of some thing. That which is
perceived can be construed as a message in its own right,
and in that sense, information is always conveyed as the

The ancient Greek word for form was (morphe; cf.


morph) and also (eidos) kind, idea, shape, set, the
latter word was famously used in a technical philosophical
sense by Plato (and later Aristotle) to denote the ideal
identity or essence of something (see Theory of Forms).
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 ower, where


The ancient Greek word for information is , the bee often nds nectar or pollen, which are causal inwhich transliterates (plrophoria) from (plrs) 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 comis still in daily use and has the same meaning as the word
plexity
information in English. Unfortunately biblical scholars
have translated (plrophoria) into full assurance creating 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 indeep roots in Aristotles semiotic triangle. In this regard it volves at least two related entities in order to make quancan be interpreted to communicate information to the one titative sense. These are, any dimensionally dened catedecoding that specic 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 repancient and modern Greek language where there is a very resentational (and hence, conceptual) information about
strong denotative relationship between the signier, e.g. S. Vigo then denes the amount of information that R
the word symbol that conveys a specic encoded interpre- conveys about S as the rate of change in the complexity
tation, and the signied, e.g. a concept whose meaning of S whenever the objects in R are removed from S. Under Vigo information, pattern, invariance, complexity,
the interpreter attempts to decode.
representation, and informationve fundamental constructs of universal scienceare unied under a novel
framework.[5][6][7] Among other things, the
29.2 Information theory approach mathematical
framework aims to overcome the limitations of ShannonWeaver 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 inuence which leads to
bet, say an input alphabet , and an output alphabet .
a transformation
Information processing consists of an input-output function that maps any input sequence from into an output
sequence from . The mapping may be probabilistic or Information is any type of pattern that inuences the fordeterministic. 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 example, DNA. The sequence of nucleotides is a pattern that
29.3 As sensory input
inuences 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 inexample, 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,
information as a dierence
time (and perhaps another place). Some information is Gregory Bateson denes[10]
that
makes
a
dierence.
important because of association with other information
but eventually there must be a connection to a causal in- If, however, the premise of inuence implies that input. 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 specic context associated with
tems and amplied by energy inputs before they can be this interpretation may cause the transformation of the infunctional to the organism or system. For example, light formation into knowledge. Complex denitions of both
is often a causal input to plants but provides information information and knowledge make such semantic and
to animals. The colored light reected from a ower is logical analysis dicult, but the condition of transfortoo weak to do much photosynthetic work but the visual mation is an important point in the study of informasystem of the bee detects it and the bees nervous system tion as it relates to knowledge, especially in the business

172

CHAPTER 29. INFORMATION

discipline of knowledge management. In this practice,


tools and processes are used to assist a knowledge worker
in performing research and making decisions, including
steps such as:

cosmic void can be conceived of as the absence of material information in space (setting aside the virtual particles
that pop in and out of existence due to quantum uctuations, as well as the gravitational eld and the dark energy). Nothingness can be understood then as that within
reviewing information in order to eectively derive which no space, time, energy, matter, or any other type
of information could exist, which would be possible if
value and meaning
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 Maxwells demon
many possible contexts
thought experiment. In this experiment, a direct relationship between information and another physical property,
deriving new knowledge from the information
entropy, is demonstrated. A consequence is that it is im making decisions or recommendations from the re- possible to destroy information without increasing the ensulting knowledge.
tropy of a system; in practical terms this often means generating 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
thermal
energy released by an AND gate is higher than
[11]
The Danish Dictionary of Information Terms
argues
for
the
NOT
gate (because information is destroyed in an
that information only provides an answer to a posed quesAND
gate
and
simply converted in a NOT gate). Physical
tion. Whether the answer provides knowledge depends
information
is
of particular importance in the theory of
on the informed person. So a generalized denition of
quantum
computers.
the concept should be: Information = An answer to a
specic question.

In Thermodynamics, information is any kind of event that


aects
the state of a dynamic system that can interpret the
When Marshall McLuhan speaks of media and their efinformation.
fects on human cultures, he refers to the structure of
artifacts that in turn shape our behaviors and mindsets.
Also, pheromones are often said to be information in
29.7 The application of informathis sense.

tion study
29.6 As a property in physics
Main article: Physical information

The information cycle (addressed as a whole or


in its distinct components) is of great concern to
Information Technology, Information Systems, as well
as Information Science.
These elds deal with
those processes and techniques pertaining to information capture (through sensors) and generation (through
computation, formulation or composition), processing
(including encoding, encryption, compression, packaging), transmission (including all telecommunication
methods), presentation (including visualization / display
methods), storage (such as magnetic or optical, including
holographic methods), etc. Information does not cease to
exist, it may only get scrambled beyond any possibility of
retrieval (within Information Theory, see lossy compression; in Physics, the black hole information paradox gets
solved with the aid of the holographic principle).

Information has a well-dened meaning in physics. In


2003 J. D. Bekenstein claimed that a growing trend in
physics was to dene the physical world as being made
up of information itself (and thus information is dened
in this way) (see Digital physics). Examples of this include the phenomenon of quantum entanglement, where
particles can interact without reference to their separation
or the speed of light. Material information itself cannot
travel faster than light even if that information is transmitted indirectly. This could lead to all attempts at physically
observing a particle with an entangled relationship to
another being slowed down, even though the particles are
not connected in any other way other than by the infor- Information Visualization (shortened as InfoVis) demation 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 elds, through biological entities and consciousness,
to the multiverse itself, could be described by mathematical patterns of information. By the same token, the

Partial map of the Internet, with nodes representing


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
The international standard on records management, ISO
object with symmetry breaking nucleus
15489, denes records as information created, received,
Visual representation of a strange attractor, with and maintained as evidence and information by an organization or person, in pursuance of legal obligations or in
converted data of its fractal structure
the transaction of business. The International CommitInformation Security (shortened as InfoSec) is the on- tee on Archives (ICA) Committee on electronic records
going process of exercising due diligence to protect in- dened a record as, a specic piece of recorded inforformation, and information systems, from unauthorized mation generated, collected or received in the initiation,
access, use, disclosure, destruction, modication, disrup- conduct or completion of an activity and that comprises
tion or distribution, through algorithms and procedures sucient content, context and structure to provide proof
focused on monitoring and detection, as well as incident or evidence of that activity.
response and repair.
Information Analysis is the process of inspecting, transforming, and modelling information, by converting
raw data into actionable knowledge, in support of the
decision-making process.
Information Quality (InfoQ) is the potential of a dataset
to achieve a specic (scientic or practical) goal using a
given empirical analysis method..
Information Communication represents the convergence
of informatics, telecommunication and audio-visual media & content.

Records may be maintained to retain corporate memory of the organization or to meet legal, scal or
accountability requirements imposed on the organization. Willis (2005) expressed the view that sound
management of business records and information delivered "...six key requirements for good corporate governance...transparency; accountability; due process; compliance; meeting statutory and common law requirements; and security of personal and corporate information.

29.10 Semiotics
29.8 Technologically mediated information

Beynon-Davies[15][16] explains the multi-faceted concept


of information in terms of signs and signal-sign systems.
Signs themselves can be considered in terms of four interIt is estimated that the worlds technological capacity to dependent levels, layers or branches of semiotics: pragstore information grew from 2.6 (optimally compressed) matics, semantics, syntax, and empirics. These four layexabytes 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 communica2007.[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 worlds combined technological capacity to receive on the intentions of living agents underlying communicainformation 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 worlds combined eective 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
behaviour. Semantics can be considered as the study of
son per day in 2007.[14]
the link between symbols and their referents or concepts
particularly the way in which signs relate to human behavior.

29.9 As records

Syntax is concerned with the formalism used to represent


a message. Syntax as an area studies the form of communication in terms of the logic and grammar of sign systems. Syntax is devoted to the study of the form rather
than the content of signs and sign-systems.

Records are specialized forms of information. Essentially, records are information produced consciously or
as by-products of business activities or transactions and
retained because of their value. Primarily, their value is
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


communication. Empirics is devoted to the study of communication channels and their characteristics, e.g., sound,
light, electronic transmission etc..

Information entropy

Nielsen (2008) discusses the relationship between semiotics and information in relation to dictionaries. The concept of lexicographic information costs is introduced and
refers to the eorts users of dictionaries need to make in
order to, rst, nd the data sought and, secondly, understand the data so that they can generate information.

Information inequity

Communication normally exists within the context of


some social situation. The social situation sets the context for the intentions conveyed (pragmatics) and the form
in which communication takes place. In a communicative situation intentions are expressed through messages
which comprise collections of inter-related signs taken
from a language which is mutually understood by the
agents involved in the communication. Mutual understanding implies that agents involved understand the chosen language in terms of its agreed syntax (syntactics) and
semantics. The sender codes the message in the language
and sends the message as signals along some communication channel (empirics). The chosen communication
channel will have inherent properties which determine
outcomes such as the speed with which communication
can take place and over what distance.

Information overload

Informatics
Information geometry

Information infrastructure
Information management
Information mapping

Information processing
Information processor
Information sensitivity
Information superhighway
Information systems
Information theory
Information Quality (InfoQ)
Infosphere
Lexicographic information cost
Library science

29.11 See also


Abstraction
Accuracy and precision
Anti-information
Classied information
Complexity
Complex adaptive system
Complex system
Cybernetics
Data storage device#Recording medium
Exformation
Free Information Infrastructure
Freedom of information
Gregory Bateson
Information and communication technologies
Information architecture
Information broker
Information continuum

Philosophy of information
Prediction
Propaganda model
Quantum information
Receiver operating characteristic
Relevance
Satiscing
ShannonHartley theorem

29.12 Further reading


Alan Liu (2004). The Laws of Cool: Knowledge
Work and the Culture of Information, University of
Chicago Press
Bekenstein, Jacob D. (2003, August). Information
in the holographic universe. Scientic American.
Gleick, James (2011). The Information: A History,
a Theory, a Flood. Pantheon, New York, NY.
Shu-Kun Lin (2008). 'Gibbs Paradox and the Concepts of Information, Symmetry, Similarity and
Their Relationship', Entropy, 10 (1), 1-5. Available
online at Entropy journal website.

29.14. EXTERNAL LINKS

175

Luciano Floridi, (2005). 'Is Information Meaningful [10] Bateson, Gregory (1972). ^ Form, Substance, and Difference, in Steps to an Ecology of Mind. University of
Data?', Philosophy and Phenomenological Research,
Chicago Press. pp. 448466.
70 (2), pp. 351 370. Available online at PhilSci
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 Philos2010.606.html
ophy (Winter 2005 Edition), Edward N. Zalta (ed.).
[13] The Worlds Technological Capacity to Store, CommuAvailable online at Stanford University
Luciano Floridi, (2010). Information: A Very Short
Introduction, Oxford University Press, Oxford.
Sandro Nielsen: 'The Eect of Lexicographical Information Costs on Dictionary Making and Use',
Lexikos 18/2008, 170-189.
Stewart, Thomas, (2001). Wealth of Knowledge.
Doubleday, New York, NY, 379 p.
Young, Paul. The Nature of Information (1987).
Greenwood Publishing Group, Westport, Ct. ISBN
0-275-92698-2.

nicate, and Compute Information, Martin Hilbert and


Priscila Lpez (2011), Science (journal), 332(6025), 6065; free access to the article through here: martinhilbert.
net/WorldInfoCapacity.html

[14] video animation on The Worlds Technological Capacity


to Store, Communicate, and Compute Information from
1986 to 2010
[15] Beynon-Davies P. (2002). Information Systems: an introduction to informatics in Organisations. Palgrave, Basingstoke, UK. ISBN 0-333-96390-3
[16] Beynon-Davies P. (2009). Business Information Systems.
Palgrave, Basingstoke. ISBN 978-0-230-20368-6
[17] en.wikiversity.org/wiki/Semiotics

29.13 References
[1] http://www.merriam-webster.com/dictionary/
information
[2] A short overview is found in: Luciano Floridi (2010).
Information - A Very Short Introduction. Oxford University Press. ISBN 0-19-160954-4. The goal of this volume
is to provide an outline of what information is...
[3] Stephen B. Wicker, Saejoon Kim (2003). Fundamentals
of Codes, Graphs, and Iterative Decoding. Springer. pp.
1 . ISBN 1-4020-7264-3.
[4] Dusenbery, David B. (1992). Sensory Ecology. W.H.
Freeman., New York. ISBN 0-7167-2333-6.
[5] Vigo, R. (2011).
Representational information:
a new general notion and measure of information.
Information Sciences.
181: 48474859.
doi:10.1016/j.ins.2011.05.020.
[6] Vigo, R (2013). Complexity over Uncertainty in Generalized Representational Information Theory (GRIT): A
Structure-Sensitive General Theory of Information. Information. 4 (1): 130. doi:10.3390/info4010001.
[7] Vigo, R. (2014). Mathematical Principles of Human
Conceptual Behavior: The Structural Nature of Conceptual Representation and Processing. Scientic Psychology 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: Reconceptualizing information for cognitive and ecological
models (PDF). Journal of Ecological Anthropology. 3
(1): 413. doi:10.5038/2162-4593.3.1.1.

29.14 External links


Semantic Conceptions of Information Review by
Luciano Floridi for the Stanford Encyclopedia of
Philosophy
Principia Cybernetica entry on negentropy
Fisher Information, a New Paradigm for Science:
Introduction, Uncertainty principles, Wave equations, Ideas of Escher, Kant, Plato and Wheeler.
This essay is continually revised in the light of ongoing research.
How Much Information? 2003 an attempt to estimate how much new information is created each
year (study was produced by faculty and students at
the School of Information Management and Systems
at the University of California at Berkeley)
(Danish) Informationsordbogen.dk The Danish Dictionary of Information Terms / Informationsordbogen

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 association with its corporate oce 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 worlds largest association of
technical professionals with more than 400,000 members
in chapters around the world. Its objectives are the educational and technical advancement of electrical and electronic engineering, telecommunications, computer engineering and allied disciplines.

30.1 Name
IEEE stands for the Institute of Electrical and Electronics Engineers. The association is chartered under this
full legal name. IEEEs membership has long been composed of engineers and scientists. Allied professionals
who are members include computer scientists, software
developers, information technology professionals, physicists, and medical doctors, in addition to IEEEs electrical
and electronics engineering core. For this reason the organization no longer goes by the full name, except on legal
business documents, and is referred to simply as IEEE.
The IEEE is dedicated to advancing technological innovation and excellence. It has about 430,000 members in
about 160 countries, slightly less than half of whom reside
in the United States.[3][4]

30.2 History

The IEEE corporate oce is on the 17th oor of 3 Park Avenue


in New York City

tems. The IRE concerned mostly radio engineering, and


was formed from two smaller organizations, the Society
of Wireless and Telegraph Engineers and the Wireless Institute. With the rise of electronics in the 1930s, electronics engineers usually became members of the IRE, but the
applications of electron tube technology became so extensive that the technical boundaries dierentiating the
IRE and the AIEE became dicult to distinguish. After World War II, the two organizations became increasingly competitive, and in 1961, the leadership of both the
IRE and the AIEE resolved to consolidate the two organizations. The two organizations formally merged as the
IEEE on January 1, 1963.

The major interests of the AIEE were wire communications (telegraphy and telephony) and light and power sys- Notable presidents of IEEE and its founding organi176

30.4. PUBLICATIONS
zations include Elihu Thomson (AIEE, 18891890),
Alexander Graham Bell (AIEE, 18911892), Charles
Proteus Steinmetz (AIEE, 19011902), Robert H. Marriott (IRE, 1912), Lee De Forest (IRE, 1930), Frederick
E. Terman (IRE, 1941), William R. Hewlett (IRE, 1954),
Ernst Weber (IRE, 1959; IEEE, 1963), and Ivan Getting
(IEEE, 1978).

177
by various engineering societies as a formal repository
of topic articles, oral histories, rst-hand histories, Landmarks + Milestones and archival documents. The IEEE
History Center is annexed to Stevens University Hoboken, NJ.
In 2016, the IEEE acquired GlobalSpec, adding the provision of engineering data for a prot to its organizational
portfolio.[7]

30.3 Organization
30.4 Publications

The IEEE is incorporated under the Not-for-Prot Corporation Law of the state of New York.[5] It was formed
Main article: List of Institute of Electrical and Electronin 1963 by the merger of the Institute of Radio Engineers
ics Engineers publications
(IRE, founded 1912) and the American Institute of Electrical Engineers (AIEE, founded 1884).
IEEE produces over 30% of the worlds literature in the
IEEEs Constitution denes the purposes of the organielectrical and electronics engineering and computer scization as scientic and educational, directed toward the
ence elds, publishing well over 100 peer-reviewed jouradvancement of the theory and practice of Electrical,
nals.[8]
Electronics, Communications and Computer Engineering, as well as Computer Science, the allied branches The published content in these journals as well as the conof 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 lilisher of scientic journals and organizer of conferences, brary, IEEE Xplore, for subscription-based access and inworkshops, 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 technology and healthcare, information technology, information
30.5 Educational activities
assurance, telecommunications, consumer electronics,
transportation, aerospace, and nanotechnology. IEEE develops and participates in educational activities such as The IEEE provides learning opportunities within the enaccreditation 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 continuing education among IEEE members, the engineering
at the time of the 1963 merger.[6]
and scientic communities, and the general public.
IEEE has a dual complementary regional and technical
structure with organizational units based on geogra- IEEE oers 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]
and Continuing Education
naventura Section, IEEE South Africa Section ) and tech- Standards in 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 edurecommends policies and implements programs speci- cational courses designed for self-paced learning. Edcally intended to benet the members, the profession and ucation Partners, exclusive for IEEE members, oers
the public in the United States.
on-line degree programs, certications and courses at a
The IEEE includes 39 technical Societies, organized 10% discount. The Standards in Education website exaround specialized technical elds, with more than 300 plains what standards are and the importance of developing and using them. The site includes tutorial modlocal organizations that hold regular meetings.
ules and case illustrations to introduce the history of stanThe IEEE Standards Association is in charge of the stan- dards, the basic terminology, their applications and imdardization 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 intion to the Engineering and Technology History Wiki formation on standards. Currently, twenty-nine states
(ETHW) in 2015. The new ETHW is a cooperative eort in the United States require Professional Development

178

CHAPTER 30. INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS

Hours (PDH) to maintain a Professional Engineering license, encouraging engineers to seek Continuing Education Units (CEUs) for their participation in continuing
education programs. CEUs readily translate into Professional Development Hours (PDHs), with 1 CEU being equivalent to 10 PDHs. Countries outside the United
States, such as South Africa, similarly require continuing
professional development (CPD) credits, and it is anticipated that IEEE Expert Now courses will feature in the
CPD listing for South Africa.

802.11 Wireless Networking standard.

30.8 Membership
grades

and

member

Most IEEE members are electrical and electronics engineers, but the organizations wide scope of interests
has attracted people in other disciplines as well (e.g.,
[14]
IEEE also sponsors a website
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 818, 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 fulll 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 aliation:
visitors are able to search by state/province/territory,
country, degree eld, tuition ranges, room and board
Student Members: Student membership is availranges, size of student body, and location (rural, suburable for a reduced fee to those who are enrolled in
ban, or urban).
an accredited institution of higher education as unThrough the Student Activities Committee, IEEE facilitates partnership between student activities and all other
IEEE entities.[15]

30.6 IEEE Conferences


The Institute of Electrical and Electronics Engineers
sponsors more than 1,600 annual conferences and meetings worldwide. IEEE is also highly involved in the technical program development of numerous events including trade events, training workshops, job fairs, and other
programs.[16]

30.7 Standards and development


process
Main article: IEEE Standards Association
IEEE is one of the leading standards-making organizations in the world. IEEE performs its standards making and maintaining functions through the IEEE Standards Association (IEEE-SA). IEEE standards aect a
wide range of industries including: power and energy,
biomedical and healthcare, Information Technology (IT),
telecommunications, transportation, nanotechnology, information assurance, and many more. In 2013, IEEE had
over 900 active standards, with over 500 standards under
development. One of the more notable IEEE standards is
the IEEE 802 LAN/MAN group of standards which includes the IEEE 802.3 Ethernet standard and the IEEE

dergraduate or graduate students in technology or


engineering.
Graduate Student Members: Graduate Student
Membership is discounted but members at this level
have greater privileges than do Student Members.
Members: Ordinary or professional Membership
requires that the individual have graduated from a
technology or engineering program of an appropriately accredited institution of higher education or
have demonstrated professional competence in technology or engineering through at least six years of
professional work experience. An associate membership 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 requirements for full membership. Students and Associates have all the privileges of members, except
the right to vote and hold certain oces.
Society Aliates: Some IEEE Societies also allow
a person who is not an IEEE member to become a
Society Aliate of a particular Society within the
IEEE, which allows a limited form of participation
in the work of a particular IEEE Society.
Senior Members: Upon meeting certain requirements, a professional member can apply for Senior
Membership, which is the highest level of recognition that a professional member can directly apply
for. Applicants for Senior Member must have at
least three letters of recommendation from Senior,
Fellow, or Honorary members and fulll other rigorous requirements of education, achievement, remarkable contribution, and experience in the eld.

30.9. AWARDS

179

The Senior Members are a selected group, and certain IEEE ocer positions are available only to Senior (and Fellow) Members. Senior Membership is
also one of the requirements for those who are nominated and elevated to the grade IEEE Fellow, a distinctive honor.

IEEE Medal for Environmental and Safety Technologies

Fellow Members: The Fellow grade of membership is the highest level of membership, and cannot
be applied for directly by the member instead the
candidate must be nominated by others. This grade
of membership is conferred by the IEEE Board of
Directors in recognition of a high level of demonstrated extraordinary accomplishment.

IEEE Heinrich Hertz Medal (for electromagnetics)

Honorary Members: Individuals who are not


IEEE members but have demonstrated exceptional
contributions, such as being a recipient of an IEEE
Medal of Honor, may receive Honorary Membership
from the IEEE Board of Directors.

IEEE Jack S. Kilby Signal Processing Medal

Life Members , Life Senior Members and Life


Fellows: Members who have reached the age of
65 and whose number of years of membership plus
their age in years adds up to at least 100 are recognized as Life Members , Life Senior Members or Life
Fellows, as appropriate.

30.9 Awards
Through its awards program, the IEEE recognizes contributions that advance the elds of interest to the IEEE. For
nearly a century, the IEEE Awards Program has paid tribute to technical professionals whose exceptional achievements and outstanding contributions have made a lasting
impact on technology, society and the engineering profession.
Funds for the awards program, other than those provided
by corporate sponsors for some awards, are administered
by the IEEE Foundation.

IEEE Medal in Power Engineering


IEEE Richard W. Hamming Medal (for information
technology)

IEEE Jun-ichi Nishizawa Medal for materials and


device sciences
IEEE John von Neumann Medal (for computerrelated technology)

IEEE Dennis J. Picard Medal for Radar Technologies and Applications


IEEE Robert N. Noyce Medal (for microelectronics)
IEEE Medal for Innovations in Healthcare Technology
IEEE/RSE Wolfson James Clerk Maxwell Award
IEEE Centennial Medal

30.9.2 Technical eld awards


IEEE Biomedical Engineering Award
IEEE Cledo Brunetti Award (for nanotechnology
and miniaturization)
IEEE Claude E. Shannon Award in Information
Theory
IEEE Components, Packaging, and Manufacturing
Technologies Award
IEEE Control Systems Award
IEEE Electromagnetics Award

30.9.1

Medals

IEEE Medal of Honor

IEEE James L. Flanagan Speech and Audio Processing Award

IEEE Edison Medal

IEEE Andrew S. Grove Award (for solid-state devices)

IEEE Founders Medal (for leadership, planning, and


administration)

IEEE Herman Halperin Electric Transmission and


Distribution Award

IEEE James H. Mulligan, Jr. Education Medal

IEEE Masaru Ibuka Consumer Electronics Award

IEEE Alexander Graham Bell Medal (for communications engineering)

IEEE Innovation in Societal Infrastructure Award

IEEE Simon Ramo Medal (for systems engineering)


IEEE Medal for Engineering Excellence

IEEE Internet Award


IEEE Reynold B. Johnson Data Storage Device
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
IEEE Richard M. Emberson Award
industrial systems engineering)
IEEE Corporate Innovation Recognition
IEEE Joseph F. Keithley Award in Instrumentation
IEEE Ernst Weber Engineering Leadership Recogand Measurement
nition
IEEE Gustav Robert Kirchho Award (for
IEEE Honorary Membership
electronic circuits and systems)
IEEE Leon K. Kirchmayer Graduate Teaching
30.9.4
Award
IEEE Koji Kobayashi Computers and Communications Award

Prize paper awards

IEEE Donald G. Fink Prize Paper Award


IEEE W.R.G. Baker Award

IEEE William E. Newell Power Electronics Award


IEEE Daniel E. Noble Award (for emerging technologies)
IEEE Donald O. Pederson Award in Solid-State Circuits
IEEE Frederik Philips Award (for management of
research and development)
IEEE Photonics Award
IEEE Emanuel R. Piore Award (for information
processing systems in computer science)
IEEE Judith A. Resnik Award (for space engineering)
IEEE Robotics and Automation Award

30.9.5 Scholarships
IEEE Life Members Graduate Study Fellowship
in Electrical Engineering was established by the
IEEE in 2000. The fellowship is awarded annually
to a rst year, full-time graduate student obtaining
their masters for work in the area of electrical engineering, at an engineering school/program of recognized standing worldwide.[17]
IEEE Charles LeGeyt Fortescue Graduate
Scholarship was established by the IRE in 1939
to commemorate Charles Legeyt Fortescue's contributions to electrical engineering. The scholarship
is awarded for one year of full-time graduate work
obtaining their masters in electrical engineering an
ANE engineering school of recognized standing in
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 oers many student awards, competitions, and
other opportunities to get actively involved.
IEEE David Sarno Award (for electronics)
IEEE Charles Proteus Steinmetz Award (for
standardization)

Competitions

IEEE Marie Sklodowska-Curie Award (for nuclear


and plasma engineering)

IEEEmadC

IEEE Eric E. Sumner Award (for communications


technology)
IEEE Undergraduate Teaching Award
IEEE Nikola Tesla Award (for power technology)

IEEEXtreme Programming Competition

Student Branch Awards


Scholarships, Grants, and Fellowships

30.10 Societies

IEEE Kiyo Tomiyasu Award (for technologies hold- Various technical areas are addressed by IEEEs 39 societies, each one focused on a certain knowledge area. They
ing the promise of innovative applications)
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 Control Society

IEEE Broadcast Technology Society


IEEE Circuits and Systems Society

IEEE Technology and Engineering Management


Society

IEEE Communications Society

IEEE Vehicular Technology Society

IEEE Components, Packaging & Manufacturing


Technology Society
IEEE Computational Intelligence Society
IEEE Computer Society
IEEE Consumer Electronics Society
IEEE Control Systems Society
IEEE Dielectrics & Electrical Insulation Society
IEEE Education Society
IEEE Electromagnetic Compatibility Society
IEEE Electron Devices Society
IEEE Engineering in Medicine and Biology Society
IEEE Geoscience and Remote Sensing Society

30.11 Technical councils


IEEE technical councils are collaborations of several
IEEE societies on a broader knowledge area. There are
currently seven technical councils:[19][21]
IEEE Biometrics Council
IEEE Council on Electronic Design Automation
IEEE Nanotechnology Council
IEEE Sensors Council
IEEE Council on Superconductivity
IEEE Systems Council
IEEE Council on RFID (CRFID)

IEEE Industrial Electronics Society


IEEE Industry Applications Society

30.12 Technical committees

IEEE Information Theory Society


IEEE Instrumentation & Measurement Society
IEEE Intelligent Transportation Systems Society
IEEE Magnetics Society
IEEE Microwave Theory and Techniques Society
IEEE Nuclear and Plasma Sciences Society
IEEE Oceanic Engineering Society
IEEE Photonics Society

To allow a quick response to new innovations, IEEE


can also organize technical committees on top of their
societies and technical councils. There are currently two
such technical committees:[19]
IEEE Committee on Earth Observation (ICEO)

30.13 Organizational units


Technical Activities Board (TAB)

IEEE Power Electronics Society


IEEE Power & Energy Society
IEEE Product Safety Engineering Society
IEEE Professional Communication Society
IEEE Reliability Society
IEEE Robotics and Automation Society
IEEE Signal Processing Society
IEEE Society on Social Implications of Technology
IEEE Solid-State Circuits Society

30.14 IEEE Foundation


The IEEE Foundation is a charitable foundation established in 1973 to support and promote technology education, innovation and excellence.[22] It is incorporated separately from the IEEE, although it has a close relationship
to it. Members of the Board of Directors of the foundation are required to be active members of IEEE, and one
third of them must be current or former members of the
IEEE Board of Directors.
Initially, the IEEE Foundations role was to accept and
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


purpose, and the scope was broadened. In addition to soliciting and administering unrestricted funds, the foundation also administers donor-designated funds supporting
particular educational, humanitarian, historical preservation, and peer recognition programs of the IEEE.[22] As
of the end of 2014, the foundations total assets were
nearly $45 million, split equally between unrestricted and
donor-designated funds.[23]

[13] IEEE IEEE Continuing Education Units

30.15 See also

[18] Charles LeGeyt Fortescue Graduate Scholarship. Retrieved on 2010-01-23.

Glossary of electrical and electronics engineering


Certied Software Development Professional
(CSDP) Program of the IEEE Computer Society

[14] Welcome to TryEngineering.org


[15] http://www.ieee.org/membership_services/membership/
students/activities_committee.html
[16] IEEE Conferences & Events. www.ieee.org. Retrieved
2015-10-22.
[17] IEEE Life Member Graduate Study Fellowship.
trieved on 2010-01-23.

[19] IEEE Societies & Communities.


November 7, 2010.

Re-

IEEE. Retrieved

[20] IEEE Society Memberships. IEEE. Retrieved November 7, 2010.

Eta Kappa Nu, the electrical and computer engineering honor society of the IEEE

[21] IEEE Technical Councils. IEEE. Retrieved November


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.16 Notes and references


[1] IEEE Technical Activities Board Operations Manual
(PDF). IEEE. Retrieved December 7, 2010., section 1.3
Technical activities objectives
[2] http://www.ieee.org/about/ieee_history.html
[3] IEEE at a Glance > IEEE Quick Facts. IEEE. December 31, 2010. Retrieved August 14, 2013.

30.17 External links


Ocial IEEE website
Engineering and Technology History Wiki a
Mediawiki-based website containing information
about the history of various engineering societies,
including IEEE, its members, their professions, and
their technologies.
IEEE Xplore the IEEE Xplore Digital Library,
with over 2.6 million technical documents available
online for purchase.

[4] IEEE 2013 Annual Report. IEEE. March 2014. Retrieved March 24, 2014.

IEEE.tv a video content website operated by the


IEEE.

[5] IEEE Technical Activities Board Operations Manual


(PDF). IEEE. Retrieved November 10, 2010., section 1.1
IEEE Incorporation

IEEE Fellows Directory A comprehensive online


directory of IEEE Fellows.

[6] IEEE Master Brand and Logos. www.ieee.org. Retrieved 2011-01-28.

IEEE eLearning Library an online library of more


than 200 self-study multimedia short courses and tutorials in technical elds of interest to the IEEE.

[7] IEEE Acquires GlobalSpec and the Engineering360 Platform from IHS to Create Powerful New Resource for the
Global Engineering Community. IEEE. April 29, 2016.
Retrieved 2016-04-29.
[8] About IEEE
[9] IEEEs 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 scenarios between individual agents in multi-agent systems.
FIPA denes 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 (disambiguation).
The International Organization for Standardization
(ISO) is an international standard-setting body composed
of representatives from various national standards organizations.
Founded on 23 February 1947, the organization promotes worldwide proprietary, industrial and commercial
standards. It is headquartered in Geneva, Switzerland,[4]
and as of 2015 works in 196 countries.[5]
It was one of the rst organizations granted general consultative status with the United Nations Economic and Social Council.

32.2 Name and abbreviations


The three ocial languages of the ISO are English,
French, and Russian.[3] The name of the organization
in French is Organisation internationale de normalisation, and in Russian,
. According to the ISO, as its name
in dierent languages would have dierent abbreviations
(IOS in English, OIN in French, etc.), the organization adopted ISO as its abbreviated name in reference
to the Greek word isos (, meaning equal).[6] However, during the founding meetings of the new organization, this Greek word was not invoked, so this explanation
may have been imagined later.[7]
Both the name ISO and the logo are registered trademarks, 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 worlds 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 ISOs predeceseverything 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 standards help businesses increase productivity while
minimizing errors and waste. By enabling products from
dierent markets to be directly compared, they facilitate companies in entering new markets and assist in the
development of global trade on a fair basis. The standards also serve to safeguard consumers and the end-users
of products and services, ensuring that certied products
conform to the minimum standards set internationally.[4]

The organization today known as ISO began in 1926 as


the International Federation of the National Standardizing Associations (ISA). It was suspended in 1942[9] during World War II, but after the war ISA was approached
by the recently formed United Nations Standards Coordinating Committee (UNSCC) with a proposal to form
a new global standards body. In October 1946, ISA and
UNSCC delegates from 25 countries met in London and
agreed to join forces to create the new International Or-

184

32.6. FINANCING

185

ganization for Standardization; the new organization ofcially began operations in February 1947.[10]

32.4 Structure
ISO is a voluntary organization whose members are recognized authorities on standards, each one representing
one country. Members meet annually at a General Assembly to discuss ISOs 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 Secretariats annual budget.
The Technical Management Board is responsible for
over 250 technical committees, who develop the ISO
standards.[11][13][14][15]

32.4.1

IEC joint committees

ISO has formed joint committees with the International


Electrotechnical Commission (IEC) to develop standards
and terminology in the areas of electrical, electronic and
related technologies.
ISO/IEC JTC 1
Information technology
Main article: ISO/IEC JTC 1
ISO/IEC Joint Technical Committee 1 (JTC 1) was created in 1987 to "[d]evelop, maintain, promote and facilitate IT standards.[16]

Member bodies are national bodies considered the


most representative standards body in each country.
These are the only members of ISO that have voting
rights.
Correspondent members are countries that do not
have their own standards organization. These members are informed about ISOs work, but do not participate in standards promulgation.
Subscriber members are countries with small
economies. They pay reduced membership fees,
but can follow the development of standards.
Participating members are called P members, as opposed to observing members, who are called O members.

32.6 Financing
ISO is funded by a combination of:[18]

ISO/IEC JTC 2
Joint Project Committee Energy eciency and renewable energy sources Common terminology
ISO/IEC Joint Technical Committee 2 (JTC 2) was
created in 2009 for the purpose of "[s]tandardization
in the eld of energy eciency and renewable energy
sources.[17]

32.5 Membership

Organizations that manage the specic projects or


loan experts to participate in the technical work.
Subscriptions from member bodies. These subscriptions are in proportion to each countrys gross national product and trade gures.
Sale of standards.

32.7 International Standards and


other publications

ISO has 162 national members,[2] out of the 206 total See also: List of International Organization for Stancountries in the world.
dardization standards
ISO has three membership categories:[2]

186

CHAPTER 32. INTERNATIONAL ORGANIZATION FOR STANDARDIZATION

ISOs main products are international standards. ISO also


publishes technical reports, technical specications, publicly available specications, technical corrigenda, and
guides.[19][20]
International standards These are designated using
the format ISO[/IEC] [/ASTM] [IS] nnnnn[p]:[yyyy] Title, where nnnnn is the number of the
standard, p is an optional part number, yyyy is the
year published, and Title describes the subject.
IEC for International Electrotechnical Commission
is included if the standard results from the work
of ISO/IEC JTC1 (the ISO/IEC Joint Technical
Committee). ASTM (American Society for Testing
and Materials) is used for standards developed in
cooperation with ASTM International. yyyy and
IS are not used for an incomplete or unpublished
standard and may under some circumstances be left
o the title of a published work.
Technical reports These are issued when a technical
committee or subcommittee has collected data of a
dierent kind from that normally published as an International Standard,[19] such as references and explanations. The naming conventions for these are
the same as for standards, except TR prepended instead of IS in the reports name.
For example:
ISO/IEC TR 17799:2000 Code of Practice for Information Security Management
ISO/TR 19033:2000 Technical product documentation Metadata for construction documentation
Technical and publicly available specications
Technical specications may be produced when
the subject in question is still under development
or where for any other reason there is the future
but not immediate possibility of an agreement to
publish an International Standard. A publicly
available specication is usually an intermediate
specication, published prior to the development
of a full International Standard, or, in IEC may be
a 'dual logo' publication published in collaboration
with an external organization.[19] By convention,
both types of specication are named in a manner
similar to the organizations technical reports.
For example:

to existing standards due to minor technical aws,


usability improvements, or limited-applicability extensions. They are generally issued with the expectation that the aected standard will be updated or
withdrawn at its next scheduled review.[19]
ISO guides
These are meta-standards covering matters related to international standardization.[19] They are named using the
format ISO[/IEC] Guide N:yyyy: Title.
For example:
ISO/IEC Guide 2:2004 Standardization and related
activities General vocabulary
ISO/IEC Guide 65:1996 General requirements for
bodies operating product certication
A standard published by ISO/IEC is the last stage
of a long process that commonly starts with the proposal of new work within a committee. Here are
some abbreviations used for marking a standard with its
status:[21][22][23][24][25][26][27]
PWI Preliminary Work Item
NP or NWIP New Proposal / New Work Item Proposal (e.g., ISO/IEC NP 23007)
AWI Approved new Work Item (e.g., ISO/IEC
AWI 15444-14)
WD Working Draft (e.g., ISO/IEC WD 27032)
CD Committee Draft (e.g., ISO/IEC CD 230005)
FCD Final Committee Draft (e.g., ISO/IEC FCD
23000-12)
DIS Draft International Standard (e.g., ISO/IEC
DIS 14297)
FDIS Final Draft International Standard (e.g.,
ISO/IEC FDIS 27003)
PRF Proof of a new International Standard (e.g.,
ISO/IEC PRF 18018)
IS International Standard (e.g., ISO/IEC 138181:2007)

ISO/TS 16952-1:2006 Technical product documentation Reference designation system Part 1:


Abbreviations
used
for
General application rules
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 AWI Amd Approved new Work Item Amendment
nical corrigenda (where corrigenda is the plu(e.g., ISO/IEC 14492:2001/AWI Amd 4)
ral of corrigendum). These are amendments made

32.7. INTERNATIONAL STANDARDS AND OTHER PUBLICATIONS

187

WD Amd Working Draft Amendment (e.g., ISO


11092:1993/WD Amd 1)

The TC/SC may set up working groups (WG) of experts


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
It is possible to omit certain stages, if there is a docu13818-1:2007/CD Amd 6)
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
the so-called Fast-track procedure. In this procedure a
14496-14:2003/FPDAmd 1)
document is submitted directly for approval as a draft InFDAM (FDAmd) Final Draft Amendment (e.g., ternational Standard (DIS) to the ISO member bodies or
ISO/IEC 13818-1:2007/FDAmd 4)
as a nal draft International Standard (FDIS) if the document 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.,


1:2007/Amd 1:2007)

ISO/IEC 13818-

Other abbreviations:[25][26][28][29]
TR Technical Report (e.g., ISO/IEC TR
19791:2006)
DTR Draft Technical Report (e.g., ISO/IEC DTR
19791)
TS Technical Specication (e.g.,
16949:2009)

ISO/TS

DTS Draft Technical Specication (e.g., ISO/DTS


11602-1)
PAS Publicly Available Specication
TTA Technology Trends Assessment (e.g.,
ISO/TTA 1:1994)
IWA International Workshop Agreement (e.g.,
IWA 1:2005)

The rst stepa proposal of work (New Proposal)


is approved at the relevant subcommittee or technical committee (e.g., SC29 and JTC1 respectively in
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
draft. When the scope of a new work is suciently claried, some of the working groups (e.g., MPEG) usually
make open request for proposalsknown as a call for
proposals. The rst document that is produced for example for audio and video coding standards is called a verication model (VM) (previously also called a simulation and test model). When a sucient condence in the
stability of the standard under development is reached, a
working draft (WD) is produced. This is in the form of
a standard but is kept internal to working group for revision. When a working draft is suciently solid and the
working group is satised that it has developed the best
technical solution to the problem being addressed, it becomes committee draft (CD). If it is required, it is then
sent to the P-members of the TC/SC (national bodies) for
ballot.

The CD becomes nal committee draft (FCD) if the


Cor Technical Corrigendum (e.g., ISO/IEC number of positive votes is above the quorum. Successive committee drafts may be considered until consensus
13818-1:2007/Cor 1:2008)
is reached on the technical content. When it is reached,
Guide a guidance to technical committees for the the text is nalized 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 ve
International Standards are developed by ISO technical months. It is approved for submission as a nal draft Incommittees (TC) and subcommittees (SC) by a process ternational Standard (FDIS) if a two-thirds majority of
the P-members of the TC/SC are in favour and not more
with six steps:[23][30]
than one-quarter of the total number of votes cast are negative. ISO will then hold a ballot with National Bodies
Stage 1: Proposal stage
where no technical changes are allowed (yes/no ballot),
within a period of two months. It is approved as an In Stage 2: Preparatory stage
ternational Standard (IS) if a two-thirds majority of the
P-members of the TC/SC is in favour and not more than
Stage 3: Committee stage
one-quarter of the total number of votes cast are nega Stage 4: Enquiry stage
tive. After approval, only minor editorial changes are introduced into the nal text. The nal text is sent to the
Stage 5: Approval stage
ISO Central Secretariat, which publishes it as the International Standard.[21][23]
Stage 6: Publication stage

188

CHAPTER 32. INTERNATIONAL ORGANIZATION FOR STANDARDIZATION

32.8 Products named after ISO

of Oce Open XML process by saying I think it devalues the condence people have in the standards setThe 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
had not participated in ISO and stacked technical comSome examples of this are:
mittees with Microsoft employees, solution providers and
resellers sympathetic to Oce Open XML.
Many CD images end in the le extension "ISO" to
signify that they are using the ISO 9660 standard
When you have a process built on trust and
le system as opposed to another le systemhence
when
that trust is abused, ISO should halt the
CD images are commonly referred to as ISOs.
process...
ISO is an engineering old boys club
Virtually all computers with CD-ROM drives that
and
these
things
are boring so you have to have
can read CDs use this standard. Some DVD-ROMs
a
lot
of
passion

then suddenly you have an


also use ISO 9660 le systems.
investment of a lot of money and lobbying and
you get articial results. The process is not
Photographic lms sensitivity to light (its "lm
set up to deal with intensive corporate lobbying
speed") is described by ISO 6, ISO 2240 and ISO
and so you end up with something being a stan5800. Hence, the lms speed is often referred to as
dard that is not clear.[36]
by its ISO number.
As it was originally dened in ISO 518, the ash
hot shoe found on cameras is often called the ISO
shoe.

32.10 See also


32.11 Notes and references

32.9 Criticism
With the exception of a small number of isolated
standards,[32] ISO standards are normally not available
free of charge, but for a purchase fee,[33] which has been
seen by some as too expensive for small open source
projects.[34]
The ISO/IEC JTC1 fast-track procedures (Fast-track as
used by OOXML and PAS as used by OpenDocument)
have garnered criticism in relation to the standardization
of Oce Open XML (ISO/IEC 29500). Martin Bryan,
outgoing Convenor of ISO/IEC JTC1/SC34 WG1, is
quoted as saying:
I would recommend my successor that it is
perhaps time to pass WG1s outstanding standards over to OASIS, where they can get approval in less than a year and then do a PAS
submission to ISO, which will get a lot more attention and be approved much faster than standards currently can be within WG1.

[1] The three ocial full names of the ISO can be found at the
beginning of the foreword sections of the PDF document:
ISO/IEC Guide 2:2004 Standardization and related activities General vocabulary (PDF). Archived (PDF)
from the original on 21 July 2011.
[2] ISO members. International Organization for Standardization. Archived from the original on 9 February 2015.
[3] How to use the ISO Catalogue. ISO.org. Archived from
the original on 4 October 2007.
[4] About ISO. ISO. Archived from the original on 4 October 2007.
[5] The number of membre working countries an be found on
the rst page of the report. Annual Report 2013 (PDF).
ISO. Retrieved 18 June 2014.
[6] About ISO - Our name. ISO. Archived from the original
on 19 September 2012.
[7] Friendship among equals (PDF). ISO. (page 20)
[8] ISO name and logo. ISO. Archived from the original on
19 September 2012.

The disparity of rules for PAS, Fast-Track


and ISO committee generated standards is fast
making ISO a laughing stock in IT circles. The
days of open standards development are fast
disappearing. Instead we are getting 'standardization by corporation'.[35]

[10] Friendship among equals - Recollections from ISOs rst


fty years (PDF), International Organization for Standardization, 1997, pp. 1518, ISBN 92-67-10260-5,
archived (PDF) from the original on 26 October 2012

Computer security entrepreneur and Ubuntu investor,


Mark Shuttleworth, commented on the Standardization

[11] Structure and governance. International Organization


for Standardization. Archived from the original on 19
September 2012.

[9] A Brief History of ISO. University of Pittsburgh.

32.12. FURTHER READING

[12] Council. International Organization for Standardization. Archived from the original on 3 November 2012.
[13] Technical committees. International Organization for
Standardization. Archived from the original on 19
September 2012.
[14] Who develops ISO standards?". International Organization for Standardization. Archived from the original on 19
September 2012.
[15] Governance of technical work. International Organization for Standardization. Archived from the original on 19
September 2012.
[16] ISO/IEC JTC 1. International Organization for Standardization. Archived from the original on 15 December
2011.
[17] ISO/IEC JPC 2 Joint Project Committee - Energy eciency and renewable energy sources - Common terminology. International Organization for Standardization.
Archived from the original on 6 October 2012.
[18] General information on ISO. ISO. Archived from the
original on 5 October 2007.
[19] The ISO directives are published in two distinct parts:
ISO/IEC Directives, Part 1: Procedures for the
technical work (PDF). ISO/IEC. 2012. Archived
(PDF) from the original on 13 June 2012.
ISO/IEC Directives, Part 2: Rules for the structure
and drafting of International Standards (PDF).
ISO/IEC. 2011. Archived (PDF) from the original
on 16 October 2011.
[20] ISO. ISO/IEC Directives and ISO supplement.
Archived from the original on 16 May 2008.
[21] About MPEG. chiariglione.org. Archived from the
original on 21 February 2010.
[22] ISO. International harmonized stage codes. Archived
from the original on 4 October 2007.
[23] ISO. Stages of the development of International Standards. Archived from the original on 12 August 2007.
[24] The ISO27k FAQ - ISO/IEC acronyms and committees.
IsecT Ltd. Archived from the original on 24 November
2005.
[25] ISO (2007). ISO/IEC Directives Supplement Procedures specic to ISO (PDF). Archived (PDF) from the
original on 12 January 2012.
[26] ISO (2007). List of abbreviations used throughout ISO
Online. Archived from the original on 12 August 2007.
[27] US Tag Committee Handbook (DOC). March 2008.
[28] ISO/IEC JTC1 (2 November 2009), Letter Ballot on the
JTC 1 Standing Document on Technical Specications and
Technical Reports (PDF)
[29] ISO. ISO deliverables. Archived from the original on
12 August 2007.

189

[30] ISO (2008), ISO/IEC Directives, Part 1 - Procedures for the


technical work, Sixth edition, 2008 (PDF), archived (PDF)
from the original on 14 July 2010
[31] ISO, IEC (5 November 2009). ISO/IEC JTC 1/SC 29,
SC 29/WG 11 Structure (ISO/IEC JTC 1/SC 29/WG 11 Coding of Moving Pictures and Audio)". Archived from
the original on 28 January 2001.
[32] Freely Available Standards. ISO. 1 February 2011.
[33] Shopping FAQs. ISO. Archived from the original on 5
October 2007.
[34] Jellie, Rick (1 August 2007). Where to get ISO Standards on the Internet free. oreillynet.com. Archived
from the original on 24 November 2007. The lack of free
online availability has eectively made ISO standard irrelevant to the (home/hacker section of the) Open Source
community
[35] Report on WG1 activity for December 2007 Meeting
of ISO/IEC JTC1/SC34/WG1 in Kyoto. iso/jtc1 sc34.
Archived from the original on 12 August 2007.
[36] Ubuntus Shuttleworth blames ISO for OOXMLs win.
ZDNet.com. 1 April 2008. Archived from the original on
4 April 2008.

32.12 Further reading


JoAnne Yates and Craig N. Murphy, Coordinating
International Standards: The Formation of the
ISO (PDF). Archived (PDF) from the original on
22 September 2010. MIT Innovations and Entrepreneurship Seminar Series, Fall 2006.
Kuert, Willy (1997). Friendship Among Equals
- Recollections from ISOs rst fty years (PDF).
ISO. Archived (PDF) from the original on 26 October 2012.

32.13 External links


Ocial website
Publicly Available Standards, with free access
to a small subset of the standards.
Advanced search for standards and/or projects
Concept Database, a terminological database
of ISO standards.
ISO/IEC JTC1
Certication Bodies TRA Certication
Personnel Certication

Chapter 33

International Telecommunication Union


ITU redirects here. For other uses, see ITU (disambiguation).
For the hospital department, see Intensive care unit.
The International Telecommunication Union (ITU;

ITU also organizes worldwide and regional exhibitions


and forums, such as ITU TELECOM WORLD, bringing
together representatives of government and the telecommunications and ICT industry to exchange ideas, knowledge 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 organization since its inception. Its membership includes 193
Member States and around 700 public and private sector
companies as well as international and regional telecommunication entities, known as Sector Members and Associates, which undertake most of the work of each
Sector.[3]

33.1 History
Monument in Bern, Switzerland. The text reads: Union Tlgraphique Internationale fonde Paris en 1865 sur l'initiative
du gouvernement franais. rig par dcision de l'Union Tlgraphique prise la confrence internationale de Lisbonne en
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.)

French: Union Internationale des Tlcommunications),


originally the International Telegraph Union (French:
Union Tlgraphique Internationale), is a specialized
agency of the United Nations (UN) that is responsible for
issues that concern information and communication technologies.[1]

ITU was formed in 1865 at the International Telegraph Convention; this makes it one of the oldest
intergovernmental organizations in the world.[4][5] ITU
became a United Nations specialized agency in 1947.[5]

33.2 ITU sectors


The ITU comprises three sectors, each managing a different aspect of the matters handled by the Union, as
well as ITU Telecom.[6] The sectors were created during the restructuring of ITU at its 1992 Plenipotentiary
Conference.[7]

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 assignCCIR (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 ITUstandards. The ITU is active in areas including broadR.
band Internet, latest-generation wireless technologies,
aeronautical and maritime navigation, radio astronomy, Standardization (ITU-T) Standardization was the original purpose of ITU since its inception. Established
satellite-based meteorology, convergence in xed-mobile
in 1956 as the International Telephone and Telephone, Internet access, data, voice, TV broadcasting, and
next-generation networks.
graph Consultative Committee or CCITT (from its
190

33.4. LEADERSHIP

191

French name Comit consultatif international tlphonique et tlgraphique), 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 aordable
access to information and communication technologies (ICT).
ITU Telecom ITU Telecom organizes major events for
the worlds ICT community.
A permanent General Secretariat, headed by the Secretary General, manages the day-to-day work of the Union International Telecommunication Union anniversary 150
years. Post of Azerbaijan, 2015.
and its sectors.

33.3 Legal framework of ITU

the Constitution and Convention, the consolidated basic


texts include the Optional Protocol on the settlement of
disputes, the Decisions, Resolutions and Recommendations in force, as well as the General Rules of Conferences, 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.

International Telecommunication Union 100th anniversary.


U.S. stamp, 1965.

On 23 October 2014 Houlin Zhao was elected 19th


Secretary-General of the ITU at the Plenipotentiary Conference in Busan, Republic of Korea. His four-year mandate started on 1 January 2015, and he was formally inaugurated on 15 January 2015.[10]

33.5 Directors and


General of ITU

Secretaries-

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
of the ITU was the 1865 International Telegraph Convention, which has since been amended several times and
is now entitled the Constitution and Convention of the
International Telecommunication Union. In addition to

International Telecommunication Union member states

Membership of ITU is open to governments, which may


join the Union as Member States, as well as to private organizations like carriers, equipment manufactur-

192

CHAPTER 33. INTERNATIONAL TELECOMMUNICATION UNION

ers, funding bodies, research and development organizations and international and regional telecommunication
organizations, which may join ITU as non-voting Sector
Members.[11]

(WCIT-12) in Dubai.
WCIT-12 was a treatylevel conference to address International Telecommunications Regulations, the international rules for
telecommunications, including international taris.[17]
the Regulations
There are 193 Member States of the ITU, which are all The previous conference to update [18]
(ITRs)
was
held
in
Melbourne
in
1988.
[12]
UN member states, plus Vatican City.
The most recent 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 blockbership by the Peoples Republic of China, but never- ing of information disseminated via the internet and cretheless received a country code, being listed as Tai- ate a global regime of monitoring internet communicawan, China.[14] Palestine was admitted as an observer tions, including the demand that those who send and receive information identify themselves. It would also allow
in 2010.[15]
governments to shut down the internet if there is the belief that it may interfere in the internal aairs of other
states or that information of a sensitive nature might be
33.6.1 Regional groupings
shared.[20]
Member states of the ITU are organized into six regional Telecommunications ministers from 193 countries atgroups:
tended the conference in Dubai.[20]
Asia-Pacic Telecommunity (APT)
Arab Spectrum Management Group (ASMG)

33.8.1 Changes to international telecommunication 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
infancy.[21] In 1988, telecommunications operated under
cations Administrations (CEPT)
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 addresses and Domain Names. Some outside the United
Regional Commonwealth in the Field of CommuStates believe that the United States exerts too much innications (RCC - representing former Soviet reuence over the governance of the Internet.[22]
publics)

33.7 World Summit on the Information Society


Main article: World Summit on the Information Society
The ITU was one of the UN agencies responsible for
convening the World Summit on the Information Society
(WSIS), along with UNESCO, UNCTAD and UNDP.[16]
The Summit was held as two conferences in 2003 and
2005 in Geneva and Tunis, respectively, with the aim of
bridging the digital divide.

33.8 World Conference on International Telecommunications


2012 (WCIT-12)

33.8.2 Proposed changes to the treaty and


concerns
Current proposals look to take into account the prevalence of data communications. Proposals under consideration would establish regulatory oversight by the UN
over security, fraud, trac accounting as well as trac
ow, management of Internet Domain Names and IP addresses, and other aspects of the Internet that are currently governed either by community-based approaches
such as Regional Internet Registries, ICANN, or largely
national regulatory frameworks.[23] The move by the ITU
and some countries has alarmed many within the United
States and within the Internet community.[24][25] Indeed,
some European telecommunication services have proposed a so-called sender pays model that would require
sources of Internet trac to pay destinations, similar to
the way funds are transferred between countries using the
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


On 22 November 2012, the European Parliament passed
a resolution urging member states to prevent ITU WCIT12 activity that would negatively impact the internet, its
architecture, operations, content and security, business
relations, internet governance and the free ow of information online.[29] The resolution asserted that the ITU
[...] is not the appropriate body to assert regulatory authority over the internet.[30]

193

33.9 See also

On 5 December 2012, the lower chamber of the United


States Congress passed a resolution opposing U.N. governance of the Internet by a rare unanimous 3970 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 government control over the Internet ..., and stated that the International Telecommunications Union, Geneva
policy of the United States is "... to promote a global Internet free from government control and preserve and advance 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
Regulations was signed by 89 of the 152 countries. Countries that did not sign included the United States, Japan,
Canada, Germany, New Zealand, India and the United
Kingdom. The Head of the U.S. Delegation, Terry
Kramer, said We cannot support a treaty that is not supportive of the multistakeholder model of Internet governance. [32][33][34] The disagreement appeared to be
over some language in the revised ITRs referring to ITU
roles in addressing unsolicited bulk communications, network security, and a resolution on Internet governance
that called for government participation in Internet topics
at various ITU forums.[35] Despite the signicant number countries not signing, the ITU organisation came out
with a press release: "New global telecoms treaty agreed
in Dubai".
Bulleted list item

33.8.3

WCIT-12 conference participation

The conference itself was managed by the International


Telecommunication Union (ITU). While certain parts of
civil society and industry were able to advise and observe,
active participation was restricted to member states.[36]
The Electronic Frontier Foundation expressed concern
at this, calling for a more transparent multi-stakeholder
process.[37] Some leaked contributions can be found on
the wcitleaks.org web site. Google-aliated researchers
have suggested that the ITU should completely reform its
processes to align itself with the openness and participation of other multistakeholder organizations concerned
with the Internet.[38]

Internet Governance Forum


ICANN
American Registry for Internet Numbers (ARIN)
RIPE
AfriNIC
Latin America and Caribbean Network Information
Centre (LACNIC)
Internet Society
H.331
ITU Radiocommunication Sector (ITU-R)
ITU Telecommunication Development Sector (ITUD)
ITU Telecommunication Standardization Sector
(ITU-T)
ITU-R Recommendations
ITU-T Recommendations
X.509
World Information Society Day
Working Group on Internet Governance (WGIG)
Child Online Protection (COP)

194

CHAPTER 33. INTERNATIONAL TELECOMMUNICATION UNION

33.10 References
[1] International Telecommunication Union
[2] UNDG Members. Undg.org. Retrieved 15 May 2012.
[3] About ITU. International Telecommunication Union.
Retrieved 2011-03-20.
[4] Norman A. Graham; Robert S. Jordan (22 October 2013).
The International Civil Service: Changing Role and Concepts. Elsevier. p. 105. ISBN 978-1-4831-4799-4.
[5] Carl Malamud (1992). Exploring the Internet: A Technical
Travelogue. Carl Malamud. p. 384. ISBN 978-0-13296898-0.
[6] Sector Members, Associates and Academia. ITU. Retrieved 15 May 2014.
[7] Deutsches Institut fr Normung (1998). An Introduction
to Standards and Standardization. Beuth Verlag. p. 266.
ISBN 9783410141495. Retrieved 15 May 2014.
[8] Basic texts of the International Telecommunication
Union. Itu.int. Retrieved 15 May 2012.
[9] PP10contributions. 2010 Plenipotentiary Conference.
Itu.int. Retrieved 15 May 2012.
[10] ITU Management team inauguration on 15 January
2015. Retrieved 25 March 2015.
[11] Constitution of ITU: Chapter I Basic Provisions. Retrieved 14 April 2013.
[12] International Telecommunication Union Member
States.
International Telecommunication Union.
Retrieved 18 July 2013.
[13] New Country, New Number Country code 211 ocially
assigned to South Sudan ITU Pressroom, 14 July 2011
[14] ITU-T : International Numbering Resources : National
Numbering Plans : China, Taiwan. Itu.int. 26 January
2007. Retrieved 15 May 2012.
[15] Palestine ITU status. Itu.int. 20 October 2010. Retrieved 15 May 2012.
[16] World Summit on the Information Society. itu.int. Retrieved 11 October 2012.
[17] World Conference on International Telecommunications
2012. Itu.int. Retrieved 12 October 2012.
[18] International Telecommunication Regulations (PDF).
Retrieved 12 October 2012.
[19] ITU opens public consultation on internet regulation
treaty. 16 August 2012. Retrieved November 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

[22] Russia calls for internet revolution. Indrus.in. 29 May


2012. Retrieved 12 October 2012.
[23] Internet Society. International Telecommunication Regulations
[24] Mcdowell, Robert M. (21 February 2012). Robert
McDowell:The U.N. Threat to Internet Freedom. The
Wall Street Journal. Retrieved 12 October 2012.
[25] L. Gordon Crovitz (17 June 2012). Crovitz: The U.N.'s
Internet Power Grab. The Wall Street Journal. Retrieved
12 October 2012.
[26] McCullagh, Declan (7 June 2012). "CNET:U.N. could
tax U.S.-based Web sites, leaked docs show<". CNET.
Retrieved 12 October 2012.
[27] Trivedi, Shamik (28 June 2012). FOR APPLE AND
GOOGLE, IS AN UNAVOIDABLE U.N. 'TAX' COMING?". Tax Notes Today 2012 TNT 126-5.
[28] Google attacks UN net conference. BBC News. 21
November 2012. Retrieved 21 November 2012.
[29] European Parliament warns against UN internet control.
BBC News. 22 November 2012. Retrieved 23 November
2012.
[30] European Parliament resolution on the forthcoming
World Conference on International Telecommunications (WCIT-12) of the International Telecommunication
Union, and the possible expansion of the scope of international telecommunication regulations. 22 November
2012. Retrieved 23 November 2012.
[31] House approves resolution to keep Internet control out of
UN hands. The Hill. 5 December 2012.
[32] U.S. Rejects Telecommunications Treaty. The New
York Times. 14 December 2012.
[33] Japan, West snub rules for Net curbs. Japan Times. 16
December 2012.
[34] WCIT-12 Final Acts Signatories.
International
Telecommunication Union. Retrieved 16 December
2012.
[35] Siy, Sherwin. (14 December 2012) On the Results at the
WCIT. Public Knowledge. Retrieved on 28 April 2014.
[36] Convention of the ITU. Itu.int. Retrieved 12 October
2012.
[37] EFF Joins Coalition Denouncing Secretive WCIT Planning Process. E.org. 17 May 2012. Retrieved 12 October 2012.
[38] Ryan/Glick: The ITU Treaty Negotiations: A Call for
Openness and Participation. Ssrn.com. Retrieved 12
October 2012.

Chapter 34

Internet
This article is about the worldwide computer network. email, Internet telephony, Internet television music, digFor other uses, see Internet (disambiguation).
ital newspapers, and video streaming websites. NewsNot 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 networkcal 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 rms to extend their "bricks and mortar" presand services, such as the inter-linked hypertext docu- ence to serve a larger market or even sell goods and serments and applications of the World Wide Web (WWW), vices entirely online. Business-to-business and nancial
electronic mail, voice over IP telephony, and peer-to-peer services on the Internet aect supply chains across entire
industries.
networks for le sharing.
The origins of the Internet date back to research commissioned by the United States federal government in
the 1960s to build robust, fault-tolerant communication
via computer networks.[1] The primary precursor network, the ARPANET, initially served as a backbone for
interconnection of regional academic and military networks in the 1980s. The funding of the National Science
Foundation Network as a new backbone in the 1980s,
as well as private funding for other commercial extensions, led to worldwide participation in the development
of new networking technologies, and the merger of many
networks.[2] The linking of commercial networks and
enterprises by the early 1990s marks the beginning of
the transition to the modern Internet,[3] and generated
a sustained exponential growth as generations of institutional, personal, and mobile computers were connected
to the network. Although the Internet was widely used by
academia since the 1980s, the commercialization incorporated its services and technologies into virtually every
aspect of modern life.
Internet use grew rapidly in the West from the mid-1990s
and from the late 1990s in the developing world.[4] In the
20 years since 1995, Internet use has grown 100-times,
measured for the period of one year, to over one third
of the world population.[5][6] Most traditional communications media, including telephony, radio, television,
paper mail and newspapers are being reshaped or redened by the Internet, giving birth to new services such as

The Internet has no centralized governance in either technological implementation or policies for access and usage; each constituent network sets its own policies.[7]
Only the overreaching denitions of the two principal
name spaces in the Internet, the Internet Protocol address
space and the Domain Name System (DNS), are directed
by a maintainer organization, the Internet Corporation
for Assigned Names and Numbers (ICANN). The technical underpinning and standardization of the core protocols is an activity of the Internet Engineering Task Force
(IETF), a non-prot organization of loosely aliated international participants that anyone may associate with by
contributing technical expertise.[8]

34.1 Terminology
See also: Capitalization of Internet
The term Internet, when used to refer to the specic global
system of interconnected Internet Protocol (IP) networks,
is a proper noun[9] and may be written with an initial
capital letter. In common use and the media, it is often not capitalized, viz. the internet. Some guides specify
that the word should be capitalized when used as a noun,
but not capitalized when used as an adjective.[10] The Internet is also often referred to as the Net, as a short form
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 Interactive Mathematics Center at the University of California, Santa Barbara, followed by the University of Utah
Graphics Department. In an early sign of future growth,
fteen sites were connected to the young ARPANET
by the end of 1971.[23][24] These early years were documented in the 1972 lm Computer Networks: The Heralds
of Resource Sharing.

The Internet Messenger by Buky Schwartz in Holon, Israel.

netted was used uncapitalized as an adjective, meaning


interconnected or interwoven.[11] The designers of early
computer networks used internet both as a noun and as a
verb in shorthand form of internetwork or internetworking, meaning interconnecting computer networks.[12]
The terms Internet and World Wide Web are often used interchangeably in everyday speech; it is common to speak
of "going on the Internet" when invoking a web browser
to view web pages. However, the World Wide Web or
the Web is only one of a large number of Internet services. The Web is a collection of interconnected documents (web pages) and other web resources, linked by
hyperlinks and URLs.[13] As another point of comparison, Hypertext Transfer Protocol, or HTTP, is the language 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 typically used sarcastically to parody a technically unsavvy
user.

Early international collaborations on the ARPANET were


rare. European developers were concerned with developing the X.25 networks.[25] Notable exceptions were the
Norwegian Seismic Array (NORSAR) in June 1973, followed 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
Science, University of London and later at University
College London.[26][27][28] In December 1974, RFC 675
(Specication of Internet Transmission Control Program),
by Vinton Cerf, Yogen Dalal, and Carl Sunshine, used the
term internet as a shorthand for internetworking and later
RFCs repeated this use.[29] Access to the ARPANET was
expanded in 1981 when the National Science Foundation
(NSF) funded the Computer Science Network (CSNET).
In 1982, the Internet Protocol Suite (TCP/IP) was standardized, which permitted worldwide proliferation of interconnected networks.

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) proResearch 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, rst 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 serNPL 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 comof networks.[21] ARPANET development began with two mercial trac.[31] The Internet rapidly expanded in Eunetwork 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 rst highspeed T1 (1.5 Mbit/s) link between the NSFNET and
Europe was installed between Cornell University and
CERN, allowing much more robust communications than
were capable with satellites.[36] Six months later Tim
Berners-Lee would begin writing WorldWideWeb, the
rst web browser after two years of lobbying CERN management. 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 rst Web browser (which was
also a HTML editor and could access Usenet newsgroups and FTP les), the rst HTTP server software
(later known as CERN httpd), the rst web server (http:
//info.cern.ch), and the rst Web pages that described the
project itself. Public commercial use of the Internet began 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 commercial use; one of the networks that would grow into
the commercial Internet we know today. In 1991 the
Commercial Internet eXchange was founded, allowing
PSInet to communicate with the other commercial networks CERFnet and Alternet. Since 1995 the Internet
has tremendously impacted culture and commerce, including the rise of near instant communication by email,
instant messaging, telephony (Voice over Internet Protocol or VoIP), two-way interactive video calls, and the
World Wide Web[39] with its discussion forums, blogs,
social networking, and online shopping sites. Increasing amounts of data are transmitted at higher and higher
speeds over ber optic networks operating at 1-Gbit/s,
10-Gbit/s, or more.

Main article: Internet governance


The Internet is a global network comprising many vol-

ICANN headquarters in the Playa Vista neighborhood of Los Angeles, California, United States.

untarily interconnected autonomous networks. It operates without a central governing body. The technical
underpinning and standardization of the core protocols
(IPv4 and IPv6) is an activity of the Internet Engineering
Task Force (IETF), a non-prot organization of loosely
aliated international participants that anyone may associate with by contributing technical expertise. To maintain interoperability, the principal name spaces of the
Internet are administered by the Internet Corporation
for Assigned Names and Numbers (ICANN). ICANN
is governed by an international board of directors drawn
from across the Internet technical, business, academic,
and other non-commercial communities. ICANN coordinates the assignment of unique identiers for use on
the Internet, including domain names, Internet Protocol
(IP) addresses, application port numbers in the transport
protocols, and many other parameters. Globally unied
name spaces are essential for maintaining the global reach
of the Internet. This role of ICANN distinguishes it as
perhaps the only central coordinating body for the global
Internet.[47]

The Internet continues to grow, driven by ever greater


amounts of online information and knowledge, commerce, entertainment and social networking.[42] During
the late 1990s, it was estimated that trac on the public Internet grew by 100 percent per year, while the
mean annual growth in the number of Internet users was
thought to be between 20% and 50%.[43] This growth
is often attributed to the lack of central administration,
which allows organic growth of the network, as well
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 toAfrica
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 owing
for North America
through two-way telecommunication, by 2000 this g Asia-Pacic Network Information Centre (APNIC)
ure had grown to 51%, and by 2007 more than 97% of
for Asia and the Pacic region

198
Latin American and Caribbean Internet Addresses
Registry (LACNIC) for Latin America and the
Caribbean region
Rseaux IP Europens Network Coordination
Centre (RIPE NCC) for Europe, the Middle East,
and Central Asia
The National Telecommunications and Information Administration, an agency of the United States Department of Commerce, continues to have nal approval over
changes to the DNS root zone.[48][49][50] The Internet Society (ISOC) was founded in 1992 with a mission to assure the open development, evolution and use of the Internet for the benet of all people throughout the world.[51]
Its members include individuals (anyone may join) as
well as corporations, organizations, governments, and
universities. Among other activities ISOC provides an
administrative home for a number of less formally organized groups that are involved in developing and managing the Internet, including: the Internet Engineering
Task Force (IETF), Internet Architecture Board (IAB),
Internet Engineering Steering Group (IESG), Internet
Research Task Force (IRTF), and Internet Research
Steering Group (IRSG). On 16 November 2005, the
United Nations-sponsored World Summit on the Information Society in Tunis established the Internet Governance Forum (IGF) to discuss Internet-related issues.

CHAPTER 34. INTERNET

PoP #3

Tier 1 Networks

Transit

Tier 2 Networks
Transit
Peering

PoP #2

PoP #1

Tier 2 ISP

IXP

Transit

Tier 3 Network
(multi-homed ISP)

Transit

Tier 3 Network
(single homed ISP)

Internet users
(business, consumers, etc)

Packet routing across the Internet involves several tiers of Internet


service providers.

of scope. End-users who only access the Internet when


needed to perform a function or obtain information, represent the bottom of the routing hierarchy. At the top
of the routing hierarchy are the tier 1 networks, large
telecommunication companies that exchange trac directly with each other via peering agreements. Tier 2
and lower level networks buy Internet transit from other
providers to reach at least some parties on the global
Internet, though they may also engage in peering. An
ISP may use a single upstream provider for connectivity, or implement multihoming to achieve redundancy
and load balancing. Internet exchange points are major trac exchanges with physical connections to multiple ISPs. Large organizations, such as academic institutions, large enterprises, and governments, may perform
the same function as ISPs, engaging in peering and pur34.4 Infrastructure
chasing transit on behalf of their internal networks. ReSee also: List of countries by number of Internet users search networks tend to interconnect with large subnetworks such as GEANT, GLORIAD, Internet2, and the
and List of countries by Internet connection speeds
The communications infrastructure of the Internet con- UKs 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 networks.[52] Computers and routers use routing tables in
their operating system to direct IP packets to the nexthop router or destination. Routing tables are maintained
by manual conguration or automatically by routing protocols. 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 ecient
routing across the complex connections of the global Internet.

2007 map showing submarine beroptic telecommunication cables around the world.

34.4.2 Access

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,
broadband over coaxial cable, ber optics or copper
layers that control various aspects of the architecture.
wires, Wi-Fi, satellite and cellular telephone technology
(3G, 4G). The Internet may often be accessed from computers in libraries and Internet cafes. Internet access
34.4.1 Routing and service tiers
points exist in many public places such as airport halls
Internet service providers establish the worldwide con- and coee 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
Many hotels also have public terminals, though these are
usually fee-based. These terminals are widely accessed
for various usages, such as ticket booking, bank deposit,
or online payment. Wi-Fi provides wireless access to the
Internet via local computer networks. Hotspots providing such access include Wi-Fi cafes, where users need to
bring their own wireless devices such as a laptop or PDA.
These services may be free to all, free to customers only,
or fee-based.
Grassroots eorts have led to wireless community networks. Commercial Wi-Fi services covering large city
areas are in place in New York, London, Vienna, Toronto,
San Francisco, Philadelphia, Chicago and Pittsburgh.
The Internet can then be accessed from such places as
a park bench.[53] Apart from Wi-Fi, there have been experiments with proprietary mobile wireless networks like
Ricochet, various high-speed data services over cellular phone networks, and xed wireless services. Highend mobile phones such as smartphones in general come
with Internet access through the phone network. Web
browsers such as Opera are available on these advanced
handsets, which can also run a wide variety of other Internet software. More mobile phones have Internet access
than PCs, though this is not as widely used.[54] An Internet access provider and protocol matrix dierentiates the
methods used to get online.

34.4.3

Structure

Many computer scientists describe the Internet as a


prime example of a large-scale, highly engineered, yet
highly complex system.[55] The structure was found to be
highly robust to random failures,[56] yet, very vulnerable
to intentional attacks.[57] The Internet structure and its usage characteristics have been studied extensively and the
possibility of developing alternative structures has been
investigated.[58]

199
simply informative, experimental, or historical, or document the best current practices (BCP) when implementing Internet technologies.
The Internet standards describe a framework known as
the Internet protocol suite. This is a model architecture that divides methods into a layered system of protocols, originally documented in RFC 1122 and RFC 1123.
The layers correspond to the environment or scope in
which their services operate. At the top is the application
layer, space for the application-specic networking methods used in software applications. For example, a web
browser program uses the client-server application model
and a specic protocol of interaction between servers and
clients, while many le-sharing systems use a peer-topeer paradigm. Below this top layer, the transport layer
connects applications on dierent hosts with a logical
channel through the network with appropriate data exchange methods.
Underlying these layers are the networking technologies
that interconnect networks at their borders and hosts via
the physical connections. The Internet layer enables computers to identify and locate each other via Internet Protocol (IP) addresses, and routes their trac via intermediate (transit) networks. Last, at the bottom of the architecture is the link layer, which provides connectivity between 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
designed to be independent of the underlying hardware,
which the model, therefore, does not concern itself with
in any detail. Other models have been developed, such
as the OSI model, that attempt to be comprehensive in
every aspect of communications. While many similarities exist between the models, they are not compatible
in the details of description or implementation; indeed,
TCP/IP protocols are usually included in the discussion
of OSI networking.

Application

Data

34.5 Protocols
While the hardware components in the Internet infrastructure can often be used to support other software systems, it is the design and the standardization process of
the software that characterizes the Internet and provides
the foundation for its scalability and success. The responsibility for the architectural design of the Internet software systems has been assumed by the Internet Engineering Task Force (IETF).[59] The IETF conducts standardsetting work groups, open to any individual, about the
various aspects of Internet architecture. Resulting contributions and standards are published as Request for Comments (RFC) documents on the IETF web site. The principal methods of networking that enable the Internet are
contained in specially designated RFCs that constitute the
Internet Standards. Other less rigorous documents are

IP
header
Frame
header

UDP UDP
header data

Transport

IP data

Internet

Frame data

Frame
footer

Link

As user data is processed through the protocol stack, each abstraction layer adds encapsulation information at the sending
host. Data is transmitted over the wire at the link level between
hosts and routers. Encapsulation is removed by the receiving host.
Intermediate relays update link encapsulation at each hop, and
inspect the IP layer for routing purposes.

The most prominent component of the Internet model is

200

CHAPTER 34. INTERNET

the Internet Protocol (IP), which provides addressing systems (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 rst 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 explosive growth of the Internet has led to IPv4 address exhaustion, which entered its nal 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 ecient routing of Internet trac. 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
became the worlds rst Web server.
agers to plan rapid adoption and conversion.[61]
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, translation facilities must exist for internetworking or nodes
must have duplicate networking software for both networks. Essentially all modern computer operating systems support both versions of the Internet Protocol. Network infrastructure, however, is still lagging in this development. Aside from the complex array of physical connections that make up its infrastructure, the Internet is
facilitated by bi- or multi-lateral commercial contracts,
e.g., peering agreements, and by technical specications
or protocols that describe the exchange of data over the
network. Indeed, the Internet is dened by its interconnections and routing policies.

34.6 Services
The Internet carries many network services, most prominently mobile apps such as social media apps, the World
Wide Web, electronic mail, multiplayer online games,
Internet telephony, and le sharing services.

34.6.1

World Wide Web

Many people use the terms Internet and World Wide Web,
or just the Web, interchangeably, but the two terms are
not synonymous. The World Wide Web is the primary
application that billions of people use on the Internet, and
it has changed their lives immeasurably.[62][63] However,
the Internet provides many other services. The Web is
a global set of documents, images and other resources,
logically interrelated by hyperlinks and referenced with
Uniform Resource Identiers (URIs). URIs symbolically identify services, servers, and other databases,
and the documents and resources that they can provide.
Hypertext Transfer Protocol (HTTP) is the main access
protocol of the World Wide Web. Web services also use
HTTP to allow software systems to communicate in order

to share and exchange business logic and data.


World Wide Web browser software, such as Microsoft's
Internet Explorer, Mozilla Firefox, Opera, Apple's
Safari, and Google Chrome, lets users navigate from one
web page to another via hyperlinks embedded in the documents. These documents may also contain any combination of computer data, including graphics, sounds, text,
video, multimedia and interactive content that runs while
the user is interacting with the page. Client-side software can include animations, games, oce applications
and scientic demonstrations. Through keyword-driven
Internet research using search engines like Yahoo! and
Google, users worldwide have easy, instant access to a
vast and diverse amount of online information. Compared to printed media, books, encyclopedias and traditional libraries, the World Wide Web has enabled the
decentralization of information on a large scale.
The Web has also enabled individuals and organizations
to publish ideas and information to a potentially large
audience online at greatly reduced expense and time delay. Publishing a web page, a blog, or building a website involves little initial cost and many cost-free services
are available. However, publishing and maintaining large,
professional web sites with attractive, diverse and up-todate information is still a dicult and expensive proposition. Many individuals and some companies and groups
use web logs or blogs, which are largely used as easily updatable online diaries. Some commercial organizations
encourage sta to communicate advice in their areas of
specialization in the hope that visitors will be impressed
by the expert knowledge and free information, and be attracted to the corporation as a result.
One example of this practice is Microsoft, whose product
developers publish their personal blogs in order to pique
the publics interest in their work. Collections of personal
web pages published by large service providers remain
popular and have become increasingly sophisticated.
Whereas operations such as Angelre and GeoCities have
existed since the early days of the Web, newer oerings

34.6. SERVICES

201

from, for example, Facebook and Twitter currently have


large followings. These operations often brand themselves as social network services rather than simply as web
page hosts.

no extra features may be line-powered only and operate during a power failure; VoIP can never do so without a
backup power source for the phone equipment and the Internet access devices. VoIP has also become increasingly
Advertising on popular web pages can be lucrative, and popular for gaming applications, as a form of commue-commerce or the sale of products and services directly nication between players. Popular VoIP clients for gaming include Ventrilo and Teamspeak. Modern video game
via the Web continues to grow.
consoles also oer VoIP chat features.
When the Web developed in the 1990s, a typical web
page was stored in completed form on a web server, formatted 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 exible design, layout, and content. Websites of data across the Internet. A computer le can be
are often created using content management software emailed to customers, colleagues and friends as an attachwith, initially, very little content. Contributors to these ment. It can be uploaded to a website or File Transfer
systems, who may be paid sta, members of an organiza- Protocol (FTP) server for easy download by others. It can
tion or the public, ll underlying databases with content be put into a shared location or onto a le server for inusing 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 le may be controlled by user authentication, the
content and making it available to the target visitors.
transit of the le over the Internet may be obscured by

34.6.2

Communication

Email is an important communications service available


on the Internet. The concept of sending electronic text
messages between parties in a way analogous to mailing letters or memos predates the creation of the Internet. Pictures, documents, and other les are sent as email
attachments. Emails can be cc-ed to multiple email addresses.
Internet telephony is another common communications
service made possible by the creation of the Internet.
VoIP stands for Voice-over-Internet Protocol, referring
to the protocol that underlies all Internet communication.
The idea began in the early 1990s with walkie-talkie-like
voice applications for personal computers. In recent years
many VoIP systems have become as easy to use and as
convenient as a normal telephone. The benet is that,
as the Internet carries the voice trac, VoIP can be free
or cost much less than a traditional telephone call, especially over long distances and especially for those with
always-on Internet connections such as cable or ADSL.
VoIP is maturing into a competitive alternative to traditional telephone service. Interoperability between dierent providers has improved and the ability to call or receive a call from a traditional telephone is available. Simple, inexpensive VoIP network adapters are available that
eliminate the need for a personal computer.
Voice quality can still vary from call to call, but is often equal to and can even exceed that of traditional calls.
Remaining problems for VoIP include emergency telephone number dialing and reliability. Currently, a few
VoIP providers provide an emergency service, but it is
not universally available. Older traditional phones with

encryption, and money may change hands for access to


the le. The price can be paid by the remote charging of
funds from, for example, a credit card whose details are
also passed usually fully encrypted across the Internet. The origin and authenticity of the le received may
be checked by digital signatures or by MD5 or other message digests. These simple features of the Internet, over
a worldwide basis, are changing the production, sale, and
distribution of anything that can be reduced to a computer le for transmission. This includes all manner of
print publications, software products, news, music, lm,
video, photography, graphics and the other arts. This in
turn has caused seismic shifts in each of the existing industries that previously controlled the production and distribution of these products.
Streaming media is the real-time delivery of digital media for the immediate consumption or enjoyment by
end users. Many radio and television broadcasters provide Internet feeds of their live audio and video productions. They may also allow time-shift viewing or listening
such as Preview, Classic Clips and Listen Again features.
These providers have been joined by a range of pure Internet broadcasters who never had on-air licenses. This
means that an Internet-connected device, such as a computer or something more specic, can be used to access on-line media in much the same way as was previously possible only with a television or radio receiver.
The range of available types of content is much wider,
from specialized technical webcasts to on-demand popular multimedia services. Podcasting is a variation on this
theme, where usually audio material is downloaded
and played back on a computer or shifted to a portable
media player to be listened to on the move. These techniques using simple equipment allow anybody, with little
censorship or licensing control, to broadcast audio-visual

202

CHAPTER 34. INTERNET

material worldwide.
Digital media streaming increases the demand for network bandwidth. For example, standard image quality
needs 1 Mbit/s link speed for SD 480p, HD 720p quality
requires 2.5 Mbit/s, and the top-of-the-line HDX quality
needs 4.5 Mbit/s for 1080p.[64]
Webcams are a low-cost extension of this phenomenon.
While some webcams can give full-frame-rate video, the
picture either is usually small or updates slowly. Internet users can watch animals around an African waterhole, ships in the Panama Canal, trac at a local roundabout or monitor their own premises, live and in real time.
Video chat rooms and video conferencing are also popular with many uses being found for personal webcams,
with and without two-way sound. YouTube was founded
on 15 February 2005 and is now the leading website for
free streaming video with a vast number of users. It
uses a ash-based web player to stream and show video
les. Registered users may upload an unlimited amount
of video and build their own personal prole. YouTube
claims that its users watch hundreds of millions, and upload hundreds of thousands of videos daily. Currently,
YouTube also uses an HTML5 player.[65]

Others - 17%

English - 27%

Korean - 2%
Russian - 3%
French - 3%
Arabic - 3%

German - 4%

Portuguese - 4%

Japanese - 5%
Chinese - 25%
Spanish - 8%

Internet users by language[68]

Others - 11%

Portuguese - 2%
Arabic - 3%
Japanese - 4%

French - 4%

Chinese - 4%

34.7 Social impact

English - 55%

Spanish - 5%

The Internet has enabled new forms of social interaction,


activities, and social associations. This phenomenon has
given rise to the scholarly study of the sociology of the
Internet.

German - 5%

Russian - 6%

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 worlds Internet users surpassed
Internet usage has seen tremendous growth. From 2000 3 billion or 43.6 percent of world population, but twothirds of the users came from richest countries, with 78.0
percent of Europe countries population using the Internet, followed by 57.4 percent of the Americas.[72]
80

73

70

67

76

78*

71

63

60

59

61

54

50

51
46

40
36

38

42
33

30
20

0
1996

23

21
18

17

10

11
2
0

1998

7
2

2000

36

30

31
24

8
3

11
4

2002

12
6

14
7

2004

16
8

15

26
17

27

24

38
30

40*

32*

21

12
9

2006

2008

2010

2012

2014

The prevalent language for communication on the Internet has been English. This may be a result of the origin
of the Internet, as well as the languages role as a lingua
franca. Early computer systems were limited to the characters in the American Standard Code for Information
Interchange (ASCII), a subset of the Latin alphabet.

* Estimate

Internet users per 100 inhabitants


Source: International Telecommunications Union.[66][67]

to 2009, the number of Internet users globally rose from


394 million to 1.858 billion.[70] By 2010, 22 percent of
the worlds population had access to computers with 1
billion Google searches every day, 300 million Internet

After English (27%), the most requested languages on


the World Wide Web are Chinese (25%), Spanish (8%),
Japanese (5%), Portuguese and German (4% each),
Arabic, French and Russian (3% each), and Korean
(2%).[68] By region, 42% of the worlds Internet users
are based in Asia, 24% in Europe, 14% in North America, 10% in Latin America and the Caribbean taken together, 6% in Africa, 3% in the Middle East and 1%
in Australia/Oceania.[73] The Internets technologies have

34.7. SOCIAL IMPACT


developed enough in recent years, especially in the use
of Unicode, that good facilities are available for development and communication in the worlds widely used languages. However, some glitches such as mojibake (incorrect display of some languages characters) still remain.
In an American study in 2005, the percentage of men using the Internet was very slightly ahead of the percentage
of women, although this dierence reversed in those under 30. Men logged on more often, spent more time online, and were more likely to be broadband users, whereas
women tended to make more use of opportunities to communicate (such as email). Men were more likely to use
the Internet to pay bills, participate in auctions, and for
recreation such as downloading music and videos. Men
and women were equally likely to use the Internet for
shopping and banking.[74] More recent studies indicate
that in 2008, women signicantly outnumbered men on
most social networking sites, such as Facebook and Myspace, although the ratios varied with age.[75] In addition,
women watched more streaming content, whereas men
downloaded more.[76] In terms of blogs, men were more
likely to blog in the rst place; among those who blog,
men were more likely to have a professional blog, whereas
women were more likely to have a personal blog.[77]
According to forecasts by Euromonitor International,
44% of the worlds population will be users of the Internet by 2020.[78] Splitting by country, in 2012 Iceland,
Norway, Sweden, the Netherlands, and Denmark had the
highest Internet penetration by the number of users, with
93% or more of the population with access.[79]
Several neologisms exist that refer to Internet users:
Netizen (as in as in citizen of the net)[80] refers to
those actively involved in improving online communities, the Internet in general or surrounding political affairs and rights such as free speech,[81][82] Internaut refers
to operators or technically highly capable users of the
Internet,[83][84] digital citizen refers to a person using the
Internet in order to engage in society, politics, and government participation.[85]

34.7.2

Usage

The Internet allows greater exibility in working hours


and location, especially with the spread of unmetered
high-speed connections. The Internet can be accessed almost anywhere by numerous means, including through
mobile Internet devices. Mobile phones, datacards,
handheld game consoles and cellular routers allow users
to connect to the Internet wirelessly. Within the limitations imposed by small screens and other limited facilities
of such pocket-sized devices, the services of the Internet, including email and the web, may be available. Service providers may restrict the services oered and mobile data charges may be signicantly higher than other
access methods.

203
doctoral is available from websites. Examples range from
CBeebies, through school and high-school revision guides
and virtual universities, to access to top-end scholarly literature through the likes of Google Scholar. For distance
education, help with homework and other assignments,
self-guided learning, whiling away spare time, or just
looking up more detail on an interesting fact, it has never
been easier for people to access educational information
at any level from anywhere. The Internet in general and
the World Wide Web in particular are important enablers
of both formal and informal education. Further, the Internet allows universities, in particular, researchers from
the social and behavioral sciences, to conduct research remotely via virtual laboratories, with profound changes in
reach and generalizability of ndings as well as in communication between scientists and in the publication of
results.[86]
The low cost and nearly instantaneous sharing of ideas,
knowledge, and skills have made collaborative work dramatically easier, with the help of collaborative software.
Not only can a group cheaply communicate and share
ideas but the wide reach of the Internet allows such groups
more easily to form. An example of this is the free
software movement, which has produced, among other
things, Linux, Mozilla Firefox, and OpenOce.org. Internet chat, whether using an IRC chat room, an instant
messaging system, or a social networking website, allows
colleagues to stay in touch in a very convenient way while
working at their computers during the day. Messages can
be exchanged even more quickly and conveniently than
via email. These systems may allow les to be exchanged,
drawings and images to be shared, or voice and video contact between team members.
Content management systems allow collaborating teams
to work on shared sets of documents simultaneously without accidentally destroying each others work. Business
and project teams can share calendars as well as documents and other information. Such collaboration occurs
in a wide variety of areas including scientic research,
software development, conference planning, political activism and creative writing. Social and political collaboration is also becoming more widespread as both Internet
access and computer literacy spread.

The Internet allows computer users to remotely access


other computers and information stores easily from any
access point. Access may be with computer security,
i.e. authentication and encryption technologies, depending on the requirements. This is encouraging new ways of
working from home, collaboration and information sharing in many industries. An accountant sitting at home
can audit the books of a company based in another country, on a server situated in a third country that is remotely
maintained by IT specialists in a fourth. These accounts
could have been created by home-working bookkeepers,
in other remote locations, based on information emailed
to them from oces 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


made many of them infeasible in practice. An oce
worker away from their desk, perhaps on the other side
of the world on a business trip or a holiday, can access
their emails, access their data using cloud computing, or
open a remote desktop session into their oce PC using a secure virtual private network (VPN) connection
on the Internet. This can give the worker complete access to all of their normal les and data, including email
and other applications, while away from the oce. It has
been referred to among system administrators as the Virtual Private Nightmare,[87] because it extends the secure
perimeter of a corporate network into remote locations
and its employees homes.

34.7.3

Social networking and entertainment

See also: Social networking service Social impact


Many people use the World Wide Web to access news,
weather and sports reports, to plan and book vacations
and to pursue their personal interests. People use chat,
messaging and email to make and stay in touch with
friends worldwide, sometimes in the same way as some
previously had pen pals. Social networking websites such
as Facebook, Twitter, and Myspace have created new
ways to socialize and interact. Users of these sites are
able to add a wide variety of information to pages, to
pursue common interests, and to connect with others. It
is also possible to nd existing acquaintances, to allow
communication among existing groups of people. Sites
like LinkedIn foster commercial and business connections. YouTube and Flickr specialize in users videos and
photographs. While social networking sites were initially
for individuals only, today they are widely used by businesses and other organizations to promote their brands,
to market to their customers and to encourage posts to
"go viral". Black hat social media techniques are also
employed by some organizations, such as spam accounts
and astroturng.

ticular has been criticised in the past for not doing enough
to aid victims of online abuse.[88]
For organizations, such a backlash can cause overall
brand damage, especially if reported by the media. However, this is not always the case, as any brand damage
in the eyes of people with an opposing opinion to that
presented by the organization could sometimes be outweighed by strengthening the brand in the eyes of others.
Furthermore, if an organization or individual gives in to
demands that others perceive as wrong-headed, that can
then provoke a counter-backlash.
Some websites, such as Reddit, have rules forbidding
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 directing harassment at the specic individuals thereby identied. In particular, the Reddit rule forbidding the posting of personal information is widely understood to imply
that all identifying photos and names must be censored in
Facebook screenshots posted to Reddit. However, the interpretation of this rule in relation to public Twitter posts
is less clear, and in any case, like-minded people online
have many other ways they can use to direct each others
attention to public social media posts they disagree with.

Children also face dangers online such as cyberbullying


and approaches by sexual predators, who sometimes pose
as children themselves. Children may also encounter material which they may nd upsetting, or material which
their parents consider to be not age-appropriate. Due to
naivety, they may also post personal information about
themselves online, which could put them or their families at risk unless warned not to do so. Many parents
choose to enable Internet ltering, and/or supervise their
childrens online activities, in an attempt to protect their
children from inappropriate material on the Internet. The
most popular social networking websites, such as Facebook and Twitter, commonly forbid users under the age
of 13. However, these policies are typically trivial to circumvent by registering an account with a false birth date,
and a signicant number of children aged under 13 join
such sites anyway. Social networking sites for younger
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 oine behavior, if it trac. Today, many Internet forums have sections deis 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 communicaery, through insults and hate speech, to, in extreme cases, tion and for the sharing of ideas. The Internet pornograrape and death threats. The online disinhibition eect 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 signicant
stridently or oensively online than they would in per- source of advertising revenue for other websites.[90] Alson. A signicant 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


to stop their widespread popularity.[91]
Another area of leisure activity on the Internet is
multiplayer gaming.[92] This form of recreation creates
communities, where people of all ages and origins enjoy the fast-paced world of multiplayer games. These
range from MMORPG to rst-person shooters, from
role-playing video games to online gambling. While online gaming has been around since the 1970s, modern
modes of online gaming began with subscription services
such as GameSpy and MPlayer.[93] Non-subscribers were
limited to certain types of game play or certain games.
Many people use the Internet to access and download
music, movies and other works for their enjoyment and
relaxation. Free and fee-based services exist for all of
these activities, using centralized servers and distributed
peer-to-peer technologies. Some of these sources exercise more care with respect to the original artists copyrights than others.

205
processes spanning the entire value chain: purchasing,
supply chain management, marketing, sales, customer
service, and business relationship. E-commerce seeks to
add revenue streams using the Internet to build and enhance relationships with clients and partners. According to International Data Corporation, the size of worldwide e-commerce, when global business-to-business and
-consumer transactions are combined, equate to $16 trillion for 2013. A report by Oxford Economics adds those
two together to estimate the total size of the digital economy at $20.4 trillion, equivalent to roughly 13.8% of
global sales.[99]

While much has been written of the economic advantages


of Internet-enabled commerce, there is also evidence that
some aspects of the Internet such as maps and locationaware services may serve to reinforce economic inequality and the digital divide.[100] Electronic commerce may
be responsible for consolidation and the decline of momand-pop, brick and mortar businesses resulting in in[94]
Internet usage has been correlated to users loneliness.
[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 foCybersectarianism is a new organizational form which cused on the economic eects of consolidation from Internet businesses. Keen cites a 2013 Institute for Loinvolves: highly dispersed small groups of practitioners that may remain largely anonymous within the larger cal Self-Reliance report saying brick-and-mortar retailers 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 devotion to a particular leader. Overseas supporters provide 2014, about half as much as Hilton Hotels, which emfunding 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
which together employ almost 60,000
tively, members and practitioners of such sects construct Hertz combined,
[104]
people.
viable virtual communities of faith, exchanging personal
testimonies and engaging in the collective study via email,
on-line chat rooms, and web-based message boards.[95]
In particular, the British government has raised concerns
about the prospect of young British Muslims being indoctrinated into Islamic extremism by material on the Internet, being persuaded to join terrorist groups such as the
so-called "Islamic State", and then potentially committing
acts of terrorism on returning to Britain after ghting in
Syria or Iraq.
Cyberslacking can become a drain on corporate resources; the average UK employee spent 57 minutes a day
surng the Web while at work, according to a 2003 study
by Peninsula Business Services.[96] Internet addiction disorder is excessive computer use that interferes with daily
life.[97] Psychologist, Nicolas Carr believe that Internet
use has other eects on individuals, for instance improving skills of scan-reading and interfering with the deep
thinking that leads to true creativity.[98]

34.7.4

Electronic business

34.7.5 Telecommuting
Telecommuting is the performance within a traditional
worker and employer relationship when it is facilitated
by tools such as groupware, virtual private networks,
conference calling, videoconferencing, and voice over IP
(VOIP) so that work may be performed from any location, most conveniently the workers home. It can be
ecient and useful for companies as it allows workers
to communicate over long distances, saving signicant
amounts of travel time and cost. As broadband Internet
connections become commonplace, more workers have
adequate bandwidth at home to use these tools to link
their home to their corporate intranet and internal communication networks.

34.7.6 Crowdsourcing

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 ow and accumulate. Thus, tradifor sharing and dissemination of information across intionally national-embedded peripheries get
[105]
In those setstitutional and international boundaries.
entangled into greater, international periphtings, they have been found useful for collaboration on
eries, with stronger combined powers... The
grant writing, strategic planning, departmental documenInternet, as a consequence, changes the topoltation, and committee work.[106] The United States Patent
ogy of the centre-periphery model, by stimand Trademark Oce uses a wiki to allow the public to
ulating conventional peripheries to interlink
collaborate on nding prior art relevant to examination
into super-periphery structures, which enof 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 inherent global and civic nature that interwoven Internet techterms of trac.[109]
nologies provide. To limit the growing civic potential of
the Internet, Berdal also notes how self-protective measures are put in place by those threatened by it:
34.7.8 Politics and political revolutions
See also: Internet censorship, Culture of fear, and Mass
surveillance
The Internet has achieved new relevance as a politi-

If we consider Chinas attempts to lter


unsuitable material from the Internet, most
of us would agree that this resembles a selfprotective measure by the system against the
growing civic potentials of the Internet. Nevertheless, both types represent limitations to peripheral capacities. Thus, the Chinese government tries to prevent communicative power to
build up and unleash (as the 1989 Tiananmen
Square uprising suggests, the government may
nd 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 petitions have inuenced policy implementation
in favour of the publics online-articulated will
[113]

Banner in Bangkok during the 2014 Thai coup d'tat, informing the Thai public that 'like' or 'share' activities on social media
could result in imprisonment (observed June 30, 2014).

Incidents of politically motivated Internet censorship


have now been recorded in many countries, including
western democracies.

cal tool. The presidential campaign of Howard Dean


in 2004 in the United States was notable for its success
in soliciting donation via the Internet. Many political
groups use the Internet to achieve a new method of organizing for carrying out their mission, having given rise
to Internet activism, most notably practiced by rebels in
the Arab Spring.[110][111] The New York Times suggested
that social media websites, such as Facebook and Twitter, helped people organize the political revolutions in
Egypt, by helping activists organize protests, communicate grievances, and disseminate information.[112]

34.7.9 Philanthropy

The spread of low-cost Internet access in developing


countries has opened up new possibilities for peer-topeer charities, which allow individuals to contribute
small amounts to charitable projects for other individuals. Websites, such as DonorsChoose and GlobalGiving,
allow small-scale donors to direct funds to individual
projects of their choice. A popular twist on Internetbased 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 oering the rst web-based service to publish individual

34.8. SECURITY
loan proles for funding. Kiva raises funds for local intermediary micronance organizations which post stories
and updates on behalf of the borrowers. Lenders can contribute as little as $25 to loans of their choice, and receive
their money back as borrowers repay. Kiva falls short of
being a pure peer-to-peer charity, in that loans are disbursed before being funded by lenders and borrowers do
not communicate with lenders themselves.[114][115]
However, the recent spread of low-cost Internet access
in developing countries has made genuine international
person-to-person philanthropy increasingly feasible. In
2009, the US-based nonprot Zidisha tapped into this
trend to oer the rst person-to-person micronance
platform to link lenders and borrowers across international borders without intermediaries. Members can fund
loans for as little as a dollar, which the borrowers then
use to develop business activities that improve their families incomes while repaying loans to the members with
interest. Borrowers access the Internet via public cybercafes, donated laptops in village schools, and even smart
phones, then create their own prole pages through which
they share photos and information about themselves and
their businesses. As they repay their loans, borrowers
continue to share updates and dialogue with lenders via
their prole pages. This direct web-based connection allows members themselves to take on many of the communication and recording tasks traditionally performed
by local organizations, bypassing geographic barriers and
dramatically reducing the cost of micronance services
to the entrepreneurs.[116]

207
Assistance For Law Enforcement Act, all phone calls
and broadband Internet trac (emails, web trac, instant messaging, etc.) are required to be available for
unimpeded real-time monitoring by Federal law enforcement agencies.[118][119][120] Packet capture is the monitoring of data trac on a computer network. Computers communicate over the Internet by breaking up messages (emails, images, videos, web pages, les, etc.) into
small chunks called packets, which are routed through a
network of computers, until they reach their destination,
where they are assembled back into a complete message
again. Packet Capture Appliance intercepts these packets as they are traveling through the network, in order to
examine their contents using other programs. A packet
capture is an information gathering tool, but not an analysis tool. That is it gathers messages but it does not analyze them and gure out what they mean. Other programs
are needed to perform trac analysis and sift through intercepted data looking for important/useful information.
Under the Communications Assistance For Law Enforcement Act all U.S. telecommunications providers are required to install packet sning technology to allow Federal law enforcement and intelligence agencies to intercept all of their customers broadband Internet and voice
over Internet protocol (VoIP) trac.[121]

The large amount of data gathered from packet capturing requires surveillance software that lters and reports
relevant information, such as the use of certain words
or phrases, the access of certain types of web sites, or
communicating via email or chat with certain parties.[122]
Agencies, such as the Information Awareness Oce,
NSA, GCHQ and the FBI, spend billions of dollars per
year to develop, purchase, implement, and operate sys34.8 Security
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 software 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 information. 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 constitute cybercrime. Defense theorists have also speculated about the possibilities of cyber warfare using similar Some governments, such as those of Burma, Iran, North
Korea, the Mainland China, Saudi Arabia and the United
methods on a large scale.
Arab Emirates restrict access to content on the Internet
within their territories, especially to political and religious
content, with domain name and keyword lters.[129]
34.8.1 Surveillance
In Norway, Denmark, Finland, and Sweden, major Internet service providers have voluntarily agreed to restrict
access to sites listed by authorities. While this list of forbidden 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 trac on the Internet.[117] In the Many countries, including the United States, have enUnited States for example, under the Communications acted laws against the possession or distribution of certain
Main article: Computer and network surveillance
See also: Signals intelligence and Mass surveillance

208

CHAPTER 34. INTERNET

34.9.2 Energy use

Internet censorship and surveillance by


country[125][126][127][128]
Pervasive
Substantial
Selective
Changing situation
Little or none
Not classied or no data

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 periodically 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
transmitting Internet trac.[134][135]

34.10 See also


Darknet
Deep web
Freenet
Index of Internet-related articles

material, such as child pornography, via the Internet, but


do not mandate lter software. Many free or commercially available software programs, called content-control
software are available to users to block oensive websites
on individual computers or networks, in order to limit access by children to pornographic material or depiction of
violence.

Internet metaphors
"Internets"
Open Systems Interconnection
Outline of the Internet

34.11 References
34.9 Performance

[1] IPTO -- Information Processing Techniques Oce, The


Living Internet, Bill Stewart (ed), January 2000.

As the Internet is a heterogeneous network, the physical characteristics, including for example the data transfer rates of connections, vary widely. It exhibits emergent
phenomena that depend on its large-scale organization.

[2] Internet History -- One Page Summary, The Living Internet, Bill Stewart (ed), January 2000.

34.9.1

Outages

An Internet blackout or outage can be caused by local


signalling interruptions. Disruptions of submarine communications cables may cause blackouts or slowdowns to
large areas, such as in the 2008 submarine cable disruption. Less-developed countries are more vulnerable due
to a small number of high-capacity links. Land cables
are also vulnerable, as in 2011 when a woman digging
for scrap metal severed most connectivity for the nation
of Armenia.[131] Internet blackouts aecting almost entire countries can be achieved by governments as a form
of Internet censorship, as in the blockage of the Internet
in Egypt, whereby approximately 93%[132] of networks
were without access in 2011 in an attempt to stop mobilization for anti-government protests.[133]

[3] So, who really did invent the Internet?", Ian Peter, The
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,
users of the Internet were restricted largely to researchers
and academics until the development of the World Wide
Web by Tim Berners-Lee in 1989.
[5] The Open Market Internet Index. Treese.org. 1995-1111. Retrieved 2013-06-15.
[6] World Stats. Internet World Stats. Miniwatts Marketing
Group. 30 June 2012.
[7] Who owns the Internet?", Jonathan Strickland, How Stu
Works. Retrieved 27 June 2014.
[8] The Tao of IETF: A Novices Guide to Internet Engineering Task Force, P. Homan and S. Harris, RFC 4677,
September 2006.
[9] The Chicago Manual of Style, 16th Edition: capitalize
World Wide Web and Internet

34.11. REFERENCES

[10] 7.76 Terms like 'web' and 'Internet'", Chicago Manual


of Style, University of Chicago, 16th edition (registration
required)
[11] internetted. Oxford English Dictionary (3rd ed.).
Oxford University Press. September 2005. (Subscription
or UK public library membership required.) nineteenthcentury use as an adjective.
[12] internetwork. Oxford English Dictionary (3rd ed.).
Oxford University Press. September 2005. (Subscription
or UK public library membership required.)
[13] HTML 4.01 Specication. HTML 4.01 Specication.
World Wide Web Consortium. Retrieved August 13,
2008. [T]he link (or hyperlink, or Web link) [is] the basic
hypertext construct. A link is a connection from one Web
resource to another. Although a simple concept, the link
has been one of the primary forces driving the success of
the Web.
[14] The Dierence Between the Internet and the World
Wide Web. Webopedia.com. QuinStreet Inc. 2010-0624. Retrieved 2014-05-01.
[15] Brief History of the Internet. Internet Society. Retrieved 9 April 2016. It happened that the work at MIT
(1961-1967), at RAND (1962-1965), and at NPL (19641967) had all proceeded in parallel without any of the
researchers knowing about the other work. The word
packet was adopted from the work at NPL
[16] A Technical History of CYCLADES. Technical Histories of the Internet & other Network Protocols. Computer
Science Department, University of Texas Austin. 11 June
2002. Archived from the original on 1 September 2013.
[17] Zimmermann, H. (August 1977). The Cyclades Experience: Results and Impacts. Proc. IFIP'77 Congress.
Toronto: 465469.

209

[26] NORSAR and the Internet. NORSAR. Archived from


the original on 2012-12-17.
[27] "#3 1982: the ARPANET community grows in 40 maps
that explain the internet, Timothy B. Lee, Vox Conversations, 2 June 2014. Retrieved 27 June 2014.
[28] Kirstein, Peter T. Early experiences with the ARPANET
and Internet in the UK. Department of Computer Science, Systems and Networks Research Group, University
College London. Retrieved 13 April 2016; Cade Metz
(25 December 2012). How the Queen of England Beat
Everyone to the Internet. Wired Magazine. Retrieved 27
June 2014.
[29] Leiner, Barry M.; Cerf, Vinton G.; Clark, David D.;
Kahn, Robert E.; Kleinrock, Leonard; Lynch, Daniel C.;
Postel, Jon; Roberts, Larry G.; Wol, Stephen (2003).
A Brief History of Internet: 1011. arXiv:cs/9901011 .
Bibcode:1999cs........1011L. Retrieved 28 May 2009.
[30] NSFNET: A Partnership for High-Speed Networking, Final
Report 19871995, Karen D. Frazer, Merit Network, Inc.,
1995
[31] Harris, Susan R.; Gerich, Elise (April 1996). Retiring
the NSFNET Backbone Service: Chronicling the End of
an Era. ConneXions. 10 (4).
[32] Ben Segal (1995). A Short History of Internet Protocols
at CERN.
[33] Rseaux IP Europens (RIPE)
[34] Internet History in Asia.
16th APAN Meetings/Advanced Network Conference in Busan. Retrieved
25 December 2005.
[35] The History of NORDUnet

[18] A Chronicle of Merits Early History, John Mulcahy, 1989,


Merit Network, Ann Arbor, Michigan

[36] ftp://ftp.cuhk.edu.hk/pub/doc/internet/Internet.
Monthly.Report/imr9002.txt

[19] Ward, Mark (29 October 2009). Celebrating 40 years of


the net. BBC News.

[37] Berners-Lee, Tim. The Original HTTP as dened in


1991. W3C.org.

[20] Kim, Byung-Keun (2005). Internationalising the Internet


the Co-evolution of Inuence and Technology. Edward Elgar. pp. 5155. ISBN 1845426754.

[38] https://books.google.com/books?id=
wDAEAAAAMBAJ&pg=PT31&lpg=PT31&
dq=compuserve+to+mci+mail+internet&source=
bl&ots=O0PGdOm7ZZ&sig=Cz9Uu_Wt1y_
5G_v4EJU8n5KmQQM&hl=en&sa=X&ved=
0ahUKEwiK8KvN-bfOAhUO3WMKHQcrBdsQ6AEIQDAH#
v=onepage&q=compuserve%20to%20mci%20mail%
20internet&f=false

[21] Brief History of the Internet: The Initial Internetting


Concepts, Barry M. Leiner, et al., Internet Society, Retrieved 27 June 2014.
[22] Roads and Crossroads of Internet History by Gregory
Gromov. 1995
[23] Hafner, Katie (1998). Where Wizards Stay Up Late: The
Origins Of The Internet. Simon & Schuster. ISBN 0-68483267-4.

[39] How the web went world wide, Mark Ward, Technology
Correspondent, BBC News. Retrieved 24 January 2011

[24] Ronda Hauben (2001). From the ARPANET to the Internet. Retrieved 28 May 2009.

[40] Total Midyear Population for the World: 1950-2050,


International Programs Center for Demographic and Economic Studies, U.S. Census Bureau. Retrieved 24 May
2014.

[25] Events in British Telecomms History. Events in British


TelecommsHistory. Archived from the original on 5 April
2003. Retrieved 25 November 2005.

[41] ICT Facts and Figures 2005, 2010, 2014, Telecommunication Development Bureau, International Telecommunication Union (ITU). Retrieved 24 May 2015.

210

[42] Brazil, Russia, India and China to Lead Internet Growth


Through 2011. Clickz.com. Archived from the original
on 4 October 2008. Retrieved 28 May 2009.
[43] Coman, K. G; Odlyzko, A. M. (2 October 1998). The
size and growth rate of the Internet (PDF). AT&T Labs.
Retrieved 21 May 2007.

CHAPTER 34. INTERNET

[57] R. Cohen, K. Erez, D. ben-Avraham, S. Havlin;


Erez, K; Ben-Avraham, D; Havlin, S (2001).
Breakdown of the Internet under intentional attack.
Phys. Rev. Lett. 86 (16): 36825. arXiv:condmat/0010251 .
Bibcode:2001PhRvL..86.3682C.
doi:10.1103/PhysRevLett.86.3682. PMID 11328053.

[44] Comer, Douglas (2006). The Internet book. Prentice Hall.


p. 64. ISBN 0-13-233553-0.

[58] Jesdanun, Anick (16 April 2007). Internet Makeover?


Some argue its time. Seattletimes.nwsource.com. Retrieved 8 August 2011.

[45] World Internet Users and Population Stats. Internet


World Stats. Miniwatts Marketing Group. 22 June 2011.
Retrieved 23 June 2011.

[59] IETF Home Page. Ietf.org. Retrieved 20 June 2009.

[46] Hilbert, Martin; Lpez, Priscila (April 2011). The


Worlds Technological Capacity to Store, Communicate, and Compute Information (PDF). Science.
332 (6025): 6065.
Bibcode:2011Sci...332...60H.
doi:10.1126/science.1200970. PMID 21310967.

[61] Notice of Internet Protocol version 4 (IPv4) Address Depletion (PDF). Retrieved 7 August 2009.

[47] Klein, Hans. (2004). ICANN and Non-Territorial


Sovereignty: Government Without the Nation State. Internet and Public Policy Project. Georgia Institute of
Technology.
[48] Packard, Ashley (2010). Digital Media Law. WileyBlackwell. p. 65. ISBN 978-1-4051-8169-3.
[49] Bush administration annexes internet, Kieren McCarthy, The Register, 1 July 2005
[50] Mueller, Milton L. (2010). Networks and States: The
Global Politics of Internet Governance. MIT Press. p. 61.
ISBN 978-0-262-01459-5.
[51] Internet Society (ISOC) All About The Internet: History
of the Internet. ISOC. Retrieved 2013-12-19.
[52] A. L. Barabasi, R. Albert; Barabsi, Albert-Lszl
(2002).
Statistical mechanics of complex networks. Rev. Mod. Phys. 74: 4794. arXiv:condmat/0106096 .
Bibcode:2002RvMP...74...47A.
doi:10.1103/RevModPhys.74.47.
[53] Pasternak, Sean B. (7 March 2006). Toronto Hydro to Install Wireless Network in Downtown Toronto.
Bloomberg. Retrieved 8 August 2011.
[54] By 2013, mobile phones will overtake PCs as the most
common Web access device worldwide, according to a
forecast in Gartner Highlights Key Predictions for IT Organizations and Users in 2010 and Beyond, Gartner, Inc.,
13 January 2010
[55] Willinger, Walter; Govindan, Ramesh; Jamin, Sugih;
Paxson, Vern; Shenker, Scott (2002). Scaling phenomena in the Internet: Critically examining criticality. Proceedings of the National Academy of Sciences.
99 (99): 25732580. Bibcode:2002PNAS...99.2573W.
doi:10.1073/pnas.012583099.
[56] R. Cohen, K. Erez, D. ben-Avraham, S. Havlin; Erez,
Keren; Ben-Avraham, Daniel; Havlin, Shlomo (2000).
Resilience of the Internet to random breakdowns.
Phys. Rev. Lett. 85 (21): 4625. arXiv:condmat/0007048 .
Bibcode:2000PhRvL..85.4626C.
doi:10.1103/PhysRevLett.85.4626.

[60] Huston, Geo. IPv4 Address Report, daily generated.


Retrieved 20 May 2009.

[62] "World Wide Web Timeline". Pews Research Center. 11


March 2014. Retrieved 1 August 2015.
[63] "Website Analytics Tool". Retrieved 1 August 2015.
[64] Morrison, Geo (18 November 2010). What to know
before buying a 'connected' TV Technology & science
Tech and gadgets Tech Holiday Guide. MSNBC. Retrieved 8 August 2011.
[65] YouTube Fact Sheet. YouTube, LLC. Archived from
the original on 4 July 2010. Retrieved 20 January 2009.
[66] Individuals using the Internet 2005 to 2014, Key ICT
indicators for developed and developing countries and
the world (totals and penetration rates), International
Telecommunication Union (ITU). Retrieved 25 May
2015.
[67] Internet users per 100 inhabitants 1997 to 2007, ICT
Data and Statistics (IDS), International Telecommunication Union (ITU). Retrieved 25 May 2015.
[68] Number of Internet Users by Language, Internet World
Stats, Miniwatts Marketing Group, 31 May 2011. Retrieved 22 April 2012
[69] Usage of content languages for websites. W3Techs.com.
Retrieved 26 April 2013.
[70] Internet users graphs, Market Information and Statistics,
International Telecommunications Union
[71] Google Earth demonstrates how technology benets RI`s
civil society, govt. Antara News. 2011-05-26. Retrieved
2012-11-19.
[72] Steve Dent. There are now 3 billion internet users, mostly
in rich countries. Retrieved 25 November 2014.
[73] World Internet Usage Statistics News and Population Stats
updated for 30 June 2010. Retrieved 20 February 2011.
[74] How men and women use the Internet Pew Research Center 28 December 2005
[75] Rapleaf Study on Social Network Users. Archived from
the original on 20 March 2009.

34.11. REFERENCES

[76] Women Ahead Of Men In Online Tv, Dvr, Games, And


Social Media.. Entrepreneur.com. 1 May 2008. Retrieved 8 August 2011.
[77] Technoratis State of the Blogosphere. Technorati. Retrieved 8 August 2011.
[78] Special Report: The Telecom Consumer in 2020, Pavel
Marceux, Euromonitor International, 27 August 2013.
Retrieved 7 June 2015.
[79] Percentage of Individuals using the Internet 2000-2012,
International Telecommunications Union (Geneva), June
2013, retrieved 22 June 2013
[80] Seese, Michael. Scrappy Information Security. p. 130.
ISBN 978-1-60005-132-6. Retrieved 5 June 2015.
[81] netizen, Dictionary.com

211

[95] Patricia M. Thornton, The New Cybersects: Resistance


and Repression in the Reform era. " In Elizabeth Perry
and Mark Selden, eds., Chinese Society: Change, Conict
and Resistance (second edition) (London and New York:
Routledge, 2003), pp. 14950.
[96] Net abuse hits small city rms. The Scotsman. Edinburgh. 11 September 2003. Retrieved 7 August 2009.
[97] Prieto-Gutierrez, J.J. y Moreno-Cmara, A. Las Redes
Sociales de Internet, Una nueva adiccin? / The use of
Social Networking Websites is a New Addiction? Revista
Argentina de Clnica Psicolgica 24 (II), 149-156[3]
[98] The Shallows: What the Internet Is Doing to Our Brains,
Nicholas Carr, W. W. Norton, 7 June 2010, 276 pp.,
ISBN 0-393-07222-3, ISBN 978-0-393-07222-8
[99] The New Digital Economy: How it will transform business, Oxford Economics, 2 July 2011

[82] The Net and Netizens by Michael Hauben, Columbia Uni- [100] Badger, Emily (6 February 2013). How the Internet Reinforces Inequality in the Real World. The Atlantic. Reversity.
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 wasteland ZDNet, 17 January 2013
[84] Oxford Dictionaries internaut.
oxforddictionaries.com. Retrieved 6 June 2015.

[102] "Free Shipping Day Promotion Spurs Late-Season Online Spending Surge, Improving Season-to-Date Growth
[85] Mossberger, Karen. Digital Citizenship The Internet,
Rate to 16 Percent vs. Year Ago Comscore, 23 DecemSociety and Participation By Karen Mossberger, Carober 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
Internet Is Not the Answer' by Andrew Keen. Washingof cyberspace: Theory, research, applications (pp. 268ton Post. Retrieved 25 January 2015.
294). Cambridge: Cambridge University Press. ISBN
978-0-521-69464-3. Retrieved 22 July 2014.
[105] MM Wanderley; D Birnbaum; J Malloch (2006). New Interfaces For Musical Expression. IRCAM Centre Pom[87] The Virtual Private Nightmare: VPN. Librenix. 4 Aupidou. p. 180. ISBN 2-84426-314-3.
gust 2004. Retrieved 21 July 2010.
[88] Moore, Keith (27 July 2013). Twitter 'report abuse' button calls after rape threats. BBC News. Retrieved 7 December 2014.
[89] Kessler, Sarah (11 October 2010). 5 Fun and Safe Social
Networks for Children. Mashable. Retrieved 7 December 2014.
[90] Internet Pornography Statistics, Jerry Ropelato, Top
Ten Reviews, 2006
[91] Do It Yourself! Amateur Porn Stars Make Bank, Russell Goldman, ABC News, 22 January 2008

[106] Nancy T. Lombardo (June 2008). Putting Wikis to Work


in Libraries. 27 (2). Medical Reference Services Quarterly: 129145.
[107] Noveck, Beth Simone (March 2007). Wikipedia and the
Future of Legal Education. Journal of Legal Education.
57 (1).(subscription required)
[108] WikiStats by S23. S23Wiki. 3 April 2008. Retrieved 7
April 2007.
[109] Alexa Web Search Top 500. Alexa Internet. Retrieved 2 March 2015.

[110] The Arab Uprisings Cascading Eects.


Millermccune.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, Masters
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 StuShrewd, Young Egyptians Guide Revolt. The New York
Times.
dents. Boston College. Retrieved 11 August 2011.

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, Center for Global Development, 2 October 2009, as accessed [130] Finland censors anti-censorship site. The Register. 18
February 2008. Retrieved 19 February 2008.
2 & 16 January 2010
[115] Strom, Stephanie (9 November 2009). Confusion on [131] Georgian woman cuts o web access to whole of Armenia. The Guardian. 6 April 2011. Retrieved 11 April
Where Money Lent via Kiva Goes. The New York Times.
2012.
p. 6.
[116] ""Zidisha Set to Expand in Peer-to-Peer Micro- [132] Cowie, James. Egypt Leaves the Internet. Renesys.
Archived from the original on 28 January 2011. Retrieved
nance"".
Micronance Focus.
7 February 2010.
28 January 2011.
Archived from the original on 28 February 2010.
[117] Die, Whiteld; Susan Landau (August 2008). Internet [133] Egypt severs internet connection amid growing unrest.
BBC News. 28 January 2011.
Eavesdropping: A Brave New World of Wiretapping.
Scientic American. Retrieved 2009-03-13.
[134] Internet responsible for 2 per cent of global energy usage, Jim Giles, New Scientist (Reed Business Information
[118] CALEA Archive -- Electronic Frontier Foundation.
Ltd.), 26 October 2011.
Electronic Frontier Foundation (website). Retrieved 200903-14.
[135] The Energy and Emergy of the Internet, Barath Raghavan (ICSI) and Justin Ma (UC Berkeley), in Proceedings
[119] CALEA: The Perils of Wiretapping the Internet. Elecof the 10th ACM Workshop on Hot Topics in Networks, 14
tronic Frontier Foundation (website). Retrieved 2009-0315 November 2011, Cambridge, MA, USA. ACM SIG14.
COMM. ISBN 978-1-4503-1059-8/11/11.
[120] CALEA: Frequently Asked Questions. Electronic Frontier Foundation (website). Retrieved 2009-03-14.
[121] American Council on Education vs. FCC, Decision,
United States Court of Appeals for the District of
Columbia Circuit (PDF). 9 June 2006. Archived from
the original (PDF) on 7 September 2012. Retrieved 8
September 2013.
[122] Hill, Michael (11 October 2004). Government funds
chat room surveillance research. USA Today. Associated Press. Retrieved 2009-03-19.
[123] McCullagh, Declan (30 January 2007). FBI turns to
broad new wiretap method. ZDNet News. Archived from
the original on 7 April 2010. Retrieved 2009-03-13.
[124] First round in Internet war goes to Iranian intelligence,
Debkale, 28 June 2009. (subscription required)
[125] OpenNet Initiative Summarized global Internet ltering
data spreadsheet, 8 November 2011 and Country Proles, the OpenNet Initiative is a collaborative partnership
of the Citizen Lab at the Munk School of Global Aairs,
University of Toronto; the Berkman Center for Internet
& Society at Harvard University; and the SecDev Group,
Ottawa
[126] Due to legal concerns the OpenNet Initiative does not
check for ltering of child pornography and because their
classications focus on technical ltering, they do not include other types of censorship.

34.12 Further reading


First Monday, a peer-reviewed journal on the Internet established in 1996 as a Great Cities Initiative of
the University Library of the University of Illinois at
Chicago, ISSN 1396-0466
Rise of the Network Society, Manual Castells, WileyBlackwell, 1996 (1st ed) and 2009 (2nd ed), ISBN
978-1-4051-9686-4
The Internet: Changing the Way We Communicate in Americas Investment in the Future, National
Science Foundation, Arlington, Va. USA, 2000
Lessons from the History of the Internet, Manuel
Castells, in The Internet Galaxy, Ch. 1, pp 9
35, Oxford University Press, 2001, ISBN 978-0-19925577-1
Media Freedom Internet Cookbook by the OSCE
Representative on Freedom of the Media Vienna,
2004
The Internet Explained, Vincent Zegna & Mike Pepper, Sonet Digital, November 2005, Pages 1 7.
How Much Does The Internet Weigh?", by Stephen
Cass, Discover, 2007

[127] Internet Enemies, Enemies of the Internet 2014: Entities at the heart of censorship and surveillance, Reporters
Without Borders (Paris), 11 March 2014. Retrieved 24
June 2014.

The Internet spreads its tentacles, Julie Rehmeyer,


Science News, Vol. 171, No. 25, pp. 387388, 23
June 2007

[128] Internet Enemies, Reporters Without Borders (Paris), 12


March 2012

Internet, Lorenzo Cantoni & Stefano Tardini, Routledge, 2006, ISBN 978-0-203-69888-4

34.13. EXTERNAL LINKS

34.13 External links


The Internet Society
Berkman Center for Internet and Society
European Commission Information Society
Living Internet, Internet history and related information, including information from many creators
of the Internet
Ger Magazine, Mongolias rst online magazine,
launched in 1998.

213

Chapter 35

Internet Control Message Protocol


This article is about the protocol as used with Internet TTL header elds, and looking for ICMP Time to live exProtocol 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 utility 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 messages 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] diers from transport protocols such as TCP and UDP in that it is not The ICMP header starts after the IPv4 header and is identypically used to exchange data between systems, nor is tied 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 rst
(with the exception of some diagnostic tools like ping and 4 bytes of the header have xed 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 dened in RFC 792. ICMP
this eld. The Internet Checksum is used, specied
messages are typically used for diagnostic or control purin RFC 1071.
poses or generated in response to errors in IP operations
(as specied in RFC 1122). ICMP errors are directed to Rest of Header Four-bytes eld, 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 rst decrements the
time to live (TTL) eld in the IP header by one. If the
resulting TTL is 0, the packet is discarded and an ICMP
Time To Live exceeded in transit message is sent to the
datagrams source address.

35.2.2 Data
ICMP error messages contain a data section that includes
the entire IPv4 header, plus the rst eight bytes of data
from the IPv4 packet that caused the error message. The
ICMP packet is then encapsulated in a new IPv4 packet.[1]
This data is used by the host to match the message to the
appropriate process. If a higher level protocol uses port
numbers, they are assumed to be in the rst 64 data bits
of the original datagrams data.[4]

Although ICMP messages are contained within standard


IP packets, ICMP messages are usually processed as a
special case, distinguished from normal IP processing,
rather than processed as a normal sub-protocol of IP. In
many cases, it is necessary to inspect the contents of the
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 fragpacket that prompted the sending of the ICMP message. mented ping packets are used for denial-of-service atMany 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

35.3 Control messages


35.3.1

Source quench

Source Quench requests that the sender decrease the rate


of messages sent to a router or host. This message may
be generated if a router or host does not have sucient
buer space to process the request, or may occur if the
router or host buer is approaching its limit.
Data is sent at a very high speed from a host or from
several hosts at the same time to a particular router on
a network. Although a router has buering capabilities,
the buering is limited to within a specied range. The
router cannot queue any more data than the capacity of
the limited buering space. Thus if the queue gets lled
up, incoming data is discarded until the queue is no longer
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
some remedial measures should be taken by the network
layer to avoid these kind of situations. These measures are
referred to as source quench. In a source quench mechanism, the router sees that the incoming data rate is much
faster than the outgoing data rate, and sends an ICMP
message to the clients, informing them that they should
slow down their data transfer speeds or wait for a certain amount of time before attempting to send more data.
When a client receives this message, it will automatically
slow down the outgoing data rate or wait for a sucient
amount of time, which enables the router to empty the
queue. Thus the source quench ICMP message acts as
ow control in the network layer.

215
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
best route for the destination is via R2. The host should
then send packets for the destination directly to R2. The
router will still send the original datagram to the intended
destination.[8] However, if the datagram contains routing
information, this message will not be sent even if a better
route is available. RFC 1122 states that redirects should
only be sent by gateways and should not be sent by Internet hosts.
Where:
Type must be set to 5.
Code species the reason for the redirection,
may be one of the following:

IP address is the 32-bit address of the gateway


to which the redirection should be sent.
IP header and additional data is included to allow the host to match the reply with the request
that caused the redirection reply.

35.3.3 Time exceeded


Time Exceeded is generated by a gateway to inform the
source of a discarded datagram due to the time to live
eld reaching zero. A time exceeded message may also
be sent by a host if it fails to reassemble a fragmented
datagram within its time limit.

Since research suggested that ICMP Source Quench Time exceeded messages are used by the traceroute utility
[was] an ineective (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 (ow
Type must be set to 11
control actions) source quench messages was deprecated
from 2012 by RFC 6633.
Code species the reason for the time exceeded message, include the following:
Where:
Type must be set to 4
Code must be set to 0
IP header and additional data is used by the
sender to match the reply with the associated
request

35.3.2

Redirect

Redirect requests data packets be sent on an alternative


route. ICMP Redirect is a mechanism for routers to convey routing information to hosts. The message informs a
host to update its routing information (to send packets on
an alternative route). If a host tries to send data through a
router (R1) and R1 sends the data on another router (R2)

IP header and rst 64 bits of the original


payload are used by the source host to match
the time exceeded message to the discarded
datagram. For higher level protocols such as
UDP and TCP the 64 bit payload will include
the source and destination ports of the discarded packet.

35.3.4 Timestamp
Timestamp is used for time synchronization. The originating timestamp is set to the time (in milliseconds since
midnight) the sender last touched the packet. The receive
and transmit timestamps are not used.

216

CHAPTER 35. INTERNET CONTROL MESSAGE PROTOCOL

Where:
Type must be set to 13
Code must be set to 0
Identier and Sequence Number can be used
by the client to match the timestamp reply with
the timestamp request.
Originate timestamp is the number of milliseconds since midnight Universal Time (UT).
If a UT reference is not available the mostsignicant bit can be set to indicate a nonstandard time value.

35.3.5

Timestamp reply

ICMP Address Mask Request may be used as a part of


reconnaissance attack to gather information on the target
network, therefore ICMP Address Mask Reply is disabled
by default on Cisco IOS.[9]

35.3.7 Address mask reply


Address mask reply is used to reply to an address mask
request message with an appropriate subnet mask.
Where:
Type must be set to 18
Code must be set to 0
Address mask should be set to the subnet
mask

Timestamp Reply replies to a Timestamp message. It consists 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 timestamp indicating when the Timestamp reply was sent.
Destination unreachable is generated by the host or its inbound gateway[3] to inform the client that the destination
Where:
is unreachable for some reason. A Destination Unreachable message may be generated as a result of a TCP, UDP
Type must be set to 14
or another ICMP transmission. Unreachable TCP ports
Code must be set to 0
notably respond with TCP RST rather than a Destination
Identier and Sequence number can be used
Unreachable type 3 as might be expected.
by the client to match the reply with the request
The error will not be generated if the original datagram
that caused the reply.
has a multicast destination address. Reasons for this mesOriginate 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 innite); the indicated protocol
Receive timestamp is the time the echoer rst
or port is not active; the data must be fragmented but the
touched it on receipt.
'don't fragment' ag is on.
Transmit timestamp is the time the echoer
Where:
last touched the message on sending it.
All timestamps are in units of milliseconds
since midnight UT. If the time is not available
in milliseconds or cannot be provided with respect to midnight UT then any time can be inserted in a timestamp provided the high order
bit of the timestamp is also set to indicate this
non-standard value.

35.3.6

Address mask request

Address mask request is normally sent by a host to a router


in order to obtain an appropriate subnet mask.
Recipients should reply to this message with an Address
mask reply message.

Type eld (bits 0-7) must be set to 3


Code eld (bits 8-15) is used to specify the
type of error, and can be any of the following:

Next-hop MTU eld (bits 48-63) contains the


MTU of the next-hop network if a code 4 error
occurs.
IP header and additional data is included to
allow the client to match the reply with the request that caused the destination unreachable
reply.

35.4 See also

Where:
Type must be set to 17

ICMP tunnel

Code must be set to 0

ICMP hole punching

Address mask can be set to 0

ICMPv6

35.7. EXTERNAL LINKS

217

35.7 External links

IRDP
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.
621630. ISBN 0-07-296775-7.
[2] Protocol Numbers. Internet Assigned Numbers Authority. 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. Retrieved 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?".
2008-06-28. Retrieved 2013-08-15.

Cisco Systems.

[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 webcache. 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 Communication 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 responsible for the overall operation of the IETF.
ops and promotes voluntary Internet standards, in particular 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 reno 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 Comwork 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.
prot 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
members of the IESG, IAB, IASA, and the IAOC.[7] To
36.1 Organization
date, no one has been removed by a NomCom, although
several people have resigned their positions, requiring reThe 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 specic 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-prot organization. Bea 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 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
funded by meeting fees, meeting sponsors and by the InUSD $650 per person.[4]
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 IETFs 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 instead have its charter updated to take on new tasks as
appropriate.[3]
36.2 Meetings
The working groups are organized into areas by subject matter. Current areas are Applications, General,
Internet, Operations and Management, Real-time Applications and Infrastructure, Routing, Security, and
Transport.[5] Each area is overseen by an area director

The rst IETF meeting was attended by 21 U.S.government-funded researchers on 16 January 1986. It
was a continuation of the work of the earlier GADS Task
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 proInitially, 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 improvewere very small, with fewer than 35 people in attendance ments has been slow to develop.
at each of the rst ve meetings. The maximum attendance during the rst 13 meetings was only 120 attendees.
This occurred at the 12th meeting held during January
1989. These meetings have grown in both participation
and scope a great deal since the early 1990s; it had a maximum attendance of 2,810 at the December 2000 IETF
held in San Diego, CA. Attendance declined with industry restructuring during the early 2000s, and is currently
around 1,200.[11][3]

The IETF cooperates with the W3C, ISO/IEC, ITU, and


other standards bodies.[8]

The location for IETF meetings vary greatly. A list of past


and future meeting locations can be found on the IETF
meetings page.[12] The IETF strives to hold its meetings
near where most of the IETF volunteers are located. For
many years, the goal was three meetings a year, with two
in North America and one in either Europe or Asia, alternating between them every other year. The current goal
is to hold three meetings in North America, two in Europe and one in Asia during a two-year period. However,
corporate sponsorship of the meetings is also an important factor and the schedule has been modied from time
to time in order to decrease operational costs.

36.4 Chairs

Statistics are available that show who the top contributors by RFC publication are.[13] While the IETF only allows for participation by individuals, and not by corporations or governments, sponsorship information is available from these statistics.

The IETF Chairperson is selected by the Nominating


Committee (NomCom) process for a 2-year renewable
term.[14] Before 1993, the IETF Chair was selected by
the IAB.[15]
Mike Corrigan (1986)
Phill Gross (19861994)
Paul Mockapetris (19941996)

36.3 Operations
The details of IETF operations have changed considerably as the organization has grown, but the basic mechanism remains publication of proposed specications, development based on the proposals, review and independent testing by participants, and republication as a revised proposal, a draft proposal, or eventually as an Internet Standard. IETF standards are developed in an open,
all-inclusive process in which any interested individual
can participate. All IETF documents are freely available
over the Internet and can be reproduced at will. Multiple, working, useful, interoperable implementations are
the chief requirement before an IETF proposed specication can become a standard.[3] Most specications are
focused on single protocols rather than tightly interlocked
systems. This has allowed the protocols to be used in
many dierent systems, and its standards are routinely
re-used by bodies which create full-edged architectures
(e.g. 3GPP IMS).
Because it relies on volunteers and uses "rough consensus
and running code" as its touchstone, results can be slow
whenever the number of volunteers is either too small to
make progress, or so large as to make consensus dicult,
or when volunteers lack the necessary expertise. For protocols like SMTP, which is used to transport e-mail for a
user community in the many hundreds of millions, there

Fred Baker (19962001)


Harald Tveit Alvestrand (20012005)
Brian Carpenter (20052007)
Russ Housley (20072013)
Jari Arkko (2013 )

36.5 See also


Gateway Algorithms and Data Structures Task
Force (GADS), precursor to the IETF.
Internet Architecture Board (IAB)
Internet Engineering Steering Group (IESG)
Internet governance
Internet Research Task Force (IRTF)
Internet standard
Request for Comments (RFCs)
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-5823. 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 Society, 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, Conrmation, and Recall Process: Operation of the Nominating and Recall Committees, 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


Ocial website
IETF Online Proceedings
Early IETF Proceedings (note: large pdf les,
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 organized

Chapter 37

Internet Message Access Protocol


IMAP redirects here.
Fluspirilene.

For the antipsychotic, see user retrieves the messages with an e-mail client that uses
one of a number of e-mail retrieval protocols. Some
clients and servers preferentially use vendor-specic,
In computing, the Internet Message Access Protocol proprietary protocols, but most support SMTP for sending 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 dened 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 alVirtually all modern e-mail clients and servers support lows the clients to be used with other servers.
IMAP. IMAP and the earlier POP3 (Post Oce Protocol) 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 providing 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 Access 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 access e-mail on a remote mail server. The current version,
37.2.1 Original IMAP
IMAP version 4 revision 1 (IMAP4rev1), is dened by
RFC 3501. An IMAP server typically listens on wellThe original Interim Mail Access Protocol was impleknown 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 o-line modes of operaNo copies of the original interim protocol specication 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 mullacked 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 Oce Protocol
(POP) to retrieve messages; however, fewer e-mail services support IMAP.[3] IMAP oers 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 InterIncoming e-mail messages are sent to an e-mail server active Mail Access Protocol (IMAP2), dened in RFC
that stores messages in the recipients 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


was the rst publicly distributed version.

37.2.3

IMAP3

The POP protocol requires the currently connected client


to be the only client connected to the mailbox. In contrast, the IMAP protocol specically allows simultaneous access by multiple clients and provides mechanisms
for clients to detect changes made to the mailbox by
other, concurrently connected, clients. See for example
RFC3501 section 5.2 which specically cites simultaneous access to the same mailbox by multiple agents as
an example.

IMAP3 is an extremely rare variant of IMAP.[8] It was


published as RFC 1203 in 1991. It was written specically as a counter proposal to RFC 1176, which itself proposed modications to IMAP2.[9] IMAP3 was never accepted by the marketplace.[10][11] The IESG reclassied
RFC1203 Interactive Mail Access Protocol - Version
3 as a Historic protocol in 1993. The IMAP Working
Group used RFC1176 (IMAP2) rather than RFC1203
37.3.3
(IMAP3) as its starting point.[12][13]

37.2.4

IMAP2bis

With the advent of MIME, IMAP2 was extended to


support MIME body structures and add mailbox management functionality (create, delete, rename, message
upload) that was absent from IMAP2. This experimental revision was called IMAP2bis; its specication was never published in non-draft form. An internet draft of IMAP2bis was published by the IETF
IMAP Working Group in October 1993. This draft
was based upon the following earlier specications:
unpublished IMAP2bis.TXT document, RFC1176, and
RFC1064 (IMAP2).[14] The IMAP2bis.TXT draft documented the state of extensions to IMAP2 as of December
1992.[15] Early versions of Pine were widely distributed
with IMAP2bis support[8] (Pine 4.00 and later supports
IMAP4rev1).

37.2.5

IMAP4

An IMAP Working Group formed in the IETF in the


early 1990s took over responsibility for the IMAP2bis
design. The IMAP WG decided to rename IMAP2bis
to IMAP4 to avoid confusion.

37.3 Advantages over POP


37.3.1

Connected and disconnected modes


of operation

When using POP, clients typically connect to the e-mail


server briey, only as long as it takes to download new
messages. When using IMAP4, clients often stay connected as long as the user interface is active and download message content on demand. For users with many
or large messages, this IMAP4 usage pattern can result in
faster response times.

Multiple clients simultaneously


connected to the same mailbox

Access to MIME message parts and


partial fetch

Usually all Internet e-mail is transmitted in MIME format, allowing messages to have a tree structure where the
leaf nodes are any of a variety of single part content types
and the non-leaf nodes are any of a variety of multipart
types. The IMAP4 protocol allows clients to retrieve any
of the individual MIME parts separately and also to retrieve portions of either individual parts or the entire message. These mechanisms allow clients to retrieve the text
portion of a message without retrieving attached les or
to stream content as it is being fetched.

37.3.4 Message state information


Through the use of ags dened in the IMAP4 protocol, clients can keep track of message state: for example, whether or not the message has been read, replied
to, or deleted. These ags are stored on the server, so
dierent clients accessing the same mailbox at dierent times can detect state changes made by other clients.
POP provides no mechanism for clients to store such
state information on the server so if a single user accesses a mailbox with two dierent POP clients (at dierent times), state informationsuch as whether a message
has been accessedcannot be synchronized between the
clients. The IMAP4 protocol supports both predened
system ags and client-dened keywords. System ags
indicate state information such as whether a message has
been read. Keywords, which are not supported by all
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 webbased e-mail services which are sometimes translated into
IMAP folders by the corresponding proprietary servers.

37.3.5 Multiple mailboxes on the server


IMAP4 clients can create, rename, and/or delete mailboxes (usually presented to the user as folders) on the
server, and copy messages between mailboxes. Multiple
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 dened by the IETF LEMONADE Work37.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 supserver 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 congured to store sent mail in a client-side folder, or
searches.
to BCC oneself and then lter the incoming mail instead
of saving a copy in a folder directly. In addition to the
LEMONADE trio, Courier Mail Server oers a non37.3.7 Built-in extension mechanism
standard method of sending using IMAP by copying an
outgoing message to a dedicated outbox folder.[18]
Reecting the experience of earlier Internet protocols,
IMAP4 denes 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 dened by RFC 2449.
STARTTLS can be used to provide secure communications 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
C: <open connection> S: * OK IMAP4rev1 Service
backends.
Ready C: a001 login mrc secret S: a001 OK LOGIN
The IMAP specication has been criticised for being in- completed C: a002 select inbox S: * 18 EXISTS
suciently strict and allowing behaviours that eectively S: * FLAGS (\Answered \Flagged \Deleted \Seen
negate its usefulness. For instance, the specication states \Draft) S: * 2 RECENT S: * OK [UNSEEN 17]
that each message stored on the server has a unique id Message 17 is the rst unseen message S: * OK [UIDto allow the clients to identify the messages they have al- VALIDITY 3857529045] UIDs valid S: a002 OK
ready seen between sessions. However, the specication [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))
((Terry Gray NIL gray cac.washington.edu))
ing massive mailboxes.
((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 notied of the arrival of minutes CNRI.Reston.VA.US) (John Klensin
new mail. Notication of mail arrival is done through NIL KLENSIN MIT.EDU)) NIL NIL "<B27397in-band signaling, which contributes to the complexity of 0100000@cac.washington.edu>") 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 notication. 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 <gray@cac.washington.edu>
the problem in other ways (see the Lemonade Prole for S: Subject: IMAP4rev1 WG mtg summary and
more information).
minutes S: To:
imap@cac.washington.edu S:
Unlike some proprietary protocols which combine send- cc:
minutes@CNRI.Reston.VA.US, John Klensin
ing and retrieval operations, sending a message and sav- <KLENSIN@MIT.EDU> S: Message-Id: <B27397-

224

CHAPTER 37. INTERNET MESSAGE ACCESS PROTOCOL

0100000@cac.washington.edu> S: MIME-Version: 1.0 [11] IMAP Overview, History, Versions and Standards. Retrieved 2010-08-21.
S: Content-Type: TEXT/PLAIN; CHARSET=USASCII S: S: ) S: a004 OK FETCH completed C a005
[12] Protocol Action: Interactive Mail Access Protocol - Verstore 12 +ags \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
[13] Innosoft and POP/IMAP protocols? (mail archive)".
connection S: a006 OK LOGOUT completed
1993. Retrieved 2010-08-21.

37.7 See also


List of mail servers
Comparison of mail servers
Comparison of e-mail clients
Post Oce Protocol (POP)
Push-IMAP
Simple Mail Access Protocol
Webmail
IMAP IDLE

37.8 References
[1] Dean, Tamara (2010). Network+ Guide to Networks. Delmar. p. 519.
[2] Komarinski, Mark (2000). Red Hat Linux System Administration Handbook. Prentice Hall. p. 179.
[3] Mullet, Diana (2000). Managing IMAP. O'Reilly. p. 25.
ISBN 0-596-00012-X.
[4] See e.g. Timo Sirainen, Dave Cridland. IMAP Client
Coding HOWTO.
[5] The IMAP Connection - IMAP Status and History
[6] Service Name and Transport Protocol Port Number Registry. Iana.org (2013-07-12). Retrieved on 2013-07-17.

[14] INTERACTIVE MAIL ACCESS PROTOCOL - VERSION 2bis (Internet Draft)". IETF. 1993. Retrieved
2010-08-21.
[15] IMAP2BIS -- EXTENSIONS TO THE IMAP2 PROTOCOL (DRAFT)". 1992. Retrieved 2010-08-21.
[16] IMAP implementation in Sup, an e-mail client written in
Ruby. rubyforge.com. Retrieved 2011-02-22.
[17] IMAP IDLE: The best approach for 'push' e-mail.
Isode.com. Retrieved 2009-07-30.
[18] Courier-IMAP: Sending mail via an IMAP connection.
Double Precision, Inc. Retrieved 2013-09-24.

37.9 Further reading


Heinlein, P; Hartleben, P (2008). The Book of
IMAP: Building a Mail Server with Courier and
Cyrus. No Starch Press. ISBN 1-59327-177-8.
Hughes, L (1998). Internet e-mail Protocols, Standards and Implementation. Artech House Publishers. ISBN 0-89006-939-5.
Johnson, K (2000). Internet E-mail Protocols: A
Developers Guide. Addison-Wesley Professional.
ISBN 0-201-43288-9.
Loshin, P (1999). Essential E-mail Standards: RFCs
and Protocols Made Practical. John Wiley & Sons.
ISBN 0-471-34597-0.
Mullet, K (2000). Managing IMAP. O'Reilly Media.
ISBN 0-596-00012-X.
Rhoton, J (1999). Programmers Guide to Internet Mail: SMTP, POP, IMAP, and LDAP. Elsevier.
ISBN 1-55558-212-5.

[7] Crispin, Mark (13 February 2012).


Re:
[imap5] Designing a new replacement protoimap5 (Mailing list).
Usenet:
col for IMAP.
Wood, D (1999). Programming Internet Mail.
alpine.OSX.2.00.1202131243200.38441@hsinghsing.panda.com.
O'Reilly. ISBN 1-56592-479-7.
Retrieved 26 November 2014. Knowledge of the original
IMAP (before IMAP2) exists primarily in my mind as
all the original IMAP specications 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 - VERSION 3. IETF. 1991. Retrieved 2010-08-21.

RFC 3501 - specication of IMAP version 4 revision 1

[10] IMAP2, IMAP2bis, IMAP3, IMAP4, IMAP4rev1


(LAN Mail Protocols)". Retrieved 2010-08-21.

RFC 2683 - IMAP Implementation Suggestions


RFC

37.10. EXTERNAL LINKS


RFC 2177 - IMAP4 IDLE command
IMAP extensions for mobility-class applications
presented and exemplied in a doctoral thesis

225

Chapter 38

Internet Protocol
This article is about the IP network protocol only. For
Internet architecture or other protocols, see Internet
protocol suite.

Application

Data

The Internet Protocol (IP) is the principal


communications protocol in the Internet protocol
suite for relaying datagrams across network boundaries. Its routing function enables internetworking, and
essentially establishes the Internet.

IP
header
Frame
header

UDP UDP
header data

Transport

IP data

Internet

Frame data

Frame
footer

Link

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 denes packet Sample encapsulation of application data from UDP to a Link
structures that encapsulate the data to be delivered. It protocol frame
also denes 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 encapsuin 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 rst 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
space is divided into networks and subnetworks, involving
successor is Internet Protocol Version 6 (IPv6).
the designation of network or routing prexes. IP routing
is performed by all hosts, as well as routers, whose main
function is to transport packets across network bound38.1 Function
aries. Routers communicate with one another via specially 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 denes the format of example, many Ethernet switches support IP multipackets 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 enddress, the destination IP address, and other meta-data to-end principle. The network infrastructure is considneeded 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) disreability 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 benet of reducing 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-eort delivery and its service is characterized as unreliable. In network architectural language,
it is a connectionless protocol, in contrast to connectionoriented communications. Various error conditions may
occur, such as data corruption, packet loss, duplication
and out-of-order delivery. Because routing is dynamic,
meaning every packet is treated independently, and because the network maintains no state based on the path
of prior packets, dierent packets may be routed to the
same destination via dierent paths, resulting in out-oforder sequencing at the receiver.
IPv4 provides safeguards to ensure that the IP packet
header is error-free. A routing node calculates a
checksum for a packet. If the checksum is bad, the routing node discards the packet. Although the Internet Control Message Protocol (ICMP) allows such notication,
the routing node is not required to notify either end node
of these errors. By contrast, in order to increase performance, and since current link layer technology is assumed
to provide sucient error detection,[2] the IPv6 header
has no checksum to protect it.[3]
All error conditions in the network must be detected and
compensated by the end nodes of a transmission. The
upper layer protocols of the internet protocol suite are responsible for resolving reliability issues. For example, a
host may buer network data to ensure correct ordering
before the data is delivered to an application.

38.3 Link capacity and capability

The versions currently relevant are IPv4 and IPv6.


In May 1974, the Institute of Electrical and Electronic
Engineers (IEEE) published a paper entitled A Protocol for Packet Network Intercommunication.[6] The papers authors, Vint Cerf and Bob Kahn, described an internetworking protocol for sharing resources using packet
switching among network nodes. A central control component of this model was the Transmission Control Program that incorporated both connection-oriented links
and datagram services between hosts. The monolithic
Transmission Control Program was later divided into a
modular architecture consisting of the Transmission Control Protocol at the transport layer and the Internet Protocol at the network layer. The model became known as the
Department of Defense (DoD) Internet Model and Internet
Protocol Suite, and informally as TCP/IP.
IP versions 0 to 3 were experimental versions, used between 1977 and 1979. The following Internet Experiment Note (IEN) documents describe versions of the Internet Protocol prior to the modern version of IPv4:
IEN 2 (Comments on Internet Protocol and TCP),
dated August 1977 describes the need to separate
the TCP and Internet Protocol functionalities (which
were previously combined.) It proposes the rst version of the IP header, using 0 for the version eld.
IEN 26 (A Proposed New Internet Header Format),
dated February 1978 describes a version of the IP
header that uses a 1-bit version eld.
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 Specication Version
path is actually capable of, or suitable for, performing the
4), dated June 1978 describes the rst protocol to
data transmission requested, even if the path is available
be called IPv4. The IP header is dierent 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
IEN 44 (Latest Header Formats), dated June 1978
must assure that it uses proper transmission characterisdescribes another version of IPv4, also with a header
tics. Some of this responsibility lies also in the upper layer
dierent from the modern IPv4 header.
protocols. Facilities exist to examine the maximum transmission unit (MTU) size of the local link and Path MTU
IEN 54 (Internetwork Protocol Specication Version
Discovery can be used for the entire projected path to the
4), dated September 1978 is the rst description of
destination. The IPv4 internetworking layer has the caIPv4 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 provides 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 protoof 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
Version 5 was used by the Internet Stream Protocol, an
experimental streaming protocol.

CHAPTER 38. INTERNET PROTOCOL

[6] Vinton G. Cerf, Robert E. Kahn, A Protocol for Packet


Network Intercommunication, IEEE Transactions on
Communications, Vol. 22, No. 5, May 1974 pp. 637
648

The successor to IPv4 is IPv6. Its most prominent dierence 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.3109 ) addresses, IPv6 uses 128-bit addresses pro[8] Mulligan, Geo. It was almost IPv7. O'Reilly. O'Reilly
viding ca. 340 undecillion, or 3.41038 addresses. AlMedia. 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.
theregister.co.uk. The Register. Retrieved 4 May 2014.
basic infrastructure support for IPv6.[7] IPv6 was a result 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 briey surfaced, but had no aliation with any
international standards body, and have had no support.[9]
On April 1, 1994, the IETF published an April Fools Day
joke about IPv9.[10]

38.8 External links


Internet Protocol at DMOZ

38.5 Security
During the design phase of the ARPANET and the early
Internet, the security aspects and needs of a public, international network could not be adequately anticipated.
Consequently, many Internet protocols exhibited vulnerabilities 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 pursuing 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.

RFC 791
Data Communication Lectures of Manfred Lindner
Part IP Technology Fundamentals
Data Communication Lectures of Manfred Lindner
Part IP Routing Fundamentals

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 protocols, the Transmission Control Protocol (TCP) and the
Internet Protocol (IP) were the rst networking protocols
dened 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 specifying how data should be packetized, addressed, trans- Diagram of the rst internetworked connection
mitted, routed and received. This functionality is organized into four abstraction layers which are used to sort
all related protocols according to the scope of networking 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 applications.
The TCP/IP model and many of its protocols are maintained by the Internet Engineering Task Force (IETF).
A Stanford Research Institute packet radio van, site of the rst
three-way internetworked transmission.

39.1 History
ARPANET Network Control Program (NCP) protocol,
joined Kahn to work on open-architecture interconnec39.1.1 Early research
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 dierences beinitiating 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 funcInformation Processing Technology Oce, where he tion was delegated to the hosts. Cerf credits Hubert Zimworked 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 inuences 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), rst published in 1974.[4]
229

230

CHAPTER 39. INTERNET PROTOCOL SUITE

Initially, the TCP managed both datagram transmissions


and routing, but as the protocol grew, other researchers,
including Jon Postel, recommended a division of functionality into protocol layers. Postel stated, we are
screwing up in our design of Internet protocols by violating the principle of layering.[5] Encapsulation of dierent mechanisms was intended to create an environment
where the upper layers could access only what was needed
from the lower layers. A monolithic design would be inexible and lead to scalability issues. The Transmission
Control Program was split into two distinct protocols, the
Transmission Control Protocol and the Internet Protocol.
The new suite replaced all protocols used previously.,[6]
PRnet,[7] and SATnet[8][9]

39.1.3 Adoption

at Stanford worked out details of the idea, resulting in


the rst TCP specication.[11] A signicant technical inuence was the early networking work at Xerox PARC,
which produced the PARC Universal Packet protocol
suite, much of which existed around that time.

The spread of TCP/IP was fueled further in June 1989,


when AT&T agreed to place the TCP/IP code developed
for UNIX into the public domain. Various vendors, including IBM, included this code in their own TCP/IP
stacks. Many companies sold TCP/IP stacks for Windows until Microsoft released a native TCP/IP stack in
Windows 95. This event was a little late in the evolution of the Internet, but it cemented TCP/IPs dominance over other protocols, which began to lose ground.
These protocols included IBM Systems Network Architecture (SNA), Open Systems Interconnection (OSI), Microsofts native NetBIOS, and Xerox Network Systems
(XNS).

In March 1982, the US Department of Defense declared TCP/IP as the standard for all military computer
networking.[13] In 1985, the Internet Advisory Board
(later renamed the Internet Architecture Board) held a
three-day workshop on TCP/IP for the computer industry, attended by 250 vendor representatives, promoting
the protocol and leading to its increasing commercial use.

In 1985, the rst Interop conference focused on network


interoperability by broader adoption of TCP/IP. The conference was founded by Dan Lynch, an early Internet activist. 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 eciently trans- year from 1985 through 1993, the number of attendees
mitting and routing trac 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 rst major corporait 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 Kahns initial problem. One popular ex- Barry Appelman's group did TCP/IP development. (Appression is that TCP/IP, the eventual product of Cerf and pelman later moved to AOL to be the head of all its develKahns work, will run over "two tin cans and a string." opment eorts.) 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 specication was created and successfully including MVS, VM, and OS/2. At the same time, several smaller companies began oering TCP/IP stacks for
tested.)
DOS and MS Windows, such as the company FTP SoftA computer called a router is provided with an interface ware, and the Wollongong Group.[14] The rst 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 singlehandedly by a few talented programmers. For example,
types of gateways.
John Romkey of FTP Software was the author of the MIT
PC/IP package.[16] John Romkeys PC/IP implementation was the rst IBM PC TCP/IP stack. Jay Elinsky
39.1.2 Specication
and Oleg Vishnepolsky of IBM Research wrote TCP/IP
[17]
From 1973 to 1974, Cerfs networking research group stacks for VM/CMS and OS/2, respectively.

DARPA then contracted with BBN Technologies,


Stanford University, and the University College London
to develop operational versions of the protocol on dierent hardware platforms. Four versions were developed:
TCP v1, TCP v2, TCP v3 and IP v3, and TCP/IP v4.
The last protocol is still in use today.

In 1975, a two-network TCP/IP communications test was


performed between Stanford and University College London (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 de39.2 Key architectural principles
veloped at multiple research centers between 1978 and
1983. The migration of the ARPANET to TCP/IP was
ocially completed on ag 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 denes 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 applicity. Real-world needs for rewalls, network adplications 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 implementaespecially the Transport Layer which provides relition must be conservative in its sending behavior,
able or unreliable pipes to other processes. The comand liberal in its receiving behavior. That is, it must
munications partners are characterized by the applibe 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 alSSH, HTTP, operate. Processes are addressed via
most as important: software on other hosts may conports which essentially represent services.
tain deciencies that make it unwise to exploit legal
but obscure protocol features.[21]
The transport layer performs host-to-host communications on either the same or dierent hosts and
on either the local network or remote networks separated by routers. It provides a channel for the com39.3 Abstraction layers
munication needs of applications. UDP is the basic transport layer protocol, providing an unreliable
Encapsulation is used to provide abstraction of protocols
datagram service. The Transmission Control Protoand services. Encapsulation is usually aligned with the
col provides ow-control, connection establishment,
division of the protocol suite into layers of general funcand 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 datathe layers, being further encapsulated at each level.
grams across network boundaries. It provides a
uniform networking interface that hides the actual
The layers of the protocol suite near the top are logically
topology (layout) of the underlying network conneccloser to the user application, while those near the bottions. It is therefore also referred to as the layer that
tom are logically closer to the physical transmission of the
establishes internetworking, indeed, it denes and
data. Viewing layers as providing or consuming a service
establishes the Internet. This layer denes the adis a method of abstraction to isolate upper layer protocols
dressing and routing structures used for the TCP/IP
from the details of transmitting bits over, for example,
protocol suite. The primary protocol in this scope
Ethernet and collision detection, while the lower layers
is the Internet Protocol, which denes IP addresses.
avoid having to know the details of each and every appliIts function in routing is to transport datagrams to
cation and its protocol.
the next IP router that has the connectivity to a netEven when the layers are examined, the assorted architecwork closer to the nal data destination.
tural documentsthere is no single architectural model
The link layer denes the networking methods
such as ISO 7498, the Open Systems Interconnection
within the scope of the local network link on which
(OSI) modelhave fewer and less rigidly dened layers
hosts communicate without intervening routers.
than the OSI model, and thus provide an easier t for realThis layer includes the protocols used to describe
world protocols. One frequently referenced document,
the local network topology and the interfaces needed
RFC 1958, does not contain a stack of layers. The lack
to eect transmission of Internet layer datagrams to
of emphasis on layering is a major dierence between the
next-neighbor hosts.
IETF and OSI approaches. It only refers to the existence
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 reis one of the main reasons for the technologys success, sults in confusion because the two models use dierent
it nevertheless seems useful to record a snapshot of the assumptions and goals, including the relative importance
of strict layering.
current principles of the Internet architecture.
RFC 1122, entitled Host Requirements, is structured in This abstraction also allows upper layers to provide serparagraphs 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


services (OSIRM CL),[22] IP is not designed to be reliable and is a best eort delivery protocol. This means that
all transport layer implementations must choose whether
or how to provide reliability. UDP provides data integrity
via a checksum but does not guarantee delivery; TCP provides both data integrity and delivery guarantee by retransmitting until the receiver acknowledges the reception of the packet.

such as adding a packet header to prepare it for transmission, then actually transmit the frame over a physical
medium. The TCP/IP model includes specications of
translating the network addressing methods used in the
Internet Protocol to data link addressing, such as Media
Access Control (MAC). All other aspects below that
level, however, are implicitly assumed to exist in the link
layer, but are not explicitly dened.

This is also the layer where packets may be selected to be


sent over a virtual private network or other networking
tunnel. In this scenario, the link layer data may be considered application data which traverses another instantiation of the IP stack for transmission or reception over
another IP connection. Such a connection, or virtual
link, may be established with a transport protocol or even
an application scope protocol that serves as a tunnel in
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 models 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
39.3.2 Internet layer
(IONL).[23]
This model lacks the formalism of the OSI model and associated documents, but the IETF does not use a formal
model and does not consider this a limitation, as illustrated in the comment by David D. Clark, We reject:
kings, presidents and voting. We believe in: rough consensus and running code. Criticisms of this model, which
have been made with respect to the OSI model, often do
not consider ISOs later extensions to that model.

ICMP & IGMP operate on top of IP but do not transport


data like UDP or TCP. Again, this functionality exists
as layer management extensions to the OSI model, in its
Management Framework (OSIRM MF)[24]

The internet layer has the responsibility of sending packets across potentially multiple networks. Internetworking
requires sending data from the source network to the destination 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 identication: This is accomprotocols, to comply with OSI architecture.
plished with a hierarchical IP addressing system.
The link is treated as a black box. The IETF explicitly
Packet routing: This is the basic task of sending
does not intend to discuss transmission systems, which is
packets of data (datagrams) from source to destinaa less academic but practical alternative to the OSI model.
tion by forwarding them to the next network router
The following is a description of each layer in the TCP/IP
closer to the nal destination.
networking model starting from the lowest level.

39.3.1

Link layer

The internet layer is not only agnostic of data structures


at the transport layer, but it also does not distinguish between operation of the various transport layer protocols.
IP carries data for a variety of dierent upper layer protocols. These protocols are each identied by a unique
protocol number: for example, Internet Control Message
Protocol (ICMP) and Internet Group Management Protocol (IGMP) are protocols 1 and 2, respectively.

The link layer has the networking scope of the local network connection to which a host is attached. This regime
is called the link in TCP/IP literature. It is the lowest
component layer of the Internet protocols, as TCP/IP
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 ilternet layer interfaces of two dierent hosts on the same lustrates the dierences 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 models internet layer corresponds to layer three of the
device driver for the network card, as well as on rmware 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


The internet layer provides an unreliable datagram transmission facility between hosts located on potentially different IP networks by forwarding the transport layer datagrams to an appropriate next-hop router for further relaying to its destination. With this functionality, the internet layer makes possible internetworking, the interworking of dierent IP networks, and it essentially establishes
the Internet. The Internet Protocol is the principal component of the internet layer, and it denes two addressing systems to identify network hosts computers, and to
locate them on the network. The original address system of the ARPANET and its successor, the Internet, is
Internet Protocol version 4 (IPv4). It uses a 32-bit IP
address and is therefore capable of identifying approximately four billion hosts. This limitation was eliminated
in 1998 by the standardization of Internet Protocol version 6 (IPv6) which uses 128-bit addresses. IPv6 production implementations emerged in approximately 2006.

39.3.3

Transport layer

The transport layer establishes basic data channels that


applications use for task-specic data exchange. The
layer establishes process-to-process connectivity, meaning it provides end-to-end services that are independent
of the structure of user data and the logistics of exchanging information for any particular specic purpose. Its
responsibility includes end-to-end message transfer independent of the underlying network, along with error
control, segmentation, ow control, congestion control,
and application addressing (port numbers). End-to-end
message transmission or connecting applications at the
transport layer can be categorized as either connectionoriented, implemented in TCP, or connectionless, implemented in UDP.
For the purpose of providing process-specic transmission channels for applications, the layer establishes the
concept of the port. This is a numbered logical construct allocated specically for each of the communication channels an application needs. For many types of
services, these port numbers have been standardized so
that client computers may address specic services of a
server computer without the involvement of service announcements or directory services.
Because IP provides only a best eort delivery, some
transport layer protocols oer reliability. However, IP
can run over a reliable data link protocol such as the HighLevel Data Link Control (HDLC).
For example, the TCP is a connection-oriented protocol
that addresses numerous reliability issues in providing a
reliable byte stream:
data arrives in-order
data has minimal error (i.e., correctness)
duplicate data is discarded

233
lost or discarded packets are resent
includes trac congestion control
The newer Stream Control Transmission Protocol
(SCTP) is also a reliable, connection-oriented transport mechanism. It is message-stream-orientednot
byte-stream-oriented like TCPand provides multiple
streams multiplexed over a single connection. It also provides multi-homing support, in which a connection end
can be represented by multiple IP addresses (representing multiple physical interfaces), such that if one fails, the
connection is not interrupted. It was developed initially
for telephony applications (to transport SS7 over IP), but
can also be used for other applications.
The User Datagram Protocol is a connectionless
datagram protocol. Like IP, it is a best eort, unreliable
protocol. Reliability is addressed through error detection
using a weak checksum algorithm. UDP is typically used
for applications such as streaming media (audio, video,
Voice over IP etc.) where on-time arrival is more important than reliability, or for simple query/response applications like DNS lookups, where the overhead of setting up a reliable connection is disproportionately large.
Real-time Transport Protocol (RTP) is a datagram protocol that is designed for real-time data such as streaming
audio and video.
The applications at any given network address are distinguished by their TCP or UDP port. By convention certain
well known ports are associated with specic applications.
The TCP/IP models transport or host-to-host layer corresponds to the fourth layer in the Open Systems Interconnection (OSI) model, also called the transport layer.

39.3.4 Application layer


The application layer includes the protocols used by most
applications for providing user services or exchanging application data over the network connections established
by the lower level protocols, but this may include some
basic network support services, such as many routing protocols, and host conguration protocols. Examples of application layer protocols include the Hypertext Transfer
Protocol (HTTP), the File Transfer Protocol (FTP), the
Simple Mail Transfer Protocol (SMTP), and the Dynamic
Host Conguration Protocol (DHCP).[26] Data coded according to application layer protocols are encapsulated
into transport layer protocol units (such as TCP or UDP
messages), which in turn use lower layer protocols to effect actual data transfer.
The TCP/IP model does not consider the specics of formatting and presenting data, and does not dene additional layers between the application and transport layers as in the OSI model (presentation and session layers).
Such functions are the realm of libraries and application
programming interfaces.

234

CHAPTER 39. INTERNET PROTOCOL SUITE

Application layer protocols generally treat the transport


layer (and lower) protocols as black boxes which provide a stable network connection across which to communicate, although the applications are usually aware of
key qualities of the transport layer connection such as
the end point IP addresses and port numbers. Application layer protocols are often associated with particular clientserver applications, and common services have
well-known port numbers reserved by the Internet Assigned Numbers Authority (IANA). For example, the
HyperText Transfer Protocol uses server port 80 and
Telnet uses server port 23. Clients connecting to a service
usually use ephemeral ports, i.e., port numbers assigned
only for the duration of the transaction at random or from
a specic range congured in the application.

that a TCP/IP protocol stack must impose monolithic architecture above the transport layer. For example, the
NFS application protocol runs over the eXternal Data
Representation (XDR) presentation protocol, which, in
turn, runs over a protocol called Remote Procedure Call
(RPC). RPC provides reliable record transmission, so it
can safely use the best-eort UDP transport.
Dierent authors have interpreted the TCP/IP model differently, and disagree whether the link layer, or the entire
TCP/IP model, covers OSI layer 1 (physical layer) issues,
or whether a hardware layer is assumed below the link
layer.

Several authors have attempted to incorporate the OSI


models layers 1 and 2 into the TCP/IP model, since these
are commonly referred to in modern standards (for examThe transport layer and lower-level layers are uncon- ple, by IEEE and ITU). This often results in a model with
cerned with the specics of application layer protocols. ve layers, where the link layer or network access layer is
Routers and switches do not typically examine the en- split into the OSI models layers 1 and 2.
capsulated trac, rather they just provide a conduit for it.
However, some rewall and bandwidth throttling applica- The IETF protocol development eort 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- t cleanly into the OSI model, although RFCs sometimes necessary for network address translator (NAT) times refer to it and often use the old OSI layer numbers. The IETF has repeatedly stated that Internet protraversal to consider the application payload.
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 architecpared as equivalent to a combination of the fth (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 functionality 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.
Conicts 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 conict with the When the IONL and Management Framework docuintent of RFC 1122 and other IETF primary sources.[35] ments are considered, the ICMP and IGMP are dened
as layer management protocols for the network layer. In
like manner, the IONL provides a structure for subnetwork 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 mechcation 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

39.6 Implementations

235
- Principles, Protocols and Architecture. ISBN 867991-142-9

The Internet protocol suite does not presume any specic


hardware or software environment. It only requires that
hardware and a software layer exists that is capable of
sending and receiving packets on a computer network.
As a result, the suite has been implemented on essentially every computing platform. A minimal implementation of TCP/IP includes the following: Internet Protocol (IP), Address Resolution Protocol (ARP), Internet
Control Message Protocol (ICMP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), and
IGMP. In addition to IP, ICMP, TCP, UDP, Internet
Protocol version 6 requires Neighbor Discovery Protocol
(NDP), ICMPv6, and IGMPv6 and is often accompanied
by an integrated IPSec security layer.

Joseph G. Davies and Thomas F. Lee. Microsoft


Windows Server 2003 TCP/IP Protocols and Services. ISBN 0-7356-1291-9

Application programmers are typically concerned only


with interfaces in the application layer and often also in
the transport layer, while the layers below are services
provided by the TCP/IP stack in the operating system.
Most IP implementations are accessible to programmers
through sockets and APIs.

Ajit Mungale Pro .NET 1.1 Network Programming.


ISBN 1-59059-345-6

Unique implementations include Lightweight TCP/IP, an


open source stack designed for embedded systems, and
KA9Q NOS, a stack and associated protocols for amateur
packet radio systems and personal computers connected
via serial lines.
Microcontroller rmware in the network adapter typically handles link issues, supported by driver software
in the operating system. Non-programmable analog and
digital electronics are normally in charge of the physical components below the link layer, typically using an
application-specic integrated circuit (ASIC) chipset for
each network interface or other physical standard. Highperformance routers are to a large extent based on fast
non-programmable digital electronics, carrying out link
level switching.

39.7 See also


BBN Report 1822
FLIP (protocol) (fast local Internet protocol stack)
List of automation protocols
List of information technology acronyms
List of network protocols
List of TCP and UDP port numbers

39.8 Bibliography
Douglas E. Comer. Internetworking with TCP/IP

Forouzan, Behrouz A. (2003). TCP/IP Protocol Suite


(2nd ed.). McGraw-Hill. ISBN 0-07-246060-1.
Craig Hunt TCP/IP Network Administration.
O'Reilly (1998) ISBN 1-56592-322-7
Maufer, Thomas A. (1999). IP Fundamentals.
Prentice Hall. ISBN 0-13-975483-0.
Ian McLean. Windows(R) 2000 TCP/IP Black Book.
ISBN 1-57610-687-X

W. Richard Stevens. TCP/IP Illustrated, Volume 1:


The Protocols. ISBN 0-201-63346-9
W. Richard Stevens and Gary R. Wright. TCP/IP
Illustrated, Volume 2: The Implementation. ISBN 0201-63354-X
W. Richard Stevens. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP, and the UNIX
Domain Protocols. ISBN 0-201-63495-3
Andrew S. Tanenbaum. Computer Networks. ISBN
0-13-066102-3
Clark, D. (1988).
The Design Philosophy
of the DARPA Internet Protocols (PDF). SIGCOMM '88 Symposium proceedings on Communications architectures and protocols. ACM: 106114.
doi:10.1145/52324.52336.
ISBN 0897912799.
Retrieved 2011-10-16.

39.9 References
[1] RFC 1122, Requirements for Internet Hosts Communication Layers, R. Braden (ed.), October 1989.
[2] RFC 1123, Requirements for Internet Hosts Application
and Support, R. Braden (ed.), October 1989
[3] The DoD Internet Architecture Model, Vinton G. Cerf
and Edward Cain, Computer Networks, 7 (1983), NorthHolland, pp. 307-318
[4] , Vinton G. Cerf and Robert E. Kahn, A Protocol for
Packet Network Intercommunication, 5 (1974)
[5] , Jon Postel, Comments on Internet Protocol and TCP,
(1977), Section 3.3.3.2
[6] , Norman Abramson, The Aloha System - Another alternative for computer communications, (1970)

236

[7] , Robert M. Metcalfe and David R. Boggs, Ethernet: Distributed Packet Switching or Local Computer Networks,
(1976)

CHAPTER 39. INTERNET PROTOCOL SUITE

[30] Behrouz A. Forouzan, Data Communications and Networking, 2003

[8] Vinton Robert E. Kahn, The Introduction of Packet Satellite Communications, (1979)

[31] Douglas E. Comer, Internetworking with TCP/IP: Principles, Protocols and Architecture, Pearson Prentice Hall
2005, ISBN 0-13-187671-6

[9] MIT Press Cambridge Inventing the Internet, J. Abbate


(2000)

[32] Charles M. Kozierok, The TCP/IP Guide, No Starch


Press 2005

[10] RFC 1812, Requirements for IP Version 4 Routers, F.


Baker (June 1995)

[33] William Stallings, Data and Computer Communications,


Prentice Hall 2006, ISBN 0-13-243310-9

[11] RFC 675, Specication of Internet Transmission Control


Protocol, V. Cerf et al. (December 1974)

[34] Andrew S. Tanenbaum, Computer Networks, Prentice


Hall 2002, ISBN 0-13-066102-3

[12] Internet History

[35] R. Bush; D. Meyer (December 2002), Some Internet Architectural Guidelines and Philosophy, Internet Engineering Task Force

[13] Ronda Hauben. From the ARPANET to the Internet.


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
[17] Barry Appelman
[18] RFC 1958, Architectural Principles of the Internet, B. Carpenter (June 1996)
[19] Rethinking the design of the Internet: The end-to-end arguments vs. the brave new world, Marjory S. Blumenthal,
David D. Clark, August 2001
[20] p.23 INTERNET PROTOCOL DARPA INTERNET
PROGRAM PROTOCOL SPECIFICATION September
1981 Jon Postel Editor
[21] Requirements for Internet Hosts -- Communication Layers p.13 October 1989 R. Braden, Editor
[22] [ OSI: Reference Model Addendum 1: Connectionlessmode Transmission,ISO7498/AD1],ISO7498/AD1, May
1986
[23] Information processing systems -- Open Systems Interconnection -- Internal organization of the Network
Layer, ISO 8648:1988.
[24] Information processing systems -- Open Systems Interconnection -- Basic Reference Model -- Part 4: Management 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 -- Communication Layers, 1.1.3 Internet Protocol Suite, 1989
[28] Mark A. Dye, Rick McDonald, Antoon W. Ru, 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

Internet HistoryPages on Robert Kahn, Vinton


Cerf, and TCP/IP (reviewed by Cerf and Kahn).
RFC 675 - Specication of Internet Transmission
Control Program, December 1974 Version
RFC 1180 A TCP/IP Tutorial - from the Internet
Engineering Task Force (January 1991)
TCP/IP FAQ
The TCP/IP Guide - A comprehensive look at the
protocols and the procedures/processes involved
A Study of the ARPANET TCP/IP Digest
TCP/IP Sequence Diagrams
Daryls TCP/IP Primer - Intro to TCP/IP LAN administration, conversational style
Introduction to TCP/IP
A Protocol for Packet Network Intercommunication, Cerf & Kahn, IEEE Trans on Comms, Vol
Com-22, No 5 May 1974

Chapter 40

Internetworking
Internetworking is the practice of connecting a
computer network with other networks through the use
of gateways that provide a common method of routing
information packets between the networks. The resulting
system of interconnected networks are called an internetwork, or simply an internet. Internetworking is a combination of the words inter (between) and networking;
not internet-working or international-network.
The most notable example of internetworking is the
Internet, a network of networks based on many underlying hardware technologies, but unied by an internetworking protocol standard, the Internet Protocol Suite,
often also referred to as TCP/IP.
The smallest amount of eort to create an internet (an
internetwork, not the Internet), is to have two LANs of
computers connected to each other via a router. Simply
using either a switch or a hub to connect two local area
networks together doesn't imply internetworking; it just
expands the original LAN.

working, but the resulting system is simply a larger, single subnetwork, and no internetworking protocol, such
as Internet Protocol, is required to traverse these devices. However, a single computer network may be converted into an internetwork by dividing the network into
segments and logically dividing the segment trac with
routers. The Internet Protocol is designed to provide an
unreliable (not guaranteed) packet service across the network. The architecture avoids intermediate network elements maintaining any state of the network. Instead,
this function is assigned to the endpoints of each communication session. To transfer data reliably, applications must utilize an appropriate Transport Layer protocol, such as Transmission Control Protocol (TCP), which
provides a reliable stream. Some applications use a simpler, connection-less transport protocol, User Datagram
Protocol (UDP), for tasks which do not require reliable
delivery of data or that require real-time service, such as
video streaming [1] or voice chat.

40.1 Interconnection of networks

40.2 Networking models

Internetworking started as a way to connect disparate types of networking technology, but it became
widespread through the developing need to connect two
or more local area networks via some sort of wide area
network. The original term for an internetwork was
catenet.

Two architectural models are commonly used to describe


the protocols and methods used in internetworking.

Another type of interconnection of networks often occurs within enterprises at the Link Layer of the networking model, i.e. at the hardware-centric layer below the
level of the TCP/IP logical interfaces. Such interconnection is accomplished with network bridges and network
switches. This is sometimes incorrectly termed internet-

it uses a much less rigorous, loosely dened architecture


that concerns itself only with the aspects of logical networking. It does not discuss hardware-specic low-level
interfaces, and assumes availability of a Link Layer interface to the local network link to which the host is connected. Internetworking is facilitated by the protocols of

The Open System Interconnection (OSI) reference model


was developed under the auspices of the International Organization for Standardization (ISO) and provides a rigorous description for layering protocol functions from the
The denition 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 dierent devices. specications in Requests for Comment and Internet stanToday the interconnecting gateways are called routers.
dards. Despite similar appearance as a layered model,

237

238
its Internet Layer.

40.3 See also


History of the Internet

40.4 References
[1] Teare, Diane (July 1999). 'Designing Cisco Networks. Indianapolis: Cisco Press.

CHAPTER 40. INTERNETWORKING

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 Novells 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 network administrator for each network card conguration
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 preIDP and SPP protocols, respectively. IPX is a network existing modules. This greatly simplied 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 multiThe SPX layer sits on top of the IPX layer and provides user network games.[1] Many games longevity were exconnection-oriented services between two nodes on the tended through tunneling programs like Kali and Kahn
network. SPX is used primarily by clientserver 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 primarily designed for local area networks (LANs), and is a
very ecient protocol for this purpose (typically its performance exceeds that of TCP/IP on a LAN ). TCP/IP
has, however, become the de facto standard protocol.
This is in part due to its superior performance over wide
area networks and the Internet (which uses TCP/IP exclusively), and also because TCP/IP is a more mature protocol, designed specically with this purpose in mind.
Despite the protocols association with NetWare, they are
neither required for NetWare communication (as of NetWare 5.x), nor exclusively used on NetWare networks.
NetWare communication requires an NCP implementation, which can use IPX/SPX, TCP/IP, or both, as a transport.

41.2 Implementations
Novell is largely responsible for the use of IPX as a popular computer networking protocol due to their dominance
in the network operating system software market (with
Novell Netware) from the late 1980s through the mid1990s.

41.2.2 Windows
Because of IPX/SPXs prevalence in LANs in the 1990s,
Microsoft added support for the protocols into Windows'
networking stack, starting with Windows for Workgroups
and Windows NT. Microsoft even named their implementation "NWLink", implying that the inclusion of the
layer 3/4 transports provided NetWare connectivity. In
reality, the protocols were supported as a native transport
for Windows SMB/NetBIOS, and NetWare connectivity required additional installation of an NCP client (Microsoft provided a basic NetWare client with Windows 95
and later, but it was not automatically installed, and initially 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 discouraged because it cannot be used for Windows networking
except as a transport for NetBIOS, which is deprecated.
For the most part, Novells 32-bit Windows client software have eschewed NWLink for an alternative developed by Novell, although some versions permit use of Microsofts IPX/SPX implementation (with warnings about
potential incompatibility).

239

240

41.2.3

CHAPTER 41. IPX/SPX

Other

One area where IPX remains useful is for bypassing VPN


connections with security policies that prohibit commuFor 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
NetWare client, but also by games such as Doom and
Warcraft III[3] for multiplayer play.
Implementations have been written for various avors of
Unix/Linux, both by Novell and other vendors. In particular, Novells UnixWare supported IPX/SPX natively.
However, while UnixWare could act as a client to NetWare servers, and applications could optionally support
IPX/SPX as a transport, UnixWare did not provide the
ability to share les or printers on a NetWare network
without an additional software package. Open Enterprise
Server - Linux does not support IPX/SPX.
The open source FreeBSD operating system includes
an IPX/SPX stack, to support both a NetWare le system client, nwfs, as well as NetWare server using Mars
NWE[4][5] (providing some functionality[6] ). OpenBSD
dropped support with version 4.2,[7][8] and 4.1 needed
some work to compile with IPX.[9]

41.3 Legacy

41.4 See also


Internetwork Packet Exchange (IPX)
NetWare Core Protocol (NCP)
NetBIOS Frames protocol (NBF)
NetBIOS over TCP/IP (NBT)
NWLink
Communications protocol

41.5 References
[1] Win95 FAQ Part 12 of 14: MS-DOS Games top of question 12.9
[2] Some notes on MacIPX internetworking, formerly at
[3] Blizzard Support. Web.archive.org (2010-08-20). Retrieved on 2013-09-27.
[4] FreeBSD ports info on Mars NWE

IPX usage has declined in recent years as the rise of the


Internet has made TCP/IP ubiquitous. Novells initial attempt to support TCP/IP as a client protocol, called NetWare/IP, simply tunneled IPX within IP packets, allowing NetWare clients and servers to communicate over
pure TCP/IP networks. However, due to complex implementation, and a signicant loss in performance due to
the tunnelling overhead, NetWare/IP was largely ignored
except as a mechanism to route IPX through TCP/IP-only
routers and WAN links. NetWare 5.x introduced native
support for NCP over TCP/IP, which is now the preferred
conguration. The successor to NetWare, Open Enterprise Server, comes in two avors: 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 communicate through a rewall. This allows a machine using 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 communicates with the rewall 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 intruders, should the rewall be compromised.

[5] Freshports info on Mars NWE


[6] Novells comments on Mars NWE
[7] OpenBSD 4.2 changes
[8] Removal of IPX from OpenBSD
[9] Berkeley Software Design (BSD): building kernel support
with ipx fails Archived July 26, 2011, at the Wayback Machine.

Chapter 42

Java remote method invocation


RMI functionality comes in the package java.rmi, while
most of Suns 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 comA 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
no longer require this step.
the need for a skeleton.
Client

Stub

Network

Skeleton

Server

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 oers a more advanced version of RMI in Java. It
classes and distributed garbage collection.
functions similarly but provides more advanced searching capabilities and mechanisms for distributed object
1. The original implementation depends on Java Vir- applications.[1]
tual Machine (JVM) class representation mechanisms 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 implements the interface which is used by the client to invoke
Usage of the term RMI may denote solely the programremote methods.
ming interface or may signify both the API and JRMP,
java.rmi.Naming;
import
IIOP, or another implementation, whereas the term RMI- import
import
IIOP (read: RMI over IIOP) specically denotes the RMI java.rmi.RemoteException;
import
interface delegating most of the functionality to the sup- java.rmi.server.UnicastRemoteObject;
java.rmi.registry.*; public class RmiServer extends
porting CORBA implementation.
UnicastRemoteObject implements RmiServerIntf {
The basic idea of Java RMI, the distributed garbagepublic static nal 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 LocateRegistry.createRegistry(1099);
System.out.println(java
The programmers of the original RMI API generalized RMI registry created.); } catch (RemoteException
the code somewhat to support dierent 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 exarguments "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 denes the interface that is


used by the client and implemented by the server.

The Java RMI tutorial - a good starting point to learn


RMI. Also check the Hello World in RMI

import
java.rmi.Remote;
import
java.rmi.RemoteException; public interface RmiServerIntf extends Remote { public String getMessage()
throws RemoteException; }

the Java RMI online training - Very good for training


JavaRMI and as reference

RmiClient class this is the client which gets the


reference (a proxy) to the remote object living on the
server and invokes its method to get a message. If the
server object implemented java.io.Serializable instead of
java.rmi.Remote, it would be serialized and passed to the
client as a value.[2]
import java.rmi.Naming; public class RmiClient
{ public static void main(String args[]) throws
Exception { RmiServerIntf obj = (RmiServerIntf)Naming.lookup("//localhost/RmiServer);
System.out.println(obj.getMessage()); } }
Before running this example, we need to make a 'stub' le
for the interface we used. For this task we have the RMI
compiler - 'rmic'
Note: we make a stub le from the '*.class le
with the implementation of the remote interface, not
from the '*.java' le.
rmic RmiServer
Note that since version 5.0 of J2SE support for dynamically generated stub les 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 Technology Network for Java Developers. Redwood

The RMI page in the JDK docs


java.rmi (Suns Java API Reference for the RMI
package)
Wollrath, Ann; Riggs, Roger; Waldo, Jim. A Distributed Object Model for the Java System (PDF).
Retrieved 2009-02-11.
Programming WebLogic RMI - an introduction to
RMI in Oracle Weblogic.
General Remote Method Invocation

Chapter 43

Link layer
model.[3][4] These authors assume a hardware layer or
physical layer below the link layer, and several of them
adopt the OSI term data link layer instead of link layer
in a modied description of layering. In the predecessor to the TCP/IP model, the ARPAnet Reference Model
(RFC 908, 1982), aspects of the link layer are referred to
by several poorly dened terms, such as network-access
layer, network-access protocol, as well as network layer,
while the next higher layer is called internetwork layer. In
some modern text books, network-interface layer, hostto-network layer and network-access layer occur as synonyms either to the link layer or the data link layer, often
Despite the dierent semantics of layering in TCP/IP and including the physical layer.
OSI, the link layer is sometimes described as a combination 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 nettechnologies.
work segment (link) that a host is connected to. Such
In computer networking, the link layer is the lowest
layer in the Internet Protocol Suite, commonly known as
TCP/IP, the networking architecture of the Internet. It is
described in RFC 1122 and RFC 1123. The link layer is
the group of methods and communications protocols that
only operate on the link that a host is physically connected
to. The link is the physical and logical network component used to interconnect hosts or nodes in the network
and a link protocol is a suite of methods and standards
that operate only between adjacent network nodes of a
local area network segment or a wide area network connection.

RFC 1122 exemplies that local area network protocols


such as Ethernet and IEEE 802, and framing protocols
such as Point-to-Point Protocol (PPP) belong to the link
layer.

43.1 Denition in standards and


textbooks
Local area networking standards such as Ethernet and
IEEE 802 specications use terminology from the sevenlayer OSI model rather than the TCP/IP model. The
TCP/IP model in general does not consider physical specications, rather it assumes a working network infrastructure that can deliver media level frames on the link.
Therefore, RFC 1122 and RFC 1123, the denition of
the TCP/IP model, do not discuss hardware issues and
physical data transmission and set no standards for those
aspects. Some textbook authors have supported the interpretation that physical data transmission aspects are
part of the link layer.[1][2] Others assumed that physical data transmission standards are not considered communication protocols, and are not part of the TCP/IP

protocol packets are not routed to other networks.


The core protocols specied by the Internet Engineering
Task Force (IETF) in this layer are the Address Resolution Protocol (ARP), the Reverse Address Resolution
Protocol (RARP), and the Neighbor Discovery Protocol
(NDP), which is a facility delivering similar functionality
as ARP for IPv6. Since the advent of IPv6, Open Shortest Path First (OSPF) is considered to operate on the link
level as well, although the IPv4 version of the protocol
was considered at the Internet layer.
IS-IS (RFC 1142) is another link-state routing protocol
that ts into this layer when considering TCP/IP model,
however it was developed within the OSI reference stack,
where it is a Layer 2 protocol. It is not an Internet standard.

43.3 Relation to OSI model


The link layer of the TCP/IP model is often compared directly with the combination of the data link layer and the
physical layer in the Open Systems Interconnection (OSI)
protocol stack. Although they are congruent to some de-

243

244
gree in technical coverage of protocols, they are not identical. The link layer in TCP/IP is still wider in scope and
in principle a dierent concept and terminology of classication. This may be observed when certain protocols,
such as the Address Resolution Protocol (ARP), which is
conned to the link layer in the TCP/IP model, is often
said to t between OSIs data link layer and the network
layer. In general, direct or strict comparisons should be
avoided, because the layering in TCP/IP is not a principal
design criterion and in general is considered to be harmful (RFC 3439).
Another term sometimes encountered, network access
layer, tries to suggest the closeness of this layer to the
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
link layer protocols are used to probe the topology of the
local network, discover routers and neighboring hosts, i.e.
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 -- Application and Support, IETF, R. Braden (Editor),
October 1989
RFC 893, Trailer Encapsulations, S. Leer and
M. Karels, April 1984
RFC 826, An Ethernet Address Resolution Protocol, 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., December 1999

43.5 See also


Address Resolution Protocol
Carrier sense multiple access
Carrier sense multiple access with collision detection
Data link layer
Ethernet

CHAPTER 43. LINK LAYER

43.6 References
[1] James F. Kurose, Keith W. Ross, Computer Networking:
A Top-Down Approach, 2007, ISBN 0-321-49770-8
[2] Mark Dye, Mark A. Dye, Wendell, Network Fundamentals: CCNA Exploration Companion Guide, 2007, ISBN
1-58713-208-7
[3] Douglas E. Comer, Internetworking with TCP/IP: Principles, Protocols and Architecture, Pearson Prentice Hall
2005, ISBN 0-13-187671-6
[4] Charles M. Kozierok, The TCP/IP Guide, No Starch
Press 2005

43.7 External links


IEEE 802 Standards

Chapter 44

Maximum transmission unit


In computer networking, the maximum transmission
unit (MTU) of a communications protocol of a layer is
the size (in bytes or octets) of the largest protocol data
unit that the layer can pass onwards. MTU parameters
usually appear in association with a communications interface (NIC, serial port, etc.). Standards (Ethernet, for
example) can x the size of an MTU; or systems (such as
point-to-point serial links) may decide MTU at connect
time.
A larger MTU brings greater eciency because each
network packet carries more user data while protocol
overheads, such as headers or underlying per-packet delays, remain xed; the resulting higher eciency means
an improvement in bulk protocol throughput. A larger
MTU also means processing of fewer packets for the
same amount of data. In some systems, per-packetprocessing can be a critical performance limitation.

576 bytes for IPv4[2] and of 1280 bytes for IPv6.[3] It


must also not be confused with the size of the physically
transmitted frame. In the case of an Ethernet frame this
adds an overhead of 18 bytes, or 22 bytes with an IEEE
802.1Q tag for VLAN or quality of service.

44.2 IP (Internet protocol)


DARPA designed the Internet protocol suite to work over
many dierent networking technologies, each of which
may use packets of dierent size. While a host will know
the MTU of its own interface and possibly that of its peers
(from initial handshakes), it will not initially know the
lowest MTU in a chain of links to other peers. Another
potential problem is that higher-level protocols may create packets larger than a particular link supports.

However, this gain is not without a downside. Large packets occupy a slow link for more time than a smaller packet,
causing greater delays to subsequent packets, and increasing lag and minimum latency. For example, a 1500-byte
packet, the largest allowed by Ethernet at the network
layer (and hence over most of the Internet), ties up a 14.4k
modem for about one second.

To get around this issue, IPv4 allows fragmentation: dividing the datagram into pieces, each small enough to
pass over the single link that is being fragmented for,
using the MTU parameter congured for that interface.
This fragmentation process takes place at the IP layer
(OSI layer 3) and marks the packets it fragments as such,
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 eects
fragment, the entire packet is lost.
on retransmission duration, large packets can still have a
net positive eect on end-to-end TCP performance.[1]
When the size of most or all packets exceed the

44.1 Table of MTUs of common


media
Note: the MTUs in this section are given as the maximum
size of an IP packet that can be transmitted without fragmentation - including IP headers but excluding headers
from lower levels in the protocol stack. The MTU must
not be confused with the minimum datagram size that all
hosts must be prepared to accept, which has a value of
245

MTU of a particular link that has to carry those


packets, almost everything has to be fragmented. In
certain cases this can cause unreasonable or unnecessary overhead. For example, various tunneling situations may exceed the MTU by very little as they
add just a headers worth of data. The addition is
small, but each packet now has to be sent in two fragments, the second of which carries very little payload. The same amount of payload is being moved,
but every intermediate router has to do double the
work in terms of header parsing and routing decisions.

246

CHAPTER 44. MAXIMUM TRANSMISSION UNIT

As it is normal to maximize the payload in every


fragment, in general as well as when fragmenting,
any further fragmentation that turns out to be necessary will increase the overhead even more.

response to various events (load-balancing, congestion,


outages, etc.) - this could result in the path MTU changing (sometimes repeatedly) during a transmission, which
may introduce further packet drops before the host nds
a new reliable MTU.

There is no simple method to discover the MTU of


Most Ethernet LANs use an MTU of 1500 bytes (modlinks beyond a nodes 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 dierence 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 eect, with the possiData Link Layers with an MTU smaller than IPs min- ble result of making some sites behind badly congured
imum MTU from conveying IP data. For example, ac- rewalls unreachable. One can possibly work around this,
cording to IPv6s specication, 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 ones rewall.
rate from IPs 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 rethe IP layer.
sponds more robustly to ICMP ltering.

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 highspeed (up to 1 Gigabit/s) local area network using existing
home wiring (power lines, phone lines and coaxial cables). The G.hn Data Link Layer accepts data frames
of up to 214 bytes (16384 bytes). In order to avoid
the problem of long data-frames taking up the medium
for long periods of time, G.hn denes a procedure for
segmentation that divides the data frame into smaller segRFC 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 outgoing 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 segBig)" message containing its MTU. This information al- ment that is larger than the segments 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 capasmall enough to traverse the entire path without fragmen- bility to detect when a device is jabbering.[20]
tation.
The Internet Protocol denes the Path MTU of an Internet transmission path as the smallest MTU of any of
the IP hops of the path between a source and destination. Put another way, the path MTU is the largest packet
size that can traverse this path without suering fragmentation.

Unfortunately, increasing numbers of networks drop


ICMP trac (for example, to prevent denial-of-service
attacks), which prevents path MTU discovery from working. One often detects such blocking in the cases where a
connection works for low-volume data but hangs as soon
as a host sends a large block of data. For example, with
IRC a connecting client might see the initial messages
up to and including the initial ping (sent by the server
as an anti-spoong measure), but get no response after
that. This is because the large set of welcome messages
are sent out in packets bigger than the real MTU. Also,
in an IP network, the path from the source address to the
destination address often gets modied dynamically, in

44.5 References
[1] Murray, David; Terry Koziniec; Kevin Lee; Michael
Dixon (2012). Large MTUs and internet performance
(PDF). 13th IEEE Conference on High Performance
Switching and Routing (HPSR 2012).
[2] RFC 791, p. 24 Every internet destination must be able
to receive a datagram of 576 octets either in one piece or
in fragments to be reassembled.
[3] RFC 2460, p. 13

44.7. EXTERNAL LINKS

[4] RFC 791, p. 24, Every internet module must be able to


forward a datagram of 68 octets without further fragmentation.
[5] RFC 791, p. 12, Total Length is the length of the datagram, measured in octets, including internet header and
data. This eld allows the length of a datagram to be up
to 65,535 octets.

247

44.7 External links


Tweaking your MTU / RWin for Orange Broadband
Users
How to set the TCP MSS value using iptables

[6] RFC 1191

mturoute a console utility for debugging mtu problems

[7] RFC 2460

MSS Initiative

[8] RFC 2675, p. 1, The IPv6 header [IPv6] has a 16-bit


Payload Length eld and, therefore, supports payloads up
to 65,535 octets long. This document species an IPv6
hop-by-hop option, called the Jumbo Payload option, that
carries a 32-bit length eld in order to allow transmission 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.

MTU Path MTU discovery tool for IPv4 and IPv6


networks

[9] RFC 6145


[10] Network Working Group of the IETF, RFC 894: A Standard for the Transmission of IP Datagrams over Ethernet Networks, Page 1, The maximum length of the data
eld of a packet sent over an Ethernet is 1500 octets, thus
the maximum length of an IP datagram sent over an Ethernet 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 support a jumbo frame size of 9216 bytes.
[15] Joe St Sauver (2003-02-04). Practical Issues Associated
With 9K MTUs (PDF). uoregon.edu. p. 1921. Retrieved 2014-02-13.
[16] RFC 2516
[17] RFC 4638
[18] IEEE Standard for Information technology Telecommunications and information exchange between systems
Local and metropolitan area networks Specic requirements Part 11: Wireless LAN Medium Access Control
(MAC) and Physical Layer (PHY) Specications, 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 Discovery and Filtering ICMP. Retrieved 2007-0902.

Chapter 45

Mealy machine
In the theory of computation, a Mealy machine is a
nite-state machine whose output values are determined
both by its current state and the current inputs. (This is in
contrast to a Moore machine, whose output values are determined solely by its current state.) A Mealy machine is
a deterministic nite-state transducer: for each state and
input, at most one transition is possible.

45.3 Comparison of Mealy machines and Moore machines


1. Mealy machines tend to have fewer states:
Dierent 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 cycle later).

The Mealy machine is named after George H. Mealy, who


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 donea
big problem when two machines are interconnected asynchronous feedback may occur if
one isn't careful.

45.2 Formal denition

3. Mealy machine react faster to inputs:

A Mealy machine is a 6-tuple (S, S0 , , , T, G) consisting of the following:

React in same cycledon't need to wait for


clock.

a nite set of states S

In Moore machines, more logic may be necessary to decode state into outputsmore gate
delays after clock edge.

a start state (also called initial state) S0 which is an


element of S
a nite set called the input alphabet
a nite set called the output alphabet

45.4 Diagram

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
to a Mealy Automata an Helix directed
of a state and an input symbol to the corresponding also associate
[2]
graph.
(S

,
(x, i) (T(x, i), G(x, i))) This graph has
output symbol.
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 outare 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 i 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

Moore/Mealy machines, are DFAs that have also output at any tick of the clock. Modern CPUs, computers, cell phones, digital clocks and basic electronic devices/machines have some kind of nite state machine to
control it.

Simple

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 nding the intersection of two Finite state machines,
one can design in a very simple manner concurrent systems that exchange messages for instance. For example,
a trac light is a system that consists of multiple subsystems, such as the dierent trac lights, that work concurrently.
Some examples of applications:
number classication
watch with timer
vending machine
trac light
bar code scanner
gas pumps
State diagram for a simple Mealy machine with one input and
one output.

A simple Mealy machine has one input and one output.


Each transition edge is labeled with the value of the input (shown in red) and the value of the output (shown
in blue). The machine starts in state S. (In this example, the output is the exclusive-or of the two most-recent
input values; thus, the machine implements an edge detector, outputting a one every time the input ips and a
zero otherwise.)

45.5.2

Complex

45.7 Summary
Implementing a Moore or Mealy machine is not that hard,
especially if one does not intend to minimize the circuit.
However, it does take practice to be able to do it reasonably fast, and is dicult to understand conceptually, at
least, at rst. One should trace out a few steps just to
convince oneself of how it behaves. There is a subtle difference in the behavior of the implementation of a Mealy
and Moore machine. Tracing out a few steps can show
the dierences more clearly.

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
know how to build it. Certainly, one should devote time
as well as multiple outputs.
to both understanding why this technique works, as well
as mastering the technique.

45.6 Applications
Mealy machines provide a rudimentary mathematical
model for cipher machines. Considering the input and
output alphabet the Latin alphabet, for example, then a
Mealy machine can be designed that given a string of letters (a sequence of inputs) can process it into a ciphered
string (a sequence of outputs). However, although one
could use a Mealy model to describe the Enigma, the state

45.8 See also


Synchronous circuit
Moore machine
Algorithmic state machine
Richards controller

250

45.9 Footnotes
[1] Mealy, George H. (September 1955). A Method for
Synthesizing Sequential Circuits. Bell System Technical Journal. 34: 10451079. doi:10.1002/j.15387305.1955.tb03788.x.
[2] Akhavi et al (2012)

45.10 References
Mealy, George H. (1955). A Method for Synthesizing Sequential Circuits. Bell System Technical Journal. pp. 10451079.
Holcombe, W.M.L. (1982). Algebraic automata
theory. Cambridge Studies in Advanced Mathematics. 1. Cambridge University Press. ISBN 0-52160492-3. Zbl 0489.68046.
Roth, Charles H., Jr. (2004). Fundamentals of
Logic Design. Thomson-Engineering. pp. 364367.
ISBN 0-534-37804-8.
Akhavi, Ali; Klimann, Ines; Lombardy, Sylvain;
Mairesse, Jean; Picantin, Matthieu (2012). On
the niteness problem for automaton (semi)groups.
Int. J. Algebra Comput. 22 (6). arXiv:1105.4725 .
Zbl 1280.20038.

CHAPTER 45. MEALY MACHINE

Chapter 46

Media access control


receive/transmit normal frames

Not to be confused with Message authentication code.

half-duplex retransmission and backo functions

In the IEEE 802 reference model of computer networking, the medium access control or media access control (MAC) layer is the lower sublayer of the data link
layer (layer 2) of the seven-layer OSI model. The MAC
sublayer provides addressing and channel access control
mechanisms that make it possible for several terminals
or network nodes to communicate within a multiple access network that incorporates a shared medium, e.g. an
Ethernet network. The hardware that implements the
MAC is referred to as a media access controller.
The MAC sublayer acts as an interface between the
logical link control (LLC) sublayer and the networks
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.1 Functions performed in the


MAC sublayer
According to IEEE Std 802-2001 section 6.2.3 MAC
sublayer, the primary functions performed by the MAC
layer are:[1]
Frame delimiting and recognition
Addressing of destination stations (both as individual stations and as groups of stations)
Conveyance of source-station addressing information
Transparent data transfer of LLC PDUs, or of
equivalent information in the Ethernet sublayer

append/check FCS (frame check sequence)


interframe gap enforcement
discard malformed frames
prepend(tx)/remove(rx) preamble, SFD (start frame
delimiter), and padding
half-duplex compatibility: append(tx)/remove(rx)
MAC address

46.2 Addressing mechanism


The local network addresses used in IEEE 802 networks
and FDDI networks are called MAC addresses; they are
based on the addressing scheme used in early Ethernet
implementations. A MAC address is a unique serial number. Once a MAC address has been assigned to a particular network interface (typically at time of manufacture),
that device should be uniquely identiable amongst all
other network devices in the world. This guarantees that
each device in a network will have a dierent MAC address (analogous to a street address). This makes it possible for data packets to be delivered to a destination within
a subnetwork, i.e. hosts interconnected by some combination of repeaters, hubs, bridges and switches, but not
by network layer routers. Thus, for example, when an
IP packet reaches its destination (sub)network, the destination IP address (a layer 3 or network layer concept) is
resolved with the Address Resolution Protocol for IPv4,
or by Neighbor Discovery Protocol (IPv6) into the MAC
address (a layer 2 concept) of the destination host.

Protection against errors, generally by means of generating 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
and use IEEE 802 48-bit MAC addresses.
medium
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 elds are included in some
4.1.4, the functions required of a MAC are:[2]
point-to-point protocols for compatibility reasons.
251

252

46.3 Channel access control mechanism


The channel access control mechanisms provided by the
MAC layer are also known as a multiple access protocol. This makes it possible for several stations connected to the same physical medium to share it. Examples of shared physical media are bus networks, ring networks, hub networks, wireless networks and half-duplex
point-to-point links. The multiple access protocol may
detect or avoid data packet collisions if a packet mode
contention based channel access method is used, or reserve resources to establish a logical channel if a circuitswitched or channelization-based channel access method
is used. The channel access control mechanism relies on
a physical layer multiplex scheme.

CHAPTER 46. MEDIA ACCESS CONTROL


OFDMA
OFDM

46.5 MAC in cellular networks

Cellular networks, such as GSM, UMTS or LTE networks, also use a MAC layer. The MAC protocol in cellular networks is designed to maximize the utilization of the
expensive licensed spectrum. [3] The air interface of a cellular network is at layers 1 and 2 of the OSI model; at layer
2, it is divided into multiple protocol layers. In UMTS
and LTE, those protocols are the Packet Data Convergence Protocol (PDCP), the Radio Link Control (RLC)
protocol, and the MAC protocol. The base station has
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 specied 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
full-duplex network, such as todays switched Ethernet
networks, but is often available in the equipment for compatibility reasons.

List of channel access methods


Isochronous media access controller
MAC-Forced Forwarding
MACsec (IEEE 802.1AE)

46.4 Common multiple access protocols


46.7 References
Examples of common statistical time division multiplexing multiple access protocols for wired multi-drop networks are:

[1] IEEE 802-2001 (R2007) IEEE Standard for Local and


Metropolitan Area Networks: Overview and Architecture (PDF). IEEE.

CSMA/CD (used in Ethernet and IEEE 802.3)

[2] IEEE 802.3. IEEE.

Token bus (IEEE 802.4)

[3] G. Miao; J. Zander; K-W Sung; B. Slimane (2016). Fundamentals of Mobile Data Networks. Cambridge University Press. ISBN 1107143217.

Token ring (IEEE 802.5)


Token passing (used in FDDI)
Examples of common multiple access protocols that may
be used in packet radio wireless networks are:
CSMA/CA (used in IEEE 802.11/WiFi WLANs)
Slotted ALOHA
Dynamic TDMA
Reservation ALOHA (R-ALOHA)
Mobile Slotted Aloha (MS-ALOHA)
CDMA

[4] 3GPP TS 25.321 Medium Access Control (MAC) protocol specication


[5] 3GPP TS 36.321 Evolved Universal Terrestrial Radio Access (E-UTRA); Medium Access Control (MAC) protocol specication

This article is based on material taken from the Free Online Dictionary of Computing prior to 1 November 2008
and incorporated under the relicensing terms of the
GFDL, version 1.3 or later.

Chapter 47

Moore machine
In the theory of computation, a Moore machine is a
nite-state machine whose output values are determined
solely by its current state. This is in contrast to a Mealy
machine, whose output values are determined both by its
current state and by the values of its inputs. The Moore
machine is named after Edward F. Moore, who presented
the concept in a 1956 paper, Gedanken-experiments on
Sequential Machines.[1]

47.3 Relationship with Mealy machines

a start state (also called initial state) S0 which is an


element of S

for a Mealy machine, each arc (transition) is labeled


with an output value.

As Moore and Mealy machines are both types of nitestate machines, they are equally expressive: either type
can be used to parse a regular language.

The dierence between Moore machines and Mealy machines is that in the latter, the output of a transition is determined by the combination of current state and current
47.1 Formal denition
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 dened 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 nite set of states S
with an output value;

a nite set called the input alphabet


a nite set called the output alphabet
a transition function T : S S mapping a
state and the input alphabet to the next state

Every Moore machine M is equivalent to the Mealy machine with the same states and transitions and the output function G(s, ) GM (s) , which takes each stateinput pair (s, ) and yields GM (s) , where GM is M 's
output function.

an output function G : S mapping each state


However, not every Mealy machine can be converted to
to the output alphabet
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
shifted in time. This is due to the way that state labels
nite-state transducer.
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 xed 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 denition
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
Types according to number of inputs/outputs.
each state. Moore machine is an output producer.
253

254

CHAPTER 47. MOORE MACHINE

47.4.1

Simple

Simple Moore machines have one input and one output:


0

edge detector using XOR

0
1

binary adding machine


clocked sequential systems (a restricted form of
Moore machine where the state changes only when
the global clock signal changes)
Most digital electronic systems are designed as clocked
sequential systems. Clocked sequential systems are a restricted form of Moore machine where the state changes
only when the global clock signal changes. Typically
the current state is stored in ip-ops, and a global
clock signal is connected to the clock input of the ipops. Clocked sequential systems are one way to solve
metastability problems. A typical electronic Moore machine 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 updated. There are design techniques to ensure that no
glitches occur on the outputs during that brief period
while those changes are rippling through the chain, but
most systems are designed so that glitches during that
brief transition time are ignored or are irrelevant. The
outputs then stay the same indenitely (LEDs stay bright,
power stays connected to the motors, solenoids stay energized, etc.), until the Moore machine changes state again.
transition logic

S n+1

output

S0

Sn

R
clock

0
1

Example moore machine

47.4.2 Complex
More complex Moore machines can have multiple inputs
as well as multiple outputs.

47.5 Gedanken-experiments
In Moores paper "Gedanken-experiments on Sequential
Machines,[1] the (n; m; p) automata (or machines) S are
dened as having n states, m input symbols and p output
symbols. Nine theorems are proved about the structure
of S , and experiments with S . Later, " S machines
became known as Moore machines.
At the end of the paper, in Section Further problems,
the following task is stated:

output logic

state memory

input

Another directly following problem is the


improvement of the bounds given at the theorems 8 and 9.
Moores Theorem 8 is formulated as:

reset

Moore machine in combinational logic

Given an arbitrary (n; m; p) machine S ,


such that every two of its states are distinguishable from one another, then there exists an exwhich determines
periment of length n(n1)
2
the state of S at the end of the experiment.

Worked Example

In 1957, A. A. Karatsuba proved the following two theorems, which completely solved Moores 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 0s and two 1s have occurred as inputs.
A moore machine with nine states for the above description is shown on the right. The initial state is state A, and
the nal state is state I. The state table for this example is
as follows:

Theorem A. If S is an (n; m; p) machine,


such that every two of its states are distinguishable from one another, then there exists a branched experiment of length at most

47.8. FURTHER READING

255

(n1)(n2)
2

+ 1 through which one may determine the state of S at the end of the experiment.

Moore E. F. Gedanken-experiments on Sequential


Machines. Automata Studies, Annals of Mathematical Studies, 34, 129153. Princeton University
Press, Princeton, N.J.(1956).

Theorem B. There exists an (n; m; p) machine, every two states of which are distinguishable from one another, such that the
length of the shortest experiments establishing
the state of the machine at the end of the experiment is equal to (n1)(n2)
+1.
2

Karatsuba A. A. Solution of one problem from the


theory of nite automata. Usp. Mat. Nauk, 15:3,
157159 (1960).
Karacuba A. A. Experimente mit Automaten (German) Elektron. Informationsverarb. Kybernetik,
11, 611612 (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 disits length is n+1/2.
tinguished by testimonial reference at the competition of
student works of the faculty of mechanics and mathematics 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), Karatsubas result on the
length of experiments is the only exact nonlinear result,
both in automata theory, and in similar problems of computational complexity theory.

47.6 See also


Synchronous circuit
Mealy machine
Algorithmic state machine

47.7 References
[1] Moore, Edward F (1956). Gedanken-experiments on Sequential Machines. Automata Studies, Annals of Math.
Studies. Princeton, N.J.: Princeton University Press (34):
129153.
[2] Lee, Edward Ashford; Seshia, Sanjit Arunkumar (2013).
Introduction to Embedded Systems (1.08 ed.). UC Berkeley: Lulu.com. ISBN 9780557708574. Retrieved 1 July
2014.
[3] Karatsuba, A. A. (1960). Solution of one problem from
the theory of nite automata. Uspekhi Mat. Nauk (15:3):
157159.

47.8 Further reading


Conway, J.H. (1971). Regular algebra and nite
machines. London: Chapman and Hall. ISBN 0412-10620-5. Zbl 0231.94041.

Chapter 48

Network congestion
Network congestion in data networking and queueing
theory is the reduced quality of service that occurs when
a network node is carrying more data than it can handle.
Typical eects include queueing delay, packet loss or the
blocking of new connections. A consequence of the latter
two eects is that an incremental increase in oered load
leads either only to a small increase or even a decrease in
network throughput.[1]

computer
Even on fast computer networks (e.g. Gigabit Ethernet), the backbone can easily be congested by a few
servers and client PCs.
The aggregate transmission from P2P networks have
no problem lling an uplink or some other network
bottleneck.

Network protocols that use aggressive retransmissions to


compensate for packet loss due to congestion can increase
congestion, even after the initial load has been reduced to
a level that would not normally have induced network congestion. Such networks exhibit two stable states under the
same level of load. The stable state with low throughput
is known as congestive collapse.
Networks use congestion control and congestion avoidance techniques to try to avoid congestion collapse. These
include: exponential backo in protocols such as 802.11
CSMA/CA and the original Ethernet, window reduction
in TCP, and fair queueing in devices such as routers. Another method is to implement priority schemes, transmitting some packets with higher priority than others. Priority schemes help to alleviate the eects of congestion for
services such as 802.1p.

Denial-of-service attacks by botnets are capable of


lling even the largest Internet backbone network
links, generating large-scale network congestion
In telephone networks (particularly mobile phones),
a mass call event can overwhelm digital telephone
circuits

48.2 Congestive collapse

Congestive collapse (or congestion collapse) is the condition in which congestion prevents or limits useful communication. Congestion collapse generally occurs at choke
points in the network, where incoming trac exceeds
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 specic ows. 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 trac 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 identied as a possible probRFC 2914 addresses the subject of congestion control in lem by 1984, for example in RFC 896. It was rst obdetail.
served on the early Internet in October 1986, when the
NSFnet phase-I backbone dropped three orders of magnitude from its capacity of 32 kbit/s to 40 bit/s, which
continued until end nodes started implementing Van Ja48.1 Network capacity
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
intermediate routers, the intermediate routers discarded
ing time and link throughput.
many packets, expecting the end points of the network
For example:
to retransmit the information. However, early TCP implementations had poor retransmission behavior. When
A wireless LAN is easily lled 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:

48.3 Congestion control

By type and amount of feedback received from the


network: Loss; delay; single-bit or multi-bit explicit
signals

Congestion control controls trac entry into a telecommunications network, to avoid congestive collapse by
avoiding oversubscription by reducing the rate of packets. It should not be confused with ow control, which
prevents the sender from overwhelming the receiver.

By incremental deployability: Only sender needs


modication; sender and receiver need modication; only router needs modication; sender, receiver and routers need modication.

48.3.1

By performance aspect: high bandwidth-delay product networks; lossy links; fairness; advantage to
short ows; variable-rate links

Theory of congestion control

The theory on congestion control was pioneered by Frank


Kelly, who applied microeconomic theory and convex
optimization theory to describe how individuals controlling their own rates can interact to achieve an optimal
network-wide rate allocation.

By fairness criterion: max-min, proportional, minimum potential delay

48.4 Mitigation

Examples of optimal rate allocation are max-min fair


allocation and Kellys suggestion of proportionally fair alA few mechanisms have been invented to prevent network
location, although many others are possible.
congestion or to deal with a network collapse:
Let xi be the rate of ow i , Cl be the capacity of link l
, and rli be 1 if ow i uses link l and 0 otherwise. Let x
Network scheduler active queue management (that
, c and R be the corresponding vectors and matrix. Let
is, the arbitrary reorder or drop of network packets
U (x) be an increasing, strictly concave function, called
under overload)
the utility, which measures how much benet a user obtains by transmitting at rate x . The optimal rate alloca Explicit Congestion Notication an extension to IP
tion then satises
and TCP communications protocols that adds a ow
control mechanism

U (xi )
max
TCP congestion control various implementations
x
i
of eorts to deal with network congestion
Rx c
The Lagrange dual of this problem decouples, so that
each ow sets its own rate, based only on a price signalled by the network. Each link capacity imposes a constraint, which gives rise to a Lagrange
multiplier, pl . The
sum of these multipliers, yi = l pl rli , is the price to
which the ow responds.

The correct endpoint behavior is usually to repeat


dropped information, but progressively slow the repetition rate. Provided all endpoints do this, the congestion
lifts and the network resumes normal behavior. Other
strategies such as slow-start ensure that new connections
don't overwhelm the router before congestion detection
initiates.

Congestion control then becomes a distributed optimisation algorithm. Many current congestion control algo- The most common router congestion avoidance mecharithms 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.
ows, while sliding window ow control causes burstiFair queuing is most useful in routers at chokepoints with
ness that causes dierent ows to observe dierent loss
a small number of connections passing through them.
or delay at a given link.
Larger routers must rely on RED.

48.3.2

Some end-to-end protocols behave better under con-

Classication of congestion control gested conditions. TCP is perhaps the best behaved.
The rst TCP implementations to handle congestion were
algorithms

Main article: Taxonomy of congestion control

developed in 1984, but Van Jacobson's inclusion of an


open source solution in the Berkeley Standard Distribution UNIX ("BSD") in 1988 rst provided good behavior.

258

CHAPTER 48. NETWORK CONGESTION

UDP does not control congestion. Protocols built atop


UDP must handle congestion independently. Protocols
that transmit at a xed rate, independent of congestion,
can be problematic. Real-time streaming protocols, including many Voice over IP protocols, have this property.
Thus, special measures, such as quality-of-service routing, must be taken to keep packets from being dropped.

Robust random early detection (RRED)

The robust random early detection (RRED) algorithm


was proposed to improve the TCP throughput against
denial-of-service (DoS) attacks, particularly low-rate
denial-of-service (LDoS) attacks. Experiments conrmed that RED-like algorithms were vulnerable under
Low-rate Denial-of-Service (LDoS) attacks due to the osIn 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 ber-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 ow (owbased-RED/WRED)

48.4.1

Practical network congestion avoidance

and are thereby able to signal a too big bandwidth ow according to some quality of service policy. A policy could
then divide the bandwidth among all ows by some criteria.

Connection-oriented protocols, such as the widely used


TCP protocol, generally watch for packet errors, losses, Explicit Congestion Notication
or delays (see Quality of Service) to adjust the transmit
speed. Various network congestion avoidance processes, Another approach is to use IP Explicit Congestion Notication (ECN).[12] ECN is used only when two hosts signal
support dierent trade-os.[2]
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 notication 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 pubbasis 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 ows experience required for Cisco IOS.
port queue buer tail-drops, defeating TCPs automatic
congestion avoidance. All ows that experience port
queue buer tail-drop begin a TCP retrain at the same
moment this is called TCP global synchronization.

48.4.3

Active queue management

When a router receives a packet marked as ECN-capable


and anticipates (using RED) congestion, it sets the ECN
ag, notifying the sender of congestion. The sender
should respond by decreasing its transmission bandwidth,
e.g., by decreasing the TCP window size (sending rate) or
by other means.

Active queue management (AQM) is the reorder or drop Cisco AQM: Dynamic buer limiting
of network packets inside a transmit buer that is associated with a network interface controller (NIC). This task Cisco Systems (Engine IV and V) has the capability to
classify ows as aggressive (bad) or adaptive (good). It
is performed by the network scheduler.
ensures that no ows ll 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 equipments port queue buer.[8][9] On
network equipment ports with more than one queue See also: TCP window scale option
buer, weighted random early detection (WRED) could
be used if available.
Congestion avoidance can be achieved eciently by reRED indirectly signals to sender and receiver by deleting ducing trac. When an application requests a large le,
some packets, e.g. when the average queue buer 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 sendor cubically more packets,[10] up to e.g. 100%. The av- ing a full window of data (assuming the le is larger than
erage queue buer lengths are computed over 1 second the window). When many applications simultaneously reintervals.
quest downloads, this data creates a congestion point at

48.7. REFERENCES
an upstream provider by ooding the queue. By using a
device to reduce the window advertisement, the remote
servers send less data, thus reducing the congestion. This
technique can reduce network congestion by a factor of
40.

259
Choke exchange
Erlang (unit)
Max-min fairness
Sorcerers Apprentice Syndrome

Backward ECN
Backward ECN (BECN) is another proposed congestion
mechanism. It uses ICMP source quench messages as
an IP signalling mechanism to implement a basic ECN
mechanism for IP networks, keeping congestion notications at the IP level and requiring no negotiation between
network endpoints. Eective congestion notications can
be propagated to transport layer protocols, such as TCP
and UDP, for the appropriate adjustments.[16]

48.5 Side eects of congestive collapse avoidance


48.5.1

Radio links

The protocols that avoid congestive collapse are often


based on the idea that data loss is caused by congestion.
This is true in nearly all cases; errors during transmission
are rare. However, this causes WiFi, 3G or other networks with a radio layer to have poor throughput in some
cases since wireless networks are susceptible to data loss
due to interference. The TCP connections running over
a radio based physical layer see the data loss and tend to
erroneously believe that congestion is occurring.

48.5.2

Short-lived connections

The slow-start protocol performs badly for short connections. Older web browsers created many short-lived connections and opened and closed the connection for each
le. This kept most connections in the slow start mode,
which slowed response times.
To avoid this problem, modern browsers either open multiple connections simultaneously or reuse one connection
for all les requested from a particular server. Initial performance can be poor, and many connections never get
out of the slow-start regime, signicantly increasing latency.

48.6 See also


Bandwidth management
Buerbloat
Cascading failure

TCP congestion-avoidance algorithm


Teletrac engineering
Thrashing
Trac shaping

48.7 References
[1] (Al-Bahadili, 2012, p. 282) Al-Bahadili, H. (2012).
Simulation in computer network design and modeling:
Use and analysis. Hershey, PA: IGI Global.
[2] TCP Tunnels: Avoiding Congestion Collapse (2000)
[3] Van Jacobson, Michael J. Karels. Congestion Avoidance and Control (1988). Proceedings of the Sigcomm '88
Symposium, vol.18(4): pp.314329. Stanford, CA. August, 1988. This paper originated many of the congestion
avoidance algorithms used in TCP/IP.
[4] RFC 2001 - TCP Slow Start, Congestion Avoidance, Fast
Retransmit, and Fast Recovery Algorithms
[5] RFC 2581 - TCP Congestion Control
[6] RFC 3390 - TCP Increasing TCPs Initial Window
[7] TCP Congestion Avoidance Explained via a Sequence Diagram
[8] Sally Floyd: RED (Random Early Detection) Queue Management
[9] Sally Floyd, Van Jacobson. Random Early Detection
Gateways for Congestion Avoidance (1993). IEEE/ACM
Transactions on Networking, vol.1(4): pp.397413. Invented Random Early Detection (RED) gateways.
[10] An Analytical RED Function Design Guaranteeing Stable
System Behavior Quote: "...The advantage of this function lies not only in avoiding heavy oscillations but also
in avoiding link under-utilization at low loads. The applicability of the derived function is independent of the
load range, no parameters are to be adjusted. Compared
to the original linear drop function applicability is extended by far...Our example with realistic system parameters gives an approximation function of the cubic of the
queue size...
[11] Zhang, Changwang; Yin, Jianping; Cai, Zhiping; Chen,
Weifeng (2010). RRED: Robust RED Algorithm to
Counter Low-rate Denial-of-Service Attacks (PDF).
IEEE Communications Letter. IEEE. 14: 489491.
[12] RFC 3168 - The Addition of Explicit Congestion Notication (ECN) to IP

260

CHAPTER 48. NETWORK CONGESTION

[13] Comparative study of RED, ECN and TCP Rate Control


(1999)

Approaches to Congestion Control in Packet Networks

[14] Active Queue Management

Papers in Congestion Control

[15] Enabling Dynamic Buer Limiting

Random Early Detection Homepage

[16] A proposal for Backward ECN for the Internet Protocol

Explicit Congestion Notication Homepage

Deploying IP and MPLS QoS for Multiservice


Networks: Theory and Practice by John Evans,
Clarence Filsls (Morgan Kaufmann, 2007, ISBN
0-12-370549-5)

TFRC Homepage

RFC 2914 - Congestion Control Principles, Sally


Floyd, September, 2000

Recent Publications in low-rate denial-of-service


(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 Filsls (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-toEnd Congestion Control in the Internet (IEEE/ACM
Transactions on Networking, August 1999)
Sally Floyd, On the Evolution of End-to-end Congestion Control in the Internet: An Idiosyncratic View
(IMA Workshop on Scaling Phenomena in Communication 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 uid ow based TCP model
Sally Floyd, Ratul Mahajan, David Wetherall: REDPD: RED with Preferential Dropping
A Generic Simple RED Simulator for educational
purposes by Mehmet Suzen

AIMD-FC Homepage
TCP congestion control simulation: Fast recovery

Chapter 49

Operating system
An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. All
computer programs, excluding rmware, require an operating system to function.

Unix-like operating systems, e.g., Solaris, Linux, as well


as AmigaOS support preemptive multitasking. Cooperative multitasking is achieved by relying on each process to
provide time to the other processes in a dened manner.
16-bit versions of Microsoft Windows used cooperative
Time-sharing operating systems schedule tasks for e- 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 storage, printing, and other resources.
For hardware functions such as input and output
and memory allocation, the operating system acts as
an intermediary between programs and the computer
hardware,[1][2] although the application code is usually
executed directly by the hardware and frequently makes
system calls to an OS function or is interrupted by it. Operating systems are found on many devices that contain a
computer from cellular phones and video game consoles
to web servers and supercomputers.

49.1.2 Single- and multi-user

Single-user operating systems have no facilities to distinguish users, but may allow multiple programs to run in
tandem.[5] A multi-user operating system extends the basic concept of multi-tasking with facilities that identify
processes and resources, such as disk space, belonging to
multiple users, and the system permits multiple users to
interact with the system at the same time. Time-sharing
operating systems schedule tasks for ecient 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
49.1.3 Distributed
the server and supercomputing sectors. Other specialized
classes of operating systems, such as embedded and realA distributed operating system manages a group of distime systems, exist for many applications.
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 computations are carried out on more than one machine. When
computers in a group work in cooperation, they form a
49.1.1 Single- and multi-tasking
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
achieved by time-sharing, dividing the available processor time between multiple processes that are each interrupted repeatedly in time slices by a task-scheduling subsystem of the operating system. Multi-tasking may be
characterized in preemptive and co-operative types. In
preemptive multitasking, the operating system slices the
CPU time and dedicates a slot to each of the programs.

49.1.4 Templated
In an OS, distributed and cloud computing context,
templating refers to creating a single virtual machine image as a guest operating system, then saving it as a tool for
multiple running virtual machines. The technique is used
both in virtualization and cloud computing management,
and is common in large server warehouses.[7]

261

262

CHAPTER 49. OPERATING SYSTEM

49.1.5

Embedded

49.1.6

Real-time

from data on punched paper cards. After programmable


general purpose computers were invented, machine lanEmbedded 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 resources. They are very compact and extremely ecient
by design. Windows CE and Minix 3 are some examples
of embedded operating systems.

A real-time operating system is an operating system that


guarantees to process events or data by a specic 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 networking, are provided in the form of libraries. These libraries
are composed with the application and conguration 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.

49.2 History
Main article: History of operating systems
See also: Resident monitor
Early computers were built to perform a series of single
tasks, like a calculator. Basic operating system features
were developed in the 1950s, such as resident monitor
functions that could automatically run dierent programs
in succession to speed up processing. Operating systems
did not exist in their modern and more complex forms until the early 1960s.[8] Hardware features were added, that
enabled use of runtime libraries, interrupts, and parallel
processing. When personal computers became popular in
the 1980s, operating systems were made for them similar
in concept to those used on larger computers.

In the early 1950s, a computer could execute only one


program at a time. Each user had sole use of the computer for a limited period of time and would arrive at a
scheduled time with program and data on punched paper
cards or punched tape. The program would be loaded into
the machine, and the machine would be set to work until
the program completed or crashed. Programs could generally be debugged via a front panel using toggle switches
and panel lights. It is said that Alan Turing was a master
of this on the early Manchester Mark 1 machine, and he
was already deriving the primitive conception of an operating system from the principles of the Universal Turing
machine.[8]
Later machines came with libraries of programs, which
would be linked to a users program to assist in operations
such as input and output and generating computer code
from human-readable symbolic code. This was the genesis of the modern-day operating system. However, machines still ran a single job at a time. At Cambridge University in England the job queue was at one time a washing line (clothes line) from which tapes were hung with
dierent colored clothes-pegs to indicate job-priority.

In the 1940s, the earliest electronic digital systems had


no operating systems. Electronic systems of this time
were programmed on rows of mechanical switches or by
jumper wires on plug boards. These were special-purpose
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 rst recognisable modern operating system.[9] Brinch Hansen described it as the
most signicant breakthrough in the history of operating
systems.[10]

in timesharing and programming languages. In the late


1970s, Control Data and the University of Illinois developed the PLATO operating system, which used plasma
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

In 1961, Burroughs Corporation introduced the B5000


with the MCP, (Master Control Program) operating system. The B5000 was a stack machine designed to exclusively support high-level languages with no machine
language or assembler, and indeed the MCP was the
rst OS to be written exclusively in a high-level language
ESPOL, a dialect of ALGOL. MCP also introduced
many other ground-breaking innovations, such as being
the rst commercial implementation of virtual memory.
During development of the AS/400, IBM made an approach to Burroughs to licence MCP to run on the AS/400
hardware. This proposal was declined by Burroughs
management to protect its existing hardware production.
MCP is still in use today in the Unisys ClearPath/MCP
line of computers.

Mainframes

Main article: Mainframe computer


See also: History of IBM mainframe operating systems

Through the 1950s, many major features were pioneered


in the eld of operating systems, including batch processing, input/output interrupt, buering, multitasking,
spooling, runtime libraries, link-loading, and programs
for sorting records in les. These features were included
or not included in application software at the option of application programmers, rather than in a separate operating system used by all applications. In 1959, the SHARE
Operating System was released as an integrated utility for
the IBM 704, and later in the 709 and 7090 mainframes,
although it was quickly supplanted by IBSYS/IBJOB on UNIVAC, the rst commercial computer manufacturer,
produced a series of EXEC operating systems. Like
the 709, 7090 and 7094.
all early main-frame systems, this batch-oriented system
During the 1960s, IBMs 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 writGeneral Electric and MIT developed General Electric
ten for OS/360 can still be run on modern machines.
Comprehensive Operating Supervisor (GECOS), which
OS/360 also pioneered the concept that the operating sysintroduced 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 le space in secondary storage, and le locking during update. When the process is terminated for Digital Equipment Corporation developed many operany reason, all of these resources are re-claimed by the ating systems for its various computer lines, including
TOPS-10 and TOPS-20 time sharing systems for the 36operating system.
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 hardtems 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 dierent underlying
and ACP (Airline Control Program), as well as a few computer architectures to appear to be the same as othnon-IBM systems: MTS (Michigan Terminal System), ers in a series. In fact, most 360s after the 360/40 (exMUSIC (Multi-User System for Interactive Computing), cept the 360/165 and 360/168) were microprogrammed
implementations.
and ORVYL (Stanford Timesharing System).
Control Data Corporation developed the SCOPE operating system in the 1960s, for batch processing. In cooperation with the University of Minnesota, the Kronos
and later the NOS operating systems were developed during the 1970s, which supported simultaneous batch and
timesharing use. Like many commercial timesharing systems, its interface was an extension of the Dartmouth
BASIC operating systems, one of the pioneering eorts

The enormous investment in software for these systems


made since the 1960s caused most of the original computer manufacturers to continue to develop compatible
operating systems along with the hardware. Notable supported mainframe operating systems include:
Burroughs MCP B5000, 1961 to Unisys
Clearpath/MCP, present

264

CHAPTER 49. OPERATING SYSTEM

IBM OS/360 IBM System/360, 1966 to IBM


z/OS, present
IBM CP-67 IBM System/360, 1967 to IBM z/VM
UNIVAC EXEC 8 UNIVAC 1108, 1967, to OS
2200 Unisys Clearpath Dorado, present

49.2.2

Microcomputers

PC DOS was an early personal computer OS that featured a command line interface.

Mac OS by Apple Computer became the rst widespread OS to


feature a graphical user interface. Many of its features such as
windows and icons would later become commonplace in GUIs.

The rst microcomputers did not have the capacity or


need for the elaborate operating systems that had been
developed for mainframes and minis; minimalistic operating systems were developed, often loaded from ROM
and known as monitors. One notable early disk operating
system was CP/M, which was supported on many early
microcomputers and was closely imitated by Microsoft's
MS-DOS, which became widely popular as the operating system chosen for the IBM PC (IBMs version of it
was called IBM DOS or PC DOS). In the 1980s, Apple
Computer Inc. (now Apple Inc.) abandoned its popular Apple II series of microcomputers to introduce the
Apple Macintosh computer with an innovative Graphical
User Interface (GUI) to the Mac OS.

bilities, provided personal computers with the ability to


run multitasking operating systems like those of earlier
minicomputers and mainframes. Microsoft responded
to this progress by hiring Dave Cutler, who had developed the VMS operating system for Digital Equipment
Corporation. He would lead the development of the
Windows NT operating system, which continues to serve
as the basis for Microsofts operating systems line. Steve
Jobs, a co-founder of Apple Inc., started NeXT Computer 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 programmer Richard Stallman with the goal of creating a complete 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 unproductive. In 1991, Finnish computer science student
Linus Torvalds, with cooperation from volunteers collaborating over the Internet, released the rst version of the
Linux kernel. It was soon merged with the GNU user
space components and system software to form a complete 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 Foundation remain opposed to, preferring the name GNU/Linux.
The Berkeley Software Distribution, known as BSD, is
the UNIX derivative distributed by the University of California, 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 systems


49.3.1 Unix and Unix-like operating systems
Main article: Unix
Evolution of Unix systems
Unix was originally written in assembly language.[12] Ken
Thompson wrote B, mainly based on BCPL, based on his
experience in the MULTICS project. B was replaced by
C, and Unix, rewritten in C, developed into a large, complex family of inter-related operating systems which have
been inuential in every modern operating system (see
History).

The Unix-like family is a diverse group of operating sysThe 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


The Open Group which licenses it for use with any operating system that has been shown to conform to their definitions. UNIX-like is commonly used to refer to the
large set of operating systems which resemble the original UNIX.
Unix-like systems run on a wide variety of computer architectures. They are used heavily for servers in business,
as well as workstations in academic and engineering environments. Free UNIX variants, such as Linux and BSD,
are popular in these areas.
Four operating systems are certied by The Open Group
(holder of the Unix trademark) as Unix. HPs HP-UX and
IBMs AIX are both descendants of the original System V
Unix and are designed to run only on their respective vendors hardware. In contrast, Sun Microsystems's Solaris
can run on multiple types of hardware, including x86 and
Sparc servers, and PCs. Apples OS X, a replacement for
Apples earlier (non-Unix) Mac OS, is a hybrid kernelbased BSD variant derived from NeXTSTEP, Mach, and
FreeBSD.

265
In 1974, University of California, Berkeley installed its
rst Unix system. Over time, students and sta in the
computer science department there began adding new
programs to make things easier, such as text editors.
When Berkeley received new VAX computers in 1978
with Unix installed, the schools undergraduates modied
Unix even more in order to take advantage of the computers hardware possibilities. The Defense Advanced
Research Projects Agency of the US Department of Defense took interest, and decided to fund the project. Many
schools, corporations, and government organizations took
notice and started to use Berkeleys version of Unix instead of the ocial one distributed by AT&T.
Steve Jobs, upon leaving Apple Inc. in 1985, formed
NeXT Inc., a company that manufactured high-end computers running on a variation of BSD called NeXTSTEP.
One of these computers was used by Tim Berners-Lee as
the rst webserver to create the World Wide Web.

Developers like Keith Bostic encouraged the project to


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 numPOSIX 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.
BSD and its descendants

OS X Main article: OS X
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

The rst server for the World Wide Web ran on NeXTSTEP,
based on BSD.

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
successor to the original Mac OS, which had been Apples
primary operating system since 1984. Unlike its predecessor, OS X is a UNIX operating system built on technology that had been developed at NeXT through the second half of the 1980s and up until Apple purchased the
company in early 1997. The operating system was rst
released in 1999 as Mac OS X Server 1.0, with a desktoporiented version (Mac OS X v10.0 Cheetah) following
in March 2001. Since then, six more distinct client and
"server" editions of OS X have been released, until the
two were merged in OS X 10.7 Lion.

Distribution family, which includes FreeBSD, NetBSD,


and OpenBSD. These operating systems are most commonly found on webservers, although they can also function as a personal computer OS. The Internet owes much
of its existence to BSD, as many of the protocols now
commonly used by computers to connect, send and receive data over a network were widely implemented and
rened in BSD. The World Wide Web was also rst
demonstrated on a number of computers running an OS
Prior to its merging with OS X, the server edition OS
based on BSD called NeXTSTEP.

266

CHAPTER 49. OPERATING SYSTEM

X Server was architecturally identical to its desktop


counterpart and usually ran on Apples line of Macintosh server hardware. OS X Server included work group
management and administration software tools that provide simplied 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 integrated into the client version and the product re-branded
as OS X (dropping Mac from the name). The server
tools are now oered 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 modied
version of the Linux kernel
puter students and programmers, and received support
and assistance from volunteers who succeeded in creating 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 modication, 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 le manager and media player (in later verbedded systems[16] such as cell phones. Linux has super- sions, (modied) 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). Incomputers 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 dierent order), used in the web browser to accomplish tasks such as word
[18]
Chromium OS diers from Chrome OS
and Linux runs on the top 10. Linux is also commonly processing.
used on other small energy-ecient 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
Chromium OS

Main articles: Chrome OS and


Main article: Microsoft Windows

49.4. COMPONENTS
Microsoft Windows is a family of proprietary operating systems designed by Microsoft Corporation and primarily targeted to Intel architecture based computers,
with an estimated 88.9 percent total usage share on Web
connected computers.[14][20][21][22] The latest version is
Windows 10.

267

49.4 Components

The components of an operating system all exist in order


to make the dierent parts of a computer work together.
All user software needs to go through the operating system 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
Internet component.
mon version in use.[23][24][25]
Microsoft Windows was rst released in 1985, as an
operating environment running on top of MS-DOS,
49.4.1 Kernel
which was the standard operating system shipped on
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 rmware and device drivers, the kerMS-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
Applications
have all been based on the Windows NT kernel. Current
client versions of Windows run on IA-32, x86-64 and 32bit ARM microprocessors.[29] In addition Itanium is still
supported in older server version Windows Server 2008
R2. In the past, Windows NT supported additional archiKernel
tectures.
Server editions of Windows are widely used. In recent
years, Microsoft has expended signicant capital in an
CPU
Memory
Devices
eort to promote the use of Windows as a server operating system. However, Windows usage on servers
is not as widespread as on personal computers as Windows competes against Linux and BSD for server market
A kernel connects the application software to the hardware of a
share.[30][31]
computer.

nel provides the most basic level of control over all of the
computers 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 resets the CPUs operating states for optimal operation at all
49.3.3 Other
times, and it organizes the data for long-term non-volatile
storage with le systems on such media as disks, tapes,
There have been many operating systems that were signif- ash 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 Apples 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 communities 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 fullls 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 signicant
market share, but have introduced innovations that have
inuenced mainstream operating systems, not least Bell
Labs Plan 9.

involves the creation of a process by the operating system


kernel which assigns memory space and other resources,
establishes a priority for the process in multi-tasking systems, loads program binary code into memory, and ini-

268

CHAPTER 49. OPERATING SYSTEM

tiates execution of the application program which then


interacts with the user and with hardware devices.

Ring 3
Ring 2

Least privileged

Ring 1

Interrupts

Ring 0

Main article: Interrupt

Kernel

Interrupts are central to operating systems, as they provide an ecient way for the operating system to interact with and react to its environment. The alternative
having the operating system watch the various sources
of input for events (polling) that require action can be
found in older systems with very small stacks (50 or 60
bytes) but is unusual in modern systems with large stacks.
Interrupt-based programming is directly supported by
most modern CPUs. Interrupts provide a computer with
a way of automatically saving local register contexts, and
running specic code in response to events. Even very
basic computers support hardware interrupts, and allow
the programmer to specify code which may be run when
that event takes place.

Device drivers

Most privileged

Device drivers
Applications

Privilege rings for the x86 available in protected mode. Operating


systems determine which processes run in each mode.

mode is used by the operating systems kernel for low level


tasks that need unrestricted access to hardware, such as
controlling how memory is written and erased, and communication with devices like graphics cards. Protected
mode, in contrast, is used for almost everything else. Applications operate within protected mode, and can only
use hardware by communicating with the kernel, which
controls everything in supervisor mode. CPUs might
have other modes similar to protected mode as well, such
as the virtual modes in order to emulate older processor
types, such as 16-bit processors on a 32-bit one, or 32-bit
processors on a 64-bit one.

When an interrupt is received, the computers hardware


automatically suspends whatever program is currently
running, saves its status, and runs computer code previously associated with the interrupt; this is analogous to
placing a bookmark in a book in response to a phone call.
In modern operating systems, interrupts are handled by
the operating systems kernel. Interrupts may come from
either the computers hardware or the running program. When a computer rst starts up, it is automatically running in supervisor mode. The rst few programs to run
When a hardware device triggers an interrupt, the oper- on the computer, being the BIOS or EFI, bootloader, and
ating systems 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 denition, 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 antector 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 systems kernel, part of another program, limited set of the CPUs instructions. A user program
or both. Device drivers may then relay information to a may leave protected mode only by triggering an interrupt,
causing control to be passed back to the kernel. In this
running program by various means.
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 systems 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 sumemory, it triggers an interrupt to get the kernels atten- pervisor mode, where the operating system can deal with
the illegal operation the program was attempting (for extion.
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
tem kernel must be responsible for managing all system
memory which is currently in use by programs. This ensures that a program does not interfere with memory already 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 voluntary use of the kernel's memory manager, and do not
exceed their allocated memory. This system of memory
management is almost never seen any more, since programs often contain bugs which can cause them to exceed
their allocated memory. If a program fails, it may cause
memory used by one or more other programs to be affected or overwritten. Malicious programs or viruses may
purposefully alter another programs memory, or may affect the operation of the operating system itself. With
cooperative memory management, it takes only one misbehaved program to crash the system.
Memory protection enables the kernel to limit a process
access to the computers memory. Various methods of
memory protection exist, including memory segmentation and paging. All methods require some level of hardware support (such as the 80286 MMU), which doesn't
exist in all computers.
In both segmentation and paging, certain protected mode
registers specify to the CPU what memory address it
should allow a running program to access. Attempts to
access other addresses trigger an interrupt which cause
the CPU to re-enter supervisor mode, placing the kernel
in charge. This is called a segmentation violation or SegV for short, and since it is both dicult to assign a meaningful result to such an operation, and because it is usually
a sign of a misbehaving program, the kernel generally resorts to terminating the oending program, and reports
the error.
Windows versions 3.1 through ME had some level of
memory protection, but programs could easily circumvent the need to use it. A general protection fault would
be produced, indicating a segmentation violation had occurred; however, the system would often crash anyway.

Virtual memory
Main article: Virtual memory
Further information: Page fault
The use of virtual memory addressing (such as paging
or segmentation) means that the kernel can choose what
memory each program may use at any given time, allowing the operating system to use the same memory locations for multiple tasks.

269

Virtual memory
(per process)

Physical
memory

Another
process's
memory

RAM

Disk
Many operating systems can trick programs into using memory
scattered around the hard disk and RAM as if it is one continuous
chunk of memory, called virtual memory.

memory. (See section on memory management.) Under


UNIX this kind of interrupt is referred to as a page fault.
When the kernel detects a page fault it generally adjusts
the virtual memory range of the program which triggered
it, granting it access to the memory requested. This gives
the kernel discretionary power over where a particular applications memory is stored, or even whether or not it has
actually been allocated yet.
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 programs. This is called swapping, as an area of memory can
be used by multiple programs, and what that memory area
contains can be swapped or exchanged on demand.
Virtual memory provides the programmer or the user
with the perception that there is a much larger amount of
RAM in the computer than is really there.[32]

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 independent 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 computers time to execute.
An operating system kernel contains a scheduling program 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 process by the kernel, which allows the program access to the
CPU and memory. Later, control is returned to the kernel through some mechanism, so that another program
may be allowed to use the CPU. This so-called passing
of control between the kernel and applications is called a
context switch.

File systems allow users and programs to organize and sort les
on a computer, often through the use of directories (or folders)

operating systems. Computers store data on disks using


les, which are structured in specic ways in order to allow for faster access, higher reliability, and to make better use of the drives available space. The specic way in
which les are stored on a disk is called a le system, and
enables les to have names and attributes. It also allows
them to be stored in a hierarchy of directories or folders
arranged in a directory tree.

An early model which governed the allocation of time


to programs was called cooperative multitasking. In this
model, when control is passed to a program by the kernel, it may execute for as long as it wants before explicitly
returning control to the kernel. This means that a malicious 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 le system. Early le
the entire system if it enters an innite loop.
systems were limited in their capacity, speed, and in the
Modern operating systems extend the concepts of appli- kinds of le names and directory structures they could
cation preemption to device drivers and kernel code, so use. These limitations often reected limitations in the
that the operating system has preemptive control over in- operating systems they were designed for, making it very
dicult for an operating system to support more than one
ternal run-times as well.
le 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, operatin 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 le system or VFS. An operating sysoperating system kernels make use of a timed interrupt. tem such as UNIX supports a wide array of storage deA protected mode timer is set by the kernel which trig- vices, regardless of their design or le systems, allowing
gers a return to supervisor mode after the specied time them to be accessed through a common application prohas elapsed. (See above sections on Interrupts and Dual gramming interface (API). This makes it unnecessary for
programs to have any knowledge about the device they
Mode Operation.)
are accessing. A VFS allows the operating system to proOn many single user operating systems cooperative mul- vide programs with access to an unlimited number of detitasking is perfectly adequate, as home computers gen- vices with an innite variety of le systems installed on
erally run a small number of well tested programs. The them, through the use of specic device drivers and le
AmigaOS is an exception, having preemptive multitask- system drivers.
ing from its very rst version. Windows NT was the rst
version of Microsoft Windows which enforced preemp- A connected storage device, such as a hard drive, is active multitasking, but it didn't reach the home user mar- cessed through a device driver. The device driver underket until Windows XP (since Windows NT was targeted stands the specic language of the drive and is able to
translate that language into a standard language used by
at professionals).
the operating system to access all disk drives. On UNIX,
this is the language of block devices.
Disk access and le systems

When the kernel has an appropriate device driver in place,


it can then access the contents of the disk drive in raw forMain article: Virtual le system
mat, which may contain one or more le systems. A le
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
access each specic le system into a standard set of commands that the operating system can use to talk to all le
systems. Programs can then deal with these le systems
on the basis of lenames, and directories/folders, contained within a hierarchical structure. They can create,
delete, open, and close les, as well as gather various information about them, including access permissions, size,
free space, and creation and modication dates.
Various dierences between le systems make supporting all le systems dicult. Allowed characters in le
names, case sensitivity, and the presence of various kinds
of le attributes makes the implementation of a single
interface for every le system a daunting task. Operating systems tend to recommend using (and so support
natively) le systems specically designed for them; for
example, NTFS in Windows and ext3 and ReiserFS in
Linux. However, in practice, third party drivers are usually available to give support for the most widely used
le systems in most general-purpose operating systems
(for example, NTFS is available in Linux through NTFS3g, and ext2/3 and ReiserFS are available in Windows
through third-party software).
Support for le systems is highly varied among modern
operating systems, although there are several common
le systems which almost all operating systems include
support and drivers for. Operating systems vary on le
system support and on the disk formats they may be installed on. Under Windows, each le system is usually
limited in application to certain media; for example, CDs
must use ISO 9660 or UDF, and as of Windows Vista,
NTFS is the only le system which the operating system
can be installed on. It is possible to install Linux onto
many types of le systems. Unlike other operating systems, Linux and UNIX allow any le system to be used
regardless of the media it is stored in, whether it is a hard
drive, a disc (CD, DVD...), a USB ash drive, or even
contained within a le located on another le system.

Device drivers
Main article: Device driver
A device driver is a specic type of computer software
developed to allow interaction with hardware devices.
Typically this constitutes an interface for communicating with the device, through the specic computer bus
or communications subsystem that the hardware is connected to, providing commands to and/or receiving data
from the device, and on the other end, the requisite interfaces to the operating system and software applications.
It is a specialized hardware-dependent computer program
which is also operating system specic that enables another program, typically an operating system or applications software package or computer program running under the operating system kernel, to interact transparently
with a hardware device, and usually provides the requi-

271
site interrupt handling necessary for any necessary asynchronous time-dependent hardware interfacing needs.
The key design goal of device drivers is abstraction. Every model of hardware (even within the same class of
device) is dierent. Newer models also are released by
manufacturers that provide more reliable or better performance and these newer models are often controlled differently. Computers and their operating systems cannot
be expected to know how to control every device, both
now and in the future. To solve this problem, operating systems essentially dictate how every type of device
should be controlled. The function of the device driver is
then to translate these operating system mandated function calls into device specic calls. In theory a new device, which is controlled in a new manner, should function
correctly if a suitable driver is available. This new driver
ensures that the device appears to operate as usual from
the operating systems point of view.
Under versions of Windows before Vista and versions of
Linux before 2.6, all driver execution was co-operative,
meaning that if a driver entered an innite loop it would
freeze the system. More recent revisions of these operating systems incorporate kernel preemption, where the
kernel interrupts the driver to give it tasks, and then separates itself from the process until it receives a response
from the device driver, or gives it more tasks to do.

49.4.2 Networking
Main article: Computer network
Currently most operating systems support a variety of networking protocols, hardware, and applications for using
them. This means that computers running dissimilar operating systems can participate in a common network for
sharing resources such as computing, les, printers, and
scanners using either wired or wireless connections. Networks can essentially allow a computers operating system
to access the resources of a remote computer to support
the same functions as it could if those resources were connected directly to the local computer. This includes everything from simple communication, to using networked
le systems or even sharing another computers graphics
or sound hardware. Some network services allow the resources of a computer to be accessed transparently, such
as SSH which allows networked users direct access to a
computers command line interface.
Client/server networking allows a program on a computer, called a client, to connect via a network to another
computer, called a server. Servers oer (or host) various
services to other network computers and users. These
services are usually provided through ports or numbered
access points beyond the servers network address. Each
port number is usually associated with a maximum of one
running program, which is responsible for handling requests 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 naputer by passing requests to the operating system kernel. ture. The United States Government Department of DeMany operating systems support one or more vendor- fense (DoD) created the Trusted Computer System Evaluspecic or open networking protocols as well, for ex- ation Criteria (TCSEC) which is a standard that sets baample, SNA on IBM systems, DECnet on systems from sic requirements for assessing the eectiveness of secuDigital Equipment Corporation, and Microsoft-specic rity. This became of vital importance to operating system
protocols (SMB) on Windows. Specic protocols for spe- makers, because the TCSEC was used to evaluate, clascic tasks may also be supported such as NFS for le 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 extended over the network to provide sound from local ap- classied information.
plications, on a remote systems sound hardware.

49.4.3

Security

Main article: Computer security


A computer being secure depends on a number of technologies working properly. A modern operating system
provides access to a number of resources, which are available to software running on the system, and to external
devices like networks via the kernel.
The operating system must be capable of distinguishing between requests which should be allowed to be processed, and others which should not be processed. While
some systems may simply distinguish between privileged and non-privileged, systems commonly have a
form of requester identity, such as a user name. To establish identity there may be a process of authentication.
Often a username must be quoted, and each username
may have a password. Other methods of authentication,
such as magnetic cards or biometric data, might be used
instead. In some cases, especially connections from the
network, resources may be accessed with no authentication at all (such as reading les over a network share).
Also covered by the concept of requester identity is authorization; the particular services and resources accessible by the requester once logged into a system are tied to
either the requesters user account or to the variously congured groups of users to which the requester belongs.
In addition to the allow or disallow model of security, a
system with a high level of security also oers auditing
options. These would allow tracking of requests for access to resources (such as, who has been reading this
le?"). Internal security, or security from an already running program is only possible if all possibly harmful requests must be carried out through interrupts to the operating system kernel. If programs can directly access
hardware and resources, they cannot be secured.
External security involves a request from outside the computer, such as a login at a connected console or some
kind of network connection. External requests are often passed through device drivers to the operating systems kernel, where they can be passed onto applications,
or carried out directly. Security of operating systems
has long been a concern because of highly sensitive data

Network services include oerings such as le sharing,


print services, email, web sites, and le transfer protocols (FTP), most of which can have compromised security. At the front line of security are hardware devices
known as rewalls or intrusion detection/prevention systems. At the operating system level, there are a number
of software rewalls available, as well as intrusion detection/prevention systems. Most modern operating systems
include a software rewall, which is enabled by default. A
software rewall can be congured to allow or deny network trac to or from a service or application running
on the operating system. Therefore, one can install and
be running an insecure service, such as Telnet or FTP,
and not have to be threatened by a security breach because the rewall would deny all trac trying to connect
to the service on that port.
An alternative strategy, and the only sandbox strategy
available in systems that do not meet the Popek and Goldberg virtualization requirements, is where the operating
system is not running user programs as native code, but
instead either emulates a processor or provides a host for
a p-code based system such as Java.
Internal security is especially relevant for multi-user systems; it allows each user of the system to have private les
that the other users cannot tamper with or read. Internal
security is also vital if auditing is to be of any use, since
a program can potentially bypass the operating system,
inclusive of bypassing auditing.

49.4.4 User interface


Main article: Operating system user interface
Every computer that is to be operated by an individual
requires a user interface. The user interface is usually referred to as a shell and is essential if human interaction
is to be supported. The user interface views the directory
structure and requests services from the operating system
that will acquire data from input hardware devices, such
as a keyboard, mouse or credit card reader, and requests
operating system services to display prompts, status messages and such on output hardware devices, such as a
video monitor or printer. The two most common forms of
a user interface have historically been the command-line
interface, where computer commands are typed out lineby-line, and the graphical user interface, where a visual
environment (most commonly a WIMP) is present.

49.5. REAL-TIME OPERATING SYSTEMS

273
Windows 9x had very little distinction between the interface 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 Microsoft Windows, which oer alternatives to the included
Windows shell, but the shell itself cannot be separated
from Windows.

A screenshot of the Bash command line. Each command is typed


out after the 'prompt', and then its output appears below, working
its way down the screen. The current command prompt is at the
bottom.

Graphical user interfaces

Numerous Unix-based GUIs have existed over time, most


derived from X11. Competition among the various vendors of Unix (HP, IBM, Sun) led to much fragmentation,
though an eort to standardize in the 1990s to COSE
and CDE failed for various reasons, and were eventually eclipsed by the widespread adoption of GNOME and
K Desktop Environment. Prior to free software-based
toolkits and desktop environments, Motif was the prevalent toolkit/desktop combination (and was the basis upon
which CDE was developed).
Graphical user interfaces evolve over time. For example, Windows has modied 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


A screenshot of the KDE Plasma Desktop graphical user interface. Programs take the form of images on the screen, and the
les, folders (directories), and applications take the form of icons
and symbols. A mouse is used to navigate the computer.

Main article: Real-time operating system

A real-time operating system (RTOS) is an operating system intended for applications with xed deadlines (realtime computing). Such applications include some small
Most of the modern computer systems support graphical embedded systems, automobile engine controllers, indususer interfaces (GUI), and often include them. In some trial robots, spacecraft, industrial control, and some largecomputer 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 sysWhile 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 Reserthe operating system kernel can allow the GUI to be more vations System.
responsive by reducing the number of context switches required for the GUI to perform its output functions. Other Embedded systems that have xed deadlines use a realoperating 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 sysand Windows Server 2003 exist mostly in kernel space. tems do not support real-time computing.

274

49.6 Operating system development as a hobby


See also: Hobbyist operating system development
Operating system development is one of the most complicated activities in which a computing hobbyist may engage. A hobby operating system may be classied as one
whose code has not been directly derived from an existing
operating system, and has few users and active developers.[34]
In some cases, hobby development is in support of a
"homebrew" computing device, for example, a simple
single-board computer powered by a 6502 microprocessor. Or, development may be for an architecture already
in widespread use. Operating system development may
come from entirely new concepts, or may commence by
modeling an existing operating system. In either case, the
hobbyist is his/her own developer, or may interact with a
small and sometimes unstructured group of individuals
who have like interests.
Examples of a hobby operating system include ReactOS
and Syllable.

49.7 Diversity of operating systems


and portability
Application software is generally written for use on a specic operating system, and sometimes even for specic
hardware. When porting the application to run on another
OS, the functionality required by that application may be
implemented dierently by that OS (the names of functions, meaning of arguments, etc.) requiring the application to be adapted, changed, or otherwise maintained.
Unix was the rst operating system not written in assembly language, making it very portable to systems dierent
from its native PDP-11.[35]
This cost in supporting operating systems diversity can be
avoided by instead writing applications against software
platforms like Java or Qt. These abstractions have already
borne the cost of adaptation to specic operating systems
and their system libraries.
Another approach is for operating system vendors to
adopt standards. For example, POSIX and OS abstraction layers provide commonalities that reduce porting
costs.

49.8 Market share


Main article: Usage share of operating systems

CHAPTER 49. OPERATING SYSTEM

Source: Gartner

In 2014, Android was rst (currently not replicated by


others, in a single year) operating system ever to ship on
a billion devices, becoming the most popular operating
system by installed base.

49.9 See also


Antivirus software
Comparison of operating systems
Hypervisor
Interruptible operating system
List of important publications in operating systems
List of operating systems
Live CD
Glossary of operating systems terms
Microcontroller
Mobile device
Mobile operating system
Network operating system
Object-oriented operating system
Operating System Projects
System Commander
System image
Timeline of operating systems
Usage share of operating systems

49.10 References
[1] Stallings (2005). Operating Systems, Internals and Design
Principles. Pearson: Prentice Hall. p. 6.
[2] Dhotre, I.A. (2009). Operating Systems. Technical Publications. p. 1.
[3] http://gs.statcounter.com/
#desktop-os-ww-monthly-201507-201607-bar
[4] http://gs.statcounter.com/#mobile_
os-ww-monthly-201507-201607-bar
[5] Lorch, Jacob R., and Alan Jay Smith. Reducing processor power consumption by improving processor time
management in a single-user operating system. Proceedings of the 2nd annual international conference on Mobile
computing and networking. ACM, 1996.

49.11. FURTHER READING

[6] Mishra, B.; Singh, N.; Singh, R. (2014). Master-slave


group based model for co-ordinator selection, an improvement of bully algorithm. International Conference on Parallel, Distributed and Grid Computing (PDGC).
pp. 457460. doi:10.1109/PDGC.2014.7030789. ISBN
978-1-4799-7682-9.

275

[27] Using NDIS 2 PCMCIA Network Card Drivers in Windows 95. Support.microsoft.com. Retrieved 2012-0807.
[28] INFO: Windows 95 Multimedia Wave Device Drivers
Must be 16 bit. Support.microsoft.com. Retrieved 201208-07.

[7] Gagne, Silberschatz Galvin (2012). Operating Systems


Concepts. New York: Wiley. p. 716. ISBN 9781118063330.

[29] Arthur, Charles. Windows 8 will run on ARM chips but third-party apps will need rewrite. The Guardian.

[8] Hansen, Per Brinch, ed. (2001). Classic Operating Systems. Springer. pp. 47. ISBN 0-387-95113-X.

[30] Operating System Share by Groups for Sites in All Locations January 2009.

[9] Lavington, Simon (1998). A History of Manchester Computers (2nd ed.). Swindon: The British Computer Society.
pp. 5052. ISBN 978-1-902505-01-5.

[31] Behind the IDC data: Windows still No. 1 in server operating systems. ZDNet. 2010-02-26.

[10] Brinch Hansen, Per (2000). Classic Operating Systems:


From Batch Processing to Distributed Systems. SpringerVerlag.

[32] Stallings, William (2008). Computer Organization & Architecture. New Delhi: Prentice-Hall of India Private
Limited. p. 267. ISBN 978-81-203-2962-1.

[11] Intel Microprocessor Quick Reference Guide - Year.


www.intel.com. Retrieved 2016-04-24.

[33] Poisson, Ken. Chronology of Personal Computer Software. Retrieved on 2008-05-07. Last checked on 200903-30.

[12] Ritchie, Dennis. Unix Manual, rst edition. Lucent


Technologies. Retrieved 22 November 2012.

[34] My OS is less hobby than yours. Osnews. 21 December


2009. Retrieved 21 December 2009.

[13] OS X Mountain Lion Move your Mac even further


ahead. Apple. Retrieved 2012-08-07.

[35] The History of Unix. BYTE. August 1983. p. 188. Retrieved 31 January 2015.

[14] Top 5 Operating Systems from January to April 2011.


StatCounter. October 2009. Retrieved 5 November 2009.

[36] Whitney, Lance (7 January 2014). Android device shipments to top 1 billion this year -- Gartner.

[15] IDC report into Server market share. Idc.com. Retrieved 2012-08-07.
[16] LinuxDevices Sta (23 April 2008). Linux still top embedded OS. LinuxGizmos.com. Retrieved 5 April 2016.
[17] Sublist Generator. Top500.org. Retrieved November
2015. Check date values in: |access-date= (help)
[18] Chromium OS. Chromium.org.

49.11 Further reading


Auslander, Marc A.; Larkin, David C.; Scherr, Allan L. (1981). The evolution of the MVS Operating
System (PDF). IBM J. Research & Development.

[19] Chromium OS FAQ. The Chromium Projects. Retrieved 28 February 2014.

Deitel, Harvey M.; Deitel, Paul; Chones, David.


Operating Systems. Pearson/Prentice Hall. ISBN
978-0-13-092641-8.

[20] Global Web Stats. Net Market Share, Net Applications.


May 2011. Retrieved 2011-05-07.

Bic, Lubomur F.; Shaw, Alan C. (2003). Operating


Systems. Pearson: Prentice Hall.

[21] Global Web Stats. W3Counter, Awio Web Services.


September 2009. Retrieved 2009-10-24.

Silberschatz, Avi; Galvin, Peter; Gagne, Greg


(2008). Operating Systems Concepts. John Wiley &
Sons. ISBN 0-470-12872-0.

[22] Operating System Market Share. Net Applications. October 2009. Retrieved 5 November 2009.
[23] w3schools.com OS Platform Statistics. Retrieved 30
October 2011.
[24] Stats Count Global Stats Top Five Operating Systems.
Retrieved 30 October 2011.

O'Brien, J.A., & Marakas, G.M.(2011). Management Information Systems. 10e. McGraw-Hill Irwin

[25] Global statistics at w3counter.com. Retrieved 23 January 2012.

Leva, Alberto; Maggio, Martina; Papadopoulos,


Alessandro Vittorio; Terraneo, Federico (2013).
Control-based Operating System Design. IET. ISBN
978-1-84919-609-3.

[26] Troubleshooting MS-DOS Compatibility Mode on Hard


Disks. Support.microsoft.com. Retrieved 2012-08-07.

Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea


(2015). Operating Systems: Three Easy Pieces.

276

49.12 External links


Operating Systems at DMOZ
Multics History and the history of operating systems

CHAPTER 49. OPERATING SYSTEM

Chapter 50

OSI model
The Open Systems Interconnection model (OSI
model) is a conceptual model that characterizes and standardizes the communication functions of a telecommunication or computing system without regard to their underlying internal structure and technology. Its goal is the
interoperability of diverse communication systems with
standard protocols. The model partitions a communication system into abstraction layers. The original version
of the model dened seven layers.

These two international standards bodies each developed


a document that dened similar networking models.

In 1983, these two documents were merged to form a


standard called The Basic Reference Model for Open
Systems Interconnection. The standard is usually referred to as the Open Systems Interconnection Reference Model, the OSI Reference Model, or simply the OSI
model. It was published in 1984 by both the ISO, as standard 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 Interlayer below it. For example, a layer that provides error- national Telecommunication Union or ITU-T) as stanfree 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 netlower 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 specic protocols.
visualized as connected by a horizontal connection in that
The concept of a seven-layer model was provided by
layer.
the work of Charles Bachman at Honeywell InformaThe 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 identication 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 implement 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 denitions 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.
The OSI standards documents are available from the ITUT as the X.200-series of recommendations.[1] Some of
the protocol specications were also available as part of
the ITU-T X series. The equivalent ISO and ISO/IEC
standards for the OSI model were available from ISO, but
only some of them without fees.[2]

Communication in the OSI-Model (example with layers 3 to 5)

50.1 History
In the late 1970s, one project was administered by the International 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
IEEE 802.11 (Wi-Fi), as well as personal area networks
beled 1 to 7. Layer 1 is the lowest layer in this model.
such as Bluetooth and IEEE 802.15.4.
At each level N, two entities at the communicating devices (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
other such higher-layer items. Examples of hardware in
protocol-related headers and/or footers.
this layer are network adapters, repeaters, network hubs,
Data processing by two communicating OSI-compatible modems, and ber 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 physias the service data unit (SDU).
cal layer. It, among other things, denes the protocol to
3. At layer N-1 the SDU is concatenated with a header, establish and terminate a connection between two physa footer, or both, producing a layer N-1 PDU. It is ically connected devices. It also denes the protocol for
ow control between them.
then passed to layer N-2.
[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 receiving device.
5. At the receiving device the data is passed from
the lowest to the highest layer as a series of SDUs
while being successively stripped from each layers
header and/or footer, until reaching the topmost
layer, where the last of the data is consumed.
Some orthogonal aspects, such as management and
security, involve all of the layers (See ITU-T X.800
Recommendation[5] ). These services are aimed at improving the CIA triad - condentiality, integrity, and
availability - of the transmitted data. In practice, the
availability of a communication service is determined
by the interaction between network design and network
management protocols. Appropriate choices for both of
these are needed to protect against denial of service.

Media Access Control (MAC) layer - responsible for


controlling how devices in a network gain access to
medium and permission to transmit it.
Logical Link Control (LLC) layer - responsible for
identifying Network layer protocols and then encapsulating them and controls error checking and frame
synchronization.
The MAC and LLC layers of IEEE 802 networks such
as 802.3 Ethernet, 802.11 Wi-Fi, and 802.15.4 ZigBee,
operate at the data link layer.
The Point-to-Point Protocol (PPP) is a data link layer that
can operate over several dierent physical layers, such as
synchronous and asynchronous serial lines.

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 ow
control by means of a selective-repeat sliding-window
The physical layer denes the electrical and physical spec- protocol.
ications of the data connection. It denes the relationship between a device and a physical transmission
medium (e.g., a copper or ber optical cable, radio fre- 50.2.3 Layer 3: Network Layer
quency). This includes the layout of pins, voltages, line
impedance, cable specications, signal timing and simi- The network layer provides the functional and procedular 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 dene transmission into physical machine address. A network is a medium
mode as simplex, half duplex, and full duplex. It denes 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


of the destination node and letting the network nd the
way to deliver the message to the destination node, possibly routing it through intermediate nodes. If the message
is too large to be transmitted from one node to another on
the data link layer between those nodes, the network may
implement message delivery by splitting the message into
several fragments at one node, sending the fragments independently, and reassembling the fragments at another
node. It may, but need not, report delivery errors.

and classication of mail and parcels sent. Do remember,


however, that a post oce manages the outer envelope of
mail. Higher layers may have the equivalent of double
envelopes, such as cryptographic presentation services
that can be read by the addressee only. Roughly speaking, tunneling protocols operate at the transport layer,
such as carrying non-IP protocols such as IBM's SNA or
Novell's IPX over an IP network, or end-to-end encryption with IPsec. While Generic Routing Encapsulation
(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 deprovide 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.
ned 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 denition 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
Protocol Suite are commonly categorized as layer-4 pronetwork layer, not the protocol that carries them.[7]
tocols within OSI.

50.2.4

Layer 4: Transport Layer

50.2.5 Layer 5: Session Layer

The transport layer provides the functional and procedural means of transferring variable-length data sequences The session layer controls the dialogues (connections) befrom 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 operAn example of a transport-layer protocol in the standard ation, and establishes checkpointing, adjournment, terInternet 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 ow 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 denes ve classes of connection-mode transport entities may use dierent syntax and semantics if the preprotocols 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 connections. Class 4 is closest to TCP, although TCP contains
functions, such as the graceful close, which OSI assigns
to the session layer. Also, all OSI TP connection-mode
protocol classes provide expedited data and preservation
of record boundaries. Detailed characteristics of TP0-4
classes are shown in the following table:[8]

This layer provides independence from data representation (e.g., encryption) by translating between application
and network formats. The presentation layer transforms
data into the form that the application accepts. This layer
formats and encrypts data to be sent across a network. It
is sometimes called the syntax layer.[9]

The original presentation structure used the Basic EncodAn 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 oce, which deals with the dispatch capabilities such as converting an EBCDIC-coded text

280

CHAPTER 50. OSI MODEL

le to an ASCII-coded le, or serialization of objects and


other data structures from and to XML.

50.2.7

Layer 7: Application Layer

The application layer is the OSI layer closest to the end


user, which means both the OSI application layer and the
user interact directly with the software application. This
layer interacts with software applications that implement
a communicating component. Such application programs
fall outside the scope of the OSI model. Applicationlayer functions typically include identifying communication partners, determining resource availability, and synchronizing communication. When identifying communication partners, the application layer determines the
identity and availability of communication partners for
an application with data to transmit. When determining
resource availability, the application layer must decide
whether sucient network resources for the requested
communication exist. In synchronizing communication,
all communication between applications requires cooperation that is managed by the application layer. This layer
supports application and end-user processes. Communication partners are identied, quality of service is identied, user authentication and privacy are considered, and
any constraints on data syntax are identied. Everything
at this layer is application-specic.

ARP is used to translate IPv4 addresses (OSI layer


3) into Ethernet MAC addresses (OSI layer 2).
Domain Name Service is an Application Layer service which is used to look up the IP address of a
given domain name. Once a reply is received from
the DNS server, it is then possible to form a Layer
3 connection to the third-party host.
Cross MAC and PHY Scheduling is essential in
wireless networks because of the time varying nature of wireless channels. By scheduling packet
transmission only in favorable channel conditions,
which requires the MAC layer to obtain channel
state information from the PHY layer, network
throughput can be signicantly improved and energy waste can be avoided.[10]

50.4 Interfaces
Neither the OSI Reference Model nor OSI protocols
specify any programming interfaces, other than deliberately abstract service specications. Protocol specications precisely dene the interfaces between dierent
computers, but the software interfaces inside computers,
known as network sockets are implementation-specic.

For example, Microsoft Windows' Winsock, and Unix's


Berkeley sockets and System V Transport Layer Interface, 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 aect more than one layer. Examples Interface standards, except for the physical layer to meinclude the following:
dia, are approximate implementations of OSI service
specications.
Security service (telecommunication)[5] as dened
by ITU-T X.800 recommendation.
Management functions, i.e. functions that permit to 50.5 Examples
congure, instantiate, monitor, terminate the communications of two or more entities: there is a spe- 50.6 Comparison
with TCP/IP
cic application-layer protocol, common managemodel
ment information protocol (CMIP) and its corresponding service, common management information service (CMIS), they need to interact with every The design of protocols in the TCP/IP model of the Inlayer in order to deal with their instances.
ternet does not concern itself with strict hierarchical en[16]
RFC 3439 contains a sec Multiprotocol Label Switching (MPLS) operates at capsulation and layering.
tion
entitled
Layering
considered
harmful".[17] TCP/IP
an OSI-model layer that is generally considered to lie
between traditional denitions 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 endto provide a unied data-carrying service for both to-end transport connection; the internetworking range;
of the direct links to other nodes on the
circuit-based clients and packet-switching clients and the scope[18]
local
network.
which provide a datagram-based service model. It
can be used to carry many dierent kinds of traf- Despite using a dierent concept for layering than the
c, 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 application layer, presentation layer, and most of the
session layer.

[5] ITU-T Recommendataion X.800 (03/91), Security architecture for Open Systems Interconnection for CCITT applications". ITU. Retrieved 14 August 2015.

Its end-to-end transport layer includes the graceful


close function of the OSI session layer as well as the
OSI transport layer.

[6] 5.2 RM description for end stations. IEEE Std 8022014, IEEE Standard for Local and Metropolitan Area
Networks: Overview and Architecture. ieee.

The internetworking layer (Internet layer) is a subset


of the OSI network layer.

[7] International Organization for Standardization (1989-1115). ISO/IEC 7498-4:1989 -- Information technology -Open Systems Interconnection -- Basic Reference Model:
Naming and addressing. ISO Standards Maintenance
Portal. ISO Central Secretariat. Retrieved 2015-08-17.

The link layer includes the OSI data link layer and
sometimes the physical layers, as well as some protocols of the OSIs network layer.
These comparisons are based on the original seven-layer
protocol model as dened in ISO 7498, rather than renements in such things as the internal organization of
the network layer document.

[8] ITU-T Recommendation X.224 (11/1995) ISO/IEC


8073, Open Systems Interconnection - Protocol for providing the connection-mode transport service". ITU.
[9] Grigonis, Richard (2000). Computer telephony- encyclopaedia. CMP. p. 331. ISBN 9781578200450.

The presumably strict layering of the OSI model as it [10] G. Miao; G. Song (2014). Energy and spectrum ecient
wireless network design. Cambridge University Press.
is usually described does not present contradictions in
ISBN 1107039886.
TCP/IP, as it is permissible that protocol usage does not
follow the hierarchy implied in a layered model. Such ex[11] ITU-T Recommendation Q.1400 (03/1993)], Architecamples 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 particular X.711) and ISO 9596.

50.7 See also


Hierarchical internetworking model
Management plane
Layer 8
Protocol stack
Service layer
WAP protocol suite
List of information technology acronyms

[14] Internetworking Technology Handbook - Internetworking Basics [Internetworking]". Cisco. 15 January 2014.
Retrieved 14 August 2015.
[15] 3GPP specication: 36.300. 3gpp.org. Retrieved 14
August 2015.
[16] RFC 3439
[17] RFC 3439 - Some Internet Architectural Guidelines and
Philosophy. ietf.org. Retrieved 14 August 2015.
[18] Walter Goralski. The Illustrated Network: How TCP/IP
Works in a Modern Network (PDF). Morgan Kaufmann.
p. 26. ISBN 978-0123745415.

IBM Systems Network Architecture


Internet protocol suite

50.8 References
[1] ITU-T X-Series Recommendations
[2] Publicly Available Standards. Standards.iso.org. 201007-30. Retrieved 2010-09-11.
[3] The OSI Models Seven Layers Dened and Functions
Explained. Microsoft Support. Retrieved 2014-12-28.
[4] RFC 4253

50.9 External links


Microsoft Knowledge Base: The OSI Models Seven
Layers Dened and Functions Explained
ISO/IEC standard 7498-1:1994 (PDF document inside ZIP archive) (requires HTTP cookies in order
to accept licence agreement)
ITU-T X.200 (the same contents as from ISO)
The ISO OSI Reference Model , Beluga graph of
data units and groups of layers

282
Zimmermann, Hubert (April 1980). OSI Reference Model The ISO Model of Architecture
for Open Systems Interconnection. IEEE Transactions on Communications. 28 (4): 425432.
doi:10.1109/TCOM.1980.1094702.
CiteSeerX:
10.1.1.136.9497.
Cisco Systems Internetworking Technology Handbook
Osi Model : 7 Layer Of The Network Communication

CHAPTER 50. OSI MODEL

Chapter 51

Physical quantity
A physical quantity is a physical property of a
phenomenon, body, or substance, that can be quantied
by measurement.[1] A physical quantity can be expressed
as the combination of a magnitude expressed by a
number usually a real number and a unit; for example, 1.67492751027 kg (the mass of the neutron), or
299792458 metres per second (the speed of light). Physical quantities are measured as 'nu' where n is the magnitude and u is the unit. For example: A boy measured the
length of a room as 3 m. Here 3 is the magnitude and m
(metre) is the unit. 3 m can also be written as 300 cm.
This shows that n1u1 =n2u2. Almost all matters have
quantity.

to be written in italic rather than upright roman


typeface while the quantity is also in italic. For
example cp or cisobaric is heat capacity at constant pressure.
Note the dierence in the style of the subscripts: k and p are abbreviations of the words
kinetic and potential, whereas p (italic) is the
symbol for the physical quantity pressure rather
than an abbreviation of the word pressure.
Indices: These are quite apart from the above,
their use is for mathematical formalism, see
Index notation.
Scalars: Symbols for physical quantities are usually chosen to be a single letter of the Latin or Greek alphabet,
and are printed in italic type.

51.1 Symbols, nomenclature


General: Symbols for quantities should be chosen
according to the international recommendations from
ISO/IEC 80000, the IUPAP red book and the IUPAC
green book. For example, the recommended symbol for
the physical quantity 'mass is m, and the recommended
symbol for the quantity 'charge' is Q.

Vectors: Symbols for physical quantities that are vectors


are in bold type, underlined or with an arrow above. If,
e.g., u is the speed of a particle, then the straightforward
notation for its velocity is u, u, or u .
Numbers and elementary functions

Numerical quantities, even those denoted by letters, are


usually printed in roman (upright) type, though someSubscripts 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 specic 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.
Subscripts and indices

Examples

Name reference:
The quantity has a
subscripted or superscripted single letter,
a number of letters, or an entire word, to specify what concept or entity they refer to, and
tend to be written in upright roman typeface
rather than italic while the quantity is in italic.
For instance E or E is usually used to
denote kinetic energy and E or E is
usually used to denote potential energy.
Quantity reference: The quantity has a
subscripted or superscripted single letter, a
number of letters, or an entire word, to specify what measurement/s they refer to, and tend

real numbers are as usual, such as 1 or 2,


e for the base of natural logarithm,
i for the imaginary unit,
for 3.14159265358979323846264338327950288...
x, y, dz,
sin , sinh , log x

51.2 Units and dimensions


Units
283

284
Most physical quantities include a unit, but not all some
are dimensionless. Neither the name of a physical quantity, nor the symbol used to denote it, implies a particular choice of unit, though SI units are usually preferred
and assumed today due to their ease of use and all-round
applicability. For example, a quantity of mass might be
represented by the symbol m, and could be expressed in
the units kilograms (kg), pounds (lb), or daltons (Da).

CHAPTER 51. PHYSICAL QUANTITY

51.4.2 Densities, ows, gradients, and moments


Important and convenient derived quantities such as densities, uxes, ows, currents are associated with many
quantities. Sometimes dierent terms such as current
density and ux density, rate, frequency and current, are
used interchangeably in the same context, sometimes they
are used uniqueley.

To clarify these eective 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 applicable, their denitions, 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, specic, molar, and ux 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 writgarded 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 eld, since only the nabla/del operator or grad needs to be written. For spatial density, current, current density and ux, the notations are
51.3 Base quantities
common from one context to another, diering only by a
change in subscripts.
Main article: International System of Quantities
For current density, ^t is a unit vector in the direction of
ow, i.e. tangent to a owline. 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 quancurrent 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 passof 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 dierent 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 ) ,
Dimensions

The last two angular units, plane angle and solid angle, are then:
subsidiary units used in the SI, but are treated as dimensionless. The subsidiary units are used for convenience to
Dierential The dierential n-space volume
dierentiate between a truly dimensionless quantity (pure
element is dn x dVn dx1 dx2 dxn ,
number) and an angle, which are dierent measurements.

51.4 General derived quantities

Integral: The multiple


of X over the
integral
n
n-space
volume
is
Xd
x

XdVn

Xdx1 dx2 dxn .

Derived quantities are those whose denitions are based The meaning of the term physical quantity is generally
well understood (everyone understands what is meant by
on other physical quantities(base quantities).
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 scienmany derived quantities, in particular densities.
tists will (more often than not) deal with quantitative data,

51.7. SOURCES
as opposed to qualitative data. Explicit mention and discussion of physical quantities is not part of any standard
science program, and is more suited for a philosophy of
science or philosophy program.
The notion of physical quantities is seldom used in
physics, nor is it part of the standard physics vernacular. The idea is often misleading, as its name implies
a quantity that can be physically measured, yet is often incorrectly used to mean a physical invariant. Due
to the rich complexity of physics, many dierent elds
possess dierent physical invariants. There is no known
physical invariant sacred in all possible elds of physics.
Energy, space, momentum, torque, position, and length
(just to name a few) are all found to be experimentally
variant in some particular scale and system. Additionally,
the notion that it is possible to measure physical quantities comes into question, particular in quantum eld theory and normalization techniques. As innities are produced by the theory, the actual measurements made are
not really those of the physical universe (as we cannot
measure innities), 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), International Vocabulary of Metrology, Basic and General
Concepts and Associated Terms (VIM), III ed., Pavillon de
Breteuil : JCGM 200:2012 (on-line)
[2] Fourier, Joseph. Thorie 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 supporting physical quantities.

285

51.7 Sources
Cook, Alan H. The observational foundations of
physics, Cambridge, 1994. ISBN 0-521-45597-9
Essential Principles of Physics, P.M. Whelan, M.J.
Hodgeson, 2nd Edition, 1978, John Murray, ISBN
0-7195-3382-1
Encyclopaedia of Physics, R.G. Lerner, G.L. Trigg,
2nd Edition, VHC Publishers, Hans Warlimont,
Springer, 2005, pp 1213
Physics for Scientists and Engineers: With Modern
Physics (6th Edition), P.A. Tipler, G. Mosca, W.H.
Freeman and Co, 2008, 9-781429-202657

Chapter 52

Post Oce Protocol


In computing, the Post Oce Protocol (POP) is an
application-layer Internet standard protocol used by local e-mail clients to retrieve e-mail from a remote server
over a TCP/IP connection.[1] POP has been developed
through several versions, with version 3 (POP3) being the
last standard in common use before largely being made
obsolete by the more advanced IMAP. In POP3, e-mails
are downloaded from the servers inbox to your computer.
E-mails are available when you are not connected.

52.1 Overview

52.2 History
POP1 was specied in RFC 918 (1984), POP2 by RFC
937 (1985).
POP3 originated with RFC 1081 (1988). Its current
specication is RFC 1939, updated with an extension
mechanism, RFC 2449 and an authentication mechanism
in RFC 1734.
The original POP3 specication supported only an unencrypted USER/PASS login mechanism or Berkeley
.rhosts access control. POP3 currently supports several authentication methods to provide varying levels of
protection against illegitimate access to a users e-mail.
Most are provided by the POP3 extension mechanisms.
POP3 clients support SASL authentication methods via
the AUTH extension. MIT Project Athena also produced
a Kerberized version. RFC 1460 introduced APOP into
the core protocol. APOP is a challenge/response protocol which uses the MD5 hash function in an attempt to
avoid replay attacks and disclosure of the shared secret.
Clients implementing APOP include Mozilla Thunderbird, Opera Mail, Eudora, KMail, Novell Evolution, RimArts Becky!,[3] Windows Live Mail, PowerMail, Apple
Mail, and Mutt. RFC 1460 was obsoleted by RFC 1725,
which was in turn obsoleted by RFC 1939.

POP supports download-and-delete requirements for access to remote mailboxes (termed maildrop in the POP
RFC's).[2] Although most POP clients have an option to
leave mail on server after download, e-mail clients using POP generally connect, retrieve all messages, store
them on the users PC as new messages, delete them from
the server, and then disconnect. Other protocols, notably
IMAP, (Internet Message Access Protocol) provide more
complete and complex remote access to typical mailbox
operations. In the late 1990s and early 2000s, fewer
Internet Service Providers (ISPs) supported IMAP due
to the storage space that was required on the ISPs hardware. 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
folder management, multipart message support, as well
port.
as message ag 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 Specications
Layer (SSL) on well-known TCP port 995.
Available messages to the client are xed when a POP ses- An extension mechanism was proposed in RFC 2449
sion opens the maildrop, and are identied 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,
identier assigned to the message by the POP server. This such as TOP and UIDL. The RFC did not intend to enunique identier is permanent and unique to the maildrop courage extensions, and rearmed that the role of POP3
and allows a client to access the same message in dierent is to provide simple support for mainly download-andPOP 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


Following the lead of ESMTP (RFC 5321), capabilities
beginning with an X signify local capabilities.

52.3.1

STARTTLS

The STARTTLS extension allows the use of Transport


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
servers instead use the alternate-port method, which uses
TCP port 995 (POP3S).

52.3.2

SDPS

Demon Internet introduced extensions to POP3 that allow


multiple accounts per domain, and has become known
as Standard Dial-up POP3 Service (SDPS).[5] To access
each account, the username includes the hostname, as
john@hostname or john+hostname.
Google Apps uses the same method.

52.3.3

Kerberized Post Oce Protocol

In computing, local e-mail clients can use the Kerberized Post Oce Protocol (KPOP), an application-layer
Internet standard protocol, to retrieve e-mail from a remote server over a TCP/IP connection. The KPOP protocol is based on the POP3 protocol with the dierences
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
IMAP server.

52.4 Comparison with IMAP

287
be until a later session. In short: IMAP is designed
to permit manipulation of remote mailboxes as if
they were local. Depending on the IMAP client implementation and the mail architecture desired by
the system manager, the user may save messages directly on the client machine, or save them on the
server, or be given the choice of doing either.
The POP protocol requires the currently connected
client to be the only client connected to the mailbox. In contrast, the IMAP protocol specically
allows simultaneous access by multiple clients and
provides mechanisms for clients to detect changes
made to the mailbox by other, concurrently connected, clients. See for example RFC3501 section
5.2 which specically cites simultaneous access to
the same mailbox by multiple agents as an example.
When POP retrieves a message, it receives all parts
of it, whereas the IMAP4 protocol allows clients to
retrieve any of the individual MIME parts separately
- for example retrieving the plain text without retrieving attached les.
IMAP supports ags on the server to keep track of
message state: for example, whether or not the message has been read, replied to, or deleted.

52.5 Dialog example


The APOP usage is a direct example from RFC 1939
page 18.
RFC
1939
APOP
support
indicated
<1896.697170952@dbc.mtview.ca.us> here:

by

POP is a much simpler protocol, making implemenS: <wait for connection on TCP port 110> C:
tation easier.
<open connection> S: +OK POP3 server ready
POP mail moves the message from the email server <1896.697170952@dbc.mtview.ca.us> C: APOP mrose
onto your local computer, although there is usually c4c9334bac560ecc979e58001b3e22fb S: +OK mroses
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
message 2 deleted C: QUIT S: +OK dewey POP3 server
cept of folders
signing o (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 specied
messages, or to search for messages meeting cer- POP3 servers without the optional APOP command extain criteria. Messages in the mail repository can pect the client to log in with the USER and PASS combe marked with various status ags (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 userwhich may not S: +OK Pass accepted

288

52.6 Server implementations


Apache James

CHAPTER 52. POST OFFICE PROTOCOL

52.8 See also


Email encryption

Citadel/UX
Courier Mail Server
Cyrus IMAP server
Dovecot
Eudora Internet Mail Server
HMailServer

52.9 References
[1] Dean, Tamara (2010). Network+ Guide to Networks. Delmar. p. 519.
[2] Allen, David (2004). Windows to Linux. Prentice Hall. p.
192.

Ipswitch IMail Server

[3] (Japanese), (Becky! tutorial), 2001-04-26.

Kerio Connect

[4] POP4 specication although pop is used to receive mail


after system is not online.. 2003. Retrieved 2011-10-17.

Mailtraq
Nginx

[5] Demon Online Help Centre. E.demon.net (2013-01-23).


Retrieved on 2013-07-17.

qmail-pop3d
Qpopper
RePOP
UW IMAP
WinGate
Zimbra

52.7 Related requests for comments (RFCs)


RFC 918 POST OFFICE PROTOCOL
RFC 937 POST OFFICE PROTOCOL VERSION 2

52.10 Further reading


Hughes, L (1998). Internet e-mail Protocols, Standards and Implementation. Artech House Publishers. ISBN 0-89006-939-5.
Johnson, K (2000). Internet Email Protocols: A
Developers Guide. Addison-Wesley Professional.
ISBN 0-201-43288-9.
Loshin, P (1999). Essential Email Standards: RFCs
and Protocols Made Practical. John Wiley & Sons.
ISBN 0-471-34597-0.
Rhoton, J (1999). Programmers Guide to Internet Mail: SMTP, POP, IMAP, and LDAP. Elsevier.
ISBN 1-55558-212-5.

RFC 1081 Post Oce Protocol Version 3

Wood, D (1999). Programming Internet Mail.


O'Reilly. ISBN 1-56592-479-7.

RFC 1939 Post Oce Protocol Version 3 (STD


53)

Post Oce Protocol Version 3. IETF. May 1996.

RFC 1957 Some Observations on Implementations of the Post Oce 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 Oce Protocol (POP3) Simple Authentication and Security Layer (SASL) Authentication Mechanism

Chapter 53

Programming language
tensions taken from the dominant implementation being
common.

53.1 Denitions
A programming language is a notation for writing
programs, which are specications of a computation or
algorithm.[3] Some, but not all, authors restrict the term
programming language to those languages that can express 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 proinclude:
gramming language, which will output the "Hello, world!" message when compiled and run

A programming language is a formal computer language or constructed language designed to communicate instructions to a machine, particularly a computer.
Programming languages can be used to create programs
to control the behavior of a machine or to express
algorithms.
The earliest known programmable machine preceded the
invention of the digital computer and is the automatic
ute player described in the 9th century by the brothers
Musa in Baghdad, during the Islamic Golden Age".[1]
From the early 1800s, programs were used to direct the
behavior of machines such as Jacquard looms and player
pianos.[2] Thousands of dierent programming languages
have been created, mainly in the computer eld, and
many more still are being created every year. Many programming languages require computation to be specied
in an imperative form (i.e., as a sequence of operations to
perform), while other languages use other forms of program specication such as the declarative form (i.e. the
desired result is specied, not how to achieve it).

Function and target A computer programming language is a language used to write computer programs, which involve a computer performing some
kind of computation[5] or algorithm and possibly
control external devices such as printers, disk drives,
robots,[6] and so on. For example, PostScript programs are frequently created by another program
to control a computer printer or display. More
generally, a programming language may describe
computation on some, possibly abstract, machine.
It is generally accepted that a complete specication for a programming language includes a description, possibly idealized, of a machine or processor
for that language.[7] In most practical contexts, a
programming language involves a computer; consequently, programming languages are usually dened
and studied this way.[8] Programming languages differ from natural languages in that natural languages
are only used for interaction between people, while
programming languages also allow humans to communicate instructions to machines.

The description of a programming language is usually Abstractions Programming languages usually contain
split into the two components of syntax (form) and
abstractions for dening and manipulating data
semantics (meaning). Some languages are dened by a
structures or controlling the ow of execution. The
specication document (for example, the C programming
practical necessity that a programming language
language is specied 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 dened by a standard and exto make proper use of such abstractions.[10]
289

290

CHAPTER 53. PROGRAMMING LANGUAGE

Expressive power The theory of computation classies


languages by the computations they are capable of
expressing. All Turing complete languages can implement the same set of algorithms. ANSI/ISO
SQL-92 and Charity are examples of languages that
are not Turing complete, yet often called programming languages.[11][12]
Markup languages like XML, HTML or tro, which dene structured data, are not usually considered programming languages.[13][14][15] Programming languages may,
however, share the syntax with markup languages if a
computational semantics is dened. XSLT, for example,
is a Turing complete XML dialect.[16][17][18] Moreover,
LaTeX, which is mostly used for structuring documents,
also contains a Turing complete subset.[19][20]
The term computer language is sometimes used interchangeably with programming language.[21] However,
the usage of both terms varies among authors, including
the exact scope of each. One usage describes programming languages as a subset of computer languages.[22]
In this vein, languages used in computing that have a
dierent 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]

The next step was development of so-called secondgeneration programming languages (2GL) or assembly
languages, which were still closely tied to the instruction
set architecture of the specic computer. These served to
make the program much more human-readable, and relieved the programmer of tedious and error-prone address
calculations.
The rst high-level programming languages, or thirdgeneration programming languages (3GL), were written
in the 1950s. An early high-level programming language
to be designed for a computer was Plankalkl, developed
for the German Z3 by Konrad Zuse between 1943 and
1945. However, it was not implemented until 1998 and
2000.[26]
John Mauchly's Short Code, proposed in 1949, was
one of the rst high-level languages ever developed for
an electronic computer.[27] Unlike machine code, Short
Code statements represented mathematical expressions
in understandable form. However, the program had to
be translated into machine code every time it ran, making the process much slower than running the equivalent
machine code.

Another usage regards programming languages as theoretical constructs for programming abstract machines,
and computer languages as the subset thereof that runs
on physical computers, which have nite hardware
resources.[24] John C. Reynolds emphasizes that formal
specication 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 aect the behavior of a computer are programming
languages, despite the fact they are commonly not Turingcomplete, and remarks that ignorance of programming The Manchester Mark 1 ran programs written in Autocode from
language concepts is the reason for many aws in input 1952.
formats.[25]
At the University of Manchester, Alick Glennie developed Autocode in the early 1950s. A programming language, it used a compiler to automatically convert the lan53.2 History
guage into machine code. The rst 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 rst
compiled high-level programming language.[28][29]

53.2.1

Early developments

The earliest computers were often programmed without


the help of a programming language, by writing programs
in absolute machine language. The programs, in decimal or binary form, were read in from punched cards or
magnetic tape, or toggled in on switches on the front panel
of the computer. Absolute machine languages were later
termed rst-generation programming languages (1GL).

The second autocode was developed for the Mark 1 by


R. A. Brooker in 1954 and was called the Mark 1 Autocode. Brooker also developed an autocode for the
Ferranti Mercury in the 1950s in conjunction with the
University of Manchester. The version for the EDSAC 2
was devised by D. F. Hartley of University of Cambridge
Mathematical Laboratory in 1961. Known as EDSAC
2 Autocode, it was a straight development from Mercury
Autocode adapted for local circumstances, and was noted
for its object code optimisation and source-language di-

53.2. HISTORY
agnostics which were advanced for the time. A contemporary but separate thread of development, Atlas Autocode was developed for the University of Manchester
Atlas 1 machine.
In 1954, language FORTRAN was invented at IBM by
John Backus; it was the rst widely used high level general
purpose programming language to have a functional implementation, as opposed to just a design on paper.[30][31]
It is still popular language for high-performance computing[32] and is used for programs that benchmark and rank
the worlds fastest supercomputers.[33]

291
Prolog, designed in 1972, was the rst logic programming language.
In 1978, ML built a polymorphic type system on top
of Lisp, pioneering statically typed functional programming languages.
Each of these languages spawned descendants, and most
modern programming languages count at least one of
them in their ancestry.
The 1960s and 1970s also saw considerable debate over
the merits of structured programming, and whether programming languages should be designed to support it.[39]
Edsger Dijkstra, in a famous 1968 letter published in the
Communications of the ACM, argued that GOTO statements should be eliminated from all higher level programming languages.[40]

Another early programming language was devised by


Grace Hopper in the US, called FLOW-MATIC. It was
developed for the UNIVAC I at Remington Rand during
the period from 1955 until 1959. Hopper found that business data processing customers were uncomfortable with
mathematical notation, and in early 1955, she and her
team wrote a specication for an English programming
language and implemented a prototype.[34] The FLOW- 53.2.3
MATIC compiler became publicly available in early 1958
and was substantially complete in 1959.[35] Flow-Matic
was a major inuence in the design of COBOL, since only
it and its direct descendant AIMACO were in actual use
at the time.[36]

53.2.2

Consolidation and growth

Renement

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 languages and high-level languages, and can be used to perform tasks which require direct access to hardware facilities 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 inuenced
functional programming.[37]
ALGOL rened both structured procedural programming and the discipline of language specication; the Revised Report on the Algorithmic Language ALGOL 60" became a model for how later A selection of textbooks that teach programming, in languages
language specications 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 rst dynami- in history.


cally typed functional programming language
In the 1960s, Simula was the rst 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 rst purely The United States government standardized Ada, a systems programming language derived from Pascal and inobject-oriented language.
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 fth
tem programming language for the Unix operating generation languages that incorporated logic programsystem, and remains popular.[38]
ming constructs.[41] The functional languages community

292

CHAPTER 53. PROGRAMMING LANGUAGE

moved to standardize ML and Lisp. Rather than inventing 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 focus 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 rst 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):
return x+5
popular for a time in the early 1980s). These developments were not fundamentally novel, rather they were redef dotwrite(ast):
nodename = getNodename()
nements of many existing languages and paradigms (allabel=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),
if isinstance(ast[1], str):
programming languages).
Programming language evolution continues, in both industry and research. Current directions include security and reliability verication, new kinds of modularity (mixins, delegates, aspects), and database integration
such as Microsofts LINQ.

if ast[1].strip():
print '= %s"];' % ast[1]
else:
print '"]'
else:
print '"];'
children = []
for n, child in enumerate(ast[1:]):
children.append(dotwrite(child))
print '
%s -> {' % nodename,
for name in children:
print '%s' % name,

Fourth-generation programming languages (4GL) are a


computer programming languages which aim to provide a
higher level of abstraction of the internal computer hardware details than 3GLs. Fifth generation programming Syntax highlighting is often used to aid programmers in recognizlanguages (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 combinations of symbols that form a syntactically correct program. The meaning given to a combination of symbols
is handled by semantics (either formal or hard-coded in
53.3 Elements
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
or transformations applied to them (like the addition of
two numbers or the selection of an item from a collection). These primitives are dened by syntactic and semantic rules which describe their structure and meaning
respectively.

53.3.1

Syntax

Main article: Syntax (programming languages)


A programming languages surface form is known as its
syntax. Most programming languages are purely textual;
they use sequences of text including words, numbers, and
punctuation, much like written natural languages. On the
other hand, there are some programming languages which
are more graphical in nature, using visual relationships
between symbols to specify a program.

Programming language syntax is usually dened using a


combination of regular expressions (for lexical structure)
and BackusNaur Form (for grammatical structure). Below is a simple grammar, based on Lisp:
expression ::= atom | list atom ::= number | symbol
number ::= [+-]?['0'-'9']+ symbol ::= ['A'-'Z''a'-'z'].* list
::= '(' expression* ')'
This grammar species the following:
an expression is either an atom or a list;
an atom is either a number or a symbol;
a number is an unbroken sequence of one or more
decimal digits, optionally preceded by a plus or minus 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 sequences in this grammar: 12345, () and (a b c232 (1)).
The static semantics denes restrictions on the strucNot all syntactically correct programs are semanti- ture of valid texts that are hard or impossible to excally correct. Many syntactically correct programs are press in standard syntactic formalisms.[3] For compiled
nonetheless ill-formed, per the languages rules; and may languages, static semantics essentially include those se(depending on the language specication and the sound- mantic rules that can be checked at compile time. Exness of the implementation) result in an error on trans- amples include checking that every identier is declared
lation or execution. In some cases, such programs may before it is used (in languages that require such declaraexhibit undened behavior. Even when a program is well- tions) or that the labels on the arms of a case statement
dened within a language, it may still have a meaning that are distinct.[46] Many important restrictions of this type,
like checking that identiers are used in the appropriate
is not intended by the person who wrote it.
context (e.g. not adding an integer to a function name),
Using natural language as an example, it may not be posor that subroutine calls have the appropriate number and
sible to assign a meaning to a grammatically correct sentype of arguments, can be enforced by dening them as
tence or the sentence may be false:
rules in a logic called a type system. Other forms of static
analyses like data ow 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 denite assignment analysis, a form of data ow
meaning.
analysis, as part of their static semantics.
John is a married bachelor. is grammatically wellformed but expresses a meaning that cannot be true. Dynamic semantics
Main article: Semantics of programming languages
The following C language fragment is syntactically correct, but performs operations that are not semantically
dened (the operation *p >> 4 has no meaning for a value Once data has been specied, the machine must be inhaving a complex type and p->im is not dened because structed to perform operations on the data. For example, the semantics may dene the strategy by which exthe value of p is the null pointer):
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 denes how and when the various constructs
If the type declaration on the rst 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 dening execution semantics. Natural
variable p would not be dened. 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 signicant
amount of academic research went into formal semanvide only semantic information.
tics of programming languages, which allow execution seThe grammar needed to specify a programming language
mantics to be specied in a formal manner. Results from
can be classied by its position in the Chomsky hierarchy.
this eld of research have seen limited application to proThe syntax of most programming languages can be specgramming language design and implementation outside
ied using a Type-2 grammar, i.e., they are context-free
academia.
[43]
grammars.
Some languages, including Perl and Lisp,
contain constructs that allow execution during the parsing phase. Languages that have constructs that allow the
53.3.3 Type system
programmer to alter the behavior of the parser make syntax 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 Lisps macro system and Perls BEGIN blocks,
which may contain general computations, C macros are A type system denes how a programming language clasmerely string replacements, and do not require code sies values and expressions into types, how it can maexecution.[45]
nipulate those types and how they interact. The goal of

294
a type system is to verify and usually enforce a certain
level of correctness in programs written in that language
by detecting certain incorrect operations. Any decidable
type system involves a trade-o: while it rejects many
incorrect programs, it can also prohibit some correct, albeit unusual programs. In order to bypass this downside, a number of languages have type loopholes, usually
unchecked casts that may be used by the programmer to
explicitly allow a normally disallowed operation between
dierent types. In most typed languages, the type system
is used only to type check programs, but a number of
languages, usually functional ones, infer types, relieving
the programmer from the need to write type annotations.
The formal design and study of type systems is known as
type theory.
Typed versus untyped languages

CHAPTER 53. PROGRAMMING LANGUAGE


expressions; they cannot be passed to a function that expects a string, or stored in a variable that is dened to hold
dates.[47]
Statically typed languages can be either manifestly typed
or type-inferred. In the rst case, the programmer must
explicitly write types at certain textual positions (for example, at variable declarations). In the second case, the
compiler infers the types of expressions and declarations
based on context. Most mainstream statically typed languages, such as C++, C# and Java, are manifestly typed.
Complete type inference has traditionally been associated
with less mainstream languages, such as Haskell and ML.
However, many manifestly typed languages support partial type inference; for example, Java and C# both infer
types in certain limited cases.[48] Additionally, some programming languages allow for some types to be automatically converted to other types; for example, an int can be
used where the program expects a oat.

A language is typed if the specication of every operation


denes types of data to which the operation is applicable, with the implication that it is not applicable to other
types.[47] For example, the data represented by this text
between the quotes is a string, and in many programming
languages dividing a number by a string has no meaning
and will be rejected by the compilers. The invalid operation may be detected when the program is compiled
(static type checking) and will be rejected by the compiler with a compilation error message, or it may be detected when the program is run (dynamic type checking), resulting in a run-time exception. Many languages
allow a function called an exception handler to be written
to handle this exception and, for example, always return
"1 as the result.

Dynamic typing, also called latent typing, determines the


type-safety of operations at run time; in other words,
types are associated with run-time values rather than textual expressions.[47] As with type-inferred languages, dynamically typed languages do not require the programmer
to write explicit type annotations on expressions. Among
other things, this may permit a single variable to refer to
values of dierent types at dierent points in the program execution. However, type errors cannot be automatically detected until a piece of code is actually executed, potentially making debugging more dicult. Lisp,
Smalltalk, Perl, Python, JavaScript, and Ruby are dynamically typed.

A special case of typed languages are the single-type languages. These are often scripting or markup languages,
such as REXX or SGML, and have only one data type
most commonly character strings which are used for both
symbolic and numeric data.

Weak and strong typing

Weak typing allows a value of one type to be treated as


another, for example treating a string as a number.[47]
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 denition for weakly typed refers to lanjecting all operations), most modern languages oer 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 ner control over the programs execution (see number, and this conversion succeeds even if x is null,
undened, an Array, or a string of letters. Such implicit
casting).
conversions are often useful, but they can mask programming errors. Strong and static are now generally considered orthogonal concepts, but usage in the literature difStatic versus dynamic typing
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 simmined 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


It may seem odd to some professional programmers that
C could be weakly, statically typed. However, notice
that the use of the generic pointer, the void* pointer,
does allow for casting of pointers to other pointers without needing to do an explicit cast. This is extremely similar to somehow casting an array of bytes to any kind of
datatype in C without using an explicit cast, such as (int)
or (char).

53.3.4

295
also articial languages designed from the ground up with
a specic purpose, they lack the precise and complete semantic denition that a programming language has.

Many programming languages have been designed from


scratch, altered to meet new needs, and combined with
other languages. Many have eventually fallen into disuse.
Although there have been attempts to design one universal programming language that serves all purposes,
all of them have failed to be generally accepted as lling
[54]
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


Most programming languages have an associated core
library (sometimes known as the 'standard library', especially if it is included as part of the published language
standard), which is conventionally made available by all
implementations of the language. Core libraries typically
include denitions for commonly used algorithms, data
structures, and mechanisms for input and output.
The line between a language and its core library diers
from language to language. In some cases, the language
designers may treat the library as a separate entity from
the language. However, a languages core library is often
treated as part of the language by its users, and some language specications even require that this library be made
available in all implementations. Indeed, some languages
are designed so that the meanings of certain syntactic constructs cannot even be described without referring to the
core library. For example, in Java, a string literal is dened as an instance of the java.lang.String class; similarly, in Smalltalk, an anonymous function expression (a
block) constructs an instance of the librarys BlockContext class. Conversely, Scheme contains multiple coherent subsets that suce to construct the rest of the language as library macros, and so the language designers
do not even bother to say which portions of the language
must be implemented as language constructs, and which
must be implemented as parts of a library.

53.4 Design and implementation


Programming languages share properties with natural
languages related to their purpose as vehicles for communication, having a syntactic form separate from its semantics, and showing language families of related languages branching one from another.[51][52] But as articial constructs, they also dier in fundamental ways from
languages that have evolved through usage. A signicant dierence is that a programming language can be
fully described and studied in its entirety, since it has a
precise and nite denition.[53] By contrast, natural languages have changing meanings given by their users in
dierent communities. While constructed languages are

Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of
programmers.
Programmers range in expertise from novices who
need simplicity above all else, to experts who may
be comfortable with considerable complexity.
Programs must balance speed, size, and simplicity on systems ranging from microcontrollers to
supercomputers.
Programs may be written once and not change for
generations, or they may undergo continual modication.
Programmers may simply dier in their tastes: they
may be accustomed to discussing problems and expressing them in a particular language.
One common trend in the development of programming
languages has been to add more ability to solve problems
using a higher level of abstraction. The earliest programming languages were tied very closely to the underlying
hardware of the computer. As new programming languages have developed, features have been added that let
programmers express ideas that are more remote from
simple translation into underlying hardware instructions.
Because programmers are less tied to the complexity of
the computer, their programs can do more computing
with less eort from the programmer. This lets them
write more functionality per time unit.[55]
Natural language programming has been proposed as a
way to eliminate the need for a specialized language for
programming. However, this goal remains distant and its
benets are open to debate. Edsger W. Dijkstra took the
position that the use of a formal language is essential to
prevent the introduction of meaningless constructs, and
dismissed natural language programming as foolish.[56]
Alan Perlis was similarly dismissive of the idea.[57] Hybrid approaches have been taken in Structured English
and SQL.
A languages designers and users must construct a number of artifacts that govern and enable the practice of programming. The most important of these artifacts are the
language specication and implementation.

296

53.4.1

CHAPTER 53. PROGRAMMING LANGUAGE

Specication

blocks of bytecode which are going to be used to machine


code, for direct execution on the hardware.

Main article: Programming language specication


The specication 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 specications and implemenbe.
tations, many programming languages exist only as proA programming language specication can take several prietary programming languages with the implementation available only from a single vendor, which may claim
forms, including the following:
that such a proprietary language is their intellectual property. Proprietary programming languages are commonly
An explicit denition of the syntax, static seman- domain specic 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 specied using a formal gram- only internally within a vendor, while others are available
mar, semantic denitions may be written in natural to external users.
language (e.g., as in the C language), or a formal semantics (e.g., as in Standard ML[58] and Scheme[59] Some programming languages exist on the border between proprietary and open; for example, Oracle Corpospecications).
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# prolanguage (e.g., the C++ and Fortran specications). 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 specied (e.g., Prolog closed to open; for example, Erlang was originally an Eror ANSI REXX[60] ). The syntax and semantics of icssons internal programming language.
the language are explicit in the behavior of the reference implementation.

53.6 Usage
53.4.2

Implementation

Main article: Programming language implementation


An implementation of a programming language provides
a way to write programs in that language and execute
them on one or more congurations of hardware and
software. There are, broadly, two approaches to programming language implementation: compilation and
interpretation. It is generally possible to implement a language using either technique.
The output of a compiler may be executed by hardware or
a program called an interpreter. In some implementations
that make use of the interpreter approach there is no distinct boundary between compiling and interpreting. For
instance, some implementations of BASIC compile and
then execute the source a line at a time.
Programs that are executed directly on the hardware usually run several orders of magnitude faster than those that
are interpreted in software.

Thousands of dierent programming languages have


been created, mainly in the computing eld.[61] Software is commonly built with 5 programming languages
or more.[62]
Programming languages dier from most other forms of
human expression in that they require a greater degree of
precision and completeness. When using a natural language to communicate with other people, human authors
and speakers can be ambiguous and make small errors,
and still expect their intent to be understood. However,
guratively speaking, computers do exactly what they
are told to do, and cannot understand what code the
programmer intended to write. The combination of the
language denition, a program, and the programs inputs
must fully specify the external behavior that occurs when
the program is executed, within the domain of control
of that program. On the other hand, ideas about an algorithm can be communicated to humans without the precision required for execution by using pseudocode, which
interleaves natural language with code written in a programming language.

One technique for improving the performance of interpreted programs is just-in-time compilation. Here A programming language provides a structured mechathe virtual machine, just before execution, translates the nism for dening pieces of data, and the operations or

53.7. TAXONOMIES
transformations that may be carried out automatically on
that data. A programmer uses the abstractions present in
the language to represent the concepts involved in a computation. These concepts are represented as a collection
of the simplest elements available (called primitives).[63]
Programming is the process by which programmers combine these primitives to compose new programs, or adapt
existing ones to new uses or a changing environment.

297

53.7 Taxonomies
For more details on this topic, see Categorical list of
programming languages.
There is no overarching classication scheme for programming languages. A given programming language
does not usually have a single ancestor language. Languages commonly arise by combining the elements of
several predecessor languages with new ideas in circulation at the time. Ideas that originate in one language will
diuse throughout a family of related languages, and then
leap suddenly across familial gaps to appear in an entirely
dierent family.

Programs for a computer might be executed in a batch


process without human interaction, or a user might type
commands in an interactive session of an interpreter. In
this case the commands are simply programs, whose
execution is chained together. When a language can run
its commands through an interpreter (such as a Unix shell
or other command-line interface), without compiling, it
The task is further complicated by the fact that languages
is called a scripting language.[64]
can be classied along multiple axes. For example, Java
is both an object-oriented language (because it encourages object-oriented organization) and a concurrent lan53.6.1 Measuring language usage
guage (because it contains built-in constructs for running
Main article: Measuring programming language popu- multiple threads in parallel). Python is an object-oriented
scripting language.
larity
It is dicult to determine which programming languages
are most widely used, and what usage means varies by
context. One language may occupy the greater number
of programmer hours, a dierent one have more lines
of code, and a third may consume the most CPU time.
Some languages are very popular for particular kinds of
applications. For example, COBOL is still strong in the
corporate data center, often on large mainframes;[65][66]
Fortran in scientic and engineering applications; Ada in
aerospace, transportation, military, real-time and embedded applications; and C in embedded applications and operating systems. Other languages are regularly used to
write many dierent kinds of applications.
Various methods of measuring language popularity, each
subject to a dierent bias over what is measured, have
been proposed:
counting the number of job advertisements that
mention the language[67]
the number of books sold that teach or describe the
language[68]

In broad strokes, programming languages divide into


programming paradigms and a classication by intended
domain of use, with general-purpose programming languages distinguished from domain-specic programming
languages. Traditionally, programming languages have
been regarded as describing computation in terms of imperative sentences, i.e. issuing commands. These are
generally called imperative programming languages. A
great deal of research in programming languages has
been aimed at blurring the distinction between a program as a set of instructions and a program as an assertion about the desired answer, which is the main feature
of declarative programming.[71] More rened paradigms
include procedural programming, object-oriented programming, functional programming, and logic programming; some languages are hybrids of paradigms or multiparadigmatic. An assembly language is not so much a
paradigm as a direct model of an underlying machine architecture. By purpose, programming languages might
be considered general purpose, system programming languages, scripting languages, domain-specic languages,
or concurrent/distributed languages (or a combination of
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 classied by facwritten 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
classied as being deliberately esoteric or not.
the language) found using a web search engine.
Combining and averaging information from various internet sites, langpop.com claims that in 2013 the ten most
popular programming languages are (in descending order
by overall popularity): C, Java, PHP, JavaScript, C++,
Python, Shell, Ruby, Objective-C and C#.[70]

53.8 See also


Comparison of programming languages (basic instructions)

298

CHAPTER 53. PROGRAMMING LANGUAGE

Comparison of programming languages


Computer programming
Computer science and Outline of computer science
Educational programming language
Invariant based programming
Lists of programming languages
List of programming language researchers
Programming languages used in most popular websites
Literate programming
Dialect (computing)

[8] Ben Ari, Mordechai (1996). Understanding Programming


Languages. John Wiley and Sons. Programs and languages can be dened as purely formal mathematical objects. However, more people are interested in programs
than in other mathematical objects such as groups, precisely because it is possible to use the programthe sequence of symbolsto control the execution of a computer. While we highly recommend the study of the theory of programming, this text will generally limit itself to
the study of programs as they are executed on a computer.
[9] David A. Schmidt, The structure of typed programming
languages, MIT Press, 1994, ISBN 0-262-19349-3, p. 32

Programming language theory


Pseudocode
Scientic programming language
Software engineering and List of software engineering topics

53.9 References
[1] Koetsier, Teun (2001). On the prehistory of programmable machines; musical automata, looms, calculators. PERGAMON, Mechanisma and Machine Theory
36. pp. 589603.
[2] Ettinger, James (2004) Jacquards Web, Oxford University Press
[3] Aaby, Anthony (2004).
Languages.

[7] R. Narasimahan, Programming Languages and Computers: A Unied Metatheory, pp. 189-247 in Franz Alt,
Morris Rubino (eds.) Advances in computers, Volume
8, Academic Press, 1994, ISBN 0-12-012108-5, p.193
: a complete specication of a programming language
must, by denition, include a specication of a processor-idealized, if you will--for that language. [the source cites
many references to support this statement]

Introduction to Programming

[4] In mathematical terms, this means the programming language is Turing-complete MacLennan, Bruce J. (1987).
Principles of Programming Languages. Oxford University
Press. p. 1. ISBN 0-19-511306-3.
[5] ACM SIGPLAN (2003). Bylaws of the Special Interest Group on Programming Languages of the Association
for Computing Machinery. Retrieved 19 June 2006.,
The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specication of
a variety of dierent computations, thereby providing the
user with signicant control (immediate or delayed) over
the computers operation.
[6] Dean, Tom (2002). Programming Robots. Building Intelligent Robots. Brown University Department of Computer Science. Retrieved 23 September 2006.

[10] Pierce, Benjamin (2002). Types and Programming Languages. MIT Press. p. 339. ISBN 0-262-16209-1.
[11] Digital Equipment Corporation. Information Technology - Database Language SQL (Proposed revised text
of DIS 9075)". ISO/IEC 9075:1992, Database Language
SQL. Retrieved 29 June 2006.
[12] The Charity Development Group (December 1996). The
CHARITY Home Page. Retrieved 29 June 2006., Charity is a categorical programming language..., All Charity
computations terminate.
[13] XML in 10 points W3C, 1999, XML is not a programming
language.
[14] Powell, Thomas (2003). HTML & XHTML: the complete
reference. McGraw-Hill. p. 25. ISBN 0-07-222942-X.
HTML is not a programming language.
[15] Dykes, Lucinda; Tittel, Ed (2005). XML For Dummies,
4th Edition. Wiley. p. 20. ISBN 0-7645-8845-1. ...its a
markup language, not a programming language.
[16] What kind of language is XSLT?". IBM.com. Retrieved
3 December 2010.
[17] XSLT
is
a
Programming
Language.
Msdn.microsoft.com. Retrieved 3 December 2010.
[18] Scott, Michael (2006). Programming Language Pragmatics. Morgan Kaufmann. p. 802. ISBN 0-12-633951-1.
XSLT, though highly specialized to the transformation of
XML, is a Turing-complete programming language.
[19] http://tobi.oetiker.ch/lshort/lshort.pdf
[20] Syropoulos, Apostolos; Antonis Tsolomitis; Nick Sofroniou (2003). Digital typography using LaTeX. SpringerVerlag. p. 213. ISBN 0-387-95217-9. TeX is not only
an excellent typesetting engine but also a real programming
language.
[21] Robert A. Edmunds, The Prentice-Hall standard glossary
of computer terminology, Prentice-Hall, 1985, p. 91

53.9. REFERENCES

[22] Pascal Lando, Anne Lapujade, Gilles Kassel, and Frdric


Frst, Towards a General Ontology of Computer Programs, ICSOFT 2007, pp. 163-170
[23] S.K. Bajpai, Introduction To Computers And C Programming, New Age International, 2007, ISBN 81-224-1379X, p. 346

299

[38] Franois Labelle.


Programming Language Usage
Graph. SourceForge. Retrieved 21 June 2006.. This
comparison analyzes trends in number of projects hosted
by a popular community programming repository. During
most years of the comparison, C leads by a considerable
margin; in 2006, Java overtakes C, but the combination of
C/C++ still leads considerably.

[24] R. Narasimahan, Programming Languages and Computers: A Unied Metatheory, pp. 189-247 in Franz Alt,
Morris Rubino (eds.) Advances in computers, Volume
8, Academic Press, 1994, ISBN 0-12-012108-5, p.215:
"[...] the model [...] for computer languages diers
from that [...] for programming languages in only two
respects. In a computer language, there are only nitely
many names--or registers--which can assume only nitely
many values--or states--and these states are not further
distinguished in terms of any other attributes. [authors
footnote:] This may sound like a truism but its implications are far reaching. For example, it would imply that
any model for programming languages, by xing certain
of its parameters or features, should be reducible in a natural way to a model for computer languages.

[39] Hayes, Brian (2006). The Semicolon Wars. American


Scientist. 94 (4): 299303. doi:10.1511/2006.60.299.

[25] John C. Reynolds, Some thoughts on teaching programming and programming languages, SIGPLAN Notices,
Volume 43, Issue 11, November 2008, p.109

[42] Jim Bender (15 March 2004). Mini-Bibliography on


Modules for Functional Programming Languages. ReadScheme.org. Retrieved 27 September 2006.

[26] Rojas, Ral, et al. (2000). Plankalkl: The First HighLevel Programming Language and its Implementation.
Institut fr Informatik, Freie Universitt Berlin, Technical
Report B-3/2000. (full text)

[43] Michael Sipser (1996). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2.2: Pushdown Automata, pp.101114.

[27] Sebesta, W.S Concepts of Programming languages.


2006;M6 14:18 pp.44. ISBN 0-321-33025-0
[28] Knuth, Donald E.; Pardo, Luis Trabb. Early development
of programming languages. Encyclopedia of Computer
Science and Technology. Marcel Dekker. 7: 419493.
[29] Peter J. Bentley (2012). Digitized: The Science of Computers and how it Shapes Our World. Oxford University
Press. p. 87.
[30] Fortran creator John Backus dies - Tech and gadgetsmsnbc.com. MSNBC. 2007-03-20. Retrieved 2010-0425.
[31] CSC-302 99S : Class 02: A Brief History of Programming Languages. Math.grin.edu. Retrieved 2010-04-25.
[32] Eugene Loh (18 June 2010). The Ideal HPC Programming Language. Queue. Association of Computing Machines. 8 (6).
[33] HPL - A Portable Implementation of the HighPerformance Linpack Benchmark for DistributedMemory Computers. Retrieved 2015-02-21.
[34] Hopper (1978) p. 16.

[40] Dijkstra, Edsger W. (March 1968). Go To Statement Considered Harmful (PDF). Communications of
the ACM. 11 (3): 147148. doi:10.1145/362929.362947.
Retrieved 2014-05-22.
[41] Tetsuro Fujise, Takashi Chikayama, Kazuaki Rokusawa, Akihiko Nakase (December 1994). KLIC: A
Portable Implementation of KL1 Proc. of FGCS '94,
ICOT Tokyo, December 1994. http://www.icot.or.jp/
ARCHIVE/HomePage-E.html KLIC is a portable implementation of a concurrent logic programming language
KL1.

[44] Jerey Kegler, "Perl and Undecidability", The Perl Review. Papers 2 and 3 prove, using respectively Rices theorem and direct reduction to the halting problem, that the
parsing of Perl programs is in general undecidable.
[45] Marty Hall, 1995, Lecture Notes: Macros, PostScript
version
[46] Michael Lee Scott, Programming language pragmatics,
Edition 2, Morgan Kaufmann, 2006, ISBN 0-12-6339511, p. 1819
[47] Andrew Cooke. Introduction To Computer Languages.
Retrieved 13 July 2012.
[48] Specically, instantiations of generic types are inferred for certain expression forms. Type inference in
Generic Javathe research language that provided the
basis for Java 1.5s bounded parametric polymorphism
extensionsis discussed in two informal manuscripts
from the Types mailing list: Generic Java type inference
is unsound (Alan Jerey, 17 December 2001) and Sound
Generic Java type inference (Martin Odersky, 15 January
2002). C#'s type system is similar to Javas, and uses a
similar partial type inference scheme.
[49] Revised Report on the Algorithmic Language Scheme.
20 February 1998. Retrieved 9 June 2006.

[36] Sammet (1978) p. 204.

[50] Luca Cardelli and Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism.
Manuscript (1985). Retrieved 9 June 2006.

[37] Richard L. Wexelblat: History of Programming Languages, Academic Press, 1981, chapter XIV.

[51] Steven R. Fischer, A history of language, Reaktion Books,


2003, ISBN 1-86189-080-X, p. 205

[35] Sammet (1969) p. 316

300

[52] ric Lvnez (2011). Computer Languages History.


[53] Jing Huang. Articial Language vs. Natural Language.

CHAPTER 53. PROGRAMMING LANGUAGE

[67] Nicholas Enticknap. SSL/Computer Weekly IT salary


survey: nance boom drives IT job growth. Computerweekly.com. Retrieved 2013-06-14.

[54] IBM in rst publishing PL/I, for example, rather ambitiously titled its manual The universal programming language PL/I (IBM Library; 1966). The title reected IBMs
goals for unlimited subsetting capability: PL/I is designed
in such a way that one can isolate subsets from it satisfying the requirements of particular applications. (PL/I.
Encyclopedia of Mathematics. Retrieved 29 June 2006.).
Ada and UNCOL had similar early goals.

[68] Counting programming languages by book sales.


Radar.oreilly.com. 2 August 2006. Retrieved 3 December 2010.

[55] Frederick P. Brooks, Jr.: The Mythical Man-Month,


Addison-Wesley, 1982, pp. 93-94

[70] Programming Language Popularity.


2013-10-25. Retrieved 2014-01-02.

[56] Dijkstra, Edsger W. On the foolishness of natural language programming. EWD667.

[71] Carl A. Gunter, Semantics of Programming Languages:


Structures and Techniques, MIT Press, 1992, ISBN 0-26257095-5, p. 1

[57] Perlis, Alan (September 1982). Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9. pp. 713.
[58] Milner, R.; M. Tofte, R. Harper and D. MacQueen.
(1997). The Denition of Standard ML (Revised). MIT
Press. ISBN 0-262-63181-4. Cite uses deprecated parameter |coauthors= (help)
[59] Kelsey, Richard; William Clinger; Jonathan Rees (February 1998). Section 7.2 Formal semantics. Revised5 Report on the Algorithmic Language Scheme. Retrieved 9
June 2006.
[60] ANSI Programming Language Rexx, X3-274.1996
[61] HOPL: an interactive Roster of Programming Languages. Australia: Murdoch University. Retrieved 1
June 2009. This site lists 8512 languages.
[62] Mayer, Philip; Bauer, Alexander (1 January 2015).
An Empirical Analysis of the Utilization of Multiple Programming Languages in Open Source Projects.
EASE '15.
New York, NY, USA: ACM: 4:1
4:10. doi:10.1145/2745802.2745805. ISBN 978-14503-3350-4. Retrieved 18 September 2015. Results:
We found (a) a mean number of 5 languages per project
with a clearly dominant main general-purpose language
and 5 often-used DSL types, (b) a signicant inuence
of the size, number of commits, and the main language
on the number of languages as well as no signicant inuence of age and number of contributors, and (c) three
language ecosystems grouped around XML, Shell/Make,
and HTML/CSS. Conclusions: Multi-language programming seems to be common in open-source projects and
is a factor which must be dealt with in tooling and when
assessing development and maintenance of such software
systems.
[63] Abelson, Sussman, and Sussman. Structure and Interpretation of Computer Programs. Retrieved 3 March 2009.
[64] Brown Vicki (1999).
Scripting Languages.
mactech.com. Retrieved November 17, 2014.
[65] Georgina Swan (2009-09-21). COBOL turns 50. computerworld.com.au. Retrieved 2013-10-19.
[66] Ed Airey (2012-05-03). 7 Myths of COBOL Debunked. developer.com. Retrieved 2013-10-19.

[69] Bieman, J.M.; Murdock, V., Finding code on the World


Wide Web: a preliminary investigation, Proceedings First
IEEE International Workshop on Source Code Analysis
and Manipulation, 2001
langpop.com.

[72] TUNES: Programming Languages.


[73] Wirth, Niklaus (1993). Recollections about the development of Pascal. Proc. 2nd ACM SIGPLAN conference on history of programming languages: 333342.
doi:10.1145/154766.155378. ISBN 0-89791-570-4. Retrieved 30 June 2006.

53.10 Further reading


See also: History of programming languages Further
reading
Abelson, Harold; Sussman, Gerald Jay (1996).
Structure and Interpretation of Computer Programs
(2nd ed.). MIT Press.
Raphael Finkel: Advanced Programming Language
Design, Addison Wesley 1995.
Daniel P. Friedman, Mitchell Wand, Christopher T.
Haynes: Essentials of Programming Languages, The
MIT Press 2001.
Maurizio Gabbrielli and Simone Martini: Programming Languages: Principles and Paradigms,
Springer, 2010.
David Gelernter, Suresh Jagannathan: Programming
Linguistics, The MIT Press 1990.
Ellis Horowitz (ed.): Programming Languages, a
Grand Tour (3rd ed.), 1987.
Ellis Horowitz: Fundamentals of Programming Languages, 1989.
Shriram Krishnamurthi: Programming Languages:
Application and Interpretation, online publication.
Bruce J. MacLennan: Principles of Programming
Languages: Design, Evaluation, and Implementation, Oxford University Press 1999.

53.10. FURTHER READING


John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
Terrence W. Pratt and Marvin V. Zelkowitz: Programming Languages: Design and Implementation
(4th ed.), Prentice Hall 2000.
Peter H. Salus. Handbook of Programming Languages (4 vols.). Macmillan 1998.
Ravi Sethi: Programming Languages: Concepts and
Constructs, 2nd ed., Addison-Wesley 1996.
Michael L. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers 2005.
Robert W. Sebesta: Concepts of Programming Languages, 9th ed., Addison Wesley 2009.
Franklyn Turbak and David Giord with Mark
Sheldon: Design Concepts in Programming Languages, The MIT Press 2009.
Peter Van Roy and Seif Haridi. Concepts, Techniques, and Models of Computer Programming, The
MIT Press 2004.
David A. Watt. Programming Language Concepts
and Paradigms. Prentice Hall 1990.
David A. Watt and Muy 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.

301

Chapter 54

Public switched telephone network


The public switched telephone network (PSTN) is the
aggregate of the worlds circuit-switched telephone networks that are operated by national, regional, or local
telephony operators, providing infrastructure and services for public telecommunication. The PSTN consists
of telephone lines, ber optic cables, microwave transmission links, cellular networks, communications satellites, and undersea telephone cables, all interconnected by
switching centers, thus allowing most telephones to communicate with each other. Originally a network of xedline analog telephone systems, the PSTN is now almost
entirely digital in its core network and includes mobile
and other networks, as well as xed telephones.[1]
The technical operation of the PSTN adheres to the standards created by the ITU-T. These standards allow dierent networks in dierent countries to interconnect seamlessly. The E.163 and E.164 standards provide a single
global address space for telephone numbers. The combination of the interconnected networks and the single
numbering plan allow telephones around the world to dial
each other.

54.1 History (America)


The rst telephones had no network but were in private
use, wired together in pairs. Users who wanted to talk to
dierent people had as many telephones as necessary for
the purpose. A user who wished to speak whistled loudly
into the transmitter until the other party heard.
However, a bell was added soon for signaling, so an attendant no longer need wait for the whistle, and then a
switch hook. Later telephones took advantage of the exchange principle already employed in telegraph networks.
Each telephone was wired to a local telephone exchange,
and the exchanges were wired together with trunks. Networks were connected in a hierarchical manner until they
spanned cities, countries, continents and oceans. This
was the beginning of the PSTN, though the term was not
used for many decades.

frequency, culminating in the SS7 network that connected


most exchanges by the end of the 20th century.
The growth of the PSTN meant that teletrac engineering techniques needed to be deployed to deliver quality
of service (QoS) guarantees for the users. The work of
A. K. Erlang established the mathematical foundations of
methods required to determine the capacity requirements
and conguration of equipment and the number of personnel required to deliver a specic level of service.
In the 1970s the telecommunications industry began implementing packet switched network data services using
the X.25 protocol transported over much of the end-toend equipment as was already in use in the PSTN.
In the 1980s the industry began planning for digital services assuming they would follow much the same pattern
as voice services, and conceived a vision of end-to-end
circuit switched services, known as the Broadband Integrated Services Digital Network (B-ISDN). The B-ISDN
vision has been overtaken by the disruptive technology of
the Internet.
At the turn of the 21st century, the oldest parts of the
telephone network still use analog technology for the last
mile loop to the end user. However, digital technologies
such as DSL, ISDN, FTTx, and cable modems have become more common in this portion of the network.
Several large private telephone networks are not linked
to the PSTN, usually for military purposes. There are
also private networks run by large companies which are
linked to the PSTN only through limited gateways, such
as a large private branch exchange (PBX).

54.2 Operators
The task of building the networks and selling services to
customers fell to the network operators. The rst company to be incorporated to provide PSTN services was
the Bell Telephone Company in the United States.

In some countries, however, the job of providing teleAutomation introduced pulse dialing between the phone phone networks fell to government as the investment reand the exchange, and then among exchanges, followed quired was very large and the provision of telephone serby more sophisticated address signaling including multi- vice was increasingly becoming an essential public utility.
302

54.5. SEE ALSO


For example, the General Post Oce in the United Kingdom brought together a number of private companies to
form a single nationalized company. In recent decades
however, these state monopolies were broken up or sold
o through privatization.

303
one end to another via telephone exchanges. The call is
switched using a call set up protocol (usually ISUP) between the telephone exchanges under an overall routing
strategy.

The call is carried over the PSTN using a 64 kbit/s channel, originally designed by Bell Labs. The name given
to this channel is Digital Signal 0 (DS0). The DS0 cir54.3 Regulation
cuit is the basic granularity of circuit switching in a telephone exchange. A DS0 is also known as a timeslot beIn 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 communicain 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 others DS0s (30 for calls plus two for framing and signaling) on
trac.
an E-carrier (E1) line used in most other countries. In

54.4 Technology
54.4.1

modern networks, the multiplexing function is moved as


close to the end user as possible, usually into cabinets at
the roadside in residential areas, or into large business
premises.

Network topology

These aggregated circuits are conveyed from the initial


multiplexer to the exchange over a set of equipment colMain article: PSTN network topology
lectively known as the access network. The access network and inter-exchange transport use synchronous optiThe 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 referwas adopted by other nations, with adaptations for local ence points dened. 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 trac 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 benchist, they are much atter, with perhaps only two layers.
mark for the development of the Telecommunications
Industry Association's TIA-TSB-116 standard on voicequality recommendations for IP telephony, to determine
54.4.2 Digital channels
acceptable levels of audio delay and echo.[2]
Main article: Telephone exchange
As described above, most automated telephone exchanges now use digital switching rather than mechanical or analog switching. The trunks connecting the exchanges are also digital, called circuits or channels. However analog two-wire circuits are still used to connect the
last mile from the exchange to the telephone in the home
(also called the local loop). To carry a typical phone call
from a calling party to a called party, the analog audio
signal is digitized at an 8 kHz sample rate with 8-bit resolution using a special type of nonlinear pulse code modulation known as G.711. The call is then transmitted from

54.5 See also


Via Net Loss
Plain old telephone service (POTS)
Managed facilities-based voice network
Telecommunications Industry Association
Internet area network (IAN)
PSTN network topology

304

CHAPTER 54. PUBLIC SWITCHED TELEPHONE NETWORK

54.6 References
[1] Kushnick, Bruce (7 January 2013). What Are the Public Switched Telephone Networks, 'PSTN' and Why You
Should Care?". Hungton 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 broadcasting, 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 convert 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, pictures, digital data, measurement values, navigational positions, 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 elds 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)
some property of the energy produced to impress a signal
on it, for example using amplitude modulation or angle
modulation (which can be frequency modulation or phase

rst applied to communications in 1881 when, at the suggestion of French scientist Ernest Mercadier, Alexander
Graham Bell adopted radiophone (meaning radiated
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 elecof electromagnetic radiation in the late 1880s, a vari- tromagnetic radiation, through the rapid growth of shortety 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 moHertzian waves, electric waves, and ether waves, bile telephony, e.g., GSM and UMTS cell phones. Towhile phrases describing its use in communications in- day, the term radio species 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 wirerelated 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 rst use of radio- in conjunction with electromagnetic radiation appears to have been by French physicist douard Branly, who in 1890 developed a version
of a coherer receiver he called a radio-conducteur.[7] The
radio- prex was later used to form additional descriptive compound and hyphenated words, especially in Europe, for example, in early 1898 the British publication
The Practical Engineer included a reference to the radiotelegraph and radiotelegraphy,[8] while the French
text of both the 1903 and 1906 Berlin Radiotelegraphic
Conventions includes the phrases radiotlgraphique and
radiotlgrammes.
The use of radio as a standalone word dates back
to at least December 30, 1904, when instructions issued by the British Post Oce for transmitting telegrams specied that The word 'Radio'... is sent in
the Service Instructions.[9] This practice was universally
adopted, and the word radio introduced internationally, by the 1906 Berlin Radiotelegraphic Convention,
which included a Service Regulation specifying that Radiotelegrams shall show in the preamble that the service
is 'Radio'".
The switch to radio in place of wireless took place
slowly and unevenly in the English-speaking world. Lee
de Forest helped popularize the new word in the United
Statesin early 1907 he founded the DeForest Radio
Telephone Company, and his letter in the June 22, 1907
Electrical World about the need for legal restrictions
warned that Radio chaos will certainly be the result until such stringent regulation is enforced.[10] The United
States Navy would also play a role. Although its translation of the 1906 Berlin Convention used the terms wireless telegraph and wireless telegram, by 1912 it began
to promote the use of radio instead. The term started
to become preferred by the general public in the 1920s
with the introduction of broadcasting. (Broadcasting is
based upon an agricultural term meaning roughly scattering seeds widely.) British Commonwealth countries
continued to commonly use the term wireless until the
mid-20th century, though the magazine of the British
Broadcasting Corporation in the UK has been called

Radio communication. Information such as sound is converted


by a transducer such as a microphone to an electrical signal,
which modulates a radio wave sent from a transmitter. A receiver
intercepts the radio wave and extracts the information-bearing
electronic signal, which is converted back using another transducer such as a speaker.

Radio systems used for communication have the following elements. With more than 100 years of development,
each process is implemented by a wide range of methods,
specialized for dierent communications purposes.

55.2.1 Transmitter and modulation


Main article: Radio transmitter
See also: Radio transmitter design
Each system contains a transmitter, This consists of a
source of electrical energy, producing alternating current
of a desired frequency of oscillation. The transmitter contains a system to modulate (change) some property of the
energy produced to impress a signal on it. This modulation might be as simple as turning the energy on and
o, or altering more subtle properties such as amplitude,
frequency, phase, or combinations of these properties.
The transmitter sends the modulated electrical energy to a
tuned resonant antenna; this structure converts the rapidly
changing alternating current into an electromagnetic wave
that can move through free space (sometimes with a particular polarization).
Amplitude modulation of a carrier wave works by varying 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 reect the sounds to be reproduced by a speaker, or to specify the light intensity of
television pixels. It was the method used for the rst audio 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
eect, allowing more than one signal to be heard simulduce a tiny voltage at its terminals, that is applied to a
taneously.
receiver to be amplied. Some antennas can be used for
Frequency modulation varies the frequency of the carrier. both transmitting and receiving, even simultaneously, deThe 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 eect" whereby a receiver only receives the strongest signal, even when others are present. 55.2.3 Propagation
Digital data can be sent by shifting the carriers 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-delity
broadcasts of music and speech (see FM broadcasting). Once generated, electromagnetic waves travel through
space either directly, or have their path altered by
Analog TV sound is also broadcast using FM.
reection, refraction or diraction. 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 generally alter the desired signal; this electromagnetic interference comes from natural sources, as well as from ar55.2.2 Antenna
ticial sources such as other transmitters and accidental
radiators. Noise is also produced at every step due to the
inherent properties of the devices used. If the magniMain article: Antenna (radio)
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 antennas terminals, and the antenna radiates 55.2.4 Resonance
the energy from the current as electromagnetic waves (radio 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 individual stations to be selected. A resonant circuit will Main article: Radio frequency
respond strongly to a particular frequency, and much less
so to diering frequencies. This allows the radio receiver
to discriminate between multiple signals diering in fre- Radio frequencies occupy the range from a 3 kHz to 300
GHz, although commercially important uses of radio use
quency.
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 classied 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 rectier, capacitor, headphones and receiver in the case of a voice-communication system.[15]
ground connection.

The power consumed in a transmitting station varies depending on the distance of communication and the transmission conditions. The power received at the receiving
station is usually only a tiny fraction of the transmitters
output, since communication depends on receiving the
information, not the energy, that was transmitted.

ceiving antenna; this structure captures some of the energy of the wave and returns it to the form of oscillating electrical currents. At the receiver, these currents are
demodulated, which is conversion to a usable signal form
by a detector sub-system. The receiver is "tuned" to re- Classical radio communications systems use frequencyspond preferentially to the desired signals, and reject undivision 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 dierent 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 alterwhich made it possible to amplify weak signals. Today ra- natives to the classical FDM strategy. These systems ofdio systems are used for applications from walkie-talkie fer dierent tradeos in supporting multiple users, bechildrens 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
electronic lters to separate a wanted radio signal from all
other signals picked up by this antenna, amplies it to a
level suitable for further processing, and nally converts
through demodulation and decoding the signal into a form
usable for the consumer, such as sound, pictures, digital
data, measurement values, navigational positions, etc.[11]

A radio communication system may send information


only one way. For example, in broadcasting a single transmitter sends signals to many receivers. Two stations may
take turns sending and receiving, using a single radio frequency; this is called simplex. By using two radio frequencies, two stations may continuously and concurrently
send and receive signals - this is called "duplex" operation.

55.5. USES OF RADIO

55.4 History

309

55.5 Uses of radio


For a broader coverage related to this topic, see Radio
spectrum Applications.

Main article: History of radio


In 1864 James Clerk Maxwell showed mathematically
that electromagnetic waves could propagate through free
space.[16] The eects of electromagnetic waves (thenunexplained "action at a distance" sparking behavior)
were actually observed before and after Maxwells work
by many inventors and experimenters including Luigi
Galvani (1791), Peter Samuel Munk (1835), Joseph
Henry (1842), Samuel Alfred Varley (1852), Edwin
Houston, Elihu Thomson, Thomas Edison (1875) and
David Edward Hughes (1878).[17][18][19] Edison gave the
eect the name "etheric force"[20] and Hughes detected
a spark impulse up to 500 yards (460 m) with a portable
receiver, but none could identify what caused the phenomenon and it was usually written o as electromagnetic
induction.[21] In 1886 Heinrich Rudolf Hertz noticed the
same sparking phenomenon and, in published experiments (1887-1888), was able to demonstrate the existence of electromagnetic waves in an experiment conrming Maxwells theory of electromagnetism. The discovery
of these Hertzian waves (radio waves) prompted many
experiments by physicists. An August 1894 lecture by
the British physicist Oliver Lodge, where he transmitted
and received Hertzian waves at distances up to 50 meters, was followed up a year later with experiments by
Indian physicist Jagadish Bose in radio microwave optics
and construction of a radio based lightning detector by
Russian physicist Alexander Stepanovich Popov. Starting in late 1894, Guglielmo Marconi began pursuing the
idea of building a wireless telegraphy system based on
Hertzian waves (radio). Marconi gained a patent on the
system in 1896 and developed it into a commercial communication system over the next few years.[22]

Early uses were maritime, for sending telegraphic messages using Morse code between ships and land. The earliest users included the Japanese Navy scouting the Russian eet during the Battle of Tsushima in 1905. One of
the most memorable uses of marine telegraphy was during the sinking of the RMS Titanic in 1912, including
communications between operators on the sinking ship
and nearby vessels, and communications to shore stations
listing the survivors.
Radio was used to pass on orders and communications
between armies and navies on both sides in World War
I; Germany used radio communications for diplomatic
messages once it discovered that its submarine cables had
been tapped by the British. The United States passed
on President Woodrow Wilson's Fourteen Points to Germany via radio during the war. Broadcasting began from
San Jose, California in 1909,[23] and became feasible in
the 1920s, with the widespread introduction of radio receivers, particularly in Europe and the United States. Besides broadcasting, point-to-point broadcasting, including telephone messages and relays of radio programs, became widespread in the 1920s and 1930s. Another use of
radio in the pre-war years was the development of detection and locating of aircraft and ships by the use of radar
(RAdio Detection And Ranging).

Today, radio takes many forms, including wireless networks and mobile communications of all types, as well as
radio broadcasting. Before the advent of television, commercial radio broadcasts included not only news and music, but dramas, comedies, variety shows, and many other
forms of entertainment (the era from the late 1920s to
the mid-1950s is commonly called radios Golden Age).
Radio was unique among methods of dramatic presentation in that it used only sound. For more, see radio proEarly 20th century radio systems transmitted messages
gramming.
by continuous wave code only. Early attempts at developing a system of amplitude modulation for voice and
music were demonstrated in 1900 and 1906, but had little success. World War I accelerated the development of 55.5.1 Audio
radio for military communications, and in this era the rst
vacuum tubes were applied to radio transmitters and re- One-way
ceivers. Electronic amplication 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 amradio 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 miWorld War II again accelerated development of radio for crophone, while the transmitted frequency remains unthe wartime purposes of aircraft and land communica- changed. Transmissions are aected by static and intion, 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

Bakelite radio at the Bakelite Museum, Orchard Mill, Williton,


Somerset, UK.

CHAPTER 55. RADIO

Bush House, old home of the BBC World Service.

FM broadcast radio sends music and voice with less noise


than AM radio. It is often mistakenly thought that FM is
higher delity than AM, but that is not true. AM is capable of the same audio bandwidth that FM employs. AM
receivers typically use narrower lters 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 lter used in an AM stereo receiver,
but today, AM radios limit the audio bandpass to 35
kHz. In frequency modulation, amplitude variation at the
microphone causes the transmitter frequency to uctuate.
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- 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 specdio stations broadcast with powers as high as 500 kW, trum.
and some could be heard worldwide; these stations transmitters 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 50200 miles (80322 km). During unusual upin 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 reected back towards the Earth by the ionosphere, regrandfathered 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 eect, which causes the radio to
granted 50,000-watt class A license. These 50 kW sta- only receive the strongest signal when multiple signals aptions 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, diracting
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 (HF3 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 sacrices delity
Michigan, US, runs 320,000 watts ERP, and can increase to make more channels available within the radio specto 500,000 watts ERP by the terms of its original license. trum, by using a smaller range of radio frequencies, usuSuch a huge power level does not usually help to increase ally with ve 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 frequencies travel in nearly straight lines over the horizon sound.
and o into space. Nevertheless, when there were fewer
FM stations competing, this station could be heard near
Bloomington, Illinois, US, almost 300 miles (480 km)
away.

Government, police, re and commercial voice services


also use narrowband FM on special frequencies. Early
police radios used AM receivers to receive one-way dispatches.

FM subcarrier services are secondary signals transmitted


in a piggyback fashion along with the main program.
Special receivers are required to utilize these services.
Analog channels may contain alternative programming,
such as reading services for the blind, background music or stereo sound signals. In some extremely crowded
metropolitan areas, the sub-channel program might be an
alternate foreign-language radio program for various ethnic groups. Sub-carriers can also transmit digital data,
such as station identication, the current songs name,
web addresses, or stock quotes. In some countries, FM
radios automatically re-tune themselves to the same channel in a dierent district by using sub-bands.

Civil and military HF (high frequency) voice services use


shortwave radio to contact ships at sea, aircraft and isolated settlements. Most use single sideband voice (SSB),
which uses less bandwidth than AM.[24] On an AM radio SSB sounds like ducks quacking, or the adults in a
Charlie Brown cartoon. Viewed as a graph of frequency
versus power, an AM signal shows power where the frequencies of the voice add and subtract with the main radio
frequency. SSB cuts the bandwidth in half by suppressing
the carrier and one of the sidebands. This also makes the
transmitter about three times more powerful, because it
doesn't need to transmit the unused carrier and sideband.

Two-way
Main article: Two-way radio
Aviation voice radios use Aircraft band VHF AM. AM
is used so that multiple stations on the same channel can
be received. (Use of FM would result in stronger stations blocking out reception of weaker stations due to
FMs capture eect). Aircraft y high enough that their
transmitters can be received hundreds of miles away, even
though they are using VHF.

TETRA, Terrestrial Trunked Radio is a digital cell phone


system for military, police and ambulances. Commercial
services such as XM, WorldSpace and Sirius oer encrypted digital satellite radio.

55.5.2 Telephony
Mobile phones transmit to a local cell site (transmitter/receiver) that ultimately connects to the public
switched telephone network (PSTN) through an optic
ber or microwave radio and other network elements.
When the mobile phone nears the edge of the cell sites
radio coverage area, the central computer switches the
phone to a new cell. Cell phones originally used FM, but
now most use various digital modulation schemes. Recent developments in Sweden (such as DROPme) allow
for the instant downloading of digital material from a radio broadcast (such as a song) to a mobile phone.
Satellite phones use satellites rather than cell towers to
communicate.

55.5.3 Video

Degen DE1103, an advanced world mini-receiver with single


sideband modulation and dual conversion

Analog television sends the picture as AM and the sound


as AM or FM, with the sound carrier a xed frequency
(4.5 MHz in the NTSC system) away from the video carrier. Analog television also uses a vestigial sideband on
the video carrier to reduce the bandwidth required.
Digital television uses 8VSB modulation in North Amer-

312

CHAPTER 55. RADIO

ica (under the ATSC digital television standard), and


COFDM modulation elsewhere in the world (using the
DVB-T standard). A ReedSolomon error correction
code adds redundant correction codes and allows reliable reception during moderate data loss. Although many
current and future codecs can be sent in the MPEG
transport stream container format, as of 2006 most systems use a standard-denition format almost identical to
DVD: MPEG-2 video in Anamorphic widescreen and
MPEG layer 2 (MP2) audio. High-denition television
is possible simply by using a higher-resolution picture,
but H.264/AVC is being considered as a replacement
video codec in some regions for its improved compression. With the compression and improved modulation
involved, a single channel can contain a high-denition
program and several standard-denition programs.

gation potential to civil aircraft.

55.5.5 Radar
Main article: Radar
Radar (Radio Detection And Ranging) detects objects at
a distance by bouncing radio waves o them. The delay
caused by the echo measures the distance. The direction
of the beam determines the direction of the reection.
The polarization and frequency of the return can sense
the type of surface. Navigational radars scan a wide area
two to four times per minute. They use very short waves
that reect from earth and stone. They are common on
commercial ships and long-distance commercial aircraft.

General purpose radars generally use navigational radar


frequencies, but modulate and polarize the pulse so the
receiver can determine the type of surface of the reecMain 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 ratime of the transmission. The receiver listens to four dio waves. They usually scan the area two to four times
satellites, and can gure its position as being on a line that a minute. Sometimes search radars use the Doppler efis tangent to a spherical shell around each satellite, deter- fect to separate moving vehicles from clutter. Targeting
mined by the time-of-ight 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-nding 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 wavetennas to locate commercial AM stations near cities. length to reect from water droplets. Some weather radar
In some cases they used marine radiolocation beacons, use the Doppler eect to measure wind speeds.

55.5.4

Navigation

which share a range of frequencies just above AM radio


with amateur radio operators. LORAN systems also used
time-of-ight radio signals, but from radio stations on the 55.5.6
ground.

Data (digital radio)

Very High Frequency Omnidirectional Range (VOR),


systems (used by aircraft), have an antenna array that
transmits two signals simultaneously. A directional signal rotates like a lighthouse at a xed rate. When the directional signal is facing north, an omnidirectional signal
pulses. By measuring the dierence in phase of these
two signals, an aircraft can determine its bearing or radial 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 "x.
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 x
from only one ground station. Such stations are called
VOR/DMEs. The military operates a similar system
of navaids, called TACANs, which are often built into
VOR stations. Such stations are called VORTACs. Because TACANs include distance measuring equipment,
VOR/DME and VORTAC stations are identical in navi-

2008 Pure One Classic digital radio

Most new radio systems are digital, including Digital TV,


satellite radio, and Digital Audio Broadcasting. The oldest form of digital broadcast was spark gap telegraphy,
used by pioneers such as Marconi. By pressing the key,

55.5. USES OF RADIO


the operator could send messages in Morse code by energizing a rotating commutating spark gap. The rotating commutator produced a tone in the receiver, where
a simple spark gap would produce a hiss, indistinguishable from static. Spark-gap transmitters are now illegal,
because their transmissions span several hundred megahertz. This is very wasteful of both radio frequencies and
power.
The next advance was continuous wave telegraphy, or
CW (Continuous Wave), in which a pure radio frequency,
produced by a vacuum tube electronic oscillator was
switched on and o by a key. A receiver with a local oscillator would "heterodyne" with the pure radio frequency,
creating a whistle-like audio tone. CW uses less than 100
Hz of bandwidth. CW is still used, these days primarily by amateur radio operators (hams). Strictly, on-o
keying of a carrier should be known as Interrupted Continuous Wave or ICW or on-o keying (OOK).

313
sions. Commercial use of spread spectrum began in the
1980s. Bluetooth, most cell phones, and the 802.11b version of Wi-Fi each use various forms of spread spectrum.
Systems that need reliability, or that share their frequency with other services, may use coded orthogonal
frequency-division multiplexing or COFDM. COFDM
breaks a digital signal into as many as several hundred
slower subchannels. The digital signal is often sent as
QAM on the subchannels. Modern COFDM systems use
a small computer to make and decode the signal with
digital signal processing, which is more exible and far
less expensive than older systems that implemented separate electronic channels.

COFDM resists fading and ghosting because the narrowchannel QAM signals can be sent slowly. An adaptive
system, or one that sends error-correction codes can also
resist interference, because most interference can aect
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 keying. Groups of ve 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
to send their ID, altitude and position, and get gate
and connecting-ight data. Microwave dishes on satellites, telephone exchanges and TV stations usually use
quadrature amplitude modulation (QAM). QAM sends
data by changing both the phase and the amplitude of
the radio signal. Engineers like QAM because it packs
the most bits into a radio signal when given an exclusive
(non-shared) xed narrowband frequency range. Usually
the bits are sent in frames that repeat. A special bit
pattern is used to locate the beginning of a frame.

Radio-frequency energy generated for heating of objects


is generally not intended to radiate outside of the generating equipment, to prevent interference with other radio
signals. Microwave ovens use intense radio waves to heat
food. Diathermy equipment is used in surgery for sealing
of blood vessels. Induction furnaces are used for melting
metal for casting, and induction hobs for cooking.

55.5.8 Amateur radio service

Modern GPS receivers.

Communication systems that limit themselves to a xed


narrowband frequency range are vulnerable to jamming. Amateur radio station with multiple receivers and transceivers
A variety of jamming-resistant spread spectrum techniques 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 noncommercially and for their own experiments. They may
also provide emergency and service assistance in exceptional circumstances. This contribution has been very
benecial in saving lives in many instances.[25]
Radio amateurs use a variety of modes, including ecient ones like Morse code and experimental ones like
Low-Frequency Experimental Radio. Several forms of
radio were pioneered by radio amateurs and later became
commercially important, including FM, single-sideband
(SSB), AM, digital packet radio and satellite repeaters.
Some amateur frequencies may be disrupted illegally by
power-line internet service.

55.5.9

Unlicensed radio services

Unlicensed, government-authorized personal radio services such as Citizens band radio in Australia, most of
the Americas, and Europe, and Family Radio Service and
Multi-Use Radio Service in North America exist to provide simple, usually short range communication for individuals and small groups, without the overhead of licensing. Similar services exist in other parts of the world.
These radio services involve the use of handheld units.
Wi-Fi also operates in unlicensed radio bands and is very
widely used to network computers.
Free radio stations, sometimes called pirate radio or
clandestine stations, are unauthorized, unlicensed, illegal broadcasting stations. These are often low power
transmitters operated on sporadic schedules by hobbyists,
community activists, or political and cultural dissidents.
Some pirate stations operating oshore in parts of Europe and the United Kingdom more closely resembled
legal stations, maintaining regular schedules, using high
power, and selling commercial advertising time.[26][27]

55.5.10

Radio control (RC)

Radio remote controls use radio waves to transmit control data to a remote object as in some early forms
of guided missile, some early TV remotes and a range
of model boats, cars and airplanes. Large industrial
remote-controlled equipment such as cranes and switching locomotives now usually use digital radio techniques
to ensure safety and reliability.

55.7 Notes
[1] While the term 'radio-' is actually the combining form of
radiant (e.g., radioactive, radiotherapy), the process that
was originally called radiotelegraphy has become so common that it is nearly always called just 'radio' and the associated electromagnetic waves are called radio waves. In
practice, radio frequencies are signicantly below that of
visible light from about 3 kHz to 300 GHz.[1]

55.8 References
[1] Dictionary of Electronics By Rudolf F. Graf (1974). Page
467.
[2] Radio-Electronics, ''Radio Receiver Technology''".
Radio-electronics.com. Retrieved 2014-08-02.
[3] The Electromagnetic Spectrum, University of Tennessee,
Dept. of Physics and Astronomy
[4] Clint Smith, Curt Gervelis (2003). Wireless Network Performance Handbook. McGraw-Hill Professional. ISBN
0-07-140655-7.
[5] R. K. Puri (2004). Solid State Physics and Electronics. S.
Chand. ISBN 81-219-1475-2.
[6] Production of Sound by Radiant Energy by Alexander
Graham Bell, Popular Science Monthly, July, 1881, pages
329-330: "[W]e have named the apparatus for the production and reproduction of sound in this way the photophone, because an ordinary beam of light contains the
rays which are operative. To avoid in future any misunderstandings upon this point, we have decided to adopt the
term "radiophone", proposed by M. Mercadier, as a general term signifying the production of sound by any form
of radiant energy...
[7] The Genesis of Wireless Telegraphy by A. Frederick
Collins, Electrical World and Engineer, May 10, 1902,
page 811.
[8] Wireless Telegraphy, The Practical Engineer, February
25, 1898, page 174. Dr. O. J. Lodge, who preceded Marconi in making experiments in what may be called ray
telegraphy or radiotelegraphy by a year or two, has devised
a new method of sending and receiving the messages. The
reader will understand that in the radiotelegraph electric
waves forming the signals of the message start from the
sending instrument and travel in all directions like rays of
light from a lamp, only they are invisible.

In Madison Square Garden, at the Electrical Exhibi- [9]


tion of 1898, Nikola Tesla successfully demonstrated a
radio-controlled boat.[28] He was awarded U.S. patent
No. 613,809 for a Method of and Apparatus for Con[10]
trolling Mechanism of Moving Vessels or Vehicles.[29]

55.6 See also


Outline of radio

Wireless Telegraphy, The Electrical Review (London),


January 20, 1905, page 108, quoting from the British Post
Oces December 30, 1904 Post Oce Circular.
Interference with Wireless Messages, Electrical World,
June 22, 1907, page 1270.

[11] Radio-Electronics, ''Radio Receiver Technology''".


Radio-electronics.com. Retrieved 2014-08-02.
[12] The Electromagnetic Spectrum, University of Tennessee,
Dept. of Physics and Astronomy

55.9. EXTERNAL LINKS

[13] Clint Smith, Curt Gervelis (2003). Wireless Network Performance Handbook. McGraw-Hill Professional. ISBN
0-07-140655-7.
[14] Macario, R. C. V. (1996). Modern personal radio systems. IEE telecommunications series, 33. London: Institution 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 3Volume, Routledge - 2004, page 831
[19] Anand Kumar Sethi, The Business of Electronics: A Concise 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-81339064-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. Retrieved 2009-07-22.
[29] Tesla - Master of Lightning: Selected Tesla Patents.
PBS. Retrieved 2009-07-22.

55.9 External links

315

Chapter 56

Semantics
Semantics (from Ancient Greek: smantikos, signicant)[1][2] is primarily the linguistic, and
also philosophical study of meaningin language, programming languages, formal logics, and semiotics. It focuses on the relationship between signierslike words,
phrases, signs, and symbolsand what they stand for,
their denotation.
In international scientic vocabulary semantics is also
called semasiology. The word semantics was rst used by
Michel Bral, a French philologist.[3] It denotes a range
of ideasfrom the popular to the highly technical. It
is often used in ordinary language for denoting a problem of understanding that comes down to word selection
or connotation. This problem of understanding has been
the subject of many formal enquiries, over a long period
of time, especially in the eld of formal semantics. In
linguistics, it is the study of the interpretation of signs or
symbols used in agents or communities within particular
circumstances and contexts.[4] Within this view, sounds,
facial expressions, body language, and proxemics have semantic (meaningful) content, and each comprises several
branches of study. In written language, things like paragraph structure and punctuation bear semantic content;
other forms of language bear other semantic content.[4]
The formal study of semantics intersects with many other
elds of inquiry, including lexicology, syntax, pragmatics,
etymology and others. Independently, semantics is also
a well-dened eld in its own right, often with synthetic
properties.[5] In the philosophy of language, semantics
and reference are closely connected. Further related elds
include philology, communication, and semiotics. The
formal study of semantics can therefore be manifold and
complex.

56.1 Linguistics
In linguistics, semantics is the subeld that is devoted
to the study of meaning, as inherent at the levels of
words, phrases, sentences, and larger units of discourse
(termed texts, or narratives). The study of semantics
is also closely linked to the subjects of representation,
reference and denotation. The basic study of semantics is
oriented to the examination of the meaning of signs, and
the study of relations between dierent linguistic units
and compounds: homonymy, synonymy, antonymy,
hypernymy, hyponymy, meronymy, metonymy,
holonymy, paronyms. A key concern is how meaning attaches to larger chunks of text, possibly as a result
of the composition from smaller units of meaning.
Traditionally, semantics has included the study of sense
and denotative reference, truth conditions, argument
structure, thematic roles, discourse analysis, and the
linkage of all of these to syntax.

56.2 Montague grammar


In the late 1960s, Richard Montague proposed a system
for dening semantic entries in the lexicon in terms of the
lambda calculus. In these terms, the syntactic parse of
the sentence John ate every bagel would consist of a subject (John) and a predicate (ate every bagel); Montague
demonstrated that the meaning of the sentence altogether
could be decomposed into the meanings of its parts and
in relatively few rules of combination. The logical predicate thus obtained would be elaborated further, e.g. using
truth theory models, which ultimately relate meanings to
a set of Tarskiian universals, which may lie outside the
logic. The notion of such meaning atoms or primitives
is basic to the language of thought hypothesis from the
1970s.

Semantics contrasts with syntax, the study of the combinatorics of units of a language (without reference to their
meaning), and pragmatics, the study of the relationships
between the symbols of a language, their meaning, and
the users of the language.[6] Semantics as a eld of study
also has signicant 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 inmeaning.
complete, they get assigned based on context
316

56.4. PROTOTYPE THEORY


Generative lexicon (1990s): categories (types) are
incomplete, and get assigned based on context

317
afraid') has its particular value only because
they stand in contrast with one another. No
word has a value that can be identied independently of what else is in its vicinity.[11]

56.3 Dynamic turn in semantics


and may go back to earlier Indian views on language, esof words as indicators and not
In Chomskyan linguistics there was no mechanism for pecially the Nyaya view
[12]
carriers
of
meaning.
the learning of semantic relations, and the nativist view
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 underspecication 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 shiftand 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 y (as you go), based on nite 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 nite meaning
inherent in a lexical unit that can be composed to
generate meanings for larger chunks of discourse, is
now being ercely debated in the emerging domain of
cognitive linguistics[8] and also in the non-Fodorian camp
in philosophy of language.[9] The challenge is motivated
by:

Another set of concepts related to fuzziness in semantics is based on prototypes. The work of Eleanor Rosch
in the 1970s led to a view that natural categories are not
characterizable in terms of necessary and sucient conditions, but are graded (fuzzy at their boundaries) and inconsistent as to the status of their constituent members.
One may compare it with Jung's archetype, though the
concept of archetype sticks to static concept. Some poststructuralists are against the xed or static meaning of the
words. Derrida, following Nietzsche, talked about slippages in xed meanings.

factors internal to language, such as the problem of


resolving indexical or anaphora (e.g. this x, him, last
week). In these situations context serves as the input,
but the interpreted utterance also modies the context, 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 peoples 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)
reects the position of the later Wittgenstein and his will not be identical for dierent cultures, or indeed, for
famous game example, and is related to the positions every individual in the same culture. This leads to another debate (see the SapirWhorf hypothesis or Eskimo
of Quine, Davidson, and others.
words for snow).
A concrete example of the latter phenomenon is semantic underspecication 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 dierent. 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 Montagues 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

56.5.2

CHAPTER 56. SEMANTICS

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 algorithms and architectures are described. Within this
framework the algorithms and architectures are also analyzed in terms of decidability, time/space complexity, data structures they require and communication
protocols.[17]

Pioneered by the philosopher Donald Davidson, another


formalized theory, which aims to associate each natural language sentence with a meta-language description
of the conditions under which it is true, for example:
'Snow is white' is true if and only if snow is white. The
challenge is to arrive at the truth conditions for any sentences from xed meanings assigned to the individual
words and xed rules for how to combine them. In
practice, truth-conditional semantics is similar to model- 56.6 Computer science
theoretic semantics; conceptually, however, they dier
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 meaning directly but constrains the possible interpretations of
what is declared.[18] In other words, semantics is about
56.5.3 Lexical and conceptual semantics
interpretation of an expression. Additionally, the term
is applied to certain types of data structures specically
Main article: conceptual semantics
designed and used for representing information content.
This theory is an eort to explain properties of argument
structure. The assumption behind this theory is that syntactic properties of phrases reect the meanings of the
words that head them.[14] With this theory, linguists can
better deal with the fact that subtle dierences in word
meaning correlate with other dierences in the syntactic
structure that the word appears in.[14] The way this is gone
about is by looking at the internal structure of words.[15]
These small parts that make up the internal structure of
words are termed semantic primitives.[15]

56.5.4

Lexical semantics

56.6.1 Programming languages


The semantics of programming languages and other languages is an important issue and area of study in computer
science. Like the syntax of a language, its semantics can
be dened exactly.
For instance, the following statements use dierent syntaxes, but cause the same instructions to be executed:
Generally these operations would all perform an arithmetical addition of 'y' to 'x' and store the result in a variable called 'x'.
Various ways have been developed to describe the
semantics of programming languages formally, building
on mathematical logic:[19]

Main article: lexical semantics


A linguistic theory that investigates word meaning. This
theory understands that the meaning of a word is fully
reected by its context. Here, the meaning of a word
is constituted by its contextual relations.[16] Therefore,
a distinction between degrees of participation as well as
modes of participation are made.[16] In order to accomplish this distinction any part of a sentence that bears a
meaning and combines with the meanings of other constituents is labeled as a semantic constituent. Semantic constituents that cannot be broken down into more
elementary constituents are labeled minimal semantic
constituents.[16]

Operational semantics: The meaning of a construct


is specied by the computation it induces when it is
executed on a machine. In particular, it is of interest
how the eect of a computation is produced.
Denotational semantics: Meanings are modelled by
mathematical objects that represent the eect of executing the constructs. Thus only the eect is of interest, not how it is obtained.
Axiomatic semantics: Specic properties of the effect of executing the constructs are expressed as assertions. Thus there may be aspects of the executions that are ignored.

56.8. SEE ALSO

56.6.2

Semantic models

Terms such as semantic network and semantic data model


are used to describe particular types of data model characterized by the use of directed graphs in which the vertices denote concepts or entities in the world, and the arcs
denote relationships between them.
The Semantic Web refers to the extension of the World
Wide Web via embedding added semantic metadata, using semantic data modelling techniques such as Resource
Description Framework (RDF) and Web Ontology Language (OWL).

56.7 Psychology

319
Colorless green ideas sleep furiously
Computational semantics
Discourse representation theory
General semantics
Generative semantics
Hermeneutics
Natural semantic metalanguage
Onomasiology
Phono-semantic matching
Pragmatic maxim

In psychology, semantic memory is memory for meaning


Pragmaticism
in other words, the aspect of memory that preserves
Pragmatism
only the gist, the general signicance, of remembered
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
Semantic class
of 'declarative memory' which involved simple association of factual or objective information concerning its ob Semantic feature
ject. Word meaning is measured by the company they
keep, i.e. the relationships among words themselves in
Semantic eld
a semantic network. The memories may be transferred
intergenerationally or isolated in one generation due to a
Semantic lexicon
cultural disruption. Dierent generations may have dif Semantic primes
ferent experiences at similar points in their own timelines. 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)
Semiosis
the links and decomposition structures of the network are
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.
Formal logic
Ideasthesia is a psychological phenomenon in which activation of concepts evokes sensory experiences. For example, in synesthesia, activation of a concept of a letter
(e.g., that of the letter A) evokes sensory-like experiences
(e.g., of red color).

56.8 See also


56.8.1

Linguistics and semiotics

Game semantics
Model theory
Gdels incompleteness theorems
Proof-theoretic semantics
Semantic consequence
Semantic theory of truth

Asemic writing

Semantics of logic

Cognitive semantics

Truth-value semantics

320

56.8.3

CHAPTER 56. SEMANTICS

Computer science

Formal semantics of programming languages


Knowledge representation
Semantic networks
Semantic transversal
Semantic analysis
Semantic compression
Semantic HTML
Semantic integration
Semantic interpretation
Semantic link
Semantic reasoner
Semantic service oriented architecture
Semantic spectrum
Semantic unication
Semantic Web

56.8.4

Psychology

Ideasthesia

56.9 References
[1] . Liddell, Henry George; Scott, Robert; A
GreekEnglish Lexicon at the Perseus Project
[2] The word is derived from the Ancient Greek word (semantikos), related to meaning, signicant,
from semaino, to signify, to indicate, which is
from sema, sign, mark, token. The plural is used
in analogy with words similar to physics, which was in the
neuter plural in Ancient Greek and meant things relating
to nature.
[3] Chambers Biographical Dictionary,5e.1990,p.202
[4] Neurath, Otto; Carnap, Rudolf; Morris, Charles F. W.
(Editors) (1955). International Encyclopedia of Unied
Science. Chicago, IL: University of Chicago Press.
[5] Cruse, Alan; Meaning and Language: An introduction to
Semantics and Pragmatics, Chapter 1, Oxford Textbooks
in Linguistics, 2004; Kearns, Kate; Semantics, Palgrave
MacMillan 2000; Cruse, D. A.; Lexical Semantics, Cambridge, MA, 1986.
[6] Kitcher, Philip; Salmon, Wesley C. (1989). Scientic Explanation. Minneapolis, MN: University of Minnesota
Press. p. 35.

[7] Barsalou, L.; Perceptual Symbol Systems, Behavioral and


Brain Sciences, 22(4), 1999
[8] Langacker, Ronald W. (1999). Grammar and Conceptualization. Berlin/New York: Mouton de Gruyer. ISBN
3-11-016603-8.
[9] Peregrin, Jaroslav (2003). Meaning: The Dynamic Turn.
Current Research in the Semantics/Pragmatics Interface.
London: Elsevier.
[10] Grdenfors, Peter (2000). Conceptual Spaces: The Geometry of Thought. MIT Press/Bradford Books. ISBN
978-0-585-22837-2.
[11] de Saussure, Ferdinand (1916). The Course of General
Linguistics (Cours de linguistique gnrale).
[12] Matilal, Bimal Krishna (1990). The Word and the World:
Indias Contribution to the Study of Language. Oxford.
The Nyaya and Mimamsa schools in Indian vykaraa tradition conducted a centuries-long debate on whether sentence meaning arises through composition on word meanings, which are primary; or whether word meanings are
obtained through analysis of sentences where they appear.
(Chapter 8).
[13] Lako, George; Johnson, Mark (1999). Philosophy in the
Flesh: The embodied mind and its challenge to Western
thought. Chapter 1. New York, NY: Basic Books. OCLC
93961754.
[14] Levin, Beth; Pinker, Steven; Lexical & Conceptual Semantics, Blackwell, Cambridge, MA, 1991
[15] Jackendo, Ray; Semantic Structures, MIT Press, Cambridge, MA, 1990
[16] Cruse, D.; Lexical Semantics, Cambridge University Press,
Cambridge, MA, 1986
[17] Nerbonne, J.; The Handbook of Contemporary Semantic Theory (ed. Lappin, S.), Blackwell Publishing, Cambridge, MA, 1996
[18] Euzenat, Jerome. Ontology Matching. Springer-Verlag
Berlin Heidelberg, 2007, p. 36
[19] Nielson, Hanne Riis; Nielson, Flemming (1995). Semantics with Applications, A Formal Introduction (1st ed.).
Chicester, England: John Wiley & Sons. ISBN 0-47192980-8.
[20] Giannini, A. J.; Semiotic and Semantic Implications of
Authenticity, Psychological Reports, 106(2):611612,
2010

56.10 External links


semanticsarchive.net
Teaching page for A-level semantics
Chomsky, Noam; On Referring, Harvard University,
30 October 2007 (video)

56.10. EXTERNAL LINKS


Jackendo, Ray; Conceptual Semantics, Harvard
University, 13 November 2007 (video)
Semantics: an interview with Jerry Fodor (ReVEL,
vol. 5, no. 8 (2007))

321

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 disee Soap (disambiguation).
rectly.
The SOAP architecture consists of several layers of specSOAP (Simple Object Access Protocol) is a protocol ications for:
specication 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 Message Exchange Patterns (MEP)
lies on application layer protocols, most often Hypertext
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
WDDX).
protocol consisting of three parts:
an envelope, which denes 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-dened 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
were working.[2] Due to politics within Microsoft,[3] the
sponses
specication was not made available until it was submitted
to IETF 13 September 1999.[4][5] Because of Microsofts
SOAP has three major characteristics:
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
and is therefore not considered a standard as such. Verextensions under development)
sion 1.1 of the specication 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 standard either. Version 1.2 of the specication, however,
3. independence (SOAP allows for any programming
became a W3C recommendation on June 24, 2003.
model)
The SOAP specication[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 Conplication can send a SOAP request to a server that has web sortium until the group was closed 10 July 2009. SOAP
but
services enabledsuch as a real-estate price database originally stood for Simple Object Access Protocol
[10]
version
1.2
of
the
standard
dropped
this
acronym.
with the parameters for a search. The server then returns
a SOAP response (an XML-formatted document with the After SOAP was rst introduced, it became the underlyresulting 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


on Web Services Description Language (WSDL), XML
schema and Universal Description Discovery and Integration (UDDI). These dierent services, especially UDDI,
have proved to be of far less interest, but an appreciation
of them gives a more complete understanding of the expected role of SOAP compared to how web services have
actually evolved.

57.3 Specication

323
SOAP receiver a SOAP node that accepts a SOAP
message
SOAP message path the set of SOAP nodes through
which a single SOAP message passes
Initial SOAP sender (Originator) the SOAP sender
that originates a SOAP message at the starting point
of a SOAP message path
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 forward a SOAP message towards an ultimate SOAP
receiver.
Ultimate SOAP receiver the SOAP receiver that
is a nal destination of a SOAP message. It is responsible 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 because of a problem at a SOAP intermediary. An
ultimate SOAP receiver cannot also be a SOAP intermediary for the same SOAP message.

57.4 SOAP building blocks


SOAP structure

A SOAP message is an ordinary XML document containing the following elements:

The SOAP specication denes the messaging framework, which consists of:
The SOAP processing model dening the rules for
processing a SOAP message

57.5 Transport methods

Both SMTP and HTTP are valid application layer pro The SOAP extensibility model dening 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 todays internet in The SOAP underlying protocol binding framework frastructure; specically, HTTP works well with network
describing the rules for dening a binding to an un- rewalls. 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
uses an encrypted transport protocol underneath) with eiSOAP messages between SOAP nodes
ther simple or mutual authentication; this is the advocated
The SOAP message construct dening the structure WS-I method to provide web service security as stated in
of a SOAP message
the WS-I Basic Prole 1.1.

57.3.1

Processing model

The SOAP processing model describes a distributed processing model, its participants, the SOAP nodes, and how
a SOAP receiver processes a SOAP message. The following SOAP nodes are dened:
SOAP sender a SOAP node that transmits a SOAP
message

This is a major advantage over other distributed protocols


like GIOP/IIOP or DCOM, which are normally ltered
by rewalls. SOAP over AMQP is yet another possibility that some implementations support. SOAP also has
an advantage over DCOM that it is unaected by security rights congured on the machines that require knowledge of both transmitting and receiving nodes. This lets
SOAP be loosely coupled in a way that is not possible
with DCOM. There is also the SOAP-over-UDP OASIS
standard.

324

57.6 Message format

CHAPTER 57. SOAP

57.8.1 Advantages

SOAPs neutrality characteristic explicitly makes it


XML Information Set was chosen as the standard messuitable for use with any transport protocol. Implesage format because of its widespread use by major cormentations often use HTTP as a transport protocol,
porations and open source development eorts. Typbut 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 signicantly eases
SMTP, JMS and message queues.
the transition to a SOAP-based implementation. The
SOAP, when combined with HTTP post/response
somewhat lengthy syntax of XML can be both a beneexchanges, tunnels easily through existing rewalls
t and a drawback. While it promotes readability for huand proxies, and consequently doesn't require modmans, facilitates error detection, and avoids interoperabilifying the widespread computing and communicaity problems such as byte-order (endianness), it can slow
tion infrastructures that exist for processing HTTP
processing speed and can be cumbersome. For example,
post/response exchanges.
CORBA, GIOP, ICE, and DCOM use much shorter, binary 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 When using standard implementations and the detocols where the overhead was usually a relatively small
fault SOAP/HTTP binding, the XML infoset is sepercentage of the overall message.
rialized as XML. To improve performance for the
In nancial 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 (Fithe Message Transmission Optimization Mechanancial Information Exchange) and CDR (Common Data
nism was introduced.
Representation).[13]
When relying on HTTP as a transport protocol and
XML Information Set does not have to be serialized in
not using WS-Addressing or an ESB, the roles of
XML. For instance, a CSV or JSON XML-infoset reprethe interacting parties are xed. Only one party (the
sentation exists. There is also no need to specify a generic
client) can use the services of the other.
transformation framework. The concept of SOAP bindings allows for specic bindings for a specic application.
The drawback is that both the senders and receivers have
to support this newly dened binding.

57.7 Example message


POST /InStock HTTP/1.1 Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299 SOAPAction: "http://www.w3.
org/2003/05/soap-envelope" <?xml version="1.0"?>
<soap:Envelope xmlns:soap=\char"0022\relax{}http://
www.w3.org/2003/05/soap-envelope"> <soap:Header>
</soap:Header>
<soap:Body>
<m:GetStockPrice
xmlns:m=\char"0022\relax{}http://www.example.org/
stock/Surya"> <m:StockName>IBM</m:StockName>
</m:GetStockPrice> </soap:Body> </soap:Envelope>

The verbosity of the protocol, slow parsing speed of


XML, and lack of a standardized interaction model
led to the domination in the eld by services using
the HTTP protocol more directly. See, for example,
REST (Representational_state_transfer).

57.9 See also


SOAP with Attachments
SOAP with Attachments API for Java
SOAP-over-UDP
List of web service protocols
Message Transmission Optimization Mechanism
(MTOM)
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

57.10 References
[1] Hirsch, Frederick; Kemp, John; Ilkka, Jani (2007).
Mobile Web Services: Architecture and Implementation.
John Wiley & Sons. p. 27. ISBN 9780470032596.
Retrieved 2014-09-15. Simple Object Access Protocol
(SOAP) denes a messaging envelope structure designed
to carry application payload in one portion of the envelope (the message body) and control information in another (the message header).
[2] Exclusive .NET Developers Journal Indigo Interview
with Microsofts Don Box. Dotnet.sys-con.com. Retrieved 2012-10-04.
[3] Don Box on the history of SOAP. XML.com. 200104-04.
[4] XML Cover Pages on the history of SOAP. Coverpages.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 Specications. 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 (Second Edition)". W3C. April 27, 2007. Retrieved 201206-15. Note: In previous versions of this specication
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. Retrieved 2012-10-04.
[12] IBM Zurich XML Accelerator Engine (PDF). Retrieved
2012-10-04.
[13] Evaluating SOAP for High Performance Business Applications: Real-Time Trading Systems. Tenermerx Pty
Ltd University of Technology, Sydney. 2011-11-30. Retrieved 2013-03-14.

57.11 Further reading


Benot Marchal, "Soapbox: Why I'm using SOAP",
IBM
Uche Ogbuji, "Tutorial: XML messaging with
SOAP", Principal Consultant, Fourthought, Inc.

325

57.12 External links


W3C SOAP page
SOAP Version 1.2 specication
Create SOAP Message in Java

Chapter 58

Software
For other uses, see Software (disambiguation).
Computer software, or simply software, is that part

documentation or digital media. Computer hardware


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 specic to an individual
processortypically a central processing unit (CPU). A
machine language consists of groups of binary values signifying processor instructions that change the state of the
computer from its preceding state. For example, an instruction may change the value stored in a particular storage location in the computeran eect that is not directly observable to the user. An instruction may also
(indirectly) cause something to appear on a display of the
computer systema state change which should be visible to the user. The processor carries out the instructions
in the order they are provided, unless it is instructed to
jump to a dierent instruction, or interrupted.

User

Application Software

The majority of software is written in high-level programming languages that are easier and more ecient for programmers, meaning closer to a natural language.[1] Highlevel languages are translated into machine language using 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 alphabet, which is translated into machine language using an
assembler.

Operating System

Hardware
A diagram showing how the user interacts with application software on a typical desktop computer. The application software
layer interfaces with the operating system, which in turn communicates with the hardware. The arrows indicate information

58.1 History
Main article: History of software

of a computer system that consists of encoded informa- An outline (algorithm) for what would have been the rst
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. HowThe term software was rst 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 rst theory about softwareprior to creation of comsoftware is all information processed by computer sys- puters as we know them todaywas proposed by Alan
tems, programs and data.
Turing in his 1935 essay Computable numbers with an apComputer 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


elds of computer science and software engineering,
which both study software and its creation. Computer
science is more theoretical (Turings essay is an example of computer science), whereas software engineering
focuses on more practical concerns.
However, prior to 1946, software as we now understand
itprograms stored in the memory of stored-program
digital computersdid not yet exist. The very rst electronic computing devices were instead rewired in order
to reprogram them.

327
Utilities, which are computer programs designed to assist users in the maintenance and
care of their computers.
Malicious software or malware, which is software
that is developed to harm and disrupt computers.
As such, malware is undesirable. Malware is closely
associated with computer-related crimes, though
some malicious programs may have been designed
as practical jokes.

58.2.2 Nature or domain of execution

58.2 Types of software


See also: List of software categories
On virtually all computer platforms, software can be
grouped into a few broad categories.

58.2.1

Purpose, or domain of use

Based on the goal, computer software can be divided into:


Application software, which is software that uses
the computer system to perform special functions
or provide entertainment functions beyond the basic
operation of the computer itself. There are many
dierent types of application software, because the
range of tasks that can be performed with a modern
computer is so largesee list of software.
System software, which is software that directly
operates the computer hardware, to provide basic
functionality needed by users and other software,
and to provide a platform for running application
software.[2] System software includes:
Operating systems, which are essential collections of software that manage resources and
provides common services for other software
that runs on top of them. Supervisory programs, boot loaders, shells and window systems are core parts of operating systems. In
practice, an operating system comes bundled
with additional software (including application software) so that a user can potentially do
some work with a computer that only has an
operating system.
Device drivers, which operate or control a particular type of device that is attached to a computer. Each device needs at least one corresponding device driver; because a computer
typically has at minimum at least one input device and at least one output device, a computer
typically needs more than one device driver.

Desktop applications such as web browsers and


Microsoft Oce, as well as smartphone and tablet
applications (called "apps"). (There is a push in
some parts of the software industry to merge desktop applications with mobile apps, to some extent.
Windows 8, and later Ubuntu Touch, tried to allow the same style of application user interface to
be used on desktops, laptops and mobiles.)
JavaScript scripts are pieces of software traditionally 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. Software written in other programming languages can
also be run within the web browser if the software is
either translated into JavaScript, or if a web browser
plugin that supports that language is installed; the
most common example of the latter is ActionScript
scripts, which are supported by the Adobe Flash plugin.
Server software, including:
Web applications, which usually run on the
web server and output dynamically generated
web pages to web browsers, using e.g. PHP,
Java, ASP.NET, or even JavaScript that runs
on the server. In modern times these commonly include some JavaScript to be run in the
web browser as well, in which case they typically run partly on the server, partly in the web
browser.
Plugins and extensions are software that extends or
modies the functionality of another piece of software, and require that software be used in order to
function;
Embedded software resides as rmware within
embedded systems, devices dedicated to a single
use or a few uses such as cars and televisions (although some embedded devices such as wireless
chipsets can themselves be part of an ordinary,
non-embedded computer system such as a PC or
smartphone).[3] In the embedded system context
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 Platform software: The Platform includes the
ating systems, and these systems do retain the disrmware, device drivers, an operating system, and
tinction between system software and application
typically a graphical user interface which, in total,
software (although typically there will only be one,
allow a user to interact with the computer and its
xed, application which is always run).
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 ita PC one will usually have the ability to change the
self how to execute machine code, so it is actuplatform software.
ally a lower level than machine code. It is typi Application software: Application software or Apcally proprietary to the processor manufacturer, and
plications are what most people think of when they
any necessary correctional microcode software upthink of software. Typical examples include oce
dates are supplied by them to users (which is much
suites and video games. Application software is ofcheaper than shipping replacement processor hardten purchased separately from computer hardware.
ware). Thus an ordinary programmer would not exSometimes applications are bundled with the compect to ever have to deal with it.
puter, but that does not change the fact that they run
as independent applications. Applications are usually independent programs from the operating sys58.2.3 Programming tools
tem, though they are often tailored for specic platforms. Most users think of compilers, databases,
Main article: Programming tool
and other system software as applications.
Programming tools are also software in the form of
programs or applications that software developers (also
known as programmers, coders, hackers or software engineers) use to create, debug, maintain (i.e. improve or
x), or otherwise support software. Software is written
in one or more programming languages; there are many
programming languages in existence, and each has at least
one implementation, each of which consists of its own
set of programming tools. These tools may be relatively
self-contained programs such as compilers, debuggers,
interpreters, linkers, and text editors, that can be combined together to accomplish a task; or they may form
an integrated development environment (IDE), which
combines much or all of the functionality of such selfcontained tools. IDEs may do this by either invoking
the relevant individual tools or by re-implementing their
functionality in a new way. An IDE can make it easier to
do specic tasks, such as searching in les in a particular
project. Many programming language implementations
provide the option of using both individual tools or an
IDE.

58.3 Software topics


58.3.1

Architecture

See also: Software architecture


Users often see things dierently from programmers.
People who use modern general purpose computers (as
opposed to embedded systems, analog computers and
supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user

User-written software: End-user development tailors systems to meet users specic needs. User software include spreadsheet templates and word processor templates. Even email lters are a kind of
user software. Users create this software themselves
and often overlook how important it is. Depending on how competently the user-written software
has been integrated into default application packages, many users may not be aware of the distinction
between the original packages, and what has been
added by co-workers.

58.3.2 Execution
Main article: Execution (computing)
Computer software has to be loaded into the computers
storage (such as the hard drive or memory). Once the
software has loaded, the computer is able to execute the
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
to carry out an operationmoving data, carrying out a
computation, or altering the control ow of instructions.
Data movement is typically from one place in memory
to another. Sometimes it involves moving data between
memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts
of it, can be costly. So, this is sometimes avoided by using
pointers to data instead. Computations include simple
operations such as incrementing the value of a variable
data element. More complex computations may involve
many operations and data elements together.

58.4. DESIGN AND IMPLEMENTATION

58.3.3

Quality and reliability

329
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 Oce,
Microsoft Windows and Linux. If software is faulty
(buggy), it can delete a persons work, crash the computer and do other unexpected things. Faults and errors
are called "bugs" which are often discovered during alpha
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.
Many bugs are discovered and eliminated (debugged)
through software testing. However, software testing
rarelyif evereliminates every bug; some programmers say that every program has at least one more bug
(Lubarskys Law).[4] In the waterfall method of software
development, separate testing teams are typically employed, but in newer approaches, collectively termed agile
software development, developers often do all their own
testing, and demonstrate the software to users/clients regularly to obtain feedback. Software can be tested through
unit testing, regression testing and other methods, which
are done manually, or most commonly, automatically,
since the amount of code to be tested can be quite large.
For instance, NASA has extremely rigorous software testing procedures for many operating systems and communication functions. Many NASA-based operations interact and identify each other through command programs.
This enables many people who work at NASA to check
and evaluate functional systems overall. Programs containing command software enable hardware engineering
and system operations to function much easier together.

58.3.5 Patents
Main articles: Software patent and Software patent
debate
Software patents, like other types of patents, are theoretically supposed to give an inventor an exclusive, timelimited license for a detailed idea (e.g. an algorithm) on
how to implement a piece of software, or a component
of a piece of software. Ideas for useful things that software could do, and user requirements, are not supposed
to be patentable, and concrete implementations (i.e. the
actual software packages implementing the patent) are
not supposed to be patentable eitherthe latter are already covered by copyright, generally automatically. So
software patents are supposed to cover the middle area,
between requirements and concrete implementation. In
some countries, a requirement for the claimed invention
to have an eect on the physical world may also be part of
the requirements for a software patent to be held valid
although since all useful software has eects on the physical world, this requirement may be open to debate.

Software patents are controversial in the software industry with many people holding dierent views about them.
One of the sources of controversy is that the aforementioned split between initial ideas and patent does not seem
to be honored in practice by patent lawyersfor example the patent for Aspect-Oriented Programming (AOP),
which purported to claim rights over any programming
tool implementing the idea of AOP, howsoever imple58.3.4 License
mented. Another source of controversy is the eect on
innovation, with many distinguished experts and compaMain article: Software license
nies arguing that software is such a fast-moving eld that
software patents merely create vast additional litigation
The softwares 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 arfree 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 beneciaProprietary 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 profreeware 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
Design and implementation of software varies dependfunctionality.
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-prot software organizations include the Free Softbecause 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 decoded/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 dierent 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
Software asset management
relies upon the API. For instance, if a user is designing a
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 SoftwareTechnologies and Trends. IEEE
that many applications are written using their software
Computer Society. Retrieved MayJune 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
trees, and algorithms such as quicksort, can be useful for
creating software.

[4] scripting intelligence book examples.

Computer software has special economic characteristics


that make its design, creation, and distribution dierent
from most other economic goods.[6][7]

[6] v. Engelhardt, Sebastian (2008). The Economic Properties of Software. Jena Economic Research Papers. 2
(2008045.).

A person who creates software is called a programmer,


software engineer or software developer, terms that all
have a similar meaning. More informal terms for programmer also exist such as coder and "hacker" although use of the latter word may cause confusion, because it is more often used to mean someone who illegally
breaks into computer systems.

[7] Kaminsky, Dan (1999). Why Open Source Is The Optimum Economic Paradigm for Software.

58.5 Industry and organizations


Main article: Software industry
A great variety of software companies and programmers in the world comprise a software industry. Software can be quite a protable industry: Bill Gates, the
founder of Microsoft was the richest person in the world
in 2009, largely due to his ownership of a signicant number of shares in Microsoft, the company responsible for
Microsoft Windows and Microsoft Oce software products.

[5] MSDN Library. Retrieved 2010-06-14.

58.8 External links


Software at DMOZ

Chapter 59

State (computer science)


In computer science and automata theory, the state of a
digital logic circuit or computer program is a technical
term for all the stored information, at a given instant in
time, to which the circuit or program has access.[1] The
output of a digital circuit or computer program at any
time is completely determined by its current inputs and
its state.

59.1 Digital logic circuit state

memory. The contents of these memory locations, at any


given point in the programs execution, is called the programs state.[4][5][6]
Imperative programming is a programming paradigm
(way of designing a programming language) that describes computation in terms of the program state and
statements that change the program state. In contrast,
in declarative programming languages the program describes the desired results, and doesn't specify changes to
the state directly.

A more specialized denition of state is used in some


computer programs that operate serially (sequentially) on
streams of data, such as parsers, rewalls, communication
protocols and encryption programs. Serial programs operate on the incoming data characters or packets sequentially, one at a time. In some of these programs, information about previous data characters or packets received is
stored in variables and used to aect the processing of
the current character or packet. This is called a "stateful
protocol" and the data carried over from the previous processing cycle is called the state. In others, the program 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 ags.
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 computers disk, so
it can be restored when the computer comes out of hibernation, and the processor can take up operations where it
left o.
59.3 Finite state machines
Digital logic circuits can be divided into two types:
combinational logic, whose output signals are dependent
only on its present input signals, and sequential logic,
whose outputs are a function of both the current inputs
and the past history of inputs.[2] In sequential logic, information from past inputs is stored in electronic memory elements, such as ip-ops and latches. The stored
contents of these memory elements, at a given point in
time, is collectively referred to as the circuits "state" and
contains all the information about the past to which the
circuit has access.[3]

Since each binary memory element, such as a ip-op,


has only two possible states, one or zero, and there
is a nite number of memory elements, a digital circuit
has only a certain nite number of possible states. If N
is the number of binary memory elements in the circuit,
the maximum number of states a circuit can have is 2N .

The output of a sequential circuit or computer program


at any time is completely determined by its current inputs
and current state. Since each binary memory element has
only two possible states, 0 or 1, the total number of different states a circuit can assume is nite, and xed by the
number of memory elements. If there are N binary memory 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 nite state
Similarly, a computer program stores data in variables, machine, used to design both sequential digital circuits
which represent storage locations in the computers and computer programs.
331

332

59.4 Types of states


Following states are distinguished:
Compatible states are states in a state machine that
do not conict for any input values. Thus for every
input, both states must have the same output, and
both states must have the same successor (or unspecied successors), or both must not change. Compatible 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 dierent 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 Kaufmann. p. 103. ISBN 0123704979.
[2] Kaeslin, Hubert (2008). Digital Integrated Circuit Design:
From VLSI Architectures to CMOS Fabrication. UK: Cambridge University Press. p. 735. ISBN 0521882672.
[3] Srinath, N. K. (August 2005). 8085 Microprocessor: Programming and Interfacing. Prentice-Hall of India Pvt.
Ltd. p. 326. ISBN 978-8120327856. Retrieved 7 December 2012. page 46
[4] Laplante, Philip A. (2000). Dictionary of Computer Science, Engineering and Technology. USA: CRC Press. p.
466. ISBN 0849326915.
[5] Misra, Jayadev (2001). A Discipline of Multiprogramming: Programming Theory for Distributed Applications.
Springer. p. 14. ISBN 0387952063.
[6] Prata, Stephen Prata (2004). C Primer Plus, 5th Ed. Pearson Education. pp. 113114. ISBN 0132713608.

CHAPTER 59. STATE (COMPUTER SCIENCE)

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 framework known as grammaire gnrale, rst expounded in
In linguistics, syntax (/sntks/[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, specically word order. language is a direct reection 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 realIn 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 PortThe word syntax comes from Ancient Greek:
Royal Logic were copied or adapted from the Grammaire
coordination, which consists of syn, together, and
gnrale.[5] ) Syntactic categories were identied with log txis, 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 reasonably be called the century of syntactic theory as far
A basic feature of a languages 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 Gra (2001).)[6]
place the subject rst, 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

60.3 Early history


Works on grammar were written long before modern syntax came about; the Adhyy of Pini (c. 4th century
BC) is often cited as an example of a premodern work
that approaches the sophistication of a modern syntactic
theory.[4] In the West, the school of thought that came to

There are a number of theoretical approaches to the


discipline of syntax. One school of thought, founded
in the works of Derek Bickerton,[7] sees syntax as a
branch of biology, since it conceives of syntax as the
study of linguistic knowledge as embodied in the human
mind. Other linguists (e.g., Gerald Gazdar) take a more
Platonistic view, since they regard syntax to be the study
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 synbroad generalizations across languages.
tactic structure not to rules of grammar, but to the properties 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 cateMain article: Generative grammar
gorial grammar, such principles are embedded in the category 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 dened 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 (equivon the form of a sentence, rather than its communicative alent to the VP) which is (NP\S), which in turn represents
a function that searches to the left for an NP and produces
function.
a sentence.
Among the many generative theories of linguistics, the
Tree-adjoining grammar is a categorial grammar that
Chomskyan theories are:
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
Structures in 1957)[9]

Dependency grammar

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 strucChomsky in the 1970s and 1980s)[10]
Minimalist program (MP) (a reworking of the theory out of the GB framework published by Chomsky
in 1995)[11]
Other theories that nd their origin in the generative
paradigm are:
Arc pair grammar

A syntactic parse of Alfred spoke under the dependency formalism

Generalized phrase structure grammar (GPSG; now


ture where syntactic units are arranged according to the
largely out of date)
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 (nite) verb is seen as
Head-driven phrase structure grammar (HPSG)
the root of all clause structure and all the other words in
the clause are either directly or indirectly dependent on
Lexical functional grammar (LFG)
this root. Some prominent dependency-based theories of
Nanosyntax
syntax are:
Relational grammar (RG) (now largely out of date)

60.4.2

Categorial grammar

Main article: Categorial grammar

Recursive categorical syntax, or Algebraic syntax


Functional generative description
Meaningtext theory
Operator grammar

60.5. SEE ALSO

335

Word grammar

Antecedent

Lucien Tesnire (18931954) is widely seen as the father of modern dependency-based theories of syntax and
grammar. He argued vehemently against the binary division of the clause into subject and predicate that is associated with the grammars of his day (S NP VP) and
which remains at the core of most phrase structure grammars. In the place of this division, he positioned the verb
as the root of all clause structure.[12]

60.4.4

Stochastic/probabilistic
mars/network theories

gram-

Theoretical approaches to syntax that are based upon


probability theory are known as stochastic grammars.
One common implementation of such an approach makes
use of a neural network or connectionism.

Antecedent-contained deletion
Appositive
Argument
Article
Aspect
Attributive adjective and predicative adjective
Auxiliary verb
Binding
Branching
c-command
Case
Category

60.4.5

Functionalist grammars

Main article: Functional theories of grammar


Functionalist theories, although focused upon form, are
driven by explanation based upon the function of a sentence (i.e. its communicative function). Some typical
functionalist theories include:
Cognitive grammar
Construction grammar (CxG)
Emergent grammar
Functional discourse grammar (Dik)
Prague linguistic circle
Role and reference grammar (RRG)
Systemic functional grammar

60.5 See also


60.5.1

Syntactic terms

Catena
Clause
Closed class word
Comparative
Complement
Compound noun and adjective
Conjugation
Conjunction
Constituent
Coordination
Coreference
Crossover
Dangling modier
Declension
Dependency grammar
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

Innitive

Preposition and postposition

Inverse copular construction

Pronoun

Inversion

Pseudogapping

Lexical item

Raising

m-command

Relation (Grammatical relation)

Measure word (classier)

Restrictiveness

Merge

Right node raising

Modal particle

Sandhi

Modal verb

Scrambling

Modier

Selection

Mood

Sentence

Movement

Separable verb

Movement paradox

Shifting

Nanosyntax

Singular

Negative inversion

Sluicing

Non-congurational language

Small clause

Non-nite 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

60.7 References

Uninected word
V2 word order

Brown, Keith; Miller, Jim, eds. (1996). Concise Encyclopedia of Syntactic Theories. New York: Elsevier Science. ISBN 0-08-042711-1.

Valency
Verb

Carnie, Andrew (2006). Syntax: A Generative Introduction (2nd ed.). Oxford: Wiley-Blackwell. ISBN
1-4051-3384-8.

Verb phrase
Verb phrase ellipsis

Freidin, Robert; Lasnik, Howard, eds. (2006). Syntax. Critical Concepts in Linguistics. New York:
Routledge. ISBN 0-415-24672-5.

Voice
Wh-movement
Word order

Gra, Giorgio (2001). 200 Years of Syntax. A Critical Survey. Studies in the History of the Language
Sciences 98. Amsterdam: Benjamins. ISBN 90272-4587-8.

X-bar theory

60.6 Notes

[2] syntax. Merriam-Webster Dictionary.

Talasiewicz, Mieszko (2009).


Philosophy of
SyntaxFoundational Topics. Springer. ISBN 97890-481-3287-4. An interdisciplinary essay on the
interplay between logic and linguistics on syntactic
theories.

[3] Chomsky, Noam (2002) [1957]. Syntactic Structures. p.


11.

Tesnire, Lucien 1969. lemnts de syntaxe structurale. 2nd edition. Paris: Klincksieck.

[1] syntax. Oxford Dictionaries. Oxford University Press.


Retrieved 2016-01-22.

[4] Fortson IV, Benjamin W. (2004). Indo-European Language and Culture: An Introduction. Blackwell. p. 186.
ISBN 978-1405188968. [The Adhyy ] is a highly precise and thorough description of the structure of Sanskrit
somewhat resembling modern generative grammar...[it]
remained the most advanced linguistic analysis of any
kind until the twentieth century.
[5] Arnauld, Antoine (1683). La logique (5th ed.). Paris:
G. Desprez. p. 137. Nous avons emprunt...ce que
nous avons dit...d'un petit Livre...sous le titre de Grammaire
gnrale.
[6] Giorgio, Gra (2001). 200 Years of Syntax: A Critical
Survey (googlebook preview). John Benjamins Publishing.
[7] See Bickerton, Derek (1990). Language and Species.
University of Chicago Press. ISBN 0-226-04610-9. and,
for more recent advances, Derek Bickerton; Ers Szathmry, eds. (2009). Biological foundations and origin of
syntax. MIT Press. ISBN 978-0-262-01356-7.
[8] Ted Briscoe, 2 May 2001, Interview with Gerald Gazdar.
Retrieved 2008-06-04.
[9] Chomsky, Noam. 1957. Syntactic Structures.
Hague/Paris: Mouton, p. 15.

The

60.8 Further reading


Martin Everaert; Henk Van Riemsdijk; Rob Goedemans; Bart Hollebrandse, eds. (2006). The Blackwell companion to syntax. Blackwell. ISBN 978-14051-1485-1. 5 Volumes; 77 case studies of syntactic phenomena.
Isac, Daniela; Charles Reiss (2013). I-language:
An Introduction to Linguistics as Cognitive Science,
2nd edition. Oxford University Press. ISBN 9780199660179.
Moravcsik, Edith A. (2006). An introduction to syntax: fundamentals of syntactic analysis. Continuum International Publishing Group. ISBN 9780-8264-8945-6. Attempts to be a theory-neutral
introduction. The companion Edith A. Moravcsik
(2006). An introduction to syntactic theory. Continuum International Publishing Group. ISBN 978-08264-8943-2. surveys the major theories. Jointly
reviewed in The Canadian Journal of Linguistics
54(1), March 2009, pp. 172175

[11] Chomsky, Noam (1995). The Minimalist Program. MIT


Press.

Mller, Stefan (2016). Grammatical theory: From


transformational grammar to constraint-based approaches. Berlin: Language Science Press. ISBN
978-3-944675-21-3.

[12] Concerning Tesnires rejection of the binary division of


the clause into subject and predicate and in favor of the
verb as the root of all structure, see Tesnire (1969:103
105).

Brian Roark; Richard William Sproat (2007). Computational approaches to morphology and syntax.
Oxford University Press. ISBN 978-0-19-9274772. part II: Computational approaches to syntax.

[10] Chomsky, Noam (1981/1993). Lectures on Government


and Binding: The Pisa Lectures. Mouton de Gruyter.

338

60.9 External links


The syntax of natural language: An online introduction using the Trees programBeatrice Santorini &
Anthony Kroch, University of Pennsylvania, 2007

CHAPTER 60. SYNTAX

Chapter 61

Technical standard
This article is about technical standards. For other uses,
see Standard.

For example, there are detailed standard operating


procedures for operation of a nuclear power plant.[3]
A standard guide is general information or options
that do not require a specic course of action.

A technical standard is an established norm or


requirement in regard to technical systems. It is usually a
formal document that establishes uniform engineering or
technical criteria, methods, processes and practices. In
contrast, a custom, convention, company product, corporate standard, etc. that becomes generally accepted and
dominant is often called a de facto standard.

A standard denition is formally established terminology.


Standard units, in physics and applied mathematics,
are commonly accepted measurements of physical
quantities.

A technical standard may be developed privately or unilaterally, for example by a corporation, regulatory body,
military, etc. Standards can also be developed by groups
61.2 Availability
such as trade unions, and trade associations. Standards
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.
(Some technical standards may be found at a major
The standardization process may be by edict or may in[1]
central library or at the library of a good technical
volve the formal consensus of technical experts.
university)
Published documents available for purchase

61.1 Types

Private documents owned by an organization or corporation, used and circulated as the owner determines necessary or useful

The primary types of technical standards are:


A standard specication is an explicit set of requirements for an item, material, component, system or
service. It is often used to formalize the technical aspects of a procurement agreement or contract.[2] For
example, there may be a specication for a turbine
blade for a jet engine that denes the exact material
and performance requirements.
A standard test method describes a denitive procedure that produces a test result. It may involve
making a careful personal observation or conducting a highly technical measurement. For example, a
physical property of a material is often aected by
the precise method of testing: any reference to the
property should therefore reference the test method
used.

Documents publicly available under intellectual


property (copyright, etc.)[4]
Closed or controlled documents that contain trade
secrets or classied information

61.3 Geographic levels


When a geographically dened community must solve a
community-wide coordination problem, it can adopt an
existing standard or produce a new one. The main geographic levels are:

A standard practice or procedure gives a set of instructions for performing operations or functions.
339

National standard: by National standards organizations. For example, Telecommunications Industry


Association standards.

340
Regional standard: see standards of the Regional
standards organizations. For example, CEN standards.
International standard: see International standards
organizations Example, ISO and ASTM International.

CHAPTER 61. TECHNICAL STANDARD

[2] Standard Specications. Oregon.gov. Oregon.gov. Retrieved 20 August 2015.


[3] Operational Limits and Conditions and Operating Procedures for Nuclear Power Plants Safety Guide. International Atomic Energy Association. IAEA. Retrieved 20
August 2015.
[4] Example: SAE International copyright policy

National/Regional/International standards is one way of


overcoming technical barriers in inter-local or interregional commerce caused by dierences among technical regulations and standards developed independently
and separately by each local, local standards organisation, or local company. Technical barriers arise
when dierent groups come together, each with a large
user base, doing some well established thing that between them is mutually incompatible. Establishing national/regional/international standards is one way of preventing 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 t 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 originator or standard writing body often has the current versions
listed on its web site.
In social sciences, including economics, a standard is useful 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. Examples:

61.5 See also


List of computer standards
Software standard
Specication (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] Telecommunication occurs when the exchange of information between communication participants includes the use of
technology. It is transmitted either electrically over physical media, such as cables, or via electromagnetic radiation.[3][4][5][6][7][8] Such transmission paths are often divided into communication channels which aord the advantages of multiplexing. The term is often used in its
plural form, telecommunications, because it involves
many dierent technologies.

Earth station at the satellite communication facility in Raisting,


Bavaria, Germany

Early means of communicating over a distance included


visual signals, such as beacons, smoke signals, semaphore
telegraphs, signal ags, and optical heliographs.[9] Other
examples of pre-modern long-distance communication
included audio messages such as coded drumbeats, lungblown horns, and loud whistles. 20th and 21st century technologies for long-distance communication usually involve electrical and electromagnetic technologies, such as telegraph, telephone, and teleprinter,
networks, radio, microwave transmission, ber optics,
and communications satellites.
A revolution in wireless communication began in the rst
decade of the 20th century with the pioneering developments in radio communications by Guglielmo Marconi,
who won the Nobel Prize in Physics in 1909. Other
notable pioneering inventors and developers in the eld
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 (inventors of radio), as well as Vladimir K. Zworykin, John Logie 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 prex teleVisualization from the Opte Project of the various routes through (-), meaning distant, and the Latin communicare,
meaning to share, and its written use was recorded in
a portion of the Internet
1904 by the French engineer and novelist douard Essignals, messages, writings, images and sounds or tauni.[10][11] The prex tel means far, far o, op341

342

CHAPTER 62. TELECOMMUNICATION

erating over distance... from Greek tele-, combining


form of tele far o, afar, at or to a distance, related
to teleos (genitive telos) end, goal, completion, result,
from PIE root *kwel-"; tel also means " far in space
and time.[12] Communication was rst used as an English word in the late 14th century. It comes from Old
French comunicacion (14c., Modern French communication), from Latin communicationem (nominative communicatio), noun of action from past participle stem of
communicare to share, divide out; communicate, impart, inform; join, unite, participate in, literally to make
common, from communis.[13]

In 1792, Claude Chappe, a French engineer, built the rst


xed visual telegraphy system (or semaphore line) between Lille and Paris.[15] However semaphore suered
from the need for skilled operators and expensive towers at intervals of ten to thirty kilometres (six to nineteen miles). As a result of competition from the electrical telegraph, the last commercial line was abandoned in
1880.[16]

Homing pigeons have occasionally been used throughout history by dierent cultures. Pigeon post is thought
to have Persians roots and was used by the Romans
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 governFor more details on this topic, see History of telecom- ment used the system in Java and Sumatra. And in 1849,
Paul Julius Reuter started a pigeon service to y stock
munication.
prices between Aachen and Brussels, a service that operated 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 rst
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 advance over Wheatstones signaling method. The rst
transatlantic telegraph cable was successfully completed
on 27 July 1866, allowing transatlantic telecommunication for the rst time.[22]

A replica of one of Chappes semaphore towers

In the Middle Ages, chains of beacons were commonly


used on hilltops as a means of relaying a signal. Beacon
chains suered the drawback that they could only pass a
single bit of information, so the meaning of the message
such as the enemy has been sighted had to be agreed
upon in advance. One notable instance of their use was
during the Spanish Armada, when a beacon chain relayed
a signal from Plymouth to London.[14]

The conventional telephone was invented independently


by Alexander Bell and Elisha Gray in 1876.[23] Antonio
Meucci invented the rst device that allowed the electrical transmission of voice over a line in 1849. However
Meuccis device was of little practical value because it relied upon the electrophonic eect and thus required users
to place the receiver in their mouth to hear what was being said.[24] The rst commercial telephone services were
set-up in 1878 and 1879 on both sides of the Atlantic in
the cities of New Haven and London.[25][26]

62.2.3 Radio and television


In 1832, James Lindsay gave a classroom demonstration
of wireless telegraphy to his students. By 1854, he was
able to demonstrate a transmission across the Firth of Tay
from Dundee, Scotland to Woodhaven, a distance of two

62.3. KEY CONCEPTS


miles (3 km), using water as the transmission medium.[27]
In December 1901, Guglielmo Marconi established wireless communication between St. Johns, Newfoundland
(Canada) and Poldhu, Cornwall (England), earning him
the 1909 Nobel Prize in physics (which he shared with
Karl Braun).[28] However small-scale radio communication had already been demonstrated in 1893 by Nikola
Tesla in a presentation to the National Electric Light
Association.[29]
On 25 March 1925, John Logie Baird was able to demonstrate the transmission of moving pictures at the London department store Selfridges. Bairds device relied
upon the Nipkow disk and thus became known as the
mechanical television. It formed the basis of experimental broadcasts done by the British Broadcasting Corporation beginning 30 September 1929.[30] However, for most
of the twentieth century televisions depended upon the
cathode ray tube invented by Karl Braun. The rst version of such a television to show promise was produced
by Philo Farnsworth and demonstrated to his family on 7
September 1927.[31]

62.2.4

Computers and the Internet

On 11 September 1940, George Stibitz was able to transmit problems using teletype to his Complex Number Calculator in New York and receive the computed results
back at Dartmouth College in New Hampshire.[32] This
conguration of a centralized computer or mainframe
with remote dumb terminals remained popular throughout the 1950s. However, it was not until the 1960s
that researchers started to investigate packet switching a technology that would allow chunks of data
to be sent to dierent computers without rst passing
through a centralized mainframe. A four-node network
emerged on 5 December 1969; this network would become ARPANET, which by 1981 would consist of 213
nodes.[33]
ARPANET development centered around the Request
for Comment process and on 7 April 1969, RFC 1 was
published. This process is important because ARPANET
eventually merged with other networks to form the
Internet and many of the protocols the Internet relies
upon today were specied through the Request for Comment process. In September 1981, RFC 791 introduced
the Internet Protocol v4 (IPv4) and RFC 793 introduced
the Transmission Control Protocol (TCP) thus creating the TCP/IP protocol that much of the Internet relies
upon today.
However, not all important developments were made
through the Request for Comment process. Two popular link protocols for local area networks (LANs) also
appeared in the 1970s. A patent for the token ring protocol was led by Olof Soderblom on 29 October 1974
and a paper on the Ethernet protocol was published by
Robert Metcalfe and David Boggs in the July 1976 issue

343
of Communications of the ACM.[34][35]

62.3 Key concepts


A number of key concepts reoccur throughout the literature on modern telecommunication theory and systems.
Some of these concepts are discussed below.

62.3.1 Basic elements


Telecommunications is primarily divided up between
wired and wireless subtypes. Overall though, a basic
telecommunication system consists of three main parts
that are always present in some form or another:
A transmitter that takes information and converts it
to a signal.
A transmission medium, also called the physical
channel that carries the signal. An example of this
is the free space channel.
A receiver that takes the signal from the channel and
converts it back into usable information for the recipient.
For example, in a radio broadcasting station the stations
large power amplier is the transmitter; and the broadcasting antenna is the interface between the power amplier and the free space channel. The free space channel
is the transmission medium; and the receivers antenna is
the interface between the free space channel and the receiver. Next, the radio receiver is the destination of the
radio signal, and this is where it is converted from electricity to sound for people to listen to.
Sometimes, telecommunication systems are duplex
(two-way systems) with a single box of electronics working as both the transmitter and a receiver, or a transceiver.
For example, a cellular telephone is a transceiver.[36]
The transmission electronics and the receiver electronics
within a transceiver are actually quite independent of each
other. This can be readily explained by the fact that radio
transmitters contain power ampliers that operate with
electrical powers measured in watts or kilowatts, but radio receivers deal with radio powers that are measured in
the microwatts or nanowatts. Hence, transceivers have to
be carefully designed and built to isolate their high-power
circuitry and their low-power circuitry from each other, as
to not cause interference.
Telecommunication over xed lines is called point-topoint communication because it is between one transmitter and one receiver. Telecommunication through radio
broadcasts is called broadcast communication because it
is between one powerful transmitter and numerous lowpower but sensitive radio receivers.[36]

344

CHAPTER 62. TELECOMMUNICATION

Telecommunications in which multiple transmitters and


multiple receivers have been designed to cooperate and to
share the same physical channel are called multiplex systems. The sharing of physical channels using multiplexing often gives very large reductions in costs. Multiplexed
systems are laid out in telecommunication networks, and
the multiplexed signals are switched at nodes through to
the correct destination terminal receiver.

62.3.2

Analog versus digital communications

Communications signals can be sent either by analog signals or digital signals. There are analog communication
systems and digital communication systems. For an analog signal, the signal is varied continuously with respect
to the information. In a digital signal, the information is
encoded as a set of discrete values (for example, a set
of ones and zeros). During the propagation and reception, the information contained in analog signals will inevitably be degraded by undesirable physical noise. (The
output of a transmitter is noise-free for all practical purposes.) Commonly, the noise in a communication system
can be expressed as adding or subtracting from the desirable signal in a completely random way. This form of
noise is called additive noise, with the understanding that
the noise can be negative or positive at dierent instants
of time. Noise that is not additive noise is a much more
dicult situation to describe or analyze, and these other
kinds of noise will be omitted here.
On the other hand, unless the additive noise disturbance
exceeds a certain threshold, the information contained in
digital signals will remain intact. Their resistance to noise
represents a key advantage of digital signals over analog
signals.[37]

62.3.3

Telecommunication networks

A telecommunications network is a collection of transmitters, receivers, and communications channels that


send messages to one another. Some digital communications networks contain one or more routers that work
together to transmit information to the correct user. An
analog communications network consists of one or more
switches that establish a connection between two or more
users. For both types of network, repeaters may be necessary to amplify or recreate the signal when it is being transmitted over long distances. This is to combat
attenuation that can render the signal indistinguishable
from the noise.[38] Another advantage of digital systems
over analog is that their output is easier to store in memory, i.e. two voltage states (high and low) are easier to
store than a continuous range of states.

62.3.4 Communication channels

The term channel has two dierent meanings. In one


meaning, a channel is the physical medium that carries
a signal between the transmitter and the receiver. Examples of this include the atmosphere for sound communications, glass optical bers for some kinds of optical
communications, coaxial cables for communications by
way of the voltages and electric currents in them, and free
space for communications using visible light, infrared
waves, ultraviolet light, and radio waves. This last channel
is called the free space channel. The sending of radio
waves from one place to another has nothing to do with
the presence or absence of an atmosphere between the
two. Radio waves travel through a perfect vacuum just as
easily as they travel through air, fog, clouds, or any other
kind of gas.
The other meaning of the term channel in telecommunications is seen in the phrase communications channel, which is a subdivision of a transmission medium so
that it can be used to send multiple streams of information simultaneously. For example, one radio station can
broadcast radio waves into free space at frequencies in the
neighborhood of 94.5 MHz (megahertz) while another radio station can simultaneously broadcast radio waves at
frequencies in the neighborhood of 96.1 MHz. Each radio station would transmit radio waves over a frequency
bandwidth of about 180 kHz (kilohertz), centered at frequencies such as the above, which are called the carrier
frequencies. Each station in this example is separated
from its adjacent stations by 200 kHz, and the dierence
between 200 kHz and 180 kHz (20 kHz) is an engineering allowance for the imperfections in the communication
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
frequency bandwidth in which to broadcast radio waves.
This system of dividing the medium into channels according to frequency is called "frequency-division multiplexing". Another term for the same concept is "wavelengthdivision multiplexing", which is more commonly used in
optical communications when multiple transmitters share
the same physical medium.
Another way of dividing a communications medium into
channels is to allocate each sender a recurring segment of
time (a time slot, for example, 20 milliseconds out of
each second), and to allow each sender to send messages
only within its own time slot. This method of dividing
the medium into communication channels is called "timedivision multiplexing" (TDM), and is used in optical ber
communication. Some radio communication systems use
TDM within an allocated FDM channel. Hence, these
systems use a hybrid of TDM and FDM.

62.4. SOCIETY

62.3.5

345

Modulation

Bangladesh's Narshingdi district, isolated villagers use


cellular phones to speak directly to wholesalers and arThe shaping of a signal to convey information is known range a better price for their goods. In Cte d'Ivoire, cofas modulation. Modulation can be used to represent a fee growers share mobile phones to follow hourly variadigital message as an analog waveform. This is com- tions in coee 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 Rller 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]
Few dispute the existence of a correlation
and amplitude-shift keying which is called (in the jargon growth.
although
some
argue it is wrong to view the relationship
of the eld) "quadrature amplitude modulation" (QAM)
[47]
as
causal.
that are used in high-capacity digital radio communication systems.
Because of the economic benets of good telecommuModulation 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 worldthis is known
cannot be eectively 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 subscripthe "carrier wave") before transmission. There are sev- tion for every 20 people and one-third of countries have
eral dierent 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 Interthis process is a disc jockeys 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 measure, Sweden, Denmark and Iceland received the highthat it may use frequency division multiplexing (FDM).
est ranking while the African countries Nigeria, Burkina
Faso and Mali received the lowest.[49]

62.4 Society
Telecommunication has a signicant social, cultural and
economic impact on modern society. In 2008, estimates
placed the telecommunication industry's revenue at $4.7
trillion or just under 3 percent of the gross world product (ocial exchange rate).[42] Several following sections
discuss the impact of telecommunication on society.

62.4.2 Social impact

Telecommunication has played a signicant role in social


relationships. Nevertheless, devices like the telephone
system were originally advertised with an emphasis on the
practical dimensions of the device (such as the ability to
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 promotions started appealing to consumers emotions, stressMicroeconomics
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 beneted from increased dramatically. These sites allow users to combetter telecommunication infrastructure compared to its municate with each other as well as post photographs,
competitors.[43] In cities throughout the world, home events and proles for others to see. The proles can list
owners use their telephones to order and arrange a va- a persons age, interests, sexual preference and relationriety 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


message service (SMS) and the telephone also had a signicant impact on social interactions. In 2000, market
research group Ipsos MORI reported that 81% of 15- to
24-year-old SMS users in the United Kingdom had used
the service to coordinate social arrangements and 42% to
irt.[52]

62.4.3

Other impacts

In cultural terms, telecommunication has increased the


publics ability to access music and lm. With television,
people can watch lms they have not seen before in their
own home without having to travel to the video store or
cinema. With radio and the Internet, people can listen to
music they have not heard before without having to travel
to the music store.
Telecommunication has also transformed the way people
receive their news. A survey led in 2006 by the non-prot
Pew Internet and American Life Project found that when
just over 3,000 people living in the United States were
asked where they got their news yesterday, more people
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
more than one source).[53]
Telecommunication has had an equally signicant impact on advertising. TNS Media Intelligence reported
that in 2007, 58% of advertising expenditure in the
United States was spent on mediums that depend upon
telecommunication.[54] The results are summarised in the
following table.

62.5 Government
Many countries have enacted legislation which conforms
to the International Telecommunication Regulations established by the International Telecommunication Union
(ITU), which is the leading UN agency for information
and communication technology issues.[55] In 1947, at
the Atlantic City Conference, the ITU decided to afford international protection to all frequencies registered
in a new international frequency list and used in conformity with the Radio Regulation. According to the ITUs
Radio Regulations adopted in Atlantic City, all frequencies referenced in the International Frequency Registration Board, examined by the board and registered on the
International Frequency List shall have the right to international protection from harmful interference.[56]
From a global perspective, there have been political
debates and legislation regarding the management of
telecommunication and broadcasting. The history of
broadcasting discusses some debates in relation to balancing conventional communication such as printing and
telecommunication such as radio broadcasting.[57] The

onset of World War II brought on the rst explosion of international broadcasting propaganda.[57] Countries, their
governments, insurgents, terrorists, and militiamen have
all used telecommunication and broadcasting techniques
to promote propaganda.[57][58] Patriotic propaganda for
political movements and colonization started the mid1930s. 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]
Modern insurgents, such as those in the latest Iraq war,
often use intimidating telephone calls, SMSs and the distribution of sophisticated videos of an attack on coalition troops within hours of the operation. The Sunni
insurgents even have their own television station, AlZawraa, which while banned by the Iraqi government,
still broadcasts from Erbil, Iraqi Kurdistan, even as coalition pressure has forced it to switch satellite hosts several
times.[58]
On 10 November 2014, President Obama recommended
the Federal Communications Commission reclassify
broadband Internet service as a telecommunications service in order to preserve net neutrality.[59][60]

62.6 Modern media


62.6.1 Worldwide equipment sales
According to data collected by Gartner[61][62] and Ars
Technica[63] sales of main consumers telecommunication
equipment worldwide in millions of units was:

62.6.2 Telephone
In a telephone network, the caller is connected to the person they want to talk to by switches at various telephone
exchanges. The switches form an electrical connection
between the two users and the setting of these switches
is determined electronically when the caller dials the
number. Once the connection is made, the callers
voice is transformed to an electrical signal using a small
microphone in the callers handset. This electrical signal
is then sent through the network to the user at the other
end where it is transformed back into sound by a small
speaker in that persons handset.
The landline telephones in most residential homes are
analogthat is, the speakers voice directly determines
the signals voltage. Although short-distance calls may be
handled from end-to-end as analog signals, increasingly
telephone service providers are transparently converting
the signals to digital signals for transmission. The advantage of this is that digitized voice data can travel sideby-side with data from the Internet and can be perfectly
reproduced in long distance communication (as opposed
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 bre.[69][70]
Assisting communication across many modern optic bre networks is a protocol known as Asynchronous Transfer Mode (ATM). The ATM protocol allows for the sideby-side data transmission mentioned in the second paragraph. It is suitable for public telephone networks because it establishes a pathway for data through the network and associates a trac contract with that pathway.
The trac 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 trac 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 callers voice is not delayed
in parts or cut o 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 ber provides cheaper bandwidth for long distance communication.

Mobile phones have had a signicant impact on telephone


networks. Mobile phone subscriptions now outnumber
xed-line subscriptions in many markets. Sales of mobile phones in 2005 totalled 816.6 million with that gure being almost equally shared amongst the markets of
Asia/Pacic (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]
In terms of new subscriptions over the ve years from
1999, Africa has outpaced other markets with 58.2%
growth.[65] Increasingly these phones are being serviced
by systems where the voice content is transmitted digitally
such as GSM or W-CDMA with many markets choosing
to depreciate analog systems such as AMPS.[66]
There have also been dramatic changes in telephone communication behind the scenes. Starting with the operation
of TAT-8 in 1988, the 1990s saw the widespread adoption
of systems based on optical bers. The benet of communicating with optic bers is that they oer a drastic
increase in data capacity. TAT-8 itself was able to carry
10 times as many telephone calls as the last copper cable
laid at that time and todays optic bre cables are able to
carry 25 times as many telephone calls as TAT-8.[67] This
increase in data capacity is due to several factors: First,
optic bres are physically much smaller than competing
technologies. Second, they do not suer from crosstalk
which means several hundred of them can be easily bun-

DVB-T
ATSC
ISDB-T
DTMB

Digital television standards and their adoption worldwide

broadcast
tower
transmits
a
high-frequency
electromagnetic wave to numerous low-powered receivers. The high-frequency wave sent by the tower
is modulated with a signal containing visual or audio
information. The receiver is then tuned so as to pick up
the high-frequency wave and a demodulator is used to
retrieve the signal containing the visual or audio information. The broadcast signal can be either analog (signal
is varied continuously with respect to the information)
or digital (information is encoded as a set of discrete
values).[36][74]
The broadcast media industry is at a critical turning point
in its development, with many countries moving from
analog to digital broadcasts. This move is made possible by the production of cheaper, faster and more capable integrated circuits. The chief advantage of digital
broadcasts is that they prevent a number of complaints
common to traditional analog broadcasts. For television,

348

CHAPTER 62. TELECOMMUNICATION

In digital television broadcasting, there are three competing standards that are likely to be adopted worldwide.
These are the ATSC, DVB and ISDB standards; the adoption of these standards thus far is presented in the captioned map. All three standards use MPEG-2 for video
compression. ATSC uses Dolby Digital AC-3 for audio 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
2.[77][78] The choice of modulation also varies between
the schemes. In digital audio broadcasting, standards are
much more unied with practically all countries choosing
to adopt the Digital Audio Broadcasting standard (also
known as the Eureka 147 standard). The exception is the
United States which has chosen to adopt HD Radio. HD
Radio, unlike Eureka 147, is based upon a transmission
method known as in-band on-channel transmission that
allows digital information to piggyback on normal AM
or FM analog transmissions.[79]

Media Layers

Host Layers

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 because of the nature of analog transmission, which means
that perturbations due to noise will be evident in the nal 62.6.4 Internet
output. Digital transmission overcomes this problem because digital signals are reduced to discrete values upon
data unit
layers
reception and hence small perturbations do not aect the
Application
nal output. In a simplied example, if a binary message
Data
Network Process to Application
1011 was transmitted with signal amplitudes [1.0 0.0 1.0
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 perand 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 signicantly alter
Transport
the decoded message. Using forward error correction a
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

Path Determination and


Logical Addressing (IP)

Frames

Physical Addressing
(MAC and LLC)

Bits

Media, Signal and


Binary Transmission

Data Link
Physical

The OSI reference model

The Internet is a worldwide network of computers and


computer networks that communicate with each other using the Internet Protocol.[83] Any computer on the Internet has a unique IP address that can be used by other computers to route information to it. Hence, any computer on
the Internet can send a message to any other computer using its IP address. These messages carry with them the
originating computers IP address allowing for two-way
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 owAn 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 owing 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 netFor 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 populaThese 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, Iceto 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 dicult by the fact
that analog receivers are sold at a small fraction of the The Internet works in part because of protocols that govprice 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 communifrequency 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


dently of other protocols. This allows lower-level protocols to be customized for the network situation while
not changing the way higher-level protocols operate. A
practical example of why this is important is because it
allows an Internet browser to run the same code regardless of whether the computer it is running on is connected
to the Internet through an Ethernet or Wi-Fi connection.
Protocols are often talked about in terms of their place
in the OSI reference model (pictured on the right), which
emerged in 1983 as the rst step in an unsuccessful attempt to build a universally adopted networking protocol
suite.[88]

349
ternet chat), BitTorrent (le sharing) and XMPP (instant
messaging).
Voice over Internet Protocol (VoIP) allows data packets to be used for synchronous voice communications.
The data packets are marked as voice type packets and
can be prioritized by the network administrators so that
the real-time, synchronous conversation is less subject to
contention with other types of data trac which can be
delayed (i.e. le transfer or email) or buered in advance
(i.e. audio and video) without detriment. That prioritization is ne when the network has sucient capacity for all
the VoIP calls taking place at the same time and the network is enabled for prioritization i.e. a private corporate
style network, but the Internet is not generally managed
in this way and so there can be a big dierence in the
quality of VoIP calls over a private network and over the
public Internet.[92]

For the Internet, the physical medium and data link protocol can vary several times as packets traverse the globe.
This is because the Internet places no constraints on what
physical medium or data link protocol is used. This leads
to the adoption of media and protocols that best suit the
local network situation. In practice, most intercontinental 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 ber. This is because for most intercontinental
networks
communication the Internet shares the same infrastructure 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 kilometersremain 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 ofDomain Name System (e.g. 72.14.207.99 is derived from ten more cost-eective and ecient 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, purto 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 computer whereas UDP is used when it is merely desirable.
With TCP, packets are retransmitted if they are lost and
placed in order before they are presented to higher layers.
With UDP, packets are not ordered or retransmitted if
lost. Both TCP and UDP packets carry port numbers with
them to specify what application or process the packet
should be handled by.[90] Because certain applicationlevel protocols use certain ports, network administrators
can manipulate trac to suit particular requirements. Examples are to restrict Internet access by blocking the trafc destined for a particular port or to aect the performance of certain applications by assigning priority.

Wide area networks (WANs) are private computer networks that may extend for thousands of kilometers. Once
again, some of their advantages include privacy and security. Prime users of private LANs and WANs include
armed forces and intelligence agencies that must keep
their information secure and secret.

In the mid-1980s, several sets of communication protocols emerged to ll the gaps between the data-link layer
and the application layer of the OSI reference model.
These included Appletalk, IPX, and NetBIOS with the
dominant protocol set during the early 1990s being IPX
due to its popularity with MS-DOS users. TCP/IP existed 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 t in the session
As the Internet grew in popularity and its trac was reand presentation layers, most notably the Secure Sockquired to be routed into private networks, the TCP/IP
ets Layer (SSL) and Transport Layer Security (TLS) proprotocols replaced existing local area network technolotocols. These protocols ensure that data transferred begies. Additional technologies, such as DHCP, allowed
[91]
tween two parties remains completely condential. FiTCP/IP-based computers to self-congure in the netnally, 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 (le transfer), IRC (InWhereas Asynchronous Transfer Mode (ATM) or Multi-

350
protocol Label Switching (MPLS) are typical data-link
protocols for larger networks such as WANs; Ethernet and Token Ring are typical data-link protocols for
LANs. These protocols dier from the former protocols
in that they are simpler, e.g., they omit features such as
quality of service guarantees, and oer collision prevention. Both of these dierences allow for more economical
systems.[95]

CHAPTER 62. TELECOMMUNICATION


Outline of telecommunication
Push-button telephone
Telecommunications Industry Association
Telecoms resilience
Wavelength-division multiplexing

Wired communication
Despite the modest popularity of IBM Token Ring in
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 coax62.9.1 Citations
ial cables and some recent implementations (especially
high-speed ones) use optical bers.[96] When optic bers [1] Article 1.3 (PDF), ITU Radio Regulations, International
are used, the distinction must be made between multiTelecommunication Union, 2012
mode bers and single-mode bers. Multimode bers can
be thought of as thicker optical bers that are cheaper to [2] Constitution and Convention of the International
Telecommunication Union, Annex (Geneva, 1992)
manufacture devices for, but that suers from less usable
bandwidth and worse attenuation implying poorer long- [3] Denition of telecommunication. Yahoo. Retrieved 28
distance performance.[97]
February 2013.

62.7 Transmission capacity


The eective capacity to exchange information worldwide through two-way telecommunication networks grew
from 281 petabytes of (optimally compressed) information in 1986, to 471 petabytes in 1993, to 2.2 (optimally compressed) exabytes in 2000, and to 65 (optimally
compressed) exabytes in 2007.[85] This is the informational equivalent of two newspaper pages per person per
day in 1986, and six entire newspapers per person per
day by 2007.[98] Given this growth, telecommunications
play an increasingly important role in the world economy
and the global telecommunications industry was about a
$4.7 trillion sector in 2012.[42][99] The service revenue of
the global telecommunications industry was estimated to
be $1.5 trillion in 2010, corresponding to 2.4% of the
worlds gross domestic product (GDP).[42]

62.8 See also


Active networks
Busy override
Digital Revolution
Dual-tone multi-frequency signaling
Information Age
List of telecommunications encryption terms
Nanonetwork
New media

[4] Telecommunication. Collins English Dictionary. Retrieved 28 February 2013.


[5] Telecommunication. Vocabulary.com. Retrieved 28
February 2013.
[6] Telecommunication. Merriam-Webster Dictionary. Retrieved 28 February 2013.
[7] Telecommunication. Oxford Dictionaries. Oxford University Press. Retrieved 28 February 2013.
[8] Telecommunication.
February 2013.

Dictionary.com.

Retrieved 28

[9] Websters denition: 2) technology that deals with


telecommunication usually used in plural"; Concise Encyclopedia denition: Communication n parties at a distance from one another...."; and the Online Etymology
Dictionary: telecommunication (n.) 1932, from French
tlcommunication (see tele- + communication)."; and: "
1930s: from French tlcommunication, from tl- 'at a
distance' + communication 'communication' ", Oxford online.
[10] Jean-Marie Dilhac, From tele-communicare to Telecommunications, 2004.
[11] Telecommunication, tele- and communication, New Oxford American Dictionary (2nd edition), 2005.
[12] http://www.etymonline.com/index.php?term=tele-&
allowed_in_frame=0
[13] http://www.etymonline.com/index.php?term=
communication&allowed_in_frame=0
[14] David Ross, The Spanish Armada, Britain Express, accessed October 2007.
[15] Les Tlgraphes Chappe, Cdrick Chatenet, l'Ecole Centrale de Lyon, 2003.

62.9. REFERENCES

351

[16] CCIT/ITU-T 50 Years of Excellence, International


Telecommunication Union, 2006.
[17] Levi, Wendell (1977). The Pigeon. Sumter, S.C.: Levi
Publishing Co, Inc. ISBN 0853900132.
[18] Blechman, Andrew (2007). Pigeons-The fascinating saga
of the worlds most revered and reviled bird. St Lucia, Queensland: University of Queensland Press. ISBN
9780702236419.
[19] Chronology: Reuters, from pigeons to multimedia
merger (Web article). Reuters. Retrieved 2008-02-21.
[20] William Brockedone. Cooke and Wheatstone and the Invention of the Electric Telegraph. Republished by The
Museum of Science and Technology (Ottawa).
[21] The Electromagnetic Telegraph, J. B. Calvert, 19 May
2004.
[22] The Atlantic Cable, Bern Dibner, Burndy Library Inc.,
1959
[23] Elisha Gray, Oberlin College Archives, Electronic Oberlin
Group, 2006.
[24] Antonio Santi Giuseppe Meucci, Eugenii Katz. (Retrieved May, 2006 from http://chem.ch.huji.ac.il/
~{}eugeniik/history/meucci.html)
[25] Connected Earth: The telephone, BT, 2006.
[26] History of AT&T, AT&T, 2006.
[27] James Bowman Lindsay, Macdonald Black, Dundee City
Council, 1999.
[28] Tesla Biography, Ljubo Vujovic, Tesla Memorial Society
of New York, 1998.
[29] Teslas Radio Controlled Boat, Twenty First Century
Books, 2007.

[38] ATIS Telecom Glossary 2000, ATIS Committee T1A1


Performance and Signal Processing (approved by the
American National Standards Institute), 28 February
2001.
[39] Haykin, pp 344403.
[40] Bluetooth Specication Version 2.0 + EDR (p 27), Bluetooth, 2004.
[41] Haykin, pp 88126.
[42] Worldwide Telecommunications Industry Revenues, Internet Engineering Task Force, June 2010.
[43] Lenert, Edward (December 1998). A Communication Theory Perspective on Telecommunications Policy. Journal of Communication. 48 (4): 323.
doi:10.1111/j.1460-2466.1998.tb02767.x.
[44] Mireille Samaan (April 2003). The Eect of Income Inequality on Mobile Phone Penetration. Boston University Honors thesis. Archived from the original (PDF) on
14 February 2007. Retrieved 8 June 2007.
[45] Rller, Lars-Hendrik; Leonard Waverman (2001).
Telecommunications
Infrastructure
and
Economic Development: A Simultaneous Approach.
American Economic Review.
91 (4): 909923.
doi:10.1257/aer.91.4.909. ISSN 0002-8282.
[46] Qiang, Rossotto, 2009, Economic Impact of Broadband,
http://siteresources.worldbank.org/EXTIC4D/
Resources/IC4D_Broadband_35_50.pdf
[47] Riaz, Ali (1997). The role of telecommunications in economic growth: proposal for an alternative framework of
analysis. Media, Culture & Society. 19 (4): 557583.
doi:10.1177/016344397019004004.
[48] Digital Access Index (DAI)". itu.int. Retrieved 6 March
2008.

[30] The Pioneers, MZTV Museum of Television, 2006.


[31] Philo Farnsworth, Neil Postman, TIME Magazine, 29
March 1999
[32] George Stlibetz, Kerry Redshaw, 1996.
[33] Hafner, Katie (1998). Where Wizards Stay Up Late: The
Origins Of The Internet. Simon & Schuster. ISBN 0-68483267-4.
[34] Data transmission system,
4,293,948, October 1974.

Olof Solderblom,

PN

[35] Ethernet: Distributed Packet Switching for Local Computer Networks, Robert M. Metcalfe and David R. Boggs,
Communications of the ACM (pp 395-404, Vol. 19, No.
5), July 1976.
[36] Haykin, Simon (2001). Communication Systems (4th ed.).
John Wiley & Sons. pp. 13. ISBN 0-471-17869-1.
[37] Ambardar, Ashok (1999). Analog and Digital Signal Processing (2nd ed.). Brooks/Cole Publishing Company. pp.
12. ISBN 0-534-95409-X.

[49] World Telecommunication Development Report 2003,


International Telecommunication Union, 2003.
[50] Fischer, Claude S. "'Touch Someone': The Telephone
Industry Discovers Sociability. Technology and Culture
29.1 (January 1988): 3261. JSTOR. Web. 4 October
2009.
[51] How do you know your love is real? Check Facebook.
CNN. 4 April 2008.
[52] I Just Text To Say I Love You, Ipsos MORI, September
2005.
[53] Online News: For many home broadband users, the internet is a primary news source (PDF). Pew Internet
Project. 22 March 2006.
[54] 100 Leading National Advertisers (PDF). Advertising
Age. 23 June 2008. Retrieved 21 June 2009.
[55] International Telecommunication Union : About ITU.
ITU. Accessed 21 July 2009. (PDF of regulation)

352

[56] Codding, George A. Jr. "Jamming and the Protection of


Frequency Assignments". The American Journal of International Law, Vol. 49, No. 3 (July , 1955), Published
by: American Society of International Law. pp. 384
388. Republished by JSTOR.org The American Journal
of International Law". Accessed 21 July 2009.
[57] Wood, James & Science Museum (Great Britain) "History
of international broadcasting". IET 1994, Volume 1, p.2
of 258 ISBN 0-86341-302-1, ISBN 978-0-86341-302-5.
Republished by Googlebooks. Accessed 21 July 2009.
[58] Gareld, Andrew. "The U.S. Counter-propaganda Failure
in Iraq", FALL 2007, The Middle East Quarterly, Volume
XIV: Number 4, Accessed 21 July 2009.
[59] Wyatt, Edward (10 November 2014). Obama Asks
F.C.C. to Adopt Tough Net Neutrality Rules. New York
Times. Retrieved 15 November 2014.
[60] NYT Editorial Board (14 November 2014). Why the
F.C.C. Should Heed President Obama on Internet Regulation. New York Times. Retrieved 15 November 2014.
[61] Computer sales review, guardian.co.uk, 2009.
[62] Mobile phone sales data, palminfocenter.com, 2009.

CHAPTER 62. TELECOMMUNICATION

[77] HDV Technology Handbook, Sony, 2004.


[78] Audio, Digital Video Broadcasting Project, 2003.
[79] Status of DAB (USA), World DAB Forum, March 2005.
[80] Brian Stelter (13 June 2009). Changeover to Digital TV
O to a Smooth Start. New York Times.
[81] GE 72664 Portable AM/FM Radio, Amazon.com, June
2006.
[82] DAB Products, World DAB Forum, 2006.
[83] Robert E. Kahn and Vinton G. Cerf, What Is The Internet
(And What Makes It Work), December 1999. (specically see footnote xv)
[84] How Internet Infrastructure Works, HowStuWorks.com,
2007.
[85] The Worlds Technological Capacity to Store, Communicate, and Compute Information, Martin Hilbert
and Priscila Lpez (2011), Science, 332(6025), 6065;
free access to the study through here: martinhilbert.net/
WorldInfoCapacity.html

[63] PC early history, arstechnica.com, 2005.


[64] Gartner Says Top Six Vendors Drive Worldwide Mobile
Phone Sales to 21% Growth in 2005, Gartner Group, 28
February 2006.
[65] Africa Calling, Victor and Irene Mbarika, IEEE Spectrum, May 2006.
[66] Ten Years of GSM in Australia, Australia Telecommunications Association, 2003.
[67] Milestones in AT&T History, AT&T Knowledge Ventures, 2006.

[86] World Internet Users and Population Stats, internetworldstats.com, 19 March 2007.
[87] OECD Broadband Statistics, Organisation for Economic
Co-operation and Development, December 2005.
[88] History of the OSI Reference Model, The TCP/IP Guide
v3.0, Charles M. Kozierok, 2005.
[89] Introduction to IPv6, Microsoft Corporation, February
2006.

[68] Optical bre waveguide, Saleem Bhatti, 1995.

[90] Stallings, pp 683702.

[69] Fundamentals of DWDM Technology, CISCO Systems,


2006.

[91] T. Dierks and C. Allen, The TLS Protocol Version 1.0,


RFC 2246, 1999.

[70] Report: DWDM No Match for Sonet, Mary Jander, Light


Reading, 2006.

[92] Multimedia, Crucible (2011-05-07). VoIP, Voice over


Internet Protocol and Internet telephone calls.

[71] Stallings, William (2004). Data and Computer Communications (7th edition (intl) ed.). Pearson Prentice Hall. pp.
337366. ISBN 0-13-183311-1.
[72] MPLS is the future, but ATM hangs on, John Dix, Network World, 2002

[93] Martin, Michael (2000). Understanding the Network (The


Networkers Guide to AppleTalk, IPX, and NetBIOS),
SAMS Publishing, ISBN 0-7357-0977-7.
[94] Ralph Droms, Resources for DHCP, November 2003.

[73] Lazar, Irwin (22 February 2011). The WAN Road


Ahead: Ethernet or Bust?". Telecom Industry Updates.
Retrieved 22 February 2011.

[95] Stallings, pp. 500526.

[74] How Radio Works, HowStuWorks.com, 2006.

[97] Fiber Optic Cable Tutorial, Arc Electronics. Retrieved


June 2007.

[75] Digital Television in Australia, Digital Television News


Australia, 2001.
[76] Stallings, William (2004). Data and Computer Communications (7th edition (intl) ed.). Pearson Prentice Hall.
ISBN 0-13-183311-1.

[96] Stallings, pp 514516.

[98] video animation The Economist.


[99] Introduction to the Telecommunications Industry, Internet
Engineering Task Force, June 2012.

62.10. EXTERNAL LINKS

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) Publishing, 1991. ISBN 92-64-13497-2.
Wheen, Andrew. Dot-Dash to Dot.Com: How Modern 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
Ericssons Understanding Telecommunications at
the Wayback Machine (archived April 13, 2004)
(Ericsson removed the book from their site in
September 2005)

353

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 inactivity (the timeout period). This ensures that connections do not persist forever, if the client crashes or
the network goes down. Open connections consume
resources, and may prevent other clients from accessing 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
send an end of requests series signal. Connections
are closed (timed out) after ve minutes of inactivity; this ensures that the connections do not persist
indenitely.

Network timeout preventing a Web browser from loading a page

In telecommunications and related engineering (including


computer networking and programming), the term timeout or time-out has several meanings, including:

In a timed light switch, both energy and lamps lifespan are saved. The user does not have to switch o
manually.

A network parameter related to an enforced event


designed to occur at the conclusion of a predetermined elapsed time.

Tablet computers and smartphones commonly turn


o their backlight after a certain time without user
input.

A specied period of time that will be allowed to


elapse in a system before a specied event is to take
place, unless another specied event occurs rst; in
either case, the period is terminated when either
event takes place. Note: A timeout condition can
be canceled by the receipt of an appropriate timeout cancellation signal.
An event that occurs at the end of a predetermined
period of time that began at the occurrence of another specied event. The timeout can be prevented
by an appropriate signal.
Timeouts allow for more ecient usage of limited resources without requiring additional interaction from the
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
than waiting indenitely, the waiting will be aborted after the timeout period has elapsed. This is based on the

In an electronic text-based customer relationship


management software tool, the threads can be autoclosed in a timed base, allowing the workers save
browse time. The customer does not have to send
an I'm done signal.

63.1 See also


Fibre Channel time out values
Human-Machine Interaction
Permanent signal

63.2 Sources

354

Federal Standard 1037C

63.2. SOURCES
MIL-STD-188

355

Chapter 64

Transmission Control Protocol


The Transmission Control Protocol (TCP) is a core
protocol of the Internet protocol suite. It originated in
the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire
suite is commonly referred to as TCP/IP. TCP provides
reliable, ordered, and error-checked delivery of a stream
of octets between applications running on hosts communicating over an IP network. Major Internet applications such as the World Wide Web, email, remote administration and le transfer rely on TCP. Applications
that do not require reliable data stream service may use
the User Datagram Protocol (UDP), which provides a
connectionless datagram service that emphasizes reduced
latency over reliability.

64.1 Historical origin


In May 1974, the Institute of Electrical and Electronic
Engineers (IEEE) published a paper titled "A Protocol
for Packet Network Intercommunication."[1] The papers
authors, Vint Cerf and Bob Kahn, described an internetworking protocol for sharing resources using packetswitching among the nodes. A central control component of this model was the Transmission Control Program that incorporated both connection-oriented links
and datagram services between hosts. The monolithic
Transmission Control Program was later divided into a
modular architecture consisting of the Transmission Control Protocol at the connection-oriented layer and the Internet Protocol at the internetworking (datagram) layer.
The model became known informally as TCP/IP, although
formally it was henceforth called the Internet Protocol
Suite.

64.2 Network function


The Transmission Control Protocol provides a communication service at an intermediate level between an application program and the Internet Protocol. It provides
host-to-host connectivity at the Transport Layer of the
Internet model. An application does not need to know
the particular mechanisms for sending data via a link to

another host, such as the required packet fragmentation


on the transmission medium. At the transport layer, the
protocol handles all handshaking and transmission details
and presents an abstraction of the network connection to
the application.
At the lower levels of the protocol stack, due to network
congestion, trac load balancing, or other unpredictable
network behavior, IP packets may be lost, duplicated,
or delivered out of order. TCP detects these problems,
requests retransmission of lost data, rearranges out-oforder data, and even helps minimize network congestion
to reduce the occurrence of the other problems. If the
data still remains undelivered, its source is notied of this
failure. Once the TCP receiver has reassembled the sequence of octets originally transmitted, it passes them to
the receiving application. Thus, TCP abstracts the applications communication from the underlying networking
details.
TCP is utilized extensively by many popular applications
carried on the Internet, including the World Wide Web
(WWW), E-mail, File Transfer Protocol, Secure Shell,
peer-to-peer le sharing, and many streaming media applications.
TCP is optimized for accurate delivery rather than timely
delivery, and therefore, TCP sometimes incurs relatively
long delays (on the order of seconds) while waiting for
out-of-order messages or retransmissions of lost messages. It is not particularly suitable for real-time applications such as Voice over IP. For such applications, protocols like the Real-time Transport Protocol (RTP) running over the User Datagram Protocol (UDP) are usually
recommended instead.[2]
TCP is a reliable stream delivery service which guarantees 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 positive acknowledgment with retransmission is used to
guarantee reliability of packet transfers. This fundamental technique requires the receiver to respond with an
acknowledgment message as it receives the data. The
sender keeps a record of each packet it sends. The sender
also maintains a timer from when the packet was sent,
and retransmits a packet if the timer expires before the

356

64.3. TCP SEGMENT STRUCTURE


message has been acknowledged. The timer is needed in
case a packet gets lost or corrupted.[2]

357
of the actual rst data byte and the acknowledged number in the corresponding ACK are
then this sequence number plus 1.

While IP handles actual delivery of the data, TCP keeps


If the SYN ag is clear (0), then this is the
track of the individual units of data transmission, called
accumulated sequence number of the rst data
segments, that a message is divided into for ecient
byte of this segment for the current session.
routing through the network. For example, when an
HTML le 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 ag is
set then the value of this eld is the next sequence
le into segments and forwards them individually to the
number that the receiver is expecting. This acknowlIP software layer (Internet Layer). The Internet Layer enedges receipt of all prior bytes (if any). The rst
capsulates each TCP segment into an IP packet by adding
ACK sent by each end acknowledges the other ends
a header that includes (among other data) the destination
initial sequence number itself, but no data.
IP address. When the client program on the destination
computer receives them, the TCP layer (Transport Layer)
Data oset (4 bits) species 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 eld gets its name from the fact that it
64.3 TCP segment structure
is also the oset 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
zero
creating a TCP segment. The TCP segment is then
encapsulated into an Internet Protocol (IP) datagram, and
Flags (9 bits) (aka Control bits) contains 9 1-bit ags
exchanged with peers.[3]
The term TCP packet appears in both informal and formal usage, whereas in more precise terminology segment
refers to the TCP protocol data unit (PDU), datagram[4]
to the IP PDU, and frame to the data link layer PDU:
Processes transmit data by calling on the
TCP and passing buers of data as arguments.
The TCP packages the data from these buers
into segments and calls on the internet module
[e.g. IP] to transmit each segment to the destination TCP.[5]
A TCP segment consists of a segment header and a data
section. The TCP header contains 10 mandatory elds,
and an optional extension eld (Options, pink background
in table).
The data section follows the header. Its contents are the
payload data carried for the application. The length of the
data section is not specied in the TCP segment header.
It can be calculated by subtracting the combined length
of the TCP header and the encapsulating IP header from
the total IP datagram length (specied in the IP header).
Source port (16 bits) identies the sending port
Destination port (16 bits) identies the receiving port
Sequence number (32 bits) has a dual role:
If the SYN ag is set (1), then this is the initial sequence number. The sequence number

NS (1 bit) ECN-nonce concealment protection (experimental: see RFC 3540).


CWR (1 bit) Congestion Window Reduced
(CWR) ag is set by the sending host to indicate that it received a TCP segment with the
ECE ag set and had responded in congestion
control mechanism (added to header by RFC
3168).
ECE (1 bit) ECN-Echo has a dual role, depending on the value of the SYN ag. It indicates:
If the SYN ag is set (1), that the
TCP peer is ECN capable.
If the SYN ag is clear (0),
that a packet with Congestion Experienced ag set (ECN=11) in
IP header received during normal
transmission (added to header by
RFC 3168). This serves as an indication of network congestion (or
impending congestion) to the TCP
sender.
URG (1 bit) indicates that the Urgent pointer
eld is signicant
ACK (1 bit) indicates that the Acknowledgment eld is signicant. All packets after the
initial SYN packet sent by the client should
have this ag set.

358

CHAPTER 64. TRANSMISSION CONTROL PROTOCOL


PSH (1 bit) Push function. Asks to push the
buered data to the receiving application.
RST (1 bit) Reset the connection
SYN (1 bit) Synchronize sequence numbers.
Only the rst packet sent from each end should
have this ag set. Some other ags and elds
change meaning based on this ag, and some
are only valid for when it is set, and others
when it is clear.
FIN (1 bit) No more data from sender

Window size (16 bits) the size of the receive window,


which species the number of window size units (by
default, bytes) (beyond the segment identied by the
sequence number in the acknowledgment eld) that
the sender of this segment is currently willing to receive (see Flow control and Window Scaling)
Checksum (16 bits) The 16-bit checksum eld is used
for error-checking of the header and data

1 (8 bits) No operation (NOP, Padding) This


may be used to align option elds on 32-bit
boundaries for better performance.
2,4,SS (32 bits) Maximum segment size (see
maximum segment size) [SYN]
3,3,S (24 bits) Window scale (see window
scaling for details) [SYN][6]
4,2 (16 bits) Selective Acknowledgement
permitted. [SYN] (See selective acknowledgments for details)[7]
5,N,BBBB,EEEE,... (variable bits, N is either
10, 18, 26, or 34)- Selective ACKnowledgement (SACK)[8] These rst two bytes are followed by a list of 14 blocks being selectively
acknowledged, specied as 32-bit begin/end
pointers.
8,10,TTTT,EEEE (80 bits)- Timestamp and
echo of previous timestamp (see TCP timestamps for details)[9]
(The remaining options are historical, obsolete, experimental, not yet standardized, or unassigned)

Urgent pointer (16 bits) if the URG ag is set, then this


16-bit eld is an oset 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 0320 bits, divisible by 32) The
length of this eld is determined by the data oset
eld. Options have up to three elds: Option-Kind
(1 byte), Option-Length (1 byte), Option-Data 64.4 Protocol operation
(variable). The Option-Kind eld indicates the
type of option, and is the only eld that is not
optional. Depending on what kind of option we
are dealing with, the next two elds may be set:
the Option-Length eld indicates the total length
of the option, and the Option-Data eld contains
the value of the option, if applicable. For example,
an Option-Kind byte of 0x01 indicates that this is
a No-Op option used only for padding, and does
not have an Option-Length or Option-Data byte
following it. An Option-Kind byte of 0 is the End
Of Options option, and is also only one byte. An
Option-Kind byte of 0x02 indicates that this is
the Maximum Segment Size option, and will be
followed by a byte specifying the length of the MSS
eld (should be 0x04). Note that this length is the
total length of the given options eld, including A Simplied 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 ESthe MSS value is typically expressed in two bytes, TABLISHED state.
the length of the eld will be 4 bytes (+2 bytes of TCP protocol operations may be divided into three
kind and length). In short, an MSS option eld 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 transCONNECT/ SYN (Step 1 of the 3-way-handshake)

unusual event
client/receiver path
server/sender path

(Start)

CLOSED

LISTEN/-

(Step 2 of the 3-way-handshake) SYN/SYN+ACK

CLOSE/-

CLOSE/-

LISTEN

SEND/SYN

RST/-

SYN
RECEIVED

SYN/SYN+ACK (simultaneous open)

ACK/-

Data exchange occurs


ESTABLISHED

SYN
SENT

SYN+ACK/ACK

(Step 3 of the 3-way-handshake)

CLOSE/ FIN

FIN/ACK

CLOSE/ FIN

Active CLOSE

Passive CLOSE

FIN/ACK

FIN WAIT 1

CLOSING

CLOSE WAIT

FIN+ACK/ACK

ACK/-

ACK/-

FIN WAIT 2

TIME WAIT

CLOSE/ FIN

LAST ACK

FIN/ACK

Timeout

(Go back to start)

ACK/-

CLOSED

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 reare indicated below as [SYN] . Option-Kind and stansources.
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
request from any remote TCP and port.
SYN-SENT (client) represents waiting for a matching
connection request after having sent a connection
request.
SYN-RECEIVED (server) represents waiting for a
conrming connection request acknowledgment after having both received and sent a connection request.
ESTABLISHED (both server and client) represents an
open connection, data received can be delivered to
the user. The normal state for the data transfer phase
of the connection.

1. SYN: The active open is performed by the client


sending a SYN to the server. The client sets the segments sequence number to a random value A.
2. SYN-ACK: In response, the server replies with
a SYN-ACK. The acknowledgment number is set
to one more than the received sequence number
i.e. A+1, and the sequence number that the server
chooses for the packet is another random number,
B.
3. ACK: Finally, the client sends an ACK back to the
server. The sequence number is set to the received
acknowledgement value i.e. A+1, and the acknowledgement number is set to one more than the received sequence number i.e. B+1.

FIN-WAIT-1 (both server and client) represents waiting 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
acknowledgment of the connection. The steps 1, 2 estion termination request previously sent.
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 esing 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.
CLOSING (both server and client) represents waiting
for a connection termination request acknowledgment from the remote TCP.
LAST-ACK (both server and client) represents waiting for an acknowledgment of the connection termination request previously sent to the remote TCP
(which includes an acknowledgment of its connection termination request).
TIME-WAIT (either server or client) represents waiting for enough time to pass to be sure the remote
TCP received the acknowledgment of its connection
termination request. [According to RFC 793 a connection can stay in TIME-WAIT for a maximum of
four minutes known as two MSL (maximum segment lifetime).]

64.4.2 Connection termination

Receiver

Initiator
ESTABLISHED
connection
active close
FIN_WAIT_1

ACK
FIN

FIN_WAIT_2
TIME_WAIT

ESTABLISHED
connection

FIN

CLOSE_WAIT
passive close
LAST_ACK

ACK
CLOSED

CLOSED

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 terminating independently. When an endpoint wishes to stop its
64.4.1 Connection establishment
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 segserver, the server must rst 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 rst FIN has responded with the nal ACK, it waits

360

CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

for a timeout before nally closing the connection, during which time the local port is unavailable for new connections; this prevents confusion due to delayed packets
being delivered during subsequent connections.

number of outgoing connections from each of the clients


IP addresses. If an application fails to properly close unrequired connections, a client can run out of resources
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 unacknowlthat 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 terminates 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
sequence, as Linux or HP-UX do. If such a host actively
closes a connection but still has not read all the incoming
data the stack already received from the link, this host
sends a RST instead of a FIN (Section 4.2.2.13 in RFC
1122). This allows a TCP application to be sure the remote application has read all the data the former sent
waiting the FIN from the remote side, when it actively
closes the connection. But the remote TCP stack cannot
distinguish between a Connection Aborting RST and Data
Loss RST. Both cause the remote stack to lose all the data
received.
Some application protocols may violate the OSI model
layers, using the TCP open/close handshaking for the application protocol open/close handshaking these may
nd the RST problem on active close. As an example:
s = connect(remote); send(s, data); close(s);

Ordered data transfer the destination host rearranges according to sequence number[2]
Retransmission of lost packets any cumulative
stream not acknowledged is retransmitted[2]
Error-free data transfer[13]
Flow control limits the rate a sender transfers data
to guarantee reliable delivery. The receiver continually hints the sender on how much data can be received (controlled by the sliding window). When
the receiving hosts buer lls, the next acknowledgment contains a 0 in the window size, to stop transfer
and allow the data in the buer to be processed.[2]
Congestion control[2]

For a usual program ow 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 identies the order of the bytes sent
from each computer so that the data can be reconstructed
64.4.3 Resource usage
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 rst byte is decided during the initial 3way handshake. This number can be arbitrary, and should
Because TCP packets do not include a session identier,
both endpoints identify the session using the clients 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
nd the destination process. Each entry in the table is
known as a Transmission Control Block or TCB. It contains information about the endpoints (IP and port), status of the connection, running data about the packets that
are being exchanged and buers for sending and receiving data.

Acknowledgements (Acks) are sent by the receiver of


data to tell the sender that data has been received. Acks
do not imply that the data has been delivered to the application. They merely signify that it is now the receivers
responsibility to deliver the data. In TCP Acks are cumulative. That is, if the ith byte is acknowledged, it means
that all previous bytes have been received too.

The number of sessions in the server side is limited only


by memory and can grow as new connections arrive, but
the client must allocate a random port before sending
the rst SYN to the server. This port remains allocated
during the whole conversation, and eectively limits the

Reliability is achieved by the sender detecting lost data


and retransmitting it. TCP uses two primary techniques
to identify loss. Retransmission timeout (abbreviated as
RTO) and duplicate cumulative acknowledgements (DupAcks).

64.4. PROTOCOL OPERATION


Dupack based retransmission If a single packet (say
packet 100) in a stream is lost, then the receiver cannot acknowledge packets above 100 because it uses cumulative
acks. Hence the receiver acknowledges packet 100 again
on the receipt of another data packet. This duplicate acknowledgement is used as a signal for packet loss. That
is, if the sender receives three duplicate acknowledgements, it retransmits the last unacknowledged packet. A
threshold of three is used because the network may reorder packets causing duplicate acknowledgements. This
threshold has been demonstrated to avoid spurious retransmissions due to reordering.[14]

361
Flow control
TCP uses an end-to-end ow control protocol to avoid
having the sender send data too fast for the TCP receiver
to receive and process it reliably. Having a mechanism
for ow control is essential in an environment where machines of diverse network speeds communicate. For example, if a PC sends data to a smartphone that is slowly
processing received data, the smartphone must regulate
the data ow so as not to be overwhelmed.[2]

TCP uses a sliding window ow control protocol. In each


TCP segment, the receiver species in the receive window
eld the amount of additionally received data (in bytes)
that it is willing to buer 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 esreceiving 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 acknowledgement. This means that the retransmit timer res
Initial
sequence
Sequence numbers
only when the sender has received no acknowledgement
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
G is the clock granularity.[15] Further, in case a retransmit
timer has red and still no acknowledgement is received,
the next timer is set to twice the previous value (up to a
certain threshold). Among other things, this helps defend
against a man in the middle denial of service attack that
tries to fool the sender into making so many retransmissions that the receiver is overwhelmed.
d
ge
led n
ow tio
kn ca
ac pli
d, ap
e
o
eiv d t
rec re
ta live
Da d de
an

Data received, acknowledged,


but not yet delivered to application

Data
re
but n ceived
,
ot ack
now
le

dged

Un

fille

If the sender infers that data has been lost in the network using one of the two techniques described above,
it retransmits the data.

Error detection

db

uff

er

Window
shifts
Receiver's window
(Allocation buffer)
Up to 2^16-1 slots

TCP sequence numbers and receive windows behave very much


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. Acknowledgments 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 eld 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 rerequire 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
the 16-bit TCP checksum is redundant: remarkably, introduction of errors in packets between CRC-protected
hops is common, but the end-to-end 16-bit TCP checksum catches most of these simple errors.[16] This is the
end-to-end principle at work.

If a receiver is processing incoming data in small increments, it may repeatedly advertise a small receive window. This is referred to as the silly window syndrome,
since it is inecient to send only a few bytes of data in a
TCP segment, given the relatively large overhead of the
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
would imply that both originator and receiver will negotiate and agree upon a single, unied MSS that applies to
all communication in both directions of the connection.
In fact, two completely independent values of MSS are
permitted for the two directions of data ow in a TCP
connection.[17] This situation may arise, for example, if
one of the devices participating in a connection has an
extremely limited amount of memory reserved (perhaps
even smaller than the overall discovered Path MTU) for
processing incoming TCP segments.

The nal main aspect of TCP is congestion control. TCP


uses a number of mechanisms to achieve high performance and avoid congestion collapse, where network performance can fall by several orders of magnitude. These
mechanisms control the rate of data entering the network,
keeping the data ow below a rate that would trigger collapse. They also yield an approximately max-min fair allocation between ows.

Acknowledgments for data sent, or lack of acknowledgments, are used by senders to infer network conditions between the TCP sender and receiver. Coupled with timers,
TCP senders and receivers can alter the behavior of the
ow of data. This is more generally referred to as con64.4.6
gestion control and/or network congestion avoidance.

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 ineciencies when packets are lost. For example, supIn addition, senders employ a retransmission timeout pose 10,000 bytes are sent in 10 dierent TCP packets,
(RTO) that is based on the estimated round-trip time (or and the rst packet is lost during transmission. In a pure
RTT) between the sender and receiver, as well as the vari- cumulative acknowledgment protocol, the receiver canance in this round trip time. The behavior of this timer is not say that it received bytes 1,000 to 9,999 successfully,
specied in RFC 6298. There are subtleties in the estima- but failed to receive the rst 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 Karns Algorithm or TCP timestamps (see To alleviate this issue TCP employs the selective acRFC 1323). These individual RTT samples are then av- knowledgment (SACK) option, dened 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 nally 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,
manage congestion and go fast in very high-speed environments are ongoing areas of research and standards development. As a result, there are a number of TCP congestion avoidance algorithm variations.

64.4.5

Maximum segment size

The maximum segment size (MSS) is the largest amount


of data, specied in bytes, that TCP is willing to receive in
a single segment. For best performance, the MSS should
be set small enough to avoid IP fragmentation, which can
lead to packet loss and excessive retransmissions. To try
to accomplish this, typically the MSS is announced by
each side using the MSS option when the TCP connection is established, in which case it is derived from the
maximum transmission unit (MTU) size of the data link
layer of the networks to which the sender and receiver
are directly attached. Furthermore, TCP senders can use
path MTU discovery to infer the minimum MTU along
the network path between the sender and receiver, and
use this to dynamically adjust the MSS to avoid IP fragmentation within the network.

byte received successively, as in the basic TCP acknowledgment. The acknowledgement can specify a number
of SACK blocks, where each SACK block is conveyed by
the starting and ending sequence numbers of a contiguous
range that the receiver correctly received. In the example above, the receiver would send SACK with sequence
numbers 1000 and 9999. The sender would accordingly
retransmit only the rst packet (bytes 0 to 999).
A TCP sender can interpret an out-of-order packet delivery as a lost packet. If it does so, the TCP sender will
retransmit the packet previous to the out-of-order packet
and slow its data delivery rate for that connection. The
duplicate-SACK option, an extension to the SACK option that was dened in RFC 2883, solves this problem.
The TCP receiver sends a D-ACK to indicate that no
packets were lost, and the TCP sender can then reinstate
the higher transmission-rate.

The SACK option is not mandatory, and comes into operation only if both parties support it. This is negotiated
when a connection is established. SACK uses the optional
part of the TCP header (see TCP segment structure for
details). The use of SACK has become widespread
all popular TCP stacks support it. Selective acknowledgment is also used in Stream Control Transmission ProtoMSS announcement is also often called MSS negoti- col (SCTP).

64.5. VULNERABILITIES

64.4.7

Window scaling

Main article: TCP window scale option


For more ecient use of high bandwidth networks, a
larger TCP window size may be used. The TCP window
size eld controls the ow of data and its value is limited
to between 2 and 65,535 bytes.

363

64.4.9 Out-of-band data


It is possible to interrupt or abort the queued stream instead of waiting for the stream to nish. This is done by
specifying the data as urgent. This tells the receiving program to process it immediately, along with the rest of the
urgent data. When nished, TCP informs the application
and resumes back to the stream queue. An example is
when TCP is used for a remote login session, the user
can send a keyboard sequence that interrupts or aborts
the program at the other end. These signals are most often needed when a program on the remote machine fails
to operate correctly. The signals must be sent without
waiting for the program to nish its current transfer.[2]

Since the size eld cannot be expanded, a scaling factor is


used. The TCP window scale option, as dened in RFC
1323, is an option used to increase the maximum window size from 65,535 bytes to 1 gigabyte. Scaling up to
larger window sizes is a part of what is necessary for TCP
tuning.
TCP OOB data was not designed for the modern InterThe 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 eld. 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 dierent 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
commonly used protocol elements and tends to be poorly
ing in either direction.
implemented. [19][20]
Some routers and packet rewalls rewrite the window
scaling factor during a transmission. This causes sending and receiving sides to assume dierent TCP window
64.4.10 Forcing data delivery
sizes. The result is non-stable trac that may be very
slow. The problem is visible on some sites behind a deNormally, TCP waits for 200 ms for a full packet of data
fective router.[18]
to send (Nagles Algorithm tries to group small messages
into a single packet). This wait creates small, but potentially serious delays if repeated constantly during a le
transfer. For example, a typical send block would be 4
KB, a typical MSS is 1460, so 2 packets go out on a 10
64.4.8 TCP timestamps
Mbit/s ethernet taking ~1.2 ms each followed by a third
TCP timestamps, dened in RFC 1323, can help TCP carrying the remaining 1176 after a 197 ms pause bedetermine in which order packets were sent. TCP times- cause TCP is waiting for a full buer.
tamps are not normally aligned to the system clock and
start at some random value. Many operating systems will
increment the timestamp for every elapsed millisecond;
however the RFC only states that the ticks should be proportional.

In the case of telnet, each user keystroke is echoed back


by the server before the user can see it on the screen. This
delay would become very annoying.

Setting the socket option TCP_NODELAY overrides the


default 200 ms send delay. Application programs use this
There are two timestamp elds:
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 denes 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
sockets and it
tection Against Wrapped Sequence numbers, or PAWS (see or control it in User space using Berkeley
[21]
Protocol
stack
only.
is
controlled
by
RFC 1323 for details). PAWS is used when the receive
window crosses the sequence number wraparound boundary. In the case where a packet was potentially retransmitted it answers the question: Is this sequence number 64.5 Vulnerabilities
in the rst 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 identied issues, were pubbecause 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 desynchronized and communication continues as normal after the
malicious payload is accepted. TCP veto gives the attacker less control over the communication, but makes
the attack particularly resistant to detection. The large increase in network trac from the ACK storm is avoided.
The only evidence to the receiver that something is amiss
is a single duplicate packet, a normal occurrence in an IP
network. The sender of the vetoed packet never sees any
evidence of an attack.[28]

64.5.1

Denial of service

By using a spoofed IP address and repeatedly sending


purposely assembled SYN packets, followed by many
ACK packets, attackers can cause the server to consume
large amounts of resources keeping track of the bogus
connections. This is known as a SYN ood attack. Proposed solutions to this problem include SYN cookies and
cryptographic puzzles, though SYN cookies come with
their own set of vulnerabilities.[24] Sockstress is a similar 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
TCP uses port numbers to identify sending and receivPhrack #66.[26]
ing application end-points on a host, often called Internet
sockets. Each side of a TCP connection has an associ64.5.2 Connection hijacking
ated 16-bit unsigned port number (0-65535) reserved by
the sending or receiving application. Arriving TCP packMain article: TCP sequence prediction attack
ets are identied as belonging to a specic TCP connection 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 destiredirect packets can hijack a TCP connection. To do so, nation port. This means that a server computer can prothe 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 dierent source
jack can result in one packet being erroneously accepted ports.
at one end. When the receiving host acknowledges the extra segment to the other side of the connection, synchronization is lost. Hijacking might be combined with ARP
or routing attacks that allow taking control of the packet
ow, so as to get permanent control of the hijacked TCP
connection.[27]
Impersonating a dierent IP address was not dicult
prior to RFC 1948, when the initial sequence number was
easily guessable. That allowed an attacker to blindly send
a sequence of packets that the receiver would believe to
come from a dierent IP address, without the need to
deploy ARP or routing attacks: it is enough to ensure
that the legitimate host of the impersonated IP address is
down, or bring it to that condition using denial-of-service
attacks. This is why the initial sequence number is now
chosen at random.

Port numbers are categorized into three basic categories:


well-known, registered, and dynamic/private. The wellknown ports are assigned by the Internet Assigned Numbers Authority (IANA) and are typically used by systemlevel or root processes. Well-known applications running
as servers and passively listening for connections typically
use these ports. Some examples include: FTP (20 and
21), SSH (22), TELNET (23), SMTP (25), SSL (443)
and HTTP (80). Registered ports are typically used by
end user applications as ephemeral source ports when
contacting servers, but they can also identify named services that have been registered by a third party. Dynamic/private ports can also be used by end user applications, but are less commonly so. Dynamic/private ports
do not contain any meaning outside of any particular TCP
connection.

Network address translation (NAT), typically uses dynamic port-numbers, on the (Internet-facing) public
64.5.3 TCP veto
side, to disambiguate the ow of trac that is passing between 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 subthe 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 expected 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 signicant
dropped as a normal duplicate packetthe legitimate enhancements have been made and proposed over the

64.8. TCP OVER WIRELESS NETWORKS


years, its most basic operation has not changed signicantly since its rst specication RFC 675 in 1974, and
the v4 specication RFC 793, published in September
1981. RFC 1122, Host Requirements for Internet Hosts,
claried a number of TCP protocol implementation requirements. A list of the 8 required specications and
over 20 strongly encouraged enhancements is available
in RFC 7414. Among this list is RFC 2581, TCP Congestion Control, one of the most important TCP-related
RFCs in recent years, describes updated algorithms that
avoid undue congestion. In 2001, RFC 3168 was written to describe explicit congestion notication (ECN), a
congestion avoidance signaling mechanism.
The original TCP congestion avoidance algorithm was
known as TCP Tahoe, but many alternative algorithms
have since been proposed (including TCP Reno, TCP Vegas, FAST TCP, TCP New Reno, and TCP Hybla).
TCP Interactive (iTCP) [29] is a research eort into TCP
extensions that allows applications to subscribe to TCP
events and register handler components that can launch
applications for various purposes, including applicationassisted congestion control.

365
(PRR) is a TCP extension developed by Google engineers. PRR ensures that the TCP window size after recovery is as close to the Slow-start threshold as
possible.[39] The algorithm is designed to improve the
speed of recovery and is the default congestion control
algorithm in Linux 3.2+ kernels.[40]

64.8 TCP over wireless networks


TCP was originally designed for wired networks. Packet
loss is considered to be the result of network congestion
and the congestion window size is reduced dramatically
as a precaution. However, wireless links are known to
experience sporadic and usually temporary losses due to
fading, shadowing, hand o, and other radio eects, that
should not be considered congestion. After the (erroneous) back-o of the congestion window size, due to
wireless packet loss, there may be a congestion avoidance phase with a conservative decrease in window size.
This causes the radio link to be underutilized. Extensive research on combating these harmful eects has
been conducted. Suggested solutions can be categorized
as end-to-end solutions, which require modications at
the client or server,[41] link layer solutions, such as RLP
in cellular networks, or proxy-based solutions which require some changes in the network without modifying end
nodes.[41][42]

Multipath TCP (MPTCP) [30][31] is an ongoing eort


within the IETF that aims at allowing a TCP connection
to use multiple paths to maximize resource usage and increase redundancy. The redundancy oered by Multipath TCP in the context of wireless networks [32] enables
statistical multiplexing of resources, and thus increases
TCP throughput dramatically. Multipath TCP also brings A number of alternative congestion control algorithms,
performance benets 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 proposed in December 2009 to secure servers against denial64.9 Hardware implementations
of-service attacks. Unlike SYN cookies, TCPCT does
not conict 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
known as TCP Ooad Engines (TOE). The main probof short-lived TCP connections.
lem of TOEs is that they are hard to integrate into comtcpcrypt is an extension proposed in July 2010 to provide
puting systems, requiring extensive changes in the opertransport-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 congdevelop such a device was Alacritech.
uration. Unlike TLS (SSL), tcpcrypt itself does not provide authentication, but provides simple primitives down
to the application to do that. As of 2010, the rst 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
of successive TCP connections between two endpoints. It
works by skipping the three-way handshake using a cryptographic cookie. It is similar to an earlier proposal
called T/TCP, which was not widely adopted due to security issues.[37] As of July 2012, it is an IETF Internet
draft.[38]

A packet snier, which intercepts TCP trac on a network link, can be useful in debugging networks, network
stacks and applications that use TCP by showing the user
what packets are passing through a link. Some networking stacks support the SO_DEBUG socket option, which
can be enabled on the socket using setsockopt. That option 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 dened in RFC 793:
plication cannot access the packets coming after a lost
packet until the retransmitted copy of the lost packet is
The checksum eld is the 16 bit ones comreceived. This causes problems for real-time applications
plement of the ones complement sum of all 16such as streaming media, real-time multiplayer games and
bit words in the header and text. If a segvoice 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 Chantransmitted as part of the segment. While comnel protocol (FCP) instead of TCP/IP.
puting the checksum, the checksum eld itself is
replaced with zeros.
Also, for embedded systems, network booting, and
servers that serve simple requests from huge numbers of
clients (e.g. DNS servers) the complexity of TCP can
be a problem. Finally, some tricks such as transmitting
data between two hosts that are both behind NAT (using STUN or similar systems) are far simpler without a
relatively complex protocol like TCP in the way.

In other words, after appropriate padding, all 16-bit


words are added using ones complement arithmetic.
The sum is then bitwise complemented and inserted as
the checksum eld. A pseudo-header that mimics the
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 eld 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.

64.12.2 TCP checksum for IPv6

Stream Control Transmission Protocol (SCTP) is another


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 comthe checksum is changed, as per RFC 2460:
plex than TCP, and has not yet seen widespread deployment. However, it is especially designed to be used in
Any transport or other upper-layer protocol that
situations where reliability and near-real-time consideraincludes the addresses from the IP header in its
tions are important.
checksum computation must be modied 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 ineciencies
related to wireless data transport.
A pseudo-header that mimics the IPv6 header for comTCP 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
Source address the one in the IPv6 header
in advance, but if the environment is predictable, a timing based protocol such as Asynchronous Transfer Mode
Destination address the nal destination; if the
(ATM) can avoid TCPs retransmits overhead.
IPv6 packet doesn't contain a Routing header, TCP
UDP-based Data Transfer Protocol (UDT) has better efciency and fairness than TCP in networks that have high
bandwidth-delay product.[43]
Multipurpose Transaction Protocol (MTP/IP) is patented
proprietary software that is designed to adaptively achieve
high throughput and transaction performance in a wide
variety of network conditions, particularly those where
TCP is perceived to be inecient.

uses the destination address in the IPv6 header, otherwise, at the originating node, it uses the address in
the last element of the Routing header, and, at the
receiving node, it uses the destination address in the
IPv6 header.
TCP length the length of the TCP header and data
Next Header the protocol value for TCP

64.14. REFERENCES

64.12.3

Checksum ooad

Many TCP/IP software stack implementations provide


options to use hardware assistance to automatically compute the checksum in the network adapter prior to transmission onto the network or upon reception from the network for validation. This may relieve the OS from using
precious CPU cycles calculating the checksum. Hence,
overall network performance is increased.

367
WTCP a proxy-based modication of TCP for wireless networks
Transport Layer Comparison of transport layer
protocols

64.14 References

This feature may cause packet analyzers detecting outbound network trac upstream of the network adapter
that are unaware or uncertain about the use of checksum
ooad to report invalid checksum in outbound packets.

[1] Vinton G. Cerf; Robert E. Kahn (May 1974). "A Protocol for Packet Network Intercommunication" (PDF).
IEEE Transactions on Communications. 22 (5): 637
648. doi:10.1109/tcom.1974.1092259. Archived from
the original (PDF) on March 4, 2016.

64.13 See also

[2] Comer, Douglas E. (2006). Internetworking with TCP/IP:


Principles, Protocols, and Architecture. 1 (5th ed.). Prentice Hall. ISBN 0-13-187671-6.

Connection-oriented protocol

[3] TCP (Linktionary term)".

IP fragmentation

[4] RFC 791 section 2.1.

Karns algorithm

[5] RFC 793.

Maximum segment lifetime

[6] RFC 1323, TCP Extensions for High Performance, Section 2.2.

Maximum segment size


Maximum transmission unit
Micro-bursting (networking)
Multipurpose Transaction Protocol (MTP/IP)
Nagles algorithm

[7] RFC 2018, TCP Selective Acknowledgement Options,


Section 2.
[8] RFC 2018, TCP Selective Acknowledgement Options,
Section 3.
[9] RFC 1323, TCP Extensions for High Performance, Section 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 Networks (Fourth ed.). Prentice Hall. ISBN 0-13-066102-3.

Stream Control Transmission Protocol (SCTP)


SYN cookies
SYN ood
T/TCP variant of TCP
TCP and UDP port
TCP and UDP port numbers for a long list of
ports/services
TCP congestion avoidance algorithms

[13] TCP Denition. Retrieved 2011-03-12.


[14] Mathis; Mathew; Semke; Mahdavi; Ott (1997). The
macroscopic behavior of the TCP congestion avoidance
algorithm. ACM SIGCOMM Computer Communication
Review. 27.3: 6782.
[15] Paxson, V.; Allman, M.; Chu, J.; Sargent, M. (June 2011).
The Basic Algorithm. Computing TCPs Retransmission
Timer. IETF. p. 2. sec. 2. RFC 6298. https://tools.
ietf.org/html/rfc6298#section-2. Retrieved October 24,
2015.

TCP global synchronization

[16] Stone; Partridge (2000). When The CRC and TCP


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 implementation of TCP urgent data. 73rd IETF meeting. Retrieved
2009-01-04.

TCP tuning for high performance networks

368

CHAPTER 64. TRANSMISSION CONTROL PROTOCOL

[20] Peterson, Larry (2003). Computer Networks. Morgan


Kaufmann. p. 401. ISBN 1-55860-832-X.
[21] Richard W. Stevens (2006). TCP/IP Illustrated. Vol. 1,
The protocols. Addison-Wesley. pp. Chapter 20. ISBN
978-0-201-63346-7. Retrieved 14 November 2011.

[42] Muhammad Adeel & Ahmad Ali Iqbal (2004). TCP


Congestion Window Optimization for CDMA2000
Packet Data Networks.
International Conference on Information Technology (ITNG'07): 3135.
doi:10.1109/ITNG.2007.190. ISBN 978-0-7695-27765.

[22] Security Assessment of the Transmission Control Protocol (TCP) at the Wayback Machine (archived March 6,
2009)

[43] Yunhong Gu, Xinwei Hong, and Robert L. Grossman.


An Analysis of AIMD Algorithm with Decreasing Increases. 2004.

[23] Security Assessment of the Transmission Control Protocol (TCP)


[24] Jakob Lell. Quick Blind TCP Connection Spoong with
SYN Cookies. Retrieved 2014-02-05.
[25] Some insights about the recent TCP DoS (Denial of Service) vulnerabilities
[26] Exploiting TCP and the Persist Timer Inniteness.
[27] Laurent Joncheray, Simple Active Attack Against TCP,
1995.
[28] John T. Hagen; Barry E. Mullins (2013). TCP veto: A
novel network attack and its application to SCADA protocols. Innovative Smart Grid Technologies (ISGT), 2013
IEEE PES.
[29] TCP Interactive (iTCP)

64.15 Further reading


Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. ISBN 0-201-63346-9.
Stevens, W. Richard; Wright, Gary R. TCP/IP Illustrated, Volume 2: The Implementation. ISBN 0-20163354-X.
Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP, and the UNIX
Domain Protocols. ISBN 0-201-63495-3.**

64.16 External links

[30] RFC 6182


[31] RFC 6824
[32] TCP with feed-forward source coding for wireless downlink networks.
[33] Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley
(2011). Improving datacenter performance and robustness with multipath TCP. Sigcomm.
[34] MultiPath TCP - Linux Kernel implementation.
[35] Barre; Paasch; Bonaventure (2011). MultiPath TCP:
From Theory to Practice. IFIP Networking.
[36] Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaventure; Handley (2012). How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP.
USENIX NSDI.
[37] Michael Kerrisk (2012-08-01). TCP Fast Open: expediting web services. LWN.net.
[38] Y. Cheng, J. Chu, S. Radhakrishnan, A. Jain
(2012-07-16). TCP Fast Open. IETF. I-D draftietf-tcpm-fastopen-01.
https://tools.ietf.org/html/
draft-ietf-tcpm-fastopen-01.
[39] "RFC 6937 - Proportional Rate Reduction for TCP. http:
//tools.ietf.org/html/rfc6937. External link in |website=
(help);

64.16.1 RFC
RFC 675 Specication of Internet Transmission
Control Program, December 1974 Version
RFC 793 TCP v4
RFC 1122 includes some error corrections for
TCP
RFC 1323 TCP Extensions for High Performance
[Obsoleted by RFC 7323]
RFC 1379 Extending TCP for Transactions
Concepts [Obsoleted by RFC 6247]
RFC 1948 Defending Against Sequence Number
Attacks
RFC 2018 TCP Selective Acknowledgment Options
RFC 5681 TCP Congestion Control
RFC 6247 - Moving the Undeployed TCP Extensions RFC 1072, RFC 1106, RFC 1110, RFC 1145,
RFC 1146, RFC 1379, RFC 1644, and RFC 1693
to Historic Status

[40] Grigorik, Ilya (2013). High-performance browser networking (1. ed.). Beijing: O'Reilly. ISBN 1449344763.

RFC 6298 Computing TCPs Retransmission


Timer

[41] TCP performance over CDMA2000 RLP. Retrieved


2010-08-30

RFC 6824 - TCP Extensions for Multipath Operation with Multiple Addresses

64.16. EXTERNAL LINKS


RFC 7323 - TCP Extensions for High Performance
RFC 7414 A Roadmap for TCP Specication
Documents

64.16.2

Others

Oral history interview with Robert E. Kahn, Charles


Babbage Institute, University of Minnesota, Minneapolis. Focuses on Kahns role in the development 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 being written, his decision to become active in its
implementation, and his role in the public demonstration of the ARPANET. The interview continues
into Kahns 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 networks.
IANA Port Assignments
John Kristos 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 Buas page about Transmission Control Protocol
TCP tutorial
Linktionary on TCP segments
TCP Sliding Window simulation animated (ns2)
Multipath TCP
TCP Technology and Testing methodologies

369

Chapter 65

Transmission medium
This article is about transmission of signals. For biological 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 usually 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 substance is not required for electromagnetic waves to propagate, such waves are usually aected by the transmission Coaxial cable, one example of a transmission medium
media they pass through, for instance by absorption or by
reection 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 physguide waves. Thus, an optical ber 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
can become conductive for electrical conduction through
guide the transmission of networks.
the presence of free electrons, holes, or ions.
A transmission medium can be classied as a:
Transmission and reception of data is performed in four
steps.
Linear medium, if dierent waves at any particular
point in the medium can be superposed;
1. The data is coded as binary numbers at the sender
end
Bounded medium, if it is nite in extent, otherwise
unbounded medium;
2. A carrier signal is modulated as specied by the binary representation of the data
Uniform medium or homogeneous medium, if its
physical properties are unchanged at dierent
3. At the receiving end, the incoming signal is demodpoints;
ulated into the respective binary numbers
Isotropic medium, if its physical properties are the
4. Decoding of the binary numbers is performed[1]
same in dierent directions.
Electromagnetic radiation can be transmitted through an
optical medium, such as optical ber, or through twisted
pair wires, coaxial cable, or dielectric-slab waveguides. It
may also pass through any physical material that is transparent to the specic wavelength, such as water, air, glass,
or concrete. Sound is, by denition, the vibration of matter, so it requires a physical medium for transmission,
as do other kinds of mechanical waves and heat energy.
Historically, science incorporated various aether theories

65.1 Telecommunications
A physical medium in data communications is the transmission path over which a signal propagates.
Many transmission media are used as communications
channel.
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
ed as one of the following:
A transmission may be simplex, half-duplex, or fullduplex.
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 operation, both stations may transmit simultaneously. In the
are achieved by means of an antenna.
latter case, the medium is carrying signals in both directions 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
Unguided
wire, organized into four pairs.[2]
Another example of a physical medium is optical ber,
which has emerged as the most commonly used transmission medium for long-distance communications. Optical ber is a thin strand of glass that guides light along
its length. Four major factors favor optical ber over
copper- data rates, distance, installation, and costs. Optical ber can carry huge amounts of data compared to
copper. It can be run for hundreds of miles without the
need for signal repeaters, in turn, reducing maintenance
costs and improving the reliability of the communication
system because repeaters are a common source of network failures. Glass is lighter than copper allowing for
less need for specialized heavy-lifting equipment when
installing long-distance optical ber. Optical ber for indoor applications cost approximately a dollar a foot, the
same as copper.[3]
Multimode and single mode are two types of commonly
used optical ber. Multimode ber uses LEDs as the
light source and can carry signals over shorter distances,
about 2 kilometers. Single mode can carry signals over
distances of tens of miles.
Wireless media may carry surface waves or skywaves, either longitudinally or transversely, and are so classied.
In both communications, communication is in the form
of electromagnetic waves. With guided transmission media, the waves are guided along a physical path; examples of guided media include phone lines, twisted pair
cables, coaxial cables, and optical bers. Unguided transmission media are methods that allow the transmission of
data without the use of physical means to dene the path
it takes. Examples of this include microwave, radio or
infrared. Unguided media provide a means for transmitting electromagnetic waves but do not guide them; examples are propagation through air, vacuum and seawater.
The term direct link is used to refer to the transmission
path between two devices in which signals propagate directly from transmitters to receivers with no intermediate devices, other than ampliers or repeaters used to increase signal strength. This term can apply to both guided
and unguided media.

Guided Media:
Un-shielded Twisted Pair (UTP)
Shielded Twisted Pair
Coaxial Cable
Optical Fiber
Unguided Media: Transmission media then looking at
analysis of using them unguided transmission media is
data signals that ow through the air. They are not guided
or bound to a channel to follow. Following are unguided
media used for data communication:
Radio Transmission
Microwave

65.2 See also


Vacuum permittivity
Transmission (telecommunications)
Excitable medium
Duplex (telecommunications)
Luminiferous aether

65.3 References
[1] Agrawal, Manish (2010). Business Data Communications.
John Wiley & Sons, Inc. p. 54. ISBN 0470483369.
[2] Agrawal, Manish (2010). Business Data Communications.
John Wiley & Sons, Inc. p. 37. ISBN 0470483369.
[3] Agrawal, Manish (2010). Business Data Communications.
John Wiley & Sons, Inc. pp. 4143. ISBN 0470483369.

Chapter 66

Transport layer
In computer networking, the transport layer is a conceptual division of methods in the layered architecture
of protocols in the network stack in the Internet Protocol
Suite and the Open Systems Interconnection (OSI). The
protocols of the layer provide host-to-host communication services for applications.[1] It provides services such
as connection-oriented data stream support, reliability,
ow control, and multiplexing.
The details of implementation and semantics of the
Transport Layer of the TCP/IP model (RFC 1122),[2]
which is the foundation of the Internet, and the Open Systems Interconnection (OSI) model of general networking,
are dierent. In the OSI model the transport layer is most
often referred to as Layer 4 or L4, while numbered layers
are not used in TCP/IP.
The best-known transport protocol of TCP/IP is the
Transmission Control Protocol (TCP), and lent its name
to the title of the entire suite. It is used for connectionoriented transmissions, whereas the connectionless User
Datagram Protocol (UDP) is used for simpler messaging
transmissions. TCP is the more complex protocol, due
to its stateful design incorporating reliable transmission
and data stream services. Other prominent protocols in
this group are the Datagram Congestion Control Protocol (DCCP) and the Stream Control Transmission Protocol (SCTP).

66.1 Services
Transport layer services are conveyed to an application
via a programming interface to the transport layer protocols. The services may include the following features:
Connection-oriented communication: It is normally
easier for an application to interpret a connection
as a data stream rather than having to deal with
the underlying connection-less models, such as the
datagram model of the User Datagram Protocol
(UDP) and of the Internet Protocol (IP).
Same order delivery: The network layer doesn't generally guarantee that packets of data will arrive in
the same order that they were sent, but often this is
372

a desirable feature. This is usually done through the


use of segment numbering, with the receiver passing them to the application in order. This can cause
head-of-line blocking.
Reliability: Packets may be lost during transport
due to network congestion and errors. By means
of an error detection code, such as a checksum, the
transport protocol may check that the data is not
corrupted, and verify correct receipt by sending an
ACK or NACK message to the sender. Automatic
repeat request schemes may be used to retransmit
lost or corrupted data.
Flow control: The rate of data transmission between
two nodes must sometimes be managed to prevent
a fast sender from transmitting more data than can
be supported by the receiving data buer, causing
a buer overrun. This can also be used to improve
eciency by reducing buer underrun.
Congestion avoidance: Congestion control can control trac entry into a telecommunications network,
so as to avoid congestive collapse by attempting to
avoid oversubscription of any of the processing or
link capabilities of the intermediate nodes and networks and taking resource reducing steps, such as
reducing the rate of sending packets. For example,
automatic repeat requests may keep the network in
a congested state; this situation can be avoided by
adding congestion avoidance to the ow control, including slow-start. This keeps the bandwidth consumption at a low level in the beginning of the transmission, or after packet retransmission.
Multiplexing: Ports can provide multiple endpoints
on a single node. For example, the name on a postal
address is a kind of multiplexing, and distinguishes
between dierent recipients of the same location.
Computer applications will each listen for information on their own ports, which enables the use of
more than one network service at the same time. It
is part of the transport layer in the TCP/IP model,
but of the session layer in the OSI model.

66.3. PROTOCOLS

66.2 Analysis

373

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.

The transport layer is responsible for delivering data to


the appropriate application process on the host computers. This involves statistical multiplexing of data from
dierent application processes, i.e. forming data packets, and adding source and destination port numbers in
the header of each transport layer data packet. Together
with the source and destination IP address, the port numbers constitutes a network socket, i.e. an identication
address of the process-to-process communication. In the
OSI model, this function is supported by the session layer.
Some transport layer protocols, for example TCP, but not
UDP, support virtual circuits, i.e. provide connection oriented communication over an underlying packet oriented
datagram network. A byte-stream is delivered while hiding the packet mode communication for the application
processes. This involves connection establishment, dividing of the data stream into packets called segments, segment numbering and reordering of out-of order data.
Finally, some transport layer protocols, for example TCP,
but not UDP, provide end-to-end reliable communication, i.e. error recovery by means of error detecting code
and automatic repeat request (ARQ) protocol. The ARQ
protocol also provides ow control, which may be combined with congestion avoidance.
UDP is a very simple protocol, and does not provide
virtual circuits, nor reliable communication, delegating
these functions to the application program. UDP packets
are called datagrams, rather than segments.
TCP is used for many protocols, including HTTP web
browsing and email transfer. UDP may be used for
multicasting and broadcasting, since retransmissions are
not possible to a large amount of hosts. UDP typically
gives higher throughput and shorter latency, and is therefore often used for real-time multimedia communication
where packet loss occasionally can be accepted, for example IP-TV and IP-telephony, and for online computer
games.
Many non-IP-based networks, such as X.25, Frame Relay
and ATM, implement the connection-oriented communication at the network or data link layer rather than the
transport layer. In X.25, in telephone network modems
and in wireless communication systems, reliable node-tonode communication is implemented at lower protocol
layers.

ATP, AppleTalk Transaction Protocol


CUDP, Cyclic UDP
DCCP, Datagram Congestion Control Protocol
FCP, Fibre Channel Protocol
IL, IL Protocol
MPTCP, Multipath TCP
RDP, Reliable Datagram Protocol
RUDP, Reliable User Datagram Protocol
SCTP, Stream Control Transmission Protocol
SPX, Sequenced Packet Exchange
SST, Structured Stream Transport
TCP, Transmission Control Protocol
UDP, User Datagram Protocol
UDP-Lite
TP, Micro Transport Protocol

66.4 Comparison of
layer protocols

transport

66.5 Comparison of OSI transport


protocols
ISO/IEC 8073/ITU-T Recommendation X.224, Information Technology - Open Systems Interconnection Protocol for providing the connection-mode transport
service, denes ve classes of connection-mode transport protocols designated class 0 (TP0) to class 4 (TP4).
Class 0 contains no error recovery, and was designed for
use on network layers that provide error-free connections.
Class 4 is closest to TCP, although TCP contains functions, such as the graceful close, which OSI assigns to the
session layer. All OSI connection-mode protocol classes
provide expedited data and preservation of record boundaries. Detailed characteristics of the classes are shown in
the following table:[3]

The OSI connection-mode transport layer protocol specication denes ve classes of transport protocols: TP0,
providing the least error recovery, to TP4, which is de- There is also a connectionless transport protocol, specied by ISO/IEC 8602/ITU-T Recommendation X.234.[4]
signed for less reliable networks.

374

66.6 References
[1] RFC 1122, 1.1.3.
[2] RFC 1122, Requirements for Internet Hosts Communication 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 66. TRANSPORT LAYER

Chapter 67

Tunneling protocol
In computer networks, a tunneling protocol allows a network user to access or provide a network service that the
underlying network does not support or provide directly.
One important use of a tunneling protocol is to allow a
foreign protocol to run over a network that does not support that particular protocol; for example, running IPv6
over IPv4. Another important use is to provide services
that are impractical or unsafe to be oered using only
the underlying network services; for example, providing
a corporate network address to a remote user whose physical network address is not part of the corporate network.
Because tunneling involves repackaging the trac data
into a dierent form, perhaps with encryption as standard, a third use is to hide the nature of the trac that is
run through the tunnels.

protocol chosen to determine the level of security.


SSH uses port 22 to enable data encryption of payloads
being transmitted over a public network (such as the Internet) connection, thereby providing VPN functionality.
IPsec has an end-to-end Transport Mode, but can also
operate in a tunneling mode through a trusted security
gateway.

67.2 Secure Shell tunneling

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 protocol.

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 payA Secure Shell (SSH) tunnel consists of an encrypted tunload and delivery protocol sets.
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 trafGeneric Routing Encapsulation (GRE), a protocol run- c over a network through an encrypted channel. For
ning over IP (IP Protocol Number 47), often serves to example, Microsoft Windows machines can share les
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 Midresses. In this case, the delivery and payload protocols crosoft Windows le-system remotely through the Interare the same, but the payload addresses are incompatible net, someone snooping on the connection could see transwith those of the delivery network.
ferred les. To mount the Windows le-system securely,
It is also possible to establish a connection using the data one can establish a SSH tunnel that routes all SMB traflink layer. The Layer 2 Tunneling Protocol (L2TP) al- c to the remote leserver through an encrypted channel.
lows the transmission of frames between two nodes. A Even though the SMB protocol itself contains no encryptunnel 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 congure their applications to use their local
SOCKS proxy server. This gives more exibility than
creating an SSH tunnel to a single port as previously described. SOCKS can free the user from the limitations of
connecting only to a predened remote port and server.
If an application doesn't support SOCKS, a proxier can
be used to redirect the application to the local SOCKS
proxy server. Some proxiers, such as Proxycap, support
SSH directly, thus avoiding the need for an SSH client.

Remote port forwarding with ssh via command line. The ssh
command has to be executed on the blue computer.

In recent versions of OpenSSH it is even allowed to create


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 connection and allowing normal network management and
routing to be used, and when used on routers, allowing entire subnetworks trac being tunneled. A pair of tap virtual interfaces function like an Ethernet cable connecting
both ends of the connection and can join kernel bridges.

67.3 Circumventing rewall policy

Local port forwarding with ssh via PuTTY. PuTTY has to be


executed on the blue computer.

oers security.
To set up a local SSH tunnel, one congures an SSH client
to forward a specied local port (green in the images) to a
port (purple in the images) on the remote machine (yellow
in the image). Once the SSH tunnel has been established,
the user can connect to the specied local port (green) to
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 rewalls that prohibit certain Internet services so long as a site allows
outgoing connections. For example, an organization may
prohibit a user from accessing Internet web pages (port
80) directly without passing through the organizations
proxy lter (which provides the organization with a means
of monitoring and controlling what the user sees through
the web). But users may not wish to have their web trac
monitored or blocked by the organizations proxy lter. If
users can connect to an external SSH server, they can create an SSH tunnel to forward a given port on their local

Users can also use tunneling to sneak through a rewall, using a protocol that the rewall would normally
block, but wrapped inside a protocol that the rewall
does not block, such as HTTP. If the rewall policy does
not specically exclude this kind of wrapping, this trick
can function to get around the intended rewall policy (or
any set of interlocked rewall policies).
Another HTTP-based tunneling method uses the HTTP
CONNECT method/command. A client issues the HTTP
CONNECT command to a HTTP proxy. The proxy
then makes a TCP connection to a particular server:
port, and relays data between that server:port and the
client connection.[1] Because this creates a security hole,
CONNECT-capable HTTP proxies commonly restrict
access to the CONNECT method. The proxy allows connections only to specic ports, such as 443 for HTTPS.[2]

67.4 See also


HTTP tunnel
ICMP tunnel
NVGRE
Pseudo-wire
Tunnel broker
Virtual Extensible LAN (VXLAN)

67.6. EXTERNAL LINKS


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
congurations allow arbitrary TCP connections. USCERT. 2002-05-17. Retrieved 2007-05-10.

67.6 External links


PortFusion distributed reverse / forward, local forward proxy and tunneling solution for all TCP protocols
SSH VPN tunnel, see the SSH-BASED VIRTUAL
PRIVATE NETWORKS section
BarbaTunnel Project - Free open source implementation of HTTP-Tunnel and UDP-Tunnel on Windows
This article is based on material taken from the Free Online Dictionary of Computing prior to 1 November 2008
and incorporated under the relicensing terms of the
GFDL, version 1.3 or later.

377

Chapter 68

User Datagram Protocol


The User Datagram Protocol (UDP) is one of the core
members of the Internet protocol suite. The protocol was
designed by David P. Reed in 1980 and formally dened
in RFC 768. With UDP, computer applications can send
messages, in this case referred to as datagrams, to other
hosts on an Internet Protocol (IP) network. Prior communications are not required to set up transmission channels
or data paths.
UDP uses a simple connectionless transmission model
with a minimum of protocol mechanism. UDP provides
checksums for data integrity, and port numbers for addressing dierent functions at the source and destination
of the datagram. It has no handshaking dialogues, and
thus exposes the users program to any unreliability of
the underlying network and so there is no guarantee of
delivery, ordering, or duplicate protection. If error correction facilities are needed at the network interface level,
an application may use the Transmission Control Protocol
(TCP) or Stream Control Transmission Protocol (SCTP)
which are designed for this purpose.

It provides datagrams, suitable for modeling other


protocols such as in IP tunneling or Remote Procedure Call and the Network File System.
It is simple, suitable for bootstrapping or other purposes without a full protocol stack, such as the
DHCP and Trivial File Transfer Protocol.
It is stateless, suitable for very large numbers of
clients, such as in streaming media applications for
example IPTV
The lack of retransmission delays makes it suitable
for real-time applications such as Voice over IP,
online games, and many protocols built on top of
the Real Time Streaming Protocol.
Works well in unidirectional communication, suitable for broadcast information such as in many kinds
of service discovery and shared information such as
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-tohost 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 identied 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 numas Unreliable Datagram Protocol.[2]
bers) and integrity verication (via checksum) of the
A number of UDPs attributes make it especially suited header and payload.[3] If transmission reliability is desired, it must be implemented in the users application.
for certain applications.
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 sertem 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 dened in
are dynamic ports that are not ocially designated for RFC 768:
any specic service, and may be used for any purpose.
They also are used as ephemeral ports, from which softChecksum is the 16-bit ones complement of the
ware running on the host may randomly choose a port in
[4]
ones complement sum of a pseudo header of inorder to dene itself. In eect, they are used as tempoformation from the IP header, the UDP header,
rary ports primarily by clients when communicating with
and the data, padded with zero octets at the
servers.
end (if necessary) to make a multiple of two
octets.[7]

68.3 Packet structure


The UDP header consists of 4 elds, each of which is 2
bytes (16 bits).[1] The use of the elds Checksum and
Source port is optional in IPv4 (pink background in table). In IPv6 only the source port is optional (see below).

In other words, all 16-bit words are summed using ones


complement arithmetic. Add the 16-bit values up. Each
time a carry-out (17th bit) is produced, swing that bit
around and add it back into the least signicant bit.[8] The
sum is then ones complemented to yield the value of the
UDP checksum eld.

If the checksum calculation results in the value zero (all


16 bits 0) it should be sent as the ones complement (all
Source port number This eld identies the senders 1s).
port when meaningful and should be assumed to be
the port to reply to if needed. If not used, then it The dierence 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 number. If the source host is the server, the port number
68.4.1 IPv4 Pseudo Header
is likely to be a well-known port number.[4]
Destination port number This eld identies the receivers port and is required. Similar to source port
number, if the client is the destination host then the
port number will likely be an ephemeral port number and if the destination host is the server then
the port number will likely be a well-known port
number.[4]

When UDP runs over IPv4, the checksum is computed


using a pseudo header[9] that contains some of the
same information from the real IPv4 header. The pseudo
header is not the real IPv4 header used to send an IP
packet, it is used only for the checksum calculation.

The source and destination addresses are those in the IPv4


header. The protocol is that for UDP (see List of IP protocol numbers): 17 (0x11). The UDP length eld is the
length of the UDP header and data. The eld data stands
Length A eld that species 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 eld 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
When UDP runs over IPv6, the checksum is mandatory.
byte IP header).[4]
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 specAny transport or other upper-layer protocol that
ies that the length eld is set to zero if the length
includes the addresses from the IP header in
of the UDP header plus UDP data is greater than
its checksum computation must be modied for
65,535.
use over IPv6 to include the 128-bit IPv6 addresses.[6]
Checksum The checksum eld may be used for errorchecking of the header and data. This eld is optional in IPv4, and mandatory in IPv6.[6] The eld 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 destination address is the nal destination; if the IPv6 packet
does not contain a Routing header, that will be the destination address in the IPv6 header; otherwise, at the originating node, it will be the address in the last element of
the Routing header, and, at the receiving node, it will be
the destination address in the IPv6 header. The value of
the Next Header eld is the protocol value for UDP: 17.
The UDP length eld is the length of the UDP header and
data.

and business applications are important to businesses, developing quality of service solutions is seen as crucial by
some.[10]
Some VPN systems such as OpenVPN may use UDP
while implementing reliable connections and error checking at the application level.

68.7 Comparison of UDP and TCP


See also: Transport layer

68.5 Reliability and


control solutions

congestion

Transmission Control Protocol is a connection-oriented


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 conwilling to accept some loss, errors or duplication. Some nection.
applications, such as TFTP, may add rudimentary relia Reliable Strictly only at transport layer, TCP manbility mechanisms into the application layer as needed.[4]
ages message acknowledgment, retransmission and
Most often, UDP applications do not employ reliabiltimeout. 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, theres 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 packthe connection is dropped. (This reliability however
ets is not usually a fatal problem. If an application redoes not cover application layer, at which a separate
quires a high degree of reliability, a protocol such as the
acknowledgement ow control is still necessary)
Transmission Control Protocol may be used instead.
Ordered If two messages are sent over a connecIn VoIP, for example, latency and jitter are the primary
tion in sequence, the rst message will reach the reconcerns. The use of TCP would cause jitter if any packceiving application rst. When data segments arrive
ets were lost as TCP does not provide subsequent data
in the wrong order, TCP buers delay the out-ofto the application while it is requesting re-sending of the
order data until all data can be properly re-ordered
missing data. If using UDP the end user applications
and delivered to the application.
must provide any necessary handshaking such as real time
conrmation that the message has been received.

68.6 Applications

Heavyweight TCP requires three packets to set up


a socket connection, before any user data can be
sent. TCP handles reliability and congestion control.

Streaming Data is read as a byte stream, no distinguishing indications are transmitted to signal mesNumerous key Internet applications use UDP, including:
sage (segment) boundaries.
the Domain Name System (DNS), where queries must be
fast and only consist of a single request followed by a single 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 Conguration Protocol (DHCP). set up a dedicated end-to-end connection. Communication is achieved by transmitting information in one diVoice and video trac 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 acknowlnding that a recent increase in UDP trac from these
edgment, retransmission, or timeout.
real-time applications is hindering the performance of ap Not ordered If two messages are sent to the same
plications using TCP, such as point of sale, accounting,
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


Lightweight There is no ordering of messages, no
tracking connections, etc. It is a small transport layer
designed on top of IP.
Datagrams Packets are sent individually and are
checked for integrity only if they arrive. Packets
have denite boundaries which are honored upon
receipt, meaning a read operation at the receiver
socket will yield an entire message as it was originally sent.

381

[7] Postel, J. (August 1980). RFC 768: User Datagram Protocol. Internet Engineering Task Force".
[8] Compute 16-bit Ones Complement Sum. http://
mathforum.org/. John. 2002-03-20. Retrieved 2014-1105. External link in |website= (help)
[9] RFC 768, p2
[10] The impact of UDP on Data Applications. Networkperformancedaily.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 RFC 2460 Internet Protocol, Version 6 (IPv6)
cast - sent packets can be addressed to be receivable
Specication
by all devices on the subnet.
RFC 2675 IPv6 Jumbograms

68.8 See also


List of TCP and UDP port numbers
Reliable User Datagram Protocol (RUDP)
Comparison of transport layer protocols
UDP ood attack

RFC 4113 Management Information Base for the


UDP
RFC 5405 Unicast UDP Usage Guidelines for Application Designers

68.10 External links

UDP Data Transport

IANA Port Assignments

UDP-Lite a variant that will deliver packets even


if they are malformed

The Trouble with UDP Scanning (PDF)

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] content@ipv6.com.
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 Company Limited.
[5] RFC 2675
[6] Deering S. & Hinden R. (December 1998). RFC 2460:
Internet Protocol, Version 6 (IPv6) Specication. Internet
Engineering Task Force..

Breakdown of UDP frame

Chapter 69

World Wide Web Consortium


WWWC redirects here. For the radio station, see ated regional oces around the world. As of SeptemWWWC (AM).
ber 2009, it had eighteen World Oces covering Australia, 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 mamaintain full-time sta 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, develops software and serves as an open forum for discussion
about the Web.

69.2 Specication maturation

Sometimes, when a specication becomes too large, it is


split into independent modules which can mature at their
own pace. Subsequent editions of a module or speciThe World Wide Web Consortium (W3C) was founded cation are known as levels and are denoted by the rst
by Tim Berners-Lee after he left the European Organi- integer in the title (e.g. CSS3 = Level 3). Subsequent rezation 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 dened within
support from the European Commission and the De- the W3C process document, outlining four maturity levfense 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.

69.1 History

The organization tries to foster compatibility and agreement among industry members in the adoption of new
standards dened by the W3C. Incompatible versions of
HTML are oered by dierent vendors, causing inconsistency in how web pages are displayed. The consortium
tries to get all those vendors to implement a set of core
principles and components which are chosen by the consortium.

69.2.1 Working draft (WD)

After enough content has been gathered from 'editor


drafts and discussion, it may be published as a working draft (WD) for review by the community. A WD
document is the rst form of a standard that is publicly
It was originally intended that CERN host the European available. Commentary by virtually anyone is accepted,
to action on any
branch of W3C; however, CERN wished to focus on though no promises are made with regard
[5]
particular
element
commented
upon.
particle physics, not information technology. In April
1995, the French Institute for Research in Computer Sci- At this stage, the standard document may have signicant
ence and Automation (INRIA) became the European host dierences from its nal form. As such, anyone who imof W3C, with Keio University becoming the Japanese plements WD standards should be ready to signicantly
branch in September 1996. Starting in 1997, W3C cre- modify their implementations as the standard matures.[5]
382

69.3. ADMINISTRATION

69.2.2

Candidate recommendation (CR)

383
a program, owing to the risk of creating more drawbacks
for the community than benets.[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 satised that the standard
69.3 Administration
meets its goal. The purpose of the CR is to elicit aid from
the development community as to how implementable the
The Consortium is jointly administered by the MIT
standard is.[5]
Computer Science and Articial Intelligence LaboraThe standard document may change further, but at this tory (CSAIL, located in Stata Center[6] ) in the USA,
point, signicant 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 Oces in sixteen regions around the world. The W3C Oces work with their
69.2.3 Proposed recommendation (PR)
regional web communities to promote W3C technologies
in local languages, broaden the W3Cs geographical base
A proposed recommendation is the version of a standard and encourage international participation in W3C Activthat has passed the prior two levels. The users of the stan- ities.
dard provide input. At this stage, the document is submitThe W3C has a sta team of 7080 worldwide as of
ted to the W3C Advisory Council for nal approval.[5]
2015.[8] W3C is run by a management team which alloWhile this step is important, it rarely causes any signi- cates resources and designs strategy, led by CEO Jerey
cant changes to a standard as it passes to the next phase.[5] Jae (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 strategy and legal matters and helps resolve conicts.[10] The
nal that any further feedback must be provided.
majority of standardization work is done by external experts in the W3Cs 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
testing, under both theoretical and practical conditions.
The standard is now endorsed by the W3C, indicating
its readiness for deployment to the public, and encouraging more widespread support among implementors and
authors.[5]
Recommendations can sometimes be implemented incorrectly, partially, or not at all, but many standards dene two or more levels of conformance that developers
must follow if they wish to label their product as W3Ccompliant.[5]

69.4 Membership
The Consortium is governed by its membership. The list
of members is available to the public.[2] Members include
businesses, nonprot organizations, universities, governmental entities, and individuals.[11]
Membership requirements are transparent except for one
requirement: An application for membership must be reviewed and approved by the W3C. Many guidelines and
requirements are stated in detail, but there is no nal
guideline about the process or standards by which membership might be nally approved or denied.[12]

The cost of membership is given on a sliding scale, depending on the character of the organization applying and
the country in which it is located.[13] Countries are catA recommendation may be updated or extended by egorized by the World Banks most recent grouping by
separately-published, non-technical errata or editor drafts GNI (Gross National Income) per capita.[14]
until sucient substantial edits accumulate for producing a new edition or level of the recommendation. Additionally, the W3C publishes various kinds of informative
69.5 Criticism
notes which are to be used as references.[5]

69.2.5

Later revisions

In 2012 and 2013, the W3C started considering adding


DRM-specic 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 certication program. The W3C distinguished websites built using only W3C stanhas decided, for now, that it is not suitable to start such dards from those requiring proprietary plug-ins like

69.2.6

Certication

384

CHAPTER 69. WORLD WIDE WEB CONSORTIUM

Flash.[15][16][17][18][19]

69.6 Standards
W3C/IETF standards (over Internet protocol suite):
CGI

69.7 References
[1] W3C Invites Chinese Web Developers, Industry,
Academia to Assume Greater Role in Global Web Innovation. W3.org. 2013-01-20. Retrieved 2013-11-30.
[2] World Wide Web Consortium current Members.
World Wide Web Consortium. 29 March 2012. Retrieved
2 June 2016.
[3] W3C (September 2009). World Wide Web Consortium
(W3C) About the Consortium. Retrieved 8 September
2009.

CSS
DOM
GRDDL
HTML
MathML

[4] Jacobs, Ian (June 2009). W3C Oces. Retrieved 14


September 2009.
[5] World Wide Web Consortium | Development Process.
W3.org. 2005-04-12. Retrieved 2012-04-03.
[6] W3C Contact. W3.org. 2006-10-31. Retrieved 201204-03.

OWL
P3P

[7] Facts About W3C. W3C. Retrieved 7 November 2015.

PROV

[8] W3C people list. W3.org. Retrieved 2012-04-03.

RDF

[9] W3C pulls former Novell CTO for CEO spot.


world.com. 2010-03-08. Retrieved 2012-04-03.

[20]

SISR
SKOS
SMIL
SOAP

It-

[10] The World Wide Web Consortium: Building a Better Internet. Mays Digital. Retrieved 7 November 2015.
[11] W3C (2010). Membership FAQ W3C. Retrieved 7
August 2010.

SPARQL

[12] Jacobs, Ian (2008). Join W3C. Retrieved 14 September


2008.

SRGS

[13] W3C Membership Fee Calculator

SSML

[14] World
Bank
Country
Classication.
Web.worldbank.org. Retrieved 3 July 2010.

SVG
VoiceXML
XHTML
XHTML+Voice
XML
XML Events
XML Information Set
XML Schema
XPath
XQuery
XSL-FO
XSLT
WCAG
WSDL
XForms

[15] Cory Doctorow (2013-03-12). What I wish Tim


Berners-Lee understood about DRM. Technology blog
at guardian.co.uk. Archived from the original on 201304-06. Retrieved 2013-03-20.
[16] Glyn Moody (2013-02-13). BBC Attacks the Open
Web, GNU/Linux in Danger. Open Enterprise blog at
ComputerworldUK.com. Archived from the original on
2013-04-06. Retrieved 2013-03-20.
[17] Scott Gilbertson (2013-02-12). DRM for the Web? Say
It Ain't So. Webmonkey. Cond Nast. Archived from
the original on 2013-04-06. Retrieved 2013-03-21.
[18] Tell W3C: We don't want the Hollyweb. Defective
by Design. Free Software Foundation. March 2013.
Archived from the original on 2013-04-06. Retrieved
2013-03-25.
[19] Danny O'Brien (October 2013). Lowering Your Standards: DRM and the Future of the W3C. Electronic
Frontier Foundation. Retrieved 2013-10-03.
[20] Groth, Paul; Moreau, Luc (April 30, 2013). PROVOverview: An Overview of the PROV Family of Documents. World Wide Web Consortium. Retrieved April
8, 2016.

69.8. EXTERNAL LINKS

69.8 External links


W3C homepage (with links to local Oces, and
many others)
About the World Wide Web Consortium
W3C Technical Reports and Publications
W3C Process Document
W3C History
How to read W3C specs

385

Chapter 70

X.25
Study Group VII based upon a number of emerging data
network projects.[8] Various updates and additions were
worked into the standard, eventually recorded in the ITU
series of technical books describing the telecommunication systems. These books were published every fourth
year with dierent-colored covers. The X.25 specication is only part of the larger set of X-Series[9] specications on public data networks.[10]

X.25 NETWORK
PSE

PSE

DTE

DCE
DTE

DCE

DCE

PSE

PSE

DCE

The public data network was the common name given to


the international collection of X.25 providers. Their combined network had large global coverage during the 1980s
and into the 1990s.[11]

DTE
PAD
DTE

Publicly accessible X.25 networks (Compuserve,


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 oered
was popular during the 1980s with telecommunications by national telephone companies.[12] Most systems that
companies and in nancial transaction systems such as required X.25 now use TCP/IP, however it is possible to
automated teller machines. X.25 was originally dened 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 nalized 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
X.25 network diagram

While X.25 has, to a large extent, been replaced by


less complex protocols, especially the Internet protocol
(IP), the service is still used (e.g. as of 2012 in credit
card payment industry) and available in niche and legacy
applications.[3]

70.1 History

on an X.25 protocol base. In some countries, like the


Netherlands or Germany, it is possible to use a stripped
version of X.25 via the D-channel of an ISDN2 (or
ISDN BRI) connection for low volume applications such
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 aeronautical business (especially in the Asian region) even though
a transition to modern protocols like X.400 is without
option as X.25 hardware becomes increasingly rare and
costly. As recently as March 2006, the United States National Airspace Data Interchange Network has used X.25
to interconnect remote airelds with Air Route Trac
Control Centers.

X.25 is one of the oldest packet-switched services available. It was developed before the OSI Reference
Model.[4] The protocol suite is designed as three conceptual layers, which correspond closely to the lower three
layers of the seven-layer OSI model.[5] It also supports
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
Known as Minitel it was based on Videotex, itself running on X.25. In 2002, Minitel had about 9 million users,
and in 2011, it still accounted for about 2 million users in
France when France Tlcom announced it would completely shut down the service by 30 June 2012.[14] As
planned, service was terminated 30 June 2012. There
were 800 000 terminals still in operation at the time.[15]

70.2 Architecture
The general concept of X.25 was to create a universal
and global packet-switched network. Much of the X.25
system is a description of the rigorous error correction
needed to achieve this, as well as more ecient sharing
of capital-intensive physical resources.
The X.25 specication denes only the interface between
a subscriber (DTE) and an X.25 network (DCE). X.75,
a very similar protocol to X.25, denes the interface between two X.25 networks to allow connections to traverse
two or more networks. X.25 does not specify how the
network operates internally many X.25 network implementations used something very similar to X.25 or X.75
internally, but others used quite dierent protocols internally. The ISO equivalent protocol to X.25, ISO 8208, is
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 PacketLayer Protocol, ISO 8208 permits operation over additional networks such as ISO 8802 LLC2 (ISO LAN) and
the OSI data link layer.[16]
X.25 originally dened three basic protocol levels or architectural layers. In the original specications these
were referred to as levels and also had a level number,
whereas all ITU-T X.25 recommendations and ISO 8208
standards released after 1984 refer to them as layers.[17]
The layer numbers were dropped to avoid confusion with
the OSI Model layers.[1]
Physical layer: This layer species the physical,
electrical, functional and procedural characteristics
to control the physical link between a DTE and a
DCE. Common implementations use X.21, EIA232, EIA-449 or other serial protocols.
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 implementation, the Link Access Procedure, Balanced (LAPB)
is a data link protocol that manages a communication session and controls the packet framing. It is a
bit-oriented protocol that provides error correction
and orderly delivery.

387
The X.25 model was based on the traditional telephony
concept of establishing reliable circuits through a shared
network, but using software to create "virtual calls"
through the network. These calls interconnect data terminal equipment (DTE) providing endpoints to users,
which looked like point-to-point connections. Each endpoint can establish many separate virtual calls to dierent
endpoints.
For a brief period, the specication also included a connectionless datagram service, but this was dropped in the
next revision. The fast select with restricted response
facility is intermediate between full call establishment
and connectionless communication. It is widely used in
query-response transaction applications involving a single
request and response limited to 128 bytes of data carried
each way. The data is carried in an extended call request
packet and the response is carried in an extended eld of
the call reject packet, with a connection never being fully
established.
Closely related to the X.25 protocol are the protocols to
connect asynchronous devices (such as dumb terminals
and printers) to an X.25 network: X.3, X.28 and X.29.
This functionality was performed using a Packet Assembler/Disassembler or PAD (also known as a Triple-X device, referring to the three protocols used).

70.2.1 Relation to the OSI Reference


Model
Although X.25 predates the OSI Reference Model
(OSIRM), the physical Layer of the OSI model corresponds to the X.25 physical layer, the data link layer to
the X.25 data link layer, and the network layer to the
X.25 packet layer.[10] The X.25 data link layer, LAPB,
provides a reliable data path across a data link (or multiple parallel data links, multilink) which may not be reliable itself. The X.25 packet layer provides the virtual call
mechanisms, running over X.25 LAPB. The packet layer
includes mechanisms to maintain virtual calls and to signal data errors in the event that the data link layer cannot
recover from data transmission errors. All but the earliest versions of X.25 include facilities[18] which provide
for OSI network layer Addressing (NSAP addressing, see
below).[19]

70.2.2 User device support

X.25 was developed in the era of computer terminals connecting to host computers, although it also can be used
for communications between computers. Instead of dialing directly into the host computer which would
require the host to have its own pool of modems and
Packet layer: This layer dened a packet-layer pro- phone lines, and require non-local callers to make longtocol 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 networks 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 ow in calls, as well as
clearing calls that have gone into unrecoverable states:
Level 3 Reset packets, which re-initializes the ow
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 circuits

sembly/Disassembly facility), a gateway device connecting modems and serial lines to the X.25 link as dened
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 phonenumber-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
places an X.25 call to the host, establishing a virtual call.
Note that X.25 provides for virtual calls, so appears to be
a circuit switched network, even though in fact the data itself is packet switched internally, similar to the way TCP
provides connections even though the underlying data is
packet switched. Two X.25 hosts could, of course, call
one another directly; no PAD is involved in this case. In
theory, it doesn't matter whether the X.25 caller and X.25
destination are both connected to the same carrier, but in
practice it was not always possible to make calls from one
carrier to another.
For the purpose of ow-control, a sliding window protocol is used with the default window size of 2. The acknowledgements may have either local or end to end signicance. A D bit (Data Delivery bit) in each data packet
indicates if the sender requires end to end acknowledgement. When D=1, it means that the acknowledgement
has end to end signicance and must take place only after the remote DTE has acknowledged receipt of the data.
When D=0, the network is permitted (but not required) to
acknowledge before the remote DTE has acknowledged
or even received the data.

An X.25 Modem once used to connect to the German Datex-P


network

X.25 supports two types of virtual circuits, virtual calls


(VC) and permanent virtual circuits (PVC). Virtual calls
are established on an as-needed basis. For example, a
VC is established when a call is placed and torn down after the call is complete. VCs are established through a
call establishment and clearing procedure. On the other
hand, permanent virtual circuits are precongured into
the network.[20] PVCs are seldom torn down and thus provide a dedicated connection between end points.

VC may be established using X.121 addresses. The


X.121 address consists of a three-digit data country code
(DCC) plus a network digit, together forming the fourdigit data network identication code (DNIC), followed
by the national terminal number (NTN) of at most ten
digits. Note the use of a single network digit, seemingly
allowing for only 10 network carriers per country, but
some countries are assigned more than one DCC to avoid
this limitation. Networks often used fewer than the full
NTN digits for routing, and made the spare digits available to the subscriber (sometimes called the sub-address)
While the PAD function dened by X.28 and X.29 where they could be used to identify applications or for
specically 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 specication, and this enabled X.25 to betas 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


not required to make use of NSAP addressing, but, to
support OSI CONS, were required to carry the NSAP
addresses and other ITU-T specied DTE facilities transparently from DTE to DTE.[22] Later revisions allowed
multiple addresses in addition to X.121 addresses to be
carried on the same DTE-DCE interface: Telex addressing (F.69), PSTN addressing (E.163), ISDN addressing
(E.164), Internet Protocol addresses (IANA ICP), and local IEEE 802.2 MAC addresses.[23]

a price-per-segment on top of this.[30] Link speeds varied, typically from 2400 bit/s up to 2 Mbit/s, although
speeds above 64 kbit/s were uncommon in the public networks. A segment was 64 bytes of data (rounded up,
with no carry-over between packets),[31] charged to the
caller[32] (or callee in the case of reverse charged calls,
where supported).[33] Calls invoking the Fast Select facility (allowing 128 bytes of data in call request, call conrmation and call clearing phases)[34] would generally attract 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 identied at the subscriber interface
by their logical channel identier (see below). However,
in practice not many of the national X.25 networks sup70.5 X.25 packet types
ported PVCs.
One DTE-DCE interface to an X.25 network has a maximum of 4095 logical channels on which it is allowed to
establish virtual calls and permanent virtual circuits,[24]
although networks are not expected to support a full 4095
virtual circuits.[25] For identifying the channel to which a
packet is associated, each packet contains a 12 bit logical channel identier made up of an 8-bit logical channel number and a 4-bit logical channel group number.[24]
Logical channel identiers remain assigned to a virtual
circuit for the duration of the connection.[24] Logical
channel identiers identify a specic logical channel between the DTE (subscriber appliance) and the DCE (network), and only has local signicance on the link between
the subscriber and the network. The other end of the connection at the remote DTE is likely to have assigned a
dierent logical channel identier. The range of possible
logical channels is split into 4 groups: channels assigned
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 direction of virtual call initiation as viewed by the DTE they
all carry data in both directions.)[27] The ranges allowed
a subscriber to be congured to handle signicantly differing numbers of calls in each direction while reserving
some channels for calls in one direction. All International
networks are required to implement support for permanent virtual circuits, two-way logical channels and oneway logical channels outgoing; one-way logical channels
incoming is an additional optional facility.[28] DTE-DCE
interfaces are not required to support more than one logical channel.[26] Logical channel identier zero will not be
assigned to a permanent virtual circuit or virtual call.[29]
The logical channel identier of zero is used for packets
which don't relate to a specic virtual circuit (e.g. packet
layer restart, registration, and diagnostic packets).

70.4 Billing
In public networks, X.25 was typically billed as a at
monthly service fee depending on link speed, and then

70.6 X.25 details


The network may allow the selection of the maximal
length in range 16 to 4096 octets (2n values only) per virtual circuit by negotiation as part of the call setup procedure. The maximal length may be dierent at the two
ends of the virtual circuit.
Data terminal equipment constructs control packets
which are encapsulated into data packets. The packets are sent to the data circuit-terminating equipment, using LAPB Protocol.
Data circuit-terminating equipment strips the layer2 headers in order to encapsulate packets to the internal network protocol.

70.6.1 X.25 facilities


X.25 provides a set of user facilities dened and described in ITU-T Recommendation X.2.[35] The X.2 user
facilities fall into ve categories:
Essential facilities;
Additional facilities;
Conditional facilities;
Mandatory facilities; and,
Optional facilities.
X.25 also provides X.25 and ITU-T specied DTE optional user facilities dened and described in ITU-T Recommendation X.7.[36] The X.7 optional user facilities fall
into four categories of user facilities that require:
Subscription only;
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.

70.6.2

ISO/IEC 8208:1995, Third Edition, compatible


with 2nd Ed. and X.25 (1993)

X.25 protocol versions

The CCITT/ITU-T versions of the protocol specications


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
compatibility with the CCITT/ITU-T specications.[38]
The user facilities and other features supported by each
version of X.25 and ISO/IEC 8208 have varied from
edition to edition.[39] Several major protocol versions of
X.25 exist:[40]
CCITT Recommendation X.25 (1976) Orange
Book
CCITT Recommendation X.25 (1980) Yellow Book
CCITT Recommendation X.25 (1984) Red Book
CCITT Recommendation X.25 (1988) Blue Book
ITU-T Recommendation X.25 (1993) White
Book[41]
ITU-T Recommendation
Book[42]

X.25

(1996)

Grey

The X.25 Recommendation allows many options for each


network to choose when deciding which features to support and how certain operations are performed. This
means each network needs to publish its own document
giving the specication of its X.25 implementation, and
most networks required DTE appliance manufacturers to
undertake protocol conformance testing, which included
testing for strict adherence and enforcement of their network specic options. (Network operators were particularly concerned about the possibility of a badly behaving
or miscongured DTE appliance taking out parts of the
network and aecting other subscribers.) Therefore, subscribers DTE appliances have to be congured to match
the specication of the particular network to which they
are connecting. Most of these were suciently dierent
to prevent interworking if the subscriber didn't congure
their appliance correctly or the appliance manufacturer
didn't include specic support for that network. In spite
of protocol conformance testing, this often lead to interworking problems when initially attaching an appliance
to a network.
In addition to the CCITT/ITU-T versions of the protocol,
four editions of ISO/IEC 8208 exist:[39]
ISO/IEC 8208:1987, First Edition, compatible with
X.25 (1980) and (1984)

ISO/IEC 8208:2000, Fourth Edition, compatible


with 3rd Ed. and X.25 (1996)

70.7 See also


OSI protocol suite
Packet switched network protocols related to X.25
Frame Relay has its technical base in X.25 packetswitching technology, but does not attempt to correct errors
iberpac the Spanish X.25 network, and rst publicly operated packet switching network
DATAPAC Canadian variant of X.25 oered by
Bell Canada
TRANSPAC The French variant of X.25 public
data network
AUSTPAC an Australian public X.25 network
XOT X.25 Over TCP X25 encapsulation on
TCP/IP networks
X.PC
packeting the Philippine X.25 network, and rst
publicly operated packet switching network

70.8 References
[1] CCITT, Study Group VII, Draft Recommendation X-25,
March 1976
[2] History of X.25, CCITT Plenary Assemblies and Book
Colors
[3] Foregenix (February 2012). X.25 within the Payment
Card Industry (PDF). Retrieved 25 May 2016.
[4] (Friend et al. 1988, p. 242)
[5] (Friend et al. 1988, p. 243)
[6] ITU-T Recommendation X.28.
[7] ITU-T Recommendation X.3.
[8] X.25 Virtual Circuits Transpac in France Pre-Internet
Data Networking.
[9] X-Series recommendations
[10] (Friend et al. 1988, p. 230)

70.9. FURTHER READING

[11] (Schatt 1991, p. 200).


[12] (Schatt 1991, p. 207).
[13] Running X.25 over TCP/IP on Cisco routers. 1 February 2001. Archived from the original on 21 January 2012.
[14] (French) Presse, Agence France (21 July 2011). Le
Minitel disparatra en juin 2012 [Minitel will disappear
in June 2012]. Le Figaro (in French).
[15] (French)
[16] ISO 8208:2000
[17] ISO 8208, Annex B.
[18] ITU-T Recommendation X.25, G.3.2 Called address extension facility, pp. 141142.
[19] ITU-T Recommendation X.223, Appendix II.
[20] ITU-T Recommendation X.7 (04/2004), pp. 1718.
[21] ITU-T Recommendation X.223.
[22] ITU-T Recommendation X.25 (10/96), Annex G, p. 140.
[23] ITU-T Recommendation X.213, Annex A.
[24] ITU-T Recommendation X.25 (10/96), p. 45.
[25] ITU-T Recommendation X.283 (12/97), p. 42.
[26] ITU-T Recommendation X.25 (10/96), Annex A, pp.
119120.

391

70.9 Further reading


Computer Communications, lecture notes by Prof.
Chaim Ziegler PhD, Brooklyn College
Motorola Codex (1992). The Basics Book of X.25
Packet Switching. The Basics Book Series (2nd
ed.). Reading, MA: Addison-Wesley. ISBN 0-20156369-X.
Deasington, Richard (1985). X.25 Explained. Computer Communications and Networking (2nd ed.).
Chichester UK: Ellis Horwood. ISBN 978-085312-626-3.
Friend, George E.; Fike, John L.; Baker, H. Charles;
Bellamy, John C. (1988). Understanding Data Communications (2nd ed.). Indianapolis: Howard W.
Sams & Company. ISBN 0-672-27270-9.
Pooch, Udo W.; William H. Greene; Gary G.
Moss (1983). Telecommunications and Networking.
Boston: Little, Brown and Company. ISBN 0-31671498-4.
Schatt, Stan (1991). Linking LANs: A Micro Managers Guide. McGraw-Hill. ISBN 0-8306-3755-9.
Thorpe, Nicolas M.; Ross, Derek (1992). X.25
Made Easy. Prentice Hall. ISBN 0-13-972183-5.

70.10 External links

[27] ISO/IEC 8208:2000, Fourth Edition, p. 61.


[28] ITU-T Recommendation X.2 (03/2000), p. 4.

Recommendation X.25) at ITU-T

[29] ISO/IEC 8208:2000, Fourth Edition, 3.7.1, p. 7.

Cisco X.25 Reference

[30] ITU-T Recommendation D.11 (03/91), p. 2.

An X.25 Networking Guide with comparisons to


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, Eloquence, 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, Spi~enwiki, Frecklefoot,
Boud, Michael Hardy, Zocky, Pit~enwiki, Lexor, DopeshJustin, Kku, Gabbe, CarlosMenendez, Ixfd64, Chinju, TakuyaMurata, Paddu,
Pde, Dgrant, Nanshu, Snoyes, Den fjttrade 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, Eux, 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, Fastssion, Everyking, Curps, Duncharris, Gilgamesh~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, Sridharinnity, 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 Appleyard, 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, Fragglet, 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 iy, 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, MARVEL~enwiki, Jenny MacKinnon, Delta Tango, Cornake pirate, Rizzardi, Jorvik, Cplakidas, Onorem, Nixeagle, MattOates, Addshore,
Aposu, Allan McInnes, Cybercobra, Savidan, Theodore7, alyosha, Lus Felipe Braga, Wybot, Adamarthurryan, Jna runn, Mlpkr,
FlyHigh, Algogeek, Nmnogueira, PradeepArya1109, SashatoBot, Lambiam, Vildricianus, Quendus, Derek farn, Wvbailey, SilverStar, Harryboyles, 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, DumbBOT, FastLizard4, Markluel, Kozuch, Daven200520, SteveMcCluskey, UberScienceNerd, Wexcan, BetacommandBot, Malleus Fatuorum, Thijs!bot, Epbr123, V31a, Headbomb, Marek69, Electron9, Maximilian Schnherr, Paxinum, Nick Number, Klausness, Napmor,
Escarbot, Je Edmonds, AntiVandalBot, Gioto, Quintote, Jbaranao, Hannes Eder, Dylan Lake, Danger, Farosdaughter, Wayiran, Storkk,
Dhrm77, DagosNavy, Deective, 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 Hggstrm, AntiSpamBot, NewEnglandYankee, SJP,
Policron, Thecarbanwheel, Malerin, Billcarr178, Lilwik, STBotD, DorganBot, Bonadea, TheNewPhobia, Ale2006, Spellcast, Makewater, Deor, Austinmohr, VolkovBot, Pasixxxx, Johan1298~enwiki, JohnBlackburne, AlnoktaBOT, Vincent Lextrait, Larry R. Holmgren,
Philip Trueman, TXiKiBoT, Ldonna, Nxavar, Rei-bot, Cyberjoac, Clarince63, Melsaran, Jackfork, Cremepu222, Geometry guy, Everything 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, Darkicebot, Boleyn, XLinkBot, Gnowor, Cascade07, Jytdog, Hiraku.n, Rror, 98dblachr, WikHead, Nasaralla, Galzigler, Bob1312, Alexius08, Bill4341, Matma Rex, MystBot, Cyrusace, Dsimic, Multipundit, Willking1979, Some jerk on the Internet, DOI bot, Friginator,
Crazysane, Kh0061, Leszek Jaczuk, MrOllie, Chamal N, EconoPhysicist, Abovechief, Glass Sword, AndersBot, Favonian, LinkFABot, Raayen, Denicho, 84user, Systemetsys, Geo g guy, Tide rolls, Jarble, CountryBot, Legobot, Luckas-bot, Yobot, OrgasGirl, JSimmonz, Ptbotgourou, WhyDoIKeepForgetting, Wainkelly, Pcap, KamikazeBot, Waltnmi, Agent phoenex, 747fzx, Tempodivalse, Markh56,
Orion11M87, AnomieBOT, Metalhead94, Ellegantsh, Jim1138, Galoubet, Alemua, Materialscientist, The High Fin Sperm Whale, Citation bot, X30x, GB fan, LilHelpa, The Firewall, Xqbot, Timir2, Mathviolintennis, Agasta, Drilnoth, DSisyphBot, XZeroBot, Cyphoidbomb, Isheden, Miym, GrouchoBot, Xashaiar, Omnipaedista, DAndC, Deadcracker, JulianDelphiki, JediMaster362, Sophus Bie, Sulaymaan114, 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, Giantscoach55, 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, MSPbitmesra, 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, Proesershean, 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, Altar,

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, Jamesmcmahon0, 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, Sfdan, 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, Bsadowski1, 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 led, 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, Sheherazahde, 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, AntiVandalBot, Majorly, Vic226, Holyoak, Doktor Who, Jhsounds, Salgueiro~enwiki, Orarch, JAnDbot, Edwardspec TalkBot, Hut 8.5, TAnthony, 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, Je G., Kyle the bot, TXiKiBoT, Rei-bot, Ontoraul, 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, Download, 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, Captobvius, 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, MindShifts, Dhmelody, TyA, Donner60, BioPupil, Bill william compton, ChuispastonBot, Analgape, DASHBotAV, ClueBot NG, EIN x FAMOUSxX, 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, Numbermaniac, Lugia2453, Frosty, Jochen Burghardt, Aa2093, Morris.jake, Yuki huang, Carrot Lord, Mitchellriley46, Star767, Yomellamamama, WikiEnthusiastNumberTwenty-Two, Dmd104, Monkbot, Dguzzo, Asdklf;, Muzikbox, Jpshuskus, BashBoy00, Nkkenbuer, 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, Sdsher, Siroxo, AlistairMcMillan, Raekwon, Bobblewik, Bumm13, Tooki, MementoVivere, 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, Happywae, 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, SynergyStar, Lenoil~enwiki, GrammarNSpellChecker, Spellmaster, Nrobbin, RP88, Lilac Soul, Alexthepun, Inwind, Dan dan rae, X!,
VolkovBot, Je G., TXiKiBoT, Vanished user ikijeirw34iuaeolaseric, Wiae, Synthebot, Infodriveway, Bentogoa, Lightmouse, Manoj C
Menon, ClueBot, Me5000, Rjd0060, Jzink123, TReidLewis, PixelBot, John Nevard, Rhododendrites, Sun Creator, Technorj, Thehelpfulone, 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, Arekrishna, 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, Franois~enwiki, Thue, Bevo, Toreau,
Flockmeal, Frazzydee, Phil Boswell, Twice25, Robbot, Sdedeo, Boy b, RedWolf, Postdlf, Sverdrup, Timrollpickering, Giftlite, DocWatson42, Ike~enwiki, Inter, Everyking, Dratman, Erdal Ronahi, Daibhid C, Siroxo, Matt Crypto, Bobblewik, CryptoDerk, Quadell, Beland, 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,
TheCoee, 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, Jemcneill, Fred Bradstadt, Waynemcdougall, Untruth, 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, Dbrs, BOT-Superzerocool, Yudiweb, Brisvegas, Cengelbart, Bill.martin, Capt Jim, Zzuuzz, Ali K, Johna~enwiki, Jack Upland, ViperSnake151, Huebi~enwiki, KNHaw, Zvika, Samuel Blanning, Veinor, SmackBot, Mmernex, EvilCouch, Classiclms, Gavin77, Bjelleklang,

394

CHAPTER 70. X.25

KocjoBot~enwiki, Btm, Kintetsubualo, 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, Eastlaw, JForget, Mbiesz, Edward Vielmetti, CBM, CuriousEric, WeggeBot, Neelix, Cydebot, Flowerpotman, Kimyu12, Bramlet Abercrombie, Vyselink, Aduro.sudonim, Smiteri, Thijs!bot, Epbr123, Martyr2566, Anupam, Headbomb, SGGH, Nezzadar, Tellyaddict, RickinBaltimore, SusanLesch, Dawnseeker2000, Omaunder, Fmlyguy08, AntiVandalBot, LinaMishima, Leuqarte, JAnDbot, Harryzilber, The
Transhumanist, Arch dude, Hut 8.5, PhilKnight, Kalicaloo1212, .anacondabot, Geniac, Kilrothi, Magioladitis, Legallydolls, Bongwarrior, 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, UnicornTapestry, 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, Fluernutter, Elainecs, Glane23, Favonian, Torla42, Graylorde, , Mightybozo, Alanscottwalker,
, Gail, LuK3, Pointer1, Luckas-bot, Yobot, Fraggle81, Donfbreed, GilCahana, Palladmial, 12george1, Reddog81, Peter Flass, Thanmark, AnomieBOT, Rubinbot, Jim1138, TwistedText, Dmf360, Materialscientist, 90 Auto, Citation bot, JohnnyB256, Quebec99, LilHelpa, GrouchoBot, VonFassen, Omnipaedista, Samoher, Kaylanimis, Multixfer, Jurcking, N419BH, Shadowjams, Gnuish, A.amitkumar,
Sushil20051982, Zacharysyoung, Floparallel, FrescoBot, Abeair, W Nowicki, AnnDuvall, D'ohBot, ZedGreen, Redrose64, ImageTagBot, Tom.Reding, Lineslarge, Full-date unlinking bot, Jrxer, 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, Pun, 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, Franois Robere, Lukesimo, Babitaarora, Thevideodrome, Ginsuloft, Whizz40, Twistie1, Philroc, Lasturias, JaconaFrere, Monkbot, SilverEditor, Gideon279, Trackteur, Macofe, Prpsct, Gareld Gareld, 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, Zanimum, 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, Darrien, 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, Kiahh, 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, Richfe, Skintigh, Oli Filth, Silent SAM, DHN-bot~enwiki,
TripleF, Martensjd, Rrburke, Chrylis, Het, Wizardman, Kukini, Zac67, Kylebrz, Vanished user 9i39j3, Soumyasch, Jec, Dicklyon, Totel, 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, Davido, Edokter, Rie, Floppytoes, JAnDbot, Chaitanya.lala, Barek, TAnthony, Beaumont, VoABot II,
Mmkh, SandStone, Allstarecho, MartinBot, Dgepstein, Jim.henderson, Naohiro19, Genghiskhanviet, Lilac Soul, J.delanoy, Mange01, Tannerbrockwell, 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, , Enduser, Legobot, Luckas-bot, Yobot, Les boys, Backslash Forwardslash, 1exec1, Jim1138, Kevintolly, Materialscientist, E2eamon, ArthurBot, 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, Klbrain, Tommy2010, ZroBot, 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, ChrisRuvolo, Jda, Simon South, Ralf.Baechle, Bookandcoee, Ylem, Eyreland, Rjwilmsi, Mirror Vax, Mcleodm, Anonym1ty, Oh2mqk, Shaddack,
Brandon, Extraordinary,
robot, SmackBot, Kharker, Mulder416, EVula, Adsllc, Euchiasmus, Xofc, Quibik, Dawnseeker2000, Luxomni, Storkk, Xeno, Dtheweather9, K7net, STBotD, DorganBot, Sv1xv, Muhandes, Kbdankbot, Addbot, Debresser, Yobot, Milks 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, Jameshsher, 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 Transhumanist, Bencherlite, Ourarash, Stijn Vermeeren, Gwern, STBot, R'n'B, Rimwolf, Outmind~enwiki, Gwizard, Ivan tambuk, SummerWithMorons, 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, Aclassier, Citation bot 1, Vasywriter, Tom.Reding, Cathy Richards, Yeng-Wang-Yeh, JonathanMayUK, JamieHanlon, WikitanvirBot, ZroBot, 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, Alo, 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, Jeq, 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, Gadum, 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, SpookyMulder, 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, Shoey, Bsadowski1, Freyr, Versageek, KTC, Phi beta, Jorray, RHaworth, Camw, LOL, Ikescs, Ruud Koot,
WadeSimMiser, Chochopk, Tabletop, Firien, Wikiklrsc, Peacefulvalley, Burkhard~enwiki, Macaddct1984, Waldir, DeweyQ, Dysepsion, 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, AndriuZ, Quuxplusone, Swtpc6800, Srleer, Chobot, DVdm, Guliolopez, John Dalton, Bgwhite, Cactus.man, EWignall, Gwernol, YurikBot, 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, SMcCandlish, 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, Frdrick Lacasse, Cowman109, Chris the speller, Master Jay, Oli Filth, Tree Biting Conspiracy, Roscelese, SchftyThree, Akanemoto, Dlohcierekims 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, Geor, Samato, MartinRe, Luigi III, Lcarscad, Wisco, KeithB, Sigma 7, Mschevrolet, Byelf2007, Runa27, Tydus Arandor, Hanasato, Srikeit, Kuru, KarmGrigoryan, Scientizzle, Mc nikki b, Rtybgh,
Gobonobo, JohnI, Robosh, JorisvS, Mgiganteus1, Feraudyh, IronGargoyle, Voceditenore, 16@r, JHunterJ, Slakr, Rafaleaz, SQGibbon,
Mr Stephen, Skishoo2, Dicklyon, Achilleshart, Jon186, Optakeover, SandyGeorgia, Spiel496, Dhp1080, Ryulong, Citicat, EEPROM Eagle, Nvpatentlawyer, Jose77, Varuag doos, Xionbox, Autonova, Quaeler, Levineps, BranStark, Iridescent, Shoeofdeath, Turbokoala, Gorillazfeelgoodinc, Igoldste, CapitalR, Guest0495, Courcelles, Bottesini, Tawkerbot2, George100, RockinRob, SkyWalker, JForget, CmdrObot, 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 Schnherr, Tellyaddict, BauerPower, Pkapitola, Siggis, Escarbot, Mentisto, Porqin, AntiVandalBot, BokicaK, Luna Santin, Seaphoto, CZmarlin, Goodmansasha, Antique Rose, Expligatory,
DeepJR, Smartse, Jacqke, Alexthurleyratcli, 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, Animum, 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 Yilmaz, J.delanoy, Pharaoh of the Wizards, Trusilver, Petreg, Adavidb, Hanteng, Silverxxx, Wtimrock, MistyMorn, Maurice Carbonaro, Extransit, Amanda Renee, Cdamama, Athalia~enwiki, Joe fob, Aqwis, Elkost, Katalaveno, Allanhgilbertson, McSly, Bryantnorland, Lovely seungmi, 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, Je 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, DennisRivers, Raenico, Kalivd, Irishdunn, FlyingLeopard2014, Anon The Nitpicker, EJF, SieBot, John.n-irl, Danielden, Jauerback, Fantastic fred, Dawn Bard, Viskonsas, RJaguar3, Triwbe, Lucasbfrbot, Yintan, Keilana, Hebisddave, Bentogoa, Breawycker, Flyer22 Reborn,
MaynardClark, Oda Mari, JetLover, SPACKlick, Yerpo, Wombatcat, Tmorin, Sbowers3, Ayudante, Doctoruy, 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, Vanisheduser12345, 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, JewerlyGirl18, 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, Jomackiewicz, Manuel Trujillo Berges, Liefjes, Some jerk on the Internet, Imark 02, Fgnievinski, Blethering Scot, Ronhjones, Fieldday-sunday,
Moosehadley, Ynaztiw, Fluernutter, Ccnc, MrOllie, Download, CarsracBot, Facilitation Author, 5 albert square, Tassedethe, Numbo3bot, 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, Kingpin13, 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, Grinofwales, 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, Invision2020, D(r)ead End, MJ94, Hellknowz, JuliaBaxter51, AnandaDaldal, Calint, RedBot, Ania Lian, Ezhuttukari, Madameoctopus, Boolsyet, 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, Suusion 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, Szalakta, The Nut, Matthewcgirling, Alpha Quadrant (alt), Cobaltcigs, Pingu.dbl96, Monterey Bay, Gz33, Ocaasi, Tolly4bolly,
RaptureBot, Tridibbhowmik, Thine Antique Pen, Architect21c, L Kensington, Donner60, Funnymind, Pun, Rathen69185, Orange
Suede Sofa, Wakebrdkid, Musicguy24, Krbibin, Ortmana, Sven Manguard, DASHBotAV, Ltaylor20, 28bot, Rocketrod1960, Cgt, Xanchester, Gjholt, ClueBot NG, Gowtamrajk, Gareth Grith-Jones, Jack Greenmaven, Change67, MelbourneStar, This lousy T-shirt, Satellizer, Jenova20, CloveWiki, Jasperspeicher, Rainstarlight, Snotbot, Theboymusic, Cntras, BabyGirlCourtney, Braincricket, O.Koslowski,
ScottSteiner, Widr, Antiqueight, C63205, Stomasz71, Vibhijain, Ashokrajaballa, North Atlanticist Usonian, Iopsycho, Magallon17, Helpful Pixie Bot, Irrc irri, Ratman2000, Rablanken, Bachelorcourse, Calabe1992, Bobbyshabangu, Tylerbesh, WNYY98, Anu.gnath, Lowercase sigmabot, Kmalekian, BG19bot, Vectevs, Hz.tiang, Wiki13, MusikAnimal, JasonPLK, Ronkays, Zachzab, Mark Arsten, AdventurousSquirrel, Anittisathiaraj, Pravincumar pek, Jgatti09, Altar, 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, EagerToddler39, 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, LogertGilby, Zalunardo8, BreakfastJr, Tentinator, Kogmaw, GingerGeek, Avatto123, Yankeesfan1234, Cherubinirules, Penperson, Lilythamzil,
Basilu, Taniquab2014, Babitaarora, Haminoon, Arpitmaurya, JoshuaChen, Ugog Nizdast, JustBerry, Giematt, Ginsuloft, Civiello m, Someone 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 Muhammad, Mk bataiya, Znorth0818, Jim Carter, IvanZhilin, Berlinlasers, Morrisonann, Molhv, William Tlberg, Raymondlay, KBH96, KurodaSho, Radueno, KH-1, KatBerg52, Dwikicowan, Crystallizedcarbon, Ryanhw, WikiTechPresentation, Termaric, Tymon.r, Explicit re,
Ismailzabee92, Ss9704895, Lalith269, Syam prathipati, Gibralter123, Venkatesh doli, Rageetha, Fuebaey, Nicolecheek17, Gragarian,
Mediavalia, Bottlesd, Eugene Wood, Shakfastlink, NewAtSchool, PAULFERNZ, Jnm230, Natalie.Desautels, Culturalresearch, Silvermoney1963, 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, WhisperToMe, 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., Mwanner, 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, Robosh, 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, Cremepu222, Billinghurst, Riick, Kbrose, SieBot, Smsarmad, Flyer22 Reborn, Ngrieth, 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, Materialscientist, 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, Suusion 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, Srleer, 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, CounterVandalismBot, 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 jw983kjaslkekfhj45, 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,
Smay, 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, Babbage, 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, Cacycle, 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, Ociallyover, Jumbuck, Michael Dring, Liao, Interiot, Diego Moya,
Atanamir, BRW, Nex O-Slash, Suruena, Tony Sidaway, RainbowOfLight, Culix, Reaverdrop, SteinbDJ, TheCoee, Bookandcoee, 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, YurikBot, 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, Detter, Rrelf, Jonatan Swift, Rene Mas, JonHarder, Radagast83, Charles Merriam, Jiddisch~enwiki, Tompsci, AlyM,
Maximum bobby, Phoenix314, Jna runn, Theme97, Derek farn, Axem Titanium, MisterPhyrePhox, Nharipra, Michael miceli, Edwindreillyjr, 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, Ansmo, 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, Andrij 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, Arbitrarily0, Legobot, Luckas-bot, Yobot, Bunnyhop11, Ptbotgourou,
, AnomieBOT, 1exec1, Flewis, Materialscientist, Citation bot, Dorchard, 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, Jonesey95, Tom.Reding, Kurtbeyer, Skyerise, December21st2012Freak, Jauhienij, Trappist the monk, , Bencz, RjwilmsiBot,
EmausBot, Grottenolm42, BillyPreset, Bgeron, Lseongjoo, Ida Shaw, Annish33, Rcorcs, Teapeat, Methree69, ClueBot NG, Matthiaspaul, 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, Franois Robere, Orcanaria, DavidLeighEllis, Rajmani94, 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, RussBot, Rsrikanth05, Geertivp, NawlinWiki, Jpbowen, Voidxor, David Biddulph, Rwwww, BenBurch, Yamaguchi , Gilliam, Octahedron80,
Nick Levine, Rrburke, Richard001, Kuru, Mike1901, Optakeover, Waggers, Sohebbasharat, NickW557, DumbBOT, Ebrahim, MasterNetHead, 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, Frmorrison, 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, EmausBot, Super48paul, Dewritech, GoingBatty, Solarra, Ali.eblis1, Wikipelli, K6ka, FunkyCanute, Bollyje, 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, Ducknish, 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, Simonstone1695, Theos Little Bot, Rui24114, PWNGWN, Melonkelon, Mario3D12, Sandshark23, DavidLeighEllis, Babitaarora, Melody Lavender, Dannyruthe, Sarahanne.1, Margcphelan, JaconaFrere, Sam Hollingsworth, Markoolio97, Shnuce, Miljan1994, Lagoset, Wwesam01,
Trackteur, Sccr4u69, JoeHebda, MonkeyWithGlasses44, Maritalaairuk, Amortias, NianFav, KH-1, ChamithN, Techyknowsbest, LittleMissRich, 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, Jameshsher, BMF81, YurikBot, Hairy Dude, Pseudomonas, CarlHewitt, Shinmawa, Cedar101, JLaTondre, SmackBot, Vald,
TimBentley, LinguistAtLarge, SIZIK, Droll, Nbarth, MovGP0, Javalenok, JonHarder, Allan McInnes, Jpaulm, JustAnotherJoe, Radagast83, 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, Adrianwn, Niceguyedc, M4gnum0n, Shaiguitar, XLinkBot, Addbot, Skillsmatter, Leszek Jaczuk, 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, Franois 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,
Jabourdette, 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, Srleer, Zwobot, Rita.dos.santos~enwiki, SmackBot, JonHarder, Radagast83, VdHamer, Kvng,
Eastlaw, Marcuscalabresus, UncleBubba, Kgeischmann, 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 ow diagram Source: https://en.wikipedia.org/wiki/Data_flow_diagram?oldid=734131353 Contributors: Derek Ross, William Avery, Sfdan, Michael Hardy, Ahoerstemeier, Ronz, Nichtich~enwiki, Morven, Chealer, Hadal, Tea2min, Ancheta Wis, Giftlite, Tom harrison, 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, Paulho, Tangotango, Wooptoo, 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 Du, NeilN, Attilios,
SmackBot, Fireman bi, Derek Andrews, Hydrogen Iodide, Melchoir, Aardvark92, AutumnSnow, Chairman S., Arsenaldc1988, Gilliam,
Betacommand, Ranglin, Elantrix, Master of Puppets, Dlohcierekims sock, EdgeOfEpsilon, Can't sleep, clown will eat me, Zvar, Allan
McInnes, Jpaulm, Fullstop, Turkystung, 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, Gkhan, Golgofrinchian, MER-C, Wasell, Akuyume, Casmith 789, VoABot II, JamesBWatson, Rich257, Jvhertum, Perrydegner, 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, BotMultichill, 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, Warrior4321, Stirrer, ChrisHodgesUK, SoxBot III, Saminathan25, XLinkBot, Evert r, Ivan Akira, Stickee, Hubew, Moptophaha, MystBot, Addbot, 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, Suusion 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 Anonymous: 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, Kingturtle, Glenn, UserGoogol, Jiang, Edaelon, Nikola Smolenski, Dcoetzee, Chris Lundberg, Populus, Traroth, Mrje, Bearcat, Robbot,
Noldoaran, Craig Stuntz, Altenmann, Babbage, Mushroom, Seth Ilys, GreatWhiteNortherner, Tea2min, Giftlite, DavidCary, Esap, Jorge
Stol, 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, ReyBrujo, Derbeth, Forderud, Mahanga, Bushytails, Mindmatrix, Carlette, Ruud Koot, Easyas12c, TreveX, Bluemoose, Abd, Palica, Mandarax, 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, Vicarious, 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, Caiaa, Iridescent, CRGreathouse, Ahy1, FinalMinuet, 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, Oshwah, Eve Hall, Vipinhari, Coldre82, BwDraco, Rozmichelle, Billinghurst, Falcon8765, Spinningspark, Spitre8520, Haiviet~enwiki,
SieBot, Caltas, Eurooppa~enwiki, Ham Pastrami, Jerryobject, Flyer22 Reborn, Jvs, Strife911, Ramkumaran7, Nskillen, DancingPhilosopher, 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, ArthurBot, Xqbot, Pur3r4ngelw, Miym, DAndC, RibotBOT, Shadowjams, Methcub, Prari, FrescoBot, Liridon, Mark Renier, Hypersonic12,
Maggyero, Rameshngbot, MertyWiki, Thompsonb24, Profvalente, FoxBot, Laureniu Dasclu, Lotje, Bharatshettybarkur, Tbhotch, Thinktdub, Kh31311, Vineetzone, Uriah123, DRAGON BOOSTER, EmausBot, Apoctyliptic, Dcirovic, Thecheesykid, ZroBot, MithrandirAgain, EdEColbert, IGeMiNix, Mentibot, BioPupil, MainFrame, Chandraguptamaurya, Rocketrod1960, Raveendra Lakpriya, Petrb, ClueBot 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, Duffjohnson, Steel1943, VolkovBot, Technopat, Everything counts, Wykypydya, Haseo9999, Jimmi Hugh, Rinconsoleao, ClueBot, Mild Bill
Hiccup, DumZiBoT, JVPiano, Addbot, MagnusA.Bot, Oachain, Legobot II, Denispir, Crispmuncher, Rubinbot, Benhen1997, LilHelpa,
FrescoBot, Zollerriia, Dsilvia, ZroBot, 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 Macisdean,
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, Rubinbot, 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: Rjstott, Linkan, Glenn, Reddi, JimTheFrog, Robbot, Sander123, DavidCary, Gloop, Bigpeteb, Mormegil, Erc, Droob, Riana, Wtshymanski, 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, Vinaiwbot~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 kybldmstr, 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, Rhododendrites, Promethean, SchreiberBike, Belchre, XLinkBot, Dsimic, Albambot, Addbot, Proofreader77, Semiwiki, Luckas-bot, Ptbotgourou,
AnomieBOT, Materialscientist, TheAMmollusc, 4twenty42o, Omnipaedista, Sophus Bie, FrescoBot, Gonzosft, Pdebonte, Btilm, Xmaillard, 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,
Sdsher, Jorge Stol, 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, Splintercellguy, 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, Deective, Em3ryguy, MER-C, Bekant, Ubunaki, Chekholko, Pudhed, Gwern, Poeloq, R'n'B, Mange01, BitJam, Rbrewer42, Extransit, Jerry,
Gmazero, Jdseymour, Jaidan, DavidCBryant, Mathuranathan, Funandtrvl, Vranak, Jcea, Oshwah, Trachten, WatchAndObserve, Vipinhari, 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, Materialscientist, Flying hazard, Sixequalszero, GliderMaven, Dogposter, Nageh, Zero Thrust, Mfwitten, Pinethicket, ImageTagBot, Lotje, Suusion 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, Alo, 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, Grendelkhan, 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, Gadum, Mu, Schweini, Alexf, Knutux, Beland, Orbiter,
Kiteinthewind, Gauss, Karl-Henner, Austin Hair, BeakerK44, Abdull, Bluemask, Ta bu shi da yu, Perey, JTN, Discospinster, Brandonrhodes, 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, Bawol, 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, Dugosz, Nick, Retired username, Yoasif, Mikeblas, O!, 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, Classiclms, Ulterior19802005, KAtremer, Herostratus, KnowledgeOfSelf, Praetor alpha,
KocjoBot~enwiki, EarthBoundX5, Mscuthbert, Alksub, Rojomoke, Pmkpmk, Jwestbrook, Gilliam, Skizzik, Chaojoker, Marc Kupper, Anwar saadat, Coinchon, Thom2002, Jprg1966, Thumperward, MalafayaBot, OrangeDog, Silly rabbit, Deli nk, Octahedron80, Letdorf, Metalim, DHN-bot~enwiki, JEG, Gracenotes, Newmanbe, Can't sleep, clown will eat me, ReferenceMan, Frap, Alphathon, DRahier, 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, IronJohnSr, 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, Wtash, Joe Schmedley, Leuqarte, JAnDbot, MER-C, Austinmurphy, Kirrages, Raanoo,
Enjoi4586, Doom777, Bongwarrior, VoABot II, Tedickey, Angryninja, Vssun, DerHexer, Saberclaw, Ftiercel, Gwern, Stephenchou0722,
MartinBot, Jonathan.lampe@standardnetworks.com, Rettetast, Phillip.calvin, TinaSDCE, Tgeairn, J.delanoy, Mange01, Numbo3, Nbauman, Macaldo, Jaymac407, Acalamari, Andareed, Dispenser, LordAnubisBOT, Thomas Larsen, Jameswebuk, AntiSpamBot, Nomoreink,
Rolandelferink, Deepak garg147, Useight, VolkovBot, SamMichaels, TXiKiBoT, A4bot, Naveenpf, Lucamauri, Seraphim, David.bar, Kovianyo, 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, Vulcans 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, Muat, Good Olfactory, Thecarpy, Some jerk on the Internet, Mabdul, Jgeer,
PJonDevelopment, Xiainx, Elsendero, TutterMouse, Tedmund, MrOllie, CarsracBot, Simeon24601, Dky89, Dmemt, Bguras puppy,
OlEnglish, Xjan, Legobot, PlankBot, Luckas-bot, Yobot, Senator Palpatine, Fraggle81, Old Death, Mmxx, Ox, AnomieBOT, Rubinbot, Jim1138, Richm711, Mdfarock, Piano non troppo, Flewis, Materialscientist, The Firewall, Xqbot, Nishantjr, Addihockey10, Capricorn42, 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, Reconsider the static, Merlion444, Robvanvee, Mawinme, Trappist the monk, Khaotika, Lotje, Dinamik-bot, Vrenator, Ygz79, Sarahmann2009,
Fastilysock, Suusion of Yellow, Some Wiki Editor, Bricaniwi, DARTH SIDIOUS 2, Onel5969, Ksb1392, 212.113.674 ftp, EmausBot,
Mikkik, Shadowmaster1969, Racerx11, RA0808, Eyedotlms, Mick09887,
, Hops Splurt, ValC, Sheeana, Richard asr, Josve05a,
Playdagame6991, Crashuploads, Lakshmeesha NR, Rajeev1486, Felixkasza, Wingman4l7, Sbmeirow, TyA, Duke.tim, Joemark2010, EuanK92, Icyganov, Donner60, Danwing, Wipsenade, Bomazi, ChuispastonBot, Mlorer, 28bot, Ycyganov, Petrb, Mikhail Ryazanov, ClueBot NG, Pantergraph, Nimiew, Poshtkohi, Morgankevinj huggle, BroderickAU, Prasantborn1990, O.Koslowski, Peedeeramone, SpelPunc-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, AxelBoldt, Mav, Jeronimo, Jan Hidders, Khendon, Arvindn, Ray Van De Walker, LionKimbro, Heron, Hirzel, Michael Hardy, Pnm, TakuyaMurata, 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 Devore, Joseph Dwayne, Neilc, Lukman Sasmita, Geni, Zeimusu, MarkSweep, Maximaximax, Simoneau, Alotau, Urhixidur, Paulbmann,
RevRagnarok, D6, Mormegil, Poccil, GoodStu, Discospinster, Rich Farmbrough, Mecanismo, Gdementen, Kakesson, ZeroOne, S.K.,
Art LaPella, Skinkie~enwiki, Vdm, Jonsafari, BlueNovember, Mdd, HasharBot~enwiki, SvendTofte, Joris Gillis, Wtshymanski, Knowledge Seeker, Danhash, Gpvos, IMeowbot, Thowa, Oleg Alexandrov, Linas, LOL, Bkkbrad, Robert K S, Ruud Koot, Dzordzm, Male1979,
Teemu Leisti, Calrfa Wn, Gwil, Graham87, Qwertyus, Snaekid, Drebs~enwiki, Rjwilmsi, KamasamaK, Armandeh, Ademkader,
Bensin, Fred Bradstadt, Mathbot, EnDumEn, Riki, Fresheneesz, Sperxios, Bmicomp, Kri, Anrie Nord, YurikBot, Hairy Dude, Bergsten, 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, Moquist, 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, TXiKiBoT, 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,
Conikq, 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, ToeeC 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, Jfdwol, Tagishsimon, Rich Farmbrough, EbenVisher, YurikBot, Hairy Dude, Anog, Gdawirs,
Basil.bourque, Gjs238, Schmiteye, Audriusa, Lus Felipe Braga, Cydebot, BenedictPoole, Swpb, STBot, Katharineamy, VolkovBot, Jamelan, 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, Zundark, 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, Alo, Tregoweth, CesarB,
Ahoerstemeier, HarmonicSphere, Haakon, Mac, Ronz, Jpatokal, Den fjttrade ankan~enwiki, , Llull, Andres, Palfrey, Rl,
Ghewgill, Mydogategodshat, Hashar, Okome~enwiki, PatriceNe, Crissov, Jay, Fuzheado, Rednblu, Traal, Haukurth, Tpbradbury, Furrykef, Alexles, Mattworld, Omegatron, Traroth, Joy, Jens Meiert, Jusjih, Guppy, Jeq, 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, Guanabot, Mecanismo, Timsabin, YUL89YYZ, MeltBanana, Mani1, Pavel Vozenilek, Paul August, Blade Hirato~enwiki, Bender235, ZeroOne, Zy26, Andrejj, Acq3, Kjoonlee, Breon, Jonathanischoice, Rich13, Plugwash, Violetriga, Bdk, Danakil, Cap'n Refsmmat, Zenohockey, RoyBoy, Triona, Leif, Coolcaesar, Bobo192, Nigelj, Whosyourjudas, Smalljim, Shenme, SpeedyGonsales, Vystrix Nexoth, Unknown 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, GeoPurchase,
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, Je3000, 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, Nutiketaiel, Irishguy, Saoshyant, Aaron Brenneman, Raven4x4x, Iancarter, Lomn, MySchizoBuddy, Zwobot, Snarius, Brat32, Av2917, DeadEyeArrow, 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, Classiclms, 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, Ohnoitsjamie, Skizzik, Chaojoker, Qtoktok, PJTraill, Fetofs, Amatulic, AstareGod, Chris the speller, Jamie C, Robert Wellock, CrookedAsterisk, Master of Puppets, BabuBhatt, Oli Filth, EncMstr, King Arthur6687, James Fryer, Doug Patriarche, SchftyThree, 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, Simonkoldyk, 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, Iridescent, Arntuuri, Michaelbusch, Dreftymac, Theone00, Xaagkx, Wjejskenewr, Sander Sde, 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, Leujohn, The gergster, Madda, Kennyluck, Cydebot, Krauss, MC10, Vanished user vjhsduheuiui4t5hjri, Gogo Dodo, SetiHitchHiker, Bazzargh, Studerby, Hsivonen, Msreeharsha, Tawkerbot4, Clovis Sangrail, Shirulashem, Codetiger, Torc2, DumbBOT, Kozuch, Ward3001,
Neustradamus, Omicronpersei8, JodyB, MicahElliott, Geekosaurus, UberScienceNerd, Saintrain, Timbl, Epbr123, Bot-maru, Wermlandsdata, Monkle, Mbell, Dasani, Hervegirod, Kablammo, Ucanlookitup, Mojo Hand, Trevyn, Marek69, John254, A3RO, Nezzadar, DavidLeeLambert, Lowercase, Jgr 94, Dfrg.msc, NigelR, TFunk, CharlotteWebb, Tonyseeker, Cplot, Natalie Erin, Folic Acid, Escarbot, I
already forgot, Martinvie, Mentisto, Sidasta, AntiVandalBot, Chicgeek, Majorly, Luna Santin, Guy Macon, Mvjs, Seaphoto, Chacor,
QuiteUnusual, Antique Rose, Prolog, Jj137, TexMurphy, LibLord, Farosdaughter, Gdo01, Zedla, DennisWithem, Wolf grey, Romestar, Carewolf, Jordan Rothstein, Myanw, Static17, Minun, Gkhan, 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, Pdraig 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, MartinRinehart, Bonadea, Izno, Howcome, Squids and Chips, Idioma-bot, Funandtrvl, Joeinwap, Wikieditor06, Lights, X!, Chinneeb, VolkovBot,
Jorioux, Zcorpan, Xyzu, Je G., Indubitably, Blackdenimgumby, Rharding13, Lears Fool, Cenet47, Philip Trueman, TXiKiBoT, Oshwah, Zidonuke, Vanished user 98wiejfno34tijsfoiwefjlok5y, Vipinhari, Rei-bot, Wikidemon, HarryAla, Drestros power, Arnon Chan,
ScriptingMaster, Crazyhead4, Rick Jellie, Anna Lincoln, Lradrama, Ontoraul, V.v.vinaybabu, JhsBot, Leafyplant, BwDraco, Hamitr,
Drappel, DieBuche, IsaacGS, Cremepu222, David Condrey, NetOracle, Csdorman, Liberal Classic, Fenring, Maxim, Opgfss, LamCarLL71, 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, Coee, Fsminc, Scarian, Nestea Zen, PanagosTheOther, Lordofnerds, Dawn Bard,
Caltas, Eagleal, RJaguar3, Yintan, Gfonetobe, Vanished user 82345ijgeke4tg, Purbo T, Purplepickle10, Xenophon777, Formerly the IPAddress 24.22.227.53, Bentogoa, Happysailor, Iitim4two, Chridd, JSpung, Allmightyduck, Oxymoron83, Antonio Lopez, Lightmouse,
Tombomp, SH84, KathrynLybarger, BenoniBot~enwiki, SarvenCapadisli, OKBot, Hornyman121, WOFall, Spitre19, XU-engineer, Simplexplus, 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, Blanchardb, Soc5555, Isoft isoft, , Manishearth, Popadooodle7, Robert Skyhawk, Excirial, Yaniv p, Lochsley, Gtachiki,
Gwguey, 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, Spitre, Gwandoya, RkOrton, Rror, Feinoha, OsoLeon, 007spyguy7, James-Y2J-fan, Nepenthes, WillOakland, Avoided, Burket, Sujgfjfgjhgjgj, Mitch Ames, WikHead, Cmr08, Jswarchinghimer, Alexius08, Noctibus, RP459, Subversive.sound, HarlandQPitt,
Vianello, Thatguyint, Addbot, Xp54321, Gamekid276, Inditfunny, Willking1979, Some jerk on the Internet, Mabdul, TheGeekHead,
Fyrael, Queux, Haruth, Kongr43gpen, Sparkmonkey7, Fgnievinski, Wtni, LovinHTML, Fieldday-sunday, CanadianLinuxUser, Fluernutter, EricCanada75, Protonk, PranksterTurtle, Glane23, Nate Wessel, Karl gregory jones, Waterret, Favonian, AtheWeatherman, LinkFABot, 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, Jez1, Skaarlaw, Mrnobody228, Eric-Wester, Vampic, AnomieBOT, Cq142, Onefreeinternet, Chazubell,
Message From Xenu, Jim1138, Galoubet, Penguinboyroy, 9258fahskh917fas, Piano non troppo, Betax, Kingpin13, Flewis, Materialscientist, MorgothX, Frankenpuppy, Nifky?, Nut er, Gsmgm, Lturbine, Whileupper, Obersachsebot, Xqbot, Costadelsponz, TinucherianBot II, Sionus, Addihockey10, Capricorn42, Armstrong1113149, Wperdue, 07w109, Moreght, Nasnema, Gilo1969, Grim23, Withoutmark, 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, Uxgeo, Charrua85, Johnnybravo2009, Djahmednawaz, Islamicinfo, Brianreavis, Buzgun, Kwiki, Sanaskar,
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, Kakistocrator, 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, Clisblog,
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, GoingBatty, 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, TheDrakoman, AlecFTW, Rima p.r, D'oh!, Josve05a, Traxs7, GranterOfMercy, Wes.turner, Cfust, Briansince1988, MithrandirAgain, Maypigeon of Liberty, Enrique00a, , Anir1uph, Empty Buer, Asiansryummeh, Virtual Loc, Dylthaavatar, Rizwanazizshaikh, Wasala555,
Demonkoryu, Zap Rowsdower, Wayne Slam, Tolly4bolly, Gregoroq, BrokenAnchorBot, Lipyn, Shyluv, Donner60, Wipsenade, Jamesamber, 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 Superman, Titodutta, Thatspartanguy, Calabe1992, Wbm1058, Schuy B., Technical 13, Doorknob747, Lowercase sigmabot, BG19bot, Island Monkey, Nathanswan, Krlozanov, KamranMackey, Vagobot, Way2tutorial, Iamjaypatel, AlphaBlogshow, Kangaroopower, Harkamal1001, MusikAnimal, Frze, OneCuteElmo, Ashutosh.ukey, Ramneek Sharma(MCT), Follishere, Mark Arsten, Compfreak7, Joshianurag21, Joydeep, NotinREALITY, RussiaRussia, Matthewp1998, Spokestrip EMP, Tharinduewe, Vannhuthanh, Makandal14, DavidLeader, Gysenn, Insidiae, Glacialfox, Toto Mommam, Klilidiplomus, Ajsandbach, Shanky.lonely, Hanitirkey, BattyBot, FootholdTechnology, 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 Lck,
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, Himankpathak, 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 Gadget 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, Prajwal 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,
UnidentiedHuman721, DynaGirl, Werthert, Full Rune, VarunFEB2003, Hello8287556846, Rhowladar, Superuser56, Shantoa0, Vk khandal, 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, IMSoP, Samuel~enwiki, Nikola Smolenski, Ehn, Hashar, Universimmedia, Dcoetzee, Tpbradbury, Furrykef, Paul-L~enwiki, Bevo, Wonko,
Nickshanks, Betterworld, Pakaran, Flockmeal, Finlay McWalter, Jeq, 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, Knutux, 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, Canderson7, 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, Alphachimp, 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 Epsilon, 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, Unyoyega, 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, Iridescent, Newone, Sander Sde, 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,
Kgeischmann, 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, NewEnglandYankee, Ivank06, Doria, Rwessel, SJP, Babedacus, STBotD, Ajfweb, CardinalDan, Idioma-bot, Funandtrvl, Wikieditor06, Fuzzygenius, 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 Klinkerhoen, Tomaxer, Mohammedsheikh786, BOTijo, Okyea, Monty845, Praefectorian, Nightraider0, Scottywong, 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, Jusdafax, 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, Addbot, 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, Mikerlynn, 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 ottante, Fraxtil, 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, Chadller, 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, Q828, EvanMHahn, M0rphzone, Adam.tolley, Sahara4u, Cyberpower678, Nen, IAlexR, Mark Arsten, Compfreak7, 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, Makecatbot, Lugia2453, Doc Armitage, Dmufasa, The Quirky Kitty, Sriharsh1234, Athomeinkobe, Falsestu, Mark viking, I am One of Many,
Franois Robere, Melonkelon, Jakec, EvergreenFir, DavidLeighEllis, ArmbrustBot, Davidgumberg, Comp.arch, PerfectSystem, The Herald, 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, Pishcal, 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, KGirlTrucker81, Killerash734882, 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, Fluernutter, Mentisock, Jonathan d green, Chzz, Jarble, Luckas-bot, Yobot, Ptbotgourou, Fraggle81,
TaBOT-zerem, Materialscientist, Xqbot, J04n, SassoBot, Mathonius, Erik9bot, Cargoking, RedBot, Dinamik-bot, EmausBot, WikitanvirBot, TuHan-Bot, Sodmy, Heyjoy, Solde9, ClueBot NG, MelbourneStar, Wbm1058, BG19bot, Cbj125, Mitch078, Thecodemunky,
DayBridge, 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, Wikiborg, 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, Fabrcio Kury,
Grm wnr, Zondor, Trevor MacInnis, Guppynsoup, Mike Rosoft, Brianjd, D6, Jwdietrich2, CALR, EugeneZelenko, Diagonalsh, Discospinster, Solitude, Michal Jurosz, Silence, Smyth, Samboy, Martpol, Stereotek, Bender235, MisterSheik, CanisRufus, AndyB, Jpgordon, Blakkandekka, La goutte de pluie, Alphax, Flammifer, Tritium6, Andrewbadr, Helix84, Haham hanuka, Ranveig, Jumbuck, Complete~enwiki, Alansohn, PaulHanson, LtNOWIS, Riana, Ciaran H, BryanD, Jheald, Versageek, SteinbDJ, Spot, Ott, Natalya, OleMaster, 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, Igin, Zzuuzz, Tcsetattr, Denisutku, Arthur
Rubin, Dspradau, Tevildo, Alasdair, Samanwith, JLaTondre, Eaefremov, DVD R W, CIreland, Crystallina, SmackBot, Incnis Mrsi, InverseHypercube, TestPilot, McGeddon, Kirkjames, Ariedartin, Vald, Delldot, Hsarkka~enwiki, HalfShadow, Bertilvidet, Yamaguchi ,
PeterSymonds, Gilliam, Ohnoitsjamie, Skizzik, Richfe, 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, Montag451, JFreeman, ST47, Djmiller9975, Carlroller, Naudefj, Hot torew, Daven200520, Blackjack48, Kyle J Moore, PKT, Michael Fourman, Epbr123, Al Lemos, Headbomb, Yettie0711, Klausness, Dawnseeker2000, Dehneshin, Escarbot, Mentisto, 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, Dungs, 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, Nosferattr, 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, Excirial, Alexbot, BirgerH, Rhododendrites, Brews ohare, R.Dhiyanesh, Cenarium, Hesar, TheRedPenOfDoom, Tnxman307, Coywish, Unmerklich, M.boli, Thingg, Versus22, Johnuniq, XLinkBot, Roberto Gejman, Feinoha, JinJian, EndlessWorld, Dorkysnorky123654, Addbot, 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, Terrictrid, Sweetestbilly, Taxisfolder, Timir Saxa, Kgeza7,
AnomieBOT, Andrewrp, Cmsreview, Jim1138, Piano non troppo, K50 Dude, Atroche, Wikiwlod, Bluerasberry, Materialscientist, ArthurBot, DalaoDy, Raysonik, Xqbot, TheAMmollusc, Jayarathina, Bbarkley, Capricorn42, Millahnna, Tad Lincoln, J04n, Frosted14, Omnipaedista, 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, Rushbugled13, InformationZone, Magdalena Szaran, SkyMachine, FoxBot, DixonDBot, Lotje, Catinator, Vrenator, LilyKitty, Jerd10, 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 Cagle, 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, Altar, In4matt,
Klilidiplomus, Agent 78787, Knodir, Cimorcus, ~riley, Pratyya Ghosh, Csterns, ChrisGualtieri, Ngorgoya4real, EuroCarGT, JohnEisenhauer, 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, Tahmina.tithi, Jeremylawless, Dastoger Bashar, FrB.TG, Dr. JJenkins, Skr15081997, GeorgeAhad, ThatRusskiiGuy, Wahab14, Jjunsso,
Sunmist, Sayyedabbasjaer, Mikael400, DanBalance, KasparBot, ChesterThinks, Sam eastland, Anti-Keith, CAPTAIN RAJU, Abdivetclinic.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, Visorstu, Itai, Head, Wilbern
Cobb~enwiki, Raul654, David.Monniaux, Donarreiskoer, Robbot, Murray Langton, Altenmann, Romanm, Seglea, Jondel, Cyrius,
Enochlau, Matthew Stannard, Giftlite, Benji Franklyn, Leyman, Aspenlogic, Pbryan, Rookkey, Fjarlq, Jason Quinn, AlistairMcMillan, Alvestrand, Edcolins, Wmahan, Pgan002, Latitudinarian, DragonySixtyseven, Maximaximax, Bodnotbod, Iantresman, Neutrality,
Urhixidur, Abdull, JamesTeterenko, Rhobite, Pjacobi, Vsmith, ArnoldReinhold, Abelson, Kwamikagami, Diomidis Spinellis, Coolcaesar, Smalljim, John Vandenberg, Polluks, Zr40, Martg76, Wrs1864, Pearle, Mdd, Jumbuck, PaulHanson, Walter Grlitz, Interiot, Ashley
Pomeroy, Apoc2400, Cliandis, 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 Sby, Gimboid13, Debsdelectables, Don Bratt, 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, ArsniureDeGallium, Jpbowen, Mikeblas, Zwobot, Leeroyjenkins, Mysid, TimK MSI, Thomas H. White, Dingy, Inconsequential, Wknight94, Avraham, 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, Adpete, DHN-bot~enwiki, AKMask, Gsp8181, Monsuco, TKD, LouScheer, Mr.Z-man, Juhlster1021, MrRadioGuy, Cybercobra, Bovester,
HarisM, Andrei Stroe, Ohconfucius, SashatoBot, Esrever, Ozhiker, Kuru, Disavian, Sobullubos, NongBot~enwiki, Drae, J5hale3, Domitori, 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, MSBOT, 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, Je 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, Lantay77, Ottawahitech, Hrudaya, Rollinsk, Razorame, Stephengmatthews, BOTarate, Aleksd, StevenDH, Johnuniq, DumZiBoT, Alphaknave, XLinkBot, Pichpich, MystBot, ThatWikiGuy, Addbot, Chembeth, Knight of Truth, Fgnievinski, Hermite~enwiki, Wirpstein, WaltonBC, 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., FrescoBot, WikiDonn, Steve Quinn, Geek2003, DrilBot, TAeiluj, Pinethicket, I dream of horses, Jadedrick, Tinton5, RedBot, Noel Streateld,
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, Horndinkle, GoingBatty, 4meter4, Hhhippo, ZroBot, 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, TheUnnamedNewbie, Icemail, BattyBot, Khazar2, JYBot, Grzegorznadolski, Rp8083, Frosty, Stewwie, Jibujames, Rmartinezmo, Ugog Nizdast, 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, Shoujun, 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, Japointe, Subversive, Lmatt, Crazeman, Thecurran, Ahunt, Chobot, Adoniscik, YurikBot,
Whoisjohngalt, RobotE, Jimp, RussBot, Bhny, Akamad, Manop, Gaius Cornelius, Rsrikanth05, Aeusoes1, Dugosz, 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 Awbrey, 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 Jellie, 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, Gtz, 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, Kpuersh, Danieldavidturner76,
Ntizoglou, TuHan-Bot, Wikipelli, P. S. F. Freitas, HiW-Bot, ZroBot, 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, Kickn, 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, Jfdwol, Alvestrand, Peter Ellis,
Tipiac, Gadum, 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 Sby, MarkPos, 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 Cyron, Maggu, Howcheng, Saper, BertK, Danlaycock, Tachs, TimK MSI, Ninly, Larroney, Bensons, Thomas Blomberg, Eteru, SmackBot, Unyoyega, Eskimbot, Mauls, David H, Donama, Kmarinas86, MalafayaBot, DHN-bot~enwiki, Addshore, DinosaursLoveExistence, Cybercobra, Derek R Bullamore, Ohconfucius, Ozhiker, John, CmdrObot, R9tgokunks, Usgnus, Bioran23, Cydebot, Sa.vakilian, Kozuch, Dweiss,
Rjm656s, Thijs!bot, ITU, Gkhan, Harryzilber, Jahoe, Dcollard, Avicennasis, Adam Grenberg, Xtifr, Ashishbhatnagar72, Crunkcar,
RockMFR, J.delanoy, BandwidthSeek.Net, Maurice Carbonaro, AKA MBG, Sukee3, ABlockedUser, VolkovBot, RingtailedFox, TXiKiBoT, Youlia~enwiki, JhsBot, Yk Yk Yk, Altermike, AlleborgoBot, Pigdog234, Byassine, SieBot, Yintan, D'Ranged 1, Alexbrn, Lightmouse, 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, 10metreh, 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, Helpful 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, Taimurijaz97, 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 fjttrade
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, Savantpol, 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, Lowellian, P0lyglut, Yosri, Rursus, Texture, Jre, Meelar, Bethenco, Diderot, Rasmus Faber, Davodd, 75th Trombone, Moink, Hadal, VincentZ, 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, Sundar, MrSnow, Siroxo, Rchandra, Djegan, AlistairMcMillan, Macrakis, Solipsist, Alvestrand, Uzume, Lakefall~enwiki, Bobblewik, Ragib,
Golbez, Christopherlin, Scurra, Wmahan, Neilc, Stevietheman, Wikiwiki~enwiki, RWolf, Fishal, Gadum, Utcursch, Alexf, Knutux,
Slowking Man, Yath, Sonjaaa, LucasVB, Quadell, Antandrus, Beland, Joeblakesley, OverlordQ, Dnas, MistToys, Piotrus, Am088,
Jossi, Marcschulz, CaribDigita, Rdsmith4, Gsociology, Rattlesnake, Kevin B12, Bodnotbod, ICTlogist~enwiki, Marc Mongenet, Thparkth, Neonstarlight, Cynical, Gscshoyru, Neutrality, Urhixidur, KeithTyler, Joyous!, Goobergunch, Karstimmer, Klemen Kocjancic,
Syvanen, Ratiocinate, Chmod007, Zondor, Adashiel, Trevor MacInnis, TheObtuseAngleOfDoom, Grunt, Iceamephoenix, EagleOne,
Tobias Wolter, Bluemask, Millisits, Khefri, Mike Rosoft, R, Freakofnurture, Monkeyman, Sparky the Seventh Chaos, Jiy, GoodStu,
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, Gareld226, InShaneee, Cdc, Malo, Bart133, DreamGuy, Lugevas, Marianocecowski, 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, Computerjoe, Reaverdrop, Freyr, Versageek, MIT Trekkie, Justin5117, Redvers, Voxadam, YixilTesiphon, Ceyockey, Richard Weil, TimMartin, Kznf, Kenyon, Squiquifox, Scottbell, Sharprs, Stephen, Stuartyeates, Weyes, Thryduulf, Angr, Kelly Martin, The JPS, Simetrical, 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, Jash, FayssalF, Titoxd, Kiba, Splarka, TekeeTakShak, Mirror Vax, Mark Elliott, Soph, JeremyMcCracken, Doc glasgow, HJV, Crazycomputers, GnniX, 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, Miy900, 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, Sceptre, Blightsoot, Hairy Dude, Jimp, Brandmeister (old), Tznkai, Jetheji, MMuzammils, RussBot, Jtkiefer, Muchness, Peter S., Severa,
Anonymous editor, Briaboru, Chroniclev, Expertu, Gardar Rurak, SpuriousQ, Fabricationary, Oliverisyourdaddy, Samuel Curtis, WayneRay, 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, Daemon8666, 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, Spliy, ArielGold, Ilmari Karonen, RunOrDie, Zeroinbarnotation, Kungfuadam, Djr xi, Ben D., Cotoco, Jasn, NeilN, ChewT, Maxamegalon2000,
MansonP, Auroranorth, DVD R W, Finell, CIreland, Dusso Janladde, Trekkie711,
robot, Sycthos, Computageek95, Dylanthalus,
Jmchu, Veinor, Politik426, Themightyone, SmackBot, YellowMonkey, Elonka, Ashenai, Jamott, Classiclms, KMcD, Bobet, TheFloppyOne, 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, Xaosux, 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, Gracenotes, 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, Gareld 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 Soue, 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, DylanW, Clean Copy, Weregerbil, Astroview120mm, Xagent86, Drphilharmonic, Jklin, AndyBQ, Acdx, Where, Mitchumch, Reliablesources,
Curly Turkey, Pilotguy, Kukini, Wossi, Ohconfucius, Cyberevil, Fujisher, 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, Paladinwannabe2, Johnnyssh, 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 Brightside, 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, Linkspamremover, Shawry 00, FancyPants, Woodshed, 2dogs, Tawkerbot2, Dlohcierekim, Yashgaroth, Daniel5127, Filelakeshoe, Nikk32, Erikringmar, 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 Entity 2, Oden, MikeWren, Phatom87, AndrewHowse, Cydebot, Karimarie, Cahk, Mblumber, Peripitus, Ryan, Mike Christie, Johnny-5,
Steel, UncleBubba, Chris21192, Gogo Dodo, BlueAg09, Icewindresnow, 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 Terric, 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, Mentisto, Porqin, WIkiHorseMan, Sunshine22 858, KrakatoaKatie, Gossamers, AntiVandalBot, Speedysam, AbstractClass, Jsnruf, 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, Dylan 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, Babyface123, Bongwarrior, VoABot II, Junie dilitori, Hhhhgoteam, AznShortBoi8021, VRoscioli, Rpgprog, Rscash22, Doug Coldwell, Rivertorch, 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, Interop, Spellmaster, 3idiot, Jacobko, Arfan, DerHexer, Kgeischmann, Wikigreatest, Ostaph7, Bitbit, Aviaris, Abbos,
HiB2Bornot2B, B9 hummingbird hovering, Stephenchou0722, Timknell, EtienneDolet, Hdt83, MartinBot, Michael Podgorski, Sjjupadhyay~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, Deagro, 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, MoogleEXE, Jesant13, Mike Cherim, Jreferee, Mike.lifeguard, Octopus-Hands, Golfballock, Enchantian, Monkeyman393, Katalaveno, Smeira,
Guade00, SpigotMap, Starnestommy, Ryan Postlethwaite, J.puckett, Jigesh, Mikael Hggstrm, 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, Jao Gonzales, Use the force, Nessdude14,
Link 991, Editmachine, Marcin Suwalczan, West wikipedia, Dorftrottel, Bwaav, RjCan, Steinberger, Mlewis000, Funandtrvl, KillerCRS, Spellcast, Lights, X!, Devonreilly, King Lopez, VolkovBot, TreasuryTag, Larryisgood, Thedjatclubrock, Raza514, Orphic, Derekbd,
MarcRS, Imacg3, Reymysterio01, TheRhani, Bry9000, Gluttenus, Majoreditor, MagicBanana, Freewayeric, LeilaniLad, Barneca, Maxtremus, Philip Trueman, JayEsJay, Eric outdoors, Drunkenmonkey, Domstabsdogs, Frigglinn~enwiki, TXiKiBoT, Ageing Geek, Mercurywoodrose, 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,
Cremepu222, 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, Grassmaker, Kevin66, Richard Ye, Calliopejen1, Tiddly Tom, Moonriddengirl, Euryalus, Kwirky88, BotMultichill, Gannzor, Gnoluyr, S M
Woodall, Krawi, Harrystown, Geekmax, Lemonash, Callipides~enwiki, Gerakibot, Missy Prissy, YourEyesOnly, Parhamr, Caltas, Perspecto, 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
ngers, Shreyash02, Tiptoety, Radon210, Oda Mari, Elcobbola, Elmidmibbs, Yatesie, URBOSAUR, Hiddenfromview, Jazzilla, Tuuuuuuuubes, Diverock, Puremind, Scott981992, Krapface, Aruton, Makemebad~enwiki, Oxymoron83, MangaFreak0, Smilesfozwood, AngelOfSadness, Nuttycoconut, Sparsh717, Lightmouse, Malunis T, KathrynLybarger, Yamaka122, Ceas webmaster, BenoniBot~enwiki, Poserxox, Dillard421, Stephen Shaw, Svick, Leonidasthespartan, Promodulus, C'est moi, Spartan-James, JohnnyMrNinja, Anchor Link Bot,
IamYossarian, Modelun88, Tfcollective, Wiggleintatter, Wisejoker, Wiknerd, Maoosnik, 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, Ankiththegreat, 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, Cenarium, Dpiccuirro, Not Zilla3, Jotterbot, LOLPEAR, Hardcoregayslaveman, Jp5508, Mrguythefourth, Jivadent, Joke321~enwiki, I amm
Beowulf!, Kuka369, CMW275, Dekisugi, Greatyingsock, Seth662, Dorgan65, Pamela Gardiner, Thehelpfulone, Expert at this, Thingg,
Ominousguardian, Tehmechapope, Aitias, YTMND64, Murali nmv, Musicmaniac15, NitroOx, Dickguertin, UrsaLinguaBWD, PCHSNJROTC, 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, Jsoer, Rorenc, 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, Phillejay, 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,
Guydrawers, 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, ArthurBot, 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, Trappist the monk, DriveMySol, TangoFett, Lotje, Jarmihi, Duoduoduo, Phil A. Fry, Kitfoxxe, Tbhotch, Mileshalverson, FelixtheMagnicent,
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, Checkingfax, 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, Cntras, Hazhk, Aurora Glory Paradise, Joshua Gyam, 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, Lymaniy, Bryte507, Shueman117, Abb2webb, Hungryce, Prinsgezinde, KasparBot, MB298, , SandipBhandari12,
Arifys, Fdfexoex, ScholarM, Sandenig, Chenthil Vel, Singular Near, Hhuan, Zerogravity89, GreenC bot, Robot psychiatrist, Outaouaisregina, Gzkefpro, Motivao and Anonymous: 2056
Internet Control Message Protocol Source: https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol?oldid=729681745 Contributors: 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, Graham87, 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, Vinaiwbot~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, Kgeischmann, Gwern, 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 Reborn, 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, ZroBot, 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, DNPROJECT, KasparBot, Fosskevin and Anonymous: 223
Internet Engineering Task Force Source: https://en.wikipedia.org/wiki/Internet_Engineering_Task_Force?oldid=724750849 Contributors: 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, Paulehoman, Blobglob, Suruena, Mindmatrix, Uncle G, Bkkbrad, Knuckles, Graham87, Rjwilmsi, Tim!, Koavf, Darguz Parsilvan, FlaBot, Guanxi, Chobot, Zimbabweed, YurikBot, Wavelength, Borgx, FrenchIsAwesome, Howcheng, Scs, Rob evans, Matthewdingley,
Jules.LT, Ninly, E Wing, Jcmarcores@msn.com~enwiki, SmackBot, FocalPoint, Bazza 7, Charlierichmond, Bluebot, Philosopher, JonHarder, 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, Adzinok, Hardaker, Funandtrvl, VolkovBot, TXiKiBoT, Bob103051, Luksuh, Pigdog234, SieBot, BotMultichill, Flyer22 Reborn, Behind The
Wall Of Sleep, Cbl62, Hatster301, Athletic ro, 718 Bot, CodeCaster, Jereyschiller, Jovianeye, Addbot, Ghettoblaster, Mabdul, Tothwolf, Ridwan.redo, AnnaFrance, Jarble, Abhayakara, HerculeBot, Sonix, Legobot, Luckas-bot, Yobot, Amirobot, AnomieBOT, Rubinbot,
Coopkev2, Materialscientist, ArthurBot, Xqbot, Khajidha, Miracleworker5263, TruthPraiser, BuStuer, Aperson1234567, HJ Mitchell,
Lotje, Vrenator, EmausBot, WikitanvirBot, Gamliel Fishkin, ZroBot, 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, Soa Lucifairy, Trackteur, 2014Best and Anonymous: 91
Internet Message Access Protocol Source: https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol?oldid=737980635 Contributors: 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, Johnjosephbachir, Anton Mravcek, Jonabbey, Fleminra, Joconnor, Rick Block, Sdsher, Mboverload, Rchandra, AlistairMcMillan, Falcon
Kirtaran, Espetkov, Joseph Spiros, Nomeata, LiDaobing, Robert Brockway, Pitr, Anirvan, Jlang, Hobart, EagleOne, JTN, Rich Farmbrough, 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, BrdBjerkeJohannessen, 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, Speedoight, Erpingham, Rwxrwxrwx, 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, T, Zac67, Mouse Nightshirt, Trou, NongBot~enwiki,
Adam Marsh, Ktinga, Beetstra, Larrymcp, NaturalBornKiller, RG~enwiki, MTSbot~enwiki, Peyre, Koweja, Caiaa, Eliashc, Lathspell,
Beno1000, Wsheward, Z4ns4tsu, Mloughran, Ivan Pozdeev, Walling, Danitaz, Pgr94, Chrisahn, Equendil, UncleBubba, L.Petrlik, Tawkerbot4, Cosmoincarlow, Johayek, Glenn Anderson, Thickycat, SusanLesch, Escarbot, TravisHein, StevenMcCoy, Tgwizard, JAnDbot, Rsforward, Sophie means wisdom, R27182818, Enjoi4586, BlueRobot~enwiki, Ersalan, FisherQueen, P00r, Sagabot, Doodledoo, AlexJTaylor,
J.delanoy, TimoSirainen, NerdyNSK, Cpiral, AntiSpamBot, SJP, DaleKieing, Juliancolton, , Ale2006, Fuzzygenius, Mdcougar, 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, DerBorg, V.s.mousavi, DumZiBoT, Danejasper, Brandonsturgeon, 13 of Diamonds, Nekiko, Avisp~enwiki, Nemec~enwiki, Addbot, Mabdul, 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, ZroBot, , 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 Derksen, 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, Antiuser, Elfguy, Roboto de Ajvol, Hairy Dude, Stephenb, Manop, Yyy, Varnav, NawlinWiki, V-ball, Grafen, Je Carr, Maerk, DeadEyeArrow, 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, Conversion script, UncleBubba, Bridgecross, Jack Phoenix, Thijs!bot, Epbr123, O, Mojo Hand, Escarbot, Cyclonenim, AntiVandalBot, Widefox, Wayiran, Altamel, Altesys~enwiki, Ppchailley, JAnDbot, Dan D. Ric, Jheiv, Enjoi4586, Bouktin, Drugonot, Magioladitis, JamesBWatson, Kgeischmann, 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, AlleborgoBot, Nightraider0, EverGreg, Kbrose, SieBot, Richard Ye, Nubiatech, BotMultichill, Yintan, Bentogoa, Tezdog, Mahabub398, Oxymoron83, Byrialbot, Mailtomeet, Florentino oro, Pinkadelica, Denisarona, ClueBot, Bjornwireen, NGNWiki, RFST, Blanchardb, Otolemur crassicaudatus, DragonBot, Alexbot, Anon lynx, Coralmizu, PixelBot, Cynthia Rhoads, Yausman, Versus22, Johnuniq, Apparition11,
Erodium, DumZiBoT, Editorofthewiki, BodhisattvaBot, Defyant, NeoNorm, SkyLined, Karl McClendon, Kurniasan, Rabbit67890, Nubcaike, 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, Capricorn42, 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 Grith-Jones, Nugzthepirate, CocuBot, Satellizer, FGont, Cverska, Rezabot, Widr, , 2w133, Northamerica1000, Allecher, 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, Camyoung54, Melonkelon, Tentinator, Maura Driscoll, 9445mid, Ginsuloft, Jsennek, UY Scuti, Weknowna, FrB.TG, Mr. Smart LION, Kinetic37, Tacmamaeujnayn, Devesh142a, Ssaz 12, Mehnames, ScrapIronIV, Cherdchai Iamwongsrikul, DanWiki1997, Timothyjosephwood, 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, Doradus, 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, Abdull, 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,
Duman~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, CecilWard, 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 Franois, 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, T, 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., DumbBOT, NMChico24, Thijs!bot, Epbr123, Wikid77, Hcberkowitz, Headbomb, Electron9, JustAGal, Ekashp, Perfectpasta, Xeesh, Mentisto,
AntiVandalBot, Konman72, Luna Santin, Widefox, Seaphoto, Smartse, Labongo, Storkk, JAnDbot, Harryzilber, Mwarren us, Holylampposts, Acroterion, Enjoi4586, Magioladitis, Parsecboy, VoABot II, AuburnPilot, JamesBWatson, Swpb, Tedickey, AliMaghrebi, Jatkins,
Rich257, Jrogern, Avicennasis, Edwardando, Logictheo, Techpro30, Papadopa, Inhumandecency, Falcor84, Techmonk, GordonMcKinney, 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, Ngrieth, Svick, Superbeecat, Denisarona, Sitush, Elassint, ClueBot, 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, Thatguyint, 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, ArchonMagnus, 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 Conjurer, 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, Suusion 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, Redeyed 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, Ahoerstemeier, 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, Lus Felipe Braga, Bushsf, Jadams76, AdultSwim, Iridescent, Erencexor,
Odie5533, Electron9, MER-C, Matthew Fennell, Mlewis000, ABF, Jamelan, Kbrose, SieBot, Sephiroth storm, Mygerardromance, FlamingSilmaril, Tanketz, Excirial, Muhandes, Grim pim, Johnuniq, XLinkBot, Addbot, Fluernutter, 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, Fuzheado, Jnc, Nickshanks, Yacht, Snowdog, Jrdioko, Neilc, Rhobite, Naive cynic, Bezthomas, Kundor, Guy Harris, BBird, LFaraone, Blaxthos, Postrach, Xyzzy288, Camw, Daira Hopwood, Marudubshinki, Lionel Elie Mamane, David H Braun (1964), Lukeonia1, YurikBot, Borgx, Nick Watts, EJSawyer, KnightRider~enwiki, Saravask, Unyoyega, MeiStone, Grawity, Frap, Cybercobra, Heywd, Dev920,
Phatom87, Cydebot, Thijs!bot, Electron9, Escarbot, JAnDbot, Magioladitis, KILNA, Algotr, P4k, Pilum, Biasoli, John Nevard, Carriearchdale, Dgtsyb, Deineka, Addbot, Ghettoblaster, DoodleSpeed, Lightbot, Yobot, AnomieBOT, FrescoBot, Uncopy, FoxBot, Dinamikbot, John of Reading, Vgmddg, ClueBot NG, BG19bot, Compfreak7, Cyberbot II, YFdyh-bot, Asdlkfjsalkdgh, Music1201 and Anonymous: 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, SmackBot, Leeanderson, Vald, AutumnSnow, Nbarth, Audriusa, Volphy, Doug Bell, Momet, Roshan baladhanvi, Valodzka, Simon Brady, Hervegirod, DavidLeeLambert, Wayiran, Esmond.pitt, SiobhanHansa, Bostonvaulter, MartinBot, In Transit, Klaus Trainer, SciAndTech, Synthebot, 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, Suruena, 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, WaeMonster, 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, Hamster2.0, Jac16888, Cydebot, Xxsquishyxx, Thijs!bot, Epbr123, Tgwaltz, AntiVandalBot, Bigtimepeace, Xhienne, CosineKitty, Niclas
Wiberg, STBotD, N3ddy, X!, TXiKiBoT, Rei-bot, Milan Kerlger, SieBot, Dwandelt, WereSpielChequers, Enduser32, Flyer22 Reborn,
ClueBot, SchreiberBike, DumZiBoT, Andrewborrell, Dsimic, Addbot, CL, Skyschulz, Favonian, Yobot, AnomieBOT, ArthurBot, Xqbot,
SCRECROW, 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, Zmalmgren, 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, WikitanvirBot, Tanner Swett, Thine Antique Pen, TYelliot, ClueBot NG, Widr, Helpful Pixie Bot, BG19bot, Adityagohad, BattyBot, Deltahedron,
Monkbot, Mohsen shaei 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 purple wikiuser, Zachlipton, Guy Harris, Caesura, Rick Sidwell, Cburnett, Suruena, Nuno Tavares, Woohookitty, DenesVadasz, Casey
Abell, ErikHaugen, HappyCamper, FlaBot, Intgr, Srleer, Borgx, Stassats, NawlinWiki, Steven Hepting, Closedmouth, Extraordinary,
LeonardoRob0t, Sardanaphalus, Leon Hunt, KnightRider~enwiki, Irnavash, KelleyCook, ProveIt, Zanetu, Gilliam, @modi, Snori, OrangeDog, DHN-bot~enwiki, HarisM, Lus 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, .anacondabot, 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,
Mlas, 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, Cuaxdon, AtheWeatherman, Biezl, Luckas-bot, Yobot, Freikorp, AnomieBOT, Materialscientist, Xqbot, Felipebrahm, Sjcjoosten, Ex Puexto,
Belchman, Morton Shumway, Panda-giant, Horcrux92, EmausBot, Helptry, Super48paul, Erianna, LordJe, 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, GnniX, 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, Rmhermen, 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, Mendalus~enwiki, Kagredon, Tea2min, McDutchie, Alexwcovington, Martinwguy, Jpo, Giftlite, DavidCary, Kim Bruning, Kenny sh, var
Arnfjr Bjarmason, Tom harrison, Zigger, SheikYerBooty, Foot, No Guru, Enigmar007, CyborgTosser, Jfdwol, Sdsher, AlistairMcMillan, 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, Henriquevicente, 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 Webber, El C, Phil websurfer@yahoo.com, 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, Wdfarmer, 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, Robertwharvey, 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,
Raaele Megabyte, Alll~enwiki, OKtosiTe, Ian Dunster, MarnetteD, Sango123, DirkvdM, Fish and karate, SNIyer12, Titoxd, Ian Pitchford, 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, Carlosvigopaz, Roboto de Ajvol, YurikBot, Wavelength, TexasAndroid, Hawaiian717, RattusMaximus, X42bn6, Daverocks, Logixoul, DestroyerPC, 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, Xdenizen, 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, MattieTK, Smadge1, Captain Goggles, Aim Here, Julepalme, KAtremer, Incnis Mrsi, Caminoix, Reedy, Ashley thomas80, KnowledgeOfSelf, Hydrogen Iodide, Unyoyega, Lvken7, Rokfaith, Blue520, WilyD, Jfg284, KocjoBot~enwiki, Chairman S., Matthuxtable, Jedikaiti,
Monz, BiT, Alsandro, Andrewkantor, Mslimix, Yamaguchi , Macintosh User, SmackEater, Gilliam, Ohnoitsjamie, Hmains, Betacommand, 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, Leaord, Kidde, Sigma 7, LeoNomis, Ck lostsword, Fyver528, Qwerty0, The undertow, SashatoBot, Lambiam, Harryboyles, Cdills, Kuru, RTejedor, Vincenzo.romano, Sir Nicholas de Mimsy-Porpington, Linnell, Edwy, Kashmiri, Joelo,
Goodnightmush, Antonielly, KenBest, IronGargoyle, Ben Moore, Camilo Sanchez, Tom Hek, Chrisch, Aaronstj, Hanii Puppy, Loadmaster, JHunterJ, Ems2, Noah Salzman, Ehheh, Nayak143, Manifestation, Tdscanuck, MTSbot~enwiki, Rlinnity, Wwagner, Lucid,
Rubena, Emx~enwiki, Iridescent, Casull, Twas Now, Golngton, Beno1000, Jfayel, Zlemming, Courcelles, Linkspamremover, Desolator12, 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, Dynaow, 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, Chase@osdev.org, PhJ, Credema, Sridip, Yellowdesk, Alphachimpbot, Jstirling,
MichaelR., Storkk, Eleete, MikeLynch, Ioeth, JAnDbot, Chaitanya.lala, SuperLuigi31, Leuko, Numlockshy, 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, Kajasudhakarababu, PeterStJohn, Lucyin, Sedmic, Rami R, Inklein, Jatkins, Twsx, Bubba hotep, Manojbp07, Alanbrowne, Bleh999, Indon, 28421u2232nfenfcenc, Creativename, Papadopa, User A1, Bwildasi, Glen, DerHexer, Wdake, Janitor Starr, ChaoticHeavens, Calltech, Seba5618, Oroso, Stephenchou0722, Adriaan, AVRS, PhantomS, MartinBot, Miaers, BetBot~enwiki, Alexswilliams, Ethan.hardman,
Vanessaezekowitz, Kiore, Twitty666, Aladdin Sane, Comperr, Rettetast, Joemaza, Anaxial, Jonathan Hall, Mickytz13, R'n'B, CommonsDelinker, 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, Je G., AlnoktaBOT, Brownga, Philip Trueman, Kyuuseishu,
TXiKiBoT, Oshwah, Masonkinyon, Amphlett7, Zidonuke, Manmohan Brahma, Neversay.misher, Hqb, NPrice, Ngien, Naohiro19 revertvandal, Wingnutamj, Vanished user ikijeirw34iuaeolaseric, Anna Lincoln, Ocolon, Lradrama, Melsaran, Mistman123, JhsBot, Sanfranman59, Jackfork, LeaveSleaves, Tpk5010, Seb az86556, Random Hippopotamus, 1yesfan, Hrundi Bakshi, Wiae, Kaustubh.singh, Maxim,
Rjgarr, Ngch89, Milan Kerlger, 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, Coee, 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, Oxymoron83, 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, Spitre, MarmotteNZ, Stickee, Rror, Agentlame, Rreagan007, Klungel, Skarebo, WikHead, ErkinBatu, NellieBly, Galzigler, KenshinWithNoise, Alexius08, Kgoetz, Osarius, HexaChord, JimPlamondon, CalumH93, Ratnadeepm, Ghettoblaster, NNLauron, AVand, Wluka, Donhoraldo, Love manjeet kumar singh, Melab-1, Mabdul, Ente75, Non-dropframe, Raywil, Tothwolf, Grandscribe, Elsendero, Ronhjones, CanadianLinuxUser, Scherr, Debloper, Lindert, Ka Faraq Gatri, MrOllie, Download, Eivindbot, 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, Gtz, Geph, Lucy-seline, Jim1138,
789455dot38, 9258fahskh917fas, Piano non troppo, AdjustShift, Law, Remixsoft10, RandomAct, Flewis, Materialscientist, Mcloud91,
9marksparks9, Twistedkevin, Felyza, Rabi Javed, Johnny039, Waterjuice, GB fan, Ashikpa, Xqbot, TheAMmollusc, Holden15, Capricorn42, CoolingGibbon, Biometricse, Nasnema, Mononomic, Jewang, Inferno, Lord of Penguins, HDrake, Pmlineditor, Nayvik, RibotBOT, 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, Trimaine, Pepper, Mthomp1998, Fobenavi~enwiki, Gauravdce07, Michael93555, Cps274203, Ishanjand, Photonik UK, Clsin, Jjupiter100,
Kwiki, Dhtwiki, WellHowdyDoo, DivineAlpha, Sanaskar, Citation bot 1, Skomes, DrilBot, Pinethicket, I dream of horses, Abazgiri, Vicenarian, Elockid, AR bd, 10metreh, Martin smith 637, Skyerise, Ngyikp, Brsh, 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, Pontiacsunre08,
Stealthmartin, BjrnBergman, 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,
ZroBot, 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, Icerearceus, Arman Cagle, THeReDragOn, OllieWilliamson, L Kensington, Bachinchi, Gsarwa, Donner60, Wikiloop, Djonesuk, Pun, Adityachodya, ChuispastonBot, Wakebrdkid, GrayFullbuster, Sven Manguard, DASHBotAV, Rocketrod1960,
Blu Aardvark III, Jekyllhide, Cgt, Sonicyouth86, Petrb, MetaEntropy, ClueBot NG, Cwmhiraeth, Nothingisoftensomething, Frankdushantha, JetBlast, Matthiaspaul, NULL, Satellizer, Sparkle24, Dhardik007, Adair2324, WorldBrains, SunCountryGuy01, Feedintm, Doh5678,
Sainath468, Muon, Mesoderm, O.Koslowski, Geekman314, 149AFK, Joshua Gyam, 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, Dainomite, 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, Ziiike, 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, Oy284, Suspender
guy, Aethyta, Lycanewolfe, Nelsonkam, TranquilHope, ChamithN, Endlesss2014, Epicalagent56, Derpmeup, Trevor35on, Mathewisgreat,
Epigogue, Ign christian, Kethrus, ToonLucas22, Prakashmeansvictory, Harshkohli1, Kharl denis, Innite0694, 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 Derksen, The Anome, Stephen Gilbert, Manning Bartlett, Amillar, Andre Engels, Gsl, Aldie, Nate Silva, M~enwiki, William Avery, DavidLevinson, Heron, B4hand, Edward, PhilipMW, Michael Hardy, Chris-martin, MartinHarper, Todd, Looxix~enwiki, Mkweise, Ahoerstemeier, 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, Gadum, Pamri, Mendel, Inversetime, Ravikiran r, Eldiablo~enwiki, Sridev, Parakalo~enwiki, Tooki, Kramerino, Lazarus666, Paparodo, 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 August, 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, Giraedata,
SpeedyGonsales, Chirag, Nk, Bdamokos, Wrs1864, Helix84, Krellis, Nsaa, Mdd, Wayfarer, Ogress, Alansohn, Gary, Ghostalker, SnowFire, Guy Harris, Free Bear, Lectonar, OSUKid7, Caesura, Snowolf, Simon, 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, Prashanthns, Andybryant, Palica, Marudubshinki, Kesla, Runis57, Jannetta, Chupon, Jetekus, Josh Parris, Casey Abell, Ketiltrout, Dpark, Johnblade, 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 Sbl cz, Joodas, Jonwatson, Bhny, Tyler.szabo, SpuriousQ, Kirill Lokshin,
Joebeone, Grubber, Shell Kinney, CambridgeBayWeather, Eleassar, Pseudomonas, Abarry, Friday, NawlinWiki, ENeville, Grafen, RazorICE, 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, Jonathanwagner, 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, Natarajuab, Rejax, Martinkop, Adj08, Sir Nicholas de Mimsy-Porpington, Tim Q. Wells, Nux, Goodnightmush, Highpriority, Noahspurrier,
Michael miceli, IronGargoyle, Morten, Vanished user 8ij3r8jwe, MarkSutton, Krampo, Yms, Mr Stephen, Dicklyon, Kim Rubin, Waggers, Lachlancooper, Anonymous anonymous, IReceivedDeathThreats, Ryulong, Wrlee~enwiki, Citicat, Nbhatla, Kvng, Rcannon100, Lee
Carre, Hetar, Iridescent, Penno, Shoeofdeath, Beno1000, Courcelles, Drwarpmind, Tnneid, Danlev, Tawkerbot2, Ouishoebean, StephenFalken, 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, Gkhan, Caper13, JAnDbot, Niaz, Vmguruprasath,
Dereckson, MER-C, Dcooper, LittleOldMe, Enjoi4586, Ideoplex, Bakilas, VoABot II, Ishikawa Minoru, RoscoMck, Davidjk, JamesBWatson, 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, Wilson.canadian, Jrodor, Lordeaswar, Cometstyles, Inomyabcs, Wily duck, Inwind, S (usurped also), Boikej, Pluyo8989, Mlewis000, Lights,
HamatoKameko, 28bytes, GreYFoXGTi, VolkovBot, Wire323, ABF, Adityagaur 7, Je G., Speaker to Lampposts, Lears Fool, Metaclassing, Saddy Dumpington, Khat17, Philip Trueman, DoorsAjar, Oshwah, BuickCenturyDriver, DSParillo, GDonato, Dmottl, Chimpex, Anna Lincoln, DennyColt, Leafyplant, BwDraco, PDFbot, BotKung, VidGa, Ibenr, Rjgodoy, Aslambasha09, Coriron, Ayengar,
Sunilmalik1107, Spitre8520, Henrikholm, AlleborgoBot, PGWG, Jchristn, CMBJ, LOTRrules, Kbrose, SieBot, Mikemoral, Nubiatech, Scarian, Jauerback, Caltas, Matthew Yeager, Triwbe, Yintan, GlassCobra, Bobdrad, Happysailor, Flyer22 Reborn, EnOreg, Oxymoron83, 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, Bcherwrmlein, 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, Syntaxsystem, Djmoa, Scientus, Vishnava, CanadianLinuxUser, NjardarBot, Amtanoli, Cst17, MrOllie, The Athlon Duster, Ottosmo, Evillawngnome, Roux, Doniago, TinyTimZamboni, Lockcole, Tide rolls, OlEnglish, Teles, Zorrobot, MuZemike, David0811, Wireless friend,
Another-anomaly, Dcovell, Peni,
, Enduser, Angrysockhop, ZX81, Yobot, WikiDan61, Karelklic, Fraggle81, Cm001, 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, NfrMaat, Jerey 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 Waters, Rushbugled13, Jschnur, SpaceFlight89, Isofox, Fumitol, Warrierrakesh, Bmylez, Mohitjoshi999, Merlion444, Mmeerman~enwiki,
Yamike, TobeBot, Ashutosh.mcse, Lotje, Asn1tlv, Dinamik-bot, Nemesis of Reason, Bluest, Mattmill30, Fiable.biz, JV Smithy, Tbhotch, 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, PaulWIKIJeery, Mkagenius, Unkownkid123, A930913, Saintends, 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, Northamerica1000, Hallows AG, Palltrast, Mudasir011, Snehasapte, Mark Arsten, Shraddha deshmukh, BJMdeJong, Dmohantyatgmail, Benzband,
Jatinsinha, Avitesh, MrsValdry, CitationCleanerBot, GGShinobi, Roo314159, Falk.H.G., Nathanashleywild, Mahesh Sarmalkar, TranslucentCloud, 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, Franois 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, Praks purushot, Candlelighter, Vtor, 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,
Jrme, 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, Fuhghettaboutit, 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, Firey322, Jonathanstray, ClueBot, Samprul, The Thing That Should Not Be, Spoladore, Enenn, Jeknight, Ji Janouek, 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, Gtz, Xqbot, GrouchoBot, 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, Ulund, 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 Oce 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, Geo97, Puckly, Hadal, Daniel Dickman, Varlaam, NSash, Rick block, Rick Block,
Ferdinand Pienaar, Gadum, 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 Rambling 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, Grblomerth, 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 Kerlger, 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, Addbot, Mabdul, Ronhjones, Vishnava, Fluernutter, Download, Coasting, , Kevinmcolaco, Legobot, Luckas-bot, Yobot, Ptbotgourou,
TaBOT-zerem, Pcap, Xqbot, Joshyedward, Ute in DC, RibotBOT, SassoBot, Chatul, Ez leviathan, HRoestBot, RedBot, JnRouvignac, Tbhotch, EmausBot, John of Reading, WikitanvirBot, BabsiSnoecks, GoingBatty, Jera22, Thecheesykid, ZroBot, 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, DennisDaniels, 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, Mrje, 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, Innoid, Roland2~enwiki, Hoziron, Woohookitty, NewbieDoo,
Mu301, Nuggetboy, Ilario, Oldadamml, Nameneko, Ruud Koot, Goodgerster, Brentdax, KymFarnik, Dolfrog, Davidfstr, Mangojuice, Toussaint, Marudubshinki, Yoric~enwiki, Chun-hian, Kbdank71, Mendaliv, Pwv1, Icey, Ketiltrout, Sjakkalle, Rjwilmsi, Tizio, Angusmclellan, 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, Xaosux, Gilliam, Duke
Ganote, Ohnoitsjamie, Bh3u4m, Bluebot, Klasbricks, LinguistAtLarge, JMSwtlk, Persian Poet Gal, SeeAnd, MK8, Jprg1966, Thumperward, 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, Wateres, 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, IanOsgood, 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, Autocratique, 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, Funandtrvl, Reelrt, Ottershrew, Red Thrushs 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, Blanchardb, Takeaway, Robert Skyhawk, Iwantitalllllllll, Skytreader, Jotterbot, Hans Adler, Noosentaal, MelonBot, Chinabualo, 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, Andylmurphy, 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, Jerey Mall, Gilo1969, XZeroBot, Miym, GrouchoBot, Papercutbiology, RibotBOT,
Gbruin, Russell Joseph McCann, Shadowjams, A.amitkumar, Apwestern, Captain-n00dle, Manpreett, Edgars2007, FrescoBot, Mark Renier, Mthrandir, DivineAlpha, Citation bot 1, I dream of horses, Elockid, HRoestBot, LittleWink, 10metreh, Jonesey95, Jschnur, , Robo
Cop, Txt.le, Trappist the monk, Cmdodanli, , Callanecc, TheTechFan, Specs112, Diannaa, WikiTome, Suusion of Yellow, 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, MusikAnimal, J991, Compfreak7, Loriendrew, Nbrothers, Thomasuniko, Usman&muzammal, Teammm, Bobbygammill, Amitkumargarg88, Cyberbot II, Dexbot, Rezonansowy, Majilis, Damian.rouson, Steamerandy, Kooginup, Svensson1, Cathry, Ueutyi, Seanhalle, Vanamonde93,
Thetimperson, Grouphardev, Carrot Lord, Franois Robere, Wiki4Blog, Olmerta, Tentinator, Captain Conundrum, Komarov om, Alhade,
Uwe Lck, Ginsuloft, Inaaaa, Danielmask, Racer Omega, Lucky7-phool, Impsswoon, Fastdrummer, Monkbot, Theanimalover, Abdallasyam, 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, Innite0694, Rajat293, KasparBot, Jose Diaz Sanchez Pablo
Garica Flores, Aro88, Grabtricks, The Quixotic Potato, LibbyLaneLonne, 45La45Lo33, Lukaslt13, Sahil qutub, Qzd, Music1201, CaptainGummyBearz, 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 Contributors: 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, Snaekid,
Pmj, Rjwilmsi, Makru, FlaBot, Ian Georey 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 Solis in Australia, Az1568, Chetvorno, JohnTechnologist, CmdrObot, Ale jrb, BeenAroundAWhile, Yukoba~enwiki, Alaibot, Dragont,
Thijs!bot, Simeon H, Escarbot, Agnvoip, Alphachimpbot, JAnDbot, Harryzilber, Jan Friberg, Sln3412, Albany NY, Bellhead, Verkhovensky, AlephGamma, Kgeischmann, Calltech, I-baLL, Zahakiel, MartinBot, DrDorkus, Jim.henderson, Nono64, J.delanoy, Peter Chastain, 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, Mlas, XLinkBot, Deadlyturtletank, WikHead, SilvonenBot, Dgtsyb, Addbot, AkhtaBot, Download, Numbo3-bot, Lightbot, Loupeter, Zorrobot, , Luckas-bot, Bunnyhop11, KamikazeBot, 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, Earaps, 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, Gadum, Utcursch, Abu badali, Formeruser-81, Antandrus, Beland, 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, Triona, 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, Anthony Appleyard, Saa, Qwghlm, Tek022, Jeltz, SlimVirgin, Water Bottle, DreamGuy, Snowolf, Wtmitchell, Velella, Fledgeling, Wtshymanski, 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 Sby, 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, RussBot, 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, Dbrs, DeadEyeArrow, Nescio, Groink, Xedaf, Thomas H. White, Werdna, Djdaedalus, Gohiking, Wknight94, Searchme, FF2010, Sadistik, Light
current, 21655, Deville, Zzuuzz, MaNeMeBasat, ToyoWolf, Nelson50, HereToHelp, Tyrenius, Spliy, 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, Kintetsubualo, Alsandro, SmartGuy Old, Gilliam, Ohnoitsjamie, Skizzik,
Carl.bunderson, Micwea, Jcarroll, Cabe6403, Kmarinas86, Science3456, Hraefen, Armeria, Schmiteye, Chris the speller, Kharker, Wuyz,
MK8, Miquonranger03, Domthedude001, SchftyThree, 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, Cottingham, Ck lostsword, Kukini, Qmwne235, The undertow, Petr Kopa, Quendus, Kuru, Euchiasmus, Vgy7ujm, Arthuralee, J 1982, Andrewjuren, Kipala, GCW50, Coredesat, Minna Sora no Shita, Gwest1, MonstaPro, Mr. Lefty, Otterman665, A. Parrot, MarkSutton, Slakr,
Beetstra, Kondspi, Bendzh, Waggers, CUTKD, E-Kartoel, Butler david, Dr.K., Peter Horn, Kvng, Hu12, Ginkgo100, Levineps, DouglasCalvert, OnBeyondZebrax, White Ash, Spark, Cynric~enwiki, IvanLanin, Stereorock, Az1568, Courcelles, Linkspamremover, Bannanas,
Waer, Tawkerbot2, Cassamine, Daniel5127, Chetvorno, Dan1679, Jchittoor, Fritz28408, The Haunted Angel, JohnTechnologist, IanWills, Mosaa, 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, Escarbot, Grandin, Mentisto, 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, Geniac, 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, AntiSpamBot, RoboMaxCyberSem, GhostPirate, NewEnglandYankee, Fountains of Bryn Mawr, Nwbeeson, Micz.or, SJP, Gregtzy, Ontarioboy, Liliana-60, BigHairRef, Smitty, Prhartcom, 2help, Cometstyles, Jamesontai, Znx, Davidezell, Bonadea, Useight, Eduardo Mendona
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 Chan,
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 Sapience, 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, Drmies, Frmorrison, DanielDeibler, Wikijens, CounterVandalismBot, Skeeball93, Niceguyedc, EconomicsGuy, Gointv, Mayawi, Bob bobato, Neverquick, Nseidule, Chelseax3rose, Excirial, Jusdafax, Anquiliquest, Moreau1, Rcooley~enwiki, Wikitumnus, Eeekster, Conical
Johnson, Samx0x0x0, Abrech, Dropsore, Atomicfro, Vinhchaule, Arjayay, Jotterbot, Tinje, 7&6=thirteen, Razorame, Dekisugi, Deviljin21, SchreiberBike, Mlas, Safreeman, Q1w2e88, Calor, Girtyzg, Thingg, Maczad, Aitias, Footballfan190, 500million, Versus22, Sleddog71, Superherogirl7, Johnuniq, Egmontaz, Vanished user uih38riiw4hjlsd, Vanished User 1004, DumZiBoT, Qwertyqwertqwert, Aristokrata, Willem103, XLinkBot, Hotcrocodile, Spitre, Bar uurum, Gnowor, Andyl620, Vividenblem, Stickee, Rror, Bradv, Ed1234ab,
21stCenturyGreenstu, Avoided, WikHead, SilvonenBot, Badgernet, Noctibus, Artaxerxes, Subversive.sound, JinJian, S TiZzL3, Radiodata researcher, Milos Stevanovic, Addbot, Mortense, Manuel Trujillo Berges, Fyrael, Captain-tucker, Kingjames528, Otisjimmy1, Friginator, Fgnievinski, Swampre, 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, Albeiror24, 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, Galoubet, Eating Tomatoes, Piano non troppo, Kingpin13, RandomAct, Materialscientist, Citation bot, Anthonypunk1, Beenturns23, Crimsonmargarine, Kirchsw, TinucherianBot II, Timir2, LeX4051, The sock that should not be, Capricorn42, Drilnoth, Tex-linke, Jerey
Mall, Rainshower, Batesmas214, Teamitem, Crabman90210, AbigailAbernathy, TheIntersect, DjbFire, Ab1, Brandon5485, DaleDe, Yoganate79, 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, Hyater, Pankaj2211, EdoDodo, Cnwilliams, Postdeleter, Gryllida, Hsnmoom, Thrissel, Discographer, MAS10, Francis E Williams, Vrenator, Davish Krail, Gold Five, Wiki-Updater 2.0, Everyone Dies In the End, Mttcmbs, Brian the Editor, Suusion 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, Rcsprinter123, TechWriterNJ, Gsarwa, Adbatson, ChuispastonBot, Teapeat, 28bot, Superdehound, Halfbreed m, Cgt, ClueBot NG, Smtchahal, Winsladed08, CocuBot, This lousy T-shirt, BarrelProof, Jayanthkrishna, DobriAtanassovBatovski, Jocelyncarrasco, Snotbot, Crossreradio, Mesoderm, Widr, Reify-tech, Theopolisme, Oddbodz, Helpful Pixie Bot, Ghostshock, Kiwitunza3, Strike Eagle, Titodutta,
Wbm1058, Lowercase sigmabot, BG19bot, Stupidguy24, TCN7JM, Spoons14, Northamerica1000, ISTB351, Commandochris, MusikAnimal, 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, Sirwalterdouglas, Comp.arch, Finnusertop, Ginsuloft, George8211, Noyster, Mrman21, UY Scuti, Meteor sandwich yum, Bballer123456789321,
Esl555666, TrekkieSpeller, Mortierr, HHubi, Crookedy0ungg, Superdragonmonster, Monkbot, Nemasdia5673, Patient Zero, Sssredg,
Phemmyjohnson, Golf, Meep876, 3primetime3, HMSLavender, Idunnowhat, Himisterpie, Beeshal Khadka, Craig Leo Johnson, Scientistmangesh, REDIRECT, SQMeaner, KasparBot, Chand3994, Blamheadshot11, Agricola123, ProprioMe OW, Pulltea, Swissinator,
Filpro, Bigmike88, Bigboombox, Goose121, CLCStudent, Duraka Radio, Jekson Bim, Wobblytabletop, Mariusrobin1981, Westofawesome, Radio batista ide, Su69, Stuthings1234567891011121314151617181920, On the ceiling, Electivo000 and Anonymous: 1504
Semantics Source: https://en.wikipedia.org/wiki/Semantics?oldid=736198078 Contributors: The Anome, Youssefsan, Vaganyik, Ortolan88, 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 Krtzsch,
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 Dingemanse, 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. Lako, Lt-wiki-bot, Donald Albury, SMcCandlish, JuJube, Pred, AGToth, 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, Dalahst, Azymuthca, X201, Nick Number, Mentisto, AntiVandalBot, Shawn wiki, Gioto, Widefox,
TimVickers, Dylan Lake, Danny lost, JAnDbot, MER-C, Shermanmonroe, Jmchambers90, Dcooper, .anacondabot, Daveh1, AndriesVanRenssen, 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, Logan, Botev, SieBot, Nubiatech, Kgoarany, Asder, 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, Rdanneskjold, The singapore ministry of education sucks, AVand, Guoguo12, Landon1980, Friginator, K1US, Aboctok, Ayatniazi, CanadianLinuxUser, Pirtskhalava, CarsracBot, Numbo3-bot, Erutuon, Tide rolls, JAHendler, Krixou, Legobot, Luckas-bot, TaBOT-zerem, Vanished 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, Je, Active Banana, Hpvpp, Dcirovic, Alexey.kudinkin, Llamas4drama'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, Nkkenbuer,
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 Mahan, 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, UninvitedCompany, 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, Aaronbrick, Femto, Kgaughan, Bobo192, Nigelj, Yongxinge, John Vandenberg, Duk, Darwinek, Dtynan, Flammifer, Minghong, Maebmij, Helix84, Krellis, Bijee~enwiki, Andrisi, Phils, Jumbuck, GoClick~enwiki, Alansohn, WickieNcf, Fg, Calton, !melquiades, RoySmith, Wtmitchell, 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, QuickBrownFox, 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,
Fireswordght, DKEdwards, Wiesel 99, Zearin, JzG, Vanished user 9i39j3, Soap, Soumyasch, Bezenek, Nux, Wickethewok, Ernstdehaan, Loadmaster, Optimale, Brainix, Yaxh, Kvng, Syberguru, Hu12, Dreftymac, Paul Foxworthy, Zero sharp, Destro, Danlev, FatalError, 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, GaborLajos, 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, Althena, Samisa.abeysinghe, Happysailor, Darkimmortal, Truthandsanity, Alex.muller, OKBot, Svick, Nattelsker, ClueBot, Blanchardb,
Jusdafax, DavidABraun, Northernhenge, PixelBot, JeDonner, 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, LaaknorBot, Edmund.vonderburg, Liassic, Tide rolls, Zorrobot, Kmacdowe, Menew222, Legobot, Luckas-bot, Yobot, Antonycarthy, KSiimson, Jim1138, Piano non troppo, Ham12343, Materialscientist, Superandoni, ArthurBot, Xqbot, Silver Spoon Sokpop, Clihanger,
Robmanson, RibotBOT, Bahaba, Cartque, 78.26, Intelliproject, Reggaloza, Cjolley101, Danested, Ilovenagpur, Sae1962, Iamfool, Ridvany, 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, IAMTHEORIGINALTED, RenamedUser01302013, Tommy2010, Wikipelli, K6ka, Xi3nt, Bveratudela, ZroBot, F, Access Denied, Oliynykd,
Manoj.aimca2, Coasterlover1994, Blanghals, Donner60, ChuispastonBot, Wjburnett, ClueBot NG, Laurentdk01, Gareth Grith-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, Vineetbattula, Ajjensen13, Skrynauw, Play123play123, Daniele.Brundu, GeneralizationsAreBad, ErdrickLoto, Rimal11, Hippopotomonstrosesquipedaliophobia, 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 Ronahi, Guanaco, AlistairMcMillan, Horatio, Richard cocks, Jaan513, Edcolins, Ragib, ALargeElk, Gadum, 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 Jurosz, 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 Dring, 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, Puersh101, 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, StuOfInterest, 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, DeadEyeArrow, 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, DanielPeneld, WookieInHeat, Aoratos, Commander Keane bot, Yamaguchi , Cunya, Gilliam, Ohnoitsjamie, Hmains, Nmrd,
Mr Barndoor, Skizzik, Chris the speller, Bluebot, SlimJim, Quinsareth, Thumperward, Liamdaly620, Miquonranger03, Hmcnally, LaggedOnUser, SchftyThree, Xx236, J. Spencer, Nbarth, Vbigdeli, Philip Howard, Darth Panda, Edlin, Anabus, Carl007, Dethme0w, Can't
sleep, clown will eat me, AussieLegend, Frap, Ashawley, Nixeagle, MeekSaron, Snowmanradio, JonHarder, Yidisheryid, Addshore, Rgill,
Edivorce, Normxxx, Virtualsfera, Spectrogram, E. Sn0 =31337=, Cybercobra, Valenciano, Jiddisch~enwiki, Richard001, Grahamperrin,
Mini-Geek, Weregerbil, Sigma 7, LeoNomis, Jna 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, Arkrishna, 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, Nunquam 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, Mentisto, SC979, KrakatoaKatie, AntiVandalBot, Blarrrgy, Luna Santin, Seaphoto, Turlo Lomon, Rehnn83, Vanjagenije, Ellenaz, Manionc, 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, AuburnPilot, 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, Ginsengbomb, 12dstring, Jreferee, Gueldenberg, Cpiral, DanielEng, Dispenser, Dominator09, AntiSpamBot, The Transhumanist (AWB), Darrendeng, 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,
Je 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 Kerlger, Nathanielrichards, Flash man999, Manik762007, Mwilso24, Kurowoofwoof111, BigDunc, Aleemqureshi,
Boriszex, Andy Dingley, This acccount is 4 vandalism, Dirkbb, Synthebot, Purgatory Fubar, Oldwes, Monty845, Nickels360, Rainier3,
Fredtheyingfrog, Gabecuevas, Kbrose, Tharcore, SieBot, Casperdog2227, Krawi, Gerakibot, One more night, Dawn Bard, Viskonsas, Timhowardriley, Triwbe, Dibcom, Yintan, Soler97, Lajpatdhingra, Keilana, Flyer22 Reborn, Oda Mari, Nosferatus2007, Jardawien, 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, Martarius, 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, DragonBot, 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, Fluernutter,
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, ArchonMagnus, 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, Kerfuer, 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, Dougofborg, GliderMaven, FrescoBot, Luntrasul, Tangent747, Rhye123, W Nowicki, Recognizance, Zero Thrust, MD66, HJ Mitchell, QuintusQuill, Ragha joshi, DivineAlpha, Maggyero, Intelligentsium, Rajeshmagic, Trueshow111, T3h 1337 b0y, Boxplot, Winterst, Programmer13, Pinethicket, I dream of horses, HRoestBot, Edderso, Deggalega, Jonathandeamer, 10metreh, NinjaCross, NurAzije, LinDrug,
Skyerise, Hoo man, Jschnur, RedBot, Muhen, , Serols, Citypanther, Curtis23, Bgpaulus, Davie4125, Aardvarkzz,
FoxBot, SchreyP, DixonDBot, LogAntiLog, Drawnman247, Dinamik-bot, Vrenator, MrX, January, Allen4names, Aoidh, Nourybouraqadi,
Reaper Eternal, Jerd10, 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, Abufaisal65, F, Angela 2502, MithrandirAgain, Funnysens, Dgd, Howling wolf of the jungle, AManWithNoPlan, Wayne Slam, Ocaasi,
Tolly4bolly, Puneet1507, EricWesBrown, Crazykr, Arman Cagle, Vale Len, L Kensington, Jguy, Mayur, Donner60, Virtualenv, Arnabatcal, 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, Shaddim, Hamiltn, 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, Itikhaarrr, Titodutta, Wbm1058,
SteveWringseld, BG19bot, Pine, Prahim, Jennapresley, Salmank120, Hz.tiang, Tiu, Ceradon, Northamerica1000, Ex-dot, Marcelnache,
P.deshmukh09, Travelour, Joydeep, Altar, Jcdericco, Dynix, Insidiae, Morning Sunshine, Klilidiplomus, Achowat, Wannabemodel, Calcifero, Knodir, EricEnfermero, Yasirilyas, BattyBot, David.moreno72, Labscientist, Pratyya Ghosh, SaadTeenager, Dominic9821, Piasa1,
Vishwajith33, Zatya34, ChrisGualtieri, MrDKing, TC Cannon, Adriancjr, YountLor, Markwaugh117, FoCuSandLeArN, Priyaranjanchampatiray, Cwobeel, Majilis, Hackguard, Codename Lisa, MaggieMidnight, TwoTwoHello, Buspirtraz, Lugia2453, Andro ip, Frosty,
SFK2, Xxtt, Sriharsh1234, Joeinwiki, Ipodsof, Dave Braunschweig, Softwarenod, Moony22, Red-eyed demon, Gregwinwood11, Afoshay, 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, Wikiuser13, 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, X3mole, Zppix,
Abdulrahmanimthihar, Hussa095, Shahnawaz hussain nagori, SDSJAFDHSA, TROLLED81, Shantanuspark, SafeerAhmedAbro, Monaiva, 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, Tanveerdogar, 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, Detter, JonHarder, 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, FluySquid, BG19bot, EditorRob, MrBill3, YFdyh-bot, Werddemer, Monkbot, Shannon hedges and Anonymous: 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, Bender235, 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, Pigman, 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, KnowledgeOfSelf, 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, SundarBot, 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, JAnDbot, 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, Je G., Gbouzon, TXiKiBoT, Oshwah, Guillaume2303, PaulTanenbaum, ^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, Starre777, Nyoro n, Addbot, Xp54321, ConCompS, Willking1979, Rmalouf, Vishnava, Coeeassured, Numbo3-bot, Lpjurca, Erutuon, Tide rolls, OlEnglish, Jarble, Legobot, Luckas-bot, Yobot, Ptbotgourou, Denispir, Raimundo Pastor, 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, Sopher99, Pinethicket, Jonesey95, Full-date unlinking bot, Dude1818, Jauhienij, k, Lotje, Tjo3ya, Reaper Eternal, Kajervi, Brian the Editor, 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, CityOfSilver, 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, Shortenfs, 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, Milesint, 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, KathrynLybarger, Alex.muller, StaticGull, Havarn, ClueBot, Arakunem, A3camero, Dekisugi, StanStandard, Rror, Alexius08, Addbot, , JakobVoss, TaBOT-zerem, Hugoham7, Sillypants85, Sivanov87, Piano non troppo, AdjustShift, Barf73~enwiki, Materialscientist, Citypanes89,
Shaymetcalfe, Isheden, Wgladwin, FrescoBot, Originalwana, Merlion444, EmausBot, Chuchart W, ZroBot, Ego White Tray, Dineshkumar 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, PhilHibbs, 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, Mindmatrix, Pol098, Tabletop, Wikiklrsc, MarkPos, Ajshm, MrSomeone, RuM, Matilda, Graham87, BD2412, Kbdank71, Mendaliv, Snaekid,
Casey Abell, Drbogdan, Rjwilmsi, Koavf, Hulagutten, Rillian, Vegaswikian, Makru, Titoxd, Margosbot~enwiki, RexNL, RobyWayne,
Intgr, Terrx, Srleer, 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, Eskimbot, 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, Courcelles, Tawkerbot2, JohnTechnologist, JForget, CRGreathouse, CmdrObot, Wafulz, JohnCD, N2e, SkylineEvo, Thomasmeeks, Penbat,
Cydebot, Obornp, Gogo Dodo, Hughdbrown, Studerby, Kraky, Tawkerbot4, Ethan01, Kozuch, Lxdbsn, Malleus Fatuorum, Thijs!bot,
Hcberkowitz, John254, Tellyaddict, Solveforce, Dawnseeker2000, Escarbot, Mentisto, 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, Oicumayberight, 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, DMcMPO11AAUK, 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, Ngriffeth, OKBot, Svick, Spitre19, 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, Razorame,
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 Jaczuk, Fluernutter, Kutulus, 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, Materialscientist, Whiskers9, Citation bot, Jeremyjf22, Freeness, Elm-39, Schproject, DynamoDegsy, Readiwip, ArthurBot, MauritsBot, Xqbot, Capricorn42, 4twenty42o, IMarc89, LoKiLeCh, DSofa, Ched, Srich32977, Coretheapple, Wiki2contrib, Nasa-verve, GrouchoBot, Wizardist,
Omnipaedista, Smartishkindaguy, Bo98, Shadowjams, 11cookeaw1, SD5, Gururaju, A.amitkumar, Anth12, Tsiuser09, FrescoBot, GEBStgo, Alarics, Mthrandir, 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, Onfopt, 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 Spoddle, 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, Mnativesacl, Mhughes38, Katiewiltshire, FoCuSandLeArN, Opensourceyk, Thermocycler, PeacefulPlanet3, Lugia2453, Perep80, Me, Myself,
and I are Here, Reatlas, Joeinwiki, Phamnhatkhanh, Faizan, Anawesomeeditor, Rizwaanahamed3, Chriyu, DavidLeighEllis, Daideep patel, Ugog Nizdast, Melody Lavender, NottNott, Ginsuloft, Jianhui67, Danieltele, Joancdocyogen, Mendisar Esarimar Desktrwaimar, Iamandrewg, HHubi, Salton Finneger, Monkbot, Dsprc, Trackteur, Wikijuanjo1514, Chicken butt0192, MRD2014, Vkryla, ChamithN,
Prinzpopo, Esquivalience, NekoKatsun, MarkyNToby, JaDam, Aman.singh5317, Deborah Chiaravalloti, Unibateman, KasparBot, Dinnypaul, 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, Cdric, Pfalstad, RobyWayne, Srleer, CiaPan, Pi Delport, Robchurch, VinceBowdren, Deville, Breznanderl~enwiki, Tinucherian, Stijn Vermeeren, Jim.henderson, Jamelan, SieBot, DragonBot, Addbot, Jacopo Werther, AnomieBOT, Mikespedia, 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, Betterworld, 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, Giraedata, SpeedyGonsales, 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 Cornelius, 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 Canens, 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,
T, DKEdwards, Masterpjz9, Qwerty0, Via strass, SashatoBot, Miss Sa, 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, Christopher 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, Papadopa, Kgeischmann, 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, Bigdumbdinosaur, 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, PanagosTheOther, Brech~enwiki, Smsarmad, TediousFellow, Danielgrad, Flyer22 Reborn, Cjdaniel, Oxymoron83, Jjinno, Rdone, Alt-sysrq, Ngriffeth, 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, Technobadger, Pluknet, Kumarat9pm, Charles.partellow, Nedim.sh, Frederico1234, The-tenth-zdog, Cincaipatrin, Akshaymathur156, Johnuniq, Ordoon, DumZiBoT, Darkicebot, Astronomerren, Nneuman, BodhisattvaBot, WikHead, StubbyT, Alexius08, TravisAF, Dsimic, Oxyacanthous, Maimai009, Addbot, Mortense, Ghettoblaster, Jgeer, Psyced, Mootros, Anichandran.mca, Scientus, CanadianLinuxUser, Leszek
Jaczuk, Graham.Fountain, MrOllie, Glane23, Torla42, Loukris, 5 albert square, IOLJe, AgadaUrbanit, Numbo3-bot, Tide rolls, Arsenal9boi, Krano, Teles, Jarble, Quantumobserver, Luckas-bot, Yobot, Kartano, THEN WHO WAS PHONE?, AnotherNitPicker, SwisterTwister, 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, JeClarkis, Clark-gr, Helpful Pixie Bot, HMSSolent, Silverwindx, Calabe1992, Mtsz, MultWiki, BG19bot, Arnavchaudhary, Deepblue1, Iitywybmad, Northamerica1000, Mrzehak, Nen, Prakash mit, Compfreak7, Altar, 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, Giraedata, Stemonitis, NebY, BjKa,
KFP, Srleer, Chobot, Commander Nemet, YurikBot, Schadel, Jenblower, Salsb, Malcolma, 2over0, Reyk, Johnpseudo, Mebden, SmackBot, Rojomoke, Gilliam, Daniel.Cardenas, Iridescent, IvanLanin, JohnTechnologist, Bmk, Slazenger, Future Perfect at Sunrise, Thijs!bot,
Barticus88, Guy Macon, Harryzilber, Kevinmon, Oicumayberight, Mrten Berglund, J.delanoy, Maurice Carbonaro, AntiSpamBot, WinterSpw, Rexparry sydney, VolkovBot, The Original Wildbear, Kbrose, SieBot, Jojalozzo, ClueBot, Ljasie, Excirial, PixelBot, Addbot,
OlEnglish, Legobot, Yobot, Gobbleswoggler, TestEditBot, AmritasyaPutra, DemocraticLuntz, Materialscientist, Isheden, AbigailAbernathy, 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, Nixdorf, 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, Kungfuadam, 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, Razorame,
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, Jerd10, Suusion of
Yellow, EmausBot, Samjoopin, Rcsprinter123, ChuispastonBot, ClueBot NG, Dzlinker, Dave Braunschweig, BronsonP, Dough34, Adrianf0, 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, Ebelular, Vsmith, Indil, Sietse Snel, Unquietwiki, Arthena, Hgsippe Cormier, Laug, Suruena, RJFJR, Larytet, Karnesky, Mindmatrix, Knuckles, Eyreland, Bruns, Lusitana, FlaBot, JYOuyang, Matt314, YurikBot, Bota47, Cavan, Jules.LT, Nachoman-au, GraemeL, Edgar181,
Yamaguchi , Jerome Charles Potts, SkipHuman, 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, Ngrieth, 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, Popescucalin, 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 Yerrick, Bryan Derksen, The Anome, Fubar Obfusco, Jtk, Mahjongg, Nixdorf, Alo, Ronz, , BAxelrod, Samuel~enwiki, Vanished 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, Jna runn, Paulish, SashatoBot, Breno, Ben Moore, Clalansingh, Kvng, Johnny 0, Ginkgo100,
Teemuk, Conrad.Irwin, Burisch, Phatom87, Reywas92, Sammydee, UncleBubba, Thijs!bot, JNighthawk, DesTroy, AntiVandalBot, Widefox, Opelio, Esmond.pitt, JAnDbot, Dicentra, CombatWombat42, Enjoi4586, Ideoplex, Recurring dreams, 28421u2232nfenfcenc, Kgeischmann, Mike6271, Anaxial, Gthm159, Mange01, Public Menace, Gzkn, Sci13960, Aram33~enwiki, 83d40m, STBotD, Zara1709, Mike
V, Gnipahellir, AlnoktaBOT, Vinu Padmanabhan, DennyColt, Kovianyo, Spearsall, Teh romaoer, Chenzw, Andrew Kember, Kbrose, Sn-ushakov, SieBot, Nubiatech, Acasson, Eagleal, R2richar, Mam711, Bentogoa, Oxymoron83, Jjinno, Jdaloner, FrisoB~enwiki, Bane1998,
NHSKR, ClueBot, Uncle Milty, Hitherebrian, WestwoodMatt, Pelesl, Dfurbeck, Razorame, 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, Materialscientist, ArthurBot, Gsmgm, Xqbot, Locos epraix, Fightin' Phillie, Omnipaedista, RibotBOT, Kyng, Locobot, Ll1324, Frozenevolution, 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, Irrypride, Gorryf, ChuispastonBot, Pqqq1, Teapeat, Rememberway, ClueBot NG, Fudgefr, Dkogh, Theopolisme, Ssd293, Benqmonitor,
Helpful Pixie Bot, BG19bot, Beacon11, McZusatz, Chmarkine, Timothyjaden, Dhruvv7, Achowat, IRedRat, PatheticCopyEditor, Popescucalin, 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, Delirium, Tregoweth, CesarB, ArnoLagrange, Mac, Nanshu, Den fjttrade 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, ESkog, Evice, El C, MITalum, Larryv, Helix84, Pearle, Wayfarer, ClementSeveillac, Milant, A.M.~enwiki, Hu, Suruena, Josh3736, Zorblek, 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, Emufarmers, JF Manning, Daviddec, Vbigdeli, TheRaven7, Rrburke, Jcravens42, Greenshed, Edivorce, Mr.Z-man, Cybercobra, Nakon, Alibabs, 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, Azbondgirl, Melmelmarms, Jatkins, Cic, Everton1984, DominiqueHazaelMassieux, Jodi.a.schneider, Lijnema, Oicumayberight, B9 hummingbird hovering, AVRS, CommonsDelinker, Ramesh Chandra, JMJimmy, Hanteng, Javawizard, Ian.thomson, Arite, Ignatzmice, Frequencydip, Chronorick, Josh Tumath, Paolo Baggia, Bonadea, Jacroe, Technopat, Donatus, Qxz, Seanho, Andy Dingley, Wegates, Synthebot, 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, SuperHamster, 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, Yondonjamts, Wolfhoundfeet, Sleepinginisgivingin, EmausBot, Goswamir14, Jesmania, D'oh!, Beware podpeople, ArtBarstow, Gewild, BetweenMyths, Petrb, ClueBot NG, Youngdesigner, Widr, Radiojoe329, Helpful Pixie Bot, Wbm1058, ARIENGGO, Bmusician, MusikAnimal, 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, Vacuum, 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 Harris, 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 Franois, Chris the speller, GK tramrunner, Dvermeirre, Villarinho, JonHarder, Adamantios, Kotul, HarisM, Sparky-sama, Charivari, 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, FromOrleans, John of Reading, Orphan Wiki, RFClover, The Mysterious El Willstro, Jasonanaggie, ZroBot, Westley Turner, Jgoodchild,
Ermishin, ChuispastonBot, ClueBot NG, Wdchk, Helpful Pixie Bot, BG19bot, Doodlebug777, Leikai Meetei, Cwobeel, Mogism, Cerabot~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-SA3.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 Contributors: 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 le 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 Contributors: 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 License: 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 domain Contributors: Own work, based o 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 Contributors: 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 License: 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 Contributors: ? Original artist: ?
File:Communication-System.png Source: https://upload.wikimedia.org/wikipedia/commons/0/09/Communication-System.png License: 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 License: 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 License: 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 Contributors: 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 Contributors: 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 le, specically: 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: Spi
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 License: 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 License: 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-le-width='80' data-le-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 Contributors: ? Original artist: ?
File:Fibreoptic.jpg Source: https://upload.wikimedia.org/wikipedia/commons/4/49/Fibreoptic.jpg License: CC-BY-SA-3.0 Contributors: 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; improved 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-BYSA-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 Airport Museums[1] in SFO Airport, Terminal 3 from 2006-09 to 2007-05. Original artist: Gregory F. Maxwell <gmaxwell@gmail.com>
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. Modications by Denelson83,
Zscout370 and Madden. Ocial construction sheet here.
United Nations (1962) The United Nations ag 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-bysa-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'
title='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-le-width='640' data-le-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 Contributors: 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 Contributors:
<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-lewidth='48' data-le-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-le-width='144' data-leheight='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: Ocial 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: CCBY-SA-3.0 Contributors:
Own work
Original artist:
Zaraman
File:HalfDuplex.JPG Source: https://upload.wikimedia.org/wikipedia/commons/b/b3/HalfDuplex.JPG License: Public domain Contributors: 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 Stol
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. Original 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 organizations ocial 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 Contributors: 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: CCBY-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 Contributors: 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 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. 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 Contributors: Own work Original artist: me
File:Interaction_comm_model.svg Source: https://upload.wikimedia.org/wikipedia/commons/7/79/Interaction_comm_model.svg License: 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 Printing. 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 Internet Users by Language, Internet WorldStats, Miniwatts Marketing Group, 31 May 2011, accessed 22 March 1960, URL:
http://www.internetworldstats.com/stats7.htm
Original artist: Je 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 classications 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: Jerey 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 Contributors:
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: Je 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: Public 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 Contributors:
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:
OmniGrae. 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: Ludk Kov ludek@kovar.biz
File:Mergefrom.svg Source: https://upload.wikimedia.org/wikipedia/commons/0/0f/Mergefrom.svg License: Public domain Contributors: ? Original artist: ?
File:Message_flows.svg Source: https://upload.wikimedia.org/wikipedia/en/b/b0/Message_flows.svg License: CC-BY-SA-3.0 Contributors:
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 License: 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 Contributors: 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: Onfopt
File:Office-book.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a8/Office-book.svg License: Public domain Contributors: 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 domain 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 le was derived from Operating system placement.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-le-width='250' data-le-height='370' /></a>
Original artist: Golftheman
File:OptischerTelegraf.jpg Source: https://upload.wikimedia.org/wikipedia/commons/9/94/OptischerTelegraf.jpg License: CC-BYSA-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 License: 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 le 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 License: 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: Copyrighted 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 Contributors: 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 Contributors: ? 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 License: 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-SA3.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 License: 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 Contributors: 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 Contributors: 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_Prol by combining: Original artist: Lokal_Prol
File:Symbol_list_class.svg Source: https://upload.wikimedia.org/wikipedia/en/d/db/Symbol_list_class.svg License: Public domain Contributors: ? Original artist: ?
File:Symbol_neutral_vote.svg Source: https://upload.wikimedia.org/wikipedia/en/8/89/Symbol_neutral_vote.svg License: Public domain 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 Contributors: 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 xed.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 Contributors: 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 License: 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-BYSA-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 languages 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: Je 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 le 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-le-width='44' data-le-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 Contributors: 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 ocial 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 le 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 BYSA 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: Multiple 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 lename Submarine cables.png, overwriting the
previous version. That version was restored so this is now being uploaded with a dierent lename. Original artist: Rarelibra
File:X25-network-diagram-0a.svg Source: https://upload.wikimedia.org/wikipedia/commons/5/5c/X25-network-diagram-0a.svg License: 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