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

2024-06-01 13:36
文章标签 ip 原理 udp 网络 tcp 传输层

本文主要是介绍网络原理-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

🫵 今天记得敲代码

这篇关于网络原理-TCP/IP --传输层(UDP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1021155

相关文章

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用