什么是socket?

  • socket 可以看成是用户进程与内核网路协议栈的编程接口。

  • socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。

详解

socket 可以看成是用户进程与内核网路协议栈的编程接口。

四层模型:应用层 传输层(TCP协议,UDP协议) 网络层 (IP协议) 数据链路层

TCP/IP的协议栈属于内核的一部分。应该层是用户实现的,属于用户进程的部分(也就是应用在用户空间)。

用户空间当中的程序要想访问内核,使用内核的服务,就需要使用一定的接口访问它,对于网络编程来说这个接口就把它称为套接口。

socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。

应用程序 机器A 将数据传递给机器B它是通过socket来进行传输的,如过程图,屏蔽了 它底层的一些实际的数据传输方式,所以说我们可把套接口看成一种抽象,是一种网络中进程之间 进行数据传递的抽象,这个抽象使得我们不必关心底层的传输细节,也就是说底层的数据传输对我们来说 是透明,我们可以把它看成是空气,当它不存在。

对于上层的应用程序我们只需要关心套接口的存在, 从这个角度来看我们可以把套接口是一种网络进程间通信的手段,主机A上面的进程将数据传递给主机B的一个进程 ,通过套接口来进行数据传递,并且套接口是全双工的通信方式,跟管道(pipe)是不同的,也就是数据流也可以从B主机 到达A主机,这样一个过程也是可以的。

这就是socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信。

因为应用程序A和应用程序B,它可以宿主在不同的主机之上,而管道(pipe)只能在同一台主机间进行通信。

并且套接口还可以在异构系统间进行通信(A主机使用的机器架构体系结构可以和B主机不一样,比如A机器有可能是一个手机QQ,跟B主机上的一个PC qq进行通信,这是可以的,也就是说他们的硬件架构可以不同,软件架构可以不同 :手机上面的操作系统和Pc机上的操作系统也可以是不同,这就是异构系统间通信的概念),。

所以说套接口我们可以把它看成是一种网络进程间通信的手段。

资料:网络中进程之间如何通信

Last updated