计算机网络 运输层上 | 运输层概述 UDP协议 端口 套接字

news/2024/5/18 14:09:36 标签: 计算机网络, udp, 网络

文章目录

  • 1 运输层概述
    • 1.1 运输层存在的意义
    • 1.2 运输层协议概述
    • 1.3 主要端口号
  • 2 运输层主要协议 UDP
    • 2.1 UDP的特点
    • 2.2 UDP首部格式
    • 2.3 UDP工作流

1 运输层概述

1.1 运输层存在的意义

之前我们讲网络层的时候,已经可以将信息从一个主机传递到另一个主机了。

那么为什么我们还需要运输层呢?

是因为我们两个主机通信的时候,大多数情况是两个主机不同的进程在通信,比如我们浏览器访问需要一个进程,发邮件又需要一个进程。很多时候这些进程都是并行通信的。那么网络层是无法区分的,实际的区分通信的不同进程就交给了运输层,这也是运输层的重要作用——复用和分用

当然除了复用和分用,运输层还提供一些其他的功能如差错检测等

应用层不同进程的报文通过不同的端口向下交付到运输层

运输层提供应用进程的逻辑通信——逻辑通信的意思是:运输层之间的通信好像是沿着水平方向传送数据,但事实上这两个运输层之间并没有一条水平方向的物理连接

所以总结来看

网络层和运输层的区别

网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信

1.2 运输层协议概述

运输层主要有两个不同的运输协议

TCP和UDP

他们各自的PDU(运输协议单元如下)

UDP:它的PDU是TCP报文段

TCP:它的PDU是UDP报文段或用户数据报

那么实际中运输层如何区分不同的进程呢?通过抽象了端口号这种方式

由此可见,两个计算机中的进程需要对方的IP地址,还要知道对方的端口号(为了找到对方计算机中的应用程序)

不同端口号代表不同进程。

设计者们对端口号做了如下一些规定

1.3 主要端口号

两大类端口

(1)服务端使用的端口号

又分为两大类

熟知端口,数值一般为0~1023

​ 熟知端口号用来指派给TCP/IP最重要的一些程序,如下图所示

登记端口,数值为1024~49151

​ 没有数值端口使用的,使用的话必须登记

(2)客户端使用的端口号

短暂端口号,数值49152~65535

​ 仅在客户端进程运行时动态选择,因此又叫做短暂端口号
在这里插入图片描述

下面分别讨论UDP和TCP

其中UDP比较简单

2 运输层主要协议 UDP

UDP只在IP数据报上增加了很少一点的功能,即端口功能和差错检测的功能

2.1 UDP的特点

  1. UDP是一种无连接协议
  • 提供无连接服务 传送数据前不需要先建立连接
  • 不提供可靠交付 对方的运输层在收到UDP报文后,不需要给出任何确认
  1. 尽最大努力交付
  2. 没有拥塞控制
  3. UDP支持一对一,一对多,多对一和多对多的交互通信
  4. 对于应用层的报文,不合并不拆分,多长就都发送
  5. UDP首部开销较小

2.2 UDP首部格式

UDP首部很简单就八个字节,由四个字段组成,每个字段长度都是2字节

  1. 源端口
  2. 目的端口
  3. 长度 数据报长度,最小值是8
  4. 检验和 检测传输中是否有错

2.3 UDP工作流

如果接收方UDP发现报文端口号不正确,就丢弃该报文,并由ICMP发送“端口不可达”差错报文给发送方

对于UDP的差错检测,和IP数据报检测方法类似

  1. 首先,将UDP首部中的检验和字段置为0,以便进行计算。

  2. 将UDP伪首部添加到UDP数据包前面。伪首部包含了一些IP层的信息,用于计算检验和。伪首部的格式如下:

    Source IP Address (32 bits)
    Destination IP Address (32 bits)
    Reserved (8 bits, 值为0)
    Protocol (8 bits, UDP的协议值为17)
    UDP Length (16 bits, UDP首部+UDP数据的总长度)
    

    伪首部中的字段分别是源IP地址、目标IP地址、保留字段、协议字段(UDP的协议值为17)和UDP长度字段。这些字段一起构成了伪首部。

  3. 将UDP伪首部的各字段以及UDP首部和UDP数据中的所有16位字(如果数据不是16位的倍数,需要填充0使其满足16位字的条件)进行按位求和。这意味着将它们视为16位整数,将它们相加,如果结果溢出,则将溢出部分加到总和的末尾。

  4. 取总和的反码(将所有位取反,1变为0,0变为1),并将结果存储在UDP首部的检验和字段中。

  5. 发送方将带有计算后的检验和字段的UDP数据包发送到目标主机。

  6. 接收方在收到UDP数据包后,重复以上步骤,计算接收方的检验和。

  7. 接收方将计算得到的检验和与UDP首部中的检验和字段进行比较。如果它们匹配,说明数据包未损坏;如果不匹配,说明数据包可能已损坏或被篡改,接收方可以选择丢弃这个数据包。

总之,UDP检验和用于检测UDP数据包在传输过程中的完整性,但它不提供数据包的可靠传输和重传机制。如果检验和不匹配,接收方可以选择忽略数据包或向上层报告错误,但UDP本身不会进行重传。这是与TCP不同的地方,TCP提供了可靠的数据传输和重传机制。


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

相关文章

conan入门(三十九):conan 2.x 引用第三方库示例

去年写过一篇博客《conan入门(四):conan 引用第三方库示例》,以一引用cjson为例介绍如何使用conan管理第三方库的引用,但是当时使的conan最新版本是1.45,这一年多conan经过了很多的版本迭代,目前最新版本已经是2.0.14。 conan 1.0和2.0版本有…

海康威视对讲广播系统 RCE漏洞复现(CVE-2023-6895)

0x01 产品简介 Hikvision Intercom Broadcasting System是中国海康威视(Hikvision)公司的一个对讲广播系统。 0x02 漏洞概述 Hikvision Intercom Broadcasting System 3.0.3_20201113_RELEASE(HIK)版本存在操作系统命令注入漏洞,该漏洞源于文件/php/ping.php的参数jsonda…

.Net Attribute 什么是特性、预定义特性使用(一)

什么是特性? 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面…

GEE机器学习——Classifier.explain()查看训练模型的过程和变量重要性分析

变量重要性 变量重要性分析是一种用于评估模型中每个特征(变量)对模型性能的影响程度的方法。通过分析每个特征的重要性,可以帮助我们理解模型如何利用不同特征来进行预测,并且可以帮助我们选择最重要的特征,以便更好地解释模型和优化模型性能。在本案例种,使用不同机器…

git单分支提交的冲突问题

案例:现在的微服务都有自动生成工具generater,首先通过生成器生成了一些代码,这里成为A版本,在A版本的代码中,修改了部分代码,并git push到远程仓库。这时由于变动,需要追加内容,于是…

C# 获取Excel里引用的外部其他excel文件清单

关键方法:mySheet.Application.ActiveWorkbook.LinkSources(XlLink.xlExcelLinks); 主要代碼如下 Application myExcel null;//引用Excel Application类別 Workbook myBook null;//引用活页簿类別 Worksheet mySheet null;//引用工作表类別 …

反网络爬虫的三个阶段

随着网络爬虫的普及和网络攻击的日益复杂,升级网络安全措施成为保护网站和应用程序免受恶意爬虫侵害的必要举措。本文将深入研究反网络爬虫的三个阶段,并详细探讨IP地址过滤的策略,以提升网络的安全性。 第一部分:反网络爬虫的三…

Macos 删除过期失效的软链接symlink

背景 现在需要卸载python老版本 通过移除以下目录中的对应python版本后 /Library/Frameworks/Python.framework/Versions /Applications 发现 /usr/local/bin 目录下还有老版本python的失效软链接 因此需要批量清除无效的软链接 命令行 系统目录下需要使用sudo实现删除 bre…