网络原理TCP/IP(1)

news2024/9/28 11:21:50

文章目录

  • 端口号
  • UDP协议

在网络通信中,协议非常重要
协议进行了分层
应用层就是对应着应用程序,是程序员打交道最多的这一层,调用系统提供的网络api写出来的代码都是属于应用层的

应用层有很多现成的协议,但是更多的还是程序员需要根据实际场景自定义协议

自定义协议,约定好两方面内容
1.服务器和客户端之间要交互哪些信息
2.数据的具体格式

客户端按照上述约定发送请求,服务器按照上述约定解析请求
服务器按照上述约定构造响应,客户端也按照上述约定解析相应

为了让程序员更方便的去约定这里的协议格式,业界也给出了几个比较好用的方案,
1.xml(可扩展标记语言)
使用标签来定义语言,标签成对出现,标签的名字 / 标签的值 / 标签的嵌套关系都是程序员自定义的

2.json
举例:

请求
{
	userld: 1000,
	position:[经纬度]
}
相应
{
	id: 1001,
	name:"麻辣烫"
}

键值对结构
键和值之间使用:分割
键值对之间使用,分割
把若干个键值对使用{ }括起来,此时就形成一个json对象
还可以把多个json对象放在一起,使用,分割开,并且使用[ ]整体括起来就形成了一个json数组
相比于xml来说,json占用空间小,更节省了带宽

3.protobuffer
更节省带宽的方式,效率最高的方式

端口号

端⼝号(Port)标识了⼀个主机上进⾏通信的不同的应⽤程序;
在这里插入图片描述
端口号范围划分
• 0-1023:知名端⼝号,HTTP,FTP,SSH等这些⼴为使⽤的应⽤层协议,他们的端⼝号都是固定的
.• 1024-65535:操作系统动态分配的端⼝号.客⼾端程序的端⼝号,就是由操作系统从这个范围分配
的.
认识知名端口号(Well-Know Port Number)
有些服务器是⾮常常⽤的,为了使⽤⽅便,⼈们约定⼀些常⽤的服务器,都是⽤以下这些固定的端⼝号:
• ssh服务器,使⽤22端⼝
• ftp服务器,使⽤21端⼝
• telnet服务器,使⽤23端⼝
• http服务器,使⽤80端⼝
• https服务器,使⽤443
我们⾃⼰写⼀个程序使⽤端⼝号时,要避开这些知名端⼝号

UDP协议

特点:
无连接,不可靠传输,面向数据报,全双工
研究一个协议,主要研究报文格式,基于报文格式,来了解这个协议的其他各个特性
UDP数据报 = 报头(重点) + 载荷(应用层数据包)
在这里插入图片描述
上述图其实不准确,教材为了排版方便
在这里插入图片描述

16位UDP⻓度,表⽰整个数据报(UDP⾸部+UDP数据)的最⼤⻓度;
• 如果校验和出错,就会直接丢弃;
UDP报头一共有四个字段,每个字段两个字节(一共八个字节)
协议报头中使用2个字节表示端口号,端口号的取值范围就是0–65535
因此一个UDP数据报最大长度就是64KB,无法更长了

校验和
验证数据传输过程中是否正确
前提:数据在网络传输过程中,可能坏掉
校验和的作用就是用来识别当前数据是否出现了比特翻转
UDP中,校验和使用比较简单的方式,CRC(循环冗余校验)算法完成校验
校验和使用过程:UDP数据报发送方,在发送之前,先计算一遍CRC,把计算好的CRC值放到UDP数据报中(设这个CRC值为value1),接下来这个数据报通过网络传输到达接收端,接收端收到这个数据之后,也按照同样的算法再算一遍CRC的值,得到的结果是value2,比较自己计算的value2和收到的value1是否一致,如果一致的,就说明数据是正确的,如果不一致,传输过程中发生了比特翻转了
上述的CRC算法中,如果只有一个bit位发生翻转,此时100%能够发现问题,如果有两个/多个bit位发生翻转,有可能恰好校验和和之前一样

除了CRC之外,还有一些更高精度的校验和算法
常用的有md5算法和sha1算法
md5背后有一系列的数学公式,md5的特点:
1.定长:无论原始数据多长,算出来的md5的最终值都是固定长度,常用的md5有16位版本(2字节),32位版本(4字节),64位版本(8字节)
2.分散:计算md5的过程中,原始数据只要有一点变化,算出来的md5值就会差别很大
3.不可逆:一个源字符串,计算md5值过程非常简单,但是一个算好的md5值,还原回原始的字符串,理论上是不可完成的

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

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

相关文章

【Spark系列6】如何做SQL查询优化和执行计划分析

Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询,而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1:过滤提前 未优化的查询 val salesData spark.read.parquet(&quo…

STM32GPIO输入(按键控制LED、光敏电阻控制蜂鸣器实例)

文章目录 一、介绍传感器模块介绍硬件电路c语言数据类型 二、实例按键控制LED接线图代码实现 光敏电阻控制蜂鸣器组装线路代码实现 相关函数解释 一、介绍 传感器模块介绍 硬件电路 上两种按下时为0,下两种按下时为1。 c语言数据类型 现在常用stdint头文件所定…

【Java程序设计】【C00187】基于SSM的旅游资源网站管理系统(论文+PPT)

基于SSM的旅游资源网站管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的旅游资源网站 本系统分为前台系统、用户和管理员3个功能模块。 前台系统:当游客打开系统的网址后,首先看到的就是…

一文掌握单基因GSEA富集分析 | gseaGO and gseaKEGG

本期教程 本期教程原文:一文掌握单基因GSEA富集分析 | gseaGO and gseaKEGG 写在前面 关于GSEA分析,我们在前期的教程单基因GSEA富集分析 | 20220404有出过类似的分享。今天,我们也结合相关的资源整理出一篇关于GSEA的教程及出图教程。每个…

mysql 锁知识汇总

目录 一、锁1.1 什么是锁?1.2 全局锁1.2.1 定义1.2.2 应用场景1.2.3 会出现的问题1.2.4 解决方法 1.3 表级锁1.3.1 表锁1.3.2 元数据锁(MDL)1.3.3 意向锁1.3.4 AUTO-INC锁 1.4 行级锁1.4.1 记录锁(Record Lock)1.4.2 间隙锁(Gap Lock)1.4.3 N…

字符下标计数

下标计数 数组计数,即通过使用一个新的数组,对原来数组里面的项进行计数,统计原来数组中各项出现的次数,如下图所示: 数组计数可以方便快速地统计出一个各项都比较小的数组中,数值相同的数的个数。 数组计数…

PHP集成开发 -- PhpStorm 2023

PhpStorm 2023是一款强大的PHP集成开发环境(IDE),旨在提高开发人员的生产力和代码质量。以下是关于PhpStorm 2023软件的详细介绍: 首先,PhpStorm 2023提供了丰富的代码编辑功能,包括语法高亮、自动补全、代…

ubuntu22.04 安装部署01:禁用内核更新

一、前言 ubunut22.04系统安装以后,内核更新会导致各种各样的问题,因此锁定初始安装环境特别重要,下面介绍如何锁定内核更新。 二、操作方法 2.1 查看可用内核 dpkg --list | grep linux-image dpkg --list | grep linux-headers dpkg --…

故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-LSTM模型是一种结合了卷积神经网络(Convolutional Neural Network)和长短期记忆神经网络(Long Short-Term Memory)的组合模型,常用于数据故障…

各版本的Qt Creator的下载地址

2024年2月3日,周六上午 Index of /official_releases/qtcreatorhttps://download.qt.io/official_releases/qtcreator/ 如果想下载测试中的最新版Qt Creator的快照可以去这个地址 Index of /snapshots/qtcreatorhttps://download.qt.io/snapshots/qtcreator/

景联文科技受邀出席全国信标委生物特征识别分委会二届五次全会

全国信息技术标准化技术委员会生物特征识别分技术委员会(SAC/TC28/SC37,以下简称“分委会”)二届五次全会于2024年1月30日在北京顺利召开,会议由分委员秘书长王文峰主持。 分委会由国家标准化管理委员会批准成立,主要负…

git 如何修改仓库地址

问题背景:组内更换大部门之后,代码仓的地址也迁移了,所以原来的git仓库地址失效了。 虽然重新建一个新的文件夹,再把每个项目都git clone一遍也可以。但是有点繁琐,而且有的项目本地还有已经开发一半的代码&#xff0c…

网络异常案例六_IP冲突

问题现象 同一个局域网下,一个路由器带几十台终端设备,存在终端设备获取到了相同IP的场景。该路由器也是DHCP Server。 有两个设备终端,都显示获取到了192.168.11.177这个ip。 抓包分析 抓包过程中,看到的一些问题。 ps&#x…

三路快排解决TopK问题

前言: 我们首先要明白什么是三路快排,什么是topk问题。 三路快排: 思想: 三路快排就是数组分3块,三个指针,先随机取一个基准值key,然后将数组划分为3个部分: 【小于key】【等于…

客户端和服务端的简介

Client 和 Server 客户端(Client) 或称用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在客户机上,需要与服务端互相配合运行。例如:下载 Q…

决策树的相关知识点

📕参考:ysu老师课件西瓜书 1.决策树的基本概念 【决策树】:决策树是一种描述对样本数据进行分类的树形结构模型,由节点和有向边组成。其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出&#xff…

爬虫笔记(三):实战qq登录

咳咳,再这样下去会进橘子叭hhhhhh 以及,这个我觉得大概率是成功的,因为测试了太多次,登录并且验证之后,qq提醒我要我修改密码才可以登录捏QAQ 1. selenium 有关selenium具体是啥,这里就不再赘述了&#x…

用C++实现一个哈希桶并封装实现 unordered_map 和 unordered_set

目录 哈希桶的实现 封装 unordered_map 和 unordered_set 封装代码 HashTable.h MyUnorderedMap.h MyUnorderedSet.h 哈希桶,又叫开散列法。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码…

spring问题点

1.事务 1.1.事务传播 同一个类中 事务A调非事务B B抛异常 AB事务生效(具有传播性) 同一个类中 事务A调非事务B A抛异常 AB事务生效 也就是主方法加了事务注解 则方法内调用的其他本类方法无需加事务注解, 发生异常时可以保证事务的回滚 最常…

安科瑞消防设备电源监控系统在地铁工程的设计与应用

【摘要】:本文介绍了地铁工程中消防设备电源监控系统设置的必要性及规范求,分析了监控设计方案,提出该系统在地铁工程中的应用要求及建议,以供地铁工程建设参考。消防设备电源监控系统主要针对消防用电设备的电源进行实时的监控&a…