【计算机网络】Udp详解

news/2024/5/18 14:41:38 标签: 计算机网络, udp, 网络协议

前言

上几文章我们讲解了应用层协议Http和Https,要知道应用层协议有很多,这些都是程序员自己定制的,而真正要传输的时候,是要在操作系统的传输层进行的,今天我们就来学习一下传输层协议Udp的

标识一个通信

要进行跨网络通信,就要标识一个网络通信的唯一性

通常需要:源IP、目的IP、协议号、源端口号、目的端口号这五个信息来标识一个网络通信。

端口划分

  • 0-1023
    属于知名端口号,Http、FTP、SSH等广为使用的应用层协议,端口号是固定的。

    • SSH,使用22端口
    • FTP,使用21端口
    • telnet,使用23端口
    • Http,使用80端口
    • Https,使用443端口

可以使用以下命令查看知名端口号:

cat /etc/services
  • 1024-65535
    操作系统动态分配对策端口号,客户端程序的端口号就是从这里面随机分配的。

我们设计端口的时候,要避开这些知名端口。

netstat

是一个查看网络状态的工具

选项:
- n,拒绝显示别名,能够数字化就全数字化
- l ,只列出在监听状态(listen)的服务状态
- p,显示建立相关链接的程序名
- t ,只显示tcp相关
- u,只显示udp相关
- a,显示所有选项,默认不显示listen相关

pidof

通过进程名查看进程id

Udp协议端格式

在这里插入图片描述

可以看到,Udp报头长度总共八个字节,其中,十六位Udp长度表示数据报的报头+报文总共的大小,十六位校验和出错会直接将数据报丢弃。

而且由于十六位Udp长度的限制,TCP能传输的大小是有限的。一个Udp能传输的数据最大长度是64k,超过就需要在应用层手动分包多次传送,并在接收端手动拼装。

Udp特点

  • 无连接,不需要建立连接,知道ip和端口号就能传输
  • 不可靠,没有确认传传机制,udp不反回任何错误信息
  • 面向数据报,不能灵活控制读写数据的次数和数量
  • 简单。

面向数据报

应用层交给Udp多长的报文,Udp就要直接发送,不能拆分和并,例如:

发送端调用sendto,发送100字节,那么接收端必须调用一次recvfrom100字节,不能循环调用recvfrom,每次10字节

Udp缓冲区

Udp没有真正的发送缓冲区,调用sendto会直接将要发送的数据交给内核,由内核将数据传输给网络并进行后续动作

Udp具有接收缓冲区,但是这个缓冲区不保证Udp数据报的顺序,如果缓冲区满了,照样会被丢弃

也因此,Udp socket 既可以写也可以读,是全双工的。

基于Udp的协议

  • NFS,网络文件系统
  • TFTP,简单文件传输协议
  • DHCP,动态主机配置协议
  • BOOTP,启动协议
  • DNS,域名解析协议

http://www.niftyadmin.cn/n/4938997.html

相关文章

Unity游戏源码分享-中国象棋Unity5.6版本

Unity游戏源码分享-中国象棋Unity5.6版本 项目地址: https://download.csdn.net/download/Highning0007/88215699

python_PyQt5运行股票研究python方法工具V1.2_增加折线图控件

承接【python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件】 地址:python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件_程序猿与金融与科技的博客-CSDN博客 目录 结果展示: 代码: 示例py文件代码(低位股…

安装Linux操作系统CentOS 6详细图文步骤

为满足业务对Linux操作系统部署的要求,本文档主要提供CentOS 6操作系统的最小化安装和基本配置, 安装本系统建议最少1GB内存和2GB磁盘空间。 1、 使用光盘或者挂载ISO镜像,在出现如下图形界面时选择【Install or upgrade an existing system】并按Ent…

02:STM32--EXTI外部中断

目录 一:中断 1:简历 2:AFIO 3:EXTI ​编辑 4:NVIC基本结构 5:使用步骤 二:中断的应用 A:对外式红外传感计数器 1:连接图​编辑 2:函数介绍 3:硬件介绍 4:计数代码 B;旋转编码计数器 1:连接图 2:硬件介绍 3:旋转编码器代码: 一:中断 1:简历 中断:在主程…

ASP.NET Core中路由规则匹配

RESTful约束&#xff0c;如果在一个控制器里面有多个Get、Post...的操作 1、在一个控制器里面可以定义多个API方法 2、通过路由规则来区分 /// <summary> /// 获取用户信息 /// </summary> /// <param name"user"></param> /// <returns…

jenkins 安装nodejs 14

参考&#xff1a; jenkins容器安装nodejs-前端问答-PHP中文网

shell之正则表达式及三剑客grep命令

一、正则表达式概述 什么是正则表达式&#xff1f; 正则表达式是一种描述字符串匹配规则的重要工具 1、正则表达式定义: 正则表达式&#xff0c;又称正规表达式、常规表达式 使用字符串描述、匹配一系列符合某个规则的字符串 正则表达式 普通字符&#xff1a; 大小写字母…

实录分享 | 使用Prometheus和Grafana监控Alluxio运行状况

欢迎来到【微直播间】&#xff0c;2min纵览大咖观点 本次分享主要包括三个方面&#xff1a; Prometheus&Grafana简介环境搭建手动调优 一、 Prometheus&Grafana简介关于Prometheus&#xff1a; Prometheus 是一个开源的完整监控解决方案&#xff0c;其对传统监控系…