NKUCS-ICU / NKUCS.ICU

南开大学计网经验指北 | A website for courses of Major Computer Science | NKUCS DOCX | Since 2021
https://nkucs.icu/
GNU General Public License v3.0
144 stars 29 forks source link

COSC0010 计算机网络 #55

Open Emanual20 opened 2 years ago

Emanual20 commented 2 years ago

https://nkucs.icu/#/courses/grade-3/COSC0010

NKUCS,一个充满了「神仙」和「神仙」课程的专业,本网站旨在记录 NKUCS 的信息以及历届学生的评价

a-fake-admin commented 2 years ago

此课程前几节课由张老师(张建忠老师)讲,后面的几乎都由徐老师(徐敬东)老师讲。 徐老师挺和蔼的,感觉在课堂上说的每一句话都是干货。

作业量一般偏多,记得总共有4个中等规模的代码实验,不太好写,很容易写出bug。还有几次写题目的那种作业,作业题都是往年的考题。

考试题量非常大,当时最后5分钟才勉强做完,不要指望在期末用3天的时间复习完计网,功夫要下在平时,否则直接寄好吧。

Rainefly commented 2 years ago

计算机网络和网络技术与应用一般在同一学期开设,计算机网络自顶向下讲解,网技是自底向上;两门课一起学的时候,可能一开始还有点一头雾水,但是越学到后面越觉得计算机网络体系被打通了。 课程内容上,开始是张老师讲,后来是徐老师。两个老师几乎每年都会更新ppt,讲解得很清楚、细致,基本上认真听的话完全可以听懂,不会有不知所云的感觉。 作业上,我们当时一开始是一个月一次的作业,包括了socket功能实现、wireshark的抓包调研等,还有书面版作业,不算难;后来是一个大作业的四个阶段,每两周一交,对比实现了GBN、RDT、RENO的功能(当然也可以自己设计协议),比较肝。 考核上,题量不小,但是计算题的思路课上基本都提过,稍有变化。建议一定要搞清楚几个层的作用,以及网络运作的本质,不懂就问,两位老师都非常和蔼。 总之,好好把握计算机网络的课堂,绝对不亏!

Emanual20 commented 2 years ago

授课学期:2020fall

课程体会:

本年度课程所有同学总评平均分69分,足以知道本课程的难度。

知识点很多、很杂,一开始学自顶向下会感觉云里雾里的感觉,需要从很早就建立TCP分层的思路,会对理解课程内容有很好的帮助。

实验:相比同期课程代码量不多,最后一个大实验加起来可能最多1k行,和国内CS top高校的实验难度有一定差距。不要抄袭,无论同届还是上届代码,只听说2021fall有同学抄袭我的代码,直接被判零分,自重好吧。

期末:只完成书面作业绝对是不够的,想拿高分需要刷408计网真题。会考核一些实验上的内容,貌似课上提过考过connect函数某个参数的含义,总之注意细节吧,我觉得就算做了实验如果没复习到考试还是不会写。

Emanual20 commented 2 years ago

以下是2020fall回忆版试题,冬日限时供应:

  1. CRC校验/UDP checksum (10 points)

  2. 计算题\ 包大小是10000byte,第一段100Mbps,第二段10Mbps,电磁波传输速率2e8 m/s, 第一段链路4km,第二段链路2km\ (1) 不拆包 端到端时延 T = \sigma PROG + \sigma TRANSP (5 points)\ (2) 拆成5个包 端到端时延 T = \sigma PROG + \sigma TRANSP (5 points)\ (3) 统计多路复用 影响端到端时延的最主要因素 (5 points)

  3. 实验题\ (1) listen函数的各参数含义,以及该函数作用 (5 points)\ (2) 程序找错,错误点是TCP使用连接套接字和client通信而不是welcome_socket (5 points)

  4. client向server请求1个html,这个html中有5个jpeg文件\ (1) 画出从建立连接开始的报文发送顺序 (6 points)\ (2) http1.1持久连接是哪方先断开连接,断开过程,简述原因 (6 points)\ (3) CDN重定向的两种方式,画图简述 (8 points)

  5. 一个网络拓扑图 (5 * 5 points)\ (1) 子网内分ip,注意不能分特殊ip(全0全1),以及已经分出去的ip,随便分一个就行\ (2) CIDR,给交换机端的分一个网络号就行,写出各MAC对应的ip\ (3) CIDR聚合,问聚合完是什么,两路由器间根据BGP,转发的AS-PATH和NEXT-HOP报文内容分别是什么\ (4) DHCP,分配IP的那条报文,除了分配的IP,还需要包括哪些内容\ (5) RIP,填写某路由稳态下路由表中最少报文数的路由记录有哪些,注意缺省路由!

  6. 有关拥塞控制,给一个TCP报文发送流图,给出了RENO的FSM \ (1) 标了6个节点,填空,填出这6个时刻发出报文的SEQ区间,以及收到的ACK (7 points)\ (2) 从哪个时候开始快速恢复,注意三次冗余ACK是一共收到4个一样的ACK,填表计算各节点处的ssthresh和cwnd大小 (7 points)\ (3) TCPreno如果连续丢失多个包,会对带宽有什么影响,除了SACK,给出一种优化策略 (6 points)

Elaina-Ren commented 1 year ago

2023fall 回忆版试题:

  1. 简答题

    [与上图类似!可作为例题]

    1)考察端端时延和时延带宽积

    2)考察CRC校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算CRC校验码

  2. 接口层

    给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和ARP协议)


  3. 网络层

    1)计算路由聚合

    2)写出a和c在毒性逆转下收敛的距离向量表

    3)给出目的ip,根据路由向量表计算出下一跳的ip地址(注意最长匹配原则)

  4. 传输层

    考察Ack和拥塞处理以及reno算法的改进,具体可参考下图

    t1时刻的ack是多少;

    t2收到三次冗余ack后拥塞窗口和阈值变到多少;t3是什么状态?

    如何优化Reno算法,reno的缺点是什么


  5. 编程

    1)socket申请的版本号是多少?实际应用的版本号是多少?

    2)改错

    3)补全代码


  6. 应用层

    1)根据http1.1和流水线画出交互过程

    2)http1.1头阻塞问题的原因及http2.0如何对其进行改进
CH3COOL commented 10 months ago

@Elaina-Ren 2023fall 回忆版试题:

  1. 简答题

    [与上图类似!可作为例题]

    1)考察端端时延和时延带宽积

    2)考察CRC校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算CRC校验码

  2. 接口层

    给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和ARP协议)


  3. 网络层

    1)计算路由聚合

    2)写出a和c在毒性逆转下收敛的距离向量表

    3)给出目的ip,根据路由向量表计算出下一跳的ip地址(注意最长匹配原则)

  4. 传输层

    考察Ack和拥塞处理以及reno算法的改进,具体可参考下图

    t1时刻的ack是多少;

    t2收到三次冗余ack后拥塞窗口和阈值变到多少;t3是什么状态?

    如何优化Reno算法,reno的缺点是什么


  5. 编程

    1)socket申请的版本号是多少?实际应用的版本号是多少?

    2)改错

    3)补全代码


  6. 应用层

    1)根据http1.1和流水线画出交互过程

    2)http1.1头阻塞问题的原因及http2.0如何对其进行改进

厄,图片怎么看不到

Emanual20 commented 10 months ago

@Elaina-Ren 2023fall 回忆版试题:

  1. 简答题

[与上图类似!可作为例题]
1)考察端端时延和时延带宽积
2)考察CRC校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算CRC校验码

  1. 接口层
    给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和ARP协议)

  2. 网络层
    1)计算路由聚合
    2)写出a和c在毒性逆转下收敛的距离向量表
    3)给出目的ip,根据路由向量表计算出下一跳的ip地址(注意最长匹配原则)

  3. 传输层
    考察Ack和拥塞处理以及reno算法的改进,具体可参考下图

    t1时刻的ack是多少;
    t2收到三次冗余ack后拥塞窗口和阈值变到多少;t3是什么状态?
    如何优化Reno算法,reno的缺点是什么

  4. 编程
    1)socket申请的版本号是多少?实际应用的版本号是多少?
    2)改错
    3)补全代码

  5. 应用层
    1)根据http1.1和流水线画出交互过程
    2)http1.1头阻塞问题的原因及http2.0如何对其进行改进

厄,图片怎么看不到

哈哈哈,估计是图床挂了

Emanual20 commented 10 months ago

@Elaina-Ren 2023fall 回忆版试题:

  1. 简答题

[与上图类似!可作为例题]
1)考察端端时延和时延带宽积
2)考察CRC校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算CRC校验码

  1. 接口层
    给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和ARP协议)

  2. 网络层
    1)计算路由聚合
    2)写出a和c在毒性逆转下收敛的距离向量表
    3)给出目的ip,根据路由向量表计算出下一跳的ip地址(注意最长匹配原则)

  3. 传输层
    考察Ack和拥塞处理以及reno算法的改进,具体可参考下图

    t1时刻的ack是多少;
    t2收到三次冗余ack后拥塞窗口和阈值变到多少;t3是什么状态?
    如何优化Reno算法,reno的缺点是什么

  4. 编程
    1)socket申请的版本号是多少?实际应用的版本号是多少?
    2)改错
    3)补全代码

  5. 应用层
    1)根据http1.1和流水线画出交互过程
    2)http1.1头阻塞问题的原因及http2.0如何对其进行改进

厄,图片怎么看不到

2023fall 回忆版试题:

  1. 简答题

[与上图类似!可作为例题] 1)考察端端时延和时延带宽积 2)考察CRC校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算CRC校验码

  1. 接口层 给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和ARP协议)

  2. 网络层 1)计算路由聚合 2)写出a和c在毒性逆转下收敛的距离向量表 3)给出目的ip,根据路由向量表计算出下一跳的ip地址(注意最长匹配原则)

  3. 传输层 考察Ack和拥塞处理以及reno算法的改进,具体可参考下图

t1时刻的ack是多少; t2收到三次冗余ack后拥塞窗口和阈值变到多少;t3是什么状态? 如何优化Reno算法,reno的缺点是什么

  1. 编程 1)socket申请的版本号是多少?实际应用的版本号是多少? 2)改错 3)补全代码

  2. 应用层 1)根据http1.1和流水线画出交互过程 2)http1.1头阻塞问题的原因及http2.0如何对其进行改进

朋友有空可以补一下图片~

Elaina-Ren commented 10 months ago

2020级 回忆版试题(是真时隔一年的回忆版了):

图片没存对不起大家!哭!

一、简答题
1)考察端端时延和时延带宽积 2)考察 CRC 校验码的计算,给出生成码和接收端收到的序列,判断是否出错;以及发送端如何计算 CRC 校验码

二、接口层
fig1.png
给出一个网络拓扑图,有四个交换机和四个主机,A->B,D->A,C->D 发送数据帧,由此补充各交换机的转发表(考察交换机的自学习和 ARP 协议)

三、网络层
1)计算路由聚合 2)写出 a 和 c 在毒性逆转下收敛的距离向量表 3)给出目的 ip,根据路由向量表计算出下一跳的 ip 地址(注意最长匹配原则)

四、传输层(PPT的图重点看)
考察 Ack 和拥塞处理以及 reno 算法的改进; t1 时刻的ack是多少;t2 收到三次冗余 ack 后拥塞窗口和阈值变到多少;t3 是什么状态? 如何优化 Reno 算法,reno 的缺点是什么

五、编程
1)socket 申请的版本号是多少?实际应用的版本号是多少? 2)改错 3)补全代码

六、应用层
1)根据 http1.1 和流水线画出交互过程 2)http1.1 头阻塞问题的原因及 http2.0 如何对其进行改进

blank-dream commented 9 months ago

2023 fall回忆试题: 一、简答题 1)考察拥塞窗口大小变化 2)计算CRC校验码和发送的序列

二、 1)给定x,y,z和它们相邻的距离向量,当y,x的距离向量改变后,计算新的距离向量表。 2)给定CIDR路由表,针对两个IP计算它们下一跳的端口号。

三、 根据给定网络拓扑图答题,9台主机(F 1-9)(MAC 1-9)、4台交换机(S 1-4),大致是以下这样 S3 / | \ S1 S2 S4 / | \ / | \ / | \ F1 F2 F3 F4 F5 F6 F7 F8 F9 1)简述F4发送数据帧给F9的传输过程 2)经过上述转发后,S1和S4的转发表有何改变(初始为空)

四、 给定一个16字节的TCP头片段,以16进制表示数值,总共有32个数(具体数值忘了),其中有源端口和目的端口,其一为常用端口,根据数值回答问题。(题目最后给了TCP头的数据结构,但在下一页。。。) 1)源端口号、目的端口号、SYN是否置位、是否有选项、TCP头的长度、数据帧用了什么高级协议封装、发出这个TCP头的是服务器还是客户端(根据SYN和ACK的置位来确定) 2)根据给定数值画出客户端和服务器间三次握手的图,要写出具体数值(给的片段中有) 3)接收端缓冲区最大值为多少并给出理由(给的片段里也有)

五、代码 1)找出两处错误并改正(recv使用参数sendbuff、createtread传入的Param没有转换类型) 2)代码填空(只记得有MAKEWORD、bind、listen,更多的想不起来了)

六、 给定一个带DNS服务器的网络拓扑图,主机x使用递归查询,DNS服务器都使用迭代查询,回答以下问题 1)如果主机x要访问某网站,这会产生许多DNS消息,顺序给出表明源(发送端)和目的(接收端)的消息发送过程(这题没怎么做过) 2)主机访问服务器时,会请求网页和网页上的资源(详细给出url和资源名称),这些资源和网页存在同一个文件夹下,分别画出在HTTP1.1协议下,非流水线和流水线模式的主机和服务器的信息交互,要求注明请求方法和URL

lll1230127 commented 9 months ago

受前几年学长学姐回忆试题的帮助,这里也整理了一份2024fall回忆试题(和前面那位同学撞车了,也许可以结合着看看),包含数据和对应的考研题(只改了数据):https://github.com/lll1230127/NKU2023-Network/blob/master/paper.md

yexiaohanhan commented 8 months ago

本来想着今天来整理期末题结果上面大佬都整过了hhh。今年的网络课考试难度确实更适中了,但是复习讲稿和做部分考研题还是很好的复习手段,然后如果有精力可以报网络技术课来辅助计算机网络学习。至少我学了网络技术觉得计算机网络复习起来更流畅

mingxuZhang2 commented 8 months ago

几位大佬说的都好有道理!整理的也太详细了!我在这里以一个这门课程学习的较为中庸(本学期所有课程最低的一门)的当局者的角度来给大家分享一下我的体会。

从理论上讲,可能计网本身的难度是不如编译原理的,但是由于编译的考试及其套路化,并且有相当的题目可以供参考,所以考试的时候编译遇到的障碍反而是较计网少很多很多,这学期的几门课程由于个人原因实在是没有听课,从第一节课到最后一节复习课,全都在最后一排充当一个默默无闻的伤心者的角色。但考虑到OS也没有对应的习题可供参考,但是OS的分数要比计网高了8分,编译比计网高了12分...我反思了一下原因。

第一点是平时分的问题,我的OS和编译的平时分都是过量的,编译平时分拿满的前提下,然后OT额外加了2分,OS也是一样的,做了Challenge的实验内容,可能最后在分数上也会有所体现了,但是计网的平时分相对较差,两次书面作业一次100一次84,剩下的实验的均分在93左右,导致其实平时分也扣了一些,加上一些没有计算上的考勤和上课的习题,折算下来可能平时分只拿到了92/2=46左右,也就是平时分就扣掉了4分。

第二点是由于知识点本身掌握的问题,可能在做Ucore的实验的时候,一些内容确实是自己理解了,并且OS的主干知识点并没有计网这么多,这么碎,就导致了计网本身掌握的就不太好,很不扎实,甚至整张卷子大概算了下卷面分只能有76分。但是在考试中却答的特别快,甚至检查都无从下手,因为看着题目太陌生了,比如那道毒性逆转的题目,千算万算没有算到要写其中一步的,考前复习的时候只注意到了写毒性逆转收敛后的距离...还是复习的不太到位,再比如写路由表的题目,也写的不是很正确,整体信息是如何传递的没掌握的很好...

针对上面血淋淋的经验来看,计网最好不要delay到最后一周or两周复习,复习的压力相对较大,并且由于lz当时的复习抓手是王道,但是忘记了我们的考试是没有选择题的,但是还傻乎乎的把选择题做的差不多了,大题做的反而少了,复习的效果相对较差,往届学长学姐分享的复习资料也具有一定的参考价值,可以酌情使用。不过最重要的是,一定一定要把PPT都仔细的看好,一页一页的看,每一个知识点都吃透,这样才能有一个较好的复习效果和知识点的掌握程度。

有关于实验部分,强烈建议去卷卷例如实验报告等内容,实现一些其他的功能等,而且实验的给分本身也就存在一定的随机性,分到的助教不一样给分的松紧也不一样,应该是答辩占比20%,实验报告占比80%,一定一定要把实验报告做的美观一些,这样平时分才会相对高一些。然后就是作业和实验报告一定不要延期交,延期交哪怕一秒钟也会直接挂零!!

lll1230127 commented 8 months ago

出分之后回过头再看看这门自己大学期间所有专业必修中最低分的课,还是有些感慨的。

前面大佬已经说的很全面了,本课程这学期期末不难,难点在于平时给分的严格和期末四连考的折磨,这里就不多说了,最重要的就是作业和实验报告一定不要延期交,一定不要忘了,写完可以就交一份,可以重复提交,但凡迟交几秒就会像我一样,书面作业5分全扣,平时分扣8分超上,带上考勤和考试失误之类的,总分直接寄了,反正挺玉玉的。

总之大家千万注意要求吧,这可能会是你大学期间遇到最严格的教学组

CH3COOL commented 7 months ago

如果你在学期初,那么好好听课能大幅加速你对期末的掌握。平时好好听,你的脑中就会先形成一个知识的骨架,这能省你不少事。 如果你在学期末,往年试题回忆以及各年的往年作业都很有参考价值,不妨就以往年试题回忆为引子来复习(对于知识结构有一定把握效果会更好)。仔细对比的话往年作业都和期末有不少重合度,拿往年作业练手是个很好的选择,拿考研资料复习似乎不是很必要,往年作业和试题回忆给拿下就绰绰有余了

natsunoshion commented 2 months ago

看楼下的回忆试题即可,去年(23Fall)难度较低,编程题有争议,不过最后老师(在我的求情下)应该都给分了,今年考试可能会变难

建议提前下载回忆试题,不然像去年一样考试周时回忆试题突然失效就不好了)