Review NameAddress conversion What does the domain name

  • Slides: 9
Download presentation
 • Review: Name/Address conversion: – What does the domain name system do? –

• Review: Name/Address conversion: – What does the domain name system do? – Which system calls use the domain name system? – How does it work? – How does getservbyname get the service information?

 • Today’s topic: Out-of-band data. – What is out of band data? •

• Today’s topic: Out-of-band data. – What is out of band data? • A communication channel can be used to transfer both regular data or control data. • Control data (packets, signal) control the behavior of a communication channel. – E. g VC establishment packets in ATM are control packets. • Control data usually need attention as soon as possible (have higher priority than regular data). • In-band/out of band control data – Appear as regular data or appear differently – Use the same communication channel / use different communication channels – true out of band data need a separate communication channel.

 • Since it is typical to have control information passing around in a

• Since it is typical to have control information passing around in a network, a communication channel usually needs to support out of band data. • Handling out of band data is very system dependent. • Focus on TCP out of band data. • TCP does not have true out of band data. TCP emulates out of band data using the urgent mode.

 • Sending/Receiving out of band data in TCP: – int send(int s, const

• Sending/Receiving out of band data in TCP: – int send(int s, const void *msg, int len, unsigned int flags); – int recv(int s, void *buf, int len, unsigned int flags); • Flags = MSG_OOB • What happens when issuing send (sockfd, “a”, 1, MSG_OOB)? • The sender side: – An OOB byte “a” is appended to the end of the buffer – The urgent pointer is set to the next available location – The next segment will have its URG flag set in the TCP header (but may not have the actual OOB byte). » The urgent notification is always sent even if the OOB byte is not sent.

– What happens when issuing send (sockfd, “a”, 1, MSG_OOB)? • The receiver side:

– What happens when issuing send (sockfd, “a”, 1, MSG_OOB)? • The receiver side: – When receiving a segment with URG flag set, TCP checks whether it is a new out of band data (first time flag). Only the first segment is used to notify that new out of band data have arrived. – SIGURG is sent to the owner of the socket and if the process is blocked in a select waiting for an exception condition of the socket, the select returns. » At the time of notification, the data may or may not arrive. – When the actual OOB byte arrives, it can be pulled out of band or left inline. (SO_OOBINLINE). » TCP maintains one byte out of band buffer. » The byte can be retrieved by recv, recvfrom and recvmsg with MSG_OOB flag.

– What happens when issuing send (sockfd, “abc”, 3, MSG_OOB)? • What is the

– What happens when issuing send (sockfd, “abc”, 3, MSG_OOB)? • What is the OOB byte? – Following is a set of programs showing the behavior of TCP out of band data. • See example 1. c for sending OOB data • See example 2. c for notifying the arrival of out of band data through SIGURG. • See example 3. c for notifying the arrival of OOB byte through select. Notice the different behavior for linux of solaris for example 3. c. • What happens to the byte stream when OOB data are used? See example 4. c and example 5. c – What happens when two OOB bytes are sent?

– See example 5 -1. c for the use of OOBINLINE. – See example

– See example 5 -1. c for the use of OOBINLINE. – See example 6. c and example 7. c, what will be the outputs for example 7. c?

– TCP out of band data summary: • When is the notification of out

– TCP out of band data summary: • When is the notification of out of band data sent? • When are the actual data sent? • TCP has only one urgent pointer per connection: what is the implication? • TCP has only one byte out of band data buffer, what is the implication? – An application of TCP OOB: • Client-server heartbeat functions: figure out whether the client and the server are still connected. Example 8. c and example 9. c

Client server Sig_alrm() { if (++cnt > 5) exit; send(MSG_OOB); alarm(1); } Sig_urg() {

Client server Sig_alrm() { if (++cnt > 5) exit; send(MSG_OOB); alarm(1); } Sig_urg() { recv(MSG_OOB); send(MSG_OOB); cnt = 0 } Sig_urg() { recv(MSG_OOB); cnt = 0; } Sig_alrm() { if (++cnt > 5) exit; alarm(1) }