网络原理-TCP/IP --传输层(UDP)

在这里插入图片描述

T04BF

👋专栏: 算法|JAVA|MySQL|C语言

🫵 今天你敲代码了吗

目录

        • 端口号
        • UDP协议

端口号

我们在学习套接字的时候,涉及到两个概念:IP地址和端口号

IP地址是用来确定主机,这是网络层提供的概念

而端口号就是用来确定主机上的应用程序,就是传输层的概念的

端口号是 一个2个字节的无符号整数,不能同时被不同的应用程序绑定

那么我们怎么知道当前这个端口是否已经被主机上的某个悠应用程序绑定了呢??
在cmd输入netstat -ano | findstr 端口号命令即可

此命令就是查询出当前的机器上是否有使用某个端口号的进程

但是如果一个服务器是TCP,一个服务器是UDP,那么此时端口号重复了,是不会有影响的

那么一个进程绑定多个端口号是否可行呢??
----非常可行,而且在日常开发经常用得到

就比如我们写一个服务器程序,首先服务器需要有一个端口号,是给客户端提供业务功能的,这样的端口称为"业务端口"
但是程序员还需要对这个服务器进行更加精细的控制,比如控制这个服务器加载配置 / 开启某一个功能 / 重新启动 / 重新加载数据 / 修改某个选项设定
这样的操作,经常是要通过网络来进行操作的,服务器就会另外设置一个端口号,称为"管理端口",程序员想对这个服务器进行管理操作,就通过管理端口给服务器发送一些对应的请求,服务器就执行对应的逻辑
另外,我们在日常开发中会遇到一些bug,需要去查看服务器的一些运行状态(比如服务器的一些关键变量是什么样的值),但服务器不能直接去调试(调试会把服务器阻塞住,无法给别的客户端提供服务了),此时也是借助网络的方式来给服务器发送请求,服务器返回对应的关键信息,这样的端口称为"调试端口"

UDP协议

学习一个网络层协议,最主要的就是学习报文格式

对于UDP来说,当应用层数据到达传输层的时候,就会在应用层数据报前面拼接上 UDP 报头

在这里插入图片描述
在UDP报头里面,每两个字节对应的部分 都会有特定的含义
在这里插入图片描述
我们重点关注的是后面两个
UDP长度就是描述了当前整个UDP数据报,占多少个字节,即我们通过UDP长度就能知道当前的载荷一共是多少个字节

两个字节的范围是 0 - 65535,也就是整个UDPS数据报的长度,最多的存储空间就是 65535个字节,也就是64kb,不能再长了
此时使用UDP开发程序就会受到很大的制约
就要保证,单次传输的数据报,不能超过 64kb

还有一个就是校验和

校验和是什么?? 就是数据引入冗余信息,通过冗余信息来验证原有的数据
校验和就是拿着数据(一部分)进行一系列计算,得到结果,如果数据部分发生改变,那么结果也就不一样

数据在网络传输的过程是可能会出错的,
最常见的就是"比特翻转"
就是像0101这样的二进制数据,本来的传输的是0,实际上到的时候数据变成1了
是由于受到了外界(电信号,光信号,电磁波)的干扰

那么我们就需要方法,来对传输的数据进行校验

第一层就是要能够发现当前传输的数据是否出错了,第二层就是 要能够发现是哪一位出错了

做到第一层的代价是比较小的,相比之下第二层的代价就更大(消耗的时间空间更多)
UDP校验和只能做到第一层

但是实际上本质都是要引入额外的冗余信息

在这里插入图片描述
当数据到达对端主机之后,就会按照相同的算法,针对数据内容再计算一遍校验和,就拿着这个校验和 和 收到的校验和 进行比较
如果发现不一样,就说明在传输过程发生了比特翻转

而一旦发现这两个校验和 不一样,就会把这个数据丢掉

UDP现在最主要的用途,就是应用于对于性能要求比较高,但是对于可靠性要求不高的场景

(就比如在分布式系统中,多个服务器之间的相互通信,多个机器在同一个机房里面,网络结构简单 && 带宽充裕)

在这里插入图片描述

T04BF

🫵 今天记得敲代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode102. 二叉树的层序遍历

一、题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 二、输入输出实例: 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&am…

c++(七)

c(七) 内联函数内联函数的特点为什么要有内联函数内联函数是如何工作的呢 类型转换异常处理智能指针单例模式懒汉模式饿汉模式 VS中数据库的相关配置 内联函数 修饰类的成员函数,关键字:inline inline 返回值类型 函数名(参数列…

【C++】———list容器

前言 1.list容器简单来说其实就是之前的链表结构。 2.这里的list用的是双向带头结点的循环链表。 目录 前言 一 构造函数 1.1 list (); 1.2 list (size_type n, const value_type& val value_type() ); 1.3 list (InputIterator first, InputIterator last…

21.Redis之分布式锁

1.什么是分布式锁 在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题. ⽽ java 的 synchronized 或者 C 的 std::mutex, 这样的锁都是只能在当前进程中⽣效, 在分布式的这种多…

计算机系统结构之互联网络

一、基本的单级互联网络 1、立方体单级网络 立方体单级网络的名称来源于下图所示的三维立方体结构。每个顶点(网络的节点)代表一个处理单元,共有8个处理单元,用zyx三位二进制编号。 Cubei函数表式相连的入端和出端的二进制编号只…

海外媒体通稿:9个极具创意的旅游业媒体推广案例分享-华媒舍

如今,旅游业正迅速发展,媒体推广成为吸引游客的关键。为了更好地展示旅游目的地,许多创意而富有创新的媒体推广策略应运而生。本文将介绍九个极富创意的旅游业媒体推广案例,为广大从业者带来灵感和借鉴。 1. 视频系列:…

Hadoop3:MapReduce的序列化和反序列化

一、概念 1、序列化 就是把内存中的对象,转换成字节序列 (或其他数据传输协议)以便于存储到磁 盘(持久化)和网络传输。 2、反序列化 就是将收到字节序列(或其他数据传输协议)或者是磁盘的持…

services层和controller层

services层 我的理解,services层是编写逻辑代码语句最多的一个层,非常重要,在实际的项目中,负责调用Dao层中的mybatis,在我的项目中它调用的是这两个文件 举例代码如下 package com.example.sfdeliverysystem.servic…

华东师范大学研究团队《Ecology Letters 》揭示植物如何改变其物候以响应全球变化

自工业革命以来,人类活动导致多种环境因子同时发生变化,包括气候变暖、降水模式改变、氮沉降增加和大气CO2升高。这些变化预计会影响植物生命周期事件的季节时序—植物物候(Nature Reviews Earth & Environment | 傅伯杰院士团队发文阐述…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统(二) 资源…

机器学习第四十一周周报 JTFT

文章目录 week41 JTFT摘要Abstract1. 题目2. Abstract3. 网络架构3.1 JTFT3.2 具有可学习频率的稀疏FD表示3.3 用于提取跨渠道依赖关系的低阶注意力层 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程 5. 结论小结参考文献 week41 JTFT 摘要 本周阅读了题为A Joint Time-…

【TIPs】 Visual Stadio 2019 中本地误使用“git的重置 - 删除更改 -- hard”后,如何恢复?

环境: VS 2019Windows10本地版本管理(非远程) 前言: git 在Visual Stadio 2019中集成了git的版本管理,在本地用来做版本管理,本来比较好用。 不过有一次,由于拿最初始的版本的时候&#xf…

fyne apptab布局

fyne apptab布局 AppTabs 容器允许用户在不同的内容面板之间切换。标签要么只是文本,要么是文本和一个图标。建议不要混合一些有图标的标签和一些没有图标的标签。 package mainimport ("fyne.io/fyne/v2/app""fyne.io/fyne/v2/container"//&…

广告变现是什么

广告变现是指媒体或平台通过向用户展示广告主的广告,从而获得收入的过程。 广告变现就像是一个店主,他需要有一个吸引人的店面,提供优质的内容和服务,然后在店里摆放一些别人的商品或服务,每当有客人看了或买了这…

Proxmox 虚拟环境下1Panel Linux 服务器运维管理面板的安装

简介 以前安装服务器管理面板用的都是宝塔,今天发现 1Panel Linux 服务器运维管理面板也很好,面板清晰整洁,使用的技术比较先进,所以我决定亲自安装一下看看效果就竟如何? 1Panel Linux 服务器运维管理面板是一个开源…

C语言 | Leetcode C语言题解之第125题验证回文串

题目&#xff1a; 题解&#xff1a; bool isalumn(char c) {return (c > a && c < z) || (c > A && c < Z) || (c > 0 && c < 9); }bool isPalindrome(char* s) {for (int left 0, right strlen(s) - 1; left < right; left, …

XDMA原理及其应用和发展

XDMA原理 XDMA的主要原理是通过直接访问主机内存&#xff0c;实现数据的快速传输。在传统的DMA&#xff08;Direct Memory Access&#xff09;技术中&#xff0c;数据传输需要经过CPU的干预&#xff0c;而XDMA可以绕过CPU&#xff0c;直接将数据从外设读取到主机内存或者从主机…

Java | Leetcode Java题解之第126题单词接龙II

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<String>> findLadders(String beginWord, String endWord, List<String> wordList) {List<List<String>> res new ArrayList<>();// 因为需要快速判断扩展出的单词…

7-zip安装教程

一、简介 7-Zip 是一款开源的文件压缩软件&#xff0c;由 Igor Pavlov 开发。它具有高压缩比、支持多种格式、跨平台等特点。使用 C语言编写&#xff0c;其代码在 Github 上开源。 7-Zip的官网&#xff1a; 7-Zip 7-zip官方中文网站&#xff1a; 7-Zip 官方中文网站 7-Zip 的 G…

Java | Leetcode Java题解之第125题验证回文串

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isPalindrome(String s) {int n s.length();int left 0, right n - 1;while (left < right) {while (left < right && !Character.isLetterOrDigit(s.charAt(left))) {left;}while (left …