【Java面试题】计算机网络知识点总结

2023-11-02

1、计算机网络体系结构图

在这里插入图片描述

按照由下往上的顺序,逐一解释。

首先我们先了解下每一层的作用和对应的网络协议。

对应层 作用 对应的网络协议/硬件
应用层 提供用户服务,具体功能由应用程序实现 SMTP、HTTP、DNS、…
表示层 用户对数据的压缩、加密 JPEG、MPEG、ASII、…
会话层 用于建立用户级的连接,选择适当的传输服务 SQL、RPC、…
传输层 用户端到端的可靠数据传输 TCPUDP、…
网络层 进行路由选择,网络互连 ARPIPICMPIGMP、…
数据链路层 进行数据交换,将要传输的数据转换为二进制形式 网卡、网桥、交换机
物理层 提供数据传输的硬件保证网卡接口传输介质 中继器、集线器、网关

1.1、传输层 TCP 和 UDP 的区别和作用?

  • TCP是面向连接的,可靠的数据流传输;而UDP提供的是无连接的、不可靠的数据流传输。
  • TCP保证数据的正确性,UDP可能丢包;TCP保证数据的顺序,而UDP不保证。
  • TCP传输数据单位是TCP报文段;UDP传输数据单位是用户数据报文
  • TCP注重数据安全性,传输效率较慢;UDP不保证数据安全性,因为不需要连接等待,少了许多操作,所以效率较快。
协议类型 是否面向连接 传输可靠性 传输形式 传输效率 所需资源 应用场景 首部字节
TCP 面向连接 可靠 字节流 要求通信数据可靠(如文件传输、邮件传输) 20-60
UDP 无连接 不可靠 用户数据报文段 要求通信速度高,实时性(如域名转化、QQ语音、视频) 8(由4个字段组成)

1.2、面向连接 和 面向无连接 的区别?

  • 面向连接的服务:通信双方在进行通信之前,要预先在双方建立一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况是一直可以被实时监控和管理的。
  • 面向无连接的服务:通信双方不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送消息,让信息自主的在网络上去传,一般在传输过程中不监控。

1.3、基于TCP和UDP的有哪些协议?

基于TCP协议:

  • HTTP:Web服务器传输超文本到本地浏览器的传送协议。
  • SMTP:简单邮件传输协议,用户发送邮件,服务端开放的是25端口号。
  • FTP:文件纯属协议,使用21端口。

基于UDP协议:

  • DNS:域名解析服务,将域名地址转换为IP地址,DNS用的是53号端口。

1.4、TCP和UDP协议的使用场景

  • TCP:当时网络通讯质量有要求的时候,比如:整个数据哟啊准确无误的传输给对方,常使用基于TCP协议的HTTP、HTTPS、FTP等文件传输协议。
  • UDP:当强调传输性能,而不要求传输的完整性和可靠性时,常使用UDP协议传输,如:QQ语言、QQ视频等。

1.5、TCP 协议如何保证可靠传输?

  1. 应用数据分割:将应用数据分割成TCP认为最适合发送的数据块。
  2. 对数据包编号:TCP对发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
  3. 校验和:TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果收到数据段的校验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。
  4. 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区中能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议(TCP利用滑动窗口实现流量)。
  5. 拥塞控制:当网络拥挤时,减少数据的发送。
  6. ARQ协议:也是为了实现可靠传输的,它的基本原理就是每发送完一个分组就停止发送,等待对方确认。在收到确认后在发送下一个分组。
  7. 超时重传:当TCP发送一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重新发送这个报文段。

1.6、TCP 三次握⼿和四次挥⼿

为了准确⽆误地把数据送达⽬标处,TCP协议采⽤了三次握⼿策略。

我们使用动漫图解的方式解释三次握手:
在这里插入图片描述
简单示意图:
在这里插入图片描述
简单概括上述图解的流程:

  1. 客户端发送带有SYN标志的数据包,服务接收数据包,一次握手;
  2. 服务端发送带有SYN/ACK标志的数据包,客户端接收数据包,二次握手;
  3. 客户端发送带有ACK标志的数据包,服务端接收数据包,三次握手。

1.7、为什么要三次握手

三次握手的目的就是建立可靠的通信信道,说到通信,简单来说就是数据的发送与接收,而三次握手就是为了保证双方都确认自己与对方的发送与接收是正常的。

  • 第一次握手:Client什么都不能确认;Server确认了对方发送正常,自己也接收正常。
  • 第二次握手:Client确认了:自己发送正常、对方接收和发送正常、自己接收正常;Server确认了:对方发送正常、自己接收正常。
  • 第三次握手:Client确认了:自己发送正常、对方接收和发送正常、自己接收正常;Server确认了:自己发送正常、对方接收和发送正常、自己接收正常。

所以三次握⼿就能确认双发收发功能都正常,缺⼀不可。

1.7.1、为什么Server要传回 SYN数据包?

接收端传回发送端发送的SYN是为了告诉发送端,我接收到的消息确实就是你发送的信号。

SYN数据包:

SYN是TCP/IP建立连接时使用的握手信号。在Client和Server之间建立正常的TCP网络连接时,客户机首先发送一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK(ACK就是Server发送给Client的一种传输控制字符,用于确认接收的数据准确无误)消息响应。这样在Client和Server之间才能建立起可靠的TCP连接,数据才可以在Client和Server之间安全传递。

1.7.2、Server传回 SYN数据包后,为啥还要传 ACK?

双方通信无误必须是两者互相发送信息都无误。发送方传送了SYN数据包信号,证明Client端到Server端的通道没有问题,但是接收方到发送方的通道还需要ACK信号来验证。

简单来说,就是发送方和接收方都有自己的一个确认信号。

1.8、断开一个TCP连接需要四次挥手

在这里插入图片描述
断开一个TCP连接则需要四次挥手

  • 客户端发送一个FIN。用来关闭客户端到服务器的数据传送;
  • 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号;
  • 服务器关闭与客户端的连接,发送一个FIN给客户端;
  • 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

1.8.1、为什么要四次挥⼿

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据在发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。

举个通俗的例子:

A和B打电话,通话即将结束后,A说“我没啥要说的了”,B回答说“我知道了”,但是B可能还有要说,A不能要求B直接跟着自己的节奏直接结束通话,而是要等B说完他想说的话,等B说“好了,我说完了,挂着吧”,A回答“知道了”,这样通话才算结束。

1.9、什么是ARQ协议

自动重传请求(Automatic Repeat-reQuest ,ARQ) 是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送一段时间之内没有收到确认帧,它通常会重新发送,ARQ包括停止等待ARQ协议连续ARQ协议

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Java面试题】计算机网络知识点总结 的相关文章

  • 计算机网络知识点

    复习计算机知识网络总结小的知识点 xff0c 看图
  • 计算机网络知识点(三) 数据链路层

    目录 第三章 数据链路层 3 1 数据链路层的设计问题 3 1 1 提供给网络层的服务 3 1 2 成帧 3 1 3 差错控制 3 1 4 流量控制 3 2 差错检测和纠正 3 2 1 纠错码 3 2 2 检错码 3 3 基本数据链路层协议
  • 十八、搜索引擎

    搜索引擎ElasticSearch Lucene
  • 统计字符串中,中文字符、英文字符和数字字符的数量

    package com suanfa public class ZYSTotal 统计字符串中 中文字符 英文字符和数字字符的数量 public static void main String args int englishCount 0
  • 浅拷贝与深拷贝

    目录 什么是拷贝 浅拷贝 前端浅拷贝方法 java后端深拷贝方法 深拷贝 前端深拷贝方法 java后端深拷贝方法 需要注意的事情 什么是拷贝 拷贝是指对对象进行复制的操作 是为了创建一个与原对象具有相同值的新对象 以便在不改变原对象的情况下
  • 【Java面试题】用float型定义变量:float = 3.14;,是否正确?

    题目 用float型定义变量 float 3 14 是否正确 解析 不正确 赋值运算符 左右两边的精度类型不匹配 在默认情况下 包括小数点的实数 如本题中的3 14 被存储为double类型 即双精度 而float类型定义的变量 如本题中的
  • 2020前端实习大厂面试经验汇总(秋招加油!)

    这篇文章主要介绍了前端实习大厂的面试经验 主要包含了7个公司 华为 欢聚 京东 酷狗 美的 腾讯 网易 公司不分先后 感兴趣的朋友可以了解一下 祝大家秋招顺利 offer到手 华为CBG 通用软件开发 4 21 华为技术一面 45分钟 手撕
  • JAVA上机题(3道)

    题目一 从控制台中读入一个文件名 判断该文件是否存在你的某个盘下 如果该文件存在 则在原文件相同路径下创建一个文件名为 copy 原文件名 的新文件 该文件内容为原文件的拷贝 首先肯定是要判断该文件名到底存不存在 我们定义一个方法 用来判断
  • 多线程(三)

    Java 208 道面试题 多线程 35 并行和并发有什么区别 并行是指两个或者多个事件在同一时刻发生 而并发是指两个或多个事件在同一时间间隔发生 并行是在不同实体上的多个事件 并发是在同一实体上的多个事件 在一台处理器上 同时 处理多个任
  • 【Java面试题】计算机网络知识点总结

    计算机网络知识点总结 1 计算机网络体系结构图 1 1 传输层 TCP 和 UDP 的区别和作用 1 2 面向连接 和 面向无连接 的区别 1 3 基于TCP和UDP的有哪些协议 1 4 TCP和UDP协议的使用场景 1 5 TCP 协议如
  • 【JAVA面试题】为什么会出现4.0-3.6=0.40000001这种现象?

    这种舍入误差的主要原因是 浮点数值采用二进制系统表示 而在二进制系统中无法精确地表示分数 1 10 这 就好像十进制无法精确地表示分数 1 3 样 如果在数值计算中不允许有任何舍入误差 就应该使用 BigDecimal类 浮点数值不适用于无
  • 05-Mysql夺命三连问:什么是索引下推?什么是索引覆盖?什么是回表?【Java面试总结】

    Mysql夺命三连问 什么是索引下推 什么是索引覆盖 什么是回表 索引下推是mysql5 6 提出的一个查询优化方案 主要的目的是减少数据或查询中不必要的读取和计算 它的原理是将查询条件尽可能的推送到索引层面进行过滤 减少从磁盘读取的数据量
  • Java常见面试题汇总-----------数据库(数据库索引及其实现)

    54 数据库索引 索引的优缺点 优点 1 大大加快数据的检索速度 2 创建唯一性索引 保证数据库表中每一行数据的唯一性 3 加速表和表之间的连接 4 在使用分组和排序子句进行数据检索时 可以显著减少查询中分组和排序的时间 缺点 1 索引需要
  • 工程师事业的思考(分享一些好的面试题)

    题记 最近去参加了一场技术交流会 小圈子内的技术交流 有来自大厂的一些高层工程师 做技术嘛 这条路其实是木有尽头的 说到底还是得要基础好哇 我目前是在做区块链行业 做数字货币交易所 然后很多朋友就是觉得非常不理解了嘛 就像李笑来说的那样 可
  • get和post区别

    get和post区别 get参数通过url传递 post放在request body中 get请求在url中传递的参数是有长度限制的 而post没有 get比post更不安全 因为参数直接暴露在url中 所以不能用来传递敏感信息 get请求
  • 十七、定时任务

    一 为什么需要定时任务 相关业务场景多 例如 1 凌晨一点进行相关数据同步 2 定时发送文章 3 半小时全量推送某些数据给用户 二 单机定时任务 Timer java util Timer是 JDK 1 3 开始就已经支持的一种定时任务的实
  • java中String、StringBuffer、StringBuilder的区别

    java中String StringBuffer StringBuilder是编程中经常使用的字符串类 他们之间的区别也是经常在面试中会问到的问题 现在总结一下 看看他们的不同与相同 三者共同之处 都是final类 不允许被继承 主要是从性
  • Tomcat优化相关问题

    1 你怎样给 tomcat 去调优 JVM 参数调优 Xms 表示 JVM 初始化堆的大小 Xmx表示 JVM 堆的最大值 这两个值的大小一般根据需要进行设置 当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出 并且导致应用服务崩溃
  • 抽象类和接口的区别,以及使用场景?

    抽象类 接口 抽象类和接口区别 Java 8中关于接口的改进 接口中的默认方法 抽象类和接口使用场景 抽象类是对一种事物的抽象 即对类抽象 而接口是对行为的抽象 抽象类是对整个类整体进行抽象 包括属性 行为 但是接口却是对类局部 行为 进行
  • 根据图片地址得到文件流

    得到文件流 param url 图片地址 return public static byte getFileStream String url try URL httpUrl new URL url HttpURLConnection co

随机推荐

  • 大数据项目之Flink实时数仓(数据可视化接口实现)

    设计思路 之前数据分层处理 最后把轻度聚合的结果保存到 ClickHouse 中 主要的目的就是提供即时的数据查询 统计 分析服务 这些统计服务一般会用两种形式展现 一种是为专业的数据分析人员的 BI 工具 一种是面向非专业人员的更加直观的
  • samba 4.6.5 从编译到配置

    为了防范永恒之蓝等samba病毒的传播 需要及时更新samba服务 本文介绍了在Ubuntu16 04版本上编译 配置samba 4 6 5 的方法 卸载当前系统中的samba sudo apt get remove samba commo
  • 数值分析 第七章 常微分方程的数值解法

    1 数值解法相关公式 1 1 为什么要研究数值解法 所谓数值解法 就是设法将常微分方程离散化 建立差分方程 给出解在一些离散点上的近似值 1 2 问题 7 1 一阶常微分方程初值问题的一般形式 y f x y a x by a begin
  • 借 __attribute__ 引入 The GNU C Reference Manual

    attribute 是 GNU C 规范的一个编译期关键字 话题文档主页 The GNU C Reference Manual GNU Project Free Software Foundation 在一般的Linux中 在文件 usr
  • selenium 360启动

    from selenium webdriver chrome options import Options from selenium import webdriver import time chrome options webdrive
  • MIPI接口中DPHY、CPHY简介及概要设计

    一 分类简介 MIPI是移动领域最主流的视频传输接口规范 目前应用最广泛的是MIPI DPHY和MIPI CPHY两组协议簇 另外还有MIPI MPHY 属于高速Serdes范畴 应用不那么广泛 1 MIPI DPHY 是MIPI的一种物理
  • RHEL 6 修改网卡名称

    RHEL Redhatenterprise linux 6 修改网卡名称 某些服务器安装redhat 6 4时 会自动把网卡名字设置为em1 em2等等 而不是以前的是eth0 等 但是flexlm只认识eth0的mac地址 不过我在虚拟机
  • Vue报错:Error in v-on handler: “TypeError: Cannot read properties of undefined (reading ‘skuId‘)“

    背景 当点击按钮时候 正常情况控制台的Network应该要发送一个变化量 现在控制台的Network不仅不显示 而且还报错 报错信息如下 vue runtime esm js c320 619 Vue warn Error in v on
  • 亚马逊云科技的区域和可用区概念解释

    对于刚开始接触AWS的用户而言 区域 Region 和可用区 Availability Zone AZ 这两个概念有点不好理解 初次接触时往往不知道它们跟我们日常说的数据中心是什么关系 然而区域和可用区是AWS中非常基础和重要的概念 因此我
  • 解决 jenkins 插件下载失败问题 - 配置 jenkins 插件中心为国内镜像地址

    参考资料 解决 jenkins 插件下载失败问题 配置 jenkins 插件中心为国内镜像地址 从 jenkins 官网上下载的 jenkins 在安装的过程中 会有安装插件一环 第一个为默认安装 第二个为手动 选择默认安装之后 会遇到 安
  • 线程休眠、礼让、等待

    线程的状态 线程中的方法 boolean isAlive 测试线程是否处于活动状态 setPriority int newPriority 更改线程优先级 static void sleep long millis 让指定线程休眠指定的毫秒
  • QML + KDDockWidget 实现 tabwidget效果( 窗口可独立浮动和缩放)

    前言 前面文章介绍过在QML中使用ListView实现TabBar标签拖拽交换位置效果 文章在这里 先在此基础上升级一下 结合KDDockWidget做一个可浮动的窗口效果 关于KDDockWidget的介绍 以前的文章有写过 可参考 qm
  • Tango和ROS在LabVIEW的联合测试

    环境 LabVIEW2018 32位 Tango ROS for LabVIEW Software v2 1 0 2 步骤 目标 变量传递顺序 Tango Client Tango Server ROS Publisher ROS Subs
  • 【MySQL】内置函数

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 日期函数 1 函数用法 1 1current date
  • openGL之API学习(五十四)glDepthFunc

    指定深度测试比较的方法 如果满足深度测试条件则赢得深度测试并会被渲染出来 void glDepthFunc GLenum func func Specifies the depth comparison function Symbolic
  • Pytorch数据读取与预处理实现与探索

    在炼丹时 数据的读取与预处理是关键一步 不同的模型所需要的数据以及预处理方式各不相同 如果每个轮子都我们自己写的话 是很浪费时间和精力的 Pytorch帮我们实现了方便的数据读取与预处理方法 下面记录两个DEMO 便于加快以后的代码效率 根
  • Oracle sqlldr的用法 (这个最完整)

    在 Oracle 数据库中 我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法 1 A 表的记录导出为一条条分号隔开的 insert 语句 然后执行插入到 B 表中 2 建立数据库间的 dblink 然后用 create tab
  • 【蓝桥杯】 C++ 成绩统计

    问题描述 小蓝给学生们组织了一场考试 卷面总分为 100 分 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 则称为及格 如果得分至少为 85 分 则称为优秀 请计算及格率和优秀率 用百分数表示 百分号前的部分四舍
  • 基于c++实现的对象池(简单测试)

    代码如下 结尾有示例 pragma once include
  • 【Java面试题】计算机网络知识点总结

    计算机网络知识点总结 1 计算机网络体系结构图 1 1 传输层 TCP 和 UDP 的区别和作用 1 2 面向连接 和 面向无连接 的区别 1 3 基于TCP和UDP的有哪些协议 1 4 TCP和UDP协议的使用场景 1 5 TCP 协议如