cs349 Lecture Notes Fall 2000 Week 1, Tuesday For today you should have bought the book. For Thursday, read P&D Section 1.1 and write answers for questions 5, 6, 10, 12, 13 on page 61 Also, please get the lecture notes from the web and bring a copy to class. Today: Class overview Course information Outline of Chapter 1 Intro to Chapter 1 Concepts -------- 1) engineering: technological solutions to application-driven problems What are the problems that modern networks were built to solve? What are the possible solutions? What factors dictate the choice of solution? (What might change in the future that will require different solutions?) Example: applications that drove the development of the Internet (email, file transfer, remote login) had no real-time constraints resulting network provides no performance guarantee, no quality of service. new applications like video and sound streaming do Is the Internet well-designed for this change? Will we be forced to switch, or be stuck with inappropriate design? Skills ------ 1) reading comprehension: extracting important ideas from dense technical material 2) network numeracy: how long does it take to move 100 KB over a 10 Mb/s link with 100ms propagation delay? 3) some network programming (what does the network API look like, and more importantly, why?) Overview -------- Organization of the book: one problem per chapter Chapter 1: filling the semantic gap (what are the fundamental capabilities of a network, and what behavior do we expect from a network?) Chapter 2: (physical connection) putting data on a wire (how can we get data from one machine to another?) (how is this problem different from moving data around inside a machine?) message, encoding, signal Chapter 3: (virtual connection) no direct connection between hosts 23 kinds of switching Chapter 4: heterogeneous internets addressing and routing -- IP Chapter 5: process-level communication common services, redundant code: OS provides general capabilities in various flavors known as... end-to-end protocols (UDP, TCP, RPC) Chapter 6: allocating resources congestion control and resource allocation Chapter 7: data with type information how do we communicate about the semantics of data? Chapter 8: security protecting privacy, authentication, integrity Chapter 9: not-so-common services application-specific protocols Chapter 1 --------- Central ideas in each section 1.1 The two-parameter model of link performance 1.2 The protocol stack 1.3 The socket API Section 1.1.1 ------------- Vocabulary: link: a physical connection between two or more nodes node: a general term that refers to both the hosts connected by a network AND any intermediate nodes in the network graph in different contexts, the intermediate nodes are called switches, routers, or gateways host: a computer that communicates with other computers interior nodes implement the network, host nodes use the network hosts belong to people, and they are used to do lots of things besides communicate interior nodes belong to ISPs, and do nothing but store and forward A graph is an abstract representation, or model, of a network. Like all models, it tries to capture all the behavior that is relevant, at the same time ommitting unnecessary details. Different models are appropriate for different uses. Example: in Figure 1.2, we might include the interior nodes in the model or exclude them In what circumstances would each be appropriate? A network is: two or more nodes connected by a link OR two or more networks connected by a node Section 1.1.2 Resource-sharing ------------- multiplexing: more than one flow traversing a single link Logical flow is defined at the application level Example: You have two web browsers running. One is streaming and playing audio data from a radio station. The other is reading text and images from a web page. At the same time, your mail handler is receiving an email message, and your print spooler is sending a file to the printer. Thus, on this one machine there are at least 4 entities (processes) that want to use the network (a single connection) at the same time. If you know how this is done, try to forget for a minute that you do and think about the _possible_ ways it could be done: 1) frequency-division multiplexing 2) time-division multiplexing a) synchronous b) statistical Pros and cons? What is done on the Internet? Why? Is there an example of a system that does something different? What is the definitive characteristic of that system that makes the alternate solution appropriate? Why is a data stream divided into packets? To prevent starvation. There is a limit on how long a single stream can monopolize the link. Challenges for statistical time-division multiplexing? Fair allocation, handling congestion. Section 1.1.3 The semantic gap ------------- Network provides basic capabilities defined by the hardware. Many applications have common higher-level requirements. OS can fill the gap by building virtual/logical capabilities on top of hardware capabilities. Example: reliability Networks are fallible (three kinds of errors) Software can 1) detect/correct corruption 2) detect/resend lost packets 3) detect/maybe deal with machines and links that are down Example: performance guarantees Can software make promises the hardware can't keep? Maybe not, but it can figure out what promise to offer. Section 1.1.4 The two parameter model of network performance -------------