Linux Network Programming-what can raw sockets do?

Source: Internet
Author: User

Typically, programmers connect to a socket (socket) that is two types of contact:
(1) streaming sockets (SOCK_STREAM): A connection-oriented socket for connection-oriented TCP service applications;
(2) Datagram Socket (SOCK_DGRAM): a non-connected socket that corresponds to a non-connected UDP service application.

From the user's point of view, Sock_stream, sock_dgram These two types of sockets do not seem to cover all the TCP/IP applications , because TCP/IP-based applications, from the level of the protocol stack, at the transport layer is really only possible to build on TCP or UDP protocol, and Sock_stream and Sock_dgram correspond to TCP and UDP respectively, so almost all applications can be implemented with these two types of sockets .

However, when we face the following problems, Sock_stream, Sock_dgram will appear helpless:

(1) How to send a custom IP packet?
(2) How do I send an ICMP protocol packet?
(3) How to analyze all the packets passing through the network, regardless of whether the package is sent to itself?
(4) How to disguise the local IP address?

This allows us to face another profound theme-the original socket (SOCK_RAW). The original socket is widely used in advanced network programming, and is also widely used as a hacker tool . The famous network sniffer (a kind of network analysis method based on passive listening principle), denial of service attack (DOS), IP spoofing, etc. can all be realized through the original socket.

The original socket (SOCK_RAW) can be used to assemble the packet itself, which can receive all the data frames (packets) on the local network card, and it is very useful for monitoring the traffic and analyzing the network data.

The original sockets are based on IP packet programming (Sock_packet is based on the data Link layer programming). In addition, you must be under administrator privileges to use the original socket.

The difference between the original socket (SOCK_RAW) and the standard sockets (Sock_stream, SOCK_DGRAM) is that the original socket is placed directly "rooted" in the operating system network core, while Sock_stream, Sock_dgram " Suspended "to the perimeter of the TCP and UDP protocols.

  Streaming sockets can only send and receive TCP protocol data, datagram sockets can only send and receive UDP protocol data, the original socket can send and receive packets that are not processed by the kernel.

Transferred from: http://blog.csdn.net/tennysonsky/article/details/44655077

Linux Network Programming-what can raw sockets do?

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.