一、Linux协议栈总结
本课程重点关注传输层协议和socket以及内核初始化和相关函数调用,顺序如下, 试题主要也是按照此顺序编写
Linux网络总体结构 ---> TCP/IP简介 ---> socket和Linux内核函数调用 ---> IP ---> ARP ---> L2 Switching(二层交换机) ---> DNS
1. linux网络总体结构
2. TCP/IP
网络协议通常分不同层开发,每一层分别负责不同的通信功能。
一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 通常被认为是一个四层协议系统,如下图
TCP/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)
系统调用是指操作系统提供给用户程序调用的一组特殊接口,用户程序可以通过这组接口获得操作系统内核提供的服务。
系统调用是通过软件中断方式陷入内核的
来源:https://www.cnblogs.com/zhouz/p/12034223.html