网络原理TCP/IP(1)

文章目录

  • 端口号
  • 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.hqwc.cn/news/448958.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读笔记】Taming Transformers for High-Resolution Image Synthesis

Taming Transformers for High-Resolution Image Synthesis 记录前置知识AbstractIntroductionRelated WorkMethodLearning an Effective Codebook of Image Constituents for Use in TransformersLearning the Composition of Images with Transformers条件合成合成高分辨率图…

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

AI-数学-高中-12-对数定义和基本运算规则、对数换底公式

原作者视频:初等函数】4对数定义基本运算规则(基础)_哔哩哔哩_bilibili 初等函数】5对数换底公式练习(基础)_哔哩哔哩_bilibili 对数读法:以a为底,b的对数,a为底数,b为…

Cookie,Session,Token的区别是什么?

概念 Cookie、Session和Token是用于在Web应用程序中管理用户状态和身份验证的技术。因为在Web应用中,HTTP的通信是无状态的,每个请求都是完全独立的,所以服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次…

图解Vue组件通讯【一图胜千言】

Vue的每个组件都有独自的作用域,组件间的数据是无法共享的,但实际开发工作中我们常常需要让组件之间共享数据,今天我们来学习下面三种组件通信方式: 父子组件之间的通信 兄弟组件之间的通信 祖先与后代组件之间的通信 1. 父子组件…

2024年混合云:趋势和预测

混合云环境对于 DevOps 团队变得越来越重要,主要是因为它们能够弥合公共云资源的快速部署与私有云基础设施的安全和控制之间的差距。这种环境的混合为 DevOps 团队提供了灵活性和可扩展性,这对于大型企业中的持续集成和持续部署 (CI/CD) 至关重要。 在混…

PPT母版页码设置

PPT母版页码设置 一、需求介绍二、达到效果三、具体操作1. 插入页码2. 设置起始页码为03. 进入母版编辑页面4. 内容格式调整5. 删去最后一个板式的三个模块信息6. 尾页处理7. 最终效果 一、需求介绍 PPT的母版可以设定PPT的基调,且在非母版页面不会误改PPT中的固定…

【数据结构与算法】之排序系列-20240202

这里写目录标题 一、389. 找不同二、414. 第三大的数三、455. 分发饼干四、506. 相对名次五、561. 数组拆分六、594. 最长和谐子序列 一、389. 找不同 简单 给定两个字符串 s 和 t ,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添…

如何使用wireshark解析二进制文件

目录 目录 1.将已有的packet raw data按照下面格式写入文本文件中 a. Raw IP packet b. Ethernet packet 2.用wiershark导入hex文件 3.设置对应的packet类型 a. Raw IP packet b. Ethernet packet 1.将已有的packet raw data按照下面格式写入文本文件中 a. Raw IP pac…

C#代码添加脚本头

目录 前言 代码展示 前言 创建脚本的时候添加脚本的介绍 代码展示 using System.IO;/// <summary> /// 创建脚本自动添加头注 /// </summary> public class CommentFirst : UnityEditor.AssetModificationProcessor {/// <summary>/// 在资源创建生成.me…

STM32CAN2进入bus off 模式

工作遇到的问题记录 无人机CAN2整个进不了中断&#xff0c;通过查看寄存器判定出CAN节点进入了bus off mode 为何进入bus off &#xff0c;最后通过示波器看到整个CAN2总线波形就不对&#xff0c;总线出现了错误 Busoff的产生是一定是因为节点自身识别到自己发送错误&#xff…

WordPress SMTP发信避坑指南

前言 Clip_2024-01-31_19-46-18803285 10.5 KB 目前不少主题已经内置了SMTP发信功能&#xff0c;这是因为WordPress自带的mail()函数发信时基本无法发送。 但是在之前&#xff08;约2021年末&#xff09;貌似可以通过WordPress自带的函数发信&#xff0c;并且收信方提示由xxx代…