Java面试准备——计算机网络

2023-11-10

计算机网络相关面试重点整理

本文学习自GitHub上的JavaGuide项目,感谢大佬的资源,此处为自我学习与整理,原项目链接 JavaGuide

OSI和TCP/IP各层的结构和功能,都有哪些协议?

我们平时学习计算机网络使用五层结构,比较清楚且简洁。下图是OSI和TCP/IP和五层结构的对比
图源JavaGuide
在这里插入图片描述

  1. 应用层:通过进程间的交互完成特定的网络应用,不同的网络应用需要不同的应用层协议,各种应用层协议:DNS,HTTP,SMTP等。应用层互相交互的数据单元叫报文。
    DNS(域名系统):将域名和IP地址相互映射的一个分布式数据库,可以让人不用记住IP的数据串,通过域名来访问Internet
    HTTP(HyperText Transport Protocol):超文本传输协议。是互联网上流传最广的一种协议,所有万维网(WWW)文件都必须遵从HTTP协议标准,最初HTTP的目的是为了提供一种传输和接收HTML的方法
  2. 运输层:运输层的主要任务就是负责两台主机进程之间的通信提供数据传输服务。应用层利用运输层传输数据报文。
    运输层主要使用TCP和UDP两种协议。
    TCP:面向连接,可靠的数据传输服务
    UDP:无连接,尽最大努力传输数据的服务,不保证传输的可靠性
  3. 网络层:在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换节点,确保数据的及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组和包进行传送。
    在TCP/IP中因为网络层使用IP协议,因此分组也叫IP数据报,简称数据报。
  4. 链路层:两台主机之间的数据传输,总是在一段一段的链路上传输的,这就要使用专门的链路层协议。在两个相邻节点的链路上传送数据时,链路层将网络层下来的IP数据报组装成帧,在两个节点之间传送帧。每一帧包括数据和必要的信息。
    在接收时,帧包括的控制信息能够告诉接收端哪个比特开始,哪个比特结束。
  5. 物理层:物理层上的传输单位是比特,物理层的作用是实现相邻计算机节点之间的比特流透明传输,尽可能屏蔽掉具体传输介质和物理设别的差异。

TCP三次握手

  1. 过程:
    (1)客户端发送SYN
    (2)服务端返回SYN/ACK
    (3)客户端返回ACK
  2. 三次握手的作用:第一次握手,服务端知道客户端发送功能正常;第二次握手,客户端知道服务端发送功能和自己接收功能正常,第三次握手,服务端知道自己发送功能正常。

断开TCP的四次挥手

  1. 过程:
    (1)客户端发送FIN
    (2)接收端回复ACK
    (3)接收端回复FIN
    (4)客户端回复ACK
  2. 四次挥手的作用:双方都知道对方已经完成所有要完成的任务,且自己已经完成任务,互相确认以后断开连接。(就像两个人挂电话一样)

TCP如何保证可靠传输?

  1. 应用数据被划分为TCP认为最合适的数据块
  2. TCP对发送的每个包进行编号,接收方对其进行排序,把有序的数据包传送给应用层
  3. 校验和:TCP将保持它首部和数据的检验和,如果接收端收到段的检验和有差错,这个报文段将被丢弃并且不被确认接受
  4. TCP接收端会丢弃重复的数据
  5. 流量控制:TCP每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区可以接受的数据,当接收端来不及处理数据,可以提示发送端降低发送速度防止丢包。具体算法是滑动窗口。
  6. 拥塞控制:当网络拥塞减少数据传送
  7. ARQ协议:重传的协议,有停止等待和连续ARQ两种
  8. 超时重传:当发送端发送一个数据,如果在规定时间内没有收到接收端的确认,将会重传这个报文段

在浏览器输入一个链接后发生了什么?

  1. DNS解析:通过域名找到对应的ip地址
  2. TCP链接:建立一个TCP用来发送报文和数据
  3. 发送HTTP请求
  4. 服务器端处理HTTP请求并返回HTTP报文
  5. 浏览器解析并渲染HTTP页面
  6. 断开连接

HTTP状态码

  1. 1打头表示信息性状态码。接受的请求正在处理
  2. 2打头表示成功,请求正常处理完毕
  3. 3打头表示重定向,需要进行附加操作才能完成请求
  4. 4打头表示客户端错误,服务器无法处理请求
  5. 5打头表示服务器端错误,服务器处理请求错误

HTTP长连接和短连接

  1. 在HTTP1.0中默认短连接,即每进行一次HTTP操作都会建立、断开一个TCP。
  2. 从HTTP1.1开始默认使用长连接,会有如下报文:
Connection:keep-alive

长连接中客户端和服务器端的TCP不会马上断开,客户端再次访问时将会使用同一个TCP,keep-alive有一个设定的保持时间保持TCP不断开。

HTTP中的Session和Cookie

因为HTTP是无法保存状态的协议,当服务器需要保存用户的一些数据(比如购物车)时就会给用户设一个特定的Session来标识用户,因为Session在服务器端,所以追踪用户需要用户的SessionID,SessionID通常存储在Cookie里(在客户端),为了防止Cookie被禁用,可以通过直接把SessionID加到URL里来追踪用户。

HTTP和HTTPS的区别?

  1. 端口不同:HTTP的URL由http://起始并且默认端口是80;HTTPS由https://起头并且默认端口是443
  2. 安全性和资源消耗:HTTP运行在TCP上,所有的传输内容明文显示,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS上的HTTP协议,SSL/TLS运行在TCP上,所有传输内容都采用了对称加密,但是密钥被服务器方进行了非对称加密。所以安全性HTTPS更好,但是HTTPS消耗更多的服务器资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java面试准备——计算机网络 的相关文章

  • 安装eclipse启动时报错

    1 在安装eclipse后 点击exe文件时 提示出现错误 记录在log文件中 因为log文件就是日志文件 可以方便我们排查错误 打开log文件 可以看到文件记录了每次出错的时间和错误栈信息 最新一次错误是 ENTRY org eclips
  • ‘cudaThreadSynchronize’ is deprecated

    Problem src gemm c In function time gpu src gemm c 232 9 warning cudaThreadSynchronize is deprecated Wdeprecated declara
  • C++程序中调用exe文件的一种方法

    我们在开发项目时 通常需要通过一个程序调用另一个程序 在这里介绍一中在C 程序中调用exe文件的方法 使用ShellExcecuteEx函数 使用ShellExcecuteEx相对于其他的调用exe的方法 例如 使用system函数 使用e
  • 区块链是生命体、经济体。未来的区块链世界离不开自己的价值尺度建设

    想知道更多区块链技术知识 请百度 链客区块链技术问答社区 链客 有问必答 公有链和联盟链的本质不同 区块链受到大家广泛关注应该是2015年10月 那时候万向在上海搞了一场区块链国际峰会 因为万向在整个金融界比较有影响力 加上 经济学人 在1
  • 如何删除在System中打开的iso文件

    目录 问题 解决方法 弹出DVD驱动器 删除iso文件 问题 在打开iso文件后 我的电脑中突然出现了一个DVD驱动器 如图1 而且原来的iso文件也无法删除 会提示文件在System中打开 如图2 图一 图二 解决方法 弹出DVD驱动器
  • 使用ffmpeg 将MP4格式 或其他格式转为谷歌浏览器可以播放的MP4文件

    场景 在网页上传任意视频格式的文件后 调用系统的ffmpeg 命令对其格式 转化后 发现谷歌浏览器压根无法播放 原因 视频不光区分格式 同一格式还区分编码 对于扩展名相同的视频文件它们的视频的编码可能是不一样的 mp4格式的视频就有3种编码
  • 【bnlearn in Python】Python下载bnlearn包的一些问题

    贝叶斯网络小萌新 请大家多多指教多多关注 文章目录 bnlearn document 下载超时问题 下载指令 证明下载成功 bnlearn document bnlearn包的指南文件见链接 bnlearn document 下载超时问题
  • kmp(看毛片)算法

    别人的两篇博客 传送门1 传送门2 摘录 其中T为主串 P为模式串 其实就是在T中找P 其中next数组存的是 部分匹配值 部分匹配值 就是 前缀 和 后缀 的最长的共有元素的长度 以 ABCDABD 为例 A 的前缀和后缀都为空集 共有元
  • 如何安装使用IP广播?

    步骤一 连接设备到同个局域网 设备连接网络 所有的设备与服务器处于同个局域网内 测试时放在同个交换机内 步骤二 在服务器上安装广播软件 再服务器上安装 数字网络广播系统软件 运行目录下的 Setup exe 文件 一直下一步直到完成 再服务
  • TortoiseSVN使用方法

    安装和配置 TortoiseSVN的下载地址为 http tortoisesvn net downloads html 有32位和64位的版本 一定要根据自己的操作系统下载对应的版本 最好安装一个简体中文的Language packs 可以
  • C++opencv进行图像处理(三)图像的基本操作

    1 图像像素的加法 主要包含了图像的像素加法 当像素增加 会使得图像变亮 当像素减少会使得图像变暗 除法操作会变暗 结果如下所示 左边是原图 右边是像素相加后的 在前面的代码模块中增加的代码为 void QuickDemo pixel op
  • STM32学习笔记—独立看门狗

    1 独立看门狗的介绍 2 独立看门狗的使用 3 代码段 1 独立看门狗的介绍 独立看门狗利用系统内部的低速时钟提供机械周期 这个低速时钟与系统的工作时钟不是一个时钟 所以看门狗的运行和系统的运行是互不干扰的 独立看门狗由内部专门的 40Kh
  • 计算机视觉---常见的颜色空间

    RGB 最常见的面向硬件设备的彩色模型 它是人的视觉系统密切相连的模型 根据人眼结构 所有的颜色都可以看做是3种基本颜色 红r 绿g 蓝b的不同比例的组合 HSV HSV颜色空间是孟塞尔彩色空间的简化形式 是一种基于感知的颜色模型 它将彩色
  • ShardingSphere水平、垂直分库、分表和公共表

    目录 一 ShardingSphere简介 二 ShardingSphere 分库分表 1 垂直拆分 1 垂直分库 2 垂直分表 2 水平拆分 1 水平分库 2 水平分表 三 水平分库操作 1 创建数据库和表 2 配置分片的规则 3 测试类
  • Java内存分配介绍

    Java的内存分配主要有三个位置 方法区 就是字节文件 存储未运行的代码 栈内存 当方法运行的时候 则在栈内存中存储 堆内存 当方法新生成对象的时候 或者新产生出局的时候将在堆内存中存储 方法区 字节文件加载时进入的内存 存储的就是编写成功
  • 常用服务器指令

    查看docker 容器占用进程 docker top 容器id 容器名 查看进程占用内存 top p PID 查看服务器所有进程 pid ef 查看内存 free 查看占用CUP最多 ps aux sort k4nr head n 10 查
  • 【Mariadb数据库用户及权限管理】

    一 用户管理 1 创建用户 方法一 直接创建用户 create user 用户名 来源 identified by 密码 来源地址 localhost 本机 192 168 150 网段 所有 方法二 在授权同时就创建用户 grant 权限
  • VTK笔记-图形相关-判断空间上的点是否在图元内-vtkSelectEnclosedPoints

    判断空间上的点是否在几何图元内 使用vtkSelectEnclosedPoints类 vtkSelectEnclosedPoints vtkSelectEnclosedPoints类可以判断标记点是否在封闭表面内 vtkSelectEncl
  • 【CVPR2021】文章、代码和数据链接

    Awesome CVPR2021 Low Level Vision 整理汇总下今年CVPR图像重建 Image Reconstruction 底层视觉 Low Level Vision 相关的论文和代码 括超分辨率 图像去雨 图像去雾 去模
  • 解决 ANSJ分词 自定义词典文件无效

    注意 1 指定配置文件的路径时 建议配置为绝对路径 这种方式最简单 否则需自行解决路径的问题 2 配置文件的内容 词典各字段之间使用tab t 分割 一般发现自定义字典无效 就是因为使用的不是tab t 而是4个空格等 所以 一定要记住 t

随机推荐

  • Bootstrap 3导航栏

    Today we continue Bootstrap 3 lessons and review Bootstrap 3 Navbar In our new lesson we will try to disassemble the nav
  • 关于复位的一些总结

    同步reset synchronous reset 是说 当reset信号为active的时候 寄存器在下一个时钟沿到来之后被复位 时钟沿到来之前寄存器还是保持其之前的值 异步reset asynchronous reset 是说 当res
  • bash: /opt/ros/kinetic/setup.bash: 没有那个文件或目录

    我安的是ROS melodic版本 但是使用的是kinetic版本的安装教程 这就导致了在有一步 添加环境变量时 使用echo指令 忘了将教程中的kinetic改成melodic 所以出现了以下的现象 当我source bashrc的时候
  • Java学习笔记 -- 包 (package)

    Java 面向对象篇 笔记首页 序号 内容 链接地址 1 面向对象概述 https blog csdn net weixin 44141495 article details 107999131 2 类与对象 https blog csdn
  • 2022蓝桥杯JAVA研究生组--我写了几个

    试题 A 排列字母 本题总分 5 分 问题描述 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPST
  • 晶振是如何起振的?

    01 皮尔斯晶体振荡器 目前工作中用得最多的就是皮尔斯晶体振荡器 也就是下面这个结构 CL1 CL2为匹配电容 Rext通常为串联的几百欧姆电阻 有时也不加 上面这个结构可能看着不是很熟悉 我们把它转换一下 变成下面这个就熟悉些 上图中把R
  • TestNG 开源自动化测试框架

    摘要 TestNG是一个开源自动化测试框架 TestNG表示下一代 TestNG是类似于JUnit 特别是JUnit 4 但它不是一个JUnit扩展 它的灵感来源于JUnit 它的目的是优于JUnit的 尤其是当测试集成的类 主要内容 Te
  • 如何在Java中将GIF图像转换为PNG等图像格式?试试Aspose

    通常 GIF图像用于描述动画 动画GIF是按特定顺序组合在一起的帧的集合 但是 在某些情况下 必须将GIF图像转换为其他光栅图像格式 对于这种情况 本文演示了如何使用Java将GIF图像转换为PNG JPEG BMP和TIFF格式 在Jav
  • 【upload-labs】————12、Pass-11

    闯关界面 前后端检测判断 查看源代码 这里采用了白名单判断 但是 img path直接拼接 所以可以先上传一个符合白名单检测的jpg文件 之后再burpsuite中使用 00截断保存路径即可 截断保存路径 浏览器中访问
  • C++项目中调用C#库

    最近有个功能在实现的时候要么要求 C 版本比较高 C 17 要么要求的 Qt 版本比较高 要么要求 windows 版本比较高 而且也没有比较好的第三方 C 库 无意间发现 C 早就实现了该功能 故准备使用 C 实现具体功能 在 C 项目中
  • 差帧法——学习

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 引言 思路 伪代码 代码 详解 函数详解 二值化 高斯滤波 引言 个人理解 差帧法 就是相邻两帧之间图象的差值 通过对差值进行高斯滤波或者腐蚀 膨胀操作减小图象噪声
  • Vue基础

    Vue 是什么 Vue 读音 vju 类似于 view 是一套用于构建用户界面的渐进式框架 vue 的核心库只关注视图层 不仅易于上手 还便于与第三方库或既有项目整合 使用Vue将helloworld 渲染到页面上 指令 本质就是自定义属性
  • 操作系统复习总结(五)

    10 18 14 30 15 00 第五章 主存管理 主存储器 主存 or 内存 中央处理器为可直接访问的存储器 计算机系统的一个关键性资源 理想中的存储器 更大更快 更便宜的非易失性存储器 存储管理的功能 方式 连续分配方式 一个进程分配
  • LINUX-LVM简单配置

    1 在编辑设置中为虚拟机添加另一块新硬盘 2 fdisk dev sdb gt n新建分区 gt p选择默认主分区 gt 回车 gt 回车 gt 回车 gt t为新建分区分配id gt 8e gt 回车 3 pvcreate dev sdb
  • 字符串有关习题

    0 请问下面代码有没有毛病 为什么 1 gt gt gt input I love FishC com 2 gt gt gt print input 3 I love FishC com 答 有问题 给变量命名要避免与内置函数名字冲突 1
  • 安装老版本flash - 解决”正尝试安装的adobe flash player不是最新版本“的办法

    安装Flash player时提示 正尝试安装的adobe flash player不是最新版本 解决的办法是在运行中输入regedit 在注册表中找到 HKEY LOCAL MACHINE SOFTWARE Macromedia Flas
  • c语言中关于时间的函数

    本文从介绍基础概念入手 探讨了在C C 中对日期和时间操作所用到的数据结构和函数 并对计时 时间的获取 时间的计算和显示格式等方面进行了阐述 本文还通过大量的实例向你展示了time h头文件中声明的各种函数和数据结构的详细使用方法 关键字
  • 抓蓝牙数据包_蓝牙协议分析工具Wireshark/Frontline/Ellisys的使用

    一 声明 本专栏文章我们会以连载的方式持续更新 本专栏计划更新内容如下 第一篇 蓝牙综合介绍 主要介绍蓝牙的一些概念 产生背景 发展轨迹 市面蓝牙介绍 以及蓝牙开发板介绍 第二篇 Transport层介绍 主要介绍蓝牙协议栈跟蓝牙芯片之前的
  • JAVA String.intern()方法

    感谢原作者的分享 转载只为方便知识点 原文地址 http www runoob com java java string intern html 莫洛的笔记 尽管在输出中调用intern方法并没有什么效果 但是实际上后台这个方法会做一系列的
  • Java面试准备——计算机网络

    计算机网络相关面试重点整理 本文学习自GitHub上的JavaGuide项目 感谢大佬的资源 此处为自我学习与整理 原项目链接 JavaGuide OSI和TCP IP各层的结构和功能 都有哪些协议 我们平时学习计算机网络使用五层结构 比较