Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% found this document useful (2 votes)
8 views

Network Programming with Go Language: Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang 2nd Edition Jan Newmarch pdf download

Ebook

Uploaded by

mauezagomyo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
8 views

Network Programming with Go Language: Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang 2nd Edition Jan Newmarch pdf download

Ebook

Uploaded by

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

Network Programming with Go Language: Essential

Skills for Programming, Using and Securing


Networks with Open Source Google Golang 2nd
Edition Jan Newmarch install download
https://ebookmeta.com/product/network-programming-with-go-
language-essential-skills-for-programming-using-and-securing-
networks-with-open-source-google-golang-2nd-edition-jan-
newmarch-2/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

Network Programming with Go Language : Essential Skills


for Programming, Using and Securing Networks with Open
Source Google Golang 2nd Edition Jan Newmarch

https://ebookmeta.com/product/network-programming-with-go-
language-essential-skills-for-programming-using-and-securing-
networks-with-open-source-google-golang-2nd-edition-jan-newmarch/

Network Programming with Go Language 2nd Edition Ronald


Petty

https://ebookmeta.com/product/network-programming-with-go-
language-2nd-edition-ronald-petty/

Software Development with Go: Cloud-Native Programming


using Golang with Linux and Docker Nanik Tolaram

https://ebookmeta.com/product/software-development-with-go-cloud-
native-programming-using-golang-with-linux-and-docker-nanik-
tolaram/

Salesforce Platform Governance Method: A Guide to


Governing Changes, Development, and Enhancements on the
Salesforce Platform 1st Edition Lee Harding

https://ebookmeta.com/product/salesforce-platform-governance-
method-a-guide-to-governing-changes-development-and-enhancements-
on-the-salesforce-platform-1st-edition-lee-harding-2/
Legal studies for VCE, access and justice 14th Edition
Lisa Filippin

https://ebookmeta.com/product/legal-studies-for-vce-access-and-
justice-14th-edition-lisa-filippin/

A Beginner's Guide to Paper Wildflowers : Learn to Make


43 Beautiful Paper Flowers - Over 250 Full-size
Templates Emiko Yamamoto

https://ebookmeta.com/product/a-beginners-guide-to-paper-
wildflowers-learn-to-make-43-beautiful-paper-flowers-
over-250-full-size-templates-emiko-yamamoto/

Overcoming Addiction: An Islamic Approach to Recovery


1st Edition Tayba Foundation

https://ebookmeta.com/product/overcoming-addiction-an-islamic-
approach-to-recovery-1st-edition-tayba-foundation/

All I Want For Christmas 1st Edition Poppy Parkes

https://ebookmeta.com/product/all-i-want-for-christmas-1st-
edition-poppy-parkes/

Finding Pandora The Complete Collection 2nd Edition E


Rachael Hardcastle

https://ebookmeta.com/product/finding-pandora-the-complete-
collection-2nd-edition-e-rachael-hardcastle/
Double Crossed A Review of the Most Extreme Exercise
Program 2nd Edition Dr Sean M Wells

https://ebookmeta.com/product/double-crossed-a-review-of-the-
most-extreme-exercise-program-2nd-edition-dr-sean-m-wells/
Jan Newmarch and Ronald Petty
Network Programming with Go
Language
Essential Skills for Programming, Using and
Securing Networks with Open Source Google
Golang
2nd ed.
Dr. Jan Newmarch
Oakleigh, VIC, Australia

Ronald Petty
San Francisco, CA, USA

ISBN 978-1-4842-8094-2 e-ISBN 978-1-4842-8095-9


https://doi.org/10.1007/978-1-4842-8095-9

© Jan Newmarch and Ronald Petty 2022

This work is subject to copyright. All rights are reserved by the


Publisher, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations,
recitation, broadcasting, reproduction on microfilms or in any other
physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar
methodology now known or hereafter developed.

The use of general descriptive names, registered names, trademarks,


service marks, etc. in this publication does not imply, even in the
absence of a specific statement, that such names are exempt from the
relevant protective laws and regulations and therefore free for general
use.

The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.
This Apress imprint is published by the registered company APress
Media, LLC, part of Springer Nature.
The registered company address is: 1 New York Plaza, New York, NY
10004, U.S.A.
I dedicate this to my family.
Preface to the Second Edition
While an age has passed in Internet years, Go remains a primary
destination for programmers. Go conquered the container technology
space. It continues to find affection in Cloud Native development. Go
strives to remain true to itself, backward compatible, yet adding new
language features like Generics. Tooling improvements such as Fuzzing
allow for more secure application development.
Go has changed, and so has this book. The first edition used Go 1.8;
we are now on Go 1.18. The code has been updated to reflect this new
reality. The examples have been largely developed to show a particular
feature of Go networking without forcing complexity like managing
several projects or packages scattered across the book; the associated
repository can be found here
https://github.com/Apress/network-prog-with-go-2e.
The first version of this book assumed familiarity with Go, and that
remains in this edition. We expand slightly what we are willing to
discuss in this book with the inclusion of more third-party modules,
tools, and techniques. Jan was correct to keep the focus on Go and not
to be distracted with the ecosystem at large.
If you desire to learn about implementing networking concepts with
Go, I hope this book serves you well.
As a point of comparison, what follows is Jan’s original preface,
reflecting Go in 2017.
Preface to the First Edition
It’s always fun to learn a new programming language, especially when it
turns out to be a major one. Prior to the release of Go in 2009, I was
teaching a Master’s level subject in network programming at Monash
University. It’s good to have a goal when learning a new language, but
this time, instead of building yet another wine cellar program, I decided
to orient my lecture notes around Go instead of my (then) standard
delivery vehicle of Java.
The experiment worked well: apart from the richness of the Java
libraries that Go was yet to match, all the programming examples
transferred remarkably well, and in many cases were more elegant than
the original Java programs.
This book is the result. I have updated it as Go has evolved and as
new technologies such as HTTP/2 have arisen. But if it reads like a
textbook, well, that is because it is one. There is a large body of
theoretical and practical concepts involved in network programming
and this book covers some of these as well as the practicalities of
building systems in Go.
In terms of language popularity, Go is clearly rising. It has climbed
to 16th in the TIOBE index, is 18th in the PYPL (Popularity of
Programming Language), and is 15th in the RedMonk Programming
Language rankings. It is generally rated as one of the fastest growing
languages.
There is a growing community of developers both of the core
language and libraries and of the independent projects. I have tried to
limit the scope of this book to the standard libraries only and to the
“sub-repositories” of the Go tree. While this eliminates many excellent
projects that no doubt make many programming tasks easier,
restricting the book to the official Go libraries provides a clear bound.
This book assumes a basic knowledge of Go. The focus is on using
Go to build network applications, not on the basics of the language.
Network applications are different than command-line applications, are
different than applications with a graphical user interface, and so on. So
the first chapter discusses architectural aspects of network programs.
The second chapter is an overview of the features of Go that we use in
this book. The third chapter on sockets covers the Go version of the
basics underlying all TCP/IP systems. Chapters 4, 5, and 6 are more
unusual in network programming books. They cover the topics of what
representations of data will be used, how a network interaction will
proceed, and for text, which language formats are used. Then in Chapter
7, we look at the increasingly important topic of security. In Chapter 8,
we look at one of the most common application layer protocols in use,
HTTP. The next four chapters are about topics related to HTTP and
common data formats carried above HTTP – HTML and XML. In
Chapter 13, we look at an alternative approach to network
programming, remote procedure calls. Chapters 14 and 15 consider
further aspects of network programming using HTTP.
Any source code or other supplementary material referenced by the
author in this book is available to readers on GitHub. For more detailed
information, please visit
https://github.com/Apress/network-prog-with-go-2e.
Acknowledgments
I want to share my appreciation for Jan Newmarch for collaborating on
this book. This project has offered me a tremendous sense of
achievement and allowed me to cross a much-anticipated item off my
bucket list. I would also like to thank Eldon Alameda for his thoughtful
approach at letting me know when I am off the mark and for providing
me with solid advice.
Additionally, I owe gratitude to my partners at Apress, both Steve
Anglin for the opportunity and Mark Powers for the guidance to help
see this through. Thank you to my colleagues at RX-M, including Randy
Abernethy, Christopher Hanson, Andrew Bassett, and Anita Wu. Our
work over the years has allowed for my participation in a project such
as this book.
Finally, I want to thank my wife Julie and daughter Charlotte. Julie’s
capacity to manage the world while I hide out on a computer is
unmatched and most appreciated. Charlotte’s energy, abilities, and
creativity inspire me to become better every day.

—Ronald Petty
Table of Contents
Chapter 1:​Architectural Layers
Protocol Layers
ISO OSI Protocol
OSI Layers
TCP/​IP Protocol
Some Alternative Protocols
Networking
Gateways
Host-Level Networking
Packet Encapsulation
Connection Models
Connection Oriented
Connectionless
Communications Models
Message Passing
Remote Procedure Call
Distributed Computing Models
Client-Server System
Client-Server Application
Server Distribution
Communication Flows
Synchronous Communication
Asynchronous Communication
Streaming Communication
Publish/​Subscribe
Component Distribution
Gartner Classification
Three-Tier Models
Fat vs.​Thin
Middleware Model
Middleware Examples
Middleware Functions
Continuum of Processing
Points of Failure
Acceptance Factors
Thoughts on Distributed Computing
Transparency
Access Transparency
Location Transparency
Migration Transparency
Replication Transparency
Concurrency Transparency
Scalability Transparency
Performance Transparency
Failure Transparency
Eight Fallacies of Distributed Computing
Fallacy: The Network Is Reliable
Fallacy: Latency Is Zero
Fallacy: Bandwidth Is Infinite
Fallacy: The Network Is Secure
Fallacy: Topology Doesn’t Change
Fallacy: There Is One Administrator
Fallacy: Transport Cost Is Zero
Fallacy: The Network Is Homogeneous
Conclusion
Chapter 2:​Overview of the Go Language
Types
Slices and Arrays
Maps
Pointers
Functions
Structures
Methods
Multithreading
Packages
Modules
Type Conversion
Statements
GOPATH
Running Go Programs
Standard Libraries
Error Values
Conclusion
Chapter 3:​Socket-Level Programming
The TCP/​IP Stack
IP Datagrams
UDP
TCP
Internet Addresses
IPv4 Addresses
IPv6 Addresses
IP Address Type
Using Available Documentation and Examples
The IPMask Type
Basic Routing
The IPAddr Type
Host Canonical Name and Addresses Lookup
Services
Ports
The TCPAddr Type
TCP Sockets
TCP Client
A Daytime Server
Multithreaded Server
Controlling TCP Connections
Timeout
Staying Alive
UDP Datagrams
Server Listening on Multiple Sockets
The Conn, PacketConn, and Listener Types
Raw Sockets and the IPConn Type
Conclusion
Chapter 4:​Data Serialization
Structured Data
Mutual Agreement
Self-Describing Data
Encoding Packages
ASN.​1
ASN.​1 Daytime Client and Server
JSON
A Client and A Server
The Gob Package
A Client and A Server
Encoding Binary Data As Strings
Protocol Buffers
Installing and Compiling Protocol Buffers
The Generated personv3.​pb.​go File
Using the Generated Code
Conclusion
Chapter 5:​Application-Level Protocols
Protocol Design
Why Should You Worry?​
Version Control
The Web
Message Format
Data Format
Byte Format
Character Format
A Simple Example
A Stand-Alone Application
The Client-Server Application
The Client Side
Alternative Presentation Aspects
The Server Side
Protocol:​Informal
Text Protocol
Server Code
Client Code
Textproto Package
State Information
Application State Transition Diagram
Client-State Transition Diagrams
Server-State Transition Diagrams
Server Pseudocode
Conclusion
Chapter 6:​Managing Character Sets and Encodings
Definitions
Character
Character Repertoire/​Character Set
Character Code
Character Encoding
Transport Encoding
ASCII
ISO 8859
Unicode
UTF-8, Go, and Runes
UTF-8 Client and Server
ASCII Client and Server
UTF-16 and Go
Little-Endian and Big-Endian
UTF-16 Client and Server
Unicode Gotchas
ISO 8859 and Go
Other Character Sets and Go
Conclusion
Chapter 7:​Security
ISO Security Architecture
Functions and Levels
Mechanisms
Data Integrity
Symmetric Key Encryption
Public Key Encryption
X.​509 Certificates
TLS
A Basic Client
Server Using a Self-Signed Certificate
Conclusion
Chapter 8:​HTTP
URLs and Resources
i18n
HTTP Characteristics
Versions
HTTP/​0.​9
HTTP/​1.​0
HTTP 1.​1
HTTP Major Upgrades
HTTP/​2
HTTP/​3
Simple User Agents
The Response Type
The HEAD Method
The GET Method
Configuring HTTP Requests
The Client Object
Proxy Handling
Simple Proxy
Authenticating Proxy
HTTPS Connections by Clients
Servers
File Server
Handler Functions
Bypassing the Default Multiplexer
HTTPS
Conclusion
Chapter 9:​Templates
Inserting Object Values
Using Templates
Pipelines
Defining Functions
Variables
Conditional Statements
The html/​template Package
Conclusion
Chapter 10:​A Complete Web Server
Browser Site Diagram
Browser Files
Basic Server
The listFlashCards Function
The manageFlashCards​Function
The Chinese Dictionary
The Dictionary Type
Flashcard Sets
Fixing Accents
The ListWords Function
The showFlashCards Function
Presentation on the Browser
Running the Server
Conclusion
Chapter 11:​HTML
The html/​template Package
Tokenizing HTML
XHTML/​HTML
JSON
Conclusion
Chapter 12:​XML
Unmarshalling XML
Marshalling XML
Parsing XML
The StartElement Type
The EndElement Type
The CharData Type
The Comment Type
The ProcInst Type
The Directive Type
XHTML
HTML
Conclusion
Chapter 13:​Remote Procedure Call
Go’s RPC
HTTP RPC Server
HTTP RPC Client
TCP RPC Server
TCP RPC Client
Matching Values
JSON
JSON RPC Server
JSON RPC Client
Conclusion
Chapter 14:​REST
URIs and Resources
Representations
REST Verbs
The GET Verb
The PUT Verb
The DELETE Verb
The POST Verb
No Maintained State (That Is, Stateless)
HATEOAS
Representing Links
Transactions with REST
The Richardson Maturity Model
Flashcards Revisited
URLs
ServeMux (The Demultiplexer)
Content Negotiation
GET /​
POST /​
Handling Other URLs
The Complete Server
Client
Using REST or RPC
Conclusion
Chapter 15:​WebSockets
WebSockets Server
The golang.​org/​x/​net/​websocket Package
The Message Object
The JSON Object
The Codec Type
WebSockets over TLS
WebSockets in an HTML Page
The github.​com/​gorilla/​websocket Package
Echo Server
Echo Client
Conclusion
Chapter 16:​Gorilla
Middleware Pattern
Standard Library ServeMux Examples
Customizing Muxes
gorilla/​mux
Why Should We Care
Gorilla Handlers
Additional Gorilla Examples
gorilla/​rpc
gorilla/​schema
gorilla/​securecookie
Conclusion
Chapter 17:​Testing
Simple and Broken
httptest Package
Below HTTP
Leveraging the Standard Library
Conclusion
Appendix A:​Fuzzing
Fuzzing in Go
Fuzzing Failures
Conclusion
Appendix B:​Generics
A Filtering Function Without Generics
Refactor Using Generics
Custom Constraints
Using Generics on Collections
How Not to Use Generics?​
Conclusion
Index
About the Authors
Jan Newmarch
was head of ICT (higher education) at
Box Hill Institute before retiring, and still
is adjunct professor at Canberra
University, and adjunct lecturer in the
School of Information Technology,
Computing and Mathematics at Charles
Sturt University. He is interested in more
aspects of computing than he has time to
pursue, but the major thrust over the last
few years has developed from user
interfaces under UNIX into Java, the Web,
and then into general distributed
systems. Jan developed a number of
publicly available software systems in these areas. For the last few
years, he had been looking at sound for Linux systems and
programming the Raspberry Pi’s GPU. He is now exploring aspects of
the IoT and Cyber Security. He lives in Melbourne, Australia, and enjoys
the food and culture there, but is not so impressed by the weather.

Ronald Petty, M.B.A.,M.S.


is a principal consultant at RX-M and
founder of Minimum Distance LLC. He is
interested in many aspects of computing
including distributed systems and
machine learning. Kubernetes and Go
have occupied much of his time in recent
years, including presenting at KubeCon.
He hopes his own experiences help the
next generation of developers.
About the Technical Reviewer
Eldon Alameda
is a web developer who currently resides in the harsh climates of
Kansas. He works as a regional webmaster for the US National Weather
Service. Prior to this, he did development for a variety of companies
including local startups, advertising firms, Sprint PCS, and IBM. During
the 1990s, he also acquired a nice stack of worthless stock options from
working for dot-com companies.
© Jan Newmarch and Ronald Petty 2022
J. Newmarch, R. Petty, Network Programming with Go Language
https://doi.org/10.1007/978-1-4842-8095-9_1
1. Architectural Layers
Jan Newmarch1 and Ronald Petty2
(1) Oakleigh, VIC, Australia
(2) San Francisco, CA, USA

This chapter covers the major architectural features of distributed


systems. A distributed system is a collection of components interacting
over a network. You can’t build a system without some idea of what you
want to build. And you can’t build it if you don't know the environment
in which it will work. GUI programs are different than batch processing
programs; games programs are different than business programs; and
distributed programs are different than stand-alone programs. They
each have their approaches, their common patterns, the problems that
typically arise, and the solutions that are often used.
This chapter covers the high-level architectural aspects of
distributed systems. There are many ways of looking at such systems,
and many of these are dealt with. We begin with a layering model to
help us understand component boundaries, discuss network
implementation details, and consider how our components message
each other, wrapping up with error conditions and how to think about
them.
Protocol Layers
Distributed systems are hard. There are multiple computers involved,
which have to be connected in some way. Programs have to be written
to run on each computer in the system, and they all have to cooperate
to get a distributed task done.
The common way to deal with complexity is to break it down into
smaller and simpler parts. These parts have their own structure, but
they also have defined means of communicating with other related
parts. In distributed systems, the parts are called protocol layers, and
they have clearly defined functions. They form a stack, with each layer
communicating with the layer above and the layer below. The
communication between layers is defined by protocols.
Network communications require protocols to cover high-level
application communication all the way down to wire communication
and the complexity handled by encapsulation in protocol layers.

ISO OSI Protocol


Although it was never properly implemented, the OSI (Open Systems
Interconnect) protocols have been a major influence in ways of talking
about and influencing distributed systems design. It is commonly given
as shown in Figure 1-1.
Figure 1-1 The Open Systems Interconnect protocol

OSI Layers
The function of each layer from bottom to top is as follows:
The Physical layer conveys the bit stream using electrical, optical, or
radio technologies.
The Data Link layer puts the information packets into network
frames for transmission across the Physical layer and back into
information packets.
The Network layer provides switching and routing technologies.
The Transport layer provides transparent transfer of data between
end systems and is responsible for end-to-end error recovery and
flow control.
The Session layer establishes, manages, and terminates connections
between applications.
The Presentation layer provides independence from differences in
data representation (e.g., encryption).
The Application layer supports application and end-user processes.
A layer in the OSI model often maps to a modern protocol; for
example, the IP from TCP/IP maps to the Network layer, also known as
layer 3 (Physical is layer 1). The Application layer, layer 7, maps to
HTTP. Some protocols like HTTPS seem to blend layers, 5 (Session) and
6 (Presentation). No model is perfect; alternatives exist to the OSI
model that maps closer to a given reality, such as the TCP/IP protocol
model.

TCP/IP Protocol
While the OSI model was being argued, debated, partly implemented,
and fought over, the DARPA Internet research project was busy building
the TCP/IP protocols. These have been immensely successful and have
led to The Internet (with capitals). This is a much simpler stack, as
shown in Figure 1-2.

Figure 1-2 The TCP/IP protocols

Some Alternative Protocols


Although it almost seems like it, the TCP/IP protocols are not the only
ones in existence and in the long run may not even be the most
successful. Wikipedia’s list of network protocols (see
https://en.wikipedia.org/wiki/List_of_network_prot
ocols_(OSI_model)) has a huge number more, at each of the OSI
ISO layers. Many of these are obsolete or of little use, but due to
advances in technology in all sorts of areas – such as the Internet in
Space and the Internet of Things – there will always be room for new
protocols.
The primary focus in this book is on OSI layers 3 and 4 (TCP/IP,
including UDP), but you should be aware that there are other ones.
Networking
A network is a communications system for connecting end systems
called hosts. The mechanisms of connection might be copper wire,
Ethernet, fiber optic, or wireless, but that won’t concern us here. A local
area network (LAN) connects computers that are close together,
typically belonging to a home, small organization, or part of a larger
organization.
A wide area network (WAN) connects computers across a larger
physical area, such as between cities. There are other types as well,
such as MANs (metropolitan area networks), PANs (personal area
networks), and even BANs (body area networks).
An internet is a connection of two or more distinct networks,
typically LANs or WANs. An intranet is an Internet with all networks
belonging to a single organization.
There are significant differences between an internet and an
intranet. Typically, an intranet will be under a single administrative
control, which will impose a single set of coherent policies. An internet,
on the other hand, will not be under the control of a single body, and
the controls exercised over different parts may not even be compatible.
A trivial example of such differences is that an intranet will often be
restricted to computers by a small number of vendors running a
standardized version of a particular operating system. On the other
hand, an internet will often have a smorgasbord of different computers
and operating systems.
The techniques of this book are applicable to internets. They are
also valid with intranets, but there you will also find specialized,
nonportable systems.
And then there is the “mother” of all internets: The Internet. This is
just a very, very large internet that connects us to Google, my computer
to your computer, and so on.
Gateways
A gateway is a generic term for an entity used to connect two or more
networks. A repeater operates at the Physical level and copies
information from one subnet to another. A bridge operates at the Data
Link layer level and copies frames between networks. A router operates
at the Network level and not only moves information between
networks but also decides on the route.
Host-Level Networking
On a single host, we have additional concerns when designing,
debugging, or deploying network-based software. Some of these items
include the following:
DNS (domain name system, i.e., human-friendly naming)
Firewalls (e.g., blocking inbound or outbound traffic)
Routing (e.g., figuring out which network to place a packet)
Host Identity management (e.g., IP address)
Performance controls (e.g., traffic shaping or retries)
Connection issues (e.g., missing network adapter, intramachine
process communication)
Through examples, we will see how a host misconfiguration might
manifest in our software.
Packet Encapsulation
The communication between layers in either the OSI or the TCP/IP
stacks is done by sending packets of data from one layer to the next and
then eventually across the network. Each layer has administrative
information that it has to keep about its own layer. It does this by
adding header information to the packet it receives from the layer
above, as the packet passes down. On the receiving side, these headers
are removed as the packet moves up.
For example, the TFTP (Trivial File Transfer Protocol) moves files
from one computer to another. It uses the UDP protocol on top of the IP
protocol, which may be sent over ethernet. This looks like the diagram
shown in Figure 1-3.

Figure 1-3 The TFTP (Trivial File Transfer Protocol)


Connection Models
In order for two computers to communicate, they must set up a path
whereby they can send at least one message in a session. There are two
major models for this:
Connection oriented
Connectionless

Connection Oriented
A single connection is established for the session. Two-way
communications flow along the connection. When the session is over,
the connection is broken. The analogy is to a phone conversation. An
example is TCP.

Connectionless
In a connectionless system, messages are sent independent of each
other. Ordinary mail is the analogy. Connectionless messages may
arrive out of order. Messages do not have an impact on each other. An
example is the IP protocol. UDP is a connectionless protocol above IP
and is often used as an alternative to TCP, as it is much lighter weight.
Connectionless is also known as unconnected or stateless.
Connection-oriented transports may be established on top of
connectionless ones – TCP over IP. Connectionless transports may be
established on top of connection-oriented ones – HTTP over TCP.
Messages over a connection-oriented transport protocol have some
kind of relation, for example, a sequence number used to keep order.
Having state allows for functionality and optimizations; it also has an
associated cost of storage and computing.
There can be variations on these. For example, a session might
enforce messages arriving but might not guarantee that they arrive in
the order sent. However, these two are the most common.
Connection models are not the only way a protocol can vary. One
often desired feature is reliability; this is where the protocol has logic to
fix some types of errors; for example, TCP resends a missing packet. It’s
pretty common to assume connection-oriented protocols are reliable;
this is not always the case (e.g., MPLS). Additional features of a network
protocol could include message boundary management, delivery
ordering, error checking, flow control, etc. These features can exist in
one protocol layer and not another, partly why there are so many
network protocol stacks.
Sometimes, these features are reworked throughout the protocol
stack. An example of this kind of feature rework is with HTTP/3. In
HTTP/2, reliability is provided using TCP at layer 4. In HTTP/3, TCP is
being replaced with UDP, which is not reliable. Instead, reliability will
be provided with another protocol known as QUIC. While QUIC is
considered a Transport layer, like TCP or UDP, it works on top of UDP.
As you can see, the layer model is not an exact science.
Communications Models
In a distributed system, there will be many components (i.e., processes)
running that have to communicate with each other. There are two
primary models for this, message passing and remote procedure calls.
In the context of networking, these models allow interprocess (and/or
thread) communication with intent to invoke behavior on the remote
process.

Message Passing
Some languages are built on the principle of message passing.
Concurrent languages (and tools) often use such a mechanism, and the
most well-known example is probably the UNIX pipeline. The UNIX
pipeline is a pipeline of bytes, but this is not an inherent limitation:
Microsoft’s PowerShell can send objects along its pipelines, and
concurrent languages such as Parlog can send arbitrary logic data
structures in messages between concurrent processes. Recent
languages such as Go have mechanisms for message passing (between
threads).
Message passing is a primitive mechanism for distributed systems.
Set up a connection and pump some data down it. At the other end,
figure out what the message was and respond to it, possibly sending
messages back. This is illustrated in Figure 1-4.
Figure 1-4 The message passing communications model
Event-driven systems act in a similar manner. At a low level, the
programming language node.js runs an event loop waiting for I/O
events, dispatching handlers for these events and responding. At a
higher level, most user interface systems use an event loop waiting for
user input, while in the networking world, Ajax uses the
XMLHttpRequest to send and receive requests.

Remote Procedure Call


In any system, there is a transfer of information and flow control from
one part of the system to another. In procedural languages, this may
consist of the procedure call, where information is placed on a call stack
and then control flow is transferred to another part of the program.
Even with procedure calls, there are variations. The code may be
statically linked so that control transfers from one part of the program’s
executable code to another part. Due to the increasing use of library
routines, it has become commonplace to have such code in shared
objects (.so) or dynamic link libraries (.dll), where control transfers to
an independent piece of code.
Libraries run in the same machine as the calling code. it is a simple
(conceptual) step to transfer control to a procedure running in a
different machine (i.e., remote library). The mechanics of this are not so
simple! However, this model of control has given rise to the remote
procedure call (RPC), which is discussed in much detail in a later
chapter. This is illustrated in Figure 1-5.

Figure 1-5 The remote procedure call communications model

There are many examples of this: some based on particular


programming languages such as the Go rpc package (discussed in
Chapter 13) or RPC systems covering multiple languages such as SOAP
and Google’s gRPC.
It may not be clear how message passing and RPC differ. At one
level, they both are involved with invoking behavior “somewhere else.”
Generally speaking, RPC tends to be less abstract (i.e., looks and feels
like regular procedure calls) compared to message passing where we
could be calling remote queueing system. Under the hood though, RPC
will be passing messages.
Distributed Computing Models
At the highest level, we could consider the equivalence or the
nonequivalence of components of a distributed system. The most
common occurrence is an asymmetric one: a client sends requests to a
server, and the server responds. This is a client-server system.
If both components are equivalent, both able to initiate and to
respond to messages, then we have a peer-to-peer system. Note that this
is a logical classification: one peer may be a 16,000-core
supercomputer; the other might be a mobile phone. But if both can act
similarly, then they are peers.
These are illustrated in Figure 1-6.

Figure 1-6 Client-server vs. peer-to-peer systems

An example of a client-server is a browser talking to a web server.


An example of a peer-to-peer system could be database system where
data is replicated and available on both peers.
Combinations of these systems result in what is known as multitier
architectures, where three-tier architecture is one of the most common
(i.e., presentation -> application -> data or browser -> web server ->
database).
Client-Server System
Another view of a client-server system is shown in Figure 1-7.

Figure 1-7 The client-server system

This view may be held by a developer who needs to know the


components of a system. It is also the view that may be held by a user: a
user of a browser knows it is running on their system but is
communicating with servers elsewhere.
The prior diagram looks similar to the OSI model we discussed
earlier. Layers in Figure 1-7 are also optional; for example, we can have
both the client and server process on a single piece of hardware. Being
located on the same machine means we can potentially remove some
layers of the OSI model including layer 1 (Physical), layer 2 (Data Link),
and layer 3 (Network). We say potentially because these layers still may
be desired for various reasons including tooling homogeneity or
security.
Discovering Diverse Content Through
Random Scribd Documents
Barbron reipasta esiintymistä oli Minkan aina vaikea Vastustaa.
Nytkään hän ei voinut olla nostamatta päätään ja sitten siirtämättä
pientä olentoaan sängynlaidalle Barbron viereen. Sitten hän sanoi
jörösti: "Minä halki sanoista, jotka tulevat ilkeät; ei kukaan minua
tahdo kuulla." Barbro tarttui puheeseen rohkaisevasti nyökäten.

"Minä ymmärrän ranskaa. Anna tulla sitä!"

Minka lennähti lattialle ja pyöri siinä ympäri kuin villikissa, minkä


jälkeen hänen luottava mielensä alkoi yht'äkkiä purkautua sanoin ja
elein. Koko sen raskaan taakan, mikä häntä oli viime aikoina
rasittanut, hän heitti pois, löi pirstaleiksi ja musersi palasiksi. Barbro
ei ollut konsanaan kuullut niin tulvivaa kaunopuheisuutta. Hänestä
tuntui, että koko Minka oli kuin tultasyöksevä vuori, joka sinkosi
sisästään kiviä, liekkejä ja kipunoita. Kaikkea hän ei ymmärtänyt,
mutta niin paljon sentään, että Minka säälitti häntä todenperästä.

Viimein raukesivat Typykän voimat. Hän lysähti hervottomana


tuolille ja sanoi valittaen:

"Olen niin väsynyt."

"Minä myöskin, Minka, jännityksestä. Mutta älä sinä aina haudo


vaikeuksiasi. Pienet puutteet voi aina selvittää. Mutta sitä minä en
jaksa käsittää, miksi sinä olet niin kateellinen minulle. Urban Freide
on jo hylännyt minut. Knut Ståhle on myös noudattamaisillaan hänen
esimerkkiään. Sinun täytyy päästä tanssiaisiin."

Barbro säteili ilosta, että hänellä oli sellainen vaikutusvallan


noitasauva. Käynneiltä rakkaan Helene-tädin luona olivat hänen
ajatuksensa paljon kirkastuneet ja tahto lujittunut. Ja vaikka hän
melkein aina teki aloitteensa liian intomielisesti ja
harkitsemattomasti, onnistui hänen toisinaan saavuttaa todellista
hyötyä älykkäältä, kokeneelta vanhusystävältään. Helene-täti oli
sanonut, että nuoruus on elämän päiväpaisteisimpien kukkuloiden
valloittaja ja että sillä oli valloittajaherran julma tai jalo luonne.
Barbro haaveksi jaloutta ja tietysti sen korkeinta mahdollisuutta.
"Sinun täytyy päästä tanssiaisiin", toisti hän, kun nämä sanat
taannoin eivät tepsineet.

Minka lennähti ylös. Nyt hän ei purrut, vaan kietoi kätensä Barbron
kaulaan.

"Chérie, mais chérie, est-ce possible?" — —

Ei tosiaankaan ollut vaikeaa saada nuori Ståhle pyytämään


Minkaa, ja tämä kieppui kokonaisen päivän riemastuneena Barbron
kintereillä, mutta kun tuotiin Barbron vaaleansininen voile-leninki ja
tytöt yhdessä ottivat tuon ilmavan ja hienon puvun rasiasta, synkistyi
Minka uudestaan.

"Minulla ei ole leninkiä", sanoi hän, "eikä myöskään rahaa".

"Viimemainittua ei ole minullakaan", mutisi Barbro alakuloisena,


"muuten…"

"Luuletko, että saisimme myydyksi koruja?" kysyi Minka. Hän


puhui nyt ranskaa, ja se teki hänet avosydämisemmäksi.

"En luule, se on niin vastenmielistä enkä minä tiedä, kuka niitä


ostaakaan. Minulla on eräs toinen ajatus."

"Onko se kelvollinen?" kysyi Minka epäilevästi, sillä Kynänvarsi oli


tunnettu kaikkialla liitelevistä ajatuksistaan.
"Oo-on", kuului pitkäveteinen vastaus. Jo samana iltana kertoi
Barbro ajatuksensa sisarelleen Birgitille, jonka tosin oli usein vaikea
seurata Barbron ajatuskiemuroita, mutta joka mielellään auttoi
häntä, milloin voi.

Barbro pyysi tällä kertaa aivan ujostelematta, että Birgit lainaisi


hänelle sata kruunua.

"Minä hotaisen yks'kaks' neljä tunnelmapalaa maaseutulehtiin",


sanoi hän, "ja niistä minä saan rahat. Minähän olenkin jo vähin erin
alkanut huolehtia itsestäni, Gita", lisäsi hän. "Olen tänä vuonna
todenperästä ansainnut kirjoituksillani kolmekymmentäviisi kruunua."

"Sehän on lupaavaa", nauroi Birgit, "sillä kohta ollaan jo


joulukuussa, mutta mihin sinä tarvitset sata kruunua lisäksi? Pappa
on jättänyt minulle rahaa sinua varten ja niistä voimme ottaa, jos
tarve vaatii."

"Mieluummin minä tahtoisin ne ansaita, mutta oli miten oli, tarve


on ehdottoman välttämätön, minun täytyy saada heleänvärinen
tanssipuku lauantaiksi."

"Onhan sinulla se vaaleansininen!"

"On, mutta siihen pyntätään Bertingin tyttö ja heleään hän pynttää


erään toisen tytön plus kukkurapäisen ilonsa. Suoraan ja selvään
sanoen, minä lahjoitan toisen leningin pois."

Birgit pyysi selitystä ja sai sen. Hän jäi kuitenkin kahdenvaiheille,


kun Barbron hyväntekeväisyys oli hänen mielestään liian
suurenmoista, mutta pontevan suostuttelun jälkeen läksi Babi
voittajana ja paluumatkalla kotiin hän hyräili jokseenkin kuuluvasti:
"Laula sä raittiilla mielellä vaan…"

Eräässä kadunkulmassa häntä vastaan tulla tupsahti tohtori


Krabbe. Barbro punastui kovasti ajatellessaan, että tohtori on
saattanut kuulla hänen laulavan. Ensin tohtori tietystikin aikoi vain
nostaa hattuaan ja mennä menojaan, mutta Barbron aurinkoiset
kasvot, jotka säteilivät keväistä valoa harmaaseen sumuun,
houkuttelivat hänet pysähtymään.

"Te olette sen näköinen, kuin olisi teillä syli täysi riemua", sanoi
tohtori.

"Niin onkin. Minä haaveksin ensimmäisiä, ehkä ainoita


Karlberg-tanssiaisiani."

"Vai niin, ainoastaan tanssiaisia."

"Onko se ainoastaan?"

"Ei, ei, mutta toisinaan tuntuu, kuin teillä olisi syvempiä


harrastuksia."

"Minulla on kaikenlaisia harrastuksia, minusta on onnellista elää."

Tohtori katseli häntä tutkivasti, melkein huolestuneesti. Barbro oli


käynyt hänelle kallisarvoiseksi, tuo nuori tyttö tiedonhaluisine,
lämpimine silmineen ja liian vilkkaine, valkoisine pikku käsineen. Hän
ei ollut lainkaan muiden kaltainen, enimmäkseen vain villilintu-sielu
ja punainen, rikas sydän. Tohtori tiesi jo, että hänestä tulee
tuntumaan kohtalon iskulta se päivä, jona Barbro otetaan pois hänen
ahtaasta maailmastaan, se kumma päivä, jona hänen rakkautensa
puhkeaa kukoistavaan kesäiseen vehmauteen. Hän, opettaja, saisi
vain ne ajatukset, jotka vielä liikkuvat kouluhuoneessa.
Vapaaherratar istui mielellään hänen luennoillaan, sillä hänen
käsityksensä mukaan saattoi kirjallisuushistoria olla vaarallinen aine.
Hän puolusti klassillista kirjallista sivistystä nuorille, ja se rajoitti
luentoja, eristi sen, mikä oli persoonallista. Mutta kun tohtori ensi
kerran oli puhunut J.P. Jacobsenista, tosin vain sivumennen, mutta
kuitenkin sillä lämmöllä, jota hän tunsi tätä kaikkien aikojen
nuoruudenrunoilijaa kohtaan, oli hän huomannut, että Barbron
silmiin syttyi uneksivan syvää myötätuntoisuutta. Ja hän oli kysynyt
itseltään, näinköhän Barbro tiesi rakkaudesta enemmän kuin hän
aavistikaan. Barbron taannoiset sanat "minusta on onnellista elää"
kaikuivat hänen sydämessään. Barbro oli kahdeksantoistavuotias,
hän enemmän kuin kahta vertaa vanhempi. Siitä oli jo aikoja, kun
hänkin oli ollut toivorikas ja väkevä ja rinta avoin ahmimaan elämää.
Hitaasti hän sanoi:

"En sounden Dag, en sounden Tid vaagner igen i mit


Minde."

Barbro katsoi häneen hieman ihmeissään. Täällä Tukholmassa hän


kuuli ani harvoin tuollaista sanojen ja rytmin sointua, enimmäkseen
puhuttiin urheilusta ja elävistä kuvista ja one-stepistä, ja hänestä se
oli tuntunut mukaansatempaavalta, mutta tohtorin matala ääni vei
hänet takaisin siihen ajatusmaailmaan, jonka hän oli omistanut
itselleen oleskellessaan isoäidin luona, ja hän sanoikin muistaen:

"J.P. Jacobsen?"

"Niin. Oletteko lukenut hänen teoksiaan?"

"Olen kyllä. Heine ja Jacobsen ja Levertin olivat minun uskollisia


ritarejani pitkän aikaa, mutta sitten oli minulla muuan hyvä ystävä,
joka vieroitti minut heistä, ettei minusta tulisi kirjallisesti vähäveristä,
kuten hän sanoi. Ja niin minä aloin tutkia muistelmakirjailijoita. En
ole sentään ehtinyt vielä sen pitemmälle, kuin että kaikki lukeminen
huvittaa minua."

Hän hymyili yht'aikaa sekä terhakasti että puolustellen.

"Vai niin, teillä on hyvä ystävä, joka on pätevä ohjaamaan teidän


makuaistianne."

Barbro lennähti tulipunaiseksi. Ei ole ensinkään totta, että Krapu


on ukon näköinen, niinkuin toverit väittävät. Voi, jospa vain tohtori
olisi ollut tuona ohjaajana! Hän tunsi olevansa yhtä hämmentyneen
kiitollinen kuin silloinkin, kun kaljupäinen parooni oli puhunut
tunteistaan, mutta tohtori oli sentään säälittävämpi, ja sentähden
hän sanoi innokkaasti:

"Niin, se on eräs tuttava poika siltä ajalta, kun olin pieni, ja me


olemme melkein sisaruksia, minä en voisi milloinkaan pitää häntä
sellaisena — kuin muita, jotka tunnen."

Tohtori hengitti syvään. Miksi Barbro oli niin kärkäs puhumaan


tästä?
Tohtori ei tosin luullut itsestään mitään erikoista, mutta — mutta
Barbro aivan varmaan toivoi hänen saavan tietää, ettei hän ollut
sidottu tuohon "poikaan".

Tohtori kysyi epäröiden:

"Kuinka aiotte järjestää lukunne talvella, neiti Berting? Jos teillä on


aikaa itsenäiseen opiskeluun, voisin minä mielelläni avustaa
joillakuilla neuvoilla."
"Kiitos, niitä tulen varmasti käyttämään hyväkseni. Joululuvan
aikana ei minulla ensinkään tule olemaan niin paljon työtä —
kaikesta."

"Jäättekö Tukholmaan?"

"Jään, sisareni ja lankoni luo. He ovat luvanneet, että saan kutsua


Minkan jouluaatoksi heille; hän on ainoa toveri, joka jää laitokseen."
Barbro hymähti yht'äkkiä, sillä Minkan kohtalo oli sidottu Karlberg-
tanssiaisiin ja heleänväriseen leninkiin. Sekö se tekikin kaikki niin
ruusunhohteiseksi? Samassa välähti hänen mieleensä, minkähän
näköinen mahtaisi Krapu olla tanssiaisissa, ja tästä ihmettelystä
solahtivat ajatukset Päivänpilkkeiden ensimmäiseen vuosijuhlaan ja
Lucianpäivään. Taitaisipa olla kova työ saada tohtori avustamaan.
Hän osaa laulaa niin kauniisti luutun säestyksellä, oli Barbrolle
kerrottu. Mutta tohtori oli hyvin vaikeasti taivutettavissa. Voi
tosiaankin, jos hän saisi semmoisen valtin ohjelmaan. Hänen
jalkansa liikkuivat melkein tanssin tahdissa, ja hän alkoi tuotapikaa
kirkkaalla tulisella äänellään:

"Minulla on eräs pyyntö, jonka tahtoisin niin hirveän mielelläni


tehdä tohtorille."

"Kuulen mielelläni, mikä se semmoinen on".

"Niin, meillä on juhla joulukuun kolmantenatoista päivänä. Me


nimitämme sitä Päivänpilkkeiden Lucia-juhlaksi ja me aiomme ostaa
joululahjoja vanhoille köyhille mummoillemme niillä varoilla, joita
saamme. Ohjelmassa on näytelmä ja tanssia ja tombola ja minkä
mitäkin, mutta olisi sanomattoman hauskaa, jos tohtori tahtoisi
avustaa ja laulaa luutun säestyksellä…"
"Ei, neiti Berting", keskeytti tohtori jyrkästi, "siihen te ette minua
saa".

Barbro aivan kalpeni. "Suokaa anteeksi", mutisi hän.

Hänen äkillinen säikähdyksensä tarttui tohtoriin. Tohtorista tuntui


kuin hän olisi töykeästi tyrkännyt tieltään pienen, kukkia tarjoavan
tytön, ja hän sanoi pehmeällä, sointuvalla äänellään:

"Teidänhän on annettava minulle anteeksi epäkohtelias kieltoni.


Mutta kaikki tuollaiset myyjäiset ovat minusta vastenmielisiä, minua
inhottaa esiintyä julkisesti. Ja toisekseen on kai teillä ja teidän
tovereillanne ainakin puolitusinaa palvelevia kavaljeereja, jotka
laulavat luutun säestyksellä. Minun lauluni eivät ilahduttaisi ketään."

"Kyllä, ne saattaisivat minut…"

Barbro vaikeni kainosti kuin koulutyttö.

"Ne saattaisivat teidät…"

"Niin mainion iloiseksi, sillä minä saisin kuulla juuri sitä, mikä on
minun mieleeni."

"Siinä tapauksessa lupaan laulaa teille joskus."

"Kiitos, mutta…" Hän ei mahtanut sille mitään, että vallanhimo


uhmaillen vaati päästä oikeuksiinsa. Tytöt olivat sanoneet: "Jos saat
kravun laulamaan, niin me kannamme sinua kultaisessa tuolissa ja
pidämme sinulle makeiskestit sokerileipurilla, sillä se vasta olisi
valionumero."
"Mutta", lisäsi Barbro rohkeasti, "minä olen ollut jo pitkän aikaa
iloissani, että voisin ehkä saada tohtorin suostumaan laulamaan
Lucia-juhlassa. Tytöt ovat sanoneet, että se on mahdotonta, mutta
tuntuisi niin — niin kolkolta, jos he olisivat oikeassa."

"Niitä lapsia! Suuria lapsia — ja pieni vallanhimoinen Eva", sanoi


tohtori surumielisesti hymyillen. "Te ette vielä käsitä, miten vaatelias
vaara piilee nuorten ajattelemattomissa sanoissa 'minun tähteni'"…

"Enhän minä ole sanonutkaan…"

"Ei, ei, mutta jos minä laulan, niin se tapahtuu teidän tähtenne,
Barbro, siksi että te olette se kevään ihana, heleä hedelmäkukka,
joka ei ole vuosikausiin tuoksunut minun ylettyvilläni. 'Olen lempinyt,
elänyt ja laulanut lauluani', kuten sanotaan. Siitä on jo aikoja. Jos
otan luutun taas käteeni, niin se johtuu siitä, että uusi kevät on
kosketellut sen kieliä."

Barbro toivoi äkkiä, että kaljupäinen parooni menisi sinne, missä


pippuri kasvaa, sillä hänen hassahtava hentomielisyytensä, Barbron
sitä muistellessa, turmeli tohtorin oikeaa, tunteellista vakavuutta.
Barbroa veti vastustamattomasti puoleensa tuo tummasilmäinen
mies, jolla oli uurteinen otsa ja kumarahko ryhti, mutta takana oli
seisovinaan kosijaparooni ja kiemurtelevinaan niin, että molemmat
"vanhat herrat" hävettivät häntä.

Jotakin hänen oli kuitenkin vastattava, ja hän sanoi arasti:

"Eikö se kielten kosketteleminen virkistäisi työssä?"

"En tiedä. Mitä te arvelette?"

"Minäkö? — Kyllä, niin minä ainakin arvelen."


"Minä tahdon päästä tahtoni perille, tarkoitatte." Kun Barbro nyt
kulki siinä hänen rinnallaan kukkeana ja veikeänä ujoudestaan
huolimatta ja niin hartaana ja luottavana, sai se hänet täydellisesti
unohtamaan jyrkän ja ehdottoman kieltonsa. Hän ajatteli sen sijaan,
ettei hän voi kieltää Barbro Bertingiltä tätä iloa, monien muiden
ilojen lisäksi. Kukapa tietää, kauanko se auringonpaiste enää
valaiseekaan hänen rosoista tietään? "Ja minä mukaudun. Minä
laulan jonkun pätkän."

"Onko se ihan, ihan varmaa?"

"On, niin kai sen täytyy olla."

"Saammeko panna sen ohjelmaan?"

"Teidän kidutuksenne ei ole kovinkaan hellävaraista."

Tohtori Krabbe nauroi; sitä Barbro ei ollut nähnyt kertaakaan


ennen, ja siksi se tuntuikin jonkun verran hirnahtavalta ja
kuivettuneelta. Mutta se oli sittenkin naurua, ja kun Barbro yhtyi
nauruun, kuulosti siihen tarttuvan heleää sointua. —

Barbro oli aivan liian onnellinen voidakseen saada, kuten


tavallisesti, unta heti nukkumaan mentyään. Minkan innostus ja
tohtori Krabben nauru, Helene-tädin hellyys pikku Babia kohtaan ja
kimaltavat tulevaisuudentoiveet, joilla ei vielä ollut nimeä, olivat niin
elävöittäviä, että hänen täytyi nousta istualleen sängyssä, ojentaa
kätensä korkealle pään yläpuolelle ja julistaa riemuiten talvisessa
pimeässä:

"Kuinka olenkaan onnellinen, onnellinen, onnellinen!"


VI

Lucia-juhla.

Löwesköldin kasvatushoitola oli puettu ylhäältä alas asti juhla-


asuun, ja monissa huoneissa vallitsi vilkas ja kirjava myyjäistouhu.
Kaikki Päivänpilkkeet olivat auttaneet juhlavalmistuksia ja tulos oli
odottamattoman hyvä, mikä ei suinkaan merkinnyt vähää.

Kerran tunnissa näyttäytyi kynttelikruunuinen Lucia, se on: Sonja


Thomas, kuuden immen saattueessa, jotka suurenmoisen
kahvipöydän ääressä tarjoilivat kahvia ja kotitekoisia "Lucia-torttuja"
käteismaksulla, Ihastushuutoja kohdistui pyhään Luciaan, missä hän
vain liikkui. Hän ei ollut milloinkaan ollut niin kaunis. Barbro oli
puolestaan niin lumoutunut, että oli unohtaa tehtävänsä, nimittäin
pääsylippujen myynnin illatsuun. Siitä oli tuleva illan vetovoima:
Astridin oli siellä muovailtava "tuokiokuvia", Minkan esitettävä
slaavilaisia tansseja ja Fokinan malliin "Kuoleva joutsen", tohtori
Krabben laulettava ja lopuksi Märtan esitettävä yksinpuhelu "Kehdon
ääressä".

Mary oli ottanut myydäkseen käsitöitä, Maud hoiteli näppärästi ja


innokkaasti tombolaa ja mesdemoiselles Renard olivat tarjoutuneet
huolehtimaan kalalammikosta. Eva-täti oli kuten tavallista hurmaava
emäntä, jota tällä kertaa avustivat Fräulein Stock ja mrs Faith.

Luonnollisesti oli tyttöjen sukulaisia ja tuttavia saapunut


joukoittain ja Lucian sulhanen osti kauniille pyhimykselleen kukkia
enemmän kuin tämä jaksoi kantaakaan. Minka oli kukkatyttö, hyvin
koketti ja veikeä, ja hänen ympärillään parveili lakkaamatta joukko
ihailijoita. Kuta pahemmin hänen pehmeä, livertelevä kielensä
solkkasi ruotsia, sitä somempi hän oli nuorista herroista.

Märta oli erääseen nurkkaan järjestänyt pienen Fröbel-näyttelyn;


siellä hänen palleroinen vartalonsa näkyi nuorimpien juhlavieraiden
seassa, joita Weibchen osasi huvittaa paremmin kuin kukaan muu.

"Märtan nimi pitäisi olla Agneau eikä Agnell", sanoi kandidaatti


Urban Freide, "hän on, tuhat tulimmaista, valkovillaisin lammas, mitä
milloinkaan olen nähnyt".

Nämä sanat lausuttiin Minkalle, joka räpytteli pitkiä, mustia


silmäripsiään ja hyväksyi sukkeluuden. Hän ja Urban katosivat silloin
tällöin "sinisen luolan" hämärikköön. Heillä ei tosin ollut paljoa
sanottavaa toisilleen, mutta Urban otti Minkan ruskeat pikku kädet
omiinsa ja leikki niillä kuin pehmeällä kerällä, ja Minka nauroi
kirkasta kevyttä nauruaan.

Silloin aikoi Urban yht'äkkiä vetää häntä luokseen ja suudella


hänen punaisia tyttöhuuliaan, mutta samassa Minka raapaisi pitkän
viirun hänen oikeaan poskeensa.

"Hyi, hyi", sanoi Minka kimmastuen, "se on moukkamaista".


"Niin on, raapiminen, muttei suuteleminen", vastasi Urban
suutahtaen.
"Ette kai liene niin pyhä kuin olette olevinanne."

"Minä ei tahdo suudella teidän kanssanne! Ei kenenkään kanssa


ennen minun mieheni."

"Entäpä jos minusta tuleekin teidän miehenne", sanoi Urban


äkkiarvaamatta. Hän arveli, että tämän yksinäisen, muukalaisen
tytön kanssa saa pilailla vähän vapaammin kuin hänen toveriensa
kanssa.

"Meneekö sillä tapa naimisiin Ruotsissa", ihmetteli Minka, "minä en


silloin halua ruotsalainen mies. Hän on liian raskas — lourd, vous
comprenez! Mutta minä makeasti nauran heidän päälle."

"Kiitoksia paljon, se on suoraa puhetta", sanoi kandidaatti, "mutta


jos minä nyt en tahdo tulla nauretuksi 'päälle', ja jos minä otaksun,
että te voisitte muuttaa makuanne, niin ette saa paheksua
jonkunlaista itsepintaisuutta. Vastustus yllyttää minua aina."

"Minä en oikein ymmärtä niin monia sanoja", hymähti Minka


veitikkamaisesti ja antoi käsiensä soittaa laulua "Jos sä vapaa oot,
minä en oo vaan". Hoikat sormet, jotka käyttivät polvea
näppäimistönä, hyppelivät niin vastustamattoman rivakasti, että
Urban olisi katsellut niitä vaikka kuinka kauan. Ja mitenkä olikaan,
hän suuteli niitä varsin hanakasti, minkä jälkeen hän painoi toisen
pikku kätösen poskessaan olevaa naarmua vasten.

"Sitten kun tämä nolaus on unohtunut, neiti Minka, uskon teidän


osaavan niin paljon ruotsia, että ymmärrätte minun monetkin sanani,
ja silloin saanemme puhella uudestaan."
"Mistä?"

Urban kohtasi Minkan kimaltelevan, lapsellisen hellän ja luottavan


katseen. Hän oli melkoista kehittyneempi kuin pikku ruotsittaret,
vaati enemmän, mutta myös antoi enemmän. Juuri nyt uskoi Urban
aivan varmasti, että hän ajan tullen voisi sanoa Minkaa omakseen.
Mutta siihen eivät kelvanneet puolittaiset lupaukset. Silloin Minka
ehkä raapisi uudestaan. Urban nousi ja sanoi nauraen:

"Siitä, mitä te ette nyt ymmärrä."

Hetkistä myöhemmin Minka myyskenteli kukkiaan muille ilakoiden


ja laverrellen, mutta Urban Freide seisoi eräässä nurkassa ja katseli
saliin haluttomana antautua kenenkään seuraan.

Barbro Bertingistä oli kieltämättä illan suuri ilmestys se hetki,


jolloin tohtori Krabbe nousi pienelle näyttämölle soittimineen. Hän oli
pukeutunut juhlapukuun ja kuosikas musta puku somisti hänen
laihaa vartaloaan, joka myös näytti tavallista ryhdikkäämmältä.
Häntä tervehdittiin myrskyisin kättentaputuksin. Muistettiin yht'äkkiä,
että hän oli kymmenkunta vuotta aikaisemmin laulanut
hyväntekeväisyysjuhlissa. Sitten hän oli kadonnut ja toisia tullut
hänen sijaansa; mutta se, että hän taas ilmestyi näkyviin, oli
merkkitapaus.

Kun Barbro kuuli näitä kuiskeita tai ihmettelyn huudahduksia,


hiveli se tavattomasti hänen korviaan. Jyskivin sydämin hän nautti
kättenpaukkeesta ja odotuksesta. Kaikki nämä ihmiset, hyvästikin
pari sataa henkeä, saisivat tietää, että tohtori laulaa ainoastaan
hänen tähtensä. Häntä eivät vaivanneet enää mitkään arvelut, sillä
olihan hän saanut tohtorin iloiseksi. Tänäkin iltana hän oli viekoitellut
tohtorin nauramaan kurtistunutta, kuivaa nauruaan. Mutta kun
tohtori oli kysynyt häneltä, laulaisiko hän "jonkun hauskan laulun",
oli hän vastannut kieltävästi. Se ei sopinut hänelle, arveli Barbro.
Siitä hänen kasvonsa vain kurtistuisivat ilvehtijän kaltaisiksi kuten
naurustakin, ja Barbro ei tahtonut, että joku saisi sanoa tohtoria
hassunkuriseksi.

"Ehdottakaa jotakin", oli tohtori pyytänyt. Ja hän oli ehdottanut


J.P. Jacobsenin "Det bödes der for", mutta kohta jäljestäpäin katunut
ehdotustaan.

"Se taitaakin olla paras", oli tohtori vastannut. "Vaikka siitä


laulusta ei olekaan teille."

Ei tarvinnutkaan, Barbro ei ollut ajatellut itseään, ainoastaan


sanojen ja säveleen sointua ja tunnelmaa. Hänellä ei vielä ollut niin
paljon kokemusta, että olisi osannut pelätä muistuttavansa elämän
raskaimpia huolia, päinvastoin veti kaihomielisyys häntä puoleensa
niinkuin puhdesatu keskellä ilon hälinää.

Hän sulki silmänsä istuessaan käppyrässä pienellä jakkaralla


kulissien takana ja kuunteli tohtorin äänensointua, joka oli kokonaan
toinen kuin ennen:

"Der rinder Sorg, rinder Harm av Roser röde."

Myrskyiset suosionosoitukset eivät saaneet tohtoria toistamaan


lauluaan, ja Barbrosta se tuntui melkein helpotukselta. Hän ei
tahtonut kuulla enempää. Se oli hänestä aivan liian suurta. Hän ei
jaksanut kohota niin korkealle. Ja hän tuli niianneeksi tahtomattaan,
kun hän kiitti. "Oletteko tyytyväinen?" kysyi tohtori.

"Kyllä, kiitos, se oli mainion kaunista."


Barbro olisi voinut puraista kielensä poikki, kun kuuli oman
moukkamaisen arvostelunsa. Ja hän pyrähti tiehensä, jott'ei olisi
"käyttäytynyt vielä tyhmemmin".

Mutta tohtori otti soittimensa ja läksi. Hänestä oli rauhaisampaa


olla kirjojensa parissa.

Myyjäiset lopetettiin täsmälleen kello kymmenen, ja jo


kahteentoista mennessä vallitsi rauha ja hiljaisuus kuutamoisessa
huvilassa, missä Päivänpilkkeet olivat koonneet runsaan
rahasumman ja vielä runsaamman ilovaraston.

Heillä ei ollut milloinkaan ollut niin jumalallisen hauskaa. He


olisivat hyvin mielellään istuneet ja haastelleet vielä tuntikausia illan
elämyksistä, mutta nyt oli kysyttävä neuvoa Lucia-yön salaisilta
hengiltä. Sen, miten tämä temppu on tehtävä, opetti Minka
tovereilleen. Nyt ei ollut tekeillä sen enempää eikä vähempää kuin
nähdä tulevan kultansa kuva. Oli asetuttava kuvastimen eteen palava
kynttilä kummassakin kädessä ja tirkistettävä vähääkään
kääntymättä suoraan lasiin siihen saakka, kunnes se oikea ilmestyy.
Tietysti oli oltava yksin, sillä muutoin ei "näky" uskalla ilmestyä.

Piharakennuksen tytöt eivät kuitenkaan uskoneet enteeseen.


Astrid vakuutti, että hän saa nähdä vain savimöhkäleen, jos
ennustus käy toteen, sillä hän ei ikipäivinä rakastuisi ihmiseen
niinkuin työhönsä, ei ainakaan ennen kuin hän saa saven taipumaan
mielensä mukaan.

Mary arveli toisesta syystä olevan tarpeetonta kysyä neuvoa


peililtä. "Minä kuitenkin saan vanhimman serkkuni", sanoi hän
levollisesti, "meidän tapana on mennä sukulaisnaimisiin, se on niin
sopuisaa, sanoo isoisä".
Mutta vaikka Sonjan kohtalo oli ratkaistu, oli hän kuitenkin
päättänyt sytyttää ennuskynttilät nähdäkseen vain vielä kerran
Unonsa.

Kun Sonja parhaillaan istui tirkistämässä peiliin, nauttien


toistaiseksi vain omien kasvojensa näystä, näki hän erään toisen
rinnallaan. Se sukelsi näkyviin aivan äkkiä ja nyökkäsi hänelle
tuttavallisesti.

Sonja uskalsi tuskin hengittää. Se ei mitenkään ollut Uno. Äkkiä


hänet valtasi jäykistävä kauhu. Se ei ollut näky. Se oli kammottava
todellisuus. Outo mies huoneessa. Hän ei uskaltanut kääntyä
katsomaan. Kynttilät vapisivat hänen käsissään, mutta kun se
hirmuinen mies sammutti ensin toisen ja sitten toisen kynttilän, pääsi
Sonjalta kimeä parkaisu, ja hän kaatui pyörtyneenä lattialle.

Tuokiota myöhemmin olivat Eva-täti, Blenda ja Barbro huoneessa


melkein kelteisillään, ja mies, joka ei ollut kukaan muu kuin Maud,
joka oli verhonnut kasvonsa maantierosvon naamarilla ja punaisella
leukaparralla ja pukeutunut lerppahattuun ja levättiin, näytti
pelästyneen naisia yhtä paljon kuin nämä häntä.

Sonja oli jo tointunut, kun Maud oli kaatanut hänen päälleen


karahvillisen vettä, mutta istui vielä lattialla likomärkänä ja vilusta
väristen.

"Ulos ja paikalla tai minä kutsun poliisin", huusi Eva-täti


"miehelle", joka oli hiipinyt erääseen soppeen.

"Minähän tässä vain olen", sammalsi Maudin hätääntynyt ääni.


"Antakaa, kiltti täti, anteeksi."
"Minä, kuka minä?" Vapaaherratar oli niin kiihtynyt, ettei kyennyt
tuntemaan Maudin ääntä. "Ulos ja paikalla, sanon minä, olkoon kuka
hyvänsä!"

Mutta Barbro riipaisi nopeasti Maudilta sekä hatun että naamarin,


ja silloin hälinä asettui. Maud ei ollut elämässään saanut semmoista
ripitystä kuin nyt. Hän luikki aivan juurtajaksain litistyneenä
huoneeseensa eikä hän enemmän kuin Sonjakaan unohtanut ikinä
sitä Lucia-yötä.

Minka oli ainoa tytöistä, joka antautui kaikessa rauhassa


odottamaan näkyä ja haaveilemaan. Hänellä ei ollut pienintäkään
aavistusta, kenet saisi nähdä; hänen ajatuksensa liitelivät sinne ja
tänne. Mutta lopulta ne pysähtyivät muistelemaan luolassa vietettyä
hetkeä. Olisiko se oikeastaan ollut mitään vaarallista, jos Freide olisi
saanut suudella häntä? Hän tuijotti yhä kiihkeämmin peiliin ja
vihdoinkin — hän kumartui lähemmäksi hetken salaperäisyydestä
jännittyneenä. Se on — se on — hän! Urban Freide! Minkan huulet
hipaisivat äkkiä peililasia siitä kohdasta, mihin kuva ilmestyi, sitten
hän vetäytyi pois ja hymyili, mutta näky oli jo haihtunut, ja hän
kohtasi vain oman lumoavan, vastustamattoman lumoavan hymynsä.
VII

Odottamaton kohtaus.

Joululoma oli jo ohi, ja Löwesköldin laitos taas täydessä


toiminnassa. Sonja oli kuitenkin väsynyt olemaan "koulutyttönä" nyt
kun hänen kihlauksensa oli julkaistu, ja hän oli muuttanut
appivanhempiensa luo, jotka olivat sanomattoman ihastuneet
häneen. Kesällä hän aikoi oleskella äitinsä kanssa Särössä, ja
lokakuussa oli määrä viettää häät.

He kuulustelivat anoppinsa kanssa joka päivä sopivaa huoneustoa


Östermalmista, ja tytöt olivat erittäin touhuissaan tästä
asuntokysymyksestä, sillä he olivat saaneet luvan avustaa minkä
missäkin valmistelutöissä.

Kun Birgit miehineen ja lapsineen oli muuttanut Tukholmasta,


valtasi Barbron tyhjyydentunne, mutta olihan hänellä jäljellä vielä
Helene-täti, ja tämän luona hän kävi pari kertaa viikossa. Hän tarvitsi
jonkun henkilön, jolle sai keventää sydäntänsä ja jonka kanssa voi
puhella, ja hän tunsi vaistomaisesti, ettei Eva-täti ymmärrä hänen
levottomasti väreilevää, etsivää luonnettaan.
Joulun jälkeen hän oli alkanut vakavasti harjoittaa opintoja ja kävi
nyt ahkerasti luennoilla. Varsin kuluneena ryömi nyt Kynänvarsi
vuoteeseensa illoin ja sen suuren ilon, mikä hänessä oli loistanut niin
kimmeltävän kirkkaana, himmensivät usein satunnaiset
vastoinkäymiset tai väsymys.

Maud oli myöskin tavannut harrastuksensa, eikä sovi kieltää, että


se oli jotakin suurenmoista. Hän opetteli ratsastamaan ja pyrki
hevosasioiden tuntijaksi. Hän ahmi kaikki tätä alaa koskettelevat
teokset, ja sen hevosen, jonka hän oli vuokrannut, hän kuvaili
maailman älykkäimmäksi ja merkillisimmäksi eläimeksi. Joka aamu
hän ratsasti Djurgårdenin tai Hagan ympäri ja kotiin palatessaan hän
toi mukanaan raikasta ilmaa sekä vaatteissaan että ajatuksissaan,
mutta hän oli yhtä itsekäs ja itseensä luottavainen kuin ennenkin.
Häntä ei voinut taivuttaa, ainoastaan murtaa.

Astrid kulki suorana ja selvänäköisenä päämääräänsä kohden. Hän


ei ollut milloinkaan hapuilevan epävarma. Seuraavan talven hän aikoi
viettää Köpenhaminassa ja työskennellä, mutta myös huvitella.
Huvihetket hän nautti kuin lasillisen vettä virkistyäkseen
savenmuovailun tuottamasta kiihtymyksestä ja jännityksestä.

Minka oli kenties se, joka oli muuttunut enimmin. Hän ei ollut
ainoastaan oppinut puhumaan melkein täydellisesti ruotsia, vaan
myöskin koko hänen olennostaan oli karissut paljon muukalaisuutta.
Koreat valekivi-helyt ja kiiltolanka-käädyt hän oli pannut pois, sillä oli
olemassa "eräs", joka piti hänestä enemmän ilman niitä. Työtä ja
järjestystä hän vieroi samoin kuin ennenkin, mutta joskus pisti
hänen päähänsä yrittää.

Parhaiten hän viihtyi Stadionilla, ja koko Tukholma puhui,


minkälainen mestariluistelija hän oli. Kerran toisensa perästä hän sai
kandidaatti Freiden kanssa palkintoja. He kilpailivat oikeastaan
keskenään, kuten näytti, ja tuntui siltä kuin he eivät olisi
nähneetkään muita radalla.

Mary kulki leppoisaa latuaan, soitteli seurapiireissä, oli


morsiustyttönä hienoissa häissä ja kävi kerran viikossa sen vanhan
aatelisneidin luona, jonka hän Päivänpilkkeenä oli ottanut hoivaansa.
Kaikki, mitä hän otti tehdäkseen, hän suoritti tahdikkaasti. Maud
sanoi, että hänen sielussaan oli tahtikello älyn sijasta, ja niinpä hän
ei vahingossakaan milloinkaan hypännyt tahtivälin yli.

Pikku Weibchen oli yhtä valkea ja lihava ja vaaleatukkainen ja


ahertava kuin ennenkin. Tupukkansa hän sentään oli lahjoittanut
sänkyineen päivineen eräälle sairaalle pikku tytölle, ja kun hänellä ei
nyt enää ollut rakasta lapsuudenystäväänsä, lohdutteli hän itseään
sillä, että Tupukka oli saanut hellän leikkitoverin.

Sellaista kanssakäymistä seitsemän toverin kesken, kuin Eva-täti


oli toivonut ja he itse alussa luulleet, ei kuitenkaan syntynyt. He
olivat hyvin erilaisia luonteiltaan ja sivuuttaneet jo sen
kehityskauden, jolloin kouluhuoneessa tehdystä kujeesta riitti
ilonaihetta koko päiväksi. Mutta ei ilmennyt mitään suurempia
eroavaisuuksiakaan. Ainoastaan Maud ja Barbro ja Minka
sähähtelivät joskus keskenään.

Maud ei voinut olla pilkkaamatta Barbroa tohtori Krabben ilmeisen


suosiskelun tähden. Jos luennoilla sattui jotakin, joka vivahtikin
rakkauteen, ryki hän aina merkitsevästi eikä ollut tietävinäänkään,
vaikka Krapu oli "äreän" näköinen; se vain päinvastoin lisäsi vettä
myllyyn.
Kerran iltapäivällä hän tuli Barbrolta lainaamaan englannin kielen
sanakirjaa. Barbro oli lukemassa näytelmää "Kjærlighedens
Komedie".

"Onpa siinä hauskat kannet", sanoi Maud, kun Barbro oli pistänyt
kirjan nopeasti pois, minkä Maudin terävä silmä kuitenkin keksi.

"Niin on, sain sen joululahjaksi."

Barbron poskia rupesi kuumentamaan, ja hän joudutti kirjan aika


kyytiä hyllylle.

Maud läimäytti leveällä kädellään toveriaan olkapäähän ja nauroi


leveää nauruaan, joka jaksoi voittaa tasangon tuulenkin kohinan.

"Onko ukko taas ollut sinua tavoittelemassa, Kynänvarsi?"

"Mikä ukko?"

"Kukas muu kuin Krapu. Kirja on kai hänen lahjansa?"

"Niin, sukulaiseni olivat kutsuneet hänet luokseen jouluksi, ja


silloin kai hän halusi osoittaa minulle vähän kohteliaisuutta", virkkoi
Barbro suurentelevan välinpitämättömästi.

"Räkätä mitä räkätät, harakanpoikaseni, kyllä se tiedetään, ettei


naskali säkissä pysy." Maud sieppasi kirjan takaisin hyllyltä. Hän oli
päättänyt työntää tuntosarvensa ihan ytimeen saakka. Tietysti oli
lemmenkipeä Krapu kyhännyt jotakin vertauskuvallista "pötyä".

Barbro löi paperiveitsellä kämmenelleen. Hänen ei tarvinnut


hävetä, eihän hänellä ollut mitään salattavaa, mutta Maudin
häikäilemätön tapa sotkeutua muiden asioihin suututti häntä. Ja kun
hän näki kirjansa toverin voimakkaassa kädessä, tuntui hänestä, kuin
sydäntä olisi aiheettomasti paloiteltu. Päälle päätteeksi Maud luki,
mitä suuri Nils Krabbe oli kirjoittanut ensimmäiselle sivulle:

"Tu ne le connnis pas encore, mais — tu vas bientôt le


connaître, le petit dieu qui crèe les coeurs, le petit dieu qui
seul fait naître les idées sur lesquelles on vit et on meurt".

"Johan nyt jotakin", puhkesi Maud sanomaan, "et kai sinä ole niin
hupsu, että välität mokomasta 'le petit dieu' roskasta?" Hän
mätkäytti lahjakirjan pöydälle, istahti tuolille, heilautti toisen jalan
ristiin toisen päälle, ojensi käsivartensa ikäänkuin luutuksi, jota oli
soittavinaan, ja alkoi laulaa:

"Ah, Niiloni haaleat hapset,


mun ystävävanhuksein…"

"Ole vaiti", sanoi Barbro kimmastuen. "Minä en piittaa hänestä


enemmän kuin sinäkään, mutta minusta on säädytöntä, että…"

Hän ei päässyt edemmä, sillä hän häpesi omia ajattelemattomia


sanojaan. Eikö hän piitannut tohtori Krabbesta? Olihan hän niin
lämpimästi pyytänyt Birgitiä kutsumaan tohtorin heille. Hän oli ollut
rajattoman levoton, kun tohtori oli vuoden alussa ankarasti
sairastunut, ja hän oli lähettänyt tälle joka päivä kukkia. Ja kun
tohtori kerran sunnuntai-aamupäivällä oli käynyt hänen kanssaan
Helene-tädin luona, oli hän kiittänyt tohtoria sydämensä pohjasta.
Miksi hän kieltäisi tohtorin? Barbron rehellisyys ja häveliäisyys
joutuivat keskenään ristiriitaan, ja toisen ivalliset kasvojeneleet
saivat hänet purppuranpunaiseksi. Sitten hän jälleen heitti päänsä
kenoon ja sanoi rohkeasti: "Ei ole totta, mitä äsken sanoin, etten
muka välitä tohtori Krabbesta, sillä hänestä pidän paljon. Ja tästä
puoleen te saatte kiusata minua niin paljon kuin tahdotte; minä olen
päättänyt olla olematta siitä tietävinänikään. Ja mitä ihmettä siinä
on, että kiintyy johonkuhun henkilöön, joka — joka — niin, sinä
tiedät, mitä tarkoitan."

"Eihän toki, siinä ei tietenkään ole mitään ihmeellistä, mutta sinä


panet oireeseen jokaisen, joka vain pilkistääkään sinuun, Barbro.
Yksin sinäkin aikana, minkä minä olen sinua tuntenut, sinä olet
'kiintynyt' kolmeen, neljään kappaleeseen, ja Sonja on sanonut, että
sinä olet lemmiskellyt samalla lailla jo neljännestätoista ikävuodestasi
asti lihavia ja laihoja, pitkiä ja lyhyitä — paljaasta kiitollisuudesta. Ja
se se juuri onkin sinun naisellista arvoasi alentavaa, tipuseni. Ja
sitten sinä itkeä tillität jokaiselle, joka pötkii tiehensä. Tietysti minä
en usko, että sinun tarvitsee Kravun tähden panna likoon nenäliinaa,
sillä sinä itse olet likoeläin, ja hänet sinä kyllä saat pitää viimeisenä
hätävarana. Sinä olet oikeastaan sievempi kuin muut tipat, mutta
toisaalta sinä et ole tarpeeksi ja toisekseen olet taas liian konstikas.
Alussa sinä olet niin makea ja iloinen, kun panet koko roikan päät
pyörälle, mutta sitten yks'kaks' sinä muutut metafysiikaksi ja tähtein-
tähystäjäksi, joka haluaa hypistellä kaikkea, mitä suinkin maa
päällään kantaa. Se ei kelpaa; jos tahdotaan voittaa miehen sydän,
niin ei ole puhuttava enemmän järkeä kuin mitä maskuliinin kieli
tahtoo sanella ja anniskella. Minulla on seitsemän vanhempaa veljeä,
niin että kyllä minä jo vähän tunnen miespuolta."

Barbro oli yrittänyt monta kertaa keskeyttää Maudin ja


puolustautua, mutta kun tämä vihdoin lopetti, jäi hän seisomaan
aivan sanattomana. Tosin se, mitä Maud oli sanonut, tuntui
tärkeältä, mutta niin selvästi ei kukaan ollut häntä tätä ennen
eritellyt. Hän muisti kaikki kouluaikaiset tuliset ja onnettomat
rakastumisensa, alituisen harhailunsa ja hapuilemisensa. Koko hänen
tunneväreilynsä oli ehkä ollut vain heijastusliikettä. Miksi hän aina
liikkui omassa minässään niinkuin umpisokkelossa? Muut tytöt
löysivät niin helposti tien elämään.

Hän pani "Kærlighedens Komedien" vielä kerran hyllylle, tällä


kertaa koneellisesti.

"Oletko vihoissasi?" kysyi Maud.

"En, ihmettelen vain, tokko sinä olet johdonmukainen."

"Sepä oli suurenmoista sinun puolestasi, ja siitä saat olla varma,


että minä puhun järkeä. Asiasta toiseen. Emmekö panisi toimeen
rekiretkeä?"

Barbro hämmentyi melkein niinkuin olisi äkkiä hurahtanut


lumikinokseen.

"Äskeinen asia on jo selvitetty", sanoi Maud, "ja nyt on jo kulunut


pitkä aika siitä, kun meillä on ollut mitään yhteistä lystinpitoa."

"Jottako saisimme aikaan rekiretken?"

"Ce que femme veut, Dieu le veut. Minä olen tuottanut itselleni
kavaljeerin kotoa. Taikka oikeastaan hän tulee näinä päivinä. Hän on
nuorin veljeni, somin poika, minkä tunnen."

"Kunpa minäkin saisin itselleni kavaljeerin Skoonesta", hymähti


Barbro.
"Se maa tuottaa epäilemättä reilua väkeä."

"Paljon kiitoksia!" Maud ojensi kätensä. "Niin että sinä et


varmaankaan tarkoita, että minä olen niitä poikkeuksia, jotka
vahvistavat sääntöä?"

"En", vastasi Barbro vakuuttavasti, "sinä saatat olla niin hyvä — ja


viisas myös. Mutta sanoppa, Maud, oletko sinä aina varma
mielitietyistäsi?"

"Olenko muka? Älä luulekaan, että minä viitsin kuluttaa itseäni


hakkailulla. Minä hoidan huvitteluni omalla tavallani. Sitten
matkustan kotiin ja saanen aikaa myöten kotikonnun meren
rannalta. Täällä olen vain kauttakulkutavaraa. Oikein osataan elää
vain Skoonessa."

"Minun mielestäni voi koti olla missä tahansa, missä on


myötätuntoisia ihmisiä. Jos minä vain saisin, niin matkustaisin hyvin
mielelläni syksyllä ulkomaille. Olen muuten tuuminut päästä
työskentelemään sanomalehteen."

"Ja sitten naimisiin."

"Miten se kävisi päinsä, kun sinä väität, että kaikki 'pötkivät


tiehensä'?"

"Noo, se oli hieman liioiteltua, mutta kullakin päivällä on suru


itsestään. Me olemme joka tapauksessa nuoria, Kynänvarsi. Ei ole
vielä hengenpidin-muste ehtinyt syöpyä peukaloosi eikä etusormeesi.
Ja jos niikseen tulee, niin voithan käyttää isäsi runsaita varoja
ponnistuslautana elämän ulapalle, niin ettei tarvitse ahertaa. Meistä
seitsemästä on Minka ainoa, joka ei voi elää rennosti, mutta
hassuinta on, että juuri hän on kaikista rennoin. Yhteen otteeseen
hän tosin kävi hieman synkäksi, mutta sillä vaaleanpunaisella voile-
leningillä, jonka hän jollakin merkillisellä tavalla oli hankkinut
Karlberg tanssiaisiin, hän saavutti uudestaan itseluottamusta.
Saattaahan olla, että hänellä oli Frejdigt mod." [Sutkaus tarkoittaa
Urban Freideä. "frejdigt mod" on tanskaa ja merkitsee
ujostelemattomuutta. Suom.]

"Tuo sanaleikki olisi minun göteporilaisena pitänyt keksiä", nauroi


Barbro. "Mutta saat pitää kunnian. Rekiretkestä saanemme
keskustella yleisessä kokouksessa. Ja nyt minä lähden
pilkistysmatkalle herttaisen mummoni luokse."

"Minun pilkistysmummoni on pudistanut maan tomut jaloistaan. Ja


jos on uskomista kaikkiin hänen puheisiinsa, kuinka paljon häntä oli
rakastanut ja ihaillut hänen kuollut sukunsa, niin mahtaa nyt tuolla
puolen pilttien olla iloinen perhejuhla. No hei sitten!"

Maud otti sanakirjan, nyökkäsi terhakasti ja mennä paapersi


käsillään reuhtoen mahtavana ja jykevänä ovea kohden.

Puolta tuntia myöhemmin Barbro oli Katariinan-hississä


nousemassa. Se oli kuten ainakin tupaten täynnä väkeä, ja hän oli
pusertunut nurkkaan erään voimaperäisesti sillille haisevan
torimatamin taakse, jonka puuskaan pannut käsikynkät eivät
antaneet kenellekään tietä.

Hissinkuljettajan toisella puolella seisoi seinää vasten eräs


jäntterän näköinen, karvalakkinen nuori mies. Barbro näki
ainoastaan hänen niskansa, mutta se tuntui hänestä niin tutulta, että
se ahdistava turvattomuuden tunne, joka häntä äsken oli vaivannut,
katosi yht'äkkiä. Hän oli viime aikoina paljon mietiskellyt ja
ainoastaan harvoina hetkinä — ja silloin liian riehakasti — ollut
iloinen. Se, mitä Maud oli sanonut, oli ikäänkuin antanut iskun hänen
harhaileville ajatuksilleen. Oli totta, että hän antautui tunteittensa
valtaan eikä milloinkaan antanut sydämensä kyllyydestä, vaan ruokki
alituisesti nälkäistä sydäntä.

Kun hän nyt näki tuommoisen, ehkä liiankin pyylevän niskan, niin
tuntui kuin hänen aurinkoinen elämänilonsa olisi alkanut kurkistaa
harmaiden ajatuspilvien lomasta. Ja niin pian kuin hissi oli ehtinyt
ylös, koetti hän ottaa selville, pettikö niska hänet vai ei.

Mutta torimatami ei ollut kiireissään. Ensin hän nosti korinsa, jossa


oli kiiltäviä sillejä, ja rupesi sitten itse hommautumaan ulos.

"Näinköhän minä pääsisin menemään?" sanoi Barbro


kärsimättömästi.

"Miks'ei, jos passaa odotella, kunnekka minä pääsen ensin",


vastasi matami. "Ensin vuoro vanhemmilla, se pitää toki oppia
tietämään."

Ja kiusallisen pitkäpiimäisesti otti paksu matami sillikorinsa. Kun


Barbro oli tullut sillalle, oli jo niin hämärä, ettei hän enää voinut
pitkän matkan päästä erottaa tuota niskaa, ja hän ajattelikin, että se
oli vain sattumalta muistuttanut Holger Boyen niskaseutua. Viime
kirjeessään Holger oli ilmoittanut Barbrolle saapuvansa Tukholmaan
vasta huhtikuun lopussa, jolloin hän pyytäisi Helene tätiä kotiinsa.
Hänen äitinsä oli näet ryhtynyt kirjevaihtoon mummon kanssa ja
valmistamaan hänen matkaansa Skooneen.

Koko suku tahtoi mielellään ottaa hänet vastaan, mutta se ei ollut


tiennyt hänestä paljon mitään. Hän oli vetäytynyt köyhyytensä ja
kykenemättömyytensä kuoreen.
Barbro kulki nopeasti tuttuja katuja pitkin yhä vain toivoen
saavansa nähdä tutunomaisen hissimatkustajan, mutta hän ei vielä
Katariinan hautausmaankaan kohdalle päästyään nähnyt etsimäänsä.
Hautausmaalla peitti valkoinen lumivaippa vanhat haudat ja uudet
tiet. Oli alkanut sataa suuria, villavia lumihiutaleita, jotka kilvan
riensivät peittämään kaikki arkiaherruksen jäljet. Ilma muuttui niin
ihmeellisen valkeaksi ja kimaltelevaksi, ja harvat lyhdyt vilkkuivat
levottomasti aivan kuin ne olisivat saaneet silmiinsä lunta ja niiden
olisi ollut vaikea katsoa eteensä. Barbro osasi kuitenkin kulkea
erehtymättä, ja hän nosti kasvonsa päin tuulta, jotta lumihiutaleet
lentäisivät kasvoille ja otsalle. Ne olivat hänestä kuin viileitä,
hyväileviä suudelmia. Ja silloin hänen mieleensä johtui vanha isoäiti,
mutta sitten hän sai aikamoisen sysäyksen, joku oli töksähtänyt
sakeassa lumisateessa häntä vasten, ja kun hänen kantapäihinsä oli
takertunut kokkareita, kadotti hän tasapainonsa ja lennähti nurin.
Puuhka kimposi hyvän matkaa oikealle, tortturasia, jota hän oli
varovasti kantanut, teki kuperkeikan vasemmalle, ja siltä, joka oli
häntä tyrkännyt, putosi karvalakki hänen syliinsä.

"Pyydän tuhannesti anteeksi", kajahti tuttu, sorahtava ääni,


"minun oli aivan mahdoton nähdä mitään ja taisin kulkea liian kovaa
vauhtia."

"Niin juuri sinä teit aivan varmaan", vastasi Barbro nauraa


hohottaen. "Päivää, Holger! Minun pitänee niiata tästä istualtani, jos
et auta minua ylös."

"No, mutta hyväinen aika, Babi, sinäkö siinä rehkit! Olenko


loukannut sinua?" Holger kumartui hänen ylitsensä, ja Barbro näki
hänen pyöreät, leveät kasvonsa, kun hän innokkaasti ojensi apuun
molemmat kätensä.
"Ei ole, jalkojani vain livettää niin pahasti, etten tahdo päästä
pystyyn." Hän tarttui Holgerin käsiin ja seisoi kohta suorana ja
sorjana hänen edessään.

"Babi, kuinka sinä kehtaat kasvaa minua pitemmäksi!" naurahti


Holger.

"Holger, kuinka sinä kehtaat pusertaa minun sormeni mäsäksi!"

"Suo anteeksi, tulin ihan taivaallisen iloiseksi nähdessäni sinut taas


ylettyvilläni, sinä pikku kruunu tyttöjen valtakunnassa."

"No-noo, vai kohteliaisuuksia, ovi! Mutta mehän olemme


unohtaneet puuhkan ja tortut. Ei auttane muu kuin ruveta
ryömimään ja etsimään. Maltas, tässä on rasia!"

"Puuhka on kai tärkeämpi." Holger rupesi tosiaankin ryömimään


nelinkontin. "Pitäisihän se minun lakkinikin löytää."

"Tietysti, sinun lakkisi!"

Barbro haeskeli joka puolelta.

"Hyväinen aika, Holger! Sehän on minun kainalossani. Ole hyvä!"

"Babi!" Holger nousi ylös, "Suo anteeksi! Minäkin olen keksinyt


jotakin. Sinun puuhkasi on ollut minulla polvenalustana. Suuri kuin
sängynpatja. Saanko ojentaa?"

Niin perusteellisesti kuin Holger olikin pudistellut vaaleankeltaista


hilleripuuhkaa, kimalteli se kuitenkin yltä ja alta, jopa sisästäkin
lumikiteistä, niin että Barbron oli pakko lainata Holgerin sormikkaat,
jottei olisi palelluttanut käsiään.
"Mihin sinä olet menossa?" kysyi Barbro.

"Kunpa sen tietäisi. Luulin osuvani Stigberg-kadulle, mutta


kaikesta päättäen ei tästä näy pääsevän minnekään, ainakaan ilman
johtotähteä."

"Mutta sinullahan, poika-kulta, se on. Minä aion myös Stigberg-


kadulle
— Helene-tädin luo — nyt tästä tuonne. Voi, mikä kinos!"

"Kannanko sinut yli?"

"Eikö mitä, minä hyppään." Hän loikkasi, ja kandidaatti Boye


seurasi vikkelästi esimerkkiä. Hänen lyhyt, vanttera vartalonsa liikkui
keveästi ja sirosti, ja hänen hieman hidasverisen pintansa alla
huomasi olevan hillittyä eloisuutta. "Milloin olet tullut ja miksi et ole
kirjoittanut etkä ilmoittanut tulostasi?" jatkoi Barbro.

"Tulin tänä aamuna erään hyvän ystäväni, agronoomi Rydemanin


kanssa. Minun onnistui suorittaa pari tenttiä ja senvuoksi tahdoin
palkita itseäni. Aika huhtikuuhun saakka tuntui liian pitkältä. En ole
nähnyt sinua yhdeksään kuukauteen, Barbro. Ja se on aikamoinen
aika, kun odottaa. Sitäpaitsi tuntui sinun viime kirjeestäsi, että
tarvitset kielen vaakaasi, sillä taidatpa olla yhtä kypsymätön
punnitsemaan tasaisesti kuin ennenkin, vai mitä, Babi?"

"Niin olen, kypsymättömämpi kuin milloinkaan ennen, luulen. Teit


mainion kauniisti, kun tulit. Toisinaan sinä olet aivan välttämätön
minulle. Et kai pane pahaksesi, jos vertaan sinua turvaisaan
soppeen, johon on mukava hiipiä."

"En suinkaan, mitään edellytyksiä olla loistopalatsi ei minulla ole."


Barbro jätti vastaamatta ja virkkoi sen sijaan:

"Aioitko yllättää minut, tulla katsomaan aivan aavistamatta?"

"En, niin rohkea, että uskaltaisin tulla tyttöhoitolaan, en edes


minäkään ole. Aioin Helene mummolta kysyä, milloin käyt hänen
luonaan, ja yllättää sinut siellä."

"Ja nyt me menemmekin sinne. Kuinka iloiseksi se kiltti täti


tuleekaan, Hän asuu tässä talossa. Katso, miten matala portti on,
mutta kyllä sinä pääset siitä suorana."

"Kyllä, harvoin minä koukistelenkaan, se olisi liikaponnistusta."

Helene-täti ei olisi voinut saada rakkaampia vieraita. Barbroa hän


nimitti omaksi sydämensä päiväpaisteeksi, ja otti hänet avosylin
vastaan. Mutta nyt ojentuivat vanhat kädet syleilemään myös Boye-
suvun myöhäsyntyisintä edustajaa, ja tämä kotiutuikin heti pieneen
huoneeseen niin perinpohjin kuin olisi joka päivä ollut noiden
raihnaisten huonekalujen ja pienten vähäpätöisten muistoesineiden
seurassa.

Barbron keittäessä kahvia ja kattaessa pöytää Holger jutteli


iloisesti ja ystävällisesti neiti Helenen kanssa ja kertoili
seikkaperäisesti suvun kolmen miespolven vaiheita. Hän katsahti
sentään vähäväliä Barbroon, ja hänen katseensa lämpeni ja syveni.
Varmasti Barbro oli "sydämen päiväpaiste", hänen ruskeakiharainen
pikku typykkänsä, joka oli ollut hänen ajatuksissaan ja mielessään jo
koulupojasta saakka. Hän ei milloinkaan välittäisi kenestäkään
muusta, ja Barbro puolestaan ei välittäisi hänestä minään muuna
kuin turvallisena hätäsatamana myrskyn uhatessa.
"Kai te tulette kohta uudestaan?" Nämä arastelevat ja liikuttavat
sanat seurasivat nuoria alas natiseville rapuille, ja kaksi raikasta
ääntä lupasi halukkaasti, ettei kuluisi kauan, kun Helene-tätiä tullaan
uudestaan tervehtimään. "Eikö hän ole herttainen, Holger?" kysyi
Barbro. Hän pisti toverillisesti kätensä Holgerin kainaloon, kun
katukäytävä oli hyvin liukas, mutta heti kun vaaranpaikka
sivuutettiin, veti hän kätensä taas pois.

"On, oikein suloinen pikku tyttö. Minä viihdyn parhaiten


tuonikäisten kanssa. Silloin he liehittelevät parahiksi minun
pyylevyyteni kannalta."

"Eihän Helene-täti liehittele ollenkaan."

"Älä tee tyhjäksi hänen naisellisuutensa hienointa puolta, Babi!


Vanhat herttaiset tytöt liehittelevät yhtä tietämättään, kuin resedat
tuoksuvat. Saat itse nähdä, kun ehdit niin pitkälle."

Barbro pysähtyi äkkiä.

"Luuletko sinä myös, että minä joudun kyöpelinvuoreen?"

"Minäkö myös? Kukas muu on rohjennut lausua jotakin niin


halpamaista?"

Barbro läksi taas liikkeelle. Tapa, jolla Holger lausui viimeiset


sanat, sai hänet vakuutetuksi siitä, että ei hän pitänyt sitä
halpamaisena. Eikä hän itsekään pitänyt, ei ensinkään. Mutta omasta
puolestaan hän ajatteli olevan kauheaa joutua vanhanpiian kirjoihin.
Hän mutisi hyvin sävyisällä äänellä:

"Maud Rydeman ja Sonja sanovat, etten minä kykene pitämään


ketään kiinni, eikä ole ensinkään hauskaa, jos ei saa milloinkaan
kokea mitään jännittävää, sellaista, joka — — — Nauratko sinä
minulle?"

"Enpä juuri. Hymyilen vain tietäjänhymyä itsekseni. Sinä olet


saavuttanut kahdeksan- ja yhdeksäntoista ikävuoden välisen korkean
iän, niin että sinun on jo aika oppia pitämään kiinni jotakuta samoin
kuin kokemaan jotakin jännittävää. Mutta kissa tietäköön, tokko
satut tavoittamaan arvaamattoman onnen päästä naimisiin. Sinä et
ole tarpeeksi olevinasi etkä myöskään kaikin puolin muiden tyttöjen
kaltainen, jotta sinulla voisi olla toiveita. Ja sitten sinä valitset hyvin
kummallisia koekaniineja onnesi tavoittelua varten."

"Valitsenko minä?"

"Valitset. Alkakaamme Urban Freidestä. Hän oli kylläkin


mukiinmenevä objekti. Mutta itse asiassa sinä pidit häntä vain
mykkänä palvelijana, jonka kaulaan sinä ripustit tyttöturhamaisuutesi
ja mielistelyhalusi. Sitten tuli kaljupäinen parooni, jolla oli kuutamoa
takaraivossa ja ajatuksissa. Ja sinä olit heti valmis liittymään häneen
ja uskomaan onneen. Täällä Tukholmassa lienevät sinun psyche-
siipesi liehuneet sen tohtori Krabben ympärillä aavistellen yhteistä
lentomahdollisuutta avaruuteen. Jos sinä tahdot välttämättä pitää
avioliittorakkautta elämän sisältönä, niin ota Sonja esikuvaksesi: hän
on tehnyt valintansa harkiten."

Taas Barbro pysähtyi. Nyt hän oli suutuksissaan ja polkaisi


jalkaansa.

"Minä en ole rahtuakaan sellainen kuin sinä luulet. Minä tahdon


työskennellä ja tulla joksikin. Sen minä tahdon. Mutta minkäs minä
tartunnalle mahdan, kun Minka ja Sonja, joiden parissa useimmiten
oleskelen, puhuvat herkeämättä vain — vain rakkaudesta."
Tyyntyneemmin ja vilpittömän luottavasti hän lisäsi: "Olethan sinä
nyt minulla, ja silloin minä pääsen irti koko roskasta. Me tapaamme
toisemme joka päivä, Holger, ja minä kerron sinulle, mitä olen
lukenut, ja mehän voimme samalla kävellä katselemassa Tukholmaa.
Minä olen vapaa kolmesta viiteen joka päivä. Kai sinä viivyt pitkän
aikaa?"

"Jokseenkin. Aion oleskella muutamia viikkoja Upsalassa, mutta


sitä ennen taidan viipyä täällä kuukauden valmistelemassa erästä
työtä. Tietysti me tapaamme joka päivä, jos se käy päinsä."

"Kyllä", vastasi Barbro täydellisen luottavasti, "sinähän se vain


olet,
Holger".

You might also like