应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进行提供并发服务的问题。多个TCP连接或者多个应用程序进程可能需要同一个TCP协议端口进行传输数据,为了区别不同应用程序进程和连接,需要计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)的接口,区分不同应用程序与进程间的网络通信和连接。
1.创建套接字
接口:
int socket(int domain, int type,int protocol)
-
domain
:地址域,指定网络层到底使用什么协议;
其中协议有:AF_INET
:IPv4版本的IP协议,AF_INET6
:IPv6版本的IP协议; -
type
:套接字类型;
SOCK_DGRAM
:用户数据报套接字
SOCK_STREAM
:流式套接字
指定传输层使用什么协议 -
ptotocol
:协议(type类型无法确定具体使用哪个协议)
1.SOCK_DGRAM
:
①指定为0,表示采用默认协议(默认协议就是UDP协议);
②指定具体的协议:IPPROTO_UDP(17)
2SOCK_STREAM
:
①指定为0,表示采用默认协议(默认协议就是TCP协议)