Linux(网络编程):01---Linux内核下的socket文件详解

时间:2024-03-18 22:02:26

一、什么是socket文件?

我们拿C语言的文件和socket对比举例说明

C语言文件是如何进行读写的:

  • 文件信息==>open()==>write/read

socket套接字是如何进行数据传输的

  • 数据==>socket()==>write/read/accetp/connect/setsocketopt等等....

从上面可以看出

  • C语言的文件通过open函数打开,就可以使用write/read函数来对数据进行操作。
  • socket套接字作为一种特殊的文件,可以通过这个socket来初始化一种网络协议,然后就可以通过一系列的函数(write/read/accept)来对这个网络协议进行初始化、传输等等操作
  • 因此两者的原理都是相同的

socket定义

  • Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议

二、socket在Linux内核中的结构

  • socket在内核中其实就是一个结构体。这个结构体包含有ip、port、state、size等成员,这些成员都是用来初始化套接字的详细信息的,但是我们无法直接使用这些成员。因此Linux提供了相应的接口函数给我调用,我们通过这些函数来初始化socket结构体内的成员

图示:

Linux(网络编程):01---Linux内核下的socket文件详解

结构体中

  • ip、port:初始化IP地址和端口号
  • state:当前网络服务的状态(监听/非监听)
  • size:最大可连接的数量

因为这些结构体成员我们不可能直接操作,所以Linux提供了相应的接口函数给我们调用,来操作这些成员

  • bind():绑定ip与端口号
  • listen():监听
  • ....等等还有很多其他函数