Sponsored Content
Full Discussion: Raw Sockets Programming
Special Forums IP Networking Raw Sockets Programming Post 302348656 by Loic Domaigne on Saturday 29th of August 2009 02:57:06 AM
Old 08-29-2009
Hello Sandia_man,

I recommend Stevens classic "Unix Network Programming: Volume 1, the sockets networking API" (3rd edition) that has a chapter about raw socket and datalink: chap 27 und 28 pp 735-816.

You may also study the source of programs link ping, traceroute etc. that use raw socket.

HTH,
Loïc
 

8 More Discussions You Might Find Interesting

1. Programming

Sockets!?!?!?!?!?!

I am looking for a way to have a program listen on a port (example: 8000) for communication I will be sending via that port to it(Linux Kernel machine). Once it recieves an appropiate command I need it to run a .bat file in linux. I know what I need to do but I am running into a few problems:... (8 Replies)
Discussion started by: bigB8210
8 Replies

2. Solaris

Sockets in use

Is there a way to see what sockets are in use? The developers here are getting some defunct processes and they would like to get a socket list. This is on a Solaris 8 machine. Thanks! (1 Reply)
Discussion started by: kjbaumann
1 Replies

3. Programming

Programming Sockets to Reconnect

Hello everyone, I'm very interested in sockets programming for developing games. Right now i'm trying to develop a client, and connecting to a host and port can be done, but i googled lots of pages, but i could not find how to reconnect to the host/port if the connection is somehow... (2 Replies)
Discussion started by: raistie
2 Replies

4. UNIX for Dummies Questions & Answers

Carreer:Networking Programming in Unix (C programming Language)

Hello, I am trying to learn Networking Programming in C in unix enviorment. I want to know how good it is to become a network programmer. i am crazy about Network programming but i also want to opt for the best carreer options. Anybody experienced Network Programmer, please tell me is my... (5 Replies)
Discussion started by: vibhory2j
5 Replies

5. Programming

c++, raw sockets, stopping kernel write in header?

Hi, im trying to lern about raw sockets with my debian and c++. Tried to make a icmp and tcp packet and send it with sendto. Checked on wireshark and recognized that kernel changed my headers. So searched about stopping the kernel change the header and tried it with setsockopt, like said in at this... (4 Replies)
Discussion started by: sandcastle
4 Replies

6. Red Hat

Sockets

hai guys, I'm doing a project in which one server communicates with several clients. How can i do it when i have different port numbers???:confused: (0 Replies)
Discussion started by: rajeshb6
0 Replies

7. UNIX for Dummies Questions & Answers

From iOS programming to Linux system programming

Hello. I like Linux and C programming language. Allways wanted to understand kernel and become a Linux system programmer. And I also like Objective-C and iOS. These two programming areas have relations: 1. Linux and iOS are UNIX-like systems, POSIX compliant. 2. It is useful to know C language... (2 Replies)
Discussion started by: Rockatansky
2 Replies

8. Programming

Raw Socket Programming - Efficient Packet Sniffer

Hi, I have the requirement to sniff packets from the Ethernet card on my Linux machine and process it and feed it to a RANAP protocol stack. So far I have written the raw packet sniffer and successfully sniffing packets and do little processing. However, for huge number of packets ... (9 Replies)
Discussion started by: rstnsrr
9 Replies
ICMP(4) 						   BSD Kernel Interfaces Manual 						   ICMP(4)

NAME
icmp -- Internet Control Message Protocol SYNOPSIS
#include <sys/socket.h> #include <netinet/in.h> int socket(AF_INET, SOCK_RAW, proto); DESCRIPTION
ICMP is the error and control message protocol used by IP and the Internet protocol family. It may be accessed through a ``raw socket'' for network monitoring and diagnostic functions. The proto parameter to the socket call to create an ICMP socket is obtained from getprotobyname(3). ICMP sockets are connectionless, and are normally used with the sendto and recvfrom calls, though the connect(2) call may also be used to fix the destination for future packets (in which case the read(2) or recv(2) and write(2) or send(2) system calls may be used). Outgoing packets automatically have an IP header prepended to them (based on the destination address). Incoming packets are received with the IP header and options intact. Note that the ip_off and ip_len fields are in host byte order. For more information about the IP header structure, see ip(4). Non-privileged ICMP ICMP sockets can be opened with the SOCK_DGRAM socket type without requiring root privileges. The synopsis is the following: socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) Datagram oriented ICMP sockets offer a subset of the functionality available to raw ICMP sockets. Only IMCP request messages of the following types can be sent: ICMP_ECHO, ICMP_TSTAMP or ICMP_MASKREQ. The code field must be the value zero (0). The minimal length of an ICMP message request is eight (8) octets. The advantage of using datagram oriented ICMP sockets is that even a non-privileged process can use ICMP echo requests to gauge the quality of the connectivity to a host, or to receive ICMP destination unreachable message for path MTU discovery, or to receive time exceeded mes- sages for traceroute. The following IP level option can be used with datagram oriented ICMP sockets: IP_OPTIONS IP_HDRINCL IP_TOS IP_TTL IP_RECVOPTS IP_RECVRETOPTS IP_RECVDSTADDR IP_RETOPTS IP_MULTICAST_IF IP_MULTICAST_TTL IP_MULTICAST_LOOP IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_VIF IP_PORTRANGE IP_RECVIF IP_IPSEC_POLICY IP_STRIPHDR When the IP option IP_HDRINCL is used, the provided IP header must obey the following rules: ip_v Must be IPVERSION (4); ip_hl Between 5 and 10 (inclusive); ip_tos Any value; ip_len Must be the total length of IP datagram (IP header + ICMP message); ip_id Must be zero, will be automatically set; ip_off Must be zero, will be automatically set; ip_ttl Any value; ip_p Must be IPPROTO_IP; ip_sum Value ignored, will be automatically set; ip_src Must be an IP address currently assigned to one of the local interface or INADDR_ANY; ip_dst Any address; ip_opts Any option. The maximum length of a IMCP message that can be sent is controlled by the sysctl variable net.inet.raw.maxdgram. DIAGNOSTICS
A socket operation may fail with one of the following errors returned: [EISCONN] when trying to establish a connection on a socket which already has one, or when trying to send a datagram with the destina- tion address specified and the socket is already connected; [ENOTCONN] when trying to send a datagram, but no destination address is specified, and the socket hasn't been connected; [ENOBUFS] when the system runs out of memory for an internal data structure; [EADDRNOTAVAIL] when an attempt is made to create a socket with a network address for which no network interface exists; [EINVAL] when an invalid value is used with IMCP datagram socket for a field of the IP or ICMP header. SEE ALSO
recv(2), send(2), inet(4), intro(4), ip(4) HISTORY
The icmp protocol appeared in 4.3BSD. 4.3 Berkeley Distribution June 19, 2002 4.3 Berkeley Distribution
All times are GMT -4. The time now is 06:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy