1 / 29

Raw Sockets

Raw Sockets. 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. Typical Uses. ICMP messages ping generates ICMP echo requests and received ICMP echo replies.

Télécharger la présentation

Raw Sockets

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related