68
CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked Sockets

CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Embed Size (px)

Citation preview

Page 1: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

CSCD433/533Advanced Networks

Spring 2016Lecture 15

Raw vs. Cooked Sockets

Page 2: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Introduction

• Better Understand the Protocol Stack – Use Raw Sockets– So far, sockets in Java either

• TCP or UDP based– In fact, Java does not have built-in support for

Raw Sockets!!!– Use Libraries– C and Python have native support for Raw

Sockets

Page 3: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Motivation for Raw Sockets

• Standard Java Sockets do not fit all our needs• Normal sockets lack some functionality

1. We cannot read/write ICMP or IGMP protocols with normal sockets Ping tool cannot be written using normal sockets 2. Some Operating Systems do not process Ipv4 protocols other than ICMP, IGMP, TCP or UDP What if we have a proprietary protocol that we

want to handle? How do we send/receive data using that protocol? Answer: Raw Sockets!!!

Page 4: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Raw Socket Defined

Raw sockets can be used to construct a packet manually inside an application

Allow an application to set its own headers Use for raw sockets

These include: Implementation of transport-layer protocols that

are not built in to the network stack, and Production of malformed or otherwise non-

standard datagrams for testing purposes.

Page 5: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Normal Sockets - Cooked

Normal sockets, use OS kernel and built-in network stack to add headers like IP header and TCP header

So an application only needs to take care of what data it is sending and what reply it is expecting

Headers are added and removed without your application having to worry about this

Page 6: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

More Motivation for Raw Sockets

• Recall, CSCD330, can we send true ICMP packets in Java?

– Not exactly.

– There is this work-aroundInetAddress.getByName("192.168.1.1").isReachable(4000);– What does this do?

Page 7: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

What does this do?• InetAddress.getByName("192.168.1.1").isReachable(4000);

– Does several things depending on OS and user permissions

• Linux/MacOS• Linux/MacOS environment, no admin rights, • JVM tries to establish TCP connection on port 7

– Function returns true if TCP handshake is successful

• With Superuser rights, correct ICMP request is sent and function returns true if an ICMP reply is received

• Windows XP• Windows XP environment, TCP handshake is used to

test if machine is up, no matter if program has admin rights or not

Page 8: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Solution Using Raw Sockets

• There is a way in java, using various libraries– Using an older library jpcap, it is possible to

assemble and send ICMP Packets– The library is here

http://www.sf.net/projects/jpcap

Page 9: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Recall Network Packets

Some slides courtesy of Vivek Ramachandran

Page 10: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

The gory details …..

Page 11: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

More Details Raw sockets

– All Headers i.e. Ethernet, IP, TCP etc are stripped by network stack and only data is shipped to application layer

– We cannot modify packet headers of packets when they are sent out from our host

– Is this a good thing?

Application Data

Headers Data Network Stack

Page 12: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Injecting Packets

• If we could receive frames for all computers connected to our broadcast domain– Promiscuous Mode

• If we could get all the headers– Ethernet , TCP, IP etc from the network and

analyze them• Then, we could inject packets with custom

headers and data into the network directly

Page 13: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Promiscuous Mode of NIC Card

• It is the “See All, Hear All” mode – Tells network driver to accept all packets

irrespective • Used for Network Monitoring – both legal and

illegal monitoring • We can do this by programmatically setting the

IFF_PROMISC flag or• Using the ifconfig utility (ifconfig eth0 promisc)

Page 14: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Getting All headers - Sniffing

• Caveat, the way it has worked in past• Once we set interface to promiscuous

mode we can get “full packets” with all the headers.– We can process these packets and extract

data from it– Note, we are receiving packets meant for all

hosts

Page 15: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

More on Promiscuous Mode

• Questions• Under what circumstances can we see all

packets on a LAN segment?• Is promiscuous mode truly magic?

Page 16: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

More on Promiscuous Mode

• Under what circumstances can we see all packets on a LAN segment?

• Is promiscuous mode truly magic?• Answer: NO

– Can see broadcast traffic– Can see all traffic if hosts are on a hub– Can see all traffic if one switch port is a mirror or

spanning port– Can see all traffic, if card is able to go into

promiscuous mode and LAN is wireless• Recall, data should be encrypted these days !!!

Page 17: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Sending arbitrary packets – Packet Injection• We “manufacture” our own packets and send it

out on the network.– Absolute power!!!

• Total network stack bypass• Most active network monitoring tools and

hacking tools use this.• Dos attacks ? Syn Floods ? IP Spoofs ? • Plus, network tools like Wireshark

Page 18: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Raw Sockets – a closer look

Application

Raw Socket

Page 19: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Library Support for Raw Sockets

• In Java, no way to get to RAW interfaces in OS kernels with standard Java libraries– Two C libraries support standard way of

interfacing to network cards– Libpcap – Linux/MAC/Unix– Winpcap - Windows

Page 20: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Link Layer Packet Capture

• Stevens in his classic book, makes a distinction between Raw Sockets and capturing packets at the link layer

• See, Unix Network Programming by R. Stevens, B. Fenner and A. Rudoff for details

• For our purposes, since Java doesn't have true RAW socket interface, only way we can capture raw traffic is through link layer packet capture

• Jpcap running on top of libpcap library is one example of Java special purpose library

Page 21: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Picture of this

App App

Buffer Buffer

BPF DataLink

IPv4 IPv6

Process

Kernel

Copy Transmitted

Copy Received

BPF – Berkeley packet Filter

Gets copy after receivedGets copy before transmitted

Libpcap uses BPF and PF_Packet in Linux

Page 22: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Berkeley Packet Filter

Berkeley Packet Filter (BPF) provides Raw interface to data link layers, permitting raw link-layer

packets to be sent and received It is available on most Unix-like operating systems BPF provides pseudo-devices that can be bound to a

network interface Reads from device reads buffers full of packets

received on network interface, and Writes to device will inject packets on network

interface

https://en.wikipedia.org/wiki/Berkeley_Packet_Filter

Page 23: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Jpcap As an Example

• Jpcap – Open source library for capturing and sending network

packets from Java applications– Has features similar to all libraries that do RAW sockets– It provides facilities to:– Capture raw packets live from wire. – Save captured packets to an offline file, and read captured packets from an offline file– Automatically identify packet types and generate

corresponding Java objects (for Ethernet, IPv4, IPv6, ARP/RARP, TCP, UDP, and ICMPv4 packets).

– Filter packets according to user-specified rules before dispatching them to application and send raw packets to the network

Page 24: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Jpcap and Other Java Raw Libraries

C Language allows native access to Raw Socket interface

More details are left to you, the programmer Must build the headers for IP, TCP, UDP or any

new protocol you might create More work, but gives you more control

Page 25: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Java Jpcap

You must first create a class that implements the interface jpcap.JpcapHandler

public class JpcapTip implements JpcapHandler { public void handlePacket(Packet packet){ System.out.println(packet); }}

Page 26: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Java Jpcap

• You need to tell Jpcap which network device you want to listen to

• API provides jpcap.Jpcap.getDeviceList() method for this purpose

String[] devices = Jpcap.getDeviceList();• Once you have a list of device names, you must

choose one for listening:String deviceName = devices[0];

Page 27: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Java Jpcap• After choosing a device, you open it for listening by using

method Jpcap.openDevice() The openDevice() method requires four arguments:

1. Device name to be opened,2. Maximum number of bytes to read from the device at

one time,3. Boolean value specifying whether to put device into

promiscuous mode4.Timeout value that will be used if you later call

processPacket() method

Jpcap jpcap = Jpcap.openDevice(deviceName, 1028, false, 10000);

Page 28: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Java Jpcap

Jpcap jpcap = Jpcap.openDevice(deviceName, 1028, false, 10000);• OpenDevice() method returns reference to Jpcap

object that will be used for capturing• Now have Jpcap instance, you can start listening by

calling either processPacket() or loopPacket()• Both methods take two arguments:

– Maximum number of packets to capture or -1 to indicate no limit

– Instance of a class that implements JpcapHandler.

Page 29: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Jpcap

• If you call processPacket(),– Jpcap will capture packets until either timeout

specified in openDevice is exceeded– or maximum number of packets specified has been

reached• If you call loopPacket()

– Will capture packets until maximum number of packets is reached or forever, if there is no maximum. The call looks like this:

jpcap.loopPacket(-1, new JpcapTip());

Page 30: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Jpcap Example Program

Next slide shows Jpcap program that captures packets using loopPacket and the first interface displayed in the device list

Device list is printed It then prints out the packets captured

Page 31: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

import jpcap.JpcapHandler;import jpcap.Jpcap;import jpcap.Packet;

public class JpcapTip implements JpcapHandler { public void handlePacket(Packet packet){ System.out.println(packet); } public static void main(String[] args) throws java.io.IOException{ String[] devices = Jpcap.getDeviceList(); for (int i = 0; i < devices.length; i++) { System.out.println(devices[i]); } String deviceName = devices[0];

Jpcap jpcap = Jpcap.openDevice(deviceName, 1028, false, 1); jpcap.loopPacket(-1, new JpcapTip()); }}

Page 32: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

JPCAP Example

The packet output of executing the test class looks like thisIt's shortened for space:

ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79) 00:00:00:00:00:00(192.168.15.34)ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79) 00:00:00:00:00:00(192.168.15.34)1052251329:525479 192.168.15.103->255.255.255.255 protocol(17)

priority(0) hop(offset(0) ident(59244) UDP 1211 1211

Page 33: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Summary

• Raw sockets through jpcap allows capability not built into Java– Raw sockets are possible– Can write programs that gain access lower

level protocols– Gives power to you, the programmer!!!– Allows for fun in manipulating packets!

Page 34: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked

Class over !!!

Midterm due today ….

Page 35: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 36: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 37: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 38: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 39: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 40: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 41: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 42: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 43: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 44: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 45: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 46: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 47: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 48: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 49: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 50: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 51: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 52: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 53: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 54: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 55: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 56: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 57: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 58: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 59: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 60: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 61: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 62: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 63: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 64: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 65: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 66: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 67: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked
Page 68: CSCD433/533 Advanced Networks Spring 2016 - EWUpenguin.ewu.edu/cscd433/CourseNotes/CSCD433-Lecture16-2016-Ra… · CSCD433/533 Advanced Networks Spring 2016 Lecture 15 Raw vs. Cooked