Introduction, Ch. 1
  1. Networking is growing quickly.
    1. The Internet was a research product in 1980; now its an essential.
    2. Huge industry to provide networking and related services.
  2. Complexity
    1. No single underlying theory for the whole field.
    2. Inconsistent terminology.
      1. Different sub-fields tend to invent their own names for the same things.
      2. Marketing v. engineering.
  3. Five Key Aspects
    1. Network Applications and Programming.
      1. Writing code which uses the network.
      2. Does not require deep understanding of the net technology, just the API to use it.
    2. Data Communications.
      1. The physics of getting a signal from one computer to another.
      2. Making those physical phenomena deliver bits.
    3. Packet Switching and Networking Technology.
      1. Telephone and telegraph establish a dedicated path between each pair of endpoints.
      2. Modern computer networks move packets through a network of shared connections. This is a big change.
      3. Uses resources more efficiently, but a packet is not guaranteed to to have a way through, producing loss and delay.
    4. Internetworking and TCP/IP.
      1. A single standard to connect various, and very different, types of network together.
      2. An abstract networking interface implemented in terms of various types of (packet-switched) hardware networks.
    5. Etcetera. Performance, security, remote automation.
  4. Public and Private.
    1. Public networks are available to the public, such as those run by any ISP.
    2. Private networks belong to an organization and serve its members.
      1. Your home network.
      2. Office networks.
      3. The campus network.
      4. Classifications
        1. Consumer.
        2. Small/Home office (SOHO).
        3. Small to Medium Business (SMB).
        4. (Large) Enterprise.
    3. Access, not ownership.
      1. Comcast runs a public network which is privately owned (by Comcast).
      2. The office network in any government agency is a publicly-owned private network.
  5. Protocols and Standards.
    1. For computers to communicate, they must agree on a thousand things: voltages, timings, message formats, data representation, addressing, error handling, etc.
    2. These are specified by a networking protocol (or communications protocol.
    3. Protocols are organized into protocol stacks (or families).
    4. A stack is arranged in layers.
      1. The notion is similar to that of federal government: the separate layers each deal with separate issues.
      2. Communicating computers must conform with each set of rules.
    5. The TCP/IP Stack
      1. Physical Voltages and other electrical properties, radio frequencies, etc.
      2. Network Interface (MAC): Hardware device addressing, protocols to share the physical medium, packet sizes and format.
      3. Internet: Internet addressing, packet structure, routing and error reporting.
      4. Transport: Provide for communication between endpoints. Maximum data rates, congestion avoidance, reliable delivery.
      5. Application: Rules to perform a particular service, e.g., HTTP, email protocols, multimedia delivery protocols, etc.
      6. Note: Addresses used at the network layer (MAC addresses) differ from those used at the Internet layer (IP addresses). MAC address format depends on the type of hardware in the network, and IP addresses does not.
    6. Messages in the stack.
      1. Messages travel down from the application, through each layer of the stack, across the wire, then back up through the stack to the application on the other side.
      2. Each layer thinks of itself as communicating with the same layer on its peer.
      3. Each layer may add a header to the message (or make other changes) as the message goes down. These are removed by the receiver as the message goes up.
      4. The headers allow each layer to communicate with its peer.
    7. The OSI model.
      1. From the International Standards Organization (OSI from ISO).
      2. Intended as a general model; does not refer to any specific implementation or family.
      3. Engineers often refer to these layers.
      4. Older than the TCP/IP stack
      5. Does not have an internet layer, so we let the network layer be that.
      6. TCP/IP essentially combines ISOs Application, Presentation and Session layers into its Application layer.
    8. IP's Secret Layer.
      1. Transport Layer Security (TLS), previously Secure Socket Layer (SSL).
      2. Many applications, such as HTTPS (secure web sites) use TLS.
      3. Not officially a layer in the protocol.
        1. Operates as sort of a subdivision of the Application Layer.
        2. Behaves like an additional layer, following the rules described above.
      4. Generally provided by a library, not the O/S kernel.
      5. Increasingly used by application protocols.
      6. Encrypts the data on the line to frustrate snooping.
      7. Increases confidence that the server is identifying itself honestly via the “chain of trust”
        1. Each server has a public/private key pair.
        2. Sends a “certificate” giving its name and public key, signed by the private key.
        3. That certificate is accompanied by a another, which verifies the the server certificate and is signed by a “certificate authority”.
        4. Client key may be vouched for by additional signing keys, creating a chain back to a CA.
          I am www.example.com, and my public key is PUB1.
          Signed, PRI2.
          I am www.signer.com, and my public key is PUB2. I believe that www.example.com has public key PUB1. I am allowed to sign server certificates.
          Signed, PRI3.
          I am www.ca.com, and my public key is PUB3. I believe that www.signer.com has public key PUB2. I am a certificate authority, whose public key appears in your client's list of trusted CA keys.
          Signed, PRI3.
        5. Upon connection, the server sends all relevant certificates to the client.
        6. A client (browser, etc.) contains a list of trusted CA public keys.
        7. The browser trusts PUB3, so it can trust PUB1.