SchoolWork-LaTeX/计算机网络/平时作业/Chapter_4_HW.tex
423A35C7 5906ac1efc 重构目录层次
0-课程笔记
1-平时作业
2-实验报告
3-期末大作业
2024-09-02 18:32:58 +08:00

234 lines
14 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[全部作业]{subfiles}
\input{mysubpreamble}
% \definecolor{shadecolor}{RGB}{255,255,255}
\setcounter{chapter}{3}
\setlist[1]{label=\arabic{enumi},listparindent=\parindent}
% 失败无法不使用临时文件将字符串转为token list
% \ExplSyntaxOn
% % \cs_set:Nn \myexpand:n {#1}
% % \debug_on:n {all}
% \RenewEnviron{zhongwen}{
% % \seq_new:N \temp
% % \tl_new:N \temp
% \tl_set:NV \temp {\BODY} % 看来LaTeX3也有字符串当作序列的概念
% \regex_replace_all:nnN{[^\x00-\xff]+}{\\textit\{\0\}}{\temp}
% % 应该可以使用\ifwindows和\iflinux来判断临时文件目录从而把临时文件放到临时文件目录里的
% % \immediate\openout0=\jobname.zhongwen
% % \immediate\write0{\temp}
% % \immediate\closeout0
% % \ExplSyntaxOff
% % % \input{\jobname.zhongwen}
% % \temp\csname \temp \endcsname
% % \exp_args:NV \myexpand:n {\temp}
% % \tl_use:N \temp
% % \temp
% % \exp_args_generate:n
% % \str_map_tokens:Nn
% \tlrep
% \tl_set:NV \l_tmpa_tl \temp
% \tl_use:N \l_tmpa_tl
% % \text_expand:n \temp
% % \ExplSyntaxOn
% % 好像没法删除临时文件,编译时会提示 rm: cannot remove '第十周作业.zhongwen': No such file or directory 但不影响编译,那还不如不删除了,少执行一个命令还能再快一点
% % \DeleteFile{\jobname.zhongwen}
% }
% \ExplSyntaxOff
\begin{document}
\chapter{网络层}
\begin{enumerate}
% \item[R13.]
\Rquestionandanswer[13]{Suppose Host A sends Host B a TCP segment encapsulated in an IP datagram.
When Host B receives the datagram, how does the network layer in Host B know it
should pass the segment (that is, the payload of the datagram) to TCP rather than to
UDP or to something else?}{
在IP协议的头部有一个字段指示了高层协议的类型主机B的网络层根据这个字段的值决定它应该把这个IP报文负载的段传递给哪个高层协议。
}
\Rquestionandanswer[16]{Suppose an application generates chunks of 40 bytes of data every 20 msec, and
each chunk gets encapsulated in a TCP segment and then an IP datagram. What
percentage of each datagram will be overhead, and what percentage will be
application data?}{
假设TCP层和IP层均没有额外的选项字段那么TCP的头部为20字节IP的头部为20字节应用层总长度也就是每个chunk为40字节那么每个报文的头部占比为$\frac{20+20}{20+20+40}\times 100\%=50\%$,应用层占比为$\frac{40}{20+20+40}\times 100\%=50\%$
}
\Rquestionandanswer[20]{Suppose you purchase a wireless router and connect it to your cable modem.
Also suppose that your ISP dynamically assigns your connected device (that is, your
wireless router) one IP address. Also suppose that you have five PCs at home that use
802.11 to wirelessly connect to your wireless router. How are IP addresses assigned to
the five PCs? Does the wireless router use NAT? Why or why not?}{
在没有进行特别设置的情况下五台个人电脑的IP地址由无线路由器提供并且是局域网IP地址但为了使局域网中的电脑能访问互联网路由器需要使用NAT网络地址转换将局域网内其他设备的IP和端口映射到路由器的IP和端口从而使局域网中的其他设备都能访问互联网。
}
\Rquestionandanswer[22]{Compare and contrast link-state and distance-vector routing algorithms.}{
\noindent\begin{tabular}{c|p{0.5\linewidth-5em}|p{0.5\linewidth-5em}}
\toprule
比较项目 & 链路状态(Link-State)算法 & 距离矢量(Distance-Vector)算法 \\
\hline
原理 & 每个节点与所有其他节点广播交流,只告知与其直接相连链路的费用。 & 每个节点只与邻居互相交流,得到邻居的新费用,并告知邻居自己的当前最低费用。\\
\hline
报文复杂性 & 知道网络每条链路的费用,需发送$\mathrm{O}(nE)$个报文;当一条链路的费用变化时,必须通知所有节点。 & 迭代时,在两个直接相连邻居之间交换报文;收敛时间受许多因素影响;当链路费用改变时,只有该链路相连的节点的最低费用路径发生改变时,才传播已改变的链路费用。\\
\hline
收敛速度 & 需要$\mathrm{O}(nE)$个报文和$\mathrm{O}(n^{2})$的搜寻。 & 收敛较慢。可能会遇到选路回环,或计数到无穷的问题。 \\
\hline
健壮性 & 当一台路由器发生故障、操作错误或受到破坏时,路由器向其连接的一条链路广播不正确费用。路由计算基本独立(仅计算自己的转发表),有一定健壮性。 & 当一台路由器发生故障、操作错误或受到破坏时,一个节点可向任意或所有目的节点发布其不正确的最低费用路径。一个节点的计算值会传递给它的邻居,并间接地传递给邻居的邻居。一个不正确的计算值会扩散到整个网络。\\
\bottomrule
\end{tabular}
}
\Rquestionandanswer[24]{Why are different inter-AS and intra-AS protocols used in the Internet?}{
\noindent
策略:\\
自治系统之间:管理员想要控制网络流量如何流动以及其他流量是否能通过它的网络。\\
自治系统内部:单个管理员,因此不需要这些决策。
\noindent
规模:\\
层次化的路由减少了路由表的大小,减少了更新路由表的流量。
\noindent
性能:\\
自治系统内部:能够专注于性能。\\
自治系统之间:策略可能比性能更重要。
}
\Rquestionandanswer[25]{Consider Figure 4.33. Starting with the original table in D, suppose that D
receives from A the following advertisement:
\noindent\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}ccc}
\toprule
Destination Subnet & Next Router & Number of Hops to Destination \\
\midrule
z & C & 10 \\
w & --- & 1 \\
x & --- & 1 \\
\dots & \dots & \dots \\
\bottomrule
\end{tabular*}
\includegraphics[width=1\linewidth]{imgs/2023-12-23-15-47-18.png}
Will the table in D change? If so how?
}{
D的路由表不会改变。
首先可以看出A向D提供了A分别到z,w,x的下一跳和总跳数那么之后D会查看自己的路由表。D原先记录的到z的总跳数是7但如果经过A再到z那就会是$1+10=11$比原先的跳数还多因此不会更新z这一行D原先记录的到w的总跳数是2从A收到的信息来看经过A再到w的跳数就是$1+1=2$和原来一样因此也不会更新w这一行D原先记录的到x的跳数是1已经最少了不需要更新。
所以D收到的A的前三行信息都不会导致D更新第三行以下的信息也没给出因此可以认为D的路由表不会改变。
}
\Pquestionandanswer[11]{Consider a datagram network using 8-bit host addresses. Suppose a router uses longest prefix matching and has the following forwarding table:
\noindent\begin{tabularx}{\linewidth}{ZZ}
\toprule
Prefix Match & Interface \\
\midrule
1 & 0 \\
11 & 1 \\
111 & 2 \\
otherwise & 3 \\
\bottomrule
\end{tabularx}\\
For each of the four interfaces, give the associated range of destination host addresses and the number of addresses in the range.
}{
\noindent\begin{tabularx}{\linewidth}{ZZZ}
\toprule
接口 & 目的主机地址关联范围 & 目的主机地址数 \\
\midrule
0 & 1000 0000 - 1011 1111 & $2^{6}=64$\\
1 & 1100 0000 - 1101 1111 & $2^{5}=32$\\
2 & 1110 0000 - 1111 1111 & $2^{5}=32$\\
3 & 0000 0000 - 0111 1111 & $2^{7}=128$\\
\bottomrule
\end{tabularx}
检查一下,目的主机地址数总和为$64+32+32+128 = 256 = 2^{8}$,正确。
}
\Pquestionandanswer[13]{Consider a subnet with prefix 101.101.101.64/26. Give an example of one IP
address (of form xxx.xxx.xxx.xxx) that can be assigned to this network.}{
直接把表示网络号的IP地址加一即可即 101.101.101.65。
}
\Pquestionandanswer[-]{Suppose an
ISP owns the block of addresses of the form 101.101.128/17. Suppose it wants to
create four subnets from this block, with each block having the same number of IP
addresses. What are the prefixes (of form a.b.c.d/x) for the four subnets?}{
由于子网掩码为$17=8+8+1$所以IP地址的前两个部分以及第三个部分的第一位表示网络号因此IP地址第三个部分还有$2^{8-1}=128$个数字可以使用要分成4个子网$128\div 4=32$$17+2=19$
$128+0\times 32=128$, $128+1\times 32=160$, $128+2\times 32 = 192$, $128+3\times 32 = 224$
所以四个子网的前缀为
\begin{center}
101.101.128.0/19\\
101.101.160.0/19\\
101.101.192.0/19\\
101.101.224.0/19\\
\end{center}
}
\Pquestionandanswer[14]{Consider a datagram network using 8-bit host addresses. Suppose a router uses
longest prefix matching and has the following forwarding table:
\noindent\begin{tabularx}{\linewidth}{ZZ}
\toprule
Prefix Match & Interface \\
\midrule
00 & 0 \\
01 & 1 \\
10 & 2 \\
11 & 3 \\
\bottomrule
\end{tabularx}
For each of the four interfaces, give the associated range of destination host addresses and the number of addresses in the range.
}{
\noindent\begin{tabularx}{\linewidth}{ZZZ}
\toprule
接口 & 目的主机地址关联范围 & 目的主机地址数 \\
\midrule
0 & 0000 0000 - 0011 1111 & $2^{6}=64$\\
1 & 0100 0000 - 0111 1111 & $2^{6}=64$\\
2 & 1000 0000 - 1011 1111 & $2^{6}=64$\\
3 & 1100 0000 - 1111 1111 & $2^{6}=64$\\
\bottomrule
\end{tabularx}
}
\Pquestionandanswer[18]{In this problem well explore the impact of NATs on P2P applications. Suppose a
peer with username Arnold discovers through querying that a peer with username
Bernard has a file it wants to download. Also suppose that Bernard and Arnold are
both behind a NAT. Try to devise a technique that will allow Arnold to establish a
TCP connection with Bernard without application-specific NAT configuration. If you
have difficulty devising such a technique, discuss why.}{
由于Arnold和Bernard都在NAT后面因此他们都只能发现对方所在子网的路由器的IP地址公网IP而TCP连接是端到端的因此如果没有对NAT进行特别配置那么只能采用TCP打洞方式TCP打洞具体过程比较复杂这里就简单描述一下大致是通过一个具有公网IP的服务器对TCP三次握手的报文进行中继使每一方与对方的路由器进行通信但对于上层来说就好像是双方形成了TCP连接而且TCP打洞还不一定能成功例如对于对称NAT就无法成功详细过程就不再叙述了可以查找相关资料。
}
\Pquestionandanswer[20]{Consider the network fragment shown below. $x$ has only two attached neighbors,
$w$ and $y$. $w$ has a minimum-cost path to destination $u$ (not shown) of 5, and $y$ has a
minimum-cost path to $u$ of 6. The complete paths from $w$ and $y$ to $u$ (and between $w$
and $y$) are not shown. All link costs in the network have strictly positive integer
values.
\begin{center}
\includegraphics[width=0.3\linewidth]{imgs/2023-12-23-18-56-31.png}
\end{center}
}{}
\begin{enumerate}
\Pquestionandanswer[-]{
\item Give $x$\!\!s distance vector for destinations $w$, $y$, and $u$.
}{
\begin{tabularx}{\linewidth}{ZZZ}
\toprule
终点 & 下一跳 & 花费/代价/损失 \\
\midrule
$w$ & --- & 2 \\
$y$ & $w$ & 4 \\
$u$ & $w$ & 7 \\
\bottomrule
\end{tabularx}
}
\Pquestionandanswer[-]{
\item Give a link-cost change for either $c(x,w)$ or $c(x,y)$ such that $x$ will inform its
neighbors of a new minimum-cost path to $u$ as a result of executing the
distance-vector algorithm.
}{
$c(x,w) = 10$,则$x$$u$的最小代价的距离更新为11且下一跳更新为$y$,此时$x$会通知$w$$y$它的距离矢量发生了变化。
}
\Pquestionandanswer[-]{
\item Give a link-cost change for either $c(x,w)$ or $c(x,y)$ such that $x$ will \textit{not} inform its
neighbors of a new minimum-cost path to u as a result of executing the
distance-vector algorithm.
}{
$c(x,y)=6$,则$x$$u$的最小代价仍然是7下一跳仍然是$w$,此时$x$不会通知它的邻居。
}
\end{enumerate}
\end{enumerate}
\end{document}