[计算机网络]TCP与UDP

【计算机网络】UDP协议与TCP协议 本文介绍了UDP协议:1.UDP协议端格式2.UDP的特点3.面向数据报4.UDP的缓冲区,5.UDP使用注意事项6.基于UDP的应用层协议 TCP协议:1.TCP协议段格式2.确认应答(ACK)机制3.超时重传机制4.连接管理机制5.理解TIME_WAIT状态6.理解CLOSE_WAIT状态7.流量控制8.滑动窗口9.拥塞控制10.延迟应答11.捎带应答12.面向字节流13.粘包问题14.TCP异常情况15.基于TCP应用层协议以及理解listen的第二个参数 阅读详情

面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片,降低效率。若太短,会是IP太小。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。

TCP协议


  • Transmission Control Protocol,传输控制协议
  • 面向连接的协议
  • 需要三次握手建立连接
  • 需要四次挥手断开连接
  • TCP报头最小长度:20字节

三次握手的过程:


  1. 客户端发送:SYN = 1, SEQ = X, 端口号
  2. 服务器回复:SYN = 1, ACK = X + 1, SEQ = Y
  3. 客户端发送:ACK = Y + 1, SEQ = X + 1

确认应答信号ACK = 收到的SEQ + 1。
连接建立中,同步信号SYN始终为1。连接建立后,同步信号SYN=0。

四次挥手过程


  1. A向B提出停止连接请求,FIN = 1
  2. B收到,ACK = 1
  3. B向A提出停止连接请求,FIN = 1
  4. A收到,ACK = 1

优点:


  • 可靠,稳定
    1、传递数据前,会有三次握手建立连接
    2、传递数据时,有确认、窗口、重传、拥塞控制
    3、传递数据后,会断开连接节省系统资源

缺点:


  • 传输慢,效率低,占用系统资源高
    1、传递数据前,建立连接需要耗时
    2、传递数据时,确认、重传、拥塞等会消耗大量时间以及CPU和内存等硬件资源

  • 易被攻击
    1、因为有确认机制,三次握手等机制,容易被人利用,实现DOS 、DDOS攻击

如何保证接收的顺序性:


TCP协议使用SEQ和ACK机制保证了顺序性
TCP的每个报文都是有序号的。确认应答信号ACK=收到的SEQ+1

UDP协议


  • User Data Protocol,用户数据包协议
  • 面向无连接的协议
  • UDP报头只有8字节

简介:


  • 传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快的把它扔到网络上
  • 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制
  • 在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段
  • 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息
  • UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小
  • 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制
  • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表。
  • UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

优点:


  • 传输速率快
    1、传输数据前,不需要像TCP一样建立连接
    2、传输数据时,没有确认、窗口、重传、拥塞控制等机制

  • 较安全
    1、由于没有了TCP的一些机制,被攻击者利用的漏洞就少了

缺点:


  • 不可靠,不稳定
    1、由于没有了TCP的机制,在数据传输时如果网络不好,很可能丢包

用UDP协议通讯时怎样得知目标机是否获得了数据包


仿造TCP的做法,每发一个UDP包,都在里面加一个SEQ序号,接收方收到包后,将SEQ序号回复给发送方。如果发送方在指定时间以内没有收到回应,说明丢包了。

TCP与UDP的区别


TCP面向有链接的通信服务UDP面向无连接的通信服务
TCP提供可靠的通信传输UDP不可靠,会丢包
TCP保证数据顺序UDP不保证
TCP数据无边界UDP有边界
TCP速度快UDP速度慢
TCP面向字节流UDP面向报文
TCP一对一UDP可以一对一,一对多
TCP报头至少20字节UDP报头8字节
TCP有流量控制,拥塞控制UDP没有

为什么UDP比TCP快


  1. TCP需要三次握手
  2. TCP有拥塞控制,控制流量等机制

为什么TCP比UDP可靠


  1. TCP是面向有连接的,建立连接之后才发送数据;而UDP则不管对方存不存在都会发送数据。
  2. TCP有确认机制,接收端每收到一个正确包都会回应给发送端。超时或者数据包不完整的话发送端会重传。UDP没有。因此可能丢包。

什么时候使用TCP


当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
在日常生活中,常见使用TCP协议的应用如下:
浏览器,用的HTTP
FlashFXP,用的FTP
Outlook,用的POP、SMTP
Putty,用的Telnet、SSH
QQ文件传输

什么时候应该使用UDP:


当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。
比如,日常生活中,常见使用UDP协议的应用如下:
QQ语音
QQ视频
TFTP

TCP无边界,UDP有边界


TCP无边界

客户端分多次发送数据给服务器,若服务器的缓冲区够大,那么服务器端会在客户端发送完之后一次性接收过来,所以是无边界的;

UDP有边界

客户端每发送一次,服务器端就会接收一次,也就是说发送多少次就会接收多少次,因此是有边界的。

计算机网络——第四层:传输层以及TCP UDP 接收方收到的数据将保持发送方发送时的数据结构,即数据的边界是对齐的。这与TCP不同,TCP会将所有发送的数据作为一个连续流处理,接收方可能会在一个单独的数据块中接收到部分或全部数据,而不一定保持原始消息的边界。为了解决这个限制,RFC 1323 引入了窗口缩放选项,它允许窗口大小字段的值乘以2^n(其中n是窗口缩放因子,最高可到14),从而允许更大范围内的窗口大小,增加了流量控制的灵活性。通过只重传丢失的数据,而不是连续的数据序列,它减少了不必要的网络流量和可能的拥塞,从而提高了TCP连接的整体性能。 阅读详情

相关推荐

计算机网络运输层——TCP、UDP

计算机网络(大二笔记)

OldBowl 640

Android中tcp和udp的区别,tcp和udp使用总结

TCP与Udp的区别tcp:TCP 是面向连接的,并且是一种可靠的协议,在基于 TCP 进行通信时,通信双方需要先建立一个 TCP 连接,建立连接需要经过三次握手,握手成功才可以进行通信1、基于连接的,可靠性高2、有连接过程(3次握手过程),会有延时,实时性较差,3、传输相同的数据时,TCP首部开销20字节;UDP的首部开销小,只有8个字节,TCP报头比UDP复杂,故实际包含的用户数据较少。TCP...

weixin_42502448的博客 1605

计算机网络--TCP、UDP抓包分析实验

1掌握使用wireshark工具对UDP协议进行抓包分析的方法,掌握UDP协议的报文格式,掌握UDP协议校验和的计算方法,理解UDP协议的优缺点,通过实验,进一步了解UDP协议;2掌握使用wireshark工具对TCP协议进行抓包分析的方法;通过实验,进一步了解TCP协议。Windows11系统UDP是一种简单的面向数据报的传输层协议,与TCP相比,它不提供可靠性、顺序传输或拥塞控制。UDP的主要特点:无连接。发送数据之前不需要建立连接。使用尽最大努力交付。即不保证可靠交付。面向报文。

shenzhou17的博客 5081

android ------- TCP与UDP

TCPTCP(Transmission Control Protocol,传输控制协议) 即传输控制协议,是一种传输层通信协议 特点:面向连接、面向字节流、全双工通信、可靠 面向连接:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立一条连接,打完后挂机释放连接。全双工通信:即一旦建立了TCP连接,通信双方可以在任何时候都能发送数据。可靠的:指的是通...

切切歆语的博客 2988

微信内置浏览器抓包全攻略:从ADB配置到Chrome调试(附常见问题解决)

本文提供了一套完整的微信内置浏览器抓包与调试解决方案。从ADB工具的深度配置与稳定性连接开始,详细讲解了如何开启X5内核调试开关,并利用Chrome DevTools建立远程连接。文章重点剖析了Network面板进行网络请求抓取、性能分析和问题定位的实战技巧,并附带了设备连接失败、无网络请求等常见问题的排查指南,帮助开发者高效解决微信H5页面调试难题。

gitlab7runner的博客 541

PHP证书图片生成

$realname = "姓名"; $schoolname = "学校"; $idcard = "身份证号"; $image = imagecreatefrompng('certification.png'); // 证书模版图片文件的路径 $red = imagecolorallocate($image,00,00,00); // 字体颜色

4036

TCP、UDP区别

在Android开发中,使用TCP和UDP的基本原理与一般网络通信协议相同,但在Android平台上的实现可能涉及一些特定的操作和库。

haliha16的博客 188

提升仿真效率:Synopsys VCS高级编译选项优化技巧(2023最新版)

本文深入探讨了Synopsys VCS 2023版本中的高级编译选项优化技巧,帮助工程师提升仿真效率。通过并行编译、智能代码分析、精准覆盖率采样等策略,结合真实案例展示如何显著缩短仿真周期并优化资源使用,适用于数字芯片验证和大型SoC设计。

weixin_30338481的博客 113

TCP和UDP的区别

TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证  UDP应用场景:1.面向数据报方式 2.网络数据大多为短消息 3.拥有大量Client 4.对数据安全性无特殊要求 5.网...

weixin_30817749的博客 2721

南京理工大学计算机预推免面试(双非重点关注)

南京理工大学总体来说对双非学校比较友好,上岸率比较高,而且面试形式是线上,在预推免的过程中,可以作为重点关注的学校,但是一定要注意南理报名截止的时间,部分学校可能保研名额公示的比较晚,对于保研边缘人来说很可能会错过,我的建议是,即使不确定能否拿到保研名额,先查一下截止时间,先在系统上报名!!一旦拿到了offer,就是铁的,保底专硕,而且有很大的技巧性,一定要认真看哈!!!每个人的情况可能都不一样,如果有需要帮忙可以私我~~~

D1379951481的博客 2017

【x265编码器】章节1——x265的lookahead模块分析

目录一、模块功能二、lookahead模块分析1.调用流程2.代码分析Lookahead::addPicture()Lookahead::checkLookaheadQueue()Lookahead::getDecidedPicture()Lookahead::findJob()Lookahead::slicetypeDecide()PreLookaheadGroup::processTasksLookaheadTLD::lowresIntraEstimate()Lookahead::slicetypeAn

vcvdv123的博客 4万+

TCP和UDP区别,以及介绍TCP协议如何保证可靠传输

一、TCP和UDP区别 TCP是面向连接,传输可靠,以字节流的形式传输,传输效率慢,所需资源多,应用在要求通信数据可靠的场合,首部字节20-60. UDP面向无连接,传输不可靠,以数据报文段的形式传输,传输效率快,所需资源多,应用在要求通信速度高的场合,首部8个字节。 UDP在传输之前不需要先建立连接,远地主机在收到UDP报文后,不需要给出任何确认。虽然UDP不提高可靠传输,但在某些情况下UDP确是一种最有效的工作方式(一般用于即时通信),比如qq语音,直播。 TCP提供面向连接的服务。在传送数据之前必须先

weixin_42974146的博客 1341

Python爬虫实战:如何爬取京东商品评论数据

在本文中,我们介绍了如何使用 Python 爬虫技术爬取京东商品的评论数据。首先,我们分析了京东商品评论的 API 接口和 JSON 数据结构,然后编写了爬虫程序来抓取评论数据,并将数据保存到 CSV 文件中。接着,我们进行了一些基本的数据分析,包括评分分布和简单的情感分析。爬取京东商品评论的数据可以为电商分析、情感分析等提供有价值的信息。你可以在此基础上进行更深入的分析,挖掘更多的商业价值。希望本篇教程能够帮助你了解如何利用 Python 进行电商数据的爬取和分析!

2201_76125261的博客 1646

计算机网络TCP与UDP——针对实习面试

本文针对即将实习面试的同学,总结了计算机网络中TCP与UDP相关的面试题及其知识点,希望对大家有所帮助😀

清酒伴风的博客 1286

基于STM32的智慧农业大棚监测与控制系统设计与实现

摘要:本文设计了一种基于STM32F103C8T6单片机的智慧农业大棚监测与控制系统,集成多参数环境监测、智能控制和远程管理功能。系统可实时采集光照、CO2、温湿度和土壤湿度等参数,通过OLED显示并采用双模式控制机制:自动模式下根据阈值调节设备,手动模式下支持APP或按键控制。通过ESP8266模块接入机智云平台实现数据云存储和远程控制。测试表明系统具有高精度(温度±0.5℃、CO2±50ppm)、快速响应(<2s)和稳定运行(30天无故障)等特点,有效解决了传统大棚调控不及时等问题。创新点包括多参

3254968421的博客 484

反应堆设计:基于MATLAB的反应堆仿真和分析,包括反应堆稳态分析、反应堆动态分析和反应堆安全分析 介绍

反应堆设计是利用计算机技术对核反应堆进行设计和模拟,以获得安全、高效、经济的核能发电系统。它是核能领域的重要组成部分,在电力生产、核医学、科学研究等领域有着广泛的应用。

走向CTO的路上... 1112

【计算机网络】传输层协议TCP与UDP

传输层的作用以及对应协议的特点(TCP与UDP)

qq_64751004的博客 3667

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【计算机网络】传输层——TCP和UDP详解

TCP(Transmission Control Protocol):中文名为传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP(User Datagram Protocol):中文名为用户数据报协议,是一种无连接、不可靠的、面向数据报的传输层通信协议。TCP是有连接的,UDP是无连接的TCP提供可靠传输,UDP提供不可靠传输TCP数据传输面向字节流,UDP面向数据报TCP和UDP都是全双工的(共同点)有连接 VS 无连接。

一直往前走。 9906

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机网络_UDP和TCP的区别

以铜为镜可以正衣冠,以史为镜可以明得失,以文为镜可以修内功,本系列我们来说说计算机网络,修修内功以识这巨大的“网”。 目录一、为什么要了解二、UDP的特点三、TCP的特点四、总结 一、为什么要了解 身处于巨大的万维网中,我们每天通过各种终端与他人保持着联系,可以说现代社会中,没有人会脱离计算机网络而独立存在。我们是怎样与他人保持联系的,我们的终端如何将信息发送到服务器的,这无不关乎计算机网络。 运输层是计算机网络体系结构中非常关键的层次之一,主要有两个协议:用户数据报协议UDP和传输控制协议TCP。协议.

wuxeek的博客 348

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《计算机网络》--TCP/UDP协议

推荐大家去看这本谢仁希老师的计算机网络,内容讲的很清楚很好,细细的看可以收获很多。 文章目录1. 传输层1. 传输层作用2. TCP和UDP协议3. UDP协议的特点4. UDP协议的首部格式5. TCP协议的特点6. TCP可靠传输的原理6.1 停止等待协议6.2 连续ARQ协议7. TCP报文段的首部格式8. TCP可靠传输的实现9. 流量控制10. TCP的拥塞控制11. TCP连接建立12. TCP连接的释放2. 应用层1. 超文本传输协议HTTP2. HTTP的报文结构 1. 传输层 1. 传输层

你今天真好看呀 1013

【计算机网络】UDP/TCP协议

本文讲解计算机网络中传输层的UDP/TCP协议相关知识!!!提示:以下是本篇文章正文内容,下面案例可供参考希望本篇文章能给各位带来帮助,如有不足还请指正!!!!!三连走一波!!!

wzd547191555的博客 1604

计算机网络运输层( 进程间的通信、TCP、UDP)

只有位于网络边缘部分的主机的协议栈才有运输层,和网络层不同,网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。 TCP/IP 的运输层有两个主要协议: 用户数据报协议 UDP (User Datagram Protocol) 传输控制协议 TCP (Transmission Control Protocol)

龙源IT 的博客 7368

计算机网络知识速记:TCP 与 UDP

一个面向连接的协议,确保数据在传输过程中完整无误。通过建立连接和数据确认机制,提高数据传输的可靠性。是面向字节传输的。一个无连接的协议,不保证数据的完整性和顺序。主要用于需要快速传输且不要求确认的场景。是面向报文传输的。

无限大的博客 1902

计算机网络 tcp和udp

计算机网络 tcp和udp

水w的博客 1840

计算机网络基础知识之HTTP、TCP、UDP协议详解,看这篇就够了

TCP、UDP、HTTP协议详解

只为code醉的博客 2357

【计算机网络】传输层协议(UDP && TCP)

目录1. 端口号 端口号的划分 2. UDP UDP协议格式在系统中的描述缓冲区使用注意事项3. TCP 缓冲区 TCP协议格式 标记位 面向字节流 确认应答机制流量控制 超时重传 连接管理滑动窗口 延迟应答 捎带应答快重传 拥塞控制粘包问题 TIME_WAIT状态总结再来聊一聊端口号:接收的报文到了传输层(tcp/udp),要向上交付到应用层,应用层的程序有很多,比如(自己写的服务,http、https...)数据要传个哪个程序?这时就需要port来进行标识 ;在TCP/IP协议中,用 "源IP","源端

2202_75605090的博客 2010
上一篇: [网络基础]网络基础篇
下一篇: [读书笔记]《Android开发艺术探索》第二章笔记
陶程
博客等级 码龄12年 360粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值