TreeviewCopyright © aleen42 all right reserved, powered by aleen42
Original Socket Coding Back
- write a new higher-level transport protocol based on IP protocol
1. Create original socket
method
int socket(int family, int type, int protocol)
parameters
- family: AF_INET
- type: SOCK_RAW
- protocol:
- IPPROTO_ICMP: ICMP數據包
- IPPROTO_IGMP: IGMP數據包
- IPPROTO_IP: IP數據包
return value
- >=0: success
- -1: failure
2. Set IP options
- set whether automatically fill the IP header
int on = 1;
setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));
- on=0: 由協議自動填充
- on=1: 用戶程序填充
3. Bind
- if IP_HDRINCL has been set,
bind()takes no effect, and you must fill each IP datagram by yourself - local bind:
bind() - opposite bind:
connect()
4. Send or Receive
send
- if you has not called
connect()to bind, you must usesento()orsendmsg()to send data - if you has called, then
write()orsend()is allowed to use
receive
- data from UDP and TCP won't be sent to original socket
- receive data from ICMP
- echo response
- timestamp response
- mask response
- ...

- receive data from other types of protocols
- receive data which cannot be recognized by the Kernel
As the plugin is integrated with a code management system like GitLab or GitHub, you may have to auth with your account before leaving comments around this article.
Notice: This plugin has used Cookie to store your token with an expiration.