Presentation is loading. Please wait.

Presentation is loading. Please wait.

Raw Sockets.

Similar presentations


Presentation on theme: "Raw Sockets."— 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 Routing protocols Hacking
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 sockfd = socket(AF_INET, SOCK_RAW, proto)
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

10 Object oriented languages
Levels of abstraction Abstracting the problem as object interactions Object oriented languages (C++, Java) Imperative languages (C, FORTRAN, ALGOL) Abstracting the machine model Assembly language Low-level machine details 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 defines what 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; } abstract void 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 final class X { class 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
java import java.lang.*; public class HelloDate { public static void 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


Download ppt "Raw Sockets."

Similar presentations


Ads by Google