计算机网络 运输层上 | 运输层概述 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.mzph.cn/news/235374.shtml

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

相关文章

校园圈子交友系统,APP小程序H5,三端源码交付,支持二开!实名认证,大V认证,地图找伴,二手平台!

校园圈子交友系统,是属于自主定义开发的系统,内容有很多,先截取一些给大家看看,让大家更多的了解本系统,然后再做评价! 校园后端下载地址:校园圈子系统小程序,校园拼车,校…

XM平台官网开户注册流程图解

注册前准备 在进行XM外汇官网注册之前,首先需要准备必要的信息,包括个人身份信息、联系方式以及相关财务信息。确保这些信息的准确性是保证注册流程顺利进行的关键。 一、要访问XM外汇官方网站,首先打开您的浏览器。在浏览器的地址栏中输入…

数据分析基础之《numpy(6)—合并与分割》

了解即可,用panads 一、作用 实现数据的切分和合并,将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […

华为OS与麒麟OS:华为自研操作系统的对决

导言 在移动操作系统领域,华为OS和麒麟OS代表了华为在自主研发方面的努力。本文将深入探讨这两个操作系统的特点、竞争关系以及它们在用户体验、生态系统建设等方面的差异。 1. 背景与起源 华为OS的诞生: 华为OS是华为公司为应对外部环境而自主…

英国呼叫中心的功能

随着互联网的普及和信息技术的发展,越来越多的企业需要通过呼叫中心来管理客户关系和提供售后服务。英国作为主要的海外外贸市场之一,也是呼叫中心面向客户服务的重要国家。 英国呼叫中心的功能 英国呼叫中心的功能大致分为四类:接听电话、…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表)

一、模型user对象>和数据库的字段关联 & 自动生成 【其中涉及删除表数据,一切又从零开始】 二、模型user对象>和数据库的字段关联 2.1在model文件夹下,新建 user对象 2.1.1 概念 大家可以想象我们现在的数据是存储在数据库里的&…

【Spring Security】打造安全无忧的Web应用--入门篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Spring Security是什么 1.概…

Spring Boot3通过GraalVM生成exe执行文件

一、安装GraalVM 1、官网:https://www.graalvm.org/downloads/ 2、配置环境变量 2.1、环境变量必须使用JAVA_HOME,否则会出现问题 2.2、在系统变量配置Path,%JAVA_HOME%\bin,注意必须放在顶部第一位 2.3、配置jdk的环境变量,在P…

【Spring实战】创建第一个项目

文章目录 使用 Spring Initializr 创建第一个项目1. 打开官网2. 填写信息3. 生成工程4. 解压工程5. 导入 IDEA6. 编写 Hello world7. 启动项目8. 访问验证9. 详细代码最后 Spring 是一个强大且广泛使用的 Java 开发框架,提供了全面的基础设施和工具,用于…

如何将图片转为PDF

问题描述:如何将图片转为PDF,有时需要将纸质文档扫描成PDF,然后上传到网上。 解决办法:平时使用的方法是将图片插入到word文件中,然后将图片设置为浮于文字下方,然后调整图片的大小,铺满整个wo…

案例094:基于微信小程序的图书馆自习室座位预约管理系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

mysql:查看线程缓存中的线程数量

使用命令show global status like Threads_cached;可以查看线程缓存中的线程数量。 例如,查询线程缓存中的线程数量如下: 然后启动应用程序,使用连接,查询如下: 由查询结果可以看到,线程缓存中的线程数量…

2023_Spark_实验三十二:消费Kafka数据并保存到MySQL中

实验目的:掌握Scala开发工具消费Kafka数据,并将结果保存到关系型数据库中 实验方法:消费Kafka数据保存到MySQL中 实验步骤: 一、创建Job_ClickData_Process 代码如下: package examsimport org.apache.kafka.clien…

数据挖掘体系介绍

数据挖掘是什么? 简而言之,对数据进行挖掘,从中提取出有效的信息。一般我们会把这种信息通过概念、规则、规律、模式等有组织的方式展示出来,形成所谓的知识。特别是在这个大数据时代,当数据多到一定程度,…

【Docker-4】Docker 命令

1、镜像管理命令 docker images #查看本机镜像 [rootdocker-0001 ~]# docker imagesdocker search 镜像名称 #从官方仓库查找镜像 [rootdocker-0001 ~]# docker search busybox #需要联网,本次不用操作docker pull 镜像名称:标签 #下载镜像 [rootdocke…

Qt前端技术:2.QSS

border-style:后边是两个参数的话第一个参数改变上下的style 第二个参数改变左右的style 如果后边是三个参数的话第一个参数改变上边的style第二个参数改变左右的style,第三个参数改变的下边的style 如果后边是四个参数的话对应的顺序为上,右…

掌控时间的尝试:基于Flask的自卷系统设计与实现

Gitee源代码仓库:Strong: 一个自卷系统 (gitee.com) 长期苦于自己的时间如脱缰野马,难以掌控,无法投入到我认为自己想做的事情中去。纯粹的自律实在不可靠,我希望借助一些外力来帮助自己挣脱泥潭,于是我制作了这个实验…

Spring MVC控制层框架

三、Spring MVC控制层框架 目录 一、SpringMVC简介和体验 1. 介绍2. 主要作用3. 核心组件和调用流程理解4. 快速体验 二、SpringMVC接收数据 1. 访问路径设置2. 接收参数(重点) 2.1 param 和 json参数比较2.2 param参数接收2.3 路径 参数接收2.4 json参…

旅游景区项目信息化建设运营方案:PPT47页,附下载

关键词:智慧景区解决方案,智慧景区建设,智慧景区开发与管理,智慧景区建设的意义,智慧景区管理 一、旅游景区项目信息化建设背景 1、旅游业发展迅速:随着旅游业的不断发展,游客对旅游体验的需求…

Flink(十)【处理函数】

前言 冬天学习成本太高了,每天冻得要死,自习室人满为患,确实是辛苦。学校基本的硬件条件差的一批(图书馆贼小贼偏僻、老教室暖气还没有地板热、空教室还得自己一个一个挨着找),个体无法改变环境只能顺应了&…