计算机网络期末复习攻略

article/2025/10/23 17:27:25

计算机网络期末复习攻略

一、名词解释

  • IP:Internet Protocol 网际互连协议

  • IPCP:IP Control Protocol IP控制协议

  • ARP:Address Resolution Protocol 地址解析协议

  • RARP:Reverse Address Resolution Protocol 逆地址解析协议

  • HTTP:Hypertext Transfer Protocol 超文本传输协议

  • ICMP:Internet Control Message Protocol 网际控制报文协议

  • DNS:Domain Name System 域名系统

  • PPP:Point-to-Point Protocol 点对点协议

  • TCP:Transmission Control Protocol 传输控制协议

  • UDP:User Datagram Protocol 用户数据报协议

  • WWW:World Wide Web 万维网

  • IMAP:Internet Message Access Protocol 网际报文存取协议

  • RIP:Routing Information Protocol 路由信息协议

  • FTP:File Transfer Protocol 文件传输协议

  • TFTP:Trivial File Transfer Protocol 简单文件传输协议

  • DHCP:Dynamic Host Configuration Protocol 动态主机配置协议

  • EGP:External Gateway Protocol 外部网关协议

  • IGP:Interior Gateway Protocol 内部网关协议

  • LAN:Local Area Network 局域网

  • MAN:Metropolitan Area Network

  • NCP:Network Control Protocol 网络控制协议

  • P2P:Peer-to-Peer 对等方式

  • PAN:Personal Area Network 个人区域网

二、简答题

1. DNS 工作原理

DNS:(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,
而不去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫域名解析。

1) DNS 服务

将IP地址与形象易记的域名一一对应起来,使用户在访问服务器或网站时不使用IP地址,而使用简单易记的域名,通过DNS服务器将域名自动解析成IP地址并定位服务器。


2) 正向解析和反向解析

当DNS 客户机向DNS 服务器提交域名查询IP 地址,或DNS 服务器向另一台DNS 服务器提交域名查询IP 地址,DNS 服务器作出响应的过程称为正向解析。反之,当DNS 客户机向DNS 服务器提交IP 地址查询域名,或DNS 服务器向另一台DNS 服务器提交IP 地址查询域名,DNS 服务器作出响应的过程成为反向解析。

3) 递归查询与迭代查询

递归查询:收到客户机查询请求后,DNS 服务器在自己的缓存或区域数据库中查找,如找到则返回结果;如找不到,DNS 服务器指向转发器定义的其他DNS 服务器进行查询,最终将查询结果返回给客户机。

迭代查询:将请求发给根域DNS 服务器,依序从根域查到顶级域,从顶级域查到二级域,再从二级域查到三级域,经此类推直至找到要解析的地址或域名,然后向客户机所在网络的DNS 服务器发出应答信息,DNS 服务器收到信息后转发给客户机。如果最终都没有找到所需的信息,则向客户机返回错误信息。

2. ARP

1) ARP简介

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

2) IP 地址与MAC 地址

MAC 地址是数据链路层和物理层使用的地址,而IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(IP 地址是使用软件实现的)。在发送数据时,数据从高层到低层,然后才到通信链路上传输。使用IP 地址的IP 数据报一旦交给了数据链路层就被封装成了MAC 帧。**MAC 帧在传送时使用的原地址和目的地址都是硬件地址。连接在通信链路上的设备(主机或路由器)在接受MAC 帧时,根据的是MAC 帧首部的硬件地址。**在数据链路层看不到隐藏在MAC 帧中的IP 地址,只有剥去MAC 帧的首部和尾部后把MAC 层的数据交给网络层后,网络层才能在IP数据报的首部中找到源IP 地址和目的IP 地址。

3) 基本功能

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

注意:在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

4) 工作原理

在TCP/IP 协议中,A 给B 发送IP 包时,在A 不知道B 的MAC 地址的情况下,A 就广播一个ARP 请求包,请求包中填有B 的IP ,以太网中的所有计算机都会接收这个请求,而正常情况下只有B 会给出ARP 应答包,包中就填充上了B 的MAC 地址,并回复给A 。A 得到ARP 应答后,将B 的MAC 地址放入本机缓存,便于下次使用。

(1)ARP进程在本局域网上广播发送一个ARP请求分组

(2)本局域网上所有的主机上运行的ARP进程都收到此ARP请求分组。

(3)主机B在ARP分组中见到自己的IP地址就向A发送ARP响应分组,并写入自己的硬件地址,相应分组是普通的单播。

(4)主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

(5)另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。

3. 常用传输媒体

1) 常用传输媒体有哪些

  • **双绞线 :**屏蔽双绞线 STP(Shielded Twisted Pair) 无屏蔽双绞线 UTP(Unshielded Twisted Pair)
  • **同轴电缆:**50W 同轴电缆 75W 同轴电缆
  • **光缆:**单模光纤 多模光纤
  • **无线传输:**短波通信 / 微波 / 卫星通信

2)简介

  • 双绞线分屏蔽双绞线和无屏蔽双绞线。由两根相互绝缘的导线组成。可以传输模拟信号,也可以传输数字信号,有效带宽达250kHz,通常距离一般为几道十几公里。导线越粗其通信距离越远。在数字传输时,若传输速率为每秒几兆比特,则传输距离可达几公里。一般用作电话线传输声音信号。虽然双绞线容易受到外部高频电磁波的干扰,误码率高,但因为其价格便宜,且安装方便,既适于点到点连接,又可用于多点连接,故仍被广泛应用。
  • 同轴电缆分基带同轴电缆和宽带同轴电缆,其结构是在一个包有绝缘的实心导线外,再套上一层外面也有一层绝缘的空心圆形导线。由于其高带宽(高达300~400Hz)、低误码率、性能价格比高,所以用作LAN中。同轴电缆的最大传输距离随电缆型号和传输信号的不同而不同,由于易受低频干扰,在使用时多将信号调制在高频载波上。
  • 光导纤维以光纤维载体,利用光的全反向原理传播光信号。其优点是直径小、质量轻:传播频带款、通信容量大:抗雷电和电磁干扰性能好,五串音干扰、保密性好、误码率低。但光电接口的价格较昂贵。光纤被广泛用于电信系统铺设主干线。
  • 无线电微波通信分为地面微波接力通信和卫星通信。其主要优点是频率高、频带范围宽、通信信道的容量大;信号所受工业干扰较小、传播质量高、通信比较稳定;不受地理环境的影响,建设投资少、见效快。缺点是地面微波接力通信在空间是直线传播,传输距离受到限制,一般只有50km,隐蔽性和保密性较差;卫星通信虽然通信距离远且通信费用与通信距离无关,但传播时延较大,技术较复杂,价格较贵。

3)特点

  • 双绞线:
    • 可以传输模拟信号、数字信号
    • 双绞线容易受到外部高频电子波的干扰,误码率高
    • 价格便宜、安装方便、既适用点到点连接又可用于多点连接
  • 同轴电缆:
    • 在局域网发展的初期曾广泛使用同轴电缆作为传输媒体
    • 具有很好的抗干扰特性
  • 光导纤维:
    • 传输损耗小,可实现长距离传输
    • 体积小,质量轻
    • 传输速率高,通信容量大
    • 抗雷电和电磁干扰性能好,保密性好,误码率低
  • 无线电微波通信
    • 通信容量大,传输频率宽
    • 受外界干扰小,传输质量高
    • 初建成本低,易于跨越山区、江河

4. 信道复用

1)为什么要使用信道复用技术

信道复用的目的是让不同的计算机连接到相同的信道上,以共享信道资源。在一条传输介质上传输多个信号,提高线路的利用率,降低网络的成本。采用信道复用是为了提高系统容量和系统的效率。

2)信道复用技术都有哪些

常用的信道复用技术有四种:频分复用、时分复用、波分复用和码分复用。

频分复用(Frequency Division Multiplexing,FDM)就是将用于传输信道的总带宽划分成若干个子频带(或称子信道),每一个子信道传输一路信号。频分复用要求总频率宽度大于各个子信道频率之和,同时为了保证各子信道中所传递的信号互不干扰,应在各子信道之间设立隔离带,这样就保证了各路信号互不干扰(条件之一)。频分复用技术的特点是所有子信道传输的信号以并行的方式工作,每一路信号传输时可不考虑传输时延,因而频分复用技术取得了非常广泛的应用。频分复用除传统意义上的频分复用(FDM)外还有一种是正交频分复用(OFDM)。

时分复用(Time Division Multiplexing,TDM)就是将提供给整个信道传输信息的时间划分成若干时间片(简称时隙),并将这些时隙分配给每一个信号源使用,每一路信号在自己的时隙内单独占用信道进行数据传输。时分复用技术的特点是时隙事先规划分配好且固定不变,所以有时候也叫同步时分复用。其优点是时隙分配固定,便于调节控制,适于数字信息的传输;缺点是当某信号源没有数据传输时,它所对应的信道会出现空闲而其他繁忙的信道无法占用这个空闲的信道,因此会降低线路的利用率。

频分复用(Wavelength Division Multiplexing, WDM)在光通信领域人们习惯按波长而不是按频率来命名。因此所谓的波分复用其本质上也是频分复用而已。WDM是在一根光纤上承载多个波长(信道)系统将一根光纤转换为多条“虚拟”光纤,每条“虚拟”光纤独立工作在不同波长上,这样极大地提高了光纤的传输容量。

码分复用(Code Division Multiplexing,CDM)是靠不同的编码来区分各路原始信号的一种复用方式,主要和各种多址技术结合产生了各种接入技术,包括无线和有线接入。

5. 数据链路层三大任务

1)封装成帧

数据链路层的发送方应当让接收方的数据链路层知道,所发送的帧是从什么地方开始到什么地方结束。

  • 就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。
  • 接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
  • 分组交换的一个重要概念:就是所有因特网上传送的数据都是以分组(即IP 数据报)为传送单位。
  • 网络层的IP 数据报传送到数据链路层就成为帧的数据部分。在帧的数据部分前面和后面分别添加上首部和尾部,就构成了一个完整的帧。
  • 帧长等于数据部分长度加上帧首部和帧尾部的长度,而首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
  • 首部和尾部还包含许多必要的控制信息,在发送帧时,是从帧首部开始发送。
  • 各种数据链路层协议都要对帧首部和帧尾部的格式有明确的规定。
  • 为了提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和尾部的长度。但是,每一种链路层协议都规定了帧的数据部分长度上限——最大传送单元MTU(Maximum Transfer Unit)。
  • 当数据是由可打印的ASCII码组成的文本文件时,帧定界可以使用特殊的帧定界符。
  • 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。他们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。
  • 当数据在传输中出现差错时,帧定界符的作用更加明显。假定发送端在尚未发完一个帧时突然出现故障,中断了发送。但随后很快又恢复正常,于是重新从头开始发送刚才未发送完的帧。由于使用了帧定界符,在接收端就知道前面收到的数据时个不完整的帧(只有首部SOH,没有传输结束符EOT),必须丢弃。而后面收到的数据有明显的帧定界符(SOH和EOT),因此这是一个完整的帧,应当收下。

2)透明传输

数据链路层传送的比特组合必须是不受限制的。

  • 由于帧的开始和结束的标记是使用专门指明的控制字符,因此,所传输的数据中任何8bit 的组合一定不允许和用作帧定界的控制字符的比特编码一样,否则就会出现帧定界的错误。
  • 当传送的帧使用文本文件组成的帧时(文本文件中的字符是从键盘上输入的),其数据部分显然不会出现像SOH或EOT这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
  • 当数据部分是非ASCII码的文本文件时(如二进制代码的计算机程序或图像等),如果数据中心的某个字符的二进制代码恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地找到帧的边界,把部分帧收下(误以为是完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符SOH)。这样的帧的传输显然就不是透明传输。
  • 为了解决透明传输的问题,就必须设法使数据中可能出现的控制字符在接收端不被解析为控制字符。
  • 解决方法是发送端的数据链路层在数据中出现控制字符的前面加上一个转义字符“ESC”(其十六进制编码是1B)。而在接收端的数据链路层在数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时就删除其中的前面一个。

3)差错检测

数据链路层必须有差错检测功能。

  • 传输差错:可分为两大类,位错和帧错。位错就是最基本的比特差错,帧错就是收到的帧并没有出现错误,但却出现了帧丢失、帧重复或帧失序。
  • 比特差错:就是比特在传输过程中可能会产生差错,即1变成0,0变成1。
  • 误码率BER(Bit Error Rate):就是在一段时间内,传输错误的比特占所传输比特总数的比率。误码率与信噪比有很大的关系,如果提高信噪比,就可以使误码率减小。
  • 实际的通信链路并非理想的,不可能使误码率下降到零。
  • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种检测措施。
  • 目前在数据链路层广泛使用了循环冗余校验CRC(Cycle Redundancy Check)的检测技术。
  • 在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。

因特网广泛使用的数据链路层协议都不适用确认和重传机制,即不要求数据链路层向上层提供可靠传输的服务(因为这要付出的代价太高,不合算)。如果在数据链路层传输数据时除了差错并且需要进行改正,那么改正差错的任务就由上层协议(如,运输层TCP协议)来完成。实验证明,这样可以提高通信效率。

6. 网络层提供的两种服务

1)虚电路服务

  • 传统电信网提供的主要业务是提供电话服务。电信网使用昂贵的程控交换机,用面向连接的通信方式,使电信网络能够向用户(实际上就是电话机)提供可靠传输的服务。
  • 当两个计算机进行通信的步骤:
    • (1)应当先建立连接(但在分组交换中是建立一条虚电路VC(Virtual Circuit)),以保证通信双方所需的一切网络资源。
    • (2)然后双方就沿着已建立的虚电路发送分组。
    • (3)这样的分组的首部就不需要填写完整的目的主机地址,而只需填写这条虚电路的编号(一个不大的整数),因而减少了分组的开销。
    • (4)如果这种通信方式再使用可靠传输的网络协议,就可使所发送的分组无差错按序地到达终点,当然也不丢失、不重复。
    • (5)在通信结束后,要释放建立的虚电路。

2)数据报服务

  • 因特网在设计上就采用了和电信网完全不同的思路。
  • 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
  • 因特网的设计思路:
    • (1)网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每个分组(也就是IP数据报)独立发送,与其前后的分组无关(不进行编号)。
    • (2)网络层不提供服务质量的承诺。也就是说所传送的分组,可能出错、丢失、重复或失序,当然也不保证分组交付的时限。
  • 这种设计思路的好处:
    • (1)网络的造价大大降低。
    • (2)运行方式灵活。
    • (3)能够适应多种应用。

7. TCP/IP

从字面意义上,TCP/IP 是指TCP 和IP 两种协议,然而很多情况下它只是利用IP 进行通信时所必须用到的协议群的统称。

1)计算机网络体系结构分层

OSI七层模型TCP/IP 概念层模型功能TCP/IP 协议族
应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层应用层数据格式化,代码转换,数据加密没有协议
会话层解除或建立与其他接点的联系没有协议
传输层传输层提供端对端的接口TCP,UDP
网络层网络层为数据报选择路由IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层以二进制数据形式在物理媒体上传输数据ISO2110,IEEE802,IEEE802.2

2)数据包

包、帧、数据包、段、消息

  • 包是全能术语
  • 帧用于表示数据链路层中包的单位
  • 数据报是IP 和UDP 等网络层以上的分层中包的单位
  • 段则是表示TCP 数据流中的信息
  • 消息是指应用协议中数据的单位

每个分层中,都会对所发送的数据添加一个首部,在这个首部中包含了该层必要的信息,如发送的不标地址以及协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层的角度看,从上一层收到的包全部都被认为是本层的数据。

数据包首部

网络中传输的数据包由首部和上一层传过来的数据组成,首部的结构由协议的具体规范详细定义。在数据包的首部明确标明了协议应该如何读取数据。

3)数据处理流程

  1. 应用程序处理
    • 首先应用程序会进行编码处理,这些编码相当于OSI 的表示层功能
    • 编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于OSI 的会话层功能
  2. TCP 模块的处理
    • TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个TCP 首部。
  3. IP 模块的处理
    • IP 将TCP传过来的TCP 首部和TCP 数据合起来当做自己的数据,并在TCP 首部加上自己的IP 首部。IP 包生成后,参考路由控制表决定接受此IP 包的路由或主机。
  4. 网络接口(以太网驱动)的处理
    • 从IP 传过来的IP 包对于以太网来说是数据。给这些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过物理层发送给接收端。
  5. 网络接口(以太网驱动)的处理
    • 主机收到以太网包后,首先从以太网包首部找到MAC 地址判断是否为发送给自己的包,若不是则丢弃数据。
    • 如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如IP、ARP等。
  6. IP 模块的处理
    • IP 模块接收到数据后也做类似的处理。从包首部中判断此IP 地址是否和自己的IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如TCP、UDP。
    • 对于有路由器的情况,接收端地址往往不是自己的地址,此时需要借助路由控制表,在调查应该送往的主机或路由器之后再进行转发数据。
  7. TCP 模块的处理
    • 在TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给端口号识别的应用程序。
  8. 应用程序的处理
    • 接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示响应的内容。

8. IP 详解

  • 网络层的主要作用是“实现终端节点之间的通信”,这种终端及诶按之间的通信也叫“点对点通信”。
  • 网络层的下一层——数据链路层的主要作用的在互连同一种数据链路之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端接点之间的数据包传输。
  • IP 大致分为三大作用模块,它们是IP 寻址、路由(最终节点为止的转发)以及IP 分包与组包。

1)IP 地址

IP地址概述
  • 在计算机通信中,为了识别通信对端,必须要有一个类似于地址的识别码进行标识。在数据链路中的 MAC 地址正是用来标识同一个链路中不同计算机的一种识别码。
  • 作为网络层的 IP ,也有这种地址信息,一般叫做 IP 地址。IP 地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此,在 TCP/IP 通信中所有主机或路由器必须设定自己的 IP 地址。
  • 不论一台主机与哪种数据链路连接,其 IP 地址的形式都保持不变。
  • IP 地址(IPv4 地址)由32位正整数来表示。IP 地址在计算机内部以二进制方式被处理。然而,由于我们并不习惯于采用二进制方式,我们将32位的 IP 地址以每8位为一组,分成4组,每组以 “.” 隔开,再将每组数转换成十进制数
IP 地址由网络和主机两部分标识组成

网络标识在数据链路的每个段配置不同的值。网络标识必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP 地址的“主机标识”则不允许在同一个网段内重复出现。由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的 IP 地址都不会相互重叠。即 IP 地址具有了唯一性。

IP地址的分类
  • IP 地址分为四个级别,分别为A类、B类、C类、D类。它根据 IP 地址中从第 1 位到第 4 位的比特列对其网络标识和主机标识进行区分。
  • **A 类 IP 地址是首位以 “0” 开头的地址。**从第 1 位到第 8 位是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0 是 A 类的网络地址。A 类地址的后 24 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。
  • **B 类 IP 地址是前两位 “10” 的地址。**从第 1 位到第 16 位是它的网络标识。用十进制表示的话,128.0.0.0~191.255.0.0 是 B 类的网络地址。B 类地址的后 16 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个。
  • **C 类 IP 地址是前三位为 “110” 的地址。**从第 1 位到第 24 位是它的网络标识。用十进制表示的话,192.0.0.0~223.255.255.0 是 C 类的网络地址。C 类地址的后 8 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。
  • **D 类 IP 地址是前四位为 “1110” 的地址。**从第 1 位到第 32 位是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255 是 D 类的网络地址。D 类地址没有主机标识,常用于多播。
  • 在分配 IP 地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为 0 或全部为 1。因为全部为 0 只有在表示对应的网络地址或 IP 地址不可以获知的情况下才使用。而全部为 1 的主机通常作为广播地址。因此,在分配过程中,应该去掉这两种情况。这也是为什么 C 类地址每个网段最多只能有 254( 28 - 2 = 254)个主机地址的原因。
广播地址
  • 广播地址用于在同一个链路中相互连接的主机之间发送数据包。将 IP 地址中的主机地址部分全部设置为 1,就成了广播地址。
  • 广播分为本地广播和直接广播两种。在本网络内的广播叫做本地广播;在不同网络之间的广播叫做直接广播。
IP 多播
  • 多播用于将包发送给特定组内的所有主机。由于其直接使用 IP 地址,因此也不存在可靠传输。

  • 相比于广播,多播既可以穿透路由器,又可以实现只给那些必要的组发送数据包

  • 多播使用 D 类地址。因此,如果从首位开始到第 4 位是 “1110”,就可以认为是多播地址。而剩下的 28 位可以成为多播的组编号。

  • 此外, 对于多播,所有的主机(路由器以外的主机和终端主机)必须属于 224.0.0.1 的组,所有的路由器必须属于 224.0.0.2 的组。

  • 子网掩码
  • 现在一个 IP 地址的网络标识和主机标识已不再受限于该地址的类别,而是由一个叫做“子网掩码”的识别码通过子网网络地址细分出比 A 类、B 类、C 类更小粒度的网络。这种方式实际上就是将原来 A 类、B 类、C 类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。

  • 子网掩码用二进制方式表示的话,也是一个 32 位的数字。它对应 IP 地址网络标识部分的位全部为 “1”,对应 IP 地址主机标识的部分则全部为 “0”。由此,一个 IP 地址可以不再受限于自己的类别,而是可以用这样的子网掩码自由地定位自己的网络标识长度。当然,子网掩码必须是 IP 地址的首位开始连续的 “1”。

  • 对于子网掩码,目前有两种表示方式。第一种是,将 IP 地址与子网掩码的地址分别用两行来表示。以 172.20.100.52 的前 26 位是网络地址的情况为例,如下

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

  • 第二种表示方式是,在每个 IP 地址后面追加网络地址的位数用 “/ ” 隔开,如下:

img

2)路由

  • 发送数据包时所使用的地址是网络层的地址,即 IP 地址。然而仅仅有 IP 地址还不足以实现将数据包发送到对端目标地址,在数据发送过程中还需要类似于“指明路由器或主机”的信息,以便真正发往目标地址。保存这种信息的就是路由控制表。
  • 该路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。前者也叫做静态路由控制,而后者叫做动态路由控制。
  • IP 协议始终认为路由表是正确的。然后,IP 本身并没有定义制作路由控制表的协议。即 IP 没有制作路由控制表的机制。该表示由一个叫做“路由协议”的协议制作而成。
IP 地址与路由控制
  • IP 地址的网络地址部分用于进行路由控制。
  • 路由控制表中记录着网络地址与下一步应该发送至路由器的地址。
  • 在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录,就选择一个最为吻合的网络地址。
IP 分包与组包
  • 每种数据链路的最大传输单元(MTU)都不尽相同,因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。
  • 任何一台主机都有必要对 IP 分片进行相应的处理。分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。
  • 经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行。路由器虽然做分片但不会进行重组。
路径MTU 发现
  • 分片机制也有它的不足。如路由器的处理负荷加重之类。因此,只要允许,是不希望由路由器进行 IP 数据包的分片处理的。
  • 为了应对分片机制的不足,“路径 MTU 发现” 技术应运而生。路径 MTU 指的是,从发送端主机到接收端主机之间不需要分片是最大 MTU 的大小。即路径中存在的所有数据链路中最小的 MTU 。
  • 进行路径 MTU 发现,就可以避免在中途的路由器上进行分片处理,也可以在 TCP 中发送更大的包。

9. UDP/TCP 详解

  • TCP是面向连接的、可靠的流协议。流就是不间断的数据结构,当应用程序采用TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流量控制”、“拥塞控制”、提高网络利用率等众多功能。
  • UDP 是不具有可靠性的数据报协议。细微的处理会交给它上层的应用去完成。在UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此有时会根据自己的需要进行重发处理。
  • TCP 用于在传输层有必要实现可靠传输的情况;UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。

image-20191027212512703

1)端口号

数据链路和IP 中的地址,分别指的是MAC 地址和IP 地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP 网络中互联的主机和路由器。在传输层也有类似于地址的概念,就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

端口号的确定

  • 标准既定的端口号:这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不是说可以随意使用任何一个端口号。例如 HTTP、FTP、TELNET 等广为使用的应用协议中所使用的端口号就是固定的。这些端口号被称为知名端口号,分布在 0~1023 之间;除知名端口号之外,还有一些端口号被正式注册,它们分布在 1024~49151 之间,不过这些端口号可用于任何通信用途。
  • 时序分配法:服务器有必要确定监听端口号,但是接受服务的客户端没必要确定端口号。在这种方法下,客户端应用程序完全可以不用自己设置端口号,而全权交给操作系统进行分配。动态分配的端口号范围在 49152~65535 之间。

端口号与协议

  • 端口号由其使用的传输层协议决定。因此,不同的传输层协议可以使用相同的端口号。
  • 此外,那些知名端口号与传输层协议并无关系。只要端口一致都将分配同一种应用程序进行处理。

2)UDP

  • UDP 不提供复杂的控制机制,利用IP 提供面向无连接的通信服务。
  • 它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP 也无法进行流量控制等避免网络拥塞行为。
  • 此外,传输途中出现丢包,UDP也不负责重发。
  • 甚至当包的到达顺序出现乱序时也没有纠正的功能。
  • 如果需要以上的细节控制,不得不交由采用UDP 的应用程序去处理。
  • UDP 常用于以下几个方面:
    • 包总量较少的通信(DNS、SNMP等);
    • 视频、音频等多媒体通信(即时通信);
    • 限定于LAN等特定网络中的应用通信;
    • 广播通信(广播、多播)。

3)TCP

  • TCP 充分地实现了数据传输时的各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
  • 此外,TCP 作为一种面向连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据TCP 的这些机制,在IP 这种无连接的网络上也能够实现高可靠性的通信(主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现)。
三次握手
  • TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。
  • 所谓三次握手是建立一个TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。

img

  • 第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。
  • 第二次握手:服务器端收到数据包后,由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。
  • 第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端直接可以开始传输数据了。
四次挥手
  • 四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
  • 由于TCP 连接是全双工的,因此每个方向必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN 来终止这一方向的连接,收到一个FIN 只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP 连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

img

  • 中断连接端可以是客户端,也可以是服务器端。
  • 第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。即客户端没有数据要继续发送,但是如果服务器端还有数据没有发送完毕可以继续发送。
  • 第二次挥手:服务器端收到FIN 后,先发送ack=M+1,告诉客户端收到了请求,但是还没有准备好,请继续等待消息。这时客户端进入FIN_WAIT_2状态,继续等待服务器端的FIN 报文。
  • 第三次挥手:当服务器端确定数据已经发送完成,则向客户端发送FIN=N报文,告诉客户端数据已经发送完毕,准备好关闭连接了。服务器端进入LAST_ACK状态。
  • 第四次挥手:客户端收到FIN=N 报文后,知道可以关闭连接了,但是还是要向服务器端发送ack=N+1进行确认,发送后进入TIME_WAIT状态,如果服务器端没收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待2MSL后依然没有收到回复,则证明服务器端已经正常关闭,则服务器端也关闭连接。最终完成四次挥手。

问题汇总

  1. 为什么要三次握手

    为了防止已失效的连接请求报文突然又传送到了服务端,因为产生错误。

    具体解释: “已失效的连接请求报文段”产生情况:

    client 发出的第一个连接请求报文段并没有丢失,而是在某个网络节点长时间滞留,因此导致延误到连接释放以后的某个时间才到达 service。如果没有三次握手,那么此时server收到此失效的连接请求报文段,就误认为是 client再次发出的一个新的连接请求,于是向 client 发出确认报文段,同意建立连接,而此时 client 并没有发出建立连接的情况,因此并不会理会服务端的响应,而service将会一直等待client发送数据,因此就会导致这条连接线路白白浪费。

    如果此时变成两次挥手行不行?

    这个时候需要明白全双工与半双工,再进行回答。比如:

    • 第一次握手: A给B打电话说,你可以听到我说话吗?
    • 第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?
    • 第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!

    在三次握手之后,A和B都能确定这么一件事: 我说的话,你能听到; 你说的话,我也能听到。 这样,就可以开始正常通信了,如果是两次,那将无法确定。

  2. 为什么要四次挥手

    TCP 协议是一种面向连接,可靠,基于字节流的传输层通信协议。TCP 是全双工模式(同一时刻可以同时发送和接收),这就意味着,当主机1发出 FIN 报文段时,只是表示主机1已结没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回 ACK报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会中断这次TCP连接。

  3. 为什么要等待 2MSL

    MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络内的最长时间

    原因如下:

    • 保证TCP协议的全双工连接能够可靠关闭
    • 保证这次连接的重复数据从网络中消息

    第一点: 如果主机1直接 关闭,由于IP协议的不可靠性或者其他网络原因,导致主机2没有收到主机1最后回复的 ACK。那么主机2就会在超时之后继续发送 FIN,此时由于主机1已经关闭,就找不到与重发的 FIN 对应的连接。所以,主机1 不是直接进入 关闭,而是TIME_WAIT 状态。当再次收到 FIN 的时候,能够保证对方收到 ACK ,最后正确关闭连接。

    第二点:如果主机1直接 关闭,然后又再向主机 2 发起一个新连接,我们不能保证这个新连接与刚才关闭的连接端口是不同的。也就是说有可能新连接和老连接的端口号是相同的。一般来说不会发生什么问题,但还是有特殊情况出现;假设新连接和已经关闭的老连接端口号是一样的,如果前一次连接的某些数据仍然滞留在网络中( Lost Duplicate ),那些延迟数据在建立新连接之后才到达主机2,由于新连接和老连接的端口号是一样的,TCP 协议就认为哪个延迟的数据时属于新连接的,这样就和真正的新连接的数据包发生混淆了。所以TCP连接要在 TIME_WAIT 状态等待两倍 MSL ,保证本次连接的所有数据都从网络中消失。

通过序列号与确认应答提高可靠性
  • 在TCP 中,在发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。当发送端将数据发出之后会等待对端的确认应答。如果有确认应答,说明数据已经成功到达对端。反之,则数据丢失的可能性很大。
  • 在一定时间内没有等待到确认应答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。
  • 未收到确认应答并不意味着数据一定丢失。也可能是数据对方已经收到,只是返回的确认应答在途中丢失。这种情况也会导致发送端误以为数据没有到达目的地而重发数据。
  • 此外,也有可能因为一些其他原因导致确认应答延迟到达,在源主机重发数据以后才到达的情况也屡见不鲜。此时,源主机只要按照重传机制重发数据即可。
  • 对于目标主机来说,反复收到相同的数据是不可取的。为了对上层应用提供可靠的传输,目标主机必须放弃重复的数据包。为此我们引入了序列号。
  • 序列号是按照顺序给发送数据的每一个字节(8位字节)都标上号码的编号。接收端查询接收数据 TCP 首部中的序列号和数据的长度,将自己下一步应该接收的序列号作为确认应答返送回去。通过序列号和确认应答号,TCP 能够识别是否已经接收数据,又能够判断是否需要接收,从而实现可靠传输。
重发超时的确定
  • **重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。**如果超过这个时间仍未收到确认应答,发送端将进行数据重发。最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。
  • TCP 要求不论处在何种网络环境下都要提供高性能通信,并且无论网络拥堵情况发生何种变化,都必须保持这一特性。为此,它在每次发包时都会计算往返时间及其偏差。将这个往返时间和偏差时间相加,重发超时的时间就是比这个总和要稍大一点的值。
  • 在 BSD 的 Unix 以及 Windows 系统中,超时都以0.5秒为单位进行控制,因此重发超时都是0.5秒的整数倍。不过,最初其重发超时的默认值一般设置为6秒左右。
  • 数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
  • 此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。
以段为单位发送数据
  • 在建立 TCP 连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS)。最理想的情况是,最大消息长度正好是 IP 中不会被分片处理的最大数据长度。
  • TCP 在传送大量数据时,是以 MSS 的大小将数据进行分割发送。进行重发时也是以 MSS 为单位。
  • MSS 在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在 TCP 首部中写入 MSS 选项,告诉对方自己的接口能够适应的 MSS 的大小。然后会在两者之间选择一个较小的值投入使用。
利用窗口控制提高速度
  • TCP 以1个段为单位,每发送一个段进行一次确认应答的处理。这样的传输方式有一个缺点,就是包的往返时间越长通信性能就越低。
  • 为解决这个问题,TCP 引入了窗口这个概念。确认应答不再是以每个分段,而是以更大的单位进行确认,转发时间将会被大幅地缩短。也就是说,发送端主机,在发送了一个段以后不必要一直等待确认应答,而是继续发送。如下图所示:
  • img
  • 窗口大小就是指无需等待确认应答而可以继续发送数据的最大值。上图中窗口大小为4个段。这个机制实现了使用大量的缓冲区,通过对多个段同时进行确认应答的功能。
滑动窗口控制

img

  • 上图中的窗口内的数据即便没有收到确认应答也可以被发送出去。不过,在整个窗口的确认应答没有到达之前,如果其中部分数据出现丢包,那么发送端仍然要负责重传。为此,发送端主机需要设置缓存保留这些待被重传的数据,直到收到他们的确认应答。
  • 在滑动窗口以外的部分包括未发送的数据以及已经确认对端已收到的数据。当数据发出后若如期收到确认应答就可以不用再进行重发,此时数据就可以从缓存区清除。
  • 收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能。这种机制也别称为滑动窗口控制。
窗口控制中的重发控制
  • 确认应答未能返回的情况。在这种情况下,数据已经到达对端,是不需要再进行重发的,如下图

img

  • 某个报文段丢失的情况。接收主机如果收到一个自己应该接收的序列号以外的数据时,会针对当前为止收到数据返回确认应答。如下图所示,当某一报文段丢失后,发送端会一直收到序号为1001的确认应答,因此,在窗口比较大,又出现报文段丢失的情况下,同一个序列号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答,就会将其对应的数据进行重发。这种机制比之前提到的超时管理更加高效,因此也被称为高速重发控制。

img


其他

1. IP over everything和 everything over IP的含义是什么?

  • IP over everything 指在TCP/IP体系结构下,IP通过网络接口层可以运行在不同的物理网络之上。
  • everything over IP指在TCP/IP体系结构下,各种网络应用均是建立在IP基础之上。
  • everything=任意通信介质、任意电气特性、任意通信接口、任意CPU、任意主板、任意操作系统、任意应用软件=任意硬件系统+任意软件系统=任意物。

2. 简述因特网标准定制的几个阶段。请指出这每个阶段的主要特点。

因特网标准制定通常要经过以下四个阶段(RFC 2026)

  • 因特网草案(Internet Draft).–此阶段还不是RFC文档.
  • 建议标准(Proposed Standard).-从此阶段开始成为RFC文档.
  • 草案标准(Draft Standard).
  • 因特网标准(Internet Standard).

3. 因特网的两大组成部分(边缘部分与核心部分)的特点是什么?它们的工作方式各有什么特点?

  • 边缘部分:由各主机构成,用户直接进行信息处理和信息共享;低速连入核心网.
  • 核心部分:由各路由器连网,负责为边缘部分提供高速远程分组交换.

4. 五层协议栈的体系结构自上往下分别是什么?

  • 应用层
  • 运输层
  • 网络层
  • 数据链路层
  • 物理层

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

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

6. 网络协议的三个要素是什么?各有什么含义?

网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
(3)同步:即事件实现顺序的详细说明。

7. 常见的导引型传输媒体有哪几种?各有什么特点?

1、导引型传输媒体(有线的)有双绞线、 同轴电缆和光纤 ,属于常见的三种传输媒体.

2、双绞线收螺旋扭在一起的两根绝缘导线组成.线对扭在一起可以减少相互间的辐射电磁干扰,双绞线早就用在电话通信中模拟信号的传输,也可用于数据信号的传输,是最常用的传输媒体.

3、同轴电缆也象双绞线那样由一对导体组成,但它们的按"同轴"形式构成线对,最里层是内芯,外包一层绝缘材料,外面再一层屏蔽层,最外面则是起保护作用的塑料外套.内芯和屏蔽层构成一对导体.

4、光纤是光导纤维的简称,它由能传导光波的石英下班纤维,外加保护层构成. 相对于金属来说重量轻、体积(细).用光纤来传输电信号时,在发送端先要将其转换成光信号,而在接收端又要由光检波器瞠原成电信号.

8. 物理层要解决哪些问题?物理层的主要特点是什么?

物理层要解决的主要问题:

(1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的协议和服务.

(2)给其服务用户(数据链路层)在一条物理的传输媒体上传送和接收比特流(一般为串行按顺序传输的比特流)的能力,为此,物理层应该解决物理连接的建立、维持和释放问题.

(3)在两个相邻系统之间唯一地标识数据电路.

物理层的主要特点:

(1)由于在OSI之前,许多物理规程或协议已经制定出来了,而且在数据通信领域中,这些物理规程已被许多商品化的设备所采用,加之,物理层协议涉及的范围广泛,所以至今没有按OSI的抽象模型制定一套新的物理层协议,而是沿用已存在的物理规程,将物理层确定为描述与传输媒体接口的机械,电气,功能和规程特性.

(2)由于物理连接的方式很多,传输媒体的种类也很多,因此,具体的物理协议相当复杂.

9. 数据链路层的三个基本问题是什么?为什么必须解决?怎么解决?

三个问题: 封装成帧、透明传输、差错检测

为什么必须解决:

⑴封装成帧就是在一段数据前后分别添加首部和尾部。接收端以便从收到的比特流中识别帧的开始与结束,帧定界是分组交换的必然要求;

⑵ 透明传输避免消息符号与帧定界符号相混淆;

⑶差错检测防止差错的无效数据帧,浪费网络资源。

怎么解决:

(1)封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从比特流中识别帧的开始和结束。

(2)为了解决透明传输问题,字节填充法或字符填充:在控制字符SOH、EOT的前面插入一个转义字符ESC(其十六进制编码是1B,二进制是00011011)。而接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。

(3)现实的通信链路都不会是理想的。传输过程中,1可能变成0, 0 可能变成1 。这就叫比特差错——误码率。 误码率和信噪比有很大的关系。因此,在计算机网络传输数据时,必须采用各种差错控制技术。目前在数据链路层广泛使用了循环冗余检验(CRC)的检错技术。

10. IP地址和MAC地址的区别有哪些?为什么要使用这两种不同的地址?

IP地址和硬件地址的区别

1、长度的区别:物理地址即硬件地址,由48bit构成;IP地址由32bit组成,是逻辑地址.

2、放置位置的区别:IP地址放IP数据报的首部,而硬件地址则放在MAC帧的首部.

3、使用的区别:在网络层和网络层以上使用IP地址,数据链路层及以下使用硬件地址

为什么要使用这两种不同的地址

因为是解决了不同层次的问题

11. 运输层和网络层的通信有什么重要的区别?为什么说运输层是必不可少的?

运输层处于面向通信部分的最高层,同时也是用户功能中的最低层,向它上面的应用层提供服务运输层为应用进程之间提供端到端的逻辑通信,但网络层是为主机之间提供逻辑通信(面向主机,承担路由功能,即主机寻址及有效的分组交换).各种应用进程之间通信需要"可靠或尽力而为"的两类服务质量,必须由运输层以复用和分用的形式加载到网络层.

12. 举例说明有哪些应用程序宁愿使用不可靠的UDP,而不采用可靠的TCP?为什么这样做?

DP是面向无连接的服务,特点就是,用这种协议传输数据速度快.使用这种协议追求的是传输的即时性而不是传输的质量.在实际应用中比如,qq聊天的语聊,视频,还有网络电话使用的就是UDP协议,还有就是迅雷等一些下载工具用的也是UDP协议.

13. 端口的作用是什么?有哪三种端口号?

(1) 端口的作用是对TCP/IP体系的应用进程进行统一的标志,使运行不同操作系统的计算机的应用进程能够互相通信.

(2) 三类端口号

1、熟知端口数值一般为0~1023,标记常规的服务进程;

2、登记端口号,数值为1024~49151,标记没有熟知端口的非常规的服务进程.

3、动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535.

14. 在停止等待协议中,如果收到两个重复的报文段时,接收方直接丢弃重复的报文段然后什么也不做是否可行?为什么?

(1)不行

(2)收到重复帧不确认相当于确认丢失,发送方会认为接收方一直没有收到所要发送的TCP报文段,然后会一直重复发送该报文段.

15. IP数据报中的首部检验和并不检验数据报中的数据。这样做的最大好处是什么?坏处是什么?

在首部中的错误比在数据中的错误更严重,例如,一个坏的地址可能导致分组被投寄到错误的主机。许多主机并不检查投递给他们的分组是否确实是要投递给它们,它们假定网络从来不会把本来是要前往另一主机的分组投递给它们。数据不参与检验和的计算,因为这样做代价大,上层协议通常也做这种检验工作,从前,从而引起重复和多余。因此,这样做可以加快分组的转发,但是数据部分出现差错时不能及早发现。

报文鉴别 实体鉴别

主动攻击 被动攻击


三、计算题

2-16

共有4个站进行码分多址通信。4个站的码片序列为 A:(-1-1-1+1+1-1+1+1) B:(-1-1+1-1+1+1+1-1) C:(-1+1-1+1+1+1-1-1) D:(-1+1-1-1-1-1+1-1) 现收到这样的码片序列S:(-1+1-3+1-1-3+1+1)。问哪个站发送数据了?发送数据的站发送的是0还是1?
解:S•A=(+1-1+3+1-1+3+1+1)/8=1, A发送1
S•B=(+1-1-3-1-1-3+1-1)/8=-1, B发送0
S•C=(+1+1+3+1-1-3-1-1)/8=0, C无发送
S•D=(+1+1+3-1+1+3+1-1)/8=1, D发送1

3-07

要发送的数据为1101011011。采用CRC的生成多项式是P(X)=X4+X+1。试求应添加在数据后面的余数。数据在传输过程中最后一个1变成了0,问接收端能否发现?若数据在传输过程中最后两个1都变成了0,问接收端能否发现?采用CRC检验后,数据链路层的传输是否就变成了可靠的传输?

作二进制除法,1101011011 0000 10011 得余数1110 ,添加的检验序列是1110.作二进制除法,两种错误均可发展仅仅采用了CRC检验,缺重传机制,数据链路层的传输还不是可靠的传输。

4-09

(1)子网掩码为255.255.255.0代表什么意思?

有三种含义
其一是一个A类网的子网掩码,对于A类网络的IP地址,前8位表示网络号,后24位表示主机号,使用子网掩码255.255.255.0表示前8位为网络号,中间16位用于子网段的划分,最后8位为主机号。第二种情况为一个B类网,对于B类网络的IP地址,前16位表示网络号,后16位表示主机号,使用子网掩码255.255.255.0表示前16位为网络号,中间8位用于子网段的划分,最后8位为主机号。
第三种情况为一个C类网,这个子网掩码为C类网的默认子网掩码。
(2)一网络的现在掩码为255.255.255.248,问该网络能够连接多少个主机?

255.255.255.248即11111111.11111111.11111111.11111000. 每一个子网上的主机为(2^3)=6 台 掩码位数29,该网络能够连接8个主机,扣除全1和全0后为6台。

(3)一A类网络和一B网络的子网号subnet-id分别为16个1和8个1,问这两个子网掩码有何不同?

A类网络:11111111 11111111 11111111 00000000
给定子网号(16位“1”)则子网掩码为255.255.255.0
B类网络 11111111 11111111 11111111 00000000
给定子网号(8位“1”)则子网掩码为255.255.255.0但子网数目不同
(4)一个B类地址的子网掩码是255.255.240.0。试问在其中每一个子网上的主机数最多是多少?

(240)10=(128+64+32+16)10=(11110000)2 Host-id的位数为4+8=12,因此,最大主机数为: 2^12-2=4096-2=4094
11111111.11111111.11110000.00000000 主机数2^12-2

(5)一A类网络的子网掩码为255.255.0.255;它是否为一个有效的子网掩码?

是 10111111 11111111 00000000 11111111

(6)某个IP地址的十六进制表示C2.2F.14.81,试将其转化为点分十进制的形式。这个地址是哪一类IP地址?

C2 2F 14 81–à(1216+2).(216+15).(16+4).(8*16+1)—à194.47.20.129 C2 2F 14 81 —à11000010.00101111.00010100.10000001 C类地址

(7)C类网络使用子网掩码有无实际意义?为什么?

有实际意义.C类子网IP地址的32位中,前24位用于确定网络号,后8位用于确定主机号.如果划分子网,可以选择后8位中的高位,这样做可以进一步划分网络,并且不增加路由表的内容,但是代价是主机数相信减少.

4-20

设某路由器建立了如下路由表:

目的网络 子网掩码 下一跳
128.96.39.0 255.255.255.128 接口m0
128.96.39.128 255.255.255.128 接口m1
128.96.40.0 255.255.255.128 R2
192.4.153.0 255.255.255.192 R3
*(默认) —— R4
现共收到5个分组,其目的地址分别为:
(1)128.96.39.10
(2)128.96.40.12
(3)128.96.40.151
(4)192.153.17
(5)192.4.153.90

试分别计算其下一跳:

1)分组的目的站IP地址为:128.96.39.10。先与子网掩码255.255.255.128相与,得128.96.39.0,可见该分组经接口0转发。
(2)分组的目的IP地址为:128.96.40.12。
① 与子网掩码255.255.255.128相与得128.96.40.0,不等于128.96.39.0。
② 与子网掩码255.255.255.128相与得128.96.40.0,经查路由表可知,该项分组经R2转发。
(3)分组的目的IP地址为:128.96.40.151,与子网掩码255.255.255.128相与后得128.96.40.128,与子网掩码255.255.255.192相与后得128.96.40.128,经查路由表知,该分组转发选择默认路由,经R4转发。
(4)分组的目的IP地址为:192.4.153.17。与子网掩码255.255.255.128相与后得192.4.153.0。与子网掩码255.255.255.192相与后得192.4.153.0,经查路由表知,该分组经R3转发。
(5)分组的目的IP地址为:192.4.153.90,与子网掩码255.255.255.128相与后得192.4.153.0。与子网掩码255.255.255.192相与后得192.4.153.64,经查路由表知,该分组转发选择默认路由,经R4转发。

4-28

4-29(类型题)

假设要发送的数据为11001010,采用的CRC的生成多项式为P(x)=X3+X+1。试求应添加在数据后面的余数?如果采用了CRC校验,数据链路层是否就变成了可靠的传输?

CRC.jpg

采用了CRC循环以后,接受端可以检测该帧是否有传输的错误,即在外界干扰下是否有0变成1,1变成0 的情况,如果没有错误,就接收,如果有错误,则直接丢弃该帧。不检查帧的顺序、重复等。数据链路层并不具备保证可靠传输的“重传”、“确认”机制,所以不是可靠的传输。

4-30(同上)

4-37

某单位分配到一个地址块136.23.12.64/26。现在需要进一步划分为4个一样大的子网。试问:

(1)每一个子网的网络前缀有多长?
(2)每一个子网中有多少个地址?
(3)每一个子网的地址是什么?
(4)每一个子网可分配给主机使用的最小地址和最大地址是什么?

(1)每个子网前缀28位。

(2)每个子网的地址中有4位留给主机用,因此共有16个地址。

(3)四个子网的地址块是:
第一个地址块136.23.12.64/28,可分配给主机使用的
最小地址:136.23.12.01000001=136.23.12.65/28
最大地址:136.23.12.01001110=136.23.12.78/28
第二个地址块136.23.12.80/28,可分配给主机使用的
最小地址:136.23.12.01010001=136.23.12.81/28
最大地址:136.23.12.01011110=136.23.12.94/28
第三个地址块136.23.12.96/28,可分配给主机使用的
最小地址:136.23.12.01100001=136.23.12.97/28
最大地址:136.23.12.01101110=136.23.12.110/28
第四个地址块136.23.12.112/28,可分配给主机使用的
最小地址:136.23.12.01110001=136.23.12.113/28
最大地址:136.23.12.01111110=136.23.12.126/28

4-42

假定网络中的路由器A的路由表有如下的项目(格式同上题):

N1 4 B

N2 2 C

N3 1 F

N4 5 G

现将A收到从C发来的路由信息(格式同上题):
N1 2
N2 1
N3 3
N4 7

试求出路由器A更新后的路由表(详细说明每一个步骤)。

N1   3  C    不同的下一跳,距离更短,改变
N2   2  C    不同的下一跳,距离一样,不变
N3   1  F    不同的下一跳,距离更大,不改变
N4   5  G    无新信息,不改变

5-23

主机A向主机B连续发送了两个TCP报文段,其序号分别为70和100。试问:
(1) 第一个报文段携带了多少个字节的数据?
(2) 主机B收到第一个报文段后发回的确认中的确认号应当是多少?
(3) 如果主机B收到第二个报文段后发回的确认中的确认号是180,试问A发送的第二个报文段中的数据有多少字节?
(4) 如果A发送的第一个报文段丢失了,但第二个报文段到达了B。B在第二个报文段到达后向A发送确认。试问这个确认号应为多少?

(1)第一个报文段的数据序号是70到99,共30字节的数据。

(2)确认号应为100.

(3)80字节。

(4)70

5-28

主机A向主机B发送TCP报文段,首部中的源端口是m而目的端口是n。当B向A发送回信时,其TCP报文段的首部中源端口和目的端口分别是什么?

分别是n和m。

5-39

TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示:

cwnd 1 2 4 8 16 32 33 34 35 36 37 38 39
n 1 2 3 4 5 6 7 8 9 10 11 12 13

cwnd 40 41 42 21 22 23 24 25 26 1 2 4 8
n 14 15 16 17 18 19 20 21 22 23 24 25 26

(1)试画出如图5-25所示的拥塞窗口与传输轮次的关系曲线。
(2)指明TCP工作在慢开始阶段的时间间隔。
(3)指明TCP工作在拥塞避免阶段的时间间隔。
(4)在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超市检测到丢失了报文段?
(5)在第1轮次,第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
(6)在第几轮次发送出第70个报文段?
(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大?

(2) 慢开始时间间隔:【1,6】和【23,26】

(3) 拥塞避免时间间隔:【6,16】和【17,22】
(4) 在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。
(5) 在第1轮次发送时,门限ssthresh被设置为32 在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21. 在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21

(6) 第70报文段在第7轮次发送出。

(7) 拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4.

5-41(类型题)

用TCP传输256字节数据。设置接收窗口为100字节,而TCP报文段每次也是传送100字节的数据。假设发送方和接收方的序号分别为100和200。试画出TCP从连接建立、数据传输到连接释放的工作示意图。

IMG_20210610_164956.jpg


http://chatgpt.dhexx.cn/article/28So1GiT.shtml

相关文章

《计算机网络自顶向下》笔记

【自用】转自:https://blog.csdn.net/qq_39326472/article/details/88089747 目录 第一章 计算机网络和因特网 1.1 什么是因特网 1.1.1 组成描述 1.1.2 服务描述 1.1.3 协议 1.2 网络的边缘 1.2.1 接入网 1.2.2 物理媒体 1.3 网络核心 1.3.1 分组交换 1.3.2 电路交换…

java面试技术栈

java基础 数据结构 排序算法 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比…

深入探索 Android 网络优化(一、网络筑基篇,为什么Flutter能最好地改变移动开发

专用网络 某些部队、组织或者某些人 为了满足特殊业务需求而建立起来的特殊的网络,例如军队、铁路、银行都有自己的专用网络。 二、网络历史演进 1、世界互联网发展历史演进 1)、单个网络 ARPANET,1969年美国国防部创建的一个网络,可以连接周围的计算机。 计算机直接…

637道Java面试题(含答案)

作者:蝉沐风 关注公众号「蝉沐风」,回复「面试题」三个字 ,获取更多面试题,这篇文章只是冰山一角 面试题持续整理中,关注「蝉沐风」之后添加个人微信,拉你进技术群,不定期分享好几吨的Java视频教…

【个人笔记 | Pytorch课程 | 整理中ing】

【小土堆】 小土堆课程视频 笔记others: 入门与Dataset数据加载 【入门/数据/预处理】 pycharm 安装:https://www.jetbrains.com/pycharm/、指南、 可以在右上写代码,可以在左下控制台写程序(一般用于调试) conda-Pytorch 深度学习…

计算机网络笔记

目录 第一章 计算机网络和因特网 1.1 什么是因特网 1.1.1 组成描述 1.1.2 服务描述 、 1.1.3 协议 1.2 网络的边缘 1.2.1 接入网 1.2.2 物理媒体 1.3 网络核心 1.3.1 分组交换 1.3.2 电路交换 1.3.3 分组交换和电路交换的对比 1.3.4 网络的网络 1.4 分组交换…

PyTorch深度学习-跟着小土堆学习

目录 学习视频链接一些问题P4:Python/PyTorch学习中两大法宝函数-dir()、help()P5:PyCharm及Jupyter使用及对比P6:PyTorch加载数据初认识P7:Dataset类代码实战P8:TensorBoard的使用(一)P9&#…

[零基础][最简单的教程]图像多分类问题的解决——基于resnet50的pytorch的实现

文章目录 前言一、开始任务的前提条件二、深度学习通用框架三、修改代码前,使用者需要明确的问题1.图片分成三个集,并放在正确的位置2.明确你是几分类问题3.明确你是使用的模型网络 四、图像分类通用pytorch框架——具体代码实现一、输入处理模块0.引入库…

深入探索 Android 网络优化(一、网络筑基篇)上

前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。 网络优化一直被认为是移动优化水最深的领域之一,因此要想对网络进行深入优化,我们就必须先打下比较扎实的网络基础…

计算机网络(自顶向下方法)学习笔记

目录 第一章 计算机网络和因特网 1.1 什么是因特网 1.1.1 组成描述 1.1.2 服务描述 1.1.3 协议 1.2 网络的边缘 1.2.1 接入网 1.2.2 物理媒体 1.3 网络核心 1.3.1 分组交换 1.3.2 电路交换 1.3.3 分组交换和电路交换的对比 1.3.4 网络的网络 1.4 分组交换中的时延…

【我是土堆 - PyTorch教程】学习随手记(已更新 | 已完结 | 10w字超详细版)

目录 1. Pytorch环境的配置及安装 如何管理项目环境? 如何看自己电脑cuda版本? 安装Pytorch 2. Python编辑器的选择、安装及配置 PyCharm PyCharm神器 Jupyter(可交互) 3. Python学习中的两大法宝函数 说明 实战操…

SpringCloud(H版以及Alibaba版本)的学习笔记(三)

本笔记学习自B站尚硅谷Springcloud时所记录 学习视频链接源码地址【码云】 笔记内容包括了:Springcloud的H版以及Alibaba版本 H版具体内容包括:Eureka、Zookeeper、Consul、Ribbon、OpenFeign、Hystrix、Gateway、Config、Bus、Stream、Sleuth等技术的…

JavaScript——onblur事件失效问题解决方案

基本概念 问题分析 改了写法,把事件写在函数里,然后直接调用,发现一直提示函数未定义,这个和浏览器渲染页面过程有关,就是当浏览器渲染到该标签时,事件函数还没定义,就报错。 解决方案 添加…

html dom onblur,html的DOM中Event对象onblur事件用法实例

html的DOM中Event对象onblur事件用法实例 本文实例讲述了html的DOM中Event对象onblur事件用法。分享给大家供大家参考。具体分析如下: onblur 事件会在对象失去焦点时发生。 语法如下: 复制代码 代码如下: οnblur"SomeJavaScriptCode" SomeJa…

onBlur事件与onfocus事件 (js)

jQuery 参考手册 - 事件 一、jQuery的 onBlur方法 定义和用法 1、当元素失去焦点时发生 blur 事件。 2、blur() 函数触发 blur 事件,或者如果设置了 function 参数,该函数也可规定当发生 blur 事件时执行的代码。 提示:早前,…

利用onblur事件实现文本框中英文字母全部转换成大写

利用onblur事件实现文本框中英文字母全部转换成大写 <body>文本框中输入&#xff1a;<input type"text" id"inp" value"" onblur"aA()" /><br><br>失去焦点后&#xff1a;<input type"text" id…

onfocus 事件onblur 事件

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <head> <script> function myFunction(x){x.style.background"red"; } </script> <…

js中 onblur事件和onchange事件的区别

onchange事件&#xff1a;会判断输入框中的内容是否和原来的内容相同&#xff0c;和原来的内容相同则不会出现提示框&#xff0c;不相同才出现提示框 现在数量是 2 修改为 2 &#xff0c;没有出现提示框 修改为其他内容&#xff1a;出现提示框

onblur事件和onfocus事件失效

先看onblur事件和onfocus事件的定义&#xff1a; <element οnblur"SomeJavaScriptCode"> <element οnfοcus"SomeJavaScriptCode"> 双引号中的内容是一段js代码&#xff0c;也可以是一个事件函数 在看几个例子&#xff1a; <!DOCTYPE htm…

html onblur 函数执行了2次,JavaScript“onblur事件”调用函数失效 原因与解决方法

由于JavaScript事件有很多,例如: 鼠标事件:onclick 键盘事件:onkeydown、onkeypress 表单事件:onblur、onchange 窗口事件属性:onerror、onload 因此,如果你遇到其它的JavaScript事件调用函数失效,解决方法也同理。 以我这里为例子: 今天我在调试代码的时候,发现我的…