| 1.1 | The Fundamental Need For A Laboratory   1 | |
| 1.2 | The Spectrum Of Possible Lab Facilities   1 | |
| 1.3 | A Word About Simulation   3 | |
| 1.4 | Organization Of The Book   3 | |
| 2.1 | The Two Types Of Support And Their Uses   7 | |
| 2.2 | Support For Network Access   7 | |
| 2.3 | Support For Network Programming   7 | |
| 2.4 | Recommendations   8 | |
| 2.5 | Summary   8 | |
| 3.1 | Using A Single Computer To Experiment With Applications   9 | |
| 3.2 | Using A Single Computer To Develop And Test Network Applications   9 | |
| 3.3 | Stress Testing Applications With An Emulated Internet   10 | |
| 3.4 | Transport Protocol Development On A Single Computer   12 | |
| 3.5 | Summary   12 | |
| 4.1 | Consequences Of Sharing   25 | |
| 4.2 | Example Shared Lab Technologies   25 | |
| 4.3 | Architecture Of A Shared Lab   26 | |
| 4.4 | Using A Shared Lab In A Networking Course   26 | |
| 4.5 | Broadcast Domain Assumption   26 | |
| 4.6 | Summary   27 | |
| 5.1 | Introduction   29 | |
| 5.2 | Obtaining Software For The API   30 | |
| 5.3 | Summary   30 | |
| 6.1 | Introduction   37 | |
| 6.2 | Information About Sockets   37 | |
| 6.3 | A Note About The Difficulty Of Socket Programming   38 | |
| 6.4 | Summary   38 | |
| 7.1 | Introduction   47 | |
| 7.2 | Summary   47 | |
| 8.1 | Introduction   55 | |
| 8.2 | Stress Testing Protocols   55 | |
| 8.3 | Internet Emulation With A Gateway   55 | |
| 8.4 | Emulation Behavior   56 | |
| 8.5 | Gateway Details   56 | |
| 8.6 | Gateway Registration Message   57 | |
| 8.7 | Packet Exchange   58 | |
| 8.8 | Error Processing   59 | |
| 8.9 | Gateway Semantics And Defaults   59 | |
| 8.10 | Possible Extensions   60 | |
| 8.11 | Summary   60 | |
| 9.1 | Introduction   71 | |
| 9.2 | Difficulties And Rewards   71 | |
| 9.3 | Summary   72 | |
| 10.1 | The Ideal Measurement Lab   81 | |
| 10.2 | Alternatives To An Isolated Network   81 | |
| 10.3 | Augmentation   82 | |
| 10.4 | Protecting The Production Network   82 | |
| 10.5 | Computers On A Private Network   82 | |
| 10.6 | Summary   83 | |
| 11.1 | Introduction   85 | |
| 11.2 | Measuring Throughput   85 | |
| 11.3 | Summary   85 | |
| 12.1 | Introduction   93 | |
| 12.2 | Promiscuous Mode And Hubs   93 | |
| 12.3 | Manual Packet Inspection   93 | |
| 12.4 | Summary   94 | |
| 13.1 | Introduction   103 | |
| 13.2 | Protocol Sequences At Each Layer   103 | |
| 13.3 | Summary   103 | |
| 14.1 | Dedicated Vs. Production Facilities   113 | |
| 14.2 | Characteristics Of A Dedicated Intranet Lab   113 | |
| 14.3 | Example Equipment In A Dedicated Lab   114 | |
| 14.4 | Summary   114 | |
| 15.1 | Introduction   115 | |
| 15.2 | Organization Of Chapters   115 | |
| 15.3 | Summary   115 | |
| 16.1 | Introduction   123 | |
| 16.2 | Web Technologies   123 | |
| 16.3 | Summary   124 | |
| 17.1 | Introduction   131 | |
| 17.2 | Indirect Vs. Direct Observation   131 | |
| 17.3 | Summary   131 | |
| 18.1 | Introduction   141 | |
| 18.2 | Flexible Abstractions   141 | |
| 18.3 | Summary   141 | |
| 19.1 | Introduction   151 | |
| 19.2 | The Need For Two Computers   151 | |
| 19.3 | Front-end And Back-end Computers In A Lab   152 | |
| 19.4 | Functional Requirements   152 | |
| 19.5 | An Example Architecture   153 | |
| 19.6 | Operation Of The Author's Lab   154 | |
| 19.7 | Automated Recovery   155 | |
| 19.8 | Organization Of The Lab Software   156 | |
| 19.9 | Reset Controller Hardware   157 | |
| 19.10 | Scaling The Architecture   158 | |
| 19.11 | Virtual Lab   159 | |
| 19.12 | Further Details   160 | |
| 19.13 | Summary   160 | |
| 20.1 | Introduction   161 | |
| 20.2 | The Value Of Building A Stack   161 | |
| 20.3 | Summary   162 | |
| 21.1 | Network Processors   171 | |
| 21.2 | Facilities Needed   172 | |
| 21.3 | Hardware For An Example Lab   172 | |
| 21.4 | A Network Processor Testbed   172 | |
| 21.5 | Software For The Example Lab   173 | |
| 21.6 | Relationship To Previous Lab Architectures   174 | |
| 21.7 | Summary   174 | |
| 22.1 | Introduction   175 | |
| 22.2 | Summary   175 | |