当前位置:网站首页>Simply sort out the types of sockets

Simply sort out the types of sockets

2022-07-05 05:35:00 Raise items


After this period of time to learn network programming , I found that there are many types of sockets , Not only TCP and UDP So simple , This article is simple socket The type of .

socket system call

adopt establish socket The system call interface of can see the kernel pair socket The classification of .

// #include <sys/socket.h>
int socket(int domain, int type, int protocol);

Parameters

adopt domaintype and protocol These three parameters can only Identify a socket. So it's OK to socket do Three dimensions The classification of .

domain

This parameter specifies Protocol family . There are several values in total :

PF_LOCAL        Host-internal protocols, formerly called PF_UNIX,
PF_UNIX         Host-internal protocols, deprecated, use PF_LOCAL,
PF_INET         Internet version 4 protocols,
PF_ROUTE        Internal Routing protocol,
PF_KEY          Internal key-management function,
PF_INET6        Internet version 6 protocols,
PF_SYSTEM       System domain,
PF_NDRV         Raw access to network device,
PF_VSOCK        VM Sockets protocols

There are three kinds of commonly used :

  1. PF_INET:ipv4 Type of socket, Use ipv4 network address + Port number identification socket The address of , Used for communication between hosts .
  2. PF_INET6:ipv6 Type of socket, Use ipv6 network address + Port number identification socket The address of , Used for communication between hosts .
  3. PF_LOCAL: Local socket, Use The absolute pathname of a file identification socket Address , Used between different processes on the same host , It's a kind of IPC methods ( It is equivalent to two processes passing Share a file Achieve communication ). The socket It uses Simplified network protocol stack , So the performance is high .

The protocol family determines , The address family is determined .
structure socket The address of when , To specify Address family AF_xxx),AF_xxx and PF_xxx Is the corresponding .
use PF_xxx Such a value to create socket, use AF_xxx Such a value to construct socket The address of .

type

This parameter specifies Semantics of communication . There are three values :

SOCK_STREAM
SOCK_DGRAM
SOCK_RAW
  1. SOCK_STREAM: Byte stream type , Provide Orderly 、 reliable 、 There is a connection 、 Based on byte stream Communication mechanism .
  2. SOCK_DGRAM: Datagram type , Provide The maximum length is fixed 、 There is no connection 、 unreliable Communication mechanism .
  3. SOCK_RAW: original socket type , Provide right Internal network protocols and interfaces The interview of , Available only for super users . Raw socket It can be handled without the network protocol stack , Direct access to the network card , Send the message constructed by the user process .

protocol

This parameter specifies socket The specific protocol to be used in communication .
When the first two parameters Cannot uniquely identify One Specific network communication protocol when , Will use protocol Specify a specific agreement .

Return value

This function returns a socket The descriptor , Return... On failure -1.
stay Linux Inside , Everything is a document ,socket No exception .

socket system call <----> open system call
socket The descriptor <----> File descriptor
adopt socket send data <----> The document says
adopt socket receive data <----> File read

summary

  1. domain Specifies the protocol family . Address families are also specified , namely socket Address type of .
  2. type Specifies the communication semantics .
  3. protocol Specify the specific communication protocol .
原网站

版权声明
本文为[Raise items]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140621236254.html