6.8  应用进程跨越网络的通信

6.8.1  系统调用和应用编程接口

  • 大多数操作系统使用系统调用(system call) 在应用程序和操作系统之间传递控制权。

  • 为什么要把控制权传递给操作系统?

  • 系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统。 


多个应用进程 使用系统调用的机制 



应用编程接口 API (Application Programming Interface) 

  • 当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。

  • 此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。

  • 内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。

  • 系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,又称为应用编程接口 API。 


应用进程通过套接字接入到网络 


6.8.2  几种常用的系统调用 

套接字被创建后,它的端口号和IP地址都是空的,服务器端调用bind把熟知端口号和本地IP地址填到套接字中

  • int bind(int socket, struct sockaddr *address, int addr_len)

  • int listen(int socket, int backlog)

  • int accept(int socket, struct sockaddr *address, int *addr_len)

服务器调用 listen把套接字设置为被动方式,以便随时接受客户的服务请求。

客户端调用connect

  • int connect(int socket, struct sockaddr *address, int addr_len)

服务器调用 accept提取客户发来的连接请求


应用进程跨越网络的通信视频