I

前提是你 提交于 2020-01-10 22:58:26

一、Linux协议栈总结

  本课程重点关注传输层协议和socket以及内核初始化和相关函数调用,顺序如下, 试题主要也是按照此顺序编写

  Linux网络总体结构 --->  TCP/IP简介 --->   socket和Linux内核函数调用 ---> IP   ---> ARP --->  L2 Switching(二层交换机)  ---> DNS

  1. linux网络总体结构

   

    

   2. TCP/IP

    网络协议通常分不同层开发,每一层分别负责不同的通信功能。

  一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 通常被认为是一个四层协议系统,如下图

   

 

   TCP/IP协议族中不同层次的协议如下:

    

  TCP和UDP是两种最为著名的运输层协议,二者都使用 IP 作为网络层协议。
    TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务
    UDP为应用程序发送和接收数据报, 但它是不可靠的
  
  IP是网络层上的主要协议,同时被TCP和UDP使用。
    TCP和UDP的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。
  
  ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
  
  ARP(地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。

  3. socket和Linux内核函数调用

  

二、网络程序设计试题

一、选择题(依据课程顺序讲解内容涉及的相关的概念)

1. 在OSI七层参考模型中,通信子网不涉及以下哪一层(     )

A. 物理层   B.  数据链路层  C. 网络层   D. 传输层 

答案:D    

考察:网络体系按功能分 通信子网 和 资源子网。

     通信子网包括物理层、数据链路层和网络层,提供各种面向网络的服务。资源子网包括应用层、表示层和会话层,提供各种面向用户的服务。

     传输层位于通信子网和资源子网的连接处,主要功能是实现底层协议和高层协议的接口与转换。

来源:  个人

 

2. 在OSI七层参考模型中,资源子网不涉及以下哪一层(     )

A. 应用层   B.  表示层  C. 会话层  D. 传输层 

答案:D    

考察:同上

来源:  个人

 

3. 以下对TCP协议描述错误的是()

A. 提供面向连接

B. 可靠的字节流服务

C. 超时重发

D. 是用户数据报协议

答案:D    

考察:TCP基本概念了解,

      TCP传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

    UDP是用户数据报协议,主要特点是无连接 , 尽最大努力交付(不保证可靠传输), 面向报文等。

来源:  个人

 

4. 以下不属于socket套接字类型的是()

A. 流式套接字

B. 数据报套接字

C. 原始套接字

D. 网络套接字

答案:D

考察:socket类型基本知识

来源:  https://wenku.baidu.com/view/a5a64a9accbff121dd3683ba.html + PPT

 

5. 在实现基于TCP的网络应用程序时,服务器端正确的处理流程是()

A. socket() -> bind() -> listen() -> connect() -> read()/write() -> close()

B. socket() -> bind() -> listen() -> read()/write() -> close()

C. socket() -> bind() -> listen() -> accept() -> read()/write() -> close()

D. socket() -> connect() -> read()/write() -> close()

答案:C    

考察:socket编程相关知识点

来源:  https://wenku.baidu.com/view/a5a64a9accbff121dd3683ba.html

 

6. IP数据报的片重组由什么设备完成(  )。 

A、源主机                        

B、目的主机 

C、中间路由器                    

D、最后一个路由器

答案:B    

考察:IP数据报分片和重组;

     IP数据报在互联网上传输时,可能要经过多个物理网络才能从源端传输到目的端。

     不同的网络由于链路层和介质的物理特性不同,因此在进行数据传输时,对数据帧的最大长度都有一个限制,这个限制值即最大传输单元MTU;

     分片: 一个数据报为了适合网络传输而分成多个数据报的过程称为分片,被分片后的各个IP数据报可能经过不同的路径到达目标主机。

     重组:  当分了片的IP数据报到达最终目标主机时,目标主机对各分片进行组装,恢复成源主机发送时的IP数据报。

来源:  https://wenku.baidu.com/view/8b2f34bd67ec102de2bd89fe.html

 

7. ARP协议的主要功能是()。 

A. 将IP地址解析为物理地址 

B. 将物理地址解析为IP 

C. 将主机名解析为IP地址 

D. 将IP地址解析为主机名 

答案:A   

考察:ARP的基本概念;

    ARP地址解析协议,其基本功能为通过目标设备的IP地址,查询目标设备MAC地址,保证通信顺利进行。

    所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转成目标MAC地址的过程。

来源:  https://www.nowcoder.com/questionTerminal/c4d87cfad30e494799bbaea770754d6b

 

8. L2Switching二层交换机是根据以下哪个表进行帧转发?()

A. ARP表

B. MAC地址表

C. RIB表

D. FIB表

答案:B  

考察: MAC地址表:  MAC协议在数据链路层(2层),MAC地址与交换机接口的对应关系

       ARP表: 工作在网络层的协议, 记录IP和MAC的对应关系

       RIB 就是路由表存储所有的路由信息;

    FIB转发表 用于判断基于 IP 包的网络前缀,如何进行转发。

    L2Switching: 

         工作于OSI模型的第2层(数据链路层),可以识别数据报中MAC信息,根据MAC地址进行转发,

      并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。

来源:  https://www.nowcoder.com/questionTerminal/c4d87cfad30e494799bbaea770754d6b

 

9. 如果本地域名服务无缓存,当采用递归方法解析另一网络某主机域名时,用户主机 、本地域名服务器发送的域名请求消息数分别为() 

A.1条,1条

B.1条,多条

C.多条,1条

D.多条,多条

答案: A 

考察: 递归查询是: 客户机发送一条查询请求到本地域名服务器,发现缓存中没有主机名和IP地址对的信息,那么本地域名服务器就往上继续查询。

     本地域名服务器发送一个查询报文,如果在某一级域名服务器找到了主机名和IP地址对信息,直接返回。

     如果找不到,那么这个域名服务器又会作为客户机去请求上一级域名服务器,直至根域名服务器。

     根名称服务器收到DNS请求后,把所查询得到的所请求的DNS域名中发送给顶级域名服务器,顶级域名服务器再往下级域名服务器请求查找,如果找到了就原路返回。

     所以在递归查询中,主机发送的请求为1次,本地域名服务器发送的请求也为1次。

来源:  https://blog.csdn.net/qq_34115899/article/details/82981007

  

10. 数据完整性指的是( )

A. 保护网络中各个系统之间交换的数据,防止因数据被截获而造成泄密

B. 提供链接实体身份的鉴别

C. 防止非法实体对用户的主动攻击,保证数据接收方收到的信息和发送方发送的信息完全一致

D. 确保数据是由合法实体发出的

答案: C

考察: 网络安全相关基本知识

来源:  https://wenku.baidu.com/view/58457d0f7e192279168884868762caaedc33ba65.html

 

二、简答题(TCP/IP详解卷1; PPT)

1. 子网号为16bit的A类地址和子网号为8bit的B类地址的子网掩码有何不同? 

 答: 没有不同,子网掩码皆是225.225.225.0

   (来源: TCP/IP详解卷1)

 

2. 讨论一个DNS名字解析器和DNS域名服务器作为客户程序、服务器或者同时作为客户和服务器的情况?

 答: 一个解析器总是一个客户,一个域名服务器是一个客户又是一个服务器

    (来源: TCP/IP详解卷1)

 

3. 简述tcp连接建立的时候3次握手 (来源: 个人)

 答:第一次握手: 客户端connect连接到server,

     第二次握手: server accept client的请求之后,向client端发送一个消息,即向客户端确认你已经连接上我了

     第三次握手: client向server发送的,就是对第二次握手消息的确认。

          之后client和server就开始通讯了。

 

4. 描述基于TCP的Socket通信过程并画出相关连接图  (来源:PPT+个人)

 答:

  客户端:

  socket()  创建套接字

  connect()  向服务器主动发出连接请求

  send()/recv()  和服务器端进行通信

  close()  关闭套接字

  服务端:

  socket()   创建套接字

  bind()    绑定套接字到一个IP地址和一个端口上

  listen()   使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求

  accept()  请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字

  send()/recv()  用返回的套接字与客户端进行通信

  close()   关闭套接字

    

 

5. 什么是系统调用,用什么方式陷入内核态? (来源: https://wenku.baidu.com/view/43c9a28ccf2f0066f5335a8102d276a20129604e.html)

  系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。 

  系统调用是通过软件中断方式陷入内核的

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!