socket(1)定义

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值