史上最全的计算机网络知识点总结

阿伟在学完了《计算机网络:自顶向下的办法》以及《TCP/IP详解:卷一协议(原书第二版)》感觉学的还不是特别好,感觉做题的时候,我简直人都傻了,写个文章、用表格的形式、做题目的形式对计算机网络比较常见的一些知识点进行总结希望在****自己成长的同时,可以帮助到有需要的人。

该文章是看了超级多的知乎专栏、CSDN文章等做的总结。题目来源以及题目后面所附代的参考文章的具体网址,会放在另外一个文章里面,以此来节省篇幅。

以上两本书私聊可以给电子书。


计算机网络知识点总结


1. OSI体系结构(七层)、TCP/IP体系结构(四层)、五层协议的体系结构,以及各层协议意义

其实常用的还是TCP/IP协议
在这里插入图片描述
在这里插入图片描述

层的名字 层的协议 层的作用
物理层 RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关) 通过媒介传输比特,确定机械及电气规范(比特Bi)
数据链路层 PPP、FR、HDLC、VLAN、MAC (网桥,交换机) 将比特组装成帧和点到点的传递(帧Frame)
网络层 IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)) 负责数据包从源到宿的传递和网际互连(包PackeT)
传输层 TCP、UDP、SPX 提供端到端的可靠报文传递和错误恢复(段Segment)
会话层 NFS、SQL、NETBIOS、RPC 建立、管理和终止会话(会话协议数据单元SPDU)
表示层 JPEG、MPEG、ASII 对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层 FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS 允许访问OSI环境的手段(应用协议数据单元APDU)

在这里插入图片描述


2. 计算机网络系统

计算机网络的定义:计算机网络系统就是利用通信设备和线路将地理位置不同、功能独立的多个计算机系统互联起来,以功能完善的网络软件实现网络中资源共享和信息传递的系统。通过计算机的互联,实现计算机之间的通信,从而实现计算机系统之间的信息、软件和设备资源的共享以及协同工作等功能,其本质特征在于提供计算机之间的各类资源的高度共享,实现便捷地交流信息和交换思想。

题目:

1、在计算机网络的定义中,一个计算机网络包含多台具有_自主_____功能的计算机;把众多计算机有机连接起来要遵循规定的约定和规则,即_通信协议______;计算机网络的最基本特征是__资源共享_______。


3. 计算机网络的拓扑(tuò pū)结构

具体讲解:
CSDN博主翟羽嚄的《网络拓扑结构》,网址:https://blog.csdn.net/mao_hui_fei/article/details/82928163

结构名称 连接方式 优点 缺点
总线型拓扑结构 所有的结点共享一条数据通道 连接形式简单,易于实现,所用线缆最短,增加或者移除结点比较灵活,个别结点发生故障时,不影响网络中其他结点的正常工作 网络传输能力低,安全性低,总线发生故障时,会导致全网瘫痪。结点数量的增多会影响网络性能。
星形拓扑结构(应用最普遍) 以一个结点为中心的处理系统 结构简单,建网容易,控制简单,维护容易,网络传输速度快。 属于集中控制。主机负载过重,可靠性低,通信线路利用率低。安全隐患大。
环形拓扑结构 通信线路连接成一个闭合的环 一次通信的最大传输延迟是固定的,每个网上结点只与其他二个结点有物理链路直接互连。传输控制机制简单,实时性强。 一个结点发生故障时,可能导致全网瘫痪,可靠性差。维护困难,扩展性能差
混合型拓扑结构 由星形结构和总线型结构结合的网络结构。 解决了星形网络在传输距离上的局限,同时又解决了总线型网络在连接用户数量上的限制。

4. 单工、半双工以及全双工之间的区别

  1. 单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。
  2. 半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。
  3. 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信。

在这里插入图片描述
参考了:
CSDN博主一只笨鸟的装载文章《单工、半双工及全双工之间的区别》,网址:https://blog.csdn.net/komtao520/article/details/88084984?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1


5. 中继器、集线器、网桥、交换机、路由器、网关

计算机网络的物理设备,这几个东西我感觉都可以在水多一万字
在这里插入图片描述
来源于:超级课程表哥

具体讲解:
CSDN博主超级课程表哥的《中继器、集线器、网桥、交换机、路由器、网关的超全总结》,网址:https://blog.csdn.net/qq_25606103/article/details/51288459?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-9

设备名称 作用
中继器(Repeater) 简单的信号放大器,信号在传输的过程中是要衰减的,中继器的作用就是将信号放大,使信号能传的更远。
集线器(Hub) 差不多就是个多端口的中继器,把每个输入端口的信号放大再发到别的端口去,集线器可以实现多台计算机之间的互联,因为它有很多的端口,每个口都能连计算机。
网桥(Bridge) 网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”。
交换机(Swich) 可以理解为高级的网桥,他有网桥的功能,但性能比网桥强。交换机和网桥的细微差别就在于:交换机常常用来连接独立的计算机,而网桥连接的目标是LAN,所以交换机的端口较网桥多。
路由器(Router) 为经过路由器的每个IP数据包寻找一条最佳传输路径,并将该数据有效地传送到目的站点。 路由器的基本功能是,把数据(IP报文)传送到正确的网络。
网关(Gateway) 通过字面意思解释就是网络的关口。从技术角度来解释,就是连接两个不同网络的接口,比如局域网的共享上网服务器就是局域网和广域网的接口。

6. 各种乱七八糟的网络

以太网、互联网、万维网、因特网、城域网/广域网/局域网,👴在三个月前写过(现在2020.5.03)所以不想重复多写,可以看我的这个文章

以太网、互联网、万维网、因特网、城域网/广域网/局域网的区别》,网址:https://blog.csdn.net/qq_45877524/article/details/104938347


7. 常见端口以及服务

应用程序 默认端口号
HTTP 80/8080/3128/8081/9098
SOCKS 1080
FTP(文件传输)协议 21
Telnet(远程登录) 21
HTTP服务器 80/tcp(木马Executor开放此端口)
HTTPS(securely transferring web pages)服务器 443/tcp 443/udp
Telnet(不安全的文本传送) 23/tcp(木马Tiny Telnet Server所开放的端口)
TFTP(Trivial File Transfer Protocol) 69/udp
FTP 21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)
SSH(安全登录)、SCP(文件传输)、端口号重定向 22/tcp
SMTP Simple Mail Transfer Protocol(E-mail) 25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)
POP3 Post Office Protocol(E-mail) 110/tcp
Webshpere应用程序 9080
webshpere管理工具 9090
JBOSS 8080
TOMCAT 8080 (这里没有出错,建议百度一下)
WIN2003远程登录 3389
Symantec AV/Filter for MSE 8081
Oracle 数据库 1521
ORACLE EMCTL 1158
Oracle XDB(XML 数据库) 8080
Oracle XDB FTP服务 2100
MS SQL*SERVER数据库server 1433/tcp 1433/udp
MS SQL*SERVER数据库monitor 1434/tcp 1434/udp

8. IP数据包头部结构

具体讲解可以看我的文章:《IPv4和IPv6的数据报结构头部详解》,网址:https://blog.csdn.net/qq_45877524/article/details/105003498
在这里插入图片描述
在这里插入图片描述


9. IPv4地址分类

在这里我吐槽一下,都要进入IPv6时代了,还一直疯狂考着IPv4即将淘汰的东西。
在这里插入图片描述
列出一个表格方便记忆每一个类

地址范围 高序位 用途 百分比
A 0.0.0.0 - 127.255.255.255 0 单播/特殊 1/2
B 128.0.0.0 - 191.255.255.255 10 单播/特殊 1/4
C 192.0.0.0 - 223.255.255.255 110 单播/特殊 1/4
D 224.0.0.0 - 239.255.255.255 1110 组播 1/16
E 240.0.0.0 - 255.255.255.255 1111 保留 1/16

这个百分比我算过等于一不用算的啊。

非常非常具体的讲解可以看这个文章:CSDN博主Yngz_Miao的博文《【TCP/IP】IP地址分类和特殊IP地址》,网址:https://blog.csdn.net/qq_38410730/article/details/80980749


10. 组播、单播、任播、广播

其实这个知识点的回顾,应该是要放在前面一点的,但是考虑到IPv4地址分类那里开了个头,就顺着回顾下去吧。
具体讲解可以看我的装载!!!!文章:《多播(组播)、单播、任播和广播》,网址:https://blog.csdn.net/qq_45877524/article/details/105481577

这四个播都是数据封包在计算机网络的传输方式,这里大概的讲一下方式。

名称 传输方式 话糙理不糙的比方
单播 每次只有两个实体相互通信,发送端和接收端都是唯一确定 对抗路孤儿路,两个孤儿一对一单挑
组播 将数据在同一时间以高效的方式发往处于TCP/IP网络上的多个接收者 叶师傅:我要一个打十个
广播 主机之间一对所有的通讯模式 不是我针对谁,而是在座的各位都是垃圾
任播 每一个位址对应一群接收节点,但在任何给定时间,只有其中之一可以接收到传送端来的资讯 一打五时,敌方葫芦娃救爷爷

这里不太严谨,具体还是看我装载的文章,我转载文章是将三个人的内容结合在一起,原文是有一些问题的,我改正了,并且加以说明。
在这里插入图片描述


11.通过IP地址和子网掩码计算网络号(这个是重点,这里介绍一个简便的计算方法)

这个东西,我之前确实想写一篇文章来详细讲一下的,但是准备要上学了,所以就没有动笔,我列出之前收集到的文章链接(加粗的是非常nice的可以说是一下子就能够看懂的):

  1. CSDN博主here962464的《已知IP地址,如何计算其子网掩码,默认网关地址,网络地址等》,网址:https://blog.csdn.net/here962464/article/details/78940056?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  2. CSDN博主小宇飞刀的通过IP地址和子网掩码,如何计算出网络地址、广播地址和主机数?》,网址:
    https://blog.csdn.net/xieyunc/article/details/84866414?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  3. CSDN博主Mr_Faker的《子网掩码详解》,网址:
    https://blog.csdn.net/faker_wang/article/details/80747407
  4. CSDN博主逃离地球的小小呆的《子网划分详解与子网划分实例精析》,网址:https://blog.csdn.net/gui951753/article/details/79412524
  5. 知乎用户 阿卡 对问题《子网划分总是学不会怎么办?
    的回答,网址:https://www.zhihu.com/question/53456814/answer/135058621
  6. 知乎用户 MissCatty 的《IP地址、子网掩码和网络号的计算》,网址:https://zhuanlan.zhihu.com/p/32361762

11.1 比较传统的靠谱的计算方法——十进制转二进制在转为十进制

在这里插入图片描述
这种计算方法是比较传统的计算方法,也是教科书上的方法比较慢,但是很实在。这也是CSDN博主小宇飞刀重点讲述的方法。

11.2 知乎上看到的简化方法——比较取巧

在这里插入图片描述
这个东西亲测有效,但是不知道会不会出现特殊的情况导致这种方法出现错误,欢迎在评论区提出,顺带让我学习一下


11.3 子网掩码的训练

我听说很多计算机专业的计算机网络期末考试都会考一道子网掩码的大题,我建议通过这个文章进行训练。(我化工专业的)。

CSDN博主逃离地球的小小呆的《子网划分详解与子网划分实例精析》,网址:https://blog.csdn.net/gui951753/article/details/79412524

大佬nb
在这里插入图片描述


12. 为了TCP/IP协议正常使用的工具人协议

这八个协议就是一帮工具人协议,简直就是中路法师——王者大舞台,缺钱你就来

Internet控制报文协议(Intemet Control Message Protocol, ICMP)、网络地址转换协议(Network Addresss Translation、NAT)、动态主机配置协议(Dynamic Host Configuration Protocol、DHCP)、地址解析协议(Address Resolution Protocol、ARP)、反向地址转换协议(RARP:Reverse Address Resolution Protocol) 、TFTP(Trivial File Transfer Protocol,简单文件传输协议)、HTTP协议(HyperText Transfer Protocol,超文本传输协议)、DNS协议(Domain Name System,地址解析协议)、邻居发现协议(Neighbor Discovery Protocol,NDP

这些协议都是非常烦的东西,我感觉就靠这些协议我都可以水多五十个文章,所以这里只是比较水的说一下,具体讲解可以看我附带的链接


在这里插入图片描述
网络上大多数关于计算机网络的复习资料里面都会有这段话,但是我在书上并没有找到最下面那个DHCP协议的具体讲解,同时网上也没有找到,所以我这里怀疑不知道是哪里的源头出错了,应该是和上面的那个DHCP协议——动态主机配置协议(Dynamic Host Configuration Protocol、DHCP),进行了重复,我提出意见。

欢迎大佬指出。


12.1 IPv4中的地址解析协议(ARP,Address Resolution Protocol)以及IPv6的NDP(邻居发现协议)

非常具体的讲解,可以看这两个人的文章:

  1. CSDN博主HankingHu的《计算机网络–ARP地址解析协议详解》,网址:https://blog.csdn.net/u013309870/article/details/77427112
  2. CSDN博主gffsky1990的《地址解析协议(ARP)的学习(通过wireshark抓包分析)》,网址:https://blog.csdn.net/u010442328/article/details/45419019?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-14&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-14

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代
在这里插入图片描述
来源:CSDN博主HankingHu

主要工作原理

  1. 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2. 当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
  3. 当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
  4. 源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应


12.2 IPv6中的邻居发现协议——邻居发现协议(Neighbor Discovery Protocol,NDP

邻居发现协议NDP(Neighbor Discovery Protocol)是TCP/IP协议栈的一部分,主要与IPv6共同使用。它工作在网络层,负责在链路上发现其他节点和相应的地址,并确定可用路由和维护关于可用路径和其他活动节点的信息可达性

具体讲解:

  1. CSDN博主曹世宏的博客的《IPv6邻居发现协议》,网址:https://blog.csdn.net/qq_38265137/article/details/80466128?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
  2. CSDN博主santt的《IPV6 邻居发现协议(NDP)》,网址:https://blog.csdn.net/santtde/article/details/84028248

12.3 反向地址转换协议(RARP,Reverse Address Resolution Protocol)

讲真,我发现这个协议讲的最清晰的居然是360百科这波操作我人都傻了

反向地址转换协议(RARP:Reverse Address Resolution Protocol) 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。

具体讲解:

  1. CSDN博主santt的《IPV6 邻居发现协议(NDP)》,网址:https://blog.csdn.net/santtde/article/details/84028248
  2. 360百科《rarap》,网址:https://baike.so.com/doc/6746820-6961366.html

12.4 Internet控制报文协议(Intemet Control Message Protocol, ICMP)

Internet控制报文协议(Intemet Control Message Protocol, ICMP)是IP协议的一种补充,它与IP协议结合使用,以便提供与IP协议层配置和IP数据包处理相关的诊断和控制信息(IP协议本身并没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包,也没有提供直接的方式来获取诊断信息。)

ICMP通常被认为是IP层的一部分,它需要在所有IP实现中存在。它使用IP协议进行传输。因此,确切地说,它既不是一个网络层协议,也不是一个传输层协议,而是位于两者之间。(这一点和大多数CSDN博主的不太一样,但我看TCP/IP协议上是这样写的,我决定按照书上的来)

具体讲解:
我自己的博客《ICMP详解——Internet控制协议》,网址:https://blog.csdn.net/qq_45877524/article/details/105380742
在这里插入图片描述


12.5 DHCP协议详解——TCP/IP协议的配置信息

为了使用TCP/IP协议族,每台主机和路由器需要一定的配置信息。配置信息用于为系统指定本地名称,以及为接日指定标识符(例如IP地址)。多年来,已有很多方法可提供和获得这种信息,但基本上采用3种方法:手工获得信息,通过一个系统获得使用的网络服务,或使用某种算法自动确定。

在这里插入图片描述
具体讲解:
我的文章《DHCP协议详解——TCP/IP协议的配置信息》,网址:https://blog.csdn.net/qq_45877524/article/details/105113751


12.6 组织对不起,90年的事我瞒不住了——NAT(网络地址转换)

NAT(Network Addresss Translation),网络地址转换,本质上是一种允许在互联网的不同地方重复使用相同的IP地址集的机制,同时作为公网IP地址和私网IP地址的过渡环节,同时也具有了一定的防御功能——过滤数据包。NAT作为IPv4和IPv6的过渡方案,它的出现缓解了20世纪90年代初的IPv4地址数量不足的问题。,但也在一定程度上阻挠了IPv6的发展。

在这里插入图片描述
具体讲解:
我的文章《NAT技术详解(网络地址转换)》,网址:https://blog.csdn.net/qq_45877524/article/details/105237657


12.7 DNS协议(wireshark进行分析,图示递归查询及迭代查询)

DNS协议(Domain Name System)就是将IPv4地址和IPv6地址一大串鬼都看不懂的数字符号,变成人能看懂的符号。DNS服务于IP地址到域名之间的映射转换。

具体讲解:
我的博客《DNS协议(wireshark进行分析,图示递归查询及迭代查询)》,网址:https://blog.csdn.net/qq_45877524/article/details/105552129


12.8 TFTP(Trivial File Transfer Protocol,简单文件传输协议)

是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务

在这里插入图片描述

具体讲解:
CSDN博主mjLlm的装载文章《TFTP协议》,网址:https://blog.csdn.net/mjLlm/article/details/82950639
360百科《tftp》,网址:https://baike.so.com/doc/2176104-2302634.html


12.9 HTTP协议——具体讲解第二个真的很nice,建议去看一下

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

在这里插入图片描述

来源CSDN博主有抱负的小狮子

具体讲解:

  1. CSDN博主有抱负的小狮子的《Http协议详解(深入理解)》,网址:https://blog.csdn.net/weixin_38087538/article/details/82838762?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
  2. CSDN博主Tyler_Zx的《Http和Https的区别(面试常考题)》,网址:https://blog.csdn.net/qq_38289815/article/details/80969419?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11

说一下,具体讲解第二个真的很nice,建议去看一下


12.10 总结

协议名称 协议作用
地址解析协议 其基本功能为透过目标设备的IP地址查询目标设备的MAC地址,以保证通信的顺利进行
邻居发现协议NDP(Neighbor Discovery Protocol) 是TCP/IP协议栈的一部分,主要与IPv6共同使用。它工作在网络层,负责在链路上发现其他节点和相应的地址,并确定可用路由和维护关于可用路径和其他活动节点的信息可达性
反向地址转换协议(RARP,Reverse Address Resolution Protocol) 反向地址转换协议(RARP:Reverse Address Resolution Protocol) 允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
Internet控制报文协议(Intemet Control Message Protocol, ICMP) Internet控制报文协议(Intemet Control Message Protocol, ICMP)是IP协议的一种补充,它与IP协议结合使用,以便提供与IP协议层配置和IP数据包处理相关的诊断和控制信息(IP协议本身并没有为终端系统提供直接的方法来发现那些发往目的地址失败的IP数据包,也没有提供直接的方式来获取诊断信息。)
DHCP协议详解——TCP/IP协议的配置信息 DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,是一种流行的客户机/服务器协议,它用于为主机(有时也为路由器)指定配置信息。
NAT(Network Addresss Translation) NAT(Network Addresss Translation),网络地址转换,本质上是一种允许在互联网的不同地方重复使用相同的IP地址集的机制,同时作为公网IP地址和私网IP地址的过渡环节,同时也具有了一定的防御功能——过滤数据包。
DNS协议(Domain Name System) DNS协议(Domain Name System)就是将IPv4地址和IPv6地址一大串鬼都看不懂的数字符号,变成人能看懂的符号。
TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP,HyperText Transfer Protocol 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法

13. UDP协议解释、TCP和UDP之间的区别

UDP这个属于非常底层的东西,基本上都已经很少用到了,基本上题目更加多问的是TCP与UDP之间的区别,以此考察TCP。

UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是17
在这里插入图片描述
老规矩,UDP不过多介绍,具体讲解可以看下面几个文章:

  1. CSDN博主[Object object]的《TCP 和 UDP 的区别》,网址:https://blog.csdn.net/zhang6223284/article/details/81414149?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
  2. CSDN博主李大坝超欧的的《UDP协议的详细解析》,网址:https://blog.csdn.net/aa1928992772/article/details/85240358
  3. CSDN博主china_jeffery的《网络协议 – UDP协议(1)介绍》,网址:https://blog.csdn.net/china_jeffery/article/details/78923428
  4. CSDN博主彪悍的男人的《玩转wireshark系列第三篇-抓取udp包》,网址:https://blog.csdn.net/u011416247/article/details/80868133?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1
  5. CSDN博主一日思考的《UDP协议学习》,网址:https://blog.csdn.net/s_lisheng/article/details/73538229?depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-3&utm_source=distribute.pc_relevant_right.none-task-blog-BlogCommendFromMachineLearnPai2-3

第一个比较详细,第三个比较简略但是足够了。

特征点 TCP UDP
是否连接 面向连接 面向非连接
传输可靠性 可靠 会丢包,不可靠
应用场景 传输数据量大 传输量小
速度

参考了: CSDN博主china_jeffery


14. TCP首部报文结构

我感觉这个东西不是特别重要,重要的是IPv4之类的这里就水一波。

具体讲解:博客园博主 zzfx的《TCP报文格式详解》,网址:https://www.cnblogs.com/feng9exe/p/8058891.html
在这里插入图片描述

15. TCP的三次握手以及四次挥手

哇,这年头如果面试还回答不出来TCP的三次握手和四次挥手是个什么东西,那估计可以被直接擡走了,那简直就是直接在面试官的嘴里面塞个电饭煲
在这里插入图片描述
整个好活,提一下神

B站up主比划比划鬼畜网的视频《黑人擡棺原版视频》,网址:https://www.bilibili.com/video/BV1NZ4y1j7nw?from=search&seid=12079556593468117240


言归正传,这个东西真的很重要,确实也是非常非常基础。最好还是搞个十分正经的文章去复习一下,可以看我的装载文章:
动画解决TCP 三次握手与四次挥手(附十道面试题)(装载)》,网址:https://blog.csdn.net/qq_45877524/article/details/105723587

最主要是找了一些题目比较方便理解。


部分内容装载至CSDN博主 青柚_的《TCP的三次握手与四次挥手理解及面试题(很全面)》,网址:https://blog.csdn.net/qq_38950316/article/details/81087809

部分内容装载至知乎用户低端叫兽在的回答《关于三次握手和四次挥手,面试官想听到怎样的回答?》,网址:https://www.zhihu.com/question/271701044

15.1 为什么客户端最后还要等待2MSL?(CSDN博主 小书go)

MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

15.2 如果已经建立了连接,但是客户端突然出现故障了怎么办?(CSDN博主 小书go)

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。


15.3 为什么不能用两次握手进行连接?(CSDN博主 青柚_)

3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。


15.4 如果已经建立了连接,但是客户端突然出现故障了怎么办?(CSDN博主 青柚_)

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。


15.5 为什么关闭连接要设计成四次?(低端叫兽)

因为关闭连接时,server端收到客户端的fin报文,并不会立即关闭socket,只能先回复一个ack告诉client我已经收到你的关闭请求了,同时可能server还有数据没传输完,只有等server端数据传输完成了 才能发送fin报文,所以这个地方要分两次发送,这样就有了四次挥手.


15.6 服务端运行一段时间后,套接字出现了大量的Close_Wait状态,最有可能是什么原因导致的?(低端叫兽)

close-wait状态是因为client已经发出释放连接信号了 已经没有数据传输过来,但是server端还有数据未发送完,这个时候就有close-wait状态了!


15.7 为什么基于TCP的程序往往都有个应用层的心跳检测机制?(低端叫兽)

是为了预防建立好的连接突然客户端故障了,服务器不能一直等待下去,需要一个计时器和探测包来检测.


15.8 服务端的Time_Wait状态再哪个阶段出现?持续多久?为什么要设计这么一个状态?(低端叫兽)

timewait阶段是最后阶段发送确认收到server端的fin报文释放连接请求后回复给server端ack报文,之后client端就进入time_wait阶段.

持续多久即是问为什么不马上关闭直接进入closed阶段,主要是考虑到网络的不可靠,假如client最后阶段发送给server端端ack报文由于网络原因丢失了server没收到呢,server端会重新发送fin报文过来,这个时候client端就要等.

等多久?等一个计时器时间2MSL,如果该时间段内再次收到server的fin报文 那client就必须回复. 如果没有收到,client就认为server端已经接收到了最后的ack报文.


16. TCP滑动窗口与拥塞机制

这个东西的重要性比不上三次握手、四次挥手,但是考题中也会遇到。

16.1 TCP滑动窗口

b站上有一个视频比较nice的可视化了滑动窗口的机制。

tcp滑动窗口的完美解释

来自于up主 今天单词背了吗O_o 的tcp滑动窗口的完美解释,网址:https://www.bilibili.com/video/BV1FE411C7dk?from=search&seid=6007213953266071805
这里可以看我的装载文章:
TCP之滑动窗口协议(动画演示)(装载)》,网址:https://blog.csdn.net/qq_45877524/article/details/105854591

16.2 TCP拥塞机制

自我检讨这个东西确实不熟,回首掏的时候补上。
在这里插入图片描述
还是贴出几个文章链接吧:

  1. CSDN博主sHuXnHs的 《TCP拥塞控制机制(附面试题)》,网址:https://blog.csdn.net/shuxnhs/article/details/80644531
  2. CSDN博主lt_李木子的《TCP的拥塞控制(详解)》,网址:https://blog.csdn.net/qq_41431406/article/details/97926927?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
  3. CSDN博主sicofield的《TCP的拥塞控制》,网址:https://blog.csdn.net/sicofield/article/details/9708383?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3

第一个的腾讯题目很nice,但是讲的地方会有部分错误,第二个没什么问题没有题目熟悉


17 比较nice的题目收集,内附答案,侵权立删

  1. 知乎用户路人甲的文章《常见面试题整理–计算机网络篇(每位开发者必备)》,网址:https://zhuanlan.zhihu.com/p/24001696
  2. CSDN博主[Object object]的《TCP 和 UDP 的区别》,网址:https://blog.csdn.net/zhang6223284/article/details/81414149?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2
  3. 至CSDN博主 青柚_的《TCP的三次握手与四次挥手理解及面试题(很全面)》,网址:https://blog.csdn.net/qq_38950316/article/details/81087809
  4. 知乎用户低端叫兽在的回答《关于三次握手和四次挥手,面试官想听到怎样的回答?》,网址:https://www.zhihu.com/question/271701044
  5. CSDN博主逃离地球的小小呆的《子网划分详解与子网划分实例精析》,网址:https://blog.csdn.net/gui951753/article/details/79412524
  6. CSDN博主sHuXnHs的 《TCP拥塞控制机制(附面试题)》,网址:https://blog.csdn.net/shuxnhs/article/details/80644531
  7. 知乎用户 何柄融 的《通过计算机网络的一些题目加深理解》,网址:https://zhuanlan.zhihu.com/p/38223259

后面没有名字代表和前面题目一样

知识点可能比较乱,将就一下


17.1 请简述TCP\UDP的区别(知乎:路人甲)

  1. TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
  2. TCP提供可靠的服务(数据传输),UDP无法保证
  3. TCP面向字节流,UDP面向报文
  4. TCP数据传输慢,UDP数据传输快

17.2 请简单说一下你了解的端口及对应的服务?

在这里插入图片描述


17.3 说一说TCP的三次握手

在这里插入图片描述


17.4 说一说TCP的四次挥手

数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。

  1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗*∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

17.5 有哪些私有(保留)地址?

A类:10.0.0.0 - 10.255.255.255
B类:172.16.0.0 - 172.31.255.255
C类:192.168.0.0 - 192.168.255.255


17.6 IP地址分为哪几类?简单说一下各个分类

地址范围 高序位 用途 百分比
A 0.0.0.0 - 127.255.255.255 0 单播/特殊 1/2
B 128.0.0.0 - 191.255.255.255 10 单播/特殊 1/4
C 192.0.0.0 - 223.255.255.255 110 单播/特殊 1/4
D 224.0.0.0 - 239.255.255.255 1110 组播 1/16
E 240.0.0.0 - 255.255.255.255 1111 保留 1/16

17.7 在浏览器中输入网址之后执行会发生什么?

  1. 查找域名对应的IP地址。这一步会依次查找浏览器缓存,系统缓存,路由器缓存,ISPNDS缓存,根域名服务器
  2. 浏览器向IP对应的web服务器发送一个HTTP请求
  3. 服务器响应请求,发回网页内容
  4. 浏览器解析网页内容

17.8 简单解释一些ARP协议的工作过程

在这里插入图片描述


17.9 说一说OSI七层模型

在这里插入图片描述


17.10 说一说TCP/IP四层模型

在这里插入图片描述
前面有一张图非常详细。


17.11 HTTP 协议包括哪些请求?

  1. GET:对服务器资源的简单请求
  2. POST:用于发送包含用户提交数据的请求
  3. HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报头
  4. PUT:传说中请求文档的一个版本
  5. DELETE:发出一个删除指定文档的请求
  6. TRACE:发送一个请求副本,以跟踪其处理进程
  7. OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
  8. CONNECT:用于ssl隧道的基于代理的请求

17.12 简述HTTP中GET和POST的区别

从原理性看:

  1. 根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的
  2. 根据HTTP规范,POST请求表示可能修改服务器上资源的请求

从表面上看:

  1. GET请求的数据会附在URL后面,POST的数据放在HTTP包体
  2. POST安全性比GET安全性高

17.13 TCP/UDP里面什么是面向连接,什么是面向无连接?([Object object])

在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会


17.14 TCP 为什么是可靠连接

  1. 通过 TCP 连接传输的数据无差错,不丢失,不重复,且按顺序到达。
  2. TCP 报文头里面的序号能使 TCP 的数据按序到达
  3. 报文头里面的确认序号能保证不丢包,累计确认及超时重传机制
  4. TCP 拥有流量控制及拥塞控制的机制

17.15 (TCP三次握手)为什么客户端最后还要等待2MSL?(CSDN博主 小书go)

MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

17.16(TCP三次握手) 如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。


17.17(TCP三次握手) 为什么不能用两次握手进行连接?(CSDN博主 青柚_)

3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。

现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。按照两次握手的协定,S认为连接已经成功地建立了,可以开始发送数据分组。可是,C在S的应答分组在传输中被丢失的情况下,将不知道S 是否已准备好,不知道S建立什么样的序列号,C甚至怀疑S是否收到自己的连接请求分组。在这种情况下,C认为连接还未建立成功,将忽略S发来的任何数据分 组,只等待连接确认应答分组。而S在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。


17.18 (TCP三次握手) 如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。


17.19 (TCP三次握手)为什么关闭连接要设计成四次?(低端叫兽)

因为关闭连接时,server端收到客户端的fin报文,并不会立即关闭socket,只能先回复一个ack告诉client我已经收到你的关闭请求了,同时可能server还有数据没传输完,只有等server端数据传输完成了 才能发送fin报文,所以这个地方要分两次发送,这样就有了四次挥手.


17.20 (TCP三次握手) 服务端运行一段时间后,套接字出现了大量的Close_Wait状态,最有可能是什么原因导致的?

close-wait状态是因为client已经发出释放连接信号了 已经没有数据传输过来,但是server端还有数据未发送完,这个时候就有close-wait状态了!


17.21 (TCP三次握手) 为什么基于TCP的程序往往都有个应用层的心跳检测机制?

是为了预防建立好的连接突然客户端故障了,服务器不能一直等待下去,需要一个计时器和探测包来检测.


17.22 (TCP三次握手) 服务端的Time_Wait状态再哪个阶段出现?持续多久?为什么要设计这么一个状态?

timewait阶段是最后阶段发送确认收到server端的fin报文释放连接请求后回复给server端ack报文,之后client端就进入time_wait阶段.

持续多久即是问为什么不马上关闭直接进入closed阶段,主要是考虑到网络的不可靠,假如client最后阶段发送给server端端ack报文由于网络原因丢失了server没收到呢,server端会重新发送fin报文过来,这个时候client端就要等.

等多久?等一个计时器时间2MSL,如果该时间段内再次收到server的fin报文 那client就必须回复. 如果没有收到,client就认为server端已经接收到了最后的ack报文.


17.23 (C类子网划分子网划分的计算)(逃离地球的小小呆)题目一

255.255.255.128 (/25)
128的二进制表示为10000000,只有1位用于定义子网,余下7位用于定义主机。这里将对C类网络192.168.10.0进行子网划分。
网络地址=192.168.10.0
子网掩码=255.255.255.128
回答五大问题:

  1. 多少个子网?
    在128( 10000000 )中,取值为1的位数为1,借用了一位主机位,因此答案为2^1=2。

  2. 每个子网多少台主机?
    有7个主机位取值为o( 10000000),还剩下7位主机位,因此答案是2^7-2= 126台主机。

  3. 有哪些合法的子网?
    256 -128 = 128。也就是子网的增量是128.因此子网为0和128

  4. 每个子网的广播地址是什么?
    在下一个子网之前的数字中,所有主机位的取值都为1,是当前子网的广播地址。对于子网0,下一个子网为128,因此其广播地址为127

  5. 每个子网包含哪些合法的主机地址?
    合法的主机地址为子网地址和广播地址之间的数字。要确定主机地址,最简单的方法是写出子网地址和广播地址,这样合法的主机地址就显而易见了。
    在这里插入图片描述

小小呆的这几个问题比较详细的讲解都可以看它的这个文章:
CSDN博主逃离地球的小小呆的《子网划分详解与子网划分实例精析》,网址:https://blog.csdn.net/gui951753/article/details/79412524


17.24 子网划分的题目 2

255.255.255.192 (/26)
在第二个示例中,我们将使用子网掩码255.255.255.192对网络192.168.10.0进行子网划分。
网络地址=192.168.10.0
子网掩码=255.255.255.192
下面来回答五大问题

  1. 多少个子网?
    在192(11000000)中,取值为1的位数为2,因此答案为2^2=4个子网。
  2. 每个子网多少台主机?有6个主机位的取值为o(11000000),因此答案是2^6-2=62台主机。
  3. 有哪些合法的子网?
    256 -192 = 64。所以子网的步长[增量]为64,因此子网为0、64、128和192
  4. 每个子网的广播地址是什么?
    在下一个子网之前的数字中,所有主机位的取值都为1,是当前子网的广播地址。对于子网0,下一个子网为64,因此其广播地址为63。以此类推。
  5. 合法的主机地址有哪些?
    合法的主机地址为子网地址和广播地址之间的数字。要确定主机地址,最简单的方法是写出子网地址和广播地址,这样合法的主机地址就显而易见了。
    在这里插入图片描述

17.25 子网划分的题目 3

从这个案例开始,我不再一一回答这五大问题,大部分的思考是重复的,我只给出问题和图表类型的答案。
255.255.255.224 (/27)
这次我们将使用子网掩码255.255.255.224对网络192.168.10.0进行子网划分。
网络地址=192.168.10.0
子网掩码=255.255.255.224
在这里插入图片描述


17.26 子网划分的题目 4

255.255.255.240 (/28)
再来看一个示例:
网络地址=192.168.10.0
子网掩码=255.255.255.240
在这里插入图片描述


17.27 子网划分的题目 5

255.255.255.248 (/29)
继续练习:
网络地址=192.168.10.0
子网掩码=255.255.255.248
在这里插入图片描述


17.28 已知IP地址和子网掩码求子网划分 1

已知ip地址=192.168.10.33 ,子网掩码=255.255.255.224,求该网络的子网划分。

  1. 求出子网增量:
    由于子网掩码是224,所以子网步长为256-224=32
  2. 求有哪些合法子网:
    由上文知道,子网的步长为32.因此子网为0、32、64等等
  3. 求出该Ip地址对应的子网号。
    因为主机地址33位于子网32和64之间,因此属于子网192.168.10.32
  4. 求该子网对应的广播地址:
    下一个子网为64,因此子网32的广播地址为63(广播地址总是下一个子网之前的数字)。
  5. 求合法的主机地址范围:
    33~62(子网和广播地址之间的数字)。

17.29 已知IP地址和子网掩码求子网划分 2

ip地址=192.168.10.174
子网掩码=255.255.255.240.合法的主机地址范围是多少呢?

解答:子网掩码为240,因此将256减去240,结果为16,这是子网增量。要确定所属的子网,只需从零开始不断增加16,并在超过主机地址174后停止:0、16、32、48、64、80、96、112、128、144、160、176等。主机地址174位于160和176之间,因此所属的子网为160。广播地址为175,合法的主机地址范围为161~174。

17.30 已知IP地址和子网掩码求子网划分 3

ip地址=192.168.10.17
子网掩码=255.255.255.252 该IP地址属于哪个子网?该子网的广播地址是什么?

256 -252= 4,因此子网为0、4、8、12、16、20等(除非专门指出,否则总是从0开始)。主机地址17位于子网16和20之间,因此属于子网192.168.10.16,而该子网的广播地址为19,合法的主机地址范围为17-18。


17.31B类地址 已知网络地址和子网掩码求子网划分 1

在这里插入图片描述
在B类地址中,有16位可用于主机地址。这意昧着最多可将其中的14位用于子网划分,因为至少需要保留2位用于主机编址。使用/16意味着不对B类网络进行子网划分,但它是一个可使用的子网掩码。

255.255.128.0 (/17)
网络地址=172.16.0.0
子网掩码=255.255.128.0

  1. 多少个子网?
    2^1 =2 (与C类网络相同)借用了一位主机位。
  2. 每个子网多少台主机?
    2^15 -2 = 32766 (主机位一共15位,第三个字节7位,第四个字节8位)。
  3. 有哪些合法的子网?
    256 -128 = 128,因此子网为0和128。鉴于子网划分是在第三个字节中进行的,因此子网号实际上为0.0和128.0
  4. 每个子网的广播地址是什么?(跟C类相同,广播地址总是下一个子网前面的数)
    合法的主机地址是什么?(子网号与广播地址之间的地址就是合法的主机地址)

17.32 已知网络地址和子网掩码求子网划分 2

255.255.255.128 (/25)
这是一个非常难但是却十分适合生产环境的子网划分组合
网络地址=172.16.0.0
子网掩码=255.255.255.128

  1. 多少个子网?
    2^9=512。一共借用了9个主机位
  2. 每个子网多少台主机?
    2^7-2 = 126。 还有16-9=7位主机位
  3. 有哪些合法的子网?
    这是比较棘手的部分。这个地方的子网增量应该是 256-255=1,因此第三个字节的可能取值为0、1 、2、3…255;但别忘了,第四个字节还有一个子网位。还记得前面如何在C类网络中处理只有一个子网位的情况吗?这里的处理方式相同。也就是说第三个字节的每个取值都有0和128这两种情况。例如,如果第三个字节的取值为3,则对应的两个子网为3.0和3.128。因此总共有512个子网。
  4. 每个子网的广播地址是什么?(下一个子网地址的前一位)
    合法的主机地址是什么?(介于子网地址和该子网的广播地址之间的就是主机地址)
    下面用图表列出这个例子的子网划分结果:
    在这里插入图片描述

17.33 已知ip地址和子网掩码求子网划分

当使用cidr表示子网划分,网络位的位数>24时,比如/25,/27.我们只需要考虑第四个字节。<=24时,我们只需要考虑第三个字节,因为第四个字节的主机位并没有被借用,并没有参与到子网划分。

问题:172.16.10.33/27属于哪个子网?该子网的广播地址是多少?
答案:这里只需考虑第四个字节。256-224=32,故第四个字节的变化为0、32、64…。33位于32和64之间,但子网号还有一部分位于第三个字节,因此
答案是该地址位于子网10.32中。由于下一个子网为10.64,该子网的广播地址为172.16.10.63


17.34 A类子网划分实例 已知网络地址和子网掩码求子网划分 1

A类网络的子网划分与B类和C类网络没有什么不同,但需要处理的是24位,而B类和C类网络中需处理的分别是16位和8位。
可用于A类的所有子网掩码:
在这里插入图片描述

255.255.240.0(/20)
网络地址=10.0.0.0
子网掩码=255.255.240.0(/20)时,12位用于子网划分,余下12位用于主机编址。

  1. 多少个子网?
    2^12=4096。

  2. 每个子网的主机数?
    2^12-2=4094

  3. 有哪些合法的子网?
    需要考虑哪些字节?借用的主机号来自于第二和第三个字节,因此要考虑第二个和第三个字节,在第二个字节中,子网号的间隔为1;在第三个字节中,子网号为0、16、32等,因为256-240=160

  4. 每个子网的广播地址是什么?

  5. 合法的主机地址是什么?
    具体划分如表中所示:
    在这里插入图片描述

17.35 已知ip地址和子网掩码求子网划分

ip地址=10.1.3.65/23
求该ip地址对应的子网以及该子网合法的主机地址和广播地址:
**回答:**首先,如果不知道/23对应的子网掩码,你就回答不了这个问题。它对应的子网掩码为255.255.254.0。这里需要注意的字节为第三个。256-254=2,因此第三个字节的子网号为0、2、4、6等。在这个问题中,主机位于子网2.0中,而下一个子网为4.0,因此该子网的广播地址为3.255。10.1.2.1~10.1.3.254中的任何地址都是该子网中合法的主机地址。

17.36 (sHuXnHs)TCP的拥塞控制机制是什么?请简单说说。

我们知道TCP通过一个定时器(timer)采样了RTT并计算RTO,但是,如果网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,然而重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这就导致了恶性循环,最终形成“网络风暴” —— TCP的拥塞控制机制就是用于应对这种情况。
首先需要了解一个概念,为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”(Congestion Window),在发送数据时,将拥塞窗口的大小与接收端ack的窗口大小做比较,取较小者作为发送数据量的上限。
拥塞控制主要是四个算法:
1.慢启动:意思是刚刚加入网络的连接,一点一点地提速,不要一上来就把路占满。
连接建好的开始先初始化cwnd = 1,表明可以传一个MSS大小的数据。
每当收到一个ACK,cwnd++; 呈线性上升
每当过了一个RTT,cwnd = cwnd*2; 呈指数让升
阈值ssthresh(slow start threshold),是一个上限,当cwnd >= ssthresh时,就会进入“拥塞避免算法”
2.拥塞避免:当拥塞窗口 cwnd 达到一个阈值时,窗口大小不再呈指数上升,而是以线性上升,避免增长过快导致网络拥塞。
每当收到一个ACK,cwnd = cwnd + 1/cwnd
每当过了一个RTT,cwnd = cwnd + 1
拥塞发生:当发生丢包进行数据包重传时,表示网络已经拥塞。分两种情况进行处理:
等到RTO超时,重传数据包
sshthresh = cwnd /2
cwnd 重置为 1
3.进入慢启动过程
在收到3个duplicate ACK时就开启重传,而不用等到RTO超时
sshthresh = cwnd = cwnd /2
进入快速恢复算法——Fast Recovery
4.快速恢复:至少收到了3个Duplicated Acks,说明网络也不那么糟糕,可以快速恢复。
cwnd = sshthresh + 3 * MSS (3的意思是确认有3个数据包被收到了)
重传Duplicated ACKs指定的数据包
如果再收到 duplicated Acks,那么cwnd = cwnd +1
如果收到了新的Ack,那么,cwnd = sshthresh ,然后就进入了拥塞避免的算法了。


17.37 (知乎:何柄融)题目 一

长度为100字节的应用层数据交给传输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部工18字节。试求数据的传输效率。数据的传输效率是指发送的应用层数据除以所发送的总数据(即应用数据加上各种首部和尾部的额外开销)。若应用层数据长度为1000字节,数据的传输效率是多少?

  1. 100/(100+20+20+18)=63.3%

  2. 1000/(1000+20+20+18)=94.5%

通过这道题目对传输效率有一定的认识,然后对数据包的底层进一步加深理解。


17.38 试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。

(1)电路交换:端对端通信质量因约定了通信资源获得可靠保障,对连续传送大量数据效率高。(2)报文交换:无须预约传输带宽,动态逐段利用传输带宽对突发式数据通信效率高,通信迅速。(3)分组交换:具有报文交换之高效、迅速的要点,且各分组小,路由灵活,网络生存性能好。

这到题目需要先理解三种交换方式的原理所在,电路交换就像打电话一样,先建立连接,然后再进行通信。报文交换和分组交换的原理差不多,只不过报文交换是把全部数据都一次性存储转发,而分组交换则分成了多次。


17.39 协议与服务有何区别?有何关系?

网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:

(1)语法:即数据与控制信息的结构或格式。

(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。

(3)同步:即事件实现顺序的详细说明。协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下面一层提供服务。

协议和服务的概念的区分: 1、协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服务用户是透明的。2、协议是“水平的”,即协议是控制两个对等实体进行通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。上层使用所提供的服务必须与下层交换一些命令,这些命令在OSI中称为服务原语。


17.40 假定某信道受奈氏准则限制的最高码元速率为20000码元/秒。如果采用振幅调制,把码元的振幅划分为16个不同等级来传送,那么可以获得多高的数据率(b/s)?

C=RLog2(16)=20000b/s4=80000b/s

这题考查的是奈奎斯特公式:C = 2B * log2 N ( bps )

这里B是物理带宽,而2B为最高码元传输速率=20000码元/秒.

N=16.因为也表示16个等级.即16个信号离散等级。

所以答案=20000log2 16=200004=8000b/s.


17.41 试说明IP地址与硬件地址的区别,为什么要使用这两种不同的地址?

IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。从而把整个因特网看成为一个单一的、抽象的网络在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

MAC地址在一定程度上与硬件一致,基于物理、能够标识具体的链路通信对象、IP地址给予逻辑域的划分、不受硬件限制。


17.42 某单位分配到一个B类IP地址,其net-id为129.250.0.0.该单位有4000台机器,分布在16个不同的地点。如选用子网掩码为255.255.255.0,试给每一个地点分配一个子网掩码号,并算出每个地点主机号码的最小值和最大值

4000/16=250,平均每个地点250台机器。 B类IP地址,而子网掩码为255.255.255.0,则说明后面16位中的8位也是网络地址,所以主机数只有8位。

子网号(subnet-id) 子网网络号 主机IP的最小值和最大值

1: 00000001 129.250.1.0 129.250.1.1—129.250.1.254

2: 00000010 129.250.2.0 129.250.2.1—129.250.2.254

3: 00000011 129.250.3.0 129.250.3.1—129.250.3.254

4: 00000100 129.250.4.0 129.250.4.1—129.250.4.254

5: 00000101 129.250.5.0 129.250.5.1—129.250.5.254

6: 00000110 129.250.6.0 129.250.6.1—129.250.6.254

7: 00000111 129.250.7.0 129.250.7.1—129.250.7.254

8: 00001000 129.250.8.0 129.250.8.1—129.250.8.254

9: 00001001 129.250.9.0 129.250.9.1—129.250.9.254

10: 00001010 129.250.10.0 129.250.10.1—129.250.10.254

11: 00001011 129.250.11.0 129.250.11.1—129.250.11.254

12: 00001100 129.250.12.0 129.250.12.1—129.250.12.254

13: 00001101 129.250.13.0 129.250.13.1—129.250.13.254

14: 00001110 129.250.14.0 129.250.14.1—129.250.14.254

15: 00001111 129.250.15.0 129.250.15.1—129.250.15.254

16: 00010000 129.250.16.0 129.250.16.1—129.250.16.254

17.43 设TCP的ssthresh的初始值为8(单位为报文段)。当拥塞窗口上升到12时网络发生了超时,TCP使用慢开始和拥塞避免。试分别求出第1次到第15次传输的各拥塞窗口大小。你能说明拥塞控制窗口每一次变化的原因吗?

拥塞窗口大小分别为:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9.

首先是慢开始1,2,4,8。然后此后大于ssthresh,改用拥塞避免算法8,9,10,11,12。但是由于到12时发生超时,所以此后从又从1开始,设ssthresh为1/2 *12=6。所以1,2,4,6.然后到了又开始拥塞算法,6,7,8,9 所以,最后就是上面的排序。

17.44 我也想在搞多一个问题,但是差不多就算了,在多就买本考研试题吧

在这里插入图片描述

18. 参考资料:

整个文章中用到的参考资料,网址:https://blog.csdn.net/qq_45877524/article/details/105886501)》

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章