简单的客户-服务器交互过程
2009-05-21 23:36
134 查看
一组服务通常由一组原语(primitive)操作来描述。如果协议栈位于操作系统中(大多数是这种情况),则这些服务原语通常是一些系统调用。这些系统调用会进入到内核模式,然后在内核模式中控制操作系统,让操作系统发送必要的分组(包,packet)。
在一个简单的面向连接的客户-服务器模型中,可以考虑的原语有:
LISTEN:监听。属于阻塞操作,等待一个进入的连接。服务器执行。
CONNECT:连接。与一个正在等待的对等体建立连接。客户机执行。
RECEIVE:接收。属于阻塞操作,等待一个进入的报文。服务器/客户机执行。
SEND:发送。给对等体发送一个报文。客户机/服务器执行。
DISCONNECT:断链。终止一个连接。客户机/服务器执行。
过程如下:
0.服务器首先执行LISTEN,表明已经准备好接收客户发来的连接CONNECT.服务器在执行完LISTEN后,服务器进程被阻塞,直到有连接CONNECT请求到来为止。
1.客户机执行CONNECT,以与服务器建立连接。这个过程,客户机需要知道服务器,也就是目标的地址,如ip地址和端口。客户机在执行完CONNECT后,客户机进程被阻塞,直到有应答为止。
2.服务器收到CONNECT请求时,先后做两件事情:(1)解除监听进程的阻塞;(2)向客户机发送确认ACK报文。通常情况下,执行完(1)后,服务器就会马上执行RECEIVE,以等待客户机的数据请求,而这个时候ACK消息往往还没有到达客户端。RECEIVE调用会阻塞服务器。
3.客户机收到ACK报文后,解除阻塞恢复运行状态。此时,客户机和服务器均处于运行状态,一个CONNECT连接建立完毕。连接建立完后,客户端执行SEND,向服务器发送自己的数据请求,并执行RECEIVE,等待服务器的应答。
4.服务器收到SEND后,解除阻塞,处理请求的数据。处理完成之后,利用SEND将请求的答案送回给客户。
5.客户机收到ACK应答后,解除阻塞,然后检查服务器送来的答案。如果客户机还有请求,则继续发送,循环执行3、4。如果客户的任务已经完成,则向服务器发送DISCONNECT断链请求,同时客户机被挂起。
6.服务器收到DISCONNECT后,也会向客户机发送DISCONNECT作为响应,同时释放该连接。
7.客户机收到DISCONNECT后,客户进程恢复运行,该连接被正式断开。
在一个简单的面向连接的客户-服务器模型中,可以考虑的原语有:
LISTEN:监听。属于阻塞操作,等待一个进入的连接。服务器执行。
CONNECT:连接。与一个正在等待的对等体建立连接。客户机执行。
RECEIVE:接收。属于阻塞操作,等待一个进入的报文。服务器/客户机执行。
SEND:发送。给对等体发送一个报文。客户机/服务器执行。
DISCONNECT:断链。终止一个连接。客户机/服务器执行。
过程如下:
0.服务器首先执行LISTEN,表明已经准备好接收客户发来的连接CONNECT.服务器在执行完LISTEN后,服务器进程被阻塞,直到有连接CONNECT请求到来为止。
1.客户机执行CONNECT,以与服务器建立连接。这个过程,客户机需要知道服务器,也就是目标的地址,如ip地址和端口。客户机在执行完CONNECT后,客户机进程被阻塞,直到有应答为止。
2.服务器收到CONNECT请求时,先后做两件事情:(1)解除监听进程的阻塞;(2)向客户机发送确认ACK报文。通常情况下,执行完(1)后,服务器就会马上执行RECEIVE,以等待客户机的数据请求,而这个时候ACK消息往往还没有到达客户端。RECEIVE调用会阻塞服务器。
3.客户机收到ACK报文后,解除阻塞恢复运行状态。此时,客户机和服务器均处于运行状态,一个CONNECT连接建立完毕。连接建立完后,客户端执行SEND,向服务器发送自己的数据请求,并执行RECEIVE,等待服务器的应答。
4.服务器收到SEND后,解除阻塞,处理请求的数据。处理完成之后,利用SEND将请求的答案送回给客户。
5.客户机收到ACK应答后,解除阻塞,然后检查服务器送来的答案。如果客户机还有请求,则继续发送,循环执行3、4。如果客户的任务已经完成,则向服务器发送DISCONNECT断链请求,同时客户机被挂起。
6.服务器收到DISCONNECT后,也会向客户机发送DISCONNECT作为响应,同时释放该连接。
7.客户机收到DISCONNECT后,客户进程恢复运行,该连接被正式断开。
相关文章推荐
- 浏览器客户端与服务器的交互过程
- nfs服务器的简单搭建过程-记录方法
- web浏览器和web服务器的交互过程
- centos服务器上java环境和tomcat部署过程以及mysql简单修改
- 启动Rlogin客户和服务器的DNS的分组交换过程
- Android与服务器交互的简单例子
- 一个简单的客户-服务器的Socket通信程序
- 浏览器和服务器的交互过程
- C#网络编程之服务客户模式在控制台下的简单交互
- 转:简单的RTSP消息交互过程
- SSL简单交互过程
- 浏览器内核,浏览器和服务器的简单交互
- iseries 服务器简单备份,恢复过程
- Rtmp协议简单分析(二)——协议交互过程
- 服务器和浏览器交互过程
- centos服务器上java环境和tomcat部署过程以及mysql简单修改
- socket初接触---多用户服务器简单交互(下)
- Android客户端使用HttpURLConnection doGet与服务器数据交互简单示例
- AIX服务器启动过程简单介绍
- Android与JavaWeb服务器交互教程(3)-一个简单的Android项目