传输层 --- UDP

一、简述与回顾

传输层:负责数据能够从发送端传输接收端

在TCP/IP协议中,我们用"源IP","源端口号","目的IP","目的端口号",和"协议号"来表示一个通信。

  • ip地址是用来在网络上标识唯一一台主机的
  • 端口号是用来表示主机上唯一一个进程的
  • 这里的"协议号"是用来表明用的是哪个协议(TCP/UDP/...)进行通信的

注意:一个进程能对应多个端口号,一个端口号只能对应一个进程

 端口号范围划分:

  • 0 - 1023:知名端口号HTTP, FTP,SSH等这些广为使用的应用层协议, 它们的端口号都是固定的
  • 1024 - 65535:操作系统动态分配的端口号,客户端程序的端口号,就是由操作系统从这个范围分配的

知名端口号:

  • ssh服务器, 使用22端口
  • ftp服务器, 使用21端口
  • telnet服务器, 使用23端口
  • http服务器, 使用80端口
  • https服务器, 使用443

 cat /etc/services  // 用来查看知名端口号 --- 自己写的程序使用端口号,尽量避开这些端口号

netstat命令

netstat是一个用来查看网络状态的重要工具

语法:netstat [选项]

功能:查看网络状态

常用选项

  • n 拒绝显示别名,能显示数字的全部转化成数字
  • l 仅列出有在 Listen (监听) 的服務状态
  • p 显示建立相关链接的程序名
  • t (tcp)仅显示tcp相关选项
  • u (udp)仅显示udp相关选项
  • a (all)显示所有选项,默认不显示LISTEN相关

还有一个ss命令,和netstat用法差不多,也是用来查看网络状态的,大家可以试试

pidof命令

在查看服务器的进程id时非常方便.

语法:pidof [进程名]

功能:通过进程名,查看进程id

二、UDP

1、UDP协议端格式

从上图我们就能理解在网络套接字编程中的部分操作

  1. 在应用层写完数据后调用sento函数进行发送,本质就是将数据拷贝到UDP报文的数据区中,以及sendto函数中要传服务器的sockaddr结构体,是因为udp协议需要填写目的端口号
  2. 端口号用16位整形接收是因为底层的udp协议规定的16位

当然协议的定制还有两个问题需要处理:

1、如何将报头和数据分离?

在udp协议中,报头字段的大小是固定的8字节,同时16位UDP长度表示整个报文的大小,所以我们能很轻易的将报文进行拆分,同时判断出报文是否完整 --- 如果报文长度小于8字节或小于报文中记录的报文长度,说明报文不全

2、如何向上交付数据?

通过目的端口号,可以找到需要交付数据的进程

注意:16位校验和是用来检验数据是否被修改,主要是通过数学运算,有兴趣可以自行去了解一下,如果校验和出错,就会直接丢弃

2、如何理解报头?

 3、UDP的特点

UDP传输的过程类似于寄信

  • 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接
  • 不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息;
  • 面向数据报:不能够灵活的控制读写数据的次数和数量

如何理解面向数据报?

  • 发送方应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。
  • 接收放在收到报文后,必须一次读完一整个UDP报文,不能将一个UDP报文分开来读。

如何理解UDP的缓冲区?

  • UDP没有真正意义上的 发送缓冲区,调用sendto会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作
  • UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致。如果缓冲区满了,再到达的UDP数据就会被丢弃

这里的缓冲区可以看成是上图中struct sk_buffer组成的链表队列

UDP的socket既能读,也能写,这个概念叫做 全双工

注意点:UDP的报头中有一个报文长度字段,表明UDP报文的长度最大位64KB,如果需要发送的数据大于64KB,就需要我们手动多次发送

4、基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

当然,也包括你自己写UDP程序时自定义的应用层协议

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

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

相关文章

Android studio关闭自动更新

Windows下: 左上角file - setting - Appearance & Behavier - system setting - update - 取消勾选

golang通过go-aci适配神通数据库

1. go-aci简介 go-aci是神通数据库基于ACI(兼容Oracle的OCI)开发的go语言开发接口,因此运行时需要依赖ACI驱动和ACI库的头文件。支持各种数据类型的读写、支持参数绑定、支持游标范围等操作。 2. Linux部署步骤 2.1. Go安装: 版本:1.9以上…

Spring Cache基本使用

Spring 从 3.1 版本开始定义缓存抽象来统一不同的缓存技术;在应用层面与后端存储之间,提供了一层抽象,这层抽象目的在于封装各种可插拔的后端存储( ehcache, redis, guava),最小化因为缓存给现有业务代码带来的侵入。 一、Spring…

机器学习实验 --- 逻辑回归

第1关:逻辑回归核心思想 任务描述 本关任务:根据本节课所学知识完成本关所设置的编程题 #encoding=utf8 import numpy as npdef sigmoid(t):完成sigmoid函数计算:param t: 负无穷到正无穷的实数:return: 转换后的概率值:可以考虑使用np.exp()函数#********** Begin *******…

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用,以及模拟实现库函数。 一、atoi()库函数的…

景源畅信电商:抖店需要的成本高吗?

在数字化时代的浪潮中,短视频平台迅速崛起,成为连接用户与商家的新桥梁。抖音作为其中的佼佼者,不仅改变了人们的娱乐方式,也催生了新型的电商模式——抖店。许多人好奇,入驻这样一个充满活力的平台,需要承…

【数据结构】第七节:堆

个人主页: 深情秋刀鱼-CSDN博客 数据结构专栏:数据结构与算法 源码获取:数据结构: 上传我写的关于数据结构的代码 (gitee.com) ​ 目录 一、堆 1.堆的概念 2.堆的定义 二、堆的实现 1.初始化和销毁 2.插入 向上调整算法 3.删除 向下调整算法…

DDoS攻击的最新动态及市场趋势分析

随着数字化转型的加速和网络连接设备的增加,分布式拒绝服务(Distributed Denial of Service, DDoS)攻击已经成为全球网络安全领域的一大威胁。根据最新的市场研究报告,预计到2028年,DDoS防护软件市场的复合年增长率将达到14%以上,…

Threes 特效 炫酷传送门HTML5动画特效

基于Three.js的HTML5 3D动画,这个动画模拟了游戏中的一个炫酷的3D场景,支持360度视角查看,也支持鼠标滚轮进行缩放。画面中主要展现了一个游戏中传送门的效果,同时还有路两边的围栏、灯笼、石头,以及星光闪闪的萤火虫&…

springboot vue 开源 会员收银系统 (2) 搭建基础框架

前言 完整版演示 前面我们对会员系统https://blog.csdn.net/qq_35238367/article/details/126174288进行了分析 确定了技术选型 和基本的模块 下面我们将从 springboot脚手架开发一套收银系统 使用脚手架的好处 不用编写基础的rabc权限系统将工作量回归业务本身生成代码 便于…

宿舍管理系统--毕业设计

毕业设计💼MD5加密🔒SSM框架🎨Layui框架🎄 实现功能 管理员的登录与登出 管理员,班级,学生,宿舍,卫生,访客各模块增删改查 个别模块关联查询 各个模块数据导出Excel 一些截图

双向链表C++,C#,Java版,这些程序大多已经过测试,一直在用。

先C版吧&#xff0c;我最先用的是C#,后来是Java&#xff0c;后来改用C版的&#xff0c;因为现在一直在用C&#xff0c;单链 表一直没写上去&#xff0c;因为我很少用&#xff0c;用的是双链表。 执行代码例子1&#xff1a; int main() { _DList<_string> s…

重学java 40.多线程 — 死锁和线程状态

—— 24.5. 一、死锁 1.死锁介绍&#xff08;锁嵌套就有可能产生死锁&#xff09; 指的是两个或者两个以上的线程在执行的过程中由于竞争同步锁而产生的一种阻塞现象;如果没有外力的作用,他们将无法继续执行下去,这种情况称之为死锁 例&#xff1a; 两线程处于互相等待的状态&a…

nss刷题(3)

1、[SWPUCTF 2021 新生赛]include 根据提示传入一个file后显示了关于flag的代码 这是一个文件包含&#xff0c;考虑php伪协议&#xff0c;构造payload&#xff1a; ?filephp://filter/readconvert.base64-encode/resourceflag.php 2、[SWPUCTF 2021 新生赛]Do_you_know_http …

MyBatisPlus使用流程

引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version> </dependency> 版本号根据需要选取 在实体类上加注解声明&#xff0c;表信息 根据数…

go-zero 实战(5)

引入Prometheus 用 Prometheus 监控应用 1. 用 docker 启动 Prometheus 编辑配置位置&#xff0c;我将 prometheus.yaml 和 targets.json 文件放在了 /opt/prometheus/conf目录下 prometheus.yaml global:scrape_interval: 15s # 抓取间隔evaluation_interval: 15s # 评估…

网络拓扑—DHCP服务配置

文章目录 DHCP服务搭建相关配置细节前提安装DHCP服务 DHCP服务搭建 相关配置细节前提 系统&#xff1a;Windows Server 2003 IP网段&#xff1a;10.0.0.0/24 三台机子&#xff1a; 普通PC机 DHCP服务器 路由器&#xff08;两块网卡&#xff0c;连接内外网&#xff09; //注…

中国主要城市房价指数数据集(2011-2024)

数据来源&#xff1a;东方财富网 时间跨度&#xff1a;2011年1月 - 2024年4月 数据范围&#xff1a;中国主要城市 包含指标&#xff1a; 日期、城市 新建商品住宅价格指数-同比 新建商品住宅价格指数-环比 新建商品住宅价格指数-定基 二手住宅价格指数-环比 二手住宅价格指…

get和post的区别,二者是幂等的吗?

一、什么是幂等 所谓幂等性通俗的将就是一次请求和多次请求同一个资源产生相同的副作用。 维基百科定义&#xff1a;幂等&#xff08;idempotent、idempotence&#xff09;是一个数学与计算机学概念&#xff0c;常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执…

Docker(四) 文件和网络

1 Dockerfile 1.1 什么是Dockerfile Dockerfile是一个文本文件&#xff0c;包含一系列命令&#xff0c;这些命令用于在 Docker 镜像中自动执行操作。Dockerfile 定义了如何构建 Docker 镜像的步骤和所需的操作。 Dockerfile 中包含的命令可以设置和定制容器的环境&#xff0c;…