七、java-计算机网络-2

1.5 讲一下TCP/IP协议。

参考回答

  1. TCP/IP协议定义

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

  2. TCP/IP协议组成

    TCP/IP结构模型分为应用层、传输层、网络层、链路层(网络接口层)四层,以下是各层的详细介绍:

    (1)应用层

    ​ 应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。

    ​ a. 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。

    ​ b. 应用层还能加密、解密、格式化数据。

    ​ c. 应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。

    (2)传输层

    ​ 作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。

    (3)网络层

    ​ 网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。

    (4)链路层(网络接口层)

    ​ 在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层。所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

  3. TCP/IP协议特点

    ​ TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:

    (1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统;

    (2)独立于网络硬件系统,可以运行在广域网,更适合于互联网;

    (3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址;

    (4)高层协议标准化,可以提供多种多样可靠网络服务。

1.6 说一说你对ARP协议的理解。

参考回答

​ ARP协议即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。

  1. 工作原理

    ​ ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  2. 工作过程

    ​ 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;

    ​ 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

    ​ 当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

    ​ 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。

    ​ 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。

    ​ 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。

    ​ 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。

    ​ 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

  3. ARP报文格式

    ARP报文格式

    ​ 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;

    ​ 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);

    ​ 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;

    ​ 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;

    ​ 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;

    ​ 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;

    ​ 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;

    ​ 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;

    ​ 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;

    ​ 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;

    ​ 目标IP地址(0-3字节):目的主机的IP地址。

1.7 IP协议包含哪些字段?

参考回答

​ IP所包含字段结构图如下:

IP字段

IP协议包含字段如下:

4位版本号:指定IP协议的版本,对于IPv4来说就是4

4位头部长度:IP头部长度有多少个4字节,所以头部最大长度就是15*4=60字节

8位服务类型:3位优先权(已弃用),4位TOS字段,1位保留字段(必须设置为0)。4为TOS为:最小延时,最大吞吐量,最高可靠性,最小成本,这四个只能选择一个

16位总长度:IP数据报整体占多少字节

16为标识:唯一的标识主机发送的报文,IP报文在数据链路层被分片,那么每一个片中的标识都是相同的

3位标志字段:第一位保留,第二位置1表示进制分片(报文长度超过MTU,丢弃报文),第三位更多分片,最后一个分片是1,其他是0

13位分片偏移:相对于原始IP报文开始处的偏移

8位生存时间:数据报到达目的地的最大报文跳数,每经过一个路由,TTL-=1,一直到0都没有到达目的地,报文丢弃。

8位协议:表示上层协议类型,把IP交给TCP还是UDP,其中ICMP是1,TCP是6,UDP是17

16位头部校验和:使用CRC校验,鉴别头部是否损坏

32位源地址和32位目标地址:表示发送端和接收端

1.8 应用层都包含什么协议?

参考回答

​ 应用层包含的协议有DNS、FTP、SMTP、HTTP、SNMP、Telnet等,其作用分别如下:

  1. 域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。
  2. 文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
  3. 简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能。
  4. 超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。
  5. 简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
  6. 远程登录协议(Telnet):用于实现远程登录功能。

答案解析

​ 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递消息。特别是定义了:

  1. 交换的消息类型,如请求消息和响应消息。
  2. 各种消息类型的语法,如消息中的各个字段及其详细描述。
  3. 字段的语义,即包含在字段中的信息的含义。
  4. 进程何时、如何发送消息及对消息进行响应的规则。
  5. 有些应用层协议是由RFC文档定义的,因此它们位于公共领域,例如HTTP。
  6. 有些应用层协议是公司或者个人私有的,位于私人领域,例如QQ。

1.9 应用层报文怎么传输到另一个应用层?

参考回答

应用层数据(报文)向外发送时,数据是由最上面的应用层向下经过一层层封装后发送给物理层;而接收数据时,数据是由物理层向上经过一层层解封后发给应用层。数据的封装和解封过程如下:

  1. 数据的封装过程简介

    ​ 传输层及其以下的机制由内核提供, 应用层由用户进程提供, 应用程序对通讯数据的含义进行解释, 而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。 应用层数据通过协议栈发到网络上时,每层协议都要加上一个相对应的头部(header ),该过程称为封装封装过程如下图所示:

    封装过程

  2. 数据的解封过程简介

    ​ 不 同 的 协 议 层 对 数 据 包 有 不 同的 称 谓 ,在 传 输 层 叫 做 段(segment ),在网络层叫做数据报( datagram) ,在链路层叫做帧(frame )。数据封装成帧后发到传输介质上,到达目的主机后,每层协议再剥掉相应的头部,最后将应用层数据交给应用程序处理,该过程称为解封。解封过程如下图所示:

    解封过程

  3. 举例说明数据封装和解封装过程

    (1)从计算机 A 的应用层内网通软件向计算机 B 发出一个消息,生成数据;

    (2)请求从计算机 A 的应用层下到 计算机A 的传输层,传输层在上层数据前面加上 TCP报头,报头中包括目标端口以及源端口;

    (3)传输层数据下到网络层,计算机A 在网络层封装,源 IP地址为 计算机A地址,目标 IP地址为 计算机 B 地址;

    (4)计算机 A 将计算机B 的 IP 地址和子网掩码与自己做比对,可以发现 计算机 B 与自己处于相同的子网。所以数据传输不必经过网关设备;

    (5)数据包下到 计算机 A 的数据链路层进行封装,源 MAC 地址为 计算机A的 MAC地址,目标 MAC 地址查询自己的 ARP 表。

    (6)计算机 A 把帧转换成 bit 流,从物理接口网卡发出;

    (7)物理层接收到电信号,把它交给数据链路层进行查看帧的目标 MAC 地址,和自己是否相等,如果相等说明该帧是发送给自己的,于是将MAC帧头解开并接着上传到网络层;

    (8)网络层查看目标 IP 地址和自己是否匹配,如果匹配即解开 IP 头封装。然后再把数据上传到传输层;

    (9)传输层解开对应的包头之后,继续把数据传给应用层,计算机 B 即可接收到计算机 A 发的消息。

答案解析

报文、报文段、分组、包、数据报、帧、数据流的概念区别如下:

  1. 报文(message)

    ​ 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。

  2. 报文段(segment)

    ​ 通常是指起始点和目的地都是传输层的信息单元。

  3. 分组/包(packet)

    ​ 分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层

  4. 数据报(datagram)

    ​ 面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。

  5. 帧(frame)

    ​ 帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。

  6. 数据单元(data unit)

    ​ 指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。

    ​ SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
Bug压路:老哥看得出来你是想多展示一些项目,但好像一般最多两个就够了😂页数一般一页,多的也就2页;这些项目应该是比较同质化的,和评论区其他大佬一样,我也觉得应该展示一些最拿手的(质量>数量)😁😁😁专业技能部分也可以稍微精简一些
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务