【计算机网络】【常考问题总结】

news2024/12/23 5:21:57

1. ping 127.0.0.1 后会发生什么?

ping 127.0.0.1 ;ping 0.0.0.0  ; ping localhost

面试官问:断网了,还能ping通 127.0.0.1 吗?为什么?_kevin_tech的博客-CSDN博客

2. MTU,MMU是什么?

 

3. 粘包是什么:怎么解决?

怎么解决TCP网络传输「粘包」问题? - 知乎 (zhihu.com) 

之所以TCP会出现粘包:原因是:TCP 协议是流式协议,协议的内容是像流水一样的字节流。 应用层传到 TCP 协议的数据,不是以消息报为单位向目的主机发送,而是以字节流的方式发送到下游,这些数据可能被切割和组装成各种数据包,接收端收到这些数据包后没有正确还原原来的消息,因此出现粘包现象。

举个例子,A 与 B 进行 TCP 通信,A 先后给 B 发送了一个 100 字节和 200 字节的数据包,那么 B 是如何收到呢?B 可能先收到 100 字节,再收到 200 字节;也可能先收到 50 字节,再收到 250 字节;或者先收到 100 字节,再收到 100 字节,再收到 100 字节;或者先收到 20 字节,再收到 20 字节,再收到 60 字节,再收到 100 字节,再收到 50 字节,再收到 50 字节......

作为发送方的 A 来说,A 是知道如何划分这两个数据包的界限的,但是对于 B 来说,如果不人为规定多少字节作为一个数据包,B 每次是不知道应该把收到的数据中多少字节作为一个有效的数据包的,而规定每次把多少数据当成一个包就是协议格式定义的内容之一。

如果不规定每次传输的内容长度,通信双方进程直接read() write() ,在本机由于网络状况好,不会出啥问题。但是若在不同主机间这种方式通信,会导致 ①数据截断 或 ②数据乱码

出现 ①数据截断 这种情况的原因是:A发送了第一个包100字节,但是B收到了前50 ,同时B的缓冲区大小是70,因此,B自动给这获得的50字节补充了一个\0 ,接下来再收到A发来的后50字节因为\0的存在,不会被读走。

出现 ②数据乱码 这种情况的原因是:A发送了第一个包200字节,B的缓冲区大小是70,因此,B最多收到70字节,此时,由于数据包没有结束,因此没有\0结尾,在读取的时候,就会因没有\0一直读取,越界了也要读取,一直到读到\0才会停止,而这会导致读取到不需要的非法数据,形成乱码。

总结下,粘包出现的根本原因是不确定消息的边界。接收端在面对"无边无际"的二进制流的时候,根本不知道收了多少 01 才算一个消息。一不小心拿多了就说是粘包。其实粘包根本不是 TCP 的问题,是使用者对于 TCP 的理解有误导致的一个问题。

粘包的解决方法:只要在发送端每次发送消息的时候给消息带上识别消息边界的信息,接收端就可以根据这些信息识别出消息的边界,从而区分出每个消息。

常见的方法有

  • 相互协定好包的大小

        即每个协议包的长度都是固定的。举个例子,例如我们可以规定每个协议包的大小是 64 个字节,每次收满 64 个字节,就取出来解析(如果不够,就先存起来)。

        这种通信协议的格式简单但灵活性差。如果包内容不足指定的字节数,剩余的空间需要填充特殊的信息,如 \0。

  • 加入特殊标志作为头尾,比如当收到了0xfffffe或者回车符,则认为收到了新消息的头,此时继续取数据,直到收到下一个头标志0xfffffe或者尾部标记,才认为是一个完整消息。

        在收到头标志时,里面还可以带上消息长度,以此表明在这之后多少 byte 都是属于这个消息的。如果在这之后正好有符合长度的 byte,则取走,作为一个完整消息给应用层使用。

     【注意】:为了放置在消息内容中也包括这个特殊字符,往往需要在标志位后面加上CRC验证段等,让接收端拿到整段数据后校验下确保它就是发送端发来的完整数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索线程池的威力:优化多线程任务管理与性能提升

比喻举例(可以比作工人队伍) 想象一下,如果我们需要完成很多工作,我们可以招募一群工人来协助。然而,如果每个工人都是临时招募的,工作完成后就解雇他们,那么每次都要花时间和精力来招募和解雇工…

CVPR2023论文及代码合集来啦~

以下内容由马拉AI整理汇总。 下载:点我跳转。 狂肝200小时的良心制作,529篇最新CVPR2023论文及其Code,汇总成册,制作成《CVPR 2023论文代码检索目录》,包括以下方向: 1、2D目标检测 2、视频目标检测 3、…

油画欣赏|《纯洁的梦乡》,心中的宇宙

《纯洁的梦乡》 80x60cm 陈可之2021年绘 油画《纯洁的梦乡》,以绮丽的想象,精湛的技艺,描绘出梦境中的蜻蜓、山、水、星空等事物,展现出一个纯洁美好的心灵宇宙世界。 油画采用水平构图的方式,在位置偏低的山脚设置水…

LeetCode--HOT100题(37)

目录 题目描述:104. 二叉树的最大深度(简单)题目接口解题思路代码 PS: 题目描述:104. 二叉树的最大深度(简单) 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远…

全流程R语言Meta分析核心技术

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

java 中的 JSP

程序框架 1. c/s框架: 通过客户端程序访问服务器 2.B/S框架 通过浏览器访问应用程序 :采用请求/相应模式进行交互 URL Tomcat服务器 1.开源项目 2.轻量级应用服务器 3.开源,稳定,资源占用小 Tomcat目录介绍 1.bin :存…

无涯教程-PHP - preg_match_all()函数

preg_match_all() - 语法 int preg_match_all (string pattern, string string, array pattern_array [, int order]); preg_match_all()函数匹配字符串中所有出现的模式。 它将按照您使用可选输入参数order指定的顺序将这些匹配项放置在pattern_array数组中。有两种可能的类…

EasyExcel 导出报空指针NullPointerException

java.lang.NullPointerException: null at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) 这是jdk缺少字体库问题 在官网也给出解决答案: 1.安装少了字体库…

三星Galaxy S23与iPhone 15的对比分析:谁会胜出?

三星Galaxy S23与iPhone 15的对决将于下个月进入高潮,这将是今年智能手机中最大的一场较量。毕竟,这是两家领先的移动设备制造商的旗舰手机。他们的手机的比较将在很大程度上决定谁能获得最佳手机的称号。 我们已经知道有利于三星Galaxy S23的情况,该产品自春季以来一直在推…

github访问加速--工具

1.Fetch GitHub Hosts https://github.com/Licoy/fetch-github-hosts 点击启动即可访问github加速了 二、同类软件 SwitchHosts https://github.com/Python3WebSpider/ProxyPool

300 倍的性能提升!PieCloudDB Database 优化器「达奇」又出新“招”啦

随着数字化进程的加快,全球数据量呈指数级增长,对数据库系统的性能提出了巨大的挑战。优化器作为数据库管理系统中的关键技术,对数据库性能和效率具有重要影响,它通过对用户的查询请求进行解析和优化来生成高效的执行计划&#xf…

FSC147数据集格式解析

一. 引言 在研究很多深度学习框架的时候,往往需要使用到FSC147格式数据集,若要是想在自己的数据集上验证深度学习框架,就需要自己制作数据集以及相关标签,在论文Learning To Count Everything中,该数据集首次被提出。 …

基于微信小程序的中医体质辨识文体活动的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的中医体质辨识文体活动的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…

如何进行在线pdf转ppt?在线pdf转ppt的方法

在当今数字化时代,PDF文件的广泛应用为我们的工作和学习带来了巨大的便利。然而,有时候我们可能需要将PDF转换为PPT文件,以便更好地展示和分享内容。在线PDF转PPT工具因其操作简便、高效而备受欢迎。如何进行在线pdf转ppt呢?接下来&#xff…

使用Jetpack Compose的镜像效果

使用Jetpack Compose的镜像效果 您是否曾想过在列表或一般情况下为图像创建镜像效果?有了强大的Jetpack Compose UI工具包,这变得简单而容易。 正如您所看到的,此效果包括以下内容 反转图像反转图像的50%可见性模糊的反转图像与…

openGauss学习笔记-46 openGauss 高级数据管理-子查询

文章目录 openGauss学习笔记-46 openGauss 高级数据管理-子查询46.1 SELECT语句中的子查询使用46.2 INSERT语句中的子查询使用46.3 UPDATE语句中的子查询使用46.4 DELETE语句中的子查询使用 openGauss学习笔记-46 openGauss 高级数据管理-子查询 子查询或称为内部查询&#xf…

实战演练 | Navicat 导出向导

数据库工具中的导入导出功能是指将数据从一个数据库系统导出到另一个数据库系统,或者将数据从一个文件格式导出到另一个文件格式。导入导出功能可以通过各种方式实现,例如使用SQL语句、数据库管理工具或第三方库和工具。在进行数据迁移时,通常…

AMBA总线协议(6)——AHB(四):传输细节

一、前言 在之前的文章中,我们已经讲述了AHB传输中的两种情况,基本传输和猝发传输。我们进行一个简单的回顾,首先,开始一次传输之前主机需要向仲裁器申请获得总线的使用权限,然后主机给出地址和控制信号,根…

冠达管理:沪指失守3100点 大盘加速赶底

8月21日,A股商场缩量跌落,上证指数尾盘失守3100点。券商股领跌,环保板块逆势掀涨停潮。北向资金净卖出64.12亿元,这是自8月7日以来连续第11个交易日净卖出。 从盘面看,早盘三大指数小幅低开,以券商股为主的…

前端找工作,有没有什么推荐的vue项目?

前言 可以参考一下下面的项目,已经作了vue2和vue3的分类,可以自己去选择适合的,希望对你有帮助~ Vue2 PC项目 1、 Elemen Star:53.4k 是一个基于Vue.js 2.0的UI组件库,由饿了么前端团队开发和维护。该组件库提供了…