简单的客户-服务器交互过程
来源:互联网 发布:数据之巅涂子沛云盘 编辑:程序博客网 时间:2024/06/15 01:53
一组服务通常由一组原语(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后,客户进程恢复运行,该连接被正式断开。
- 简单的客户-服务器交互过程
- 客户服务器交互简单的例子(1)有待改进
- TCP客户/服务器程序交互过程图解
- 简单的TCP客户-服务器
- 客户服务器交互简单的例子改进(1)人有待改进
- 客户端-服务器的简单交互
- 数据报形式的无连接客户/服务器交互
- 简单的服务器和客户程序
- 简单的Linux客户-服务器网络程序
- 命名管道--简单的客户服务器通信
- TCP客户端与服务器的交互过程
- 浏览器客户端与服务器的交互过程
- 浏览器客户端与服务器的交互过程
- 浏览器与服务器的交互过程
- JavaWeb - 浏览器与服务器交互的过程
- JavaWeb - 浏览器与服务器交互的过程
- 浏览器和服务器的交互过程
- js客户与服务器交互技巧
- 析构函数中抛异常
- 热门话题
- Samba(MIPSEL)交叉编译
- 强大的FireBug
- MIPSel PPoE拨号上网
- 简单的客户-服务器交互过程
- 明天就要参加云计算大会了
- SOA学习路线图之SOA概念层次
- Makefile输出分析:
- JSF2.0的新特性
- OEM
- 晚绑定
- h.264 源码
- 段错误的解决