Skip to content

Commit

Permalink
reliability, resource sharing
Browse files Browse the repository at this point in the history
  • Loading branch information
obonaventure committed Sep 12, 2013
1 parent 1cf1614 commit a9f53a7
Show file tree
Hide file tree
Showing 9 changed files with 596 additions and 308 deletions.
14 changes: 5 additions & 9 deletions book-2nd/README.rst
@@ -1,20 +1,16 @@

Computer Networking : Principles, Protocols and Practice, 2nd Edition
========================================================
=====================================================================

This is the current draft for the second edition of the Computer Networking : Principles, Protocols and Practice open-source ebook. This draft will be updated on a regular basis until the end of the year.


(c) Olivier Bonaventure, Universite catholique de Louvain, Belgium
http://perso.uclouvain.be/olivier.bonaventure

All the files in this subversion repository are licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.


The book was compiled on MacOS/X Snow Leopard using sphinx. inkscape is required to convert some of the images in png format. Most of the images will be converted to the SVG format to improve the portability of the textbook. python is also required. When US and British spelling disagree, we opt for US spelling.

The textbook was written on a Mac running Snow Leopard, but it should rebuild on other Unix based systems. Comments on issues in rebuilding the textbook are welcome.


The ebook compiles on MacOS/X Snow Leopard using sphinx. inkscape is required to convert some of the images in png format. Most of the images will be converted to the SVG format to improve the portability of the textbook. python is also required. When US and British spelling disagree, we opt for US spelling.


Olivier Bonaventure
Louvain-la-Neuve, winter 2013

4 changes: 2 additions & 2 deletions book-2nd/conf.py
Expand Up @@ -22,7 +22,7 @@

# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.#
extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinxcontrib.mscgen']
extensions = ['sphinx.ext.todo', 'sphinx.ext.pngmath', 'sphinxcontrib.mscgen','sphinx.ext.graphviz']
#'rst2pdf.pdfbuilder', 'rst2pdf.pdfmath', 'sphinx.ext.pngmath' ]
#,
# 'sphinx.ext.autodoc','rst2pdf.pdfbuilder']
Expand Down Expand Up @@ -72,7 +72,7 @@

# List of files that should not be automatically compiled by sphynx because they are included

exclude_patterns = [ '.#*', # emacs backups
exclude_patterns = [ '*.#*', # emacs backups
# 'intro/organisation.rst',
# 'intro/referencemodels.rst',
# 'intro/services-protocols.rst',
Expand Down
25 changes: 17 additions & 8 deletions book-2nd/index.rst
Expand Up @@ -6,25 +6,28 @@
Computer Networking : Principles, Protocols and Practice, 2nd edition
#####################################################################

.. only:: html


.. figure:: cnp3.png
:align: center
:scale: 60

.. only:: html

This is the current HTML version of the `Computer Networking : Principles, Protocols and Practice <http://inl.info.ucl.ac.be/cnp3/>`_. You can login with your yahoo, google or openid account to provide comments and suggestions to improve the text. You can also directly download the textbook in various formats from the links below :
This is the draft of the second edition of `Computer Networking : Principles, Protocols and Practice`. The ebook is being entirely rewritten until the end of 2013. It will be updated on a weekly basis. You can also directly download the current ebook draft in various formats from the links below :

- :download:`distrib/cnp3b.epub` suitable for viewing on tablets like ipad
- :download:`distrib/cnp3b.mobi` suitable for viewing on amazon kindle
- :download:`distrib/cnp3b.pdf` suitable for viewing and printing anywhere

The development of this edition of the textbook is done on `github
<https://github.com/obonaventure/cnp3>`_
The development of this edition of the textbook is carried out on `github
<https://github.com/obonaventure/cnp3/tree/master/book-2nd>`_

You can help to improve this ebook by :

- posting comments, suggestions or bug reports on github
- proposing new exercices or sending patches on the `CNP3 <https://listes-2.sipr.ucl.ac.be/sympa/subscribe/cnp3>`_ mailing list.
- posting comments, suggestions or bug reports on `github <https://github.com/obonaventure/cnp3/tree/master/book-2nd>`_
- proposing new exercices or sending patches on `github <https://github.com/obonaventure/cnp3/tree/master/book-2nd>`_

The source code of the entire textbook is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ and uses several `sphinx <http://sphinx.pocoo.org>`_ features. You can browse it from https://github.com/obonaventure/cnp3
The source code of the entire textbook is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ and uses several `sphinx <http://sphinx.pocoo.org>`_ features. You can browse it from `github <https://github.com/obonaventure/cnp3/tree/master/book-2nd>`_


Table of Contents
Expand All @@ -44,6 +47,12 @@ Part 1: Principles

principles/reliability
principles/network
principles/dv
principles/linkstate
principles/sharing
principles/transport


.. intro/organisation
Expand Down
13 changes: 6 additions & 7 deletions book-2nd/preface.rst
Expand Up @@ -6,18 +6,17 @@
Preface
=======

This is the current draft of the second edition of the `Computer Networking : Principles, Protocols and Practice`. The document is updated every week.

This textbook came from a frustration of its main author. Many authors chose to write a textbook because there are no textbooks in their field or because they are not satisfied with the existing textbooks. This frustration has produced several excellent textbooks in the networking community. At a time when networking textbooks were mainly theoretical, `Douglas Comer`_ chose to write a textbook entirely focused on the TCP/IP protocol suite [Comer1988]_, a difficult choice at that time. He later extended his textbook by describing a complete TCP/IP implementation, adding practical considerations to the theoretical descriptions in [Comer1988]_. `Richard Stevens`_ approached the Internet like an explorer and explained the operation of protocols by looking at all the packets that were exchanged on the wire [Stevens1994]_. `Jim Kurose`_ and `Keith Ross`_ reinvented the networking textbooks by starting from the applications that the students use and later explained the Internet protocols by removing one layer after the other [KuroseRoss09]_.
.. This textbook came from a frustration of its main author. Many authors chose to write a textbook because there are no textbooks in their field or because they are not satisfied with the existing textbooks. This frustration has produced several excellent textbooks in the networking community. At a time when networking textbooks were mainly theoretical, `Douglas Comer`_ chose to write a textbook entirely focused on the TCP/IP protocol suite [Comer1988]_, a difficult choice at that time. He later extended his textbook by describing a complete TCP/IP implementation, adding practical considerations to the theoretical descriptions in [Comer1988]_. `Richard Stevens`_ approached the Internet like an explorer and explained the operation of protocols by looking at all the packets that were exchanged on the wire [Stevens1994]_. `Jim Kurose`_ and `Keith Ross`_ reinvented the networking textbooks by starting from the applications that the students use and later explained the Internet protocols by removing one layer after the other [KuroseRoss09]_.

.. comment:: I'm having some trouble with the second last sentence,perhaps: "the organisation of the information on these websites are badly suited to student learning",or "is not best suited to facilitate student learning". I will propose more
.. The frustrations that motivated this book are different. When I started to teach networking in the late 1990s, students were already Internet users, but their usage was limited. Students were still using reference textbooks and spent time in the library. Today's students are completely different. They are avid and experimented web users who find lots of information on the web. This is a positive attitude since they are probably more curious than their predecessors. Thanks to the information that is available on the Internet, they can check or obtain additional information about the topics explained by their teachers. This abundant information creates several challenges for a teacher. Until the end of the nineteenth century, a teacher was by definition more knowledgeable than his students and it was very difficult for the students to verify the lessons given by their teachers. Today, given the amount of information available at the fingertips of each student through the Internet, verifying a lesson or getting more information about a given topic is sometimes only a few clicks away. Websites such as `wikipedia <http://wikipedia.org>`_ provide lots of information on various topics and students often consult them. Unfortunately, the organisation of the information on these websites is not well suited to allow students to learn from them. Furthermore, there are huge differences in the quality and depth of the information that is available for different topics.

The frustrations that motivated this book are different. When I started to teach networking in the late 1990s, students were already Internet users, but their usage was limited. Students were still using reference textbooks and spent time in the library. Today's students are completely different. They are avid and experimented web users who find lots of information on the web. This is a positive attitude since they are probably more curious than their predecessors. Thanks to the information that is available on the Internet, they can check or obtain additional information about the topics explained by their teachers. This abundant information creates several challenges for a teacher. Until the end of the nineteenth century, a teacher was by definition more knowledgeable than his students and it was very difficult for the students to verify the lessons given by their teachers. Today, given the amount of information available at the fingertips of each student through the Internet, verifying a lesson or getting more information about a given topic is sometimes only a few clicks away. Websites such as `wikipedia <http://wikipedia.org>`_ provide lots of information on various topics and students often consult them. Unfortunately, the organisation of the information on these websites is not well suited to allow students to learn from them. Furthermore, there are huge differences in the quality and depth of the information that is available for different topics.
.. The second reason is that the computer networking community is a strong participant in the open-source movement. Today, there are high-quality and widely used open-source implementations for most networking protocols. This includes the TCP/IP implementations that are part of linux_, freebsd_ or the uIP_ stack running on 8bits controllers, but also servers such as bind_, unbound_, apache_ or sendmail_ and implementations of routing protocols such as xorp_ or quagga_ . Furthermore, the documents that define almost all of the Internet protocols have been developed within the Internet Engineering Task Force (IETF_) using an open process. The IETF publishes its protocol specifications in the publicly available RFC_ and new proposals are described in `Internet drafts`_.
The second reason is that the computer networking community is a strong participant in the open-source movement. Today, there are high-quality and widely used open-source implementations for most networking protocols. This includes the TCP/IP implementations that are part of linux_, freebsd_ or the uIP_ stack running on 8bits controllers, but also servers such as bind_, unbound_, apache_ or sendmail_ and implementations of routing protocols such as xorp_ or quagga_ . Furthermore, the documents that define almost all of the Internet protocols have been developed within the Internet Engineering Task Force (IETF_) using an open process. The IETF publishes its protocol specifications in the publicly available RFC_ and new proposals are described in `Internet drafts`_.
.. This open textbook aims to fill the gap between the open-source implementations and the open-source network specifications by providing a detailed but pedagogical description of the key principles that guide the operation of the Internet. The book is released under a `creative commons licence <http://creativecommons.org/licenses/by/3.0/>`_. Such an open-source license is motivated by two reasons. The first is that we hope that this will allow many students to use the book to learn computer networks. The second is that I hope that other teachers will reuse, adapt and improve it. Time will tell if it is possible to build a community of contributors to improve and develop the book further. As a starting point, the first release contains all the material for a one-semester first upper undergraduate or a graduate networking course.
This open textbook aims to fill the gap between the open-source implementations and the open-source network specifications by providing a detailed but pedagogical description of the key principles that guide the operation of the Internet. The book is released under a `creative commons licence <http://creativecommons.org/licenses/by/3.0/>`_. Such an open-source license is motivated by two reasons. The first is that we hope that this will allow many students to use the book to learn computer networks. The second is that I hope that other teachers will reuse, adapt and improve it. Time will tell if it is possible to build a community of contributors to improve and develop the book further. As a starting point, the first release contains all the material for a one-semester first upper undergraduate or a graduate networking course.

As of this writing, most of the text has been written by `Olivier Bonaventure`_. `Laurent Vanbever`_, `Virginie Van den Schriek`_, `Damien Saucez`_ and `Mickael Hoerdt`_ have contributed to exercises. Pierre Reinbold designed the icons used to represent switches and Nipaul Long has redrawn many figures in the SVG format. Stephane Bortzmeyer sent many suggestions and corrections to the text. Additional information about the textbook is available at http://inl.info.ucl.ac.be/CNP3
The first edition of this ebook has been written by `Olivier Bonaventure`_. `Laurent Vanbever`_, `Virginie Van den Schriek`_, `Damien Saucez`_ and `Mickael Hoerdt`_ have contributed to exercises. Pierre Reinbold designed the icons used to represent switches and Nipaul Long has redrawn many figures in the SVG format. Stephane Bortzmeyer sent many suggestions and corrections to the text. Additional information about the textbook is available at http://inl.info.ucl.ac.be/CNP3

.. The overall objective of the book is to explain the principles and the protocols used in computer networks such as the Internet and also provide the students with some intuition about the important practical problems that often arise. The textbook was developed for the
.. The course follows a hybrid problem-based learning (:term:`PBL`) approach. During each week, the students follow a 2 hours theoretical course that describes the principles and some of the protocols. They also receive a set of small problems that they need to solve in groups. These problems are designed to reinforce the student's knowledge but also to explore the practical problems that arise in real networks by allowing the students to perform experiments by writing prototype networking code.
Expand Down
8 changes: 4 additions & 4 deletions book-2nd/principles/dv.rst
Expand Up @@ -61,7 +61,7 @@ The first condition ensures that the router discovers the shortest path towards
To understand the operation of a distance vector protocol, let us consider the network of five routers shown below.


.. figure:: svg/dv-1.png
.. figure:: ../../book/network/svg/dv-1.png
:align: center
:scale: 100

Expand All @@ -78,7 +78,7 @@ Assume that `A` is the first to send its distance vector `[A=0]`.

At this point, all routers can reach all other routers in the network thanks to the routing tables shown in the figure below.

.. figure:: svg/dv-full.png
.. figure:: ../../book/network/svg/dv-full.png
:align: center
:scale: 100

Expand All @@ -97,7 +97,7 @@ At this point, all routers have a routing table allowing them to reach all anoth

.. _fig-afterfailure:

.. figure:: svg/dv-failure-2.png
.. figure:: ../../book/network/svg/dv-failure-2.png
:align: center
:scale: 100

Expand Down Expand Up @@ -149,7 +149,7 @@ This technique is called `split-horizon`. With this technique, the count to infi
Unfortunately, split-horizon, is not sufficient to avoid all count to infinity problems with distance vector routing. Consider the failure of link `A-B` in the network of four routers below.

.. figure:: svg/dv-infinity.png
.. figure:: ../../book/network/svg/dv-infinity.png
:align: center
:scale: 100

Expand Down

0 comments on commit a9f53a7

Please sign in to comment.