天天看点

socket

应用进程跨越网络的通信

  1. 系统调用和应用接口编程
    • 大多数操作系统使用系统调用(System call)的机制在应用程序和操作系统之间传递控制权。又称之为应用编程接口API
    • socket
    • socket
  2. 当应用进程(客户或者服务器)需要使用网络通信的时候,必须首先发出socket系统调用,请求操作系统为其创造一个套接字,这个调用的实际过程是请求操作系统把网络通信所需要的一切资源(存储空间,CPU时间,网络带宽等等)分配给该应用进程。操作系统为这些资源的总和用一个叫做套接字描述(socket descriptor)的号码,然后把该号码返回给应用进程。
  3. socket阶段:
    • socket
    1. 连接建立阶段:当套接字被创建后,它的端口号和IP地址都是空的,因此应用进程需要绑定套接字的本地端口号和IP地址,在调用绑定之后,还必须要调用监听把套接字设置为被动方式,以便于随时都能够用接受客户的服务请求。服务器接着就调用接受,以便把远地的客户进程发送过来的连接请求提取出来,,由于接受要完成的动作很多,这是因为一个服务器必须能够同时处理多个连接,这种服务器通常称为并发方式的工作服务器。然后指明对方的IP地址和端口号,就可以建立连接了。
    2. 客户端和服务端都在TCP上使用发送系统调用传送数据。以及使用接收系统调用接收数据。
    3. 在用户端与服务器端建立连接之前,服务器端一直处于监听模式下,后面的数据发送,接收等操作并不会执行,直到有客户端连接,才会执行数据的发送或者接收。这个等待操作就叫做阻塞。
    4. 连接释放:一旦客户端或者服务器端结束使用套接字,就把套接字撤销。这时候调用close释放连接和撤销套接字。
    • socket
    • UDP用户只提供无连接服务,因此不能使用监听和接受系统调用。