Network application are the raisons d’etre of a computer network –if we couldn’t conceive of any useful applications, there wouldn’t be any need for networking protocols that support these applications. Since the internet’s inception, numerous useful and entertaining applications have indeed been created. These applications have been the driving force behind the internet’s success, motivating people in homes, schools, governments, and businesses to make the internet an integral part of their daily activities.
Internet applications include the classic text-based applications that became popular in the 1970s and 1980s : text email, remote access to computers, file transfers, and newsgroups. They include the killer application of the mid-1990s, the world wide web, encompassing web surfing, search, and electronic commerce. They include instant messaging and P2P file sharing, the two killer applications introduced at the end of the millennium. Since 2000, we have seen an explosion of popular voice and video applications, including voice-over-IP9VoIP) and video conferencing over IP such as Skype; user-generated video distribution such as YouTube; and movies on demand such as Netflix. During this same period, we have also seen the immergence of highly engaging multi-player online games, including Second Life and World of Warcraft. And most recently, we have seen the emergence of a new generation of social networking applications, such as Facebook, and Twitter, which have created engaging human networks on top of Internet’s network of routers and communication links. Clearly, there has been no slowing down of new and exciting internet applications. Perhaps some of the readers of this article will create the next generation of killer internet applications!
In this module we study the conceptual and implementation aspects of network applications. We begin by defining key application-layer concepts, including network services required by applications, clients and servers, processes, and transport-layer interfaces. We examine several network applications in detail, including the web, email, DNS, and peer-to-peer (P2P) file distribution. We then cover network application development, over both TCP and UDP. In particular, we study the socket API and walk through some simple client-server applications in Python.
The application layer is a particularly good place to start our study of protocols. It’s familiar ground. We’re acquainted with many of the applications that rely on the protocols we’ll study. It will give us a good feel for what protocols are all about and will introduce us to many of the same issues that we’ll see again when we study transport, network, and link layer protocols.