Giter Site home page Giter Site logo

obonaventure / cnp3 Goto Github PK

View Code? Open in Web Editor NEW
501.0 41.0 91.0 396.1 MB

Computer Networking : Principles, Protocols and Practice (first and second edition, third edition is being written on https://github.com/cnp3/ebook)

Home Page: https://www.computer-networking.info

Makefile 19.56% Python 46.15% Shell 14.77% HTML 0.75% CSS 3.37% JavaScript 2.46% C 10.21% PHP 1.61% Perl 0.72% Rich Text Format 0.39%
networking ebook tcp ip ipv6 bgp ospf ethernet wifi rip

cnp3's People

Contributors

363734 avatar anpar avatar blegat avatar clfarron4 avatar dhoedtm avatar egrosclaude avatar fknop avatar jadinm avatar jcordero1984 avatar jorisvh avatar kaskales avatar leonardjulemont avatar llantsog avatar marcelwaldvogel avatar matttbe avatar motateko avatar npettiaux avatar obonaventure avatar oliviertilmans avatar peiffap avatar rbauduin avatar rodescamps avatar screami avatar target0 avatar tdestouches avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cnp3's Issues

Wrong distance vector

In the second example of the "Distance vector routing" section (when we suppose that the link between A and B fails on the first figure), the distance vector that A sends contains twice D and no B. The first D should be replaced by B.

right or left ?

In 'cnp3 / book-2nd / principles / reliability.rst' file, section 'The physical layer', after the voltage explication, we found a description about a schema and It is says that "Starting from the right, the first horizontal arrow represents the request to transmit one bit of information". When I'm looking at the schema, I think we are starting from the left.

Transport Layer - Data transfer

In the Figure following "Reliable transport protocols also use sequence numbers and acknowledgement numbers" ...

In this Figure, DATA.req and DATA.ind are made with data "abcde". But while sending message, only "abcd" appears. I think we should add char 'e', and if we do this, we should also change sequence number of the following message.

Typo pdf p8 first paragraphe

Currently:
"From a Computer Science viewpoint, the physical transmission of information through a wire is often considered has a black box that allows to transmit bits."

Should probably be:
"From a Computer Science viewpoint, the physical transmission of information through a wire is often considered as a black box that allows to transmit bits."

Sven

Maybe miss some explanations

Part 1 : connecting two hosts: the datalink layer : Reliable data transfer on top of an imperfect link :

just after the note on CRC and checksum, you begin to spear about timer that aren't sufficient enough to recover from loss. But there were any paragraph to introduce what timer is and what it does.

Also, the two pictures about timer are on the same line as text so part of word are at the right of the pictures and it make it seems like parts are missing until we found this beginning of word.

Not the good variable in split-horizon pseudocode

Part 1: Building a network : The control plane : Distance vector routine :

When you talk about split-horizon, there are two piece of pseudo code where you iterate for l in interface, but in the while loop you are using i instead of l in the if condition if (R[d].link != i).

HTTP: use example prefix

In protocols/http.rst, the address 2001:6a8:3080:3::2 is used in an example.

Perhaps it should be changed, using the RFC3849 example prefix 2001:db8

BGP: number of domains

Protocols/bgp.rst:

the Internet is composed of more than 30,000 different networks

correct of course, but the number is now probably closer to 45 000, so perhaps it needs to be updated

CNP3 Logo

It would be nice to have a logo for the second edition of the ebook. Suggestions are more than welcome

IPv6 fragmentation example

In the section "The network layer", for Figure "IPv6 fragmentation example".

I think offset on the second figure should be 125 and not 126.

Error in the course

In the Part 1. Building a network -> The datagram organisation -> Computing forwarding tables. In the second paragraph before the "Flat or hierarchical addresses" part. It's written "When R1 receives the packet, it adds its own address to the record route and forwards a copy to R2 and another to R2. R2 receives the packet, adds itself to the record route and forwards it to R3. R3 receives two copies of the packet."

The right thing is "When R1 receives the packet, it adds its own address to the record route and forwards a copy to R2 and another to R3. R2 receives the packet, adds itself to the record route and forwards it to R3. R3 receives two copies of the packet."

record routes

In the "Building a network" principle, section "Computing forwarding tables", we found an example about control packet.
It says that "The first contains the [R1,R2] record route and the second [R1,R2,R3]. In the end, B will receive two control packets containing [R1,R2,R3,R4] and [R1,R3,R4] as record routes."
But, in the end, if B will receive two control packets containing [R1,R2,R3,R4] and [R1,R3,R4], how R3 can receive [R1,R2] and [R1,R2,R3] ? I think that the second control packet containing only [R1] because R3 can't be in the control packet receiving by R3.

In addition, in the same section, it says that " it adds its own address to the record route and forwards a copy to R2 and another to R2". I think the second is R3.

Wrong variable in distance vector routing first code

Part1 : 2 Building a network : 2.3 the controle plane : distance vector routing

Last two lines of the first pseudo-code : it's the variable i instead of interface in the last line or it is interface instead of i in the for loop.

figures have a double reference

For the section "Applications", a lot of figures have a double reference (for example : "figure 2.28 : figure 129 : ...")

Mispell in "Building a Network" section

Between fig 20 and fig 21, when the link between A and B fails, the vector sent by A should be [A=0, B=infinite, C=infinite, D=1, E=infinite] and not [A=0, D=infinite, C=infinite, D=1, E=infinite].

Pseudo-code for TCP congestion

In the pseudo-code, I think the else statement that contains "dupacks = 0" is misindentited. It should be the else clause of the "if tcp.ack==snd.ack" and not of the "if dupacks==3".

US spelling Vs. British spelling

I saw in the README.rst that "When US and British spelling disagree, we opt for US spelling.".

In the "Building a network" section, "Sharing resources" section, "The IPv6 subnet" section, and "Interdomain routing" section, I noticed that both "neighbour" (British spelling) and "neighbor" (US spelling) were used.

DHCP: word missing at end of sentence

Protocols/ipv6b.rst : word(s) missing at the end of the sentence

DHCP allows a host to automatically retrieve its assigned IPv6 address, but relies on.

should probably read

... relies on a server.

TLS ?

Any plans of adding something on TLS ? Or is that outside the scope of the book ?

Pseudo-Code error

In the Pseudo-code of the CSMA/CD, at the 10th line, you have:
" r = random(0, 2k - 1) * slotTime "

and the next line:

"wait(r*slotTime)"

the host will then wait random(0, 2k-1) * (slotTime * slotTIme) while it should wait random(0, 2k-1) * slotTime

M.C.

wrong segment in three-way handshake

Part 1: The transport Layer : The transport layer : Connection establishment :

in the explanations about the three-way handshake, point 3 :
You say " The initiating entity receives the CA segment. The acknowledgement number of this segment confirms that the remote entity has correctly received the CA segment."
But I think it is "The initiating entity receives the CA segment. The acknowledgement number of this segment confirms that the remote entity has correctly received the CR segment. "

Missing schema

In the section about the IPv6 packet format, we found this sentence:
"For example, an IPv6 packet that contains an SCTP segment would appear as :"
but we find any schema after that.

Little change in pseudocode for distance vector

After "This count to infinity problem occurs because router A advertises to router D" ..., we find two pseudo-codes which describe sending distance vectors.

In this two pseudocode blocs, lines "send(v)" and comment "# end for d in R[]" should exchange their position. (First the comment then the line code because the for loop ends just before send(v) )

Figures - Distance vector routing

"Unfortunately, split-horizon, is not sufficient to avoid all count to infinity" ...

In the Figure just bellow, (Figure "Count to infinity problem") content of message send by B should be C=inf and E=1.
Content of message from C should be B=1 and C=0.

DHCPv6 lab

The DHCPv6 net kit lab is broken and needs to be fixed. This is likely an issue with the dizzler installation

Missing word

In the note concerning "Forwarding tables versus routing tables" ...
There is one word missing word in the first line.

Routers usually maintain at least two data structures that contain information over/about the reachable destinations.

IPv6 in Network Layer

In section "The network layer"

Paragraph beginning by "There is one difficulty with the utilisation of these IPv6 prefixes".

IPv6 address from ULG isn't 2001:6a8:2d80::/32 but 2001:6a8:2d80::/48.

And following paragraph says "The network is now as shown below with a direct link between UCL and the commercial ISP" an there are no corresponding Figure.

Ack in data transfer - Transport Layer

In Data transfer paragraph from transport layer section.
-> Figure "Dynamic receiving window"

I think last Ack on the Figure should be C(OK,1,w=3) and not C(OK,2,w=3)

IPv4 or IPv6

In the "Utilisation of the BGP nexthop attribute" section, it says that "Each router is attached to a local IPv4 subnet that it advertises using BGP" but, according to the figure, I think it is IPv6 and not IPv4.

SDU not explicated

The first time we hear about SDU is the Recovering from transmission errors point from the part connecting two hosts but it is first mention that it means Service Data Unit in the transport layer part.

Distance Vector

In "The control plane" section, after the figure 2.19, it says that "E sends its distance vector [E=0,D=1,A=2,C=2]" but the previous information is sended by C ([C=0]) to B and E. So, E know that he can access C with one unit cost. Then, I think that E sends C=1 and not C=2.

Virtual circuit example

I think there is a mistake at the example given. It's said that at page 42 on the PDF that we want to have two different circuits: R1->R3->R4->R2->R5 and R2->R1->R3->R4->R5.

However, with the current label forwarding tables given for the routers, I find that we have the circuit R1->R3->R4->R5 and R2->R1->R3->R4->R2->R5.

To fix that, I notice that if we change the label forwarding table of R4 like this below, I obtain the wanted paths.

index outgoing interface label
0 ->R5 0
1 ->R2 1

Miss part of the figure

Part 1 : building a network : the datagram organisation :

There is no host named A in the first figure, we can guess that it is at the left of the figure but it isn't.

Also, there isn't any F host.

Some pictures, like this one, are also a little bit too small when we print it.

Selective Repeat

"The figure below illustrates the operation of selective repeat when frames are lost." ...

The two following paragraph refere to two different Figures, but only one is displayed. (and should be one paragraph lower)

optical fiber: mixup between monomode and multimode fibers characteristics

Current online version reads:
"Due to the different modes of propagation of light, monomode fibers are limited to distances of a few kilometers while multimode fibers can be used over distances greater than several tens of kilometers."

Must it not read as follows:
"Due to the different modes of propagation of light, multimode fibers are limited to distances of a few kilometers while monomode fibers can be used over distances greater than several tens of kilometers."

regards,

Sven

Simple Typo

In source routing, (around page 88 of the ePub)

« When R1 receives the packet, it adds its own address to the record route and forwards a copy to R2 and another to R2 »

I think it should be R2 and R3.

(Happy New Year !)

"Building networks" concept clarification

  • For session 2 (Building a network), distinctions and hierarchies between different concepts are not very clear, in particular those concerning virtual circuits vs datagrams, linkstate vs distancevector, fwding tabl vs label switching. There could be added a few diagrams in CNP3 to show the relationship between those concepts in a more explicit way.

DHCP: duplicate info in intro

In protocols/ipv6b.rst, the introduction on DHCP contains duplicate information.

IPv6 networks also support the Dynamic Host Configuration Protocol. The IPv6 extensions to DHCP are defined in RFC 3315. ...

An alternative is the Dynamic Host Configuration Protocol (DHCP)...

Missing schema

In the "Ethernet" section, it says that "The Ethernet frame starts with a preamble (not shown in the figure below)" but we found any schema of the Ethernet frame.

SLAAC instead of SLAC

protocols/ipv6b.rst mentions

Stateless Address Configuration (SLAC).

The Stateless Address Configuration (SLAC) mechanism...

but this should be

Stateless Address Autoconfiguration (SLAAC).

The Stateless Address Autoconfiguration (SLAAC) mechanism...

Miss figure

Part 1 : Building a network : virtual circuit organisation :

after the four label forwarding table, it is said " the figure below shows the path followed by the packets on R1->R3->R4->R2->R5 path in red with on each arrow the label used in the packets." but there isn't any figure with red path.

Sharing resources: typo

principles/sharing.rst

Title is "Sharing ressources", should be "Sharing resources" (only one 's' in English)

Also misspelled a few times in the text below the title

DNS: extensibility example

protocols/dns.rst (bottom of the page)

This allows, for example, a DNS server that only supports IPv6 to ignore the IPv4 addresses listed in the DNS reply for www.ietf.org while still being able to correctly parse the Resource Records that it understands.

I guess it should read "DNS client" instead of "DNS server", since it's about the reply ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.