网络通信如何唯一标识一个进程:
传输层的”协议+端口“可以唯一标识主机的进程。
Socket:
套接字格式:
{protocol,src_addr,src_port,dest_addr,dest_port}。
这常被称为套接字的五元组。其中protocol指定了是TCP还是UDP连接,其余的分别指定了源地址、源端口、目标地址、目标端口。
网络中的进程是通过socket来通信的。socket是”open->write/read->close"模式的一种实现。socket为这些操作提供了以下一些函数接口
-
socket() server socket:{protocal}
int socket(int domain,int type,int protocal);
socket对应于普通文件的打开操作,普通文件的打开返回一个文件描述字,而socket()返回一个socket描述符(整数类型的值),唯一标识一个socket。失败返回INVALID_SOCKET(Linux中返回-1)。
1 ) domain
即协议族,决定了socket的地址类型。如AF_INET决定了要用ipv4与端口号的结合。2 ) type
指定socket类型,常用的有:SOCK_STREAM(提供面向稳定的连接数据传输)、SOCK_DGRAM(表示使用不连续、不可靠的数据包连接)。3 ) protocal
指定协议。常用的有:IPPROTP_TCP、IPPROTO_UDP等。对应TCP、UDP。