Download
raw sockets n.
Skip this Video
Loading SlideShow in 5 Seconds..
Raw Sockets PowerPoint Presentation
Download Presentation
Raw Sockets

Raw Sockets

396 Vues Download Presentation
Télécharger la présentation

Raw Sockets

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Raw Sockets

  2. What are Raw Sockets? • Allows you to bypass the TCP/UDP layers. • Send/receive your own packets, with your own headers. • You need to do all protocol processing at user-level.

  3. Typical Uses • ICMP messages • ping generates ICMP echo requests and received ICMP echo replies. • Routing protocols • gated implements OSPF routing protocol. • Uses IP packets with protocol ID 89 – not supported by kernel. • Hacking • Generating your own TCP/UDP packets with spoofed headers

  4. Raw socket creation • Only root can open a raw socket. sockfd = socket(AF_INET, SOCK_RAW, proto) where proto is IPPROTO_RAW, IPPROTO_ICMP etc.

  5. Raw socket output • As usual – sendto(), sendmsg() etc. • IP_HDRINCL option • Specifies whether the process or the kernel builds the IP header. /* allow process to build IP header */ int on=1; setsockopt( sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on))

  6. Raw socket input • Normally using recvfrom() • Conditions for a packet to match raw socket • If protocol parameter was specified, only packets with that protocol value are delivered. • If bind() was called on raw socket, only packets destined to bound IP address are delivered. • If connect() was called, only packets from connected address are delivered.

  7. Which protocol types are delivered? • TCP and UDP never reach raw sockets • Kernel IP stack handles these • Linux implementation is an exception. • All ICMP except • ICMP echo request • Timestamp request • Mask request • All IGMP • All other protocols that kernel doesn't understand • Such as OSPF

  8. Exercise Write a simple “Hello” exchange program using raw sockets that implements your own protocol on top of IP.

  9. Java Reference Book - “Thinking in Java” by Bruce Eckel Book is online at http://www.mindview.net/books/TIJ

  10. Levels of abstraction Abstracting the problem as object interactions Object oriented languages (C++, Java) Imperative languages (C, FORTRAN, ALGOL) Abstracting the machine model Low-level machine details Assembly language Machine

  11. Object • An object has • State (internal data) • Behavior (methods that operate on data) • Identity (object can be addressed uniquely)

  12. Objects… • Class defines properties of a set of similar objects. • Think of it as type of the object • Protection boundaries define what object state is visible to others. • Inheritance allows a new class to inherit properties of an earlier class without re-defining them. • Interface defineswhat requests others can make to a particular object

  13. Parent class  Interface  Child classes 

  14. Primitive Data types • boolean - false • char - ‘\u0000’ (null) • byte - (byte)0 • short - (short)0 • int - 0 • long - 0L • float - 0.0f • double -0.0d

  15. Creating a class class Circle { public : Circle(int x, int y, float r) {…} void draw(){…} void erase(){…} void move(){…} private : int x_; int y_; float radius_; } Methods Fields

  16. Creating an object Circle c = new Circle(10,20,5); c.draw(); c.move(); c.erase();

  17. Inheritance abstract class Shape { public : Shape(int x, int y) { x_ = x; y_ = y; } abstractvoid draw(); abstract void erase(); abstract void move(); protected : int x_; int y_; }

  18. Inheritance… • class Circle extends Shape • { • Circle(int x,int y,float r){ • super(x,y); • radius_ = r; • } • void draw() {…} • void erase(){…} • void move(){…} • protected : • float radius_; • }

  19. Inheritance… • class Square extends Shape • { • Square(int x,int y,float w){ • super(x,y); • width_ = r; • } • void draw() {…} • void erase(){…} • void move(){…} • protected : • float width_; • }

  20. void doStuff(Shape s) { s.erase(); // ... s.draw(); } Circle c = new Circle(); Square s = new Square(); Line l = new Line(); doStuff(c); doStuff(s); doStuff(l);

  21. Interfaces interface DrawObject { // automatically public void draw(); void erase(); void move(); // Compile-time constant: int SOME_CONST = 5; // static & final }

  22. class Shape { public : Shape(int x, int y) { x_ = x; y_ = y; } protected : int x_; int y_; }

  23. class Circle extends Shape implements DrawObject • { • Circle(int x,int y,float r){ • super(x,y); • radius_ = r; • } • void draw() {…} • void erase(){…} • void move(){…} • protected : • float radius_; • }

  24. class Square extends Shape implements DrawObject • { • Square(int x,int y,float w){ • super(x,y); • width_ = r; • } • void draw() {…} • void erase(){…} • void move(){…} • protected : • float width_; • }

  25. static members • static fields or methods have one instance across all object instances class X { static int i = 0; …… } x1 = new X(); x2 = new X(); x1.i++; x2.i++; System.out.println(“Result = “ + x2.i);  Result = 2

  26. final member/class • finalclass X { … } Final classes cannot be extended. • class X { final int m(); } Final methods cannot be overridden. • int mthd(final MyClass mc) {…} • Final arguments cannot be modified. • final int MY_CONST = 10; • Final fields/references are constants

  27. Things you should learn from TIJ • Packaging your classes - Chapter 5 • Java I/O system - Chapter 11 • Error handling with exceptions - Chapter 10 • Applets - Chapter 14

  28. Using Standard Java Packages javaimport java.lang.*; publicclass HelloDate { publicstaticvoid main(String[] args) { System.out.println("Hello, it's: "); System.out.println(new Date()); } }

  29. Some other packages… • java.net • java.rmi • java.io • java.applet • java.awt • java.math