【Java校招面试】基础知识(六)——计算机网络

目录

  • 前言
  • 一、TCP协议 / UDP协议
  • 二、HTTP协议
  • 后记


前言

本篇主要介绍计算机网络的相关内容。

“基础知识”是本专栏的第一个部分,本篇博文是第六篇博文,如有需要,可:

  1. 点击这里,返回本专栏的索引文章
  2. 点击这里,返回上一篇《【Java校招面试】基础知识(五)——GC》

一、TCP协议 / UDP协议

1. 建立TCP连接为什么需要三次握手,两次可不可以,为什么?
在这里插入图片描述

三次握手的原因是确保双方都能够收发数据。两次握手的话,由于没有第三次确认,可能会出现以下情况:

  • 客户端发送了连接请求,但是等待了一段时间后没有收到服务器的确认,于是认为连接失败,重新发送连接请求。但是这个时候第一次请求已经失效了,如果服务器在这个时候收到了第一个请求,就会误认为这是一个新的连接请求,从而建立了两条连接。
  • 如果服务器发送了确认,但是没有收到客户端的确认,服务器就会认为连接建立失败,但是客户端依旧认为连接建立成功。这样服务器就会浪费资源,因为他认为这条连接已经建立成功,但是实际上并没有建立成功。

因此,通过三次握手,可以确保双方都能够收发数据,且正确初始化Sequence的值,sequence值标识两端传输的报文的序号,保证其不会乱序。避免了以上问题的发生。

02. TCP连接首次握手的风险
服务器收到客户机的SYN,回复SYN + ACK后未收到ACK确认。服务器会重发SYN + ACK直至超时,Linux下默认重试5次,间隔1s、2s、4s、8s、16s,在第5次发送至后等待32秒,直至共63秒后断开连接。

服务器会因此遭受 SYN Flood攻击风险。

SYN Flood攻击: 它利用TCP协议中的SYN包(同步包)来占用服务器资源。攻击者发送大量的SYN包给服务器,但不完成握手过程,从而耗尽服务器的资源,导致服务器无法响应合法的请求。这种攻击通常是通过多个IP地址或者使用伪造的IP地址来进行的,目的是使服务器无法正常工作,导致服务中断或者崩溃。

03. 针对SYN Flood攻击的防范措施
启用SYN Cookie: Linux下,SYN队列满后,通过tcp_syncookies参数回发SYN Cookie。若为正常连接,客户机会回发SYN Cookie,即使队列已满也可以直接建立连接。这样就可以过滤掉大量的伪造连接请求,减轻攻击影响。

04. 建立TCP连接之后,如果客户机或服务器出现故障,会发生什么?
TCP连接具有保活机制。如果在一段保活时间内,连接处于非活动状态,则向对方发送保活探测报文,如果没有收到响应报文,就继续尝试,直到达到保活探测数,仍未收到响应则中断连接。

05. 断开TCP连接时,客户机TIME_WAIT状态的作用是什么?
TIME_WAIT状态是指在TCP连接关闭后,等待一段时间以确保所有的数据包都被接收或重传后才彻底关闭连接的状态。它的作用是防止已经关闭的连接后续的数据包干扰新的连接,避免出现“错误的连接”问题。在TIME_WAIT状态下,该连接的端口号仍然被保留,以便能够处理该连接的任何遗留数据。一般来说,TIME_WAIT状态持续时间为2倍的MSL(Maximum Segment Lifetime),MSL通常为2分钟。

06. 断开TCP连接为什么需要四次挥手?
在这里插入图片描述

为了确保数据能够完整传输。
断开TCP连接需要四次挥手的原因是因为TCP是全双工协议,即双方都可以向对方发送数据。在断开连接时,双方都要发送确认信息,以确保对方已经收到自己的断开请求。因此,需要四次挥手来完成断开连接的过程。

07. 服务器出现大量CLOSE_WAIT状态的TCP连接的原因

  • 原因: 客户机关闭连接,但服务器忙于读或写数据,没有及时关闭连接。

  • 解决方案:
    1) 检查代码: 特别是释放资源的部分;
    2) 检查配置: 特别是处理请求的线程配置。

08. TCP/IP模型与OSI七层模型的对比

OSI七层模型TCP/IP模型功能协议数据单元(PDU)对应协议对应设备
应用层应用层文件传输,电子邮件,虚拟终端数据(data)HTTP、FTP、SMTP、DNS、DHCP、SNMP、Telnet 计算机
表示层数据格式化,代码转换,数据加密
会话层建立或解除与别的节点的联系
传输层传输层提供端对端的连接段(segment)TCP、UDP
网络层网络层为数据包选择路由包(package)IP、ICMP、RIP、OSPF、BGP、IGMP路由器
数据链路层链路层传输有地址的帧,错误校验帧(frame)SLIP、CSLIP、PPP、ARP、RARP、MTU交换机、网桥
物理层以二进制形式在物理媒介上传输数据比特(bit)ISO2110、IEEE802、IEEE802.2中继器、集线器

09. TCP协议如何实现可靠的传输?
1) 数据分段并编号: 应用数据被分成一个或多个TCP段,每个段都有一个序号确认号。接收方使用这些号码来确认已收到的数据和请求缺失的数据。
2) 校验和: TCP协议使用校验和来检测数据是否被损坏或篡改。如果数据被发现损坏或篡改,TCP会丢弃该数据,并要求重新发送。
3) 确认重传机制: 发送方使用超时重传机制来确保数据能够到达接收方。如果发送方没有收到确认信息,就会重传该数据。
4) 流量控制: 发送方和接收方都维护一个拥塞窗口大小的变量,以确保网络不会过载。如果网络拥塞,发送方会减小窗口大小,从而减少发送的数据量。
5) 拥塞控制: 通过监控网络的拥塞状态,动态调整数据传输速度数据包发送频率,以避免网络拥塞和丢包,从而保证数据传输的可靠性和高效性。

10. 确认重传机制是什么?
在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送数据的ACK确认报文,则对该报文进行重传,在达到一定次数还没有成功时放弃并发送一个复位信号。

  • 累计确认: 累计确认就是TCP协议的确认方法,TCP使用可变长度报文段来发送数据,重传时,报文段数据可能会比原报文段数据包含更多的数据,因此对数据报和报文段无法进行简单的确认。TCP使用流序号对流中的一个位置进行确认,即序号和确认号一一对应,接收方使用序号将报文段重新排序,且以正确接收到的流的最长连续前缀进行确认。

  • 超时重传: 超时时间计算是开启定时器的设定时间,从而保证网络资源利用率,避免因定时器的时间(RTO)不确定而影响网络传输效率。

  • 快速重传: 要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方),而不要等到自己发送数据时捎带确认。

11. 流量控制中的滑动窗口协议是什么?
滑动窗口协议是一种流量控制机制,用于确保发送方和接收方之间的数据传输的可靠性。

其工作流程如下:
1) 发送方将数据分成多个数据包,并按顺序发送给接收方。
2) 接收方在接收到数据包后,将其存储在缓冲区中,并向发送方发送确认消息(ACK),表示已成功接收。
3) 发送方收到确认消息后,将窗口向前滑动一个位置,表示已成功发送了一个数据包,并准备发送下一个数据包。
4) 如果接收方未能接收到数据包,则不会发送确认消息。发送方会等待一段时间,如果仍未收到确认消息,则会重新发送该数据包。
5) 发送方的窗口大小取决于接收方的缓冲区大小。如果接收方的缓冲区已满,则发送方会停止发送数据包,直到接收方空出缓冲区。
6) 如果在数据传输过程中发生丢包或错误,发送方会收到接收方的重传请求,并重新发送丢失的数据包。
7) 如果发送方没有收到确认消息或重传请求,则会重新发送数据包,直到接收方确认已成功接收。

12. 接收窗口和发送窗口大小一样吗?设置越大越好吗?
接收窗口一般 >= 发送窗口,但不是越大越好。当接收窗口大到一定程度,非但对降低丢包率的不会有更大的影响,反而会增大内存消耗。

13. UDP协议的特点
1) 面向非连接;
2) 不维护连接状态,支持同时向多个客户端传输相同的消息;
3) 数据包报头只有8个字节,额外开销较小;
4) 吞吐量只受限于数据生成速率、传输速率传输速率以及机器性能;
5) 尽最大努力交付,不保证可靠交付,不需要维护复杂的链接状态表;
6) 面向报文,不对应用程序提交的报文信息进行拆分或者合并。

14. TCP协议和UDP协议的区别

协议是否面向连接可靠性有序性速度量级适用场景
TCP可靠有序重量级上传、下载文件等需要传输的数据具有高可靠性的场景
UDP不可靠无序轻量级视频流、音频流传输这类要求快、流畅、但数据可靠性要求不是很高的场景

二、HTTP协议

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超文本数据的协议。它是一种客户端-服务器协议,客户端通过发送HTTP请求与服务器交互,服务器通过发送HTTP响应来响应客户端请求。HTTP协议是基于TCP/IP协议的,HTTP请求和响应的数据都是通过TCP连接传输的。HTTP协议是Web应用程序的基础,通过HTTP协议,浏览器可以获取Web服务器上的各种资源,如网页、图片、视频、音频等。

01. HTTP协议的主要特点
1) 支持支持额客户/服务器模式
2) 简单快速
3) 灵活,允许传输任意类型的数据对象。
4) 无连接,限制每次连接只处理一个请求,服务端处理完请求并收到客户端的应答之后就断开连接。
5) 无状态

02. 一个HTTP请求从发起请求到响应的过程
1) 客户端和服务端TCP端口(默认端口号80)建立一个TCP套接字连接;
2) 客户端发送HTTP请求;
3) 服务端接收请求并返回HTTP响应;
4) 服务端释放TCP连接(1.0版本中使用close方式,服务端直接断开连接;1.1中使用keep alive,服务端会保持连接一定的时间,在此期间客户端可以继续发送请求);
5) 客户端解析HTTP响应内容。

03. 在浏览器地址栏输入URL,按下回车键之后经历的流程
1) DNS解析: 浏览器根据URL逐层查询DNS缓存,解析域名所对应的IP地址。DNS缓存由近到远依次是:浏览器缓存、本地缓存、路由器缓存、IPS服务器缓存、根域名服务器缓存、顶级域名服务器缓存。
2) 建立TCP连接: 根据IP地址和对应的端口号建立TCP连接(三次握手)。
3) 发送HTTP请求;
4) 服务器处理请求并返回包含页面信息的HTTP响应;
5) 浏览器收到响应,解析渲染页面;
6) 断开HTTP请求: 浏览器释放TCP连接(四次挥手)。

04. 常见的HTTP状态码

  • 1xx: 指示信息,表示请求已接收,继续处理
  • 2xx: 成功,表示请求已被成功接收、理解、接受
    • 200, OK: 正常返回信息
  • 3xx: 重定向,要完成请求必须进行更进一步的操作
    • 301, 永久重定向: 请求的资源永久分配了新的url,以后应使用新url
    • 302, 临时重定向: 请求的资源临时分配了新的url
  • 4xx: 客户端错误,请求有语法错误或请求无法实现
    • 400, Bad Request: 客户端请求有语法错误,不能被服务器理解
    • 401, Unauthorized: 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
    • 403, Forbidden: 服务器收到请求,但是拒绝提供服务
    • 404, Not Found: 请求资源不存在
  • 5xx: 服务器错误,服务器未能实现合法的请求
    • 500, Internal Server Error: 服务器发生了不可预期的错误
    • 503, Server Unavailable: 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

05. 常用的HTTP请求method
HTTP请求的method有GETPOSTHEADOPTIONSPUTPATCHDELETETRACECONNECT,最常用的是POSTGET

  • 区别:
    1) HTTP报文层面: GET将请求参数放在URL中,POST放在报文体(即Body)中。
    2) 幂等性: 符合密等性的请求,请求一次和请求多次的结果一致。使用GET的请求应该符合幂等性,使用POST的请求应该不符合幂等性。
    3) 其他层面: 使用GET的请求可以被缓存、被存储(因为参数都在URL中),而POST不行。

06. Cookie和Session的区别

  • Cookie
    由服务器发给客户端的特殊信息,以文本的形式存放在客户端。客户端再次请求的时候,会把Cookie回发。服务器接收后,会解析Cookie生成与客户端相对应的内容。

  • Session
    服务端的机制,在服务器上保存的信息。解析客户端请求并操作session id,按需求保存状态信息。

  • 区别

    • Cookie数据存放在客户端,Session存放在服务端;
    • Session相对于Cookie更安全;
    • 若考虑减轻服务器负担,可以使用Cookie。

07. HTTP和HTTPS的区别
由于HTTP使用明文传输数据,不具备安全性。HTTPS引入了SSL(Security Socket Layer,安全套接字层)来堆传输的数据进行加解密。

  • SSL:

    • 为网络通信提供安全及数据完整性的一种安全协议;
    • 位于TCP与应用层之间,是操作系统对外的API,SSL3.0后更名为TLS;
    • 采用身份验证和数据加密保证网络通信的安全和数据的完整性。
  • 区别:

    • HTTPS需要到CA申请证书,HTTP不需要;
    • HTTPS密文传输,HTTP明文传输;
    • 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口;
    • HTTPS = HTTP + 加密 + 认证 + 完整性保护,比HTTP安全。

08. HTTPS传输数据的流程
1) 浏览器将支持的加密算法信息发送给服务器;
2) 服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器;
3) 浏览器验证证书合法性,并结合证书公钥加密信息加密信息发送给服务器;
4) 服务器使用私钥解密信息,验证哈希,加密响应信息回发浏览器;
5) 浏览器解密响应信息,并对信息进行验证,之后进行加密交互数据。

09. socket
是对TCP/IP协议的抽象,是操作系统对外开放的接口

socket通信的流程:
在这里插入图片描述
1) 创建socket: 首先要创建一个socket对象,该对象表示一个通信的端点,需要指定协议和地址族。
2) 绑定地址: 将socket绑定到一个具体的IP地址和端口上,以便其它的进程能够找到它。
3) 监听连接: 如果是服务器端,需要调用listen函数,来监听客户端的连接请求。
4) 接收连接: 当客户端请求连接时,服务器端会调用accept函数,来建立一个新的socket对象,用于与客户端进行通信。
5) 发送和接收数据: 用send函数来发送数据,用recv函数来接收数据。
6) 关闭连接: 通信结束后,需要调用close函数来关闭socket。

以上就是socket通信的基本流程。不同的协议或应用场景下,会有一些特别的处理,但基本流程是大致相同的。


后记

计算机网络相关的知识点是非常复杂多样的,汇聚了成千上万的先哲在开拓道路上的发现、研究和试验结果。上学的时候我们需要用一个学期去学完一本厚厚的书。因此这里不可能详尽得照搬书中的所有内容,仅将面试中的高频考点提出来列举在这里。如果想要系统化地学习计算机网络相关的知识,建议买一本书来读。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统——操作系统逻辑结构

0.关注博主有更多知识 操作系统入门知识合集 目录 2.1操作系统的逻辑结构 思考题: 2.2CPU的态 思考题: 2.3中断机制 2.1操作系统的逻辑结构 操作系统的结构指的是操作系统的设计和实现思路,按照什么样的结构设计、实现。 操作系统的…

公司新来的00后真是卷王,工作没2年,跳槽到我们公司起薪18K都快接近我了

说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

通过Python的PIL库给图片添加图片水印

文章目录 前言一、素材准备1.原图2.水印图 二、使用PIL库给图片添加图片水印1.引入库2.定义图片路径3.打开原图4.打开水印图片5.计算水印图片大小6.计算原图大小7.调整水印图片大小7.1调整前7.2调整后 8.计算水印图片位置8.1左上8.2左下8.3右上8.4右下8.5中间 9.添加水印10.保存…

Doris(20):Doris的函数—数学函数

1 查看函数名 show builtin functions in test_db; 2 abs(double a) 功能: 返回参数的绝对值 返回类型:double类型 使用说明:使用该函数需要确保函数的返回值是整数。 3 acos(double a) 功能: 返回参数的反余弦值 返回类型:double类型 MySQL 中反余弦函数 ACOS(…

数据库基础及用户管理授权

数据库概念 关系型数据库 数据结构二维表格 库 -> 表 -> 列(字段):用来描述对象的的一个属性;行:用来描述一个对象的信息 mysql(5.7/8.0) maridb ocracle postgresql sqlserver(windows…

196页11万字智慧水务平台建设方案

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 业务需求分析 3.1 主要业务描述 (1)调度中心主要业务描述 配套工程调度中心为一级调度机构,同时也是水务集团原水供水的统一调度中心。…

Iron Web Scraper 2023.4.13 Crack

Iron Web Scraper 被认为是 C# 的互联网抓取库,它能够让用户和开发者激发和最终的个人浏览行为,以提取文件、内容甚至图片和应用程序。动词作为 .NET 的本机项。IronWebScraper 具有从后台处理礼貌和多线程进程的能力,这使得用户程序很容易简…

SpringCloud学习(七)——统一网关Gateway

文章目录 1. 网关介绍2. 网关搭建2.1 引入依赖2.2 创建启动类2.3 编写配置2.4 测试 3. 路由断言工厂4. 路由过滤器4.1 过滤器配置4.2 全局过滤器4.3 过滤器执行顺序 5. 跨域问题处理 1. 网关介绍 到现在,我们可以使用Nacos对不同的微服务进行注册并管理配置文件&am…

天气预报查询 API 提供个性化的天气服务的设计思路

引言 假设你是一个开发人员或公司,正在考虑开发一款天气应用程序,但你意识到市场上已经有很多竞争者在使用天气预报查询 API 来提供类似的服务,本文将一起探寻一些创新的方法来提高应用程序的竞争力。 扩大竞争力的一些建议 如果市面上已经…

Redis主从复制和哨兵模式

Redis主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Reds服务器。前者称为主节点(master / leader),后者称为从节点(slave / follower)。 数据的复制是单向的,只能由主节点到从节点。 Master以写为主,Slave…

spring2:创建和使用

目录 1.创建Spring项目 1.1创建Maven类 1.2添加Spring支持框架 1.3添加启动类 2.存储Bean对象 2.0 spring项目中添加配置文件(第一次) 2.1创建Bean 2.2把Bean注册到容器中 3.获取并使用Bean对象 3.1创建上下文 3.2获取指定Bean对象 getBean()方法 --> 获取什么…

Flutter 组件抽取:日期(DatePicker)、时间(TimePicker)弹窗选择器【仿照】

简介 仿照《Flutter 仿ios自定义一个DatePicker》实行的日期弹窗选择器&#xff08;DatePicker&#xff09;、时间弹窗选择器&#xff08;TimePicker&#xff09; 效果 范例 class _TestPageState extends State<TestPage> {overridevoid initState() {super.initStat…

ros基础笔记

1创建工作空间 catkin_init_workspace 将文件夹初始化成ros文件 编译工作空间catkin_make vi ~/.bashrc 加入环境变量bashrc一下在任何终端都生效 catkin_create_pkg learning_communication通讯机制 std_msgs数据结构 rospy roscpp catkin_create_pkg mbot_description ur…

SpringBoot实现导出Excel功能

1 问题背景 需求要做一个导出excel的功能 2 前言 本篇着重阐述后端怎么实现&#xff0c;前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的&#xff0c;不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。再次声明&#xff0c;…

题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和--不能完全通过,最好情况通过67.

原题链接&#xff1a; 题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和 https://www.dotcpp.com/oj/problem3166.html 致歉 害&#xff0c;首先深感抱歉&#xff0c;这道题还是没有找到很好的解决办法。目前最好情况就是67分。 这道题先这样跳过吧&#xff0c;当然以后还…

day9 实现UDP通信

目录 socket函数拓展 UDP通信实现过程 代码实现 socket函数拓展 send与recv函数&#xff1a; /*用于发送数据*/ ssize_t send(int sockfd, const void *buf, size_t len,int flags);/*用于接收数据*/ ssize_t recv(int sockfd, void *buf, size_t len,int flags);/*前三个…

【Python习题集5】函数的设计

函数的设计 一、实验内容二、实验总结 一、实验内容 1.编写两个函数分别按单利和复利计算利息&#xff0c;根据本金、年利率、存款年限得到本息和和利息。调用这两个函数计算1000元在银行存3年&#xff0c;在年利率是6%的情况下&#xff0c;单利和复利分别获得的本息和和利息。…

程序员不得不知道的 API 接口常识

1、初识 API 接口 记得在我初学 web 开发的时候&#xff0c;后端框架相关的教程基本都会教学生写渲染模版&#xff08;不分语言&#xff09;&#xff0c;也就是说后端返回的是整个网页的数据&#xff0c;浏览器只负责渲染。 一般这类模版在后端都会对应一个路由&#xff0c;比…

Vue——组合式函数

目录 什么是“组合式函数”&#xff1f;​ 鼠标跟踪器示例​ 异步状态示例​ 约定和最佳实践​ 命名​ 输入参数​ 返回值​ 副作用​ 使用限制​ 通过抽取组合式函数改善代码结构 选项式 API 中使用组合式函数​ 与其他模式的比较​ 和 Mixin 的对比​ 和无渲染…

计算机视觉的应用3-批量图片风格迁移之素描图片生成的应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用3-批量图片生成素描图片的应用&#xff0c;将一张图像转换为素描风格的图像的其实是模拟了人类视觉在观察物体时受到的光照条件。素描风格的图像在灰度值上表现出明暗交替的效果&#xff0c;这种效…