Socket进程通信机制

Socket进程通信机制

1、Socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。

2、应用程序通过套接字向网络发出请求或者应答网络请求。

3、Socket既不是一个程序,也不是一种协议,其只是操作系统提供的通信层的一组抽象API。

4、进程通信的相关概念:

  网间进程通信要解决的是不同主机进程间相互通信问题。为此,首先要解决的是网间进程标识问题。同一主机上,不同进程可用唯一进程号(Process ID)标识。

  (1)端口:网络中可以被命名和寻址的通信端口,是操作系统可分配的一种资源,用于标识通信的进程

    传输层和网络层在功能上功能上的最大区别是传输层提供进程通信能力。

    端口是一种抽象的软件结构。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应的进程发给传输层的数据都通过该端口输出。

    

  

      类似于文件描述符,每一个端口都拥有一个端口号,都是整数型标识符,用于区别不同端口。

      TCP/UDP段结构中端口的地址都是16比特,有0~65535个端口号。

      常见的端口号有,FTP(22)、HTTP(80)、SMTP(25)等。

  (2)地址:

      网络通信中通信的两个进程分别处在不同的机器上,应遵循以下原则:

        某台主机可以与多个网络相连,必须指定一个特定的网络地址;

        网络上每台主机应有唯一的地址;

        每台主机的每个进程应有在该主机上的唯一标识符

  (3)连接:

      两个进程间的通信链路称为连接。连接表现为一些缓冲区和一组协议机制。

5、Socket是一种服务,与其实现的语言无关。基于这个性质,我们能实现不同服务之间,不同语言之间的互联互通。

6、注意一个小知识点:本地进程间通过TCP通信,使用Fiddler等抓包工具是抓不到数据的。主要是因为回环接口的机制,这些包不会到达网卡,数据包直接被返回到传输层的输入队列中去了。

7、Socket函数原型:

  SOCKET socket(int af, int type, int protocol);

    af:指定应用程序使用的通信协议的协议族,对于TCP/IP协议族该参数设置为AN_INET,对于UNIX可建立本地Socket

    type:指定创建socket类型:

        流套接字类型(SOCK_STREAM):最常见的类型,基于TCP协议

        数据报套接字类型(SOCK_DGRAM):即UDP数据报

        原始套接字类型(SOCK_RAW):在IP层对套接字进行编程

    protocol:指定应用程序所使用的通信协议。最常用的是TCP和UDP

  流套接字和数据报套接字不能完成的任务,可以在原始套接字中得以实现。

8、Socket从传输模式上又分为端对端和点对点的连接,流套接字和数据报套接字都属于端对端的连接,因此需要绑定端口号。而原始套接字是基于IP协议的,属于点对点的传输模式,是没有端口这个概念的。比如常用的监测网络连接ping命令,就是基于ICMP协议的,它不存在端口的概念。

猜你喜欢

转载自blog.csdn.net/cmyperson/article/details/90079850
今日推荐