通俗易懂说socket(1)

通俗易懂说socket(1)

  • 1. 什么是socket?
    • 1.1 定义
    • 1.2 功能
    • 1.3 位置
  • 2. 为什么需要socket ?
    • 2.1 网络中进程之间如何通信?
  • 3. socket基本操作
    • 3.1 unix哲学
    • 3.2 接口定义
  • 4. 参考

1. 什么是socket?

1.1 定义

socket是一组编程接口(API),也称为套接口或套接字
是一组协议无关的编程接口

1.2 功能

主要功能是将进程发送的各种请求,映射到创建套接口时指定的,与协议有关的具体实现上

1.3 位置

它介于传输层与应用层之间,屏蔽传输层差异,向应用层提供统一的编程接口

2. 为什么需要socket ?

2.1 网络中进程之间如何通信?

  1. 本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的
  2. TCP/IP协议族已经帮我们解决了这个问题,ip地址可以唯一标识网络中的主机,
    而传输层的协议+端口可以唯一标识主机中的应用程序
    这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了

3. socket基本操作

3.1 unix哲学

socket起源于Unix。
而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。
那么可以理解为: socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)

3.2 接口定义

int socket(int domain, int type, int protocol);
socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket
这个socket描述字跟文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。

参数:

	1. •domain:即协议域,又称为协议族(family)。
	常用的协议族有,AF_INET(IPv4)、AF_INET6(IPv6)、AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等。
	协议族决定了socket的地址类型,在通信中必须采用对应的地址,
	如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址
	
	2. •type:指定socket类型。
	常用的socket类型有,SOCK_STREAM(流式套接字)、SOCK_DGRAM(数据报式套接字)、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等 
	
	3. •protocol:就是指定协议。
	常用的协议有,IPPROTO_TCP、PPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。

4. 参考

[1]: https://www.cnblogs.com/straight/articles/7660889.html

你可能感兴趣的:(socket,操作系统)