【网络】:再谈传输层(UDP)

news/2024/5/18 13:01:21 标签: 网络, udp, 网络协议

传输层

  • 一.再谈端口号
  • 二.UDP

一.再谈端口号

端口号(Port)标识了一个主机上进行通信的不同的应用程序。

在这里插入图片描述

在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看);

1.端口号划分

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

些服务器是非常常用的, 为了使用方便, 人们约定一些常用的服务器, 都是用以下这些固定的端口号:

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

2.查看接口

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

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

在这里插入图片描述

二.UDP

1.协议格式

在这里插入图片描述

16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度;
如果校验和出错, 就会直接丢弃;
UDP由于是定长报头,所以报头分离很简单,只需要去掉固定长度即可

我们知道传输层和网络层都在内核里,而内核又是由C语言写的,所以UDP报头实际上是一个结构体,里面4个成员,每个成员站16位。在内核内可能同时拥有多个报文,所以内核又有sk_buffer来将每一个报头进行管理。所谓删除报文,就是删除报头,释放空间。

2.特点

UDP传输的过程类似于寄信。

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

3.面向数据报

应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并.

如果发送端调用一次sendto, 发送100个字节, 那么接收端也必须调用对应的一次recvfrom, 接收100个字节; 而不能循环调用10次recvfrom, 每次接收10个字节;

4.UDP缓冲区

  1. UDP没有真正意义上的 发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作;

  2. UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了, 再到达的UDP数据就会被丢弃;

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


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

相关文章

【个人开发】llama2部署实践(一)——基于CPU部署

1. Anaconda安装 mkdir -p /opt/anaconda cd /opt/anaconda # 参考链接:https://repo.anaconda.com/archive/index.html wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh sh Anaconda3-2023.07-2-Linux-x86_64.sh2.安装git yum inst…

华容道问题求解_详细设计(五)之hash值和回放功能

(续上文) 布局的hash 值计算 笔者也参考了之前的一些文章,很多文章提到了怎么节省存贮空间来查找最优解,这不是笔者的目的。笔者的目的比较单一,就是找到最优解就行了。因此并没有在存贮上面进行过多的优化&#xff…

代码随想录算法训练营第五十五天 583. 两个字符串的删除操作、 72. 编辑距离、 编辑距离总结篇

代码随想录算法训练营第五十五天 | 583. 两个字符串的删除操作、 72. 编辑距离、 编辑距离总结篇 583. 两个字符串的删除操作 题目链接:https://leetcode.cn/problems/delete-operation-for-two-strings/ class Solution {public int minDistance(String word1, …

路由器动态路由配置

本博客为观看湖科大的教书匠系列计算机网络视频的学习笔记。 静态路由选择动态路由选择采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。路由器通过路由选择协议自动获取路由信息。静态路由选择简单、开销小,但不能及时适应网络状态(流…

SSRF服务器请求伪造原理和pikachu靶场实验

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、SSRF简介 SSRF全称:Server-Side Request…

深入了解二叉搜索树:原理、实现与应用

目录 一、介绍二叉搜索树 二、二叉搜索树的基本性质 三、二叉搜索树的实现 四、总结 在计算机科学中,数据结构是构建算法和程序的基础。其中,二叉搜索树(Binary Search Tree,简称 BST)作为一种常见的数据结构&#…

javacv FFmpeg 剪辑音频文件

需要对mp3文件进行剪辑,剪掉几秒到几秒,然后生成新的文件。 目前有两种方法, 方法一、是用脚本安装FFmpeg执行包, 方法二、不需要安装FFmpeg,直接调用ffmpeg包解码。 本文介绍的为方法二,不需要下载安装FFmpeg. 1、m…

【设计模式专题之工厂方法模式】2.积木工厂

时间限制:1.000S 空间限制:256MB 题目描述 小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。 输入描述 输入的第一行是一个整数 N&am…