书名:High-performance browser networking
分类号:自动化技术、计算机技术
版次:[Reprinted ed.].
前言
The web browser is the most widespread deployment platform available to developers today: it is installed on every smartphone, tablet, laptop, desktop, and every other form factor in between. In fact, current cumulative industry growth projections put us on track for 20 billion connected devices by 2020—each with a browser, and at the very least, WiFi or a cellular connection. The type of platform, manufacturer of the device, or the version of the operating system do not matter—each and every device will have a web browser, which by itself is getting more feature rich each day.
The browser of yesterday looks nothing like what we now have access to, thanks to all the recent innovations: HTML and CSS form the presentation layer, JavaScript is the new assembly language of the Web, and new HTML5 APIs are continuing to improve and expose new platfOrm capabilities for delivering engaging, high-performance ap-plications. There is simply no other technology, or platform, that has ever had the reach or the distribution that is made available to us today when we develop for the browser. And where there is big opportunity, innovation always follows.
In fact, there is no better example of the rapid progress and innovation than the net-working infrastructure within the browser. Historically, we have been restricted to sim-ple HTTP request-response interactions, and today we have mechanisms for efficient streaming, bidirectional and real-time communication, ability to deliver custom appli-cation protocols, and even peer-to-peer videoconferencing and data delivery directly between the peers—all with a few dozen lines of JavaScript.
The net result? Billions of connected devices, a swelling userbase for existing and new online services, and high demand for high-performance web applications. Speed is a feature, and in fact, for some applications it is the feature, and delivering a high-performance web application requires a solid foundation in how the browser and the network interact. That is the subject of this book.
查看更多
目录
Foreword xi
Preface xiii
Part I. Networking 101
1.Primer on Latency and Bandwidth 3
Speed Is a Feature 3
The Many Components of Latency 4
Speed of Light and Propagation Latency 6
Last-Mile Latency 8
Bandwidth in Core Networks 9
Bandwidth at the Network Edge 10
Delivering Higher Bandwidth and Lower Latencies 11
2.Building Blocks of TCP 13
Three-Way Handshake 14
Congestion Avoidance and Control 16
Flow Control 17
Slow-Start 19
Congestion Avoidance 26
Bandwidth-Delay Product 28
Head-of-Line Blocking 30
Optimizing for TCP 32
Tuning Server Configuration 32
Tuning Application Behavior 34
Performance Checklist 34
3.Building Blocks of UDP 35
Null Protocol Services 36
UDP and Network Address Translators 38
Connection-State Timeouts 39
NAT Traversal 40
STUN, TURN, and ICE 41
Optimizing for UDP 44
4. Transport Layer Security (TLS) 47
Encryption, Authentication, and Integrity 48
TLS Handshake 50
Application Layer Protocol Negotiation (ALPN) 53
Server Name Indication (SNI) 54
TLS Session Resumption 55
Session Identifiers 55
Session Tickets 57
Chain of Trust and Certificate Authorities 57
Certificate Revocation 61
Certificate Revocation List (CRL) 61
Online Certificate Status Protocol (OCSP) 62
TLS Record Protocol 62
Optimizing for TLS 63
Computational Costs 64
Early Termination 65
Session Caching and Stateless Resumption 67
TLS Record Size 68
TLS Compression 69
Certificate-Chain Length 70
OCSP Stapling 71
HTTP Strict Transport Security (HSTS) 72
Performance Checklist 73
Testing and Verification 73
Part II. Performance of Wireless Networks
5. Introduction to Wireless Networks 79
Ubiquitous Connectivity 79
Types of Wireless Networks 80
Performance Fundamentals of Wireless Networks 81
Bandwidth 82
Signal Power 85
Modulation 86
Measuring Real-World Wireless Performance 87
6.WiFi 89
From Ethernet to a Wireless LAN 89
WiFi Standards and Features 91
Measuring and Optimizing WiFi Performance 92
Packet Loss in WiFi Networks 94
Optimizing for WiFi Networks 95
Leverage Unmetered Bandwidth 95
Adapt to Variable Bandwidth 96
Adapt to Variable Latency 97
7.Mobile Networks 99
Brief History of the G's 99
First Data Services with 2G 100
3GPP and 3GPP2 Partnerships 101
Evolution of 3G Technologies 103
IMT-Advanced 4G Requirements 105
Long Term Evolution (LTE) 106
HSPA+ is Leading Worldwide 4G Adoption 107
Building for the Multigeneration Future 109
Device Features and Capabilities 111
User Equipment Category 111
Radio Resource Controller (RRC) 113
3G, 4G, and WiFi Power Requirements 115
LTE RRC State Machine 116
HSPA and HSPA+ (UMTS) RRC State Machine 119
EV-DO (CDMA) RRC State Machine 120
Inefficiency of Periodic Transfers 121
End-to-End Carrier Architecture 123
Radio Access Network (RAN) 123
Core Network (CN) 125
Backhaul Capacity and Latency 128
Packet Flow in a Mobile Network 129
Initiating a Request 129
Inbound Data Flow 132
Heterogeneous Networks (HetNets) 133
Real-World 3G, 4G, and WiFi Performance 135
8.Optimizing for Mobile Networks 139
Preserve Battery Power 140
Eliminate Periodic and Inefficient Data Transfers 142
Eliminate Unnecessary Application Keepalives 144
Anticipate Network Latency Overhead 145
Account for RRC State Transitions 146
Decouple User Interactions from Network Communication 146
Design for Variable Network Interface Availability 147
Burst Your Data and Return to Idle 149
Offload to WiFi Networks 150
Apply Protocol and Application Best Practices 150
Part III. HTTP
9. Brief History of HTTP 155
HTTP 0.9: The One-Line Protocol 155
HTTP 1.0: Rapid Growth and Informational RFC 157
HTTP 1.1: Internet Standard 159
HTTP 2.0: Improving Transport Performance 161
10. Primer on Web Performance 165
Hypertext, Web Pages, and Web Applications 166
Anatomy of a Modern Web Application 168
Speed, Performance, and Human Perception 170
Analyzing the Resource Waterfall 171
Performance Pillars: Computing, Rendering, Networking 176
More Bandwidth Doesn't Matter (Much) 176
Latency as a Performance Bottleneck 177
Synthetic and Real-User Performance Measurement 179
Browser Optimization 183
11. HTTP 1.X 187
Benefits of Keepalive Connections 189
HTTP Pipelining 192
Using Multiple TCP Connections 196
Domain Sharding 198
Measuring and Controlling Protocol Overhead 200
Concatenation and Spriting 201
Resource Inlining 204
12. HTTP 2.0 207
History and Relationship to SPDY 208
The Road to HTTP 2.0 209
Design and Technical Goals 211
Binary Framing Layer 211
Streams, Messages, and Frames 212
Request and Response Multiplexing 214
Request Prioritization 215
One Connection Per Origin 217
Flow Control 218
Server Push 219
Header Compression 222
Efficient HTTP 2.0 Upgrade and Discovery 224
Brief Introduction to Binary Framing 226
Initiating a New Stream 229
Sending Application Data 230
Analyzing HTTP 2.0 Frame Data Flow 230
13. Optimizing Application Delivery 233
Evergreen Performance Best Practices 235
Cache Resources on the Client 236
Compress Transferred Data 237
Eliminate Unnecessary Request Bytes 238
Parallelize Request and Response Processing 239
Optimizing for HTTP 1.x 241
Optimizing for HTTP 2.0 241
Removing 1.x Optimizations 242
Dual-Protocol Application Strategies 244
Translating 1.x to 2.0 and Back 245
Evaluating Server Quality and Performance 247
Speaking 2.0 with and without TLS 247
Load Balancers, Proxies, and Application Servers 248
Part IV. Browser APIs and Protocols
14. Primer on Browser Networking 253
Connection Management and Optimization 254
Network Security and Sandboxing 256
Resource and Client State Caching 257
Application APIs and Protocols 258
15. XMLHttpRequest 261
Brief History of XHR 262
Cross-Origin Resource Sharing (CORS) 263
Downloading Data with XHR 266
Uploading Data with XHR 268
Monitoring Download and Upload Progress 269
Streaming Data with XHR271
Real-Time Notifications and Delivery 273
Polling with XHR 274
Long-Polling with XHR
276
XHR Use Cases and Performance 278
16.Server-Sent Events (SSE) 279
EventSource API 279
Event Stream Protocol 282
SSE Use Cases and Performance 285
17.WebSocket 287
WebSocket API 288
WS and WSS URL Schemes 289
Receiving Text and Binary Data 290
Sending Text and Binary Data 291
Subprotocol Negotiation 293
WebSocket Protocol 294
Binary Framing Layer 295
Protocol Extensions 297
HTTP Upgrade Negotiation 298
WebSocket Use Cases and Performance 301
Request and Response Streaming 302
Message Overhead 303
Data Efficiency and Compression 304
Custom Application Protocols 304
Deploying WebSocket Infrastructure 305
Performance Checklist 307
18.WebRTC 309
Standards and Development of WebRTC 310
Audio and Video Engines 311
Acquiring Audio and Video with getUserMedia 312
Real-Time Network Transports 315
Brief Introduction to RTCPeerConnection API 317
Establishing a Peer-to-Peer Connection 319
Signaling and Session Negotiation 320
Session Description Protocol (SDP) 322
Interactive Connectivity Establishment (ICE) 325
Incremental Provisioning (Trickle ICE) 328
Tracking ICE Gathering and Connectivity Status 329
Putting It All Together 332
Delivering Media and Application Data 337
Secure Communication with DTLS 337
Delivering Media with SRTP and SRTCP 340
Delivering application data with SCTP 344
DataChannel 348
Setup and Negotiation 350
Configuring Message Order and Reliability 353
Partially Reliable Delivery and Message Size 355
WebRTC Use Cases and Performance 356
Audio, Video, and Data Streaming 356
Multiparty Architectures 358
Infrastructure and Capacity Planning 359
Data Efficiency and Compression 361
Performance Checklist 361
Index 363
查看PDF
查看更多
馆藏单位
中科院文献情报中心