应用层总结-系统调用和应用编程接口

1.系统调用 (system call)

大多数操作系统使用系统调用机制在应用程序和操作系统之间传递控制权
对程序员来说,系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统(用户态->内核态)
这里写图片描述

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

1)作用:应用进程的控制权和操作系统的控制权进行转换的接口
①当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口
②此接口再将控制权传递给计算机的操作系统,操作系统将此调用转给某个内部过程,并执行所请求的操作
③内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程

3.套接字

1)套接字的作用
①当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程
②操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程,应用进程所进行的网络操作都必须使用这个号码
③通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源
这里写图片描述
这里写图片描述
2)连接建立阶段
①套接字被创建后,其端口号和 IP 地址都是空的,应用进程要调用 bind (绑定)来指明套接字的本地地址(在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中)
②服务器调用 bind 后,还必须调用 listen (收听) 把套接字设置为被动方式,以便随时接受客户的服务请求(UDP 服务器由于只提供无连接服务,不使用 listen 系统调用)
③客户进程发送连接请求后,服务器紧接着调用 accept (接受),以把客户进程发来的连接请求提取出来(系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接)

3)数据传输阶段
客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据

4)连接释放阶段
一旦客户或服务器结束使用套接字,就把套接字撤消,此时调用 close 释放连接和撤销套接字
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_31759205/article/details/80633469