Atjaunināt sīkdatņu piekrišanu

Network Programming with Go Language: Essential Skills for Programming, Using and Securing Networks with Open Source Google Golang 2nd ed. [Mīkstie vāki]

  • Formāts: Paperback / softback, 377 pages, height x width: 254x178 mm, weight: 765 g, 38 Illustrations, black and white; XXV, 377 p. 38 illus., 1 Paperback / softback
  • Izdošanas datums: 24-Jun-2022
  • Izdevniecība: APress
  • ISBN-10: 1484280946
  • ISBN-13: 9781484280942
Citas grāmatas par šo tēmu:
  • Mīkstie vāki
  • Cena: 55,83 €*
  • * ši ir gala cena, t.i., netiek piemērotas nekādas papildus atlaides
  • Standarta cena: 65,69 €
  • Ietaupiet 15%
  • Grāmatu piegādes laiks ir 3-4 nedēļas, ja grāmata ir uz vietas izdevniecības noliktavā. Ja izdevējam nepieciešams publicēt jaunu tirāžu, grāmatas piegāde var aizkavēties.
  • Daudzums:
  • Ielikt grozā
  • Piegādes laiks - 4-6 nedēļas
  • Pievienot vēlmju sarakstam
  • Formāts: Paperback / softback, 377 pages, height x width: 254x178 mm, weight: 765 g, 38 Illustrations, black and white; XXV, 377 p. 38 illus., 1 Paperback / softback
  • Izdošanas datums: 24-Jun-2022
  • Izdevniecība: APress
  • ISBN-10: 1484280946
  • ISBN-13: 9781484280942
Citas grāmatas par šo tēmu:

Dive into key topics in network architecture implemented with the Google-backed open source Go programming language. Networking topics such as data serialization, application level protocols, character sets and encodings are discussed and demonstrated in Go. This book has been updated to the Go version 1.18 which includes modules, generics, and fuzzing along with updated and additional examples.


Beyond the fundamentals, Network Programming with Go, Second Edition covers key networking and security issues such as HTTP protocol changes, validation and templates, remote procedure call (RPC) and REST comparison, and more. Additionally, authors Ronald Petty and Jan Newmarch guide you in building and connecting to a complete web server based on Go. Along the way, use of a Go web toolkit (Gorilla) will be employed.


This book can serve as both an essential learning guide and reference on networking concepts and implementation in Go.  Free source code is available on Github for this book under Creative Commons open source license.


What You Will Learn

  • Perform network programming with Go (including JSON and RPC)
  • Understand Gorilla, the Golang web toolkit, and how to use it
  • Implement a microservice architecture with Go
  • Leverage Go features such as generics, fuzzing
  • Master syscalls and how to employ them with Go

Who This Book Is For
Anyone interested in learning networking concepts implemented in modern Go. Basic knowledge in Go is assumed, however, the content and examples in this book are approachable with modest development experience in other languages.

About the Authors xvii
About the Technical Reviewer xix
Acknowledgments xxi
Preface to the Second Edition xxiii
Preface to the First Edition xxv
Chapter 1 Architectural Layers
1(24)
Protocol Layers
1(1)
ISO OSI Protocol
1(1)
OSI Layers
2(1)
TCP/IP Protocol
2(1)
Some Alternative Protocols
3(1)
Networking
3(1)
Gateways
4(1)
Host-Level Networking
4(1)
Packet Encapsulation
4(1)
Connection Models
5(1)
Connection Oriented
5(1)
Connectionless
5(1)
Communications Models
6(1)
Message Passing
6(1)
Remote Procedure Call
7(1)
Distributed Computing Models
8(1)
Client-Server System
9(1)
Client-Server Application
9(1)
Server Distribution
10(1)
Communication Flows
11(1)
Synchronous Communication
11(1)
Asynchronous Communication
11(1)
Streaming Communication
11(1)
Publish/Subscribe
11(1)
Component Distribution
12(1)
Gartner Classification
12(2)
Three-Tier Models
14(1)
Fat vs. Thin
15(1)
Middleware Model
15(1)
Middleware Examples
16(1)
Middleware Functions
17(1)
Continuum of Processing
17(1)
Points of Failure
18(1)
Acceptance Factors
18(1)
Thoughts on Distributed Computing
19(1)
Transparency
19(1)
Access Transparency
19(1)
Location Transparency
19(1)
Migration Transparency
19(1)
Replication Transparency
20(1)
Concurrency Transparency
20(1)
Scalability Transparency
20(1)
Performance Transparency
20(1)
Failure Transparency
20(1)
Eight Fallacies of Distributed Computing
20(1)
Fallacy: The Network Is Reliable
21(1)
Fallacy: Latency Is Zero
21(1)
Fallacy: Bandwidth Is Infinite
21(1)
Fallacy: The Network Is Secure
22(1)
Fallacy: Topology Doesn't Change
22(1)
Fallacy: There Is One Administrator
22(1)
Fallacy: Transport Cost Is Zero
22(1)
Fallacy: The Network Is Homogeneous
22(1)
Conclusion
23(2)
Chapter 2 Overview of the Go Language
25(10)
Types
26(1)
Slices and Arrays
26(2)
Maps
28(1)
Pointers
28(1)
Functions
29(1)
Structures
29(1)
Methods
30(1)
Multithreading
31(1)
Packages
31(1)
Modules
32(1)
Type Conversion
32(1)
Statements
33(1)
GOPATH
33(1)
Running Go Programs
33(1)
Standard Libraries
33(1)
Error Values
34(1)
Conclusion
34(1)
Chapter 3 Socket-Level Programming
35(34)
The TCP/IP Stack
35(1)
IP Datagrams
36(1)
UDP
36(1)
TCP
37(1)
Internet Addresses
37(1)
IPv4 Addresses
37(1)
IPv6 Addresses
38(1)
IP Address Type
39(1)
Using Available Documentation and Examples
40(3)
The IP Mask Type
43(3)
Basic Routing
46(2)
The IP Addr Type
48(1)
Host Canonical Name and Addresses Lookup
49(2)
Services
51(1)
Ports
51(1)
The TCPAddr Type
52(1)
TCP Sockets
53(1)
TCP Client
53(3)
A Daytime Server
56(1)
Multithreaded Server
57(3)
Controlling TCP Connections
60(1)
Timeout
60(1)
Staying Alive
60(1)
UDP Datagrams
60(3)
Server Listening on Multiple Sockets
63(1)
The Conn, PacketConn, and Listener Types
63(3)
Raw Sockets and the IPConn Type
66(2)
Conclusion
68(1)
Chapter 4 Data Serialization
69(40)
Structured Data
69(2)
Mutual Agreement
71(1)
Self-Describing Data
71(1)
Encoding Packages
72(2)
ASN.1
74(10)
ASN.1 Daytime Client and Server
84(2)
JSON
86(4)
A Client and A Server
90(4)
The Gob Package
94(4)
A Client and A Server
98(2)
Encoding Binary Data As Strings
100(3)
Protocol Buffers
103(2)
Installing and Compiling Protocol Buffers
105(1)
The Generated personv3.pb.go File
105(1)
Using the Generated Code
106(1)
Conclusion
107(2)
Chapter 5 Application-Level Protocols
109(22)
Protocol Design
109(1)
Why Should You Worry?
110(1)
Version Control
110(1)
The Web
111(2)
Message Format
113(1)
Data Format
113(1)
Byte Format
113(1)
Character Format
114(1)
A Simple Example
115(1)
A Stand-Alone Application
115(1)
The Client-Server Application
116(1)
The Client Side
116(1)
Alternative Presentation Aspects
117(1)
The Server Side
117(1)
Protocol: Informal
118(1)
Text Protocol
118(1)
Server Code
119(2)
Client Code
121(2)
Textproto Package
123(2)
State Information
125(2)
Application State Transition Diagram
127(1)
Client-State Transition Diagrams
128(1)
Server-State Transition Diagrams
128(1)
Server Pseudocode
129(1)
Conclusion
130(1)
Chapter 6 Managing Character Sets and Encodings
131(16)
Definitions
132(1)
Character
132(1)
Character Repertoire/Character Set
132(1)
Character Code
132(1)
Character Encoding
133(1)
Transport Encoding
133(1)
ASCII
133(2)
ISO 8859
135(1)
Unicode
135(1)
UTF-8, Go, and Runes
136(1)
UTF-8 Client and Server
137(1)
ASCII Client and Server
137(1)
UTF-16and Go
137(1)
Little-Endian and Big-Endian
138(1)
UTF-16 Client and Server
138(3)
Unicode Gotchas
141(1)
ISO 8859 and Go
142(3)
Other Character Sets and Go
145(1)
Conclusion
145(2)
Chapter 7 Security
147(20)
ISO Security Architecture
147(1)
Functions and Levels
148(1)
Mechanisms
149(1)
Data Integrity
150(3)
Symmetric Key Encryption
153(1)
Public Key Encryption
154(3)
X.509 Certificates
157(3)
TLS
160(1)
A Basic Client
160(2)
Server Using a Self-Signed Certificate
162(3)
Conclusion
165(2)
Chapter 8 HTTP
167(32)
URLs and Resources
167(1)
i18n
167(2)
HTTP Characteristics
169(1)
Versions
169(1)
HTTP/0.9
169(1)
HTTP/1.0
170(2)
HTTP 1.1
172(1)
HTTP Major Upgrades
173(1)
HTTP/2
173(1)
HTTP/3
173(1)
Simple User Agents
174(1)
The Response Type
174(1)
The HEAD Method
175(2)
The GET Method
177(4)
Configuring HTTP Requests
181(1)
The Client Object
182(2)
Proxy Handling
184(1)
Simple Proxy
185(2)
Authenticating Proxy
187(2)
HTTPS Connections by Clients
189(2)
Servers
191(1)
File Server
191(2)
Handler Functions
193(1)
Bypassing the Default Multiplexer
194(1)
HTTPS
195(2)
Conclusion
197(2)
Chapter 9 Templates
199(14)
Inserting Object Values
199(1)
Using Templates
200(2)
Pipelines
202(1)
Defining Functions
203(2)
Variables
205(1)
Conditional Statements
206(5)
The html/template Package
211(1)
Conclusion
211(2)
Chapter 10 A Complete Web Server
213(22)
Browser Site Diagram
213(3)
Browser Files
216(1)
Basic Server
217(2)
The HstFlashCards Function
219(3)
The manageFlashCards Function
222(1)
The Chinese Dictionary
223(1)
The Dictionary Type
224(1)
Flashcard Sets
224(2)
Fixing Accents
226(3)
The ListWords Function
229(2)
The showFlashCards Function
231(3)
Presentation on the Browser
234(1)
Running the Server
234(1)
Conclusion
234(1)
Chapter 11 HTML
235(6)
The html/template Package
236(1)
Tokenizing HTML
237(3)
XHTML/HTML
240(1)
JSON
240(1)
Conclusion
240(1)
Chapter 12 XML
241(10)
Unmarshalling XML
242(2)
Marshalling XML
244(1)
Parsing XML
245(1)
The StartElement Type
246(1)
The EndElement Type
246(1)
The CharDataType
246(1)
The Comment Type
246(1)
The Proclnst Type
246(1)
The Directive Type
247(2)
XHTML
249(1)
HTML
249(1)
Conclusion
249(2)
Chapter 13 Remote Procedure Call
251(12)
Go's RPC
252(2)
HTTP RPC Server
254(1)
HTTP RPC Client
255(1)
TCP RPC Server
256(1)
TCP RPC Client
257(2)
Matching Values
259(1)
JSON
259(1)
JSON RPC Server
259(2)
JSON RPC Client
261(1)
Conclusion
262(1)
Chapter 14 REST
263(28)
URIs and Resources
263(1)
Representations
264(1)
REST Verbs
265(1)
The GET Verb
265(1)
The PUT Verb
266(1)
The DELETE Verb
266(1)
The POST Verb
266(1)
No Maintained State (That Is, Stateless)
267(1)
HATEOAS
267(1)
Representing Links
268(1)
Transactions with REST
269(3)
The Richardson Maturity Model
272(1)
Flashcards Revisited
272(1)
URLs
273(1)
ServeMux (The Demultiplexer)
273(1)
Content Negotiation
274(2)
GET
276(2)
POST
278(1)
Handling Other URLs
278(1)
The Complete Server
279(6)
Client
285(4)
Using REST or RPC
289(1)
Conclusion
289(2)
Chapter 15 WebSockets
291(22)
WebSockets Server
292(1)
The golang.org/x7net/websocket Package
292(1)
The Message Object
292(4)
The JSON Object
296(3)
The Codec Type
299(3)
WebSockets overTLS
302(2)
WebSockets in an HTML Page
304(4)
The github.com/gorilla/websocket Package
308(1)
Echo Server
308(2)
Echo Client
310(1)
Conclusion
311(2)
Chapter 16 Gorilla
313(20)
Middleware Pattern
313(3)
Standard Library ServeMux Examples
316(2)
Customizing Muxes
318(1)
gorilla/mux
319(2)
Why Should We Care
321(2)
Gorilla Handlers
323(3)
Additional Gorilla Examples
326(1)
gorilla/rpc
327(1)
gorilla/schema
328(1)
gorilla/securecookie
329(2)
Conclusion
331(2)
Chapter 17 Testing
333(14)
Simple and Broken
333(3)
HTTP Test Package
336(2)
Below HTTP
338(2)
Leveraging the Standard Library
340(6)
Conclusion
346(1)
Appendix A Fuzzing
347(10)
Fuzzing in Go
347(3)
Fuzzing Failures
350(3)
Fuzzing Network-Related Artifacts
353(2)
Conclusion
355(2)
Appendix B Generics
357(14)
A Filtering Function Without Generics
358(1)
Refactor Using Generics
359(1)
Custom Constraints
360(2)
Using Generics on Collections
362(3)
How Not to Use Generics?
365(6)
Conclusion 371(2)
Index 373
Jan Newmarch, Ph.d., is Head of Higher Education (ICT), Box Hill Institute, Adjunct Senior Research Fellow, Faculty of IT, Monash University, and Adjunct Lecturer, School of Computing and Mathematics Charles Sturt University. Ronald Petty is a Principal Consultant at RX-M LLC.  His programming expertise is in open source languages like Go, Ruby and more.  He currently is working on a number of Go code projects on Github.