Advanced UNIX programming Fall 2002, lecture 16 Instructor: Ashok Srinivasan Acknowledgements: The syllabus and power point presentations are modified versions of those by T. Baker and X. Yuan Announcements • Reading assignment – Chapters 1 and 2 of Unix Network programming – Chapters 3 and 4 • No quiz Oct 7 Week 6 Topics • Introduction to UNIX network programming – Introduction – Overview of TCP/IP Introduction • Application layer (telnet, ssh, http, ftp, etc) – Things that we use daily • Transport layer (TCP, UDP) – Allows processes (on different machines) to communicate (reliably or unreliably) with each other • Network layer (IPv4, IPv6) – Handles routing, fragmentation, and internetworking • Host to Network layer (Ethernet) – Communication between two machines that are directly connected Introduction ... continued • The entities that implement each layer can be processes, system calls, hardware, etc • Protocol – Rules that govern how peer entities in the same layer (on different machines) communicate • Each layer provides services to the upper layer defined by the service interface – Example: TCP service interface is defined by a set of system calls • socket, bind, listen, accept, connect, read and write Overview of TCP/IP • Some TCP/IP protocols: – TCP: transmission control protocol • Connection-oriented, reliable, full duplex, byte stream service – UDP: User datagram protocol • Connectionless, unreliable – IPv4: Internet Protocol, version 4. • The protocol that glues the Internet together. • Provides (unreliable) packet delivery service for TCP, UDP, ICMP, IGMP – IPv6: Internet Protocol, version 6. • 128 bits address, newer version of Internet Protocol Overview of TCP/IP ... continued • Some TCP/IP protocols ... continued – ICMP: Internet Control Message Protocol • Handles errors and control information for IP (ping, traceroute) – IGMP: Internet Group Management Protocol • Used in IP multicast • Socket Programming – The use of TCP and UDP • Can also access the lower layers directly (raw socket) UDP: User Datagram Protocol • Interface • socket, bind, sendto, recvfrom • Can also use the TCP interface (connect, read, write) • Unreliable, connectionless service – Data may be lost, duplicated, or reordered – Client and server do not have any long term relation • Can perform (unreliable) multicast TCP: Transmission control protocol • Interface – socket, bind, listen, accept, connect, read, write, close • An analogy Socket: telephone Bind: assign telephone number to a telephone Listen: turn on the ringer so that you can hear the phone call Connect: dial a phone number Accept: answer the phone Read and write: listening and talking Close: Reliable communication • Implementing reliable communication may require – Sequence number, acknowledgement, retransmission, timeout (RTT) – Sliding window protocol for efficiency – Flow control – Connection establishment and release TCP connection establishment and termination • TCP connection establishment – Three way handshake – Figure 2.2 • TCP connection termination – Four way handshake • Can release the connection reliably • Practical solution: make the client wait for a while – Figure 2.3 TCP state transition Diagram (Figure 2.4 from text) Packet exchange for TCP connection • See Figure 2.5 from text Identifying a TCP connection • Need both – Source IP address and port – Destination IP address and port