First, there are three agents involved in this client/server application: the client program, the server program, and a human user. The server application interacts with the client program. The client program interacts with the server program and the human user. The human user interacts with the client program. This interaction has been confused by using telnet in assignment 2. There a human and telnet acted as the client program. The roles of human user and the client program merged. This makes it seem like a human interacts with the server or that the client just passes questions from the server to the human. For example, the server asking the user to select one of n options. This is not the case. The client-server interaction is not the same as the human-client interaction. In general, the client-server interaction differs greatly from the human client interaction. One request by a human to the client may require multiple requests to the server and some processing by a client. For example, requesting one web page often requires multiple client-server interactions. The syntax of the human-client interaction can be vastly different than the syntax of the client-server interaction. For example, the user interacts with Netscape browser via mouse clicks, the browser interacts with a server via HTTP. The protocol has to be parsable by a computer.
Second, the list of five actions required of the airline reservation system
does not necessarily map to a protocol with just five requests. Just who
is allowed to cancel a reservation? (But Mr Smith you canceled your
reservation last night seconds before Mr Jones reserved a seat on the now
full plane.)
Third, don't forget hinges. Any protocol that is successful, will probably
live long enough to require additions and extensions. Design the protocol
to make it easy to extend.