|
|
CIS 303a - Computer Architecture
Chapter 8, Data and Network Communication Technology
Objectives:
This lesson discusses signaling on networks. Objectives
important to this lesson:
- Communication protocols
- Analog and digital encoding and transmission
- Signals and media
- Wireless technologies and LAN standards
- Using communication channels
- Synchronization and error detection
Concepts:
Chapter 8
The chapter begins with some basic terms.
- message - a unit of data or information
transmitted from a sender to a receiver (recipient)
- data - raw facts and figures
- information - processed data that has
meaning to the sender and/or receiver
- protocol - the definition in use here
(there are several others) is a method of encoding, transmitting,
and interpreting bits sent across a network connection
The text makes a point that protocols must be agreed upon and understood
if they are to be of any use. A branching tree diagram is offered on page
277, which shows several topic areas that are all part of communication
technology. Unfortunately, that diagram is immediately ignored on page
278. The author begins a discussion of modulating carrier waves. In a
few pages, the text explains that light,
radio signals, and electric
currents can all be modeled as waves passing through a medium. A wave
that is modulated (modified) to
carry information is called a
carrier wave. So, how does changing
a wave put data on it? We do it according to a protocol that says a certain
kind of change means a one or a zero, which allows us to send binary data
on the wave.
Three terms are given on page 278 that are useful in
understanding the discussion:
- amplitude - The strength of
a signal; amplitude is easily understood by turning a volume control up
and down on any media player: greater amplitude means louder (stronger
signal), lesser amplitude means quieter/softer (weaker signal). This is
illustrated in the picture at the top of page 281, which shows a wave that is
being modulated between two different amplitudes.
- frequency - When we talk about
network signals, we typically talk about electrical signals on copper
wire, light signals on fiber optic cable, and radio signals to Wireless
Access Points or cell towers. Basic physics
for electricity and electromagnetic waves (including light and radio): frequency times wavelength equals the speed of light. The picture at the
bottom of page 281 shows us an example of a wave being modulated
between two different frequencies.
This online
oscilloscope
allows us to see what happens when we change frequency (how many wave
cycles occur per second) and amplitude (strength of the signal). Change
the frequency with the Frequency slider, change the amplitude with the
Gain slider. This
oscilloscope allows us to change amplitude, frequency, and
wavelength of a signal. Notice that increasing
frequency decreases wavelength, and vice versa,
because they are inversely proportional.
- phase - Phase is harder to
understand until you see a representation of a wave, like the sine
waves shown in the examples so far. Let's look at another online
oscilloscope to get a better idea of the concept. This
one allows us to change from a sine wave to a cosine wave, which is
like what happens when we change the
phase
of the wave, causing the part that is generated next to be different
from what is expected. Four phases of a sine wave are mentioned in the
text: rising from 0 to positive peak,
falling from positive peak to zero,
falling from zero to negative peak,
and rising from negative peak to zero.
A cosine wave has the same
parts, but a cosine wave begins at the top
of a positive peak, and a sine wave begins at zero
rising to the positive peak.
As
an aside, I could teach you about trigonometry here, but that might be
a bit much. Let's use what the book tells us in a different form:
|
0 degrees |
90 degrees |
180 degrees |
270 degrees |
sine wave |
0 |
1 |
0 |
-1 |
cosine wave |
1 |
0 |
-1 |
0 |
Looking at the values above, you
should be able to imagine that the cycles of a sine wave and a cosine
wave are offset
by one quarter of a cycle. This is why shifting from one to the other
is an effective way to simulate changing the phase of the wave.
To recap, a change of any of these types is
called a modulation
of the wave. Different communication protocols can use different types
of modulation. The text explains that the three types of modulation it
discussed are also called amplitude
shift keying, frequency shift
keying, and phase shift keying.
A single modulation can represent more than one bit of data.
The example on page 283 shows four
amplitudes, each of
which represent two bits
of the message. If this protocol were used, we could transmit eight
bits with every four cycles of the carrier wave. The text points out
that this sort of thing becomes a new problem instead of a solution if
the signal fades out, if the signal is damaged, or if the equipment
used cannot create or interpret the actual change that was intended.
Look at the example of the square wave that was meant to be sent (top
of page 285) and the actual deformed
wave that was detected. We know what was meant to be sent, but the
receiver does not. Was that meant to be a wave with an amplitude of 5,
or was it just noise on the line?
- Using square waves
instead of sine waves is one approach to
avoiding errors, since they are more easily understood. (How do you
misunderstand a sine wave? By only noticing part of it.) The text
compares square waves to flicking a switch on and off: you are either
on or off, at the top of the wave or at the bottom of it
- Using digital
signals instead of analog signals is another approach, since they only
allow specific discrete (quantified, modal) values like 1s and 0s,
never a fractional value in between.
- Of course, you might still see a value that is
not one of the acceptable values. The text shows two examples of
setting a threshold value as
the border between two data states (pages
285 and 287). If we are sending 0 volts to represent a 0, and 5 volts
to
represent a 1, then we can say that any value under 2.5 volts (the
chosen threshold) will be
seen as a 0, and any value over 2.5 volts will be seen as a 1.
The text makes several good points on page 286. One is that
you should be able to transmit
more information in a given time interval with analog signals than you can with digital signals. Assume we are using
a digital signal that varies
between 0 and 5 volts. That signal can only represent one bit for each modulation, which
means we need to transmit a series
of bits (typically 8 bits for ASCII) just to represent one character (a letter or a numeral).
An analog signal that runs
from 0 to 5 volts could potentially
transmit an infinite
number of voltages, each of them greater than 0 and less than 5, each
representing a different character, value, word, or code symbol. I used
the word "potentially" because the theory assumes we could detect the
differences between each fractional voltage that we might send across
the wire, and that those signals would be sent without error and without noise or interference along the way. The fact
is that there will always be noise on the line, fading
of the signal over distance, and interference from other sources,
so the ideal analog signal is not possible to produce or use. A digital signal is usually cleaner, and we can send a lot of
them in a short time, so that is the way it is usually done.
On page 287, the text defines a communication channel as having
three parts: a sender, a receiver, and a medium used for the transmission.
(We also need protocols, but this is a high level discussion.) The
medium is often copper or fiber optic cable. Transmissions on
this sort of media can be called wired
or guided transmissions. (A
fiber optic conductor is sometimes called a wave guide.) When the system does not use a physical medium, like a
cell phone or a Wi-Fi device, it can be called a wireless or unguided transmission.
The chapter continues with more terms that can be used to
compare the performance of one medium to another.
Some of these are familiar, and some are easily misunderstood.
- speed and capacity -
First we should understand that there is a difference between the speed
of waves through the medium, and the speed at which
we can transmit information over those waves. Let's
consider the waves. We pass electrical waves along copper wire, we pass
light waves along fiber, and we pass radio waves through the atmosphere
(and sometimes through building materials). The text says that these
waves move at a speed close to the speed of light. This is almost
correct.
Each of those waves moves at the speed of light with
respect to the medium it is using. Say what? When the
text says "the speed of light", it means the speed you should have
learned in school, which is often rounded off to 186,000 miles per
second, or 3 * 10^8 meters per second. Those both refer to the speed of
light through a vacuum. Guess what? The speed of
light through fiber and the speed of electricity
through copper are both a bit slower. Light still
travels at the speed of light, but that speed varies
with the medium. Which, by the way, is a good reason
for science fiction writers to keep hoping that the speed of light is
faster in some other medium.
The capacity of the medium is related to the speed of a wave through
it, but it is also limited by the efficiency of our coding method and
the next couple of bullets.
- frequency - We have already talked about
using a transmission method that requires a wave to travel through one
complete cycle, a wavelength, for each bit
that we transmit. If we are doing that, the frequency, which is
measured in Hertz (cycles
per second) imposes a limit on how many bits we could
theoretically transmit. The chart on page 290 shows frequencies for
various kinds of electromagnetic radiation. Look at the chart, and you
may realize that everything on it is a form of light. The higher the
frequency being used, the shorter the wavelength, and the higher the theoretical
data throughput.
- bandwidth - The text describes two
concepts that sound alike. First it mentions signal bandwidth,
but does not explain it before mentioning medium bandwidth.
Let's take them one at at time.
The signals we have been discussing have been simple
examples: text, represented as characters, transmitted in a computer
code one bit at a time. Some data, however, is more complex,
such as a human voice. When people talk, shout, sing, or whisper, the
sound generated contains several frequencies at once.
To represent the sound of a voice, the telephone companies learned a
long time ago to provide a 4000 cycle range of frequencies for each
voice transmission. Call that range 0 to 4000 Hertz. For a voice to
sound like a voice in real time, you need a medium that can carry that
much bandwidth and more. A standard phone line can carry a dozen
conversations by artificially increasing most of the conversations'
frequencies to bands of frequencies that are multiples of the normal
band.
- signal to noise ratio - This one builds for a couple
of pages. The text defines noise as "unwanted signal
components". Where does it come from? Some noise is caused by background
noise, signal elements generated by the equipment itself. It
can also be caused by radio frequency interference
(RFI) which can be caused by the medium picking up
actual radio signals or radio frequency emissions from any equipment
that makes them. The text discusses a major source of noise, electromagnetic
interference (EMI) which can come from generators,
power lines, electric devices, and from other communication lines.
In addition to noise being added to the line, the signal
itself tends to fade out as it travels over the line.
The general phenomenon is called attenuation, which
is explained as fading over distance. Electricity-based signals can
fade due to the resistance (impedance) of the wire
being used. The signals can also be distorted, as
discussed on page 294, to the point where we can no longer use the
signal. The text explains that we typically measure the power/strength
of a signal and the power/strength of the noise on a line in decibels
(dB), which are measured on a logarithmic scale. Logarithms are
exponents, so when we calculate the ratio of signal to noise we
actually subtract the noise decibel rating from the signal decibel
rating.
Having made us wonder how a network could ever function with
all these problems, the text moves on to discuss media types. In
several more pages, it mentions that we typically overcome the most of
the problems discussed above with amplifiers and repeaters.
An amplifier boosts the strength of a fading signal, but it also boosts
the strength of any noise in the signal as well. A repeater interprets
the signal, then recreates it as cleanly as possible, and sends it on
its way down the next run of medium.
Media categories:
- electrical cable - Three types are
mentioned, and the discussion is surprisingly light. Twisted
pair cable is the first type. It comes in two major subtypes, shielded
and unshielded. Most installations use unshielded
twisted pair (UTP) cable.
The graphic shown here illustrates four twisted pairs of
wires. Each wire is covered with an insulator, and the two wires in
each pair are meant to be used as a circuit. These wires suffer from crosstalk,
leakage of signal. The twists help cancel out such leaks. The graphic
shows a UTP cable with eight wires in it, making four pairs. As is
typical, there is a green pair, a blue pair, an orange pair, and a
brown pair. Other color schemes are used, but this one is common.
The wires in each pair are twisted
around each other. This type of cable comes in several varieties: two
pair, three pair and four pair were common, but four pair is the
current standard. Also, each variety may be available in grades, such
as CAT 1 (Category 1, which is pretty useless on
modern networks) and CAT 5 (Category 5, which has
been a standard for several years). There are several such categories,
and a major difference between them is the number of twists per foot in
each pair. CAT 1 will have less than 5 twists per foot, CAT 5 will have
25 or more twists per foot (so it is better, and costs more). Note that
the better the class of cable, the less leakage, and the more bits per
second can be passed across it. The text mentions CAT 6
cable, which has a plastic spline running through it that is meant to
keep the circuits from touching each other, reducing crosstalk further
than other varieties.
UTP cables are usually connected to devices with RJ-45 connectors. Your text does not
show an RJ-45 connector (or any other)
very well. In the enlarged picture on the right, note the eight
gold-colored contacts for the eight wires usually found in UTP
cables. The wires are used in pairs to form two to four circuits.
Some good examples and a good discussion about UTP can be found at the Fiber Optic Association web page about the subject. Note the information on that page about three ratings for UTP that determines where it can be used:
- CMX - general use PVC cable, which should not be used in the following two cases
- CMR - riser rated cable, which is fire retardant, and should be used in channels that pass from one floor of a building to another
- CMP - plenum cable, which does not emit toxic fumes when burned (unlike PVC), should be used when running
through any air space around people, such as between ceiling tiles and
a real ceiling or through an air shaft
RJ-11 connectors (4 pins instead of 8) are
typically used for telephone
connections.
Coaxial cable is the second kind of electrical cable
discussed. Coaxial (or co-ax) is called that because
it has two conductors that share a common axis: one thick, insulated
wire in the center, and a conductive sheath
around it.
Most people have seen this style of cable used with cable television.
Once upon a time, the cable used for cable television was not suitable
for networking. That has changed and cable providers are now major
Internet service providers.
The wiring standards used for network coax have been
different from those used for cable TV. This is a list of cable used
through networking history:
- 50 ohm cable, available as RG-8 and RG-11.
Used in Thick Ethernet, with drop cables and vampire taps.
- 50 ohm cable, available as RG-58. Used in Thin
Ethernet, with BNC connectors
- 75 ohm cable, available as RG-59. Used in cable TV operations, with F connectors.
- 75 ohm cable, available as RG-6. Preferred for networking and cable TV, due to lower signal loss than RG-59, typically with F connectors.
F connectors, with or without threads, are more common now that cable TV providers are network access providers.
The third type of electrical cable mentioned is twin-axial
cable. Do a Google search for images of this kind of cable and you will
see that its appearance varies a lot. The basic concept is this: what
if you put two insulated conductive wires in a coax
cable instead of one? The conductors are more insulated and thicker
than UTP, and since there are two, they can be used as a single
circuit, unlike coax which relies on the braided sheath for its
ground/return wire.
-
optical cable - Fiber optic
cable, whichever type is used, is preferable to copper cable when you
need to run a long segment of cable without a
repeater, when you need to run cable that is immune to
electromagnetic interference, or when you need to have better
throughput than copper can provide.The conductor is sometimes
called a waveguide, and is covered with cladding
(instead of insulation), a material to reflect the signal back toward
the center of the conductor. Cladding is typically twice as thick as
the waveguide. This is a newer text than we have used in the past, and
its discussion of fiber optic types is more up to date.
Multimode step-index means that it can
conduct many signals simultaneously (multimode) and
that the cladding and waveguide have uniform densities. (The cladding
has a greater density, but it is uniform throughout its length and its
cross-section, as is the density of the waveguide.)
Multimode graded-index means that it can
conduct many signals simultaneously (multimode) and
that the waveguide is less dense at its center than at its outer edge,
which causes the light to bend back toward the center, which means
fewer actual reflections from the cladding, leading to less distortion
of the signals.
Single-mode fiber means that it can conduct one
signal at a time (single-mode) and that the waveguide has a
continuous density change from greatest at the edge to least in the
center. It has less attenuation than the multimode types, so its
segments can be longer.
You can consider fiber optic cable
as coming in two basic types: Multimode fiber (MMF) can carry more than one signal on the same core conductor, and usually uses LEDs as light sources. Single mode fiber (SMF) can carry only one signal at a time, and usually uses lasers as light sources, but it has a longer segment length.
The chapter does not mention fiber optic connectors, except to show one illustration of an LC connector on page 297. A good illustration is on this page from the Fiber
Optic Association, which shows several connectors in photos taken at the same scale, so you can get an idea of their relative size.
Be aware of three main connector types for the Network+ exam:
- ST - a bayonet mount, single fiber connector (mnemonic: stick and twist)
- SC - a snap on, single fiber connector (mnemonic: stick and click)
- LC - a smaller, snap connector that connects two fibers to a NIC at once (mnemonic: little connector)
At this point, the text finally mentions amplifiers and
repeaters, which I have already mentioned. The text states that a repeater/amplifier
is needed about every 2 to 5 kilometers for coaxial
cable, and about every 40 to 50 kilometers for single-mode
fiber. It does not mention UTP. UTP cables
are limited to 100 meters between devices, typically
between computers and switches or routers, which will act like
repeaters in this example.
The text continues with a discussion of wireless types.
Wireless transmissions travel through air, space, and some objects, but
none of those can be considered the medium that the signal is traveling
along. Wireless transmissions can be said to have no associated medium.
- radio frequency -
In a sense, all the frequencies mentioned in the chart on page 290 are
forms of electromagnetic energy, and you could say that they are all
forms of radio waves. You could just as well say that they are all
forms of light. The text tells us that it considers the frequencies
commonly used for data transmission to be short waves. Some are, in
fact, microwaves. Most of the standards discussed in this section are
in what is called the 2.4 GHz band or the 5 GHz band. The word band is
used here to mean a range of contiguous frequencies. For example, the
2.4 GHz band is technically the range from 2.401 GHz through 2.473 GHz.
(See this article from PCWorld, Battle
of the Bands.) It is necessary to use several frequencies at a time
if you intend to transmit signals that require any degree of bandwidth.
You will want to be aware of the Institute of Electrical and
Electronics Engineers (IEEE) standards mentioned in the text (and one that is not mentioned):
|
frequency
|
channels, channel
bandwidth
|
data throughput |
range
|
802.11a
|
5 GHz band
|
12, 8 not overlapping,
20 MHz each
|
up to 54 Mbps |
25-75 feet
|
802.11b
|
2.4 GHz band
|
14, 3 not overlapping,
22 MHz each
|
up to 11 Mbps
|
100-150 feet
|
802.11g
|
2.4 GHz band |
14, 3 not overlapping,
22 MHz each |
54 Mbps |
100-150 feet
|
802.11n
|
2.4 or 5 GHz bands, or both with multiple antennas |
14, 3 not overlapping, 20 or 40 MHz each
|
65 to 600 Mbps |
100-150 feet
|
802.11ac
|
5 GHz band |
5, up to 80 MHz wide
|
78 Mbps to 433 Mbps/data stream
|
TBD
|
- non-fiber light transmission
- I have reworded this topic's title so you won't confuse it with fiber optic
cable. The text offers some historical notes about people having used
infrared, visible, and ultraviolet light for transmitting network
signals. None of these technologies are currently in use by major
network equipment providers.
The text dives into some deeper water,
discussing how bits can be transmitted across a channel. It begins with
a simple concept: how do we use a channel? There are three classic methods.
- simplex - This is a one-way transmission
of data, like a TV or radio broadcast. Like those examples, it is only
useful when you do not care about whether the receiver is getting a bad
or weak signal. More like the examples, you only use it when you are
reasonably sure that the receiver will get a good copy of the signal.
- half-duplex - This means that the devices on either end of a channel can both send and receive signals, but they must take turns
doing so, like using a walkie-talkie, or a citizens band radio. This is the most common kind of data transfer, allowing
receiving devices to acknowledge receipt of a good signal, or to
request retransmission of a bad one. The text mentions the line turnaround
time, which can become significant when sending a lot of packets that
are damaged along the way, as will the retransmissions that are
necessary for each error detected.
- duplex or full-duplex - Each device on a channel can be a sender and a receiver at the same time,
like a telephone conversation where two people talk at the same time.
That does not work well for people, but it is not a bad idea for
computers that need to send data from one end of the channel and send
acknowledgments from the other end.
Another way to look at data transmission is whether we send data on one line (serial transmission) or on multiple lines (parallel
transmission). The text illustrates the idea of parallel transmission
on page 305, showing a byte of data being broken into 8 bits, and each
bit is sent across a separate wire.
In theory, parallel transmission is faster. The text discusses several problems with it:
- data might arrive out of synchronization, due to differences from one wire to another
- parallel cables are limited in length, compared to serial cables
- parallel cables, like the ribbon cable shown on page 307, can be subject to crosstalk from one wire to another. The wide cable shown is a Parallel ATA (PATA) cable, the narrow one is a Serial ATA (SATA) cable. ATA stands for Advanced Technology Attachment, which is one of those phrases that does not age well.
With
regard to most network transmissions, and with regard to data transfer
from hard drives to motherboards, serial transfer is more commonly used
at this time in 2014.
The text moves on to the topic of
switching, or channel sharing methods. (For those of you who know it,
this is on the Network layer, layer 3, of the ISO-OSI network model.)
The text tells us that circuit switching is the practice of selecting a combination
of connections between one device and another when such a connection is
requested, such as making a telephone call from one number to another.
That combination of connections between the devices is dedicated to the devices in the session for the duration of the session.
This is a fine method for a system that has many
redundant connections available, in proportion to its number of users.
The Internet, however, uses a different method which takes advantage of
the fact that most requests across it are short, and most data
transfers do not need to be done on a line that is dedicated to a
single connection for the entire length of its session.The text does
not quite explain the the method used on the Internet, and on most
networks, is packet switching, which allows each packet (a small portion of a message, file, or transmission) to follow the best route available, regardless of the route chosen for the previous or next packet.
What the text does explain in the section starting on page309, is the fact that multiplexing,
placing several signals on the same medium, can be done several ways.
Multiplexing increases the ability of a network to carry more data. We
have already considered some of these:
- Frequency Division Multiplexing (FDM) - different signals are
placed on different frequencies, as described above for phone conversations; requires broadband
- Time Division Multiplexing (TDM) - different signals are transmitted
in different time slices, taking turns; can be done on broadband or
baseband, each user can get equal time, whether they use it or not
- Statistical Time Division Multiplexing (StatTDM) - heavy users
are granted more time slots than light users, otherwise like TDM
- Wavelength Division Multiplexing (WDM)
- different signals are put on differentt wavelengths of a carrier wave;
used with fiber optic systems, but otherwise the same concept as FDM
(Frequencies and wavelengths are inversely proportional, remember? All
waves have both.)
On page 314, the text
turns to a basic problem that may have occurred to you. The short
version is that devices need to know when to send data and when to
listen for data. I am not talking about taking turns using a channel. I
am talking about timing.
One version of the problem is illustrated on page 315. We see the same signal being sent in two different scenarios.
- In the first example, the receiver samples the line (measures
the signal) at time slices that correspond exactly to the sender's
sending rate, and the receiver notices each change the sender makes in
the carrier wave. That's how it should work.
- In the second example the receiver samples the line at the same rate as before, but he does it on a schedule that does not
match the schedule of the sender. The receiver reads the first voltage
correctly as a 1, but sees a change in voltage when he looks for the
second data bit. He does not know if that was supposed to be a 1 or a
0. He has the same problem when he samples the line for the third data
bit. In fact, he misses a lot of bits by sampling the line during transitions from one state to the other.
The solution to the problem is clock synchronization.
If you are a musician, you will understand the problem. Everyone in the
band needs the same director, the same downbeat, the same agreement on
when the next note is to be played. In this case, we need the sender
and the receiver to be on the same schedule. The way this is usually
expressed is that the receiver needs to synchronize his clock with the
clock of the sender. This does not mean that they change to the same
time zone. It means that they agree to the same schedule of sending
data and sampling the carrier wave.
There are many different ways to synchronize, but they all fall in three types. Your text mentions two of them:
- Synchronous - devices send markers for signal timing in each conversation, more efficient than asynchronous methods
- Asynchronous -
devices send markers for signal timing in each frame (more overhead for
each frame sent), kind of like knocking a specific number of times each
time you come to a door
- Isochronous - devices use a common network timing signal; not widely used, but very efficient
The text ends the chapter with a discussion of three error detection and correction
methods. Reading the introduction to the section on page 317, you might
misunderstand the meaning of sending a "redundant transmission". Yes,
you could try to handle
errors by sending multiple copies of each transmission, but that is not
how it is typically done. Instead, some kind of summary
of each transmission is sent that can be compared to the received
transmission. The nature of the summary data varies with the method
used. In this list, each bullet represents a more advanced technology
than the previous bullet.
- parity checking - For each byte of data sent, an additional bit (the parity bit)
is attached. The software looks at the number of 1s in the byte. This
method only detects errors, and does not correct them. It fails if an
even number of bits in the received byte are wrong.
- If we are using even parity, the parity bit is set to 1 if the number of 1s in the byte is odd (making an even total). Otherwise, the parity bit is set to 0.
- If we are using odd parity, the parity bit is set to 1 if the number of 1s in the byte if even (making an odd total). Otherwise, the parity bit is set to 0.
- block checking - The software considers blocks
of data instead of one byte at a time. In the example in the text, it
is looking at at blocks of eight bytes as an 8 by 8 matrix. It
calculates the equivalent of a parity bits for each column in the block
(instead of for each row, which would be the same as a parity check of
each byte). The eight calculated bits are appended to the block as a single byte, making this more elegant, but still vulnerable to an even number of errors in any column. The text point out that combining parity checking and block checking gives the software on the receiver the chance to correct errors by identifying the row and column of an erroneous bit.
- cyclic redundancy checking (CRC)
- The text recommends this method as thee best of the three, but does
not explain what is good about it. A brief discussion of CRC (and
parity checking) can be seen at this page
from tutorialspoint.com. It explains that the method involves dividing
the data bits in a message by a binary number (which does not become
less mysterious when we learn that the number is derived from a
polynomial expression). The example on the tutorialspoint.com page is
simplified. In actual practice, the divisor is much larger, which makes
it much less likely to miss an error.
|