forked from cnp3/ebook
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
2dd32b9
commit a2141cb
Showing
48 changed files
with
11,281 additions
and
1,618 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
# SOME DESCRIPTIVE TITLE. | ||
# Copyright (C) 2019 Olivier Bonaventure | ||
# This file is distributed under the same license as the Computer networking : Principles, Protocols and Practice package. | ||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
# | ||
#, fuzzy | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Computer networking : Principles, Protocols and Practice 3\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2021-05-17 09:55+0200\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: 8bit\n" | ||
|
||
#: ../../exercises/dns.rst:7 | ||
msgid "Application layer" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:11 | ||
msgid "This is an unpolished draft of the third edition of this e-book. If you find any error or have suggestions to improve the text, please create an issue via https://github.com/CNP3/ebook/issues?milestone=5 or help us by providing pull requests to close the existing issues." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:15 | ||
msgid "The DNS" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:17 | ||
msgid "The Domain Name System (DNS) plays a key role in the Internet today as it allows applications to use fully qualified domain names (FQDN) instead of IPv4 or IPv6 addresses. When using the DNS, it is important to remember the role of the different types of DNS records." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:25 | ||
msgid "Several software tools can be used to send queries to DNS servers. For this exercise, we use dig_ which is installed on most Unix/Linux systems." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:27 | ||
msgid "A typical usage of dig is as follows:" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:33 | ||
msgid "where" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:35 | ||
msgid "`server` is the IP address or the name of a DNS server or resolver" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:36 | ||
msgid "`type` is the type of DNS record that is requested by the query such as `NS` for a nameserver, `A` for an IPv4 address, `AAAA` for an IPv6 address, `MX` for a mail relay, ..." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:37 | ||
msgid "`fqdn` is the fully qualified domain name being queried" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:39 | ||
msgid "dig_ also contains some additional parameters and flags that are described in the man page. Among these, the `+trace` flag allows to trace all requests that are sent when recursively contacting DNS servers." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:41 | ||
msgid "What are the IP addresses of the resolvers that the `dig` implementation you are using relies on [#fdig]_ ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:43 | ||
msgid "What are the nameservers that are responsible for the `info` top-level domain ? Is it possible to use IPv6 to query them ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:45 | ||
msgid "What is the IPv6 address that corresponds to `www.computer-networking.info` ? Which type of DNS query does `dig` send to obtain this information ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:48 | ||
msgid "When run without any parameter, `dig` queries one of the root DNS servers and retrieves the list of the names of all root DNS servers. For technical reasons, there are only 13 different root DNS servers. This information is also available as a text file from http://www.internic.net/zones/named.root. What are the IPv6 addresses of all these servers?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:50 | ||
msgid "Assume now that you are residing in a network where there is no DNS resolver and that you need to perform your query manually starting from the DNS root." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:52 | ||
msgid "Use `dig` to send a query to one of these root servers to find the IPv6 address of the DNS server(s) (NS record) responsible for the `org` top-level domain" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:53 | ||
msgid "Use `dig` to send a query to one of these DNS servers to find the IP address of the DNS server(s) (NS record) responsible for `root-servers.org`" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:54 | ||
msgid "Continue until you find the server responsible for `www.root-servers.org`" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:55 | ||
msgid "What is the lifetime associated to this IPv6 address ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:57 | ||
msgid "Perform the same analysis for a popular website such as `www.google.com`. What is the lifetime associated to the corresponding IPv6 address ? If you perform the same request several times, do you always receive the same answer ? Can you explain why a lifetime is associated to the DNS replies ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:59 | ||
msgid "Use `dig` to find the mail relays used by the `uclouvain.be` and `student.uclouvain.be` domains. What is the `TTL` of these records ? Can you explain the preferences used by the `MX` records. You can find more information about the MX records in :rfc:`5321`." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:61 | ||
msgid "When `dig` is run, the header section in its output indicates the `id` the DNS identifier used to send the query. Does your implementation of `dig` generates random identifiers ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:73 | ||
msgid "A DNS implementation such as `dig`, and more importantly a name resolver such as bind_ or unbound_, always checks that the received DNS reply contains the same identifier as the DNS request that it sent. Why is this so important ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:75 | ||
msgid "Imagine an attacker who is able to send forged DNS replies to, for example, associate `www.bigbank.com` to his own IP address. How could he attack a DNS implementation that" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:77 | ||
msgid "sends DNS requests containing always the same identifier" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:78 | ||
msgid "sends DNS requests containing identifiers that are incremented by one after each request" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:79 | ||
msgid "sends DNS requests containing random identifiers" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:81 | ||
msgid "The DNS protocol can run over UDP and over TCP. Most DNS servers prefer to use UDP because it consumes fewer resources on the server. However, TCP is useful when a large answer is expected. Compare `time dig +tcp` and `time dig` to query a root DNS server. Is it faster to receive an answer via TCP or via UDP ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:84 | ||
msgid "Besides `dig`, another way to analyze the DNS is to look at packet traces with tools such as `wireshark <https://www.wireshark.org>`_ or `tcpdump <https://www.tcpdump.org>`_ These tools can capture packets in a network and also display and analyze their content. `Wireshark <https://www.wireshark.org>`_ provides a flexible Graphical User Interface that eases the analysis of the captured packets. The three questions below should help you to better understand the important fields of DNS messages." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:93 | ||
msgid "The next three questions ask you to go one step further by predicting the values of specific fields in the DNS messages." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:101 | ||
msgid "When a client requests the mapping of a domain name into an IP address to its local resolver, the resolver may need to query a large number of nameservers starting from the root nameserver. The three exercises below show packet traces collected while the resolver was resolving the following names: `www.example.com`, `www.google.com` and `www.computer-networking.info`. If you understand how the DNS operates, you should be able to correctly reorder those packet traces." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:112 | ||
msgid "Footnotes" | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:113 | ||
msgid "On a Linux machine, the *Description* section of the `dig` man page tells you where `dig` finds the list of nameservers to query." | ||
msgstr "" | ||
|
||
#: ../../exercises/dns.rst:115 | ||
msgid "You may obtain additional information about the root DNS servers from http://www.root-servers.org" | ||
msgstr "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
# SOME DESCRIPTIVE TITLE. | ||
# Copyright (C) 2019 Olivier Bonaventure | ||
# This file is distributed under the same license as the Computer networking : Principles, Protocols and Practice package. | ||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
# | ||
#, fuzzy | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Computer networking : Principles, Protocols and Practice 3\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2021-05-17 09:55+0200\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: 8bit\n" | ||
|
||
#: ../../exercises/email.rst:5 | ||
msgid "Internet email protocols" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:7 | ||
msgid "Many Internet protocols are ASCII_-based protocols where the client sends requests as one line of ASCII_ text terminated by `CRLF` and the server replies with one of more lines of ASCII_ text. Using such ASCII_ messages has several advantages compared to protocols that rely on binary encoded messages" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:9 | ||
msgid "the messages exchanged by the client and the server can be easily understood by a developer or network engineer by simply reading the messages" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:10 | ||
msgid "it is often easy to write a small prototype that implements a part of the protocol" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:11 | ||
msgid "it is possible to test a server manually by using telnet" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:13 | ||
msgid "Telnet is a protocol that allows to obtain a terminal on a remote server. For this, telnet opens a TCP connection with the remote server on port 23. However, most `telnet` implementations allow the user to specify an alternate port as `telnet hosts port` When used with a port number as parameter, `telnet` opens a TCP connection to the remote host on the specified port. `telnet` can thus be used to test any server using an ASCII-based protocol on top of TCP. Note that if you need to stop a running `telnet` session, ``Ctrl-C`` will not work as it will be sent by `telnet` to the remote host over the TCP connection. On many `telnet` implementations you can type ``Ctrl-]`` to freeze the TCP connection and return to the telnet interface." | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:16 | ||
msgid "Use your preferred email tool to send an email message to yourself containing a single line of text. Most email tools have the ability to show the `source` of the message, use this function to look at the message that you sent and the message that you received. Can you find an explanation for all the lines that have been added to your single line email ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:18 | ||
msgid "The TCP protocol supports 65536 different ports numbers. Many of these port numbers have been reserved for some applications. The official repository of the reserved port numbers is maintained by the Internet Assigned Numbers Authority (IANA_) on http://www.iana.org/assignments/port-numbers [#fservices]_. Using this information, what is the default port number for the POP3 protocol ? Does it run on top of UDP or TCP ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:20 | ||
msgid "The Post Office Protocol (POP) is a rather simple protocol described in :rfc:`1939`. POP operates in three phases. The first phase is the authorization phase where the client provides a username and a password. The second phase is the transaction phase where the client can retrieve emails. The last phase is the update phase where the client finalizes the transaction. What are the main POP commands and their parameters ? When a POP server returns an answer, how can you easily determine whether the answer is positive or negative ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:22 | ||
msgid "On smartphones, users often want to avoid downloading large emails over a slow wireless connection. How could a POP client only download emails that are smaller than 5 KBytes ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:26 | ||
msgid "Footnotes" | ||
msgstr "" | ||
|
||
#: ../../exercises/email.rst:27 | ||
msgid "On Unix hosts, a subset of the port assignments is often placed in `/etc/services`." | ||
msgstr "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ msgid "" | |
msgstr "" | ||
"Project-Id-Version: Computer networking : Principles, Protocols and Practice 3\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2019-10-09 12:39+0000\n" | ||
"POT-Creation-Date: 2021-05-17 09:55+0200\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
|
@@ -17,7 +17,7 @@ msgstr "" | |
"Content-Transfer-Encoding: 8bit\n" | ||
|
||
#: ../../exercises/ex-sharing.rst:6 | ||
msgid "This is an unpolished draft of the third edition of this e-book. If you find any error or have suggestions to improve the text, please create an issue via https://github.com/CNP3/ebook/issues?milestone=3 or help us by providing pull requests to close the existing issues." | ||
msgid "This is an unpolished draft of the third edition of this e-book. If you find any error or have suggestions to improve the text, please create an issue via https://github.com/CNP3/ebook/issues?milestone=4 or help us by providing pull requests to close the existing issues." | ||
msgstr "" | ||
|
||
#: ../../exercises/ex-sharing.rst:11 | ||
|
@@ -180,4 +180,3 @@ msgstr "" | |
#: ../../exercises/ex-sharing.rst:648 | ||
msgid "the host stops to listen and waits for a random time before sensing again the communication channel to check whether it is free." | ||
msgstr "" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
# SOME DESCRIPTIVE TITLE. | ||
# Copyright (C) 2019 Olivier Bonaventure | ||
# This file is distributed under the same license as the Computer networking : Principles, Protocols and Practice package. | ||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
# | ||
#, fuzzy | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Computer networking : Principles, Protocols and Practice 3\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2021-05-17 09:55+0200\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: 8bit\n" | ||
|
||
#: ../../exercises/http.rst:6 | ||
msgid "The HyperText Transfer Protocol" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:8 | ||
msgid "An important difference between HTTP/1.0, HTTP/1.1 and HTTP/2.0 is their utilization of the underlying transport connections. Answer the three questions below to confirm that you understand the difference between these versions of the HTTP protocol." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:17 | ||
msgid "System administrators who are responsible for web servers often want to monitor these servers and check that they are running correctly. As a HTTP server uses TCP on port 80, the simplest solution is to open a TCP connection on port 80 and check that the TCP connection is accepted by the remote host. However, as HTTP/1.x is an ASCII-based protocol, it is also very easy to write a small script that downloads a web page on the server and compares its content with the expected one. Use `telnet` or `ncat` to verify that a web server is running on host `www.computer-networking.info` [#fhttp]_." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:19 | ||
msgid "Instead of using `telnet` on port 80, it is also possible to use a command-line tool such as curl_. Use curl_ with the `--trace-ascii tracefile` option to store in `tracefile` all the information exchanged by curl_ when accessing the server." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:21 | ||
msgid "What is the version of HTTP used by your version of curl_ ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:22 | ||
msgid "Can you explain the different headers placed by curl_ in the request ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:23 | ||
msgid "Can you explain the different headers found in the response ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:25 | ||
msgid "HTTP 1.1, specified in :rfc:`2616`, forces the client to include the `Host:` header in all its requests. HTTP 1.0 does not define the `Host:` header, but most implementations support it. By using `telnet` and `curl` retrieve the first page of the https://www.computer-networking.info web server [#fhttps]_ by sending http requests with and without the `Host:` header. Explain the difference between the two." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:27 | ||
msgid "The headers sent in a HTTP request allow the client to provide additional information to the server. One of these headers is the `Accept-Language` header that allows indicating the preferred language of the client [#flang]_. For example, `curl -HAccept-Language:en http://www.google.be` will send to `http://www.google.be` a HTTP request indicating English (`en`) as the preferred language. Does google provides a different page in French (`fr`) and Walloon (`wa`) ? Same question for `http://www.uclouvain.be` (given the size of the homepage, use ``diff`` to compare the different pages retrieved from `www.uclouvain.be`)." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:29 | ||
msgid "Compare the size of the http://www.yahoo.com and http://www.google.com web pages by downloading them with curl_." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:31 | ||
msgid "The `ipvfoo <https://code.google.com/p/ipvfoo/>`_ extension on google chrome allows the user to visually detect whether a website is using IPv6 and IPv4, but also to see which web sites have been contacted when rendering a given web page. Some websites are distributed over several dozens of different servers. Can you find one ?" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:33 | ||
msgid "Some websites are reachable over both IPv4 and IPv6 while others are only reachable over IPv4 [#fv6only]_. You can use the `-6` (resp. `-4`) option to force curl_ to only use IPv6 (resp. IPv4). Verify that `www.computer-networking.info` is reachable over IPv6 and IPv4 and then check whether your university website already supports IPv6." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:35 | ||
msgid "curl_ supports a huge number of options and parameters that are described in its `man page <https://curl.haxx.se/docs/manpage.html>`_ Some of them allow you to force the utilization of a specific version of HTTP. These include `--http0.9`, `--http1.0`, `--http1.1` and `--http2`. Using the latter, verify whether your favorite website supports HTTP/2.0." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:37 | ||
msgid "As for the DNS, besides using software tools that implement the HTTP protocols, it can also be useful to analyze packet traces with wireshark_ . The exercises below contain simple packet traces collected with different versions of the HTTP protocol." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:50 | ||
msgid "Footnotes" | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:51 | ||
msgid "The minimum command sent to a HTTP server is `GET / HTTP/1.0` followed by CRLF and a blank line." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:53 | ||
msgid "This syllabus is now hosted on a web server using HTTPS (port 443) instead of HTTP (port 80)." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:55 | ||
msgid "The list of available language tags can be found at http://www.iana.org/assignments/language-subtag-registry. Versions in other formats are available at http://www.langtag.net/registries.html. Additional information about the support of multiple languages in Internet protocols may be found in rfc5646_." | ||
msgstr "" | ||
|
||
#: ../../exercises/http.rst:57 | ||
msgid "There are probably very few websites that only support IPv6 and not IPv4. If you find one, let us know by submitting a pull-request to change this exercise." | ||
msgstr "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,7 @@ msgid "" | |
msgstr "" | ||
"Project-Id-Version: Computer networking : Principles, Protocols and Practice 3\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2019-10-09 12:39+0000\n" | ||
"POT-Creation-Date: 2021-05-17 09:55+0200\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
|
@@ -31,4 +31,3 @@ msgstr "" | |
#: ../../exercises/intro.rst:12 | ||
msgid "A good understanding of the topics covered by this e-book can only be obtained by solving the proposed exercises. Reading the e-book from the first to the last page is not sufficient to get a detailed knowledge of computer networking." | ||
msgstr "" | ||
|
Oops, something went wrong.