两种传输层协议TCP和UDP【图解TCP/IP(笔记十二)】

news2024/11/24 1:50:27

文章目录

    • 两种传输层协议TCP和UDP
    • TCP与UDP区分
    • UDP的特点及其目的
    • TCP的特点及其目的

两种传输层协议TCP和UDP

在TCP/IP中能够实现传输层功能的、具有代表性的协议是TCP和UDP。

■ TCP

TCP是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端(例如,在发送端应用程序发送了10次100字节的消息,那么在接收端,应用程序有可能会收到一个1000字节连续不间断的数据。因此在TCP通信中,发送端应用可以在自己所要发送的消息中设置一个表示长度或间隔的字段信息。) 。

TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能。

■ UDP

UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小(例如,发送端应用程序发送一个100字节的消息,那么接收端应用程序也会以100字节为长度接收数据。UDP中,消息长度的数据也会发送到接收端,因此在发送的消息中不需要设置一个表示消息长度或间隔的字段信息。然而,UDP不具备可靠传输。所以,发送端发出去的消息在网络传输途中一旦丢失,接收端将收不到这个消息。) ,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。

TCP与UDP区分

可能有人会认为,鉴于TCP是可靠的传输协议,那么它一定优于UDP。其实不然。TCP与UDP的优缺点无法简单地、绝对地去做比较。那么,对这两种协议应该如何加以区分使用呢?下面,我就对此问题做一简单说明。

TCP用于在传输层有必要实现可靠传输的情况。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以它可以为应用提供可靠传输。

而在一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。我们举一个通过IP电话进行通话的例子。如果使用TCP,数据在传送途中如果丢失会被重发,但这样无法流畅地传输通话人的声音,会导致无法进行正常交流。而采用UDP,它不会进行重发处理。从而也就不会有声音大幅度延迟到达的问题。即使有部分数据丢失,也只是会影响某一小部分的通话(在实时传送动画或声音时,途中一小部分网络的丢包可能会导致画面或声音的短暂停顿甚至出现混乱。但在实际使用当中,这一点干扰并无大碍。) 。此外,在多播与广播通信中也使用UDP而不是TCP。RIP、DHCP等基于广播的协议也要依赖于UDP。

因此,TCP和UDP应该根据应用的目的按需使用。

■ 套接字(Socket)

应用在使用TCP或UDP时,会用到操作系统提供的类库。这种类库一般被称为API(Application Programming Interface,应用编>程接口)。

使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API。套接字原本是由BSD UNIX开发的,但是后被移植到了Windows的Winsock以及嵌入式操作系统中。

应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。

请添加图片描述

UDP的特点及其目的

UDP是User Datagram Protocol的缩写。

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。

即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交由采用UDP的应用程序去处理(由于互联网中没有一个能够控制全局的机制,因此通过互联网发送大量数据时,各个节点将力争不给其他用户添麻烦。为此,拥塞控制成为必要的功能(拥塞控制往往不是因为自身需要)。然而,当不想实现拥塞控制时,有必要使用TCP。) 。UDP有点类似于用户说什么听什么的机制,但是需要用户充分考虑好上层协议类型并制作相应的应用程序。因此,也可以说,UDP按照“制作程序的那些用户的指示行事”。

由于UDP面向无连接,它可以随时发送数据。再加上UDP本身的处理既简单又高效,因此经常用于以下几个方面:

  • 包总量较少的通信(DNS、SNMP等)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)

TCP的特点及其目的

为了通过IP数据报实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。

TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

TCP与UDP的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费(由于UDP没有连接控制,所以即使对端从一开始就不存在或中途退出网络,数据包还是能够发送出去。(当ICMP错误返回时,有时也实现了不再发送的机制。)) 。

根据TCP的这些机制,在IP这种无连接的网络上也能够实现高可靠性的通信。

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

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

相关文章

【C++】C++11 (2): 右值引用、移动构造、移动赋值和模板的可变参数

一、右值引用和移动语义 C11更新后,容器中增加的新方法有插入接口函数的右值引用版本 这些接口的意义在哪?网上都说它们能提高效率,它们是如何提高效率的? 请看下面的右值引用和移动语义的介绍。另外emplace还涉及模板的可变参…

开发跨平台APP,是用Flutter还是React Native开发框架?

随着移动互联网的飞速发展,对于开发人员而言,如何快速地开发出兼容不同平台(iOS、Android)的应用,成为了一个重要的问题。 跨平台应用程序开发框架的好处: 1. 一个App适用于多个设备; 2. 一个…

问一下路过的大神keil5与keil5mdk 的区别是什么?

从Keil C51都Keil5 MDK,不知不觉已经用了Keil十几年。 虽然现在新增了一些开发环境,不过keil对于老工程师来说,应该是最亲切的了… Keil出过很多个版本,很多人最熟悉的是Keil C51和Keil5 MDK。 我们在做STM32程序开发编译的时候…

Centos7安装SDWebui

Centos7安装SDWebui 1.nvidia显卡驱动安装 #查看显卡编号 lspci | grep -i vga#查询显卡型号 http://pci-ids.ucw.cz/mods/PC/10de?actionhelp?helppci#安装依赖包 yum install kernel-devel gcc -y #查看nouveau是否已禁用,如果有内容说明没有禁用 lsmod | gre…

记录一下2023.2kali的默认密码和修改root用户密码的方法

要水一篇博客了…… 默认登录用户名/密码: kali/kali 切换root用户: sudo su 这时输入的密码是kali 然后就切换到了root用户 输入passwd root 提示修改新密码 根据提示输入两遍新密码就修改了root用户的密码啦 (感觉改不改的其实也……无所…

大华监控前端实时预览(踩坑)

难点在后端,前端主要是文档太少了,前端难点主要是接入摄像头,摄像头接入了,剩下什么对讲、调整方向、变焦之类的就简单了。 大华官网:https://open-icc.dahuatech.com/#/home 1.到官网下载插件或者demo,我是…

Xamarin.Android实现界面自动添加控件

目录 1、背景说明2、效果3、代码3.1、UI代码3.2、实现代码 4、代码下载5、相关知识点5.1、原理说明5.2、其他说明 6、参考资料 1、背景说明 有时需要在APP中动态的添加控件,因此记录下在Xamarin中的实现步骤。 VS2022社区版 2、效果 3、代码 3.1、UI代码 UI的代…

文件块读写

写文件: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 功能:以数据块的方式给文件写入内容 参数: :准备写入文件数据的地址ptr : 为 类型,此参数指定写入文件内容的块数据大…

面试官:说说Redis的持久化以及主从同步呗

目录 1、秃顶面试官:今天我们聊了聊redis的主从模式啊~ 2、秃顶面试官:Redis有哪几种方式进行数据的持久化? 3、秃顶面试官:RDB持久化是什么呢?触发机制又是什么呢? 4、秃顶面试官:嗯&#…

海外问卷调查怎么做?要准备什么?

科思创业汇 大家好,这里是科思创业汇,一个轻资产创业孵化平台。赚钱的方式有很多种,我希望在科思创业汇能够给你带来最快乐的那一种! 海外问卷调查业务一直存在。与国内不同,国外有大量的支付问卷资源,所…

一招永久解决github上不去问题,秒开

步骤 进入如下路径,把hosts复制到桌面 在桌面将hosts以记事本方式打开,复制下面内容,退出保存 20.205.243.166 github.com # GitHub Start 140.82.114.4 github.com 199.232.69.194 github.global.ssl.fastly.net # GitHub End3. 将修改好…

S7-200 SMART PLC PID向导详细介绍(如何实现P、PD、PID控制器)

这篇博客主要介绍SMART PLC PID向导的使用,PID控制相关的其它内容请查看专栏系列文章,常用链接如下: SMART PLC PID负压控制(过程量为负数)_负压控制pid控制程序_RXXW_Dor的博客-CSDN博客1、如何实现PID反作用调节? 在有些控制中需要PID反作用调节。例如:在夏天控制空调…

doubletrouble1靶场详解

doubletrouble1靶场复盘 首先扫描到ip后对ip单独一个全面扫描。 nmap -sP 192.168.102.0/24同时扫描一下目录,扫到一个secret,打开看一下。 dirsearch -u http://192.168.102.165发现里面是一个图片,下载到我们kali 中去,因为都…

关于E-PGM+ 烧录器烧录失败的原因分析

最近在调试A96L416方案的一款产品,发现有时候无法烧录成功,当然多数时候你可以通过: 1.多试几次 2.替换烧录线 3. 替换烧录器 予以解决。 但我试了上述方法发现问题依旧,该设备A之前还烧录过,所以我并没有怀疑设…

C#基础学习_集合中对象的排序

C#基础学习_集合中对象的排序 基本数据类型的排序: 集合名.Sort(); //通过Sort方法进行排序,默认按照英文的字母先后顺序集合名.Reverse(); //通过Reverse方法进行排序,按照英文字母倒序进行排列对象类型的元素排序: 因为对象有若干个属性,所以执行排序时应该指定按照哪一…

海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储

文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131679108 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

c++方向服务器开发和数据库哪个更好?

选择C方向的服务器开发还是数据库开发,取决于你的兴趣、职业目标以及行业需求。以下是一些考虑因素: 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 服务器开发: 兴趣和技能:如果你对网络编程、分布式系统…

【万字解析】JS逆向由浅到深,3个案例由简到难,由练手到项目解析(代码都附详细注释)

目录 介绍简单案例简单案例二项目实战案例-某查查 介绍 大家好,我是辣条哥! 今天给大家上点难度,不然总觉得辣条哥太菜了!我们今天聊聊JS逆向,首先JS逆向是指对使用JavaScript编写的代码进行逆向工程,以获…

JAVA数据结构—飞机售票系统

飞机售票系统 1. 题目要求: 1.1 通过该系统可以实现如下功能。 录入功能:可以录入航班情况。 查询功能:可以查询某个航线的情况,如输入航班号,可以查询起降时间、起飞抵达城市、航班票价、票价折扣、确定航班是否满…

我爱学QT-QT上位机开发之串口助手-上

学习链接: QT上位机开发之串口助手(上)_哔哩哔哩_bilibili 一.QT下的串口编程 1.qt下的串口编程 2.qt下的网络编程 3.qt下操作GPIO 二.仿写串口助手 步骤一.做好UI界面 接收窗口组件: 选择窗口组件: 发送窗口组…