Netty面试题1

计算机网络模型

OSI采用了分层的结构化技术,共分七层, 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

Open System
Interconnect 简称OSI,是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。

OSI模型比较复杂且学术化,所以我们实际使用的TCP/IP模型,共分4层, 链路层、网络层、传输层、应用层

两个模型之间的对应关系如图所示:

  1. 物理层:物理层是OSI模型的第一层,它定义了在网络上传输比特流的方式。物理层的主要任务是将数字数据转换为模拟信号,以便在网络上进行传输。
  2. 数据链路层:数据链路层是OSI模型的第二层,它定义了如何在网络上传输数据包。数据链路层的主要任务是将数据分成帧(Frame),并在物理层上传输。
  3. 网络层:网络层是OSI模型的第三层,它定义了如何在不同的网络之间传输数据。网络层的主要任务是路由(Routing),即确定最佳的路径将数据从源节点传输到目标节点。
  4. 传输层:传输层是OSI模型的第四层,它定义了数据传输的端到端可靠性和流量控制。传输层的主要任务是将数据分成数据段(Segment),并在网络上进行传输。
  5. 会话层:会话层是OSI模型的第五层,它定义了如何在通信双方之间建立、管理和终止会话(Session)。会话层的主要任务是管理会话层协议(例如,连接建立和断开、同步和恢复等)。
  6. 表示层:表示层是OSI模型的第六层,它定义了如何将数据表示为应用程序可以处理的格式。表示层的主要任务是将数据进行编码、解码和加密。
  7. 应用层:应用层是OSI模型的第七层,它定义了不同应用程序之间的交互方式。应用层的主要任务是提供各种服务,例如文件传输、电子邮件和远程登录等。

各协议的解释

  1. TCP:传输控制协议(TCP)是一种面向连接的协议,它在发送数据之前先建立一个连接。TCP确保数据在网络上正确地传输,确保数据的可靠性和完整性,它还能够控制数据的流量和拥塞。TCP是应用广泛的协议之一,用于电子邮件、网页浏览和文件传输等应用中。
  2. UDP:用户数据报协议(UDP)是一种无连接的协议,它不需要在发送数据之前建立连接。UDP不保证数据的可靠性或完整性,但它更快速、更简单,适用于对数据传输延迟较为敏感的应用程序。UDP常用于音视频传输、在线游戏等实时性较高的应用中。

总的来说,TCP适用于那些需要确保数据可靠性和完整性的应用,而UDP适用于那些需要快速数据传输和实时性的应用。

  1. IP:Internet Protocol (IP)是一种协议,用于在计算机网络上传输数据包。它是一种无连接协议,意味着在发送数据之前不会建立连接。IP协议负责数据的传输和路由,以确保数据正确地从源主机传输到目标主机。
  2. ICMP:Internet控制消息协议(ICMP)是一种协议,用于在IP网络上传输控制消息。它通常用于诊断网络问题,如测试主机是否可达、测量网络延迟和带宽等。
  3. RIP:路由信息协议(RIP)是一种用于动态路由的协议。它通过广播路由信息来使网络中的路由器了解网络拓扑结构,并计算出最佳路由。RIP通常用于小型网络。
  4. OSPF:开放最短路径优先(OSPF)是一种基于链路状态的路由协议,用于大型企业网络中的动态路由。它使用Dijkstra算法来计算最短路径,并通过交换链路状态信息来建立拓扑图。
  5. BGP:边界网关协议(BGP)是一种用于互联网中的路由协议。它是一种路径向量协议,用于在AS之间选择最佳路径。BGP的主要作用是确保互联网上的路由器能够相互通信,并在网络出现问题时快速恢复。
  6. IGMP:Internet组管理协议(IGMP)是一种协议,用于在多播网络中管理组成员。它允许主机加入或离开多播组,并在网络中通知路由器有多少主机加入或离开多播组。
  7. SLIP:串行线路互联协议(SLIP)是一种早期的协议,用于在串行线路上传输IP数据包。它已被PPP所取代,因为SLIP具有固定的IP地址、缺乏安全性和完整性检查等问题。
  8. CSLIP:压缩串行线路互联协议(CSLIP)是一种改进的SLIP协议,它使用压缩技术减少了IP数据包在串行线路上的传输负载,提高了传输速度。
  9. PPP:点对点协议(PPP)是一种面向连接的协议,用于在两个计算机之间传输数据。它支持多种协议,如IP、IPX、NetBIOS等,并提供身份验证、加密和压缩等功能。
  10. ARP:地址解析协议(ARP)是一种协议,用于将IP地址映射到MAC地址。ARP通过广播消息来查找目标MAC地址,并在ARP缓存中保存映射关系,以提高网络效率。
  11. RARP:反向地址解析协议(RARP)是一种协议,用于将MAC地址映射到IP地址。RARP通过广播消息来查找目标IP地址,并在RARP服务器中保存映射关系,以提供动态IP地址分配。
  12. MTU:最大传输单元(MTU)是指在一个网络通信链路上最大允许的数据包大小。MTU取决于链路类型,如以太网、无线网络等,通常是固定的。如果数据包的大小超过MTU,则需要进行分片和重新组装。

总的来说,SLIP和CSLIP已经过时,PPP是常用的点对点协议,ARP和RARP用于地址映射,MTU则决定了一个网络通信链路上最大允许的数据包大小。

  1. ISO 2110:这可能是指ISO 2110标准,它定义了一种通用的网络协议体系结构。该标准定义了七层协议栈(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),每层都有特定的功能和协议。
  2. IEEE 802:这是一个系列的协议,由IEEE(电气和电子工程师协会)定义。该系列包括多个标准,如IEEE 802.3(以太网)、IEEE 802.11(Wi-Fi)和IEEE 802.15(蓝牙)等。每个标准定义了特定类型的网络,包括局域网、无线局域网和个人区域网络等。
  3. IEEE 802.2:这是IEEE 802系列中的一个子协议,也称为逻辑链路控制(LLC)协议。该协议定义了一种标准化的数据链路层协议,为高层协议提供了一个统一的接口。它在IEEE 802网络中广泛使用,包括以太网、令牌环网和无线局域网等。

总的来说,ISO 2110定义了一种通用的协议体系结构,IEEE 802系列定义了各种类型的网络标准,IEEE 802.2是IEEE 802系列中的一个子协议,为高层协议提供了一个统一的接口。

说一下TCP三次握手,为什么需要三次,不是四次或两次?

TCP 提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间的准备工作。

所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。

image.png

为什么TCP握手需要三次?

TCP是可靠的传输控制协议,而三次握手是保证数据可靠传输又能提高传输效率的最小次数。

为了实现可靠数据传输, TCP协议的通信双方,都必须维护一个序列号, 以标识发送出去的数据包中,哪些是已经被对方收到的。

举例说明:发送方在发送数据包(假设大小为 10 byte)时, 同时送上一个序号( 假设为 500),那么接收方收到这个数据包以后, 就可以回复一个确认号(510 = 500 + 10) 告诉发送方 “我已经收到了你的数据包, 你可以发送下一个数据包, 序号从 511 开始” 。

三次握手的过程即是通信双方相互告知序列号起始值,并确认对方已经收到了序列号起始值的必经步骤。

如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。

至于为什么不是四次,很明显,三次握手后,通信的双方都已经知道了对方序列号起始值,也确认了对方知道自己序列号起始值,第四次握手已经毫无必要了。

TCP的三次握手的漏洞-SYN洪泛攻击

但是在TCP三次握手中是有一个缺陷的,就是如果我们利用三次握手的缺陷进行攻击。这个攻击就是SYN洪泛攻击。三次握手中有一个第二次握手,服务端向客户端应答请求,应答请求是需要客户端IP的,攻击者就伪造这个IP,往服务器端狂发送第一次握手的内容,当然第一次握手中的客户端IP地址是伪造的,从而服务端忙于进行第二次握手但是第二次握手当然没有结果,所以导致服务器端被拖累,死机。

image.png

当然我们的生活中也有可能有这种例子,一个家境一般的IT男去表白他的女神被拒绝了,理由是他家里没矿,IT男为了报复,采用了洪泛攻击,他请了很多人伪装成有钱人去表白那位追求矿的女神,让女生每次想交往时发现表白的人不见了同时还联系不上了。

面对这种攻击,有以下的解决方案,最好的方案是防火墙。

无效连接监视释放

这种方法不停监视所有的连接,包括三次握手的,还有握手一次的,反正是所有的,当达到一定(与)阈值时拆除这些连接,从而释放系统资源。这种方法对于所有的连接一视同仁,不管是正常的还是攻击的,所以这种方式不推荐。

延缓TCB分配方法

一般的做完第一次握手之后,服务器就需要为该请求分配一个TCB(连接控制资源),通常这个资源需要200多个字节。延迟TCB的分配,当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。

使用防火墙

防火墙在确认了连接的有效性后,才向内部的服务器(Listener)发起SYN请求,

说一说TCP四次挥手,为什么是四次?

四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当甲方完成数据发送任务后,发送一个FIN给乙方来终止这一方向的连接,乙方收到一个FIN只是意味着不会再收到甲方数据了,但是乙方依然可以给甲方发送数据,直到这乙方也发送了FIN给甲方。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。

image.png

为什么TCP的挥手需要四次?

TCP是全双工的连接,必须两端同时关闭连接,连接才算真正关闭。

如果一方已经准备关闭写,但是它还可以读另一方发送的数据。发送给FIN结束报文给对方,对方收到后,回复ACK报文。当这方也已经写完了准备关闭,发送FIN报文,对方回复ACK。两端都关闭,TCP连接正常关闭。

说一说你对IO的理解,什么是BIO,BIO阻塞在哪里?

见流程图

BIO阻塞是发生在操作系统上

说一说你对NIO的理解,NIO的优势点?

见流程图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超详情的开源知识库管理系统- mm-wiki的安装和使用

背景:最近公司需要一款可以记录公司内部文档信息,一些只是累计等,通过之前的经验积累,立马想到了 mm-wiki,然后就给公司搭建了一套,分享一下安装和使用说明: 当前市场上众多的优秀的文档系统百…

6.s081/6.1810(Fall 2022)Lab4: Traps

文章目录 前言其他篇章参考链接0. 环境搭建1. RISC-V assembly (easy)1.0 简介1.1 Q11.2 Q21.3 Q31.4 Q41.5 Q51.6 Q6 2. Backtrace (moderate)2.1 简单分析2.2 实现2.3 测试 3. Alarm (hard)3.1 简单分析3.2 test0: invoke handler3.2.1 添加调用3.2.2 获取参数3.2.3 处理中断…

服务器硬件、部署LNMP动态网站、部署wordpress、配置web与数据库服务分离、配置额外的web服务器

day01 day01项目实战目标单机安装基于LNMP结构的WordPress网站基本环境准备配置nginx配置数据库服务部署wordpressweb与数据库服务分离准备数据库服务器迁移数据库配置额外的web服务器 项目实战目标 主机名IP地址client01192.168.88.10/24web1192.168.88.11/24web2192.168.88…

Baumer工业相机堡盟工业相机如何通过BGAPISDK获取相机接口数据吞吐量(C++)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来获取相机当前数据吞吐量(C) Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在BGAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过BGAPI SDK获取数…

STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX STM32 CubeMX USB_HID(HID 鼠标和键盘) STM32 CubeMX前言 《鼠标》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘》STM32 CubeMX 设置(同上)代码…

睡眠助手/白噪音/助眠夜曲微信小程序源码下载 附教程

睡眠助手/白噪音/助眠夜曲微信小程序源码 附教程 支持分享海报 支持暗黑模式 包含了音频数据 最近很火的助眠小程序,前端vue,可以打包H5,APP,小程序 后台可以设置流量主广告,非常不错的源码 代码完整 完美运营 搭配无…

Django实现音乐网站 ⑸

使用Python Django框架制作一个音乐网站, 本篇主要是配置媒体资源设置。 目录 配置介绍 设置媒体资源 创建媒体资源目录 修改settings.py 注册媒体资源路由 总结 配置介绍 静态资源是指项目配置的js/css/image等系统常用文件。对于一些经常变动的资源&#x…

LLM reasoners 入门实验 24点游戏

LLM reasoners Ber666/llm-reasoners 实验过程 实验样例24games,examples/tot_game24,在inference.py中配置使用代理和open ai的api key。 首先安装依赖 git clone https://github.com/Ber666/llm-reasoners cd llm-reasoners pip install -e .然后…

UltraToolBars Crack,动画菜单和多种显示样式

UltraToolBars Crack,动画菜单和多种显示样式 创建模仿Microsoft Office 2000外观的健壮应用程序。 UltraToolBars包括11个用于创建可自定义工具栏的界面增强控件,包括:个性化菜单、弹出型工具栏、集成选项卡控件等。PictureRegion技术使表单和组件能够采…

C# Blazor 学习笔记(0.1):如何开始Blazor和vs基本设置

文章目录 前言资源推荐环境如何开始Blazor个人推荐设置注释快捷键热重载设置 前言 Blazor简单来说就是微软提供的.NET 前端框架。使用 WebAssembly的“云浏览器”,集成了Vue,React,Angular等知名前端框架的特点。 资源推荐 微软官方文档 Blazor入门基础视频合集 …

张驰课堂:6西格玛绿带培训费用、内容及实施要点分析

6西格玛绿带培训是一种质量管理培训,旨在帮助企业提高质量和效率。这种培训通常由咨询公司或培训机构提供,费用因提供者而异。以下是一些有关6西格玛绿带培训费用和培训内容的信息。 6西格玛绿带培训费用取决于培训机构,还有培训的持续时间和…

【vue】初步使用element-ui框架

cd到当前项目,运行 cnpm i element-ui -S 接下来就是在项目里面引用了,打开src目录下的main.js //导入vue.js import Vue from vue //导入下面2个组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css //导入App.vue根组…

Nginx可视化Nginx-gui

Github:GitHub - onlyGuo/nginx-gui: Nginx GUI Manager 运行方式支持docker、window 下载后压缩,直接运行startup.bat 默认账号密码:admin/admin

gin框架学习

文章目录 配置go环境实现一个简单的web响应服务验证功能gin增加页面以及传递数据 配置go环境 去go官网下载对应的版本 go下载地址 tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 我们可以编辑 ~/.bash_profile 或者 /etc/profile,并将以下命令添加该文件的末…

Ae 效果:CC Composite

通道/CC Composite Channel/CC Composite CC Composite(CC 合成) 效果主要用途在于它可以帮助你更方便地在一个图层上将不同的效果和原始图像进行合成。 如果在你的工作流程中需要用到同一个原始图层的多个副本,比如用于制作镜像、反射、阴影…

深入理解数据库事务(超详细)

一、事务的介绍 事务是一组操作的集合,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 二、事务的基本操作 2.1 事务操作方式一 例子: 转账场景(张三向李四转…

高性能MySQL实战(一):表结构

大家好,我是 方圆。最近因需求改动新增了一些数据库表,但是在定义表结构时,具体列属性的选择有些不知其所以然,索引的添加也有遗漏和不规范的地方,所以我打算为创建一个高性能表的过程以实战的形式写一个专题&#xff…

Element-UI简介

目录 安装 常用组件 Container 布局容器 Button 按钮 MessageBox 弹框 Form 表单验证 element-ui是一个前端的ui框架,封装了很多已经写好的ui组件,例如表单组件,布局组件,表格组件.......是一套桌面端组件。 Element - 网站…

华为PMS API client token auth failed

对接华为pms时出现问题,提示华为PMS API client token auth failed 主要是权限的问题,创建项目的时候选择N/A

11. 使用tomcat中碰到的一些问题

文章目录 问题一:Tomcat的startup.bat启动后出现乱码问题二:一闪而退之端口占用问题三:非端口问题的一闪而退问题四:服务器的乱码和跨域问题问题五: 在tomcat\webapps\下创建文件夹为什么tomcat重启就会丢失问题六:Tom…