Socket理解
2021-10-17 20:45:29 小德 网络 访问次数 96

1、what is Socket fd.

    简单说就是网络fd 网络通信的一种方式,抛开底层和协议细节,网络通信和文件读写从接口上本质没有区别,读过来、写过去,简称IO。

    Socket是操作系统为了方便网络编程而设计出来的编程接口。对于网络操作,由Socket的体现就是open-> read/write->close这样的编程模型,统一到文件的一种形式。

    Socket的open就是socket(int domain, int type, int protocol)  和文件一样获取一个句柄。

2、网络层次

image.png

套接字,是内核对贼复杂的网络协议栈的 API 封装,使得程序猿能够用极简的姿势进行网络编程。比如写一个基于 Tcp 的 C/S 的网络程序,需要用到啥?我们大概畅想下:

服务端:

  1. socket( ) 创建出 socketfd;
  2. bind( )  绑定一个端口(和客户端约定好的知名端口号);
  3. listen( ) 讲套接字转化成监听套接字;
  4. accept( ) 等待客户端的建连请求;
  5. 建连之后 read/write 处理数据即可(一般和监听线程并发);

客户端:

  1. socket( ) 创建出 socketfd;
  2. connect( ) 向指定机器、端口发起建连请求;
  3. 建连之后,read/write 处理数据;

image.png

程序猿用着好简单!因为操作系统内核把事扛了。