Day54 - UNIX Domain Socket Advanced IPC¶
Objective¶
Learn advanced AF_UNIX IPC concepts:
- Abstract namespace socket
SO_PEERCRED- Permission control
SOCK_DGRAM- Datagram request/reply
- Datagram truncation
Environment¶
- Linux userspace
- GCC
- AF_UNIX socket APIs
Part 1 - Abstract Namespace Socket¶
Server Bind¶
Example:
addr.sun_family = AF_UNIX;
addr.sun_path[0] = '\0';
memcpy(&addr.sun_path[1],
SERVER_SOCKET_NAME,
strlen(SERVER_SOCKET_NAME));
Address length:
Verification¶
Run:
Expected:
Verify filesystem socket does not exist:
Expected:
Part 2 - SO_PEERCRED¶
Retrieve Peer Credential¶
Example:
Expected log:
Part 3 - Permission Control¶
Restrict privileged commands:
Test:
- Normal user
- Root user
Part 4 - SOCK_DGRAM Server¶
Create DGRAM Socket¶
No:
listen()accept()
Part 5 - recvfrom()¶
Example:
Verify sender address:
Part 6 - Request / Reply¶
Client¶
Server¶
Client¶
Part 7 - Message Boundary Test¶
Client sends multiple packets:
Verify server receives separate packets.
Expected:
Not:
Part 8 - Datagram Truncation Test¶
Setup¶
- Server RX buffer: 128 bytes
- Client packet: >128 bytes
Example:
Expected behavior:
- Packet truncated
- Remaining bytes discarded
- Next packet unaffected
Expected warning:
Summary¶
This lab demonstrates:
- Linux-specific AF_UNIX features
- Local IPC authentication
- Datagram packet semantics
- STREAM vs DGRAM behavior
- Truncation handling