There is no single right answer to this question. Many protocols would do the trick. Here’s a simple answer below:
Messages from ATM machine to Server
Msg name
purpose
HELO
Let server know that there is a card in the ATM machine and ATM card transmits user ID to Server
PASSWD
User enters PIN, which is sent to server
BALANCE
User requests balance
WITHDRAWL
User asks to withdraw money
BYE
user all done
Messages from Server to ATM machine (display)
Msg name
purpose
PASSWD
Ask user for PIN (password)
OK
last requested operation (PASSWD, WITHDRAWL)
ERR
last requested operation (PASSWD, WITHDRAWL) in ERROR
AMOUNT
sent in response to BALANCE request
BYE
user done, display welcome screen at ATM
Correct operation:
client
server
HELO (userid)
--------------> (check if valid userid)
<------------- PASSWD
PASSWD
--------------> (check password)
<------------- OK (password is OK)
BALANCE -------------->
<------------- AMOUNT
WITHDRAWL
--------------> check if enough $ to cover withdrawl
<------------- OK
ATM dispenses $
BYE-------------->
<-------------BYE
In situation when there’s not enough money:
client
server
HELO (userid)
--------------> (check if valid userid)
<------------- PASSWD
PASSWD
--------------> (check password)
BALANCE -------------->
<------------- AMOUNT
ATM
<------------- OK (password is OK)
WITHDRAWL
--------------> check if enough $ to cover withdrawl
<------------- ERR (not enough funds)
error msg displayed
-------------->no $ given out
BYE -------------->
<------------- BYE
中文
这里不仅有一种解法,许多协议都可以满足条件,以下给出一个简单的版本
从ATM机到服务器的消息
消息名称
目的
HELO
让服务器知道ATM机上有卡,ATM卡将用户ID传送给服务器
PASSWD
用户输入 PIN,发送到服务器
BALANCE
用户请求取款
WITHDRAWL
用户请求取款的金额
BYE
完成服务
从ATM机到服务器的消息(显示屏打印)
消息名称
目的
PASSWD
向用户询问密码
OK
上次请求的动作(输入密码,取款)完成了
ERR
上次请求的动作(输入密码,取款)失败了
AMOUNT
输入请求金额
BYE
完成,打印下次光临
正确操作:
客户端
总服务器
HELO (userid)
--------------> (检查是用户否合法)
(请输入密码)
<------------- PASSWD
PASSWD
--------------> (检查密码)
密码正确
<------------- OK (密码正确)
BALANCE -------------->
(请求取款)
(输入取款金额)
<------------- AMOUNT
WITHDRAWL
--------------> (检查余额是否足够)
(账户余额足够)
<------------- OK
(ATM 发钱)
BYE-------------->
(服务结束)
(服务结束)
<-------------BYE
在用户没有足够金额下的情况
客户端
总服务器
HELO (userid)
--------------> (检查是用户否合法)
请输入密码
<------------- PASSWD
PASSWD
--------------> (检查密码)
密码正确
<------------- OK (密码正确)
BALANCE -------------->
(请求取款)
(输入取款金额)
<------------- AMOUNT
WITHDRAWL
--------------> (检查余额是否足够)
<------------- ERR (没有足够金额)
(打印金额不错的消息)
-------------->(无金钱支出)
BYE -------------->
服务结束
服务结束
<------------- BYE
答案解析
可以看出,答案首先定义了几个名词的简写,随后在客户端与服务器之间做交互应答(如图1-2)
Problem 2
对于N端电路发送P个分组,请计算端到端距离为L链路速度为R的时延
一个分组从一个路由器到另外一个路由器的时间为 L R \frac{L}{R} RL,在时刻 N ∗ L R \frac{N*L}{R} RN∗L第一个分组到达目的地,第二个分组储存在倒数第一个路由器中。第三个分组储存在倒数第二个路由器中,以此类推。在时刻 N ∗ L R + L R \frac{N*L}{R}+\frac{L}{R} RN∗L+RL时第二个分组到达目的地,同时第三个分组储存在倒数第一个分组中以此类推,根据这个逻辑,我们可以知道当时刻 N ∗ L R + ( P − 1 ) ∗ L R = ( N + P − 1 ) ∗ L R \frac{N*L}{R}+\frac{(P-1)*L}{R}=\frac{(N+P-1)*L}{R} RN∗L+