【网络协议】传输层协议

目录

传输层协议

1.传输层的两个协议

1.1TCP和UDP的应用场景

1.2传输层协议和应用层协议的关系

2.TCP和UDP的对比(重点)

(1)无连接的UDP和面向连接的TCP

(2)UDP和TCP对单播、多播和广播的支持情况

(3)UDP和TCP对应用层报文的处理

(4)UDP和TCP对数据传输可靠性的支持


传输层协议

1.传输层的两个协议

Internet 是不可靠的。当网络拥塞时,来不及处理的数据包就被路由器直接丢弃。应用程序通信发送的报文需要完整地发送到对方,这就要求在通信的计算机之间有可靠传输机制。 Internet中的计算机有不同的操作系统,如Windows操作系统、Linux操作系统和UNIX操作系统等,智能手机也要访问Internet,智能手机有安卓系统和苹果系统,这些系统能够相互通信、实现可靠传输,是因为这些系统使用了相同的可靠传输协议-TCP(Transmission Control Protocol,传输控制协议),TCP是Internet的标准协议。有些应用程序通信使用TCP不合适,就使用(User Datagram Protocol,UDP)用户数据报协议。
TCP和UDP工作在相互通信的计算机上,为应用层协议提供服务,这两个协议被称为“传输层协议”。

1.1TCP和UDP的应用场景

传输层的两个协议-TCP和UDP有各自的应用场景。

TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接受,其间如果发生丢包,乱序由TCP负责重传和排序。

下面是TCP的应用场景:

(1)客户端程序和服务器端程序需要多次交互才能实现应用程序的功能。例如,接收电子邮件使用的是POP3,发送电子邮件使用的是SMTP,传输文件使用的是FTP,在传输层使用的是TCP。

(2)应用程序传输的文件需要分段传输,例如,使用浏览器访问网页,网页中的图片和HTML文件需要分段后发送给浏览器;又比如使用QQ传输文件,在传输层也是选用TCP。

如果需要将发送的内容分成多个数据包发送,这就要求在传输层使用TCP在发送方和接收方建立连接,实现可靠传输、流量控制和和避免拥塞。

例如,从网络中下载一个500MB的电影或下载一个200MB的软件,这么大的文拆分成多个数据包发送,发送过程需要持续几分钟或几十分钟。在此期间,发送方将要发送的内容一边发送一边放到缓存中,将缓存中的内容分成多个数据包,并进行编号,按顺序发送。这就需要在发送方和接收方建立连接,协商通信过程的一些参数(如一个数据多少字节等)。如果网络不稳定造成某个数据包丢失,发送方必须重新发送丢失的数据包,否则就会造成接收到的文件不完整,这就需要TCP能够实现可靠传输。如果发送方发快,接收方来不及处理,接收方还会通知发送方降低发送速度,甚至停止发送。TCP还能实现流量控制,因为Internet中的流量不固定,流量过高时会造成网络拥塞(这一点很就像城市上下班高峰时的交通堵塞一样),在整个传输过程中,发送方要一直探测网塞来调整发送速度。TCP还有拥塞避免机制。

发送方的的发送速度由网络是否拥塞和接收方接受速度两个因素控制,哪个速度低就用那个速度发送。

有些应用程序使用TCP就显得效率低了。例如,有些应用的客户端只需要向服务器端发送一个请求报文,服务器端返回一个响应报文就可以完成其功能。这类应用如果使用TCP发送3个数据包建立连接,再发送4个数据包释放连接,只为了发送一个报文,就很不值得,这时干脆让应用程序直接发送。如果丢包了,应用程序再发送一遍即可。这类应用,在传输层就使用UDP。

下面是UDP的应用场景:

(1)客户端程序和服务器端程序通信,应用程序发送的数据包不需要分段。如域名解析,DNS协议使用的就是传输层的UDP,客户端像DNS服务器发送一个报文请求解析某个网站的域名,DNS服务器将解析的结果通过一个报文返回给客户端。

(2)实时通信。这类如QQ或微信语音聊天,或视频聊天的应用,发送方和接收方需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清楚,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能许快的聊天了。

(3)多播或广播通信。如学校多媒体机房,老师的计算机屏幕需要分享给教室里的学生计算机,在老师的计算机上安装多媒体教室服务端软件,在学生的计算机上安装多媒体教室客户端软件,老师的计算机使用多播地址或广播地址发送报文,学生的计算机都能收到。

这类应用在传输层使用UDP。

可见根据通信的特点,一个应用程序通信可以在传输层选择不同的协议。

1.2传输层协议和应用层协议的关系

应用层协议很多,但传输层就两个协议,如何使用传输层的两个协议标识应用层协议呢?

通常使用传输层协议加一个端口号来标识一个应用层协议。如下,

(1)HTTP默认使用TCP的80端口。

(2)FTP默认使用TCP的21端口。

(3)SMTP默认使用TCP的25端口。

(4)POP3默认是用TCP的110端口。

(5)HTTPS默认使用TCP的443端口。

(6)DNS默认使用UDP的53端口(其实TCP的53端口它也占着)。

(7)远程桌面协议(RDP)默认使用TCP的3389端口。

(8)Telnet默认使用TCP的23端口。

以上列出的都是默认端口,当然可以更改应用层协议使用的端口。如果不使用默认端口,客户端需要指明所使用的端口。

1.服务器使用的端口

服务器使用的端口号又分为两类,最重要一类叫做“熟知端口号”或“系统端口号”,数值为0~1023.这些数值可在网址IANA官网查到。互联网数字分配机构(IANA)把这些端口号指派给了TCP/IP最重要一些应用程序,让所有的用户都知道。另一类叫做“登记端口号”,数值为1024~49151.这类端口号是供没有熟知端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如微软的RDP使用TCP的3389端口,就属于登记端口号的范围。

2.客户端使用的端口号

当打开浏览器访问网站或登录QQ等客户端软件和服务器建立连接时,计算机会为客户端软件分配一个临时端口,这就是客户端端口,取值范围为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作“临时(短暂)端口号”。这类端口号是留给客户进程暂时使用的。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户端进程以后使用。

2.TCP和UDP的对比(重点)

(1)无连接的UDP和面向连接的TCP

UDP是无连接的,换句话说,使用UDP的通信双方,在传送数据之前不需要建立连接,可以随时发送数据;

TCP是面向连接的。在传输数据之前必须使用“三次握手”来建立TCP连接,基于已建立好的TCP连接进行数据传输。数据传输结束后,必须使用“四次挥手”来释放TCP连接。这里的连接是指逻辑连接关系,而不是物理连接。

(2)UDP和TCP对单播、多播和广播的支持情况

UDP支持单播、多播和广播,也就是说UDP支持一对一,一对多的通信。

TCP仅支持单播。

(3)UDP和TCP对应用层报文的处理

UDP对应用进程交付下来的报文既不合并也不拆分,而是保留这些报文的边界。换句话说,UDP是面向数据报的。

TCP对应用进程交付下来的应用报文,仅仅靠做事一连串的、无结构的字节流。TCP并不知道这些带传输的字节流的含义,仅将他们编号并存储在自己的发送缓存中。然后根据发送策略,从发送缓存中提取一定数量的字节,构建TCP报文段并发送。接收方TCP接收到报文段后提取出数据载荷并存储在接收缓存中,另一方面将接受缓存中的一些字节向上交付给应用进程。所以TCP是面向字节流的。

(4)UDP和TCP对数据传输可靠性的支持

UDP用户数据报出现的误码和丢失等问题,UDP并不关心。基于UDP的这个特点,UDP适用于实时应用,例如视频电话。

尽管网络层中的IP协议向上层提供的是无连接不可靠的数据传输服务,也就是说IP数据报在传输过程中可能出现误码或者丢失,但只要传输层使用的是TCP协议,TCP就可以向上层提供面向连接的可靠的数据传输服务。基于TCP的这个特点,TCP使用于要求可靠传输且对实时性要求不高的应用,例如文件传输和电子邮件等。

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

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

相关文章

React实现多图片预览功能、预览图上下张切换(实战示例)

前言 在React项目中,展示和预览多张图片是一种常见的需求。本篇帖子将介绍如何使用React和antd库来实现这一功能,并探讨如何在预览模态框中切换到前一张或后一张图片。 背景 我们将以一个OCR图像列表展示的示例来演示代码的运用。假设我们有一个OCR系…

Linux系统编程系列之进程间通信-信号量组

一、什么是信号量组 信号量组是信号量的一种, 是system-V三种IPC对象之一,是进程间通信的一种方式。 二、信号量组的特性 信号量组不是用来传输数据的,而是作为“旗语”,用来协调各进程或者线程工作的。信号量组可以一次性在其内…

【LeetCode】滑动窗口妙解无重复字符的最长子串

Problem: 3. 无重复字符的最长子串 文章目录 思路算法原理分析暴力枚举 哈希表滑动窗口 复杂度Code 思路 首先我们来分析一下本题的思路 如果读者有看过 长度最小的子数组 的话就可以清楚这个子串其实和子数组是一个道理,都是 连续的一段区间但是呢它们本质上还是存…

应用架构的演进:亚马逊的微服务实践

当你在亚马逊上购物时,或许不会想到,你看到的这个购物网站,其背后技术架构经历了什么样的变迁与升级。 还记得上世纪 90 年代,那个只卖书的网上书店吗?那时的亚马逊,不过是一个架构简单的网站,所有的功能都堆积在一个庞大的软件堡垒里。随着更多业务的增加、更新和迭代,这个软…

【小程序 - 基础】页面导航、页面事件、生命周期、WXS脚本_04

目录 一、页面导航 1. 什么是页面导航 2. 小程序中实现页面导航的两种方式 2.1 声明式导航 2.1.1 导航到 tabBar 页面 2.1.2 导航到非 tabBar 页面 2.1.3 后退导航 2.2 编程式导航 2.2.1 导航到 tabBar 页面 2.2.2 导航到非 tabBar 页面 2.2.3 后退导航 2.3. 导航…

从1开始的Matlab(快速入门)

MATLAB软件版本:MATLAB R2016b 本文是博主从零开始学Matlab的记录,适合第一次接触Matlab的同学阅读。 一、基础介绍 1.1界面认识 1.2变量命名 注:Matlab中的注释 %% 独占一行的注释(有上下横线分割) % 普通注释 …

C语言:选择+编程(每日一练Day9)

目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:自除数 思路一: 题二:除自身以外数组的乘积 思路二: 本人实力有限可能对…

stm32 - 串口

stm32 - 串口 OLED显示屏 OLED显示屏 oled.h #ifndef __OLED_H #define __OLED_Hvoid OLED_Init(void); void OLED_Clear(void); void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char); void OLED_ShowString(uint8_t Line, uint8_t Column, char *String); void OLE…

深入理解 Swift 新并发模型中 Actor 的重入(Reentrancy)问题

问题现象 我们知道,Swift 5.5 引入的新并发模型极大简化了并行逻辑代码的开发,更重要的是:使用新并发模型中的 Actor 原语可以大大降低并发数据竞争的可能性。 不过,即便 Actor 有如此神奇之功效,它也不是“万能药”,仍不能防止误用带来的问题。比如:Actor 重入(Reen…

283. 多边形,《算法竞赛进阶指南》,

283. 多边形 - AcWing题库 “多边形游戏”是一款单人益智游戏。 游戏开始时,给定玩家一个具有 N 个顶点 N 条边(编号 1∼N)的多边形,如图 1 所示,其中 N4 每个顶点上写有一个整数,每个边上标有一个运算符…

数据分析方法:RFM模型

一、RFM基本原理 RFM是三个单词的缩写: 最近一次消费时间(Recency),取数的时候一般取最近一次消费记录到当前时间的间隔,比如:7天、30天、90天未到店消费;直观上,一个用户太久不到…

MySql进阶篇---006:存储引擎,索引,SQL优化,视图、存储过程、变量、流程控制、游标、存储函数、触发器

1. 存储引擎 1.1 MySQL体系结构 1).连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证…

DETR中的问题汇总(代码)

一、讲述一下torch.tensor()和torch.as_tensor()的区别 torch.tensor() 和 torch.as_tensor() 都是 PyTorch 中用于创建张量(Tensor)的函数,但它们有一些区别,主要涉及到张量的内存管理方式和数据拷贝。以下是它们的主要区别&…

Redis与分布式-主从复制

接上文 常用中间件-OAuth2 1.主从复制 启动两个redis服务器。 修改第一个服务器地址 修改第二个redis 然后分别启动 redis-server.exe redis.windows.conf) 查看当前服务器的主从状态,打开客户端:输入info replication命令来查看当前的主从状态&am…

2023/10/1 -- ARM

今日任务&#xff1a;select实现服务器并发 ser.c&#xff1a; #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8888#define IP "192.168.1.5"int main(int argc, const char *argv[…

ElementUI动态树,数据表格以及分页的实现

目录 前言 一. ElementUI动态树 二. 数据表格和分页 三. 后端代码 service层 controller层 前言 在上一篇博客中实现了左侧菜单栏&#xff0c;在此基础上将它变为动态的&#xff0c;即动态的展示数据库的数据。还有数据表格的实现以及分页。&#xff08;纯代码分享&#…

pyspark常用功能记录

前言 pyspark中很多常用的功能&#xff0c;过段时间没有使用就容易忘记&#xff0c;需要去网上搜索&#xff0c;这里总结一下&#xff0c;省的以后还去去搜&#xff0c;供自己以后参考。 withColumn def hot_func(info_str):if info_str:eturn "1"return "0&…

新闻报道的未来:自动化新闻生成与爬虫技术

概述 自动化新闻生成是一种利用自然语言处理和机器学习技术&#xff0c;从结构化数据中提取信息并生成新闻文章的方法。它可以实现大规模、高效、多样的新闻内容生产。然而&#xff0c;要实现自动化新闻生成&#xff0c;首先需要获取可靠的数据源。这就需要使用爬虫技术&#…

步进电机只响不转

我出现问题的原因是相位线接错。 我使用的滑台上示17H的步进电机&#xff0c;之前用的是57的步进电机。 57步进电机的相位线是A黑、A-绿、B红、B-蓝。 17步进电机的相位线是A红、A-绿、B黑、B-蓝。 这两天被一个问题困扰了好久&#xff0c;在调试步进电机开发板的时候电机发生…

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测

分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测&#xff0…