传输层:剖析TCP和UDP协议

什么是TCP和UDP 

TCP和UDP是TCP/IP协议中的两个传输层协议,它们使用IP路由功能把数据包发送到目的地,从而为应用程序及应用层协议(包括:HTTP、SMTP、SNMP、FTP和Telnet)提供网络服务。TCP提供的是面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。面向连接的协议在任何数据传输前就建立好了点到点的连接。ATM和帧中继是 面向连接的协议,但它们工作在数据链路层,而不是在传输层。普通的音频电话也是面向连接的。 


可靠的传输协议可避免数据传输错误。其实现方式是:在构造数据包时在其中设置校验码,到达目的地后再采用一定的算法重新计算校验码,通过比较二者,就可以找出被破坏了的数据。因为需要重发被破坏了的和已经丢失的数据,所以在需要重发数据时协议必须能够使目的地给出源头的一个确认信号。有些数据包不一定按照顺序到达,所以协议必须能够探测出乱序的包,暂存起来,然后把它们按正确的次序送到应用层中去。另外,协议还必须能够找出并丢弃重复发送的数据。一组定时器可以限制针对不同确认的等待时间,这样就可以开始重新发送或重新建立连接。 


数据流传输协议不支持位传输。TCP不能在一个包内以字节或位为单位构造数据,它只负责传输未经构造的8位字符串。 


非面向连接的传输协议在数据传输之前不建立连接,而是在每个中间节点对非面向连接的包和数据包进行路由。没有点到点的连接,非面向连接的协议,如UDP,是不可靠的连接。当一个UDP数据包在网络中移动时,发送过程并不知道它是否到达了目的地,除非应用层已经确认了它已到达的事实。非面向连接的协议也不能探测重复的和乱序的包。标准的专业术语用“不可靠”来描述UDP。在现代网络中,UDP并不易于导致传输失败,但是你也不能肯定地说它是可靠的。 


TCP工作流程 

现在让我们一起来看看TCP段的各个域,在IP包中它们紧跟在IP头部信息之后。第一个16位确认了源端口,第二个16位确认了目的端口。端口的划分使IP主机之间可用单个的IP地址实现不同类型的并发连接。在绝大多数现代操作系统中,采用32位IP地址和16位端口地址的组合来确认一个接口。源接口和目的接口的组合就定义了一个连接。有216或65536个可能的端口。最低的1024个端口是常用的,它们是系统为特定的应用层协议所保留的默认设置。如:默认状态下,HTTP使用端口80,而POP3使用端口110。其它的应用可以使用编号更高的端口。 


在接下来的两个域中,序列号和确认号是TCP实现可靠连接的关键。当建立一个TCP连接时,发送方主机发出一个随机的初始化序列号给初始化器,初始化器将其加1后送回确认域的起始器,这意味着下一个字节可以发送了。一旦数据开始流动,序列号和确认号将跟踪已发送了那些数据,那些数据已被确认。因为每个域都是32位,总共可以有232个值,所以每个域的范围是:0~4294967295,当超过上限时回到0。 


4位的偏移量代表TCP头部一共有多少个32位的信息。这个信息是必不可少的,因为有可选的头部区域,偏移量标识了头部的结束和数据的开始。 

TCP的设计者保留了接下来的6位,以防万一将来要对其进行扩展。实际上,自从RFC793(传输控制协议)1981年发布以来,还没人有恰当的理由使用这些位,在这一点上,Jon  Postel和他的同事一定是过分谨慎了。 


随后的6位每个都是一个标志。若UNG标志位的值为1,意味着远在头部紧急指针区域的数据是有效的;若ACK标志位的值为1,则意味着确认号区域中的数据是有效的。(注意:一个SYN包有一个有意义的序列号,但它的确认号是无意义的,因为它并不确认任何事件)PSH标志位使数据不必等待发送和等待接收。RST标志位将断开一个连接。SYN(同步)标志位意味着序列号是有效的,FIN(结束)标志位将指出发送方已经发完了数据。

 

16位长的窗口区域表示了“滑动窗口”的大小,也就是告诉发送方它已经准备好接收多少个字的数据。TCP通过调整窗口的大小来控制数据的流量。一个值为0的窗口意味着通告发送方:如果没有进一步的通知,接收器已满,不能再接收更多的数据了。大的窗口可以确保在任何给定的时间传输多达65536个未经确认的字节,但是,当重发定时器超时且又没有得到接收确认时,窗口将减半,从而有效地降低传输速率。 


16位的校验码区域保证了数据的完整性,保护了TCP头部和IP头部的各个区域。发送方计算校验值并把它插入这个区域,接收方根据收到的包重新计算该值并比较二者,如果它们是匹配的,则认为数据是完整无损的。 


当设置紧急标志位时,紧急指针是一个16位的偏移量,它代表必须加快的最后一个字。选择区域可以容纳0或多个32位字,可扩展TCP的性能。大多数常用的选择区域支持大于65536字节的窗口,从而缩短了等待确认的时间,尤其是在高传输率时。 


TCP的传输机构有多个定时器。当一个包发送时,重发定时器开始计数;当收到确认信号后,重发定时器停止计数。如果超过设定时间段还没有收到确认信号,就重发该包。一个比较棘手的问题是如何设置该时间段。如果太长,当网络传输错误增加时将导致不必要的等待时间;如果太短,就会产生过多的重复包从而降低网络的反应时间。现代TCP协议根据实际情况对重发定时器进行动态设定。 


持续定时器对于避免死锁是必不可少的。如果网络收到了一个大小为0的窗口确认并且丢失了随后的重发数据的确认,持续定时器将超时并发送一个探针。探针的回应将指出窗口的大小(也许仍为0)。保持定时器在本端没有任何活动后,将检查在连接的另一端是否还有运行的进程。如果没有任何回应,该定时器将断开连接。 


当断开一个连接时,断开连接定时器将包的最大生命期加倍。该定时器在连接断开之前确保流量最大。 


不管重发过程执行得多么有效,很少的丢失包就能严重地降低TCP连接的流量。每个未收到的包或包的片段只会在重发定时器超时的时候才会丢失。在数据重发时,接收过程一直在递送这些重发的数据,这样就使总体的数据传输陷于停顿,直到丢失的数据被取代为止。这些重发过程导致基于TCP的连接有时处于不稳定状态。 


TCP与UDP的选择 

如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。(许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。) 


很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。

传输层协议分析1 传输层----及访问控制列表ACL一、传输层协议:1)TCP/IP协议族的传输层协议主要有两个:TCP(Transmission Control Protoco 立即下载

相关推荐

Python与西门子PLC数据交互实战:基于Snap7的跨平台工业通信指南

本文详细介绍了如何使用Python和Snap7库实现与西门子PLC的数据交互。内容涵盖跨平台环境搭建、连接参数配置、数据读写实战及性能优化技巧,为工业自动化、数据采集和智能制造场景提供了一套轻量、灵活且高效的通信解决方案。

vim8coder的博客 291

TCP/IP协议简介

<br />TCP/IP协议简介<br /> 8.1.1 网络基础知识<br /><br /> 计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议<br /><br /> 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的

chenhongxin的专栏 1462

避坑指南:时间序列互相关分析(CCF)常见的5个误用场景

本文详细解析了时间序列互相关分析(CCF)中常见的5个误用场景,包括忽视平稳性检验、混淆同期相关与因果关联、误读滞后阶数、忽略自相关干扰以及样本量不足等问题。通过实际案例和技术建议,帮助数据分析师避免这些陷阱,确保CCF分析的准确性和可靠性。

weixin_29064009的博客 429

tcp/ip协议 卷一知识点整理

一、TCP/IP参考模型   ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。             图2-1  TCP/IP参考模型   2.1 TCP/IP参考模型的层次结构   TCP/IP协议栈是美国国防部高级研究计划局计算机网(

Invoker's Tower 5830

xctf攻防世界 MISC高手进阶区 low

1. 进入环境,下载附件 给出的一张bmp图片,没有其他信息 2. 问题分析 扔进binwalk中,没有发现有用信息 使用zsteg,没有有用信息 塞入StegSolve中,发现有点猫腻,如图: 有点二维码的感觉,emmm,需要像素处理,但不知道如何下手,参考网上的wp,发现是让使用lsb隐写,copy代码: from PIL import Image img = Image.open('./pic/low.bmp') img_tmp = img.copy() pix = img_tmp.load()

l8947943的博客 1万+

信捷CODESYS平台伺服电机转矩控制模式应用与切换

信捷CODESYS二次开发软件:XS Studio 在运动控制中的转矩控制案例

weixin_64614866的博客 1万+

tcpip运输层不同的两个协议_计算机网络第五章 运输层重要考点

有个问题是,填空题和选择题真的很细节,还是得读书才行一、运输层主要提供的服务TCP 和UDPTCP——报文段「重点」面向连接的服务可靠数据传输服务:流量控制、序号、确认和定时器技术 n 差错检测手段:检验和、累计确认、超时拥塞控制:大小可变的滑动窗口UDP——数据报提供无连接的服务,每个数据报都是独立的,提供最小服务。n 原则:尽力服务,流量不可调节TCP和UDP的区别1.多路复用和多路...

weixin_34577501的博客 1022

保姆级教程:从 TLE 数据源获取到 Cesium 卫星轨迹可视化全流程(含常见报错排查)

本文提供从TLE数据源获取到Cesium卫星轨迹可视化的全流程保姆级教程,涵盖数据预处理、satellite.js计算、Cesium集成及性能优化等关键步骤,并针对常见报错提供详细排查方案,帮助开发者高效实现卫星轨迹可视化。

weixin_29002595的博客 296

计算机网络tcpip5层协议总结,TCPIP协议分析总结

详细知识点总结第一章 计算机网络基础1.协议是指在计算机网络中,为进行网络中的数据交换而建立的规则、标准或约定的集合,如交换数据的格式、编码方式、同步方式等。协议定义了通信的方式和进行通信的时间,主要包括语法、语义和同步3个关键要素。 语法:定义了所交换数据的格式和结构,以及数据出现的顺序。语义:定义了发送者或接受者所要完成的操作,包括对协议控制报文组成成分含义的约定。 同步:定义了事件实现顺序以...

weixin_39601511的博客 733

RK3588与FocalTech触摸屏代码适配全解析:从原理到实战

摘要:本文详细介绍了瑞芯微RK3588处理器与FocalTech触摸屏的适配过程,包括硬件特性、驱动加载、设备树配置和常见问题解决方案。RK3588作为8nm工艺的高性能处理器,具备强大的计算能力和丰富的接口资源;FocalTech触摸屏则采用电容式技术,支持I2C/SPI接口。适配关键步骤包括驱动程序加载、硬件连接检查、设备树配置和内核版本兼容性处理,并提供了代码示例和问题排查方法。随着嵌入式设备智能化发展,该适配技术将持续优化,为智能交互提供更优解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 273

使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤

本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 997

网络:TCP/UDP;HTTP/HTTPS;Socket,WebSocket;UnityWebRequest

HTTP/HTTPS 与 TCP/UDP 是计算机网络中,它们共同协作以实现互联网通信。

无 841

华为OD机试 - 字符串筛选排序 - 数组(Python/JS/C/C++ 双机位C卷 100分)

k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引。输入一个由N个大小写字母组成的字符串,按照ASCII码值从小到大进行排序,查找字符串中第K个最小ASCII码值的字母(k>=1)。k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,如果有重复字母则输出字母的最小位置索引。输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引。第二行输入k ,k必须大于0 ,k可以大于输入字符串的长度。

学Java,找哪吒 1392

一篇把 TCP 和 UDP 讲明白

摘要: TCP和UDP是两种截然不同的传输层协议。TCP通过三次握手建立可靠连接,提供有序、确认重传的字节流传输,适合网页、文件下载等场景。UDP则无连接、无确认机制,以数据报形式快速传输,保留消息边界但不保证可靠性,更适合实时性要求高的语音、视频和游戏场景。两者的核心区别在于TCP追求"稳稳送到"而UDP追求"尽快送出",选择时需根据业务需求权衡可靠性与实时性。理解这两种协议的底层机制,有助于在实际开发中做出合理选择。

2503_92784774的博客 972

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【网络】传输层--UDP/TCP协议

UDP协议又叫用户数据报协议,属于传输层协议,它是一种无连接、不可靠、面向数据包的一种协议。核心作用是实现两台设备上应用程序的端到端数据传输。知道对方IP+port就直接进行通信,不需要进行连接。没有确认/重传机制,入果传输的数据报在网络中丢失,将没有任何错误返回。数据被打包成一个个独立的“数据包”,每个数据包都是独立的、完整的,互不关联。

2301_80820096的博客 417

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

通信网络基础(下篇):TCP/IP网络参考模型与传输层协议深度解析

TCP/IP模型是互联网事实上的标准架构,采用四层结构,相比OSI七层模型更加简洁实用。各层各司其职,共同完成端到端的数据通信。核心功能:提供IP地址服务主要职责:寻址转发、定位设备、路由选择关键协议应用层直接面向用户,提供HTTP、Telnet、FTP等服务接口传输层是核心战场,TCP用可靠性换取信任,UDP用效率换取速度网络层负责寻址和路由,让数据找到正确的目的地数据链路层处理物理介质的封装,完成最终的数据帧传输掌握TCP三次握手、四次挥手及滑动窗口机制,是网络工程师面试和排障的必备技能。

guoxuying的博客 419

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

UDP协议和TCP协议

在之前的中,我们使用UDP和TCP套接字分别写了一个回显服务器,但是在这篇博客中,我会对UDP协议和TCP协议的格式进行主要的介绍。

哈哈哈哈的博客 901

OSI/RM TCP/IP TCP/UDP协议

OSI/RM TCP/IP 网络参考模型   网络二层和三层的区别 TCP协议 UDP协议 TCP连接三次握手四次挥手 常用的TCP端口号及其功能

qq_64989820的博客 471

传输层协议详解

本文主要介绍了TCP/IP网络协议栈的基础概念和传输层核心协议TCP。文章首先阐述了网络基础概念,包括IP地址、端口号、协议、五元组以及协议分层模型,重点说明了TCP/IP五层模型的结构和各层功能。随后详细解析了TCP协议,从格式、安全机制(确认应答、超时重传、连接管理)和效率机制(滑动窗口、流量控制、拥塞控制、延迟应答等)两方面展开,深入分析了三次握手、四次挥手的工作流程及设计原理,并解释了粘包问题的成因。全文系统性地梳理了TCP协议的核心特性和工作机制,为理解网络通信提供了理论基础。

Cwb154748854的博客 678

TCP VS UDP

TCP与UDP是传输层两大核心协议,设计理念迥异:TCP通过复杂机制(三次握手/四次挥手、序列号确认、流量控制等)实现可靠传输,面向连接;UDP则保持极简设计(8字节头部),提供无连接不可靠服务,保留报文边界。两者在协议栈中位于网络层之上,TCP增强IP的可靠性,UDP则直接暴露IP特性。TCP头部至少20字节含丰富控制字段,UDP仅含端口和校验信息。三次握手确保连接可靠建立,四次挥手实现全双工连接有序关闭。

古典码 487

UDP和TCP原理

<think>我们根据要求,需要生成一个≤150字的文章摘要。文章内容是关于UDP和TCP的协议详解,包括端口、报文格式、可靠性、滑动窗口、三次握手等。摘要需要概括核心内容。注意字数限制。需要简洁。 先梳理主要内容:文章介绍了UDP传输层特点(无连接、不可靠、面向数据报),端口号五元组,UDP报文格式,以及TCP协议(可靠传输、序号确认、超时重传、流量控制、连接管理标志位等)。摘要要涵盖这些,但字数有限,所以用简洁语言概括。 可能结构:UDP提供无连接不可靠的数据报服务,通过端口号标识应用;TC

keyipatience的博客 372

【网络】6.UDP和TCP原理

机制作用校验和检测数据是否损坏序列号按序交付、去重确认应答确认数据已收到超时重传处理丢包连接管理三次握手、四次挥手流量控制防止接收方被淹没拥塞控制防止网络被淹没。

m0_68617924的博客 456

深入浅出端到端传输协议:TCP与UDP的终极指南

在计算机网络的七层模型中,传输层(Layer 4)位于网络层之上,应用层之下。它的核心使命是提供进程到进程(Process-to-Process)的通信服务。网络层(IP)的局限: 网络层(如IP协议)只负责把数据包从一台主机(Host)送到另一台主机。它就像邮递员,只负责把信件投递到大楼的收发室,而不管这封信具体是给大楼里的谁。传输层的使命: 传输层接管了“最后一公里”的任务。它负责将数据从主机的网络接口分发到具体的应用程序(进程)。

weixin_62533513的博客 785

网络编程-详解TCP和UDP

1.tcp协议2.tcp协议的实现流程2.1服务器端相关函数2.2代码(客户端和服务器端)3.udp协议实现辅助函数(地址处理)3.1函数实现3.2代码4.tcp协议的应用4.1http协议4.2http协议实现的流程4.2myhttp协议5.tcp协议和udp协议的特点6.tcp/ip协议中常见的问题6.1透彻理解三次握手和四次挥手5.2为什么采用三次握手而非两次握手?5.3四次握手为什么可以变为三次?5.4time_wait问题5.3粘包问题和解决方法。

2302_80401830的博客 642

TCP/IP协议栈:互联网通信核心揭秘

本文深入解析TCP/IP协议栈的分层结构、核心协议的工作原理、交互机制及其在互联网通信中的关键作用。探讨各层的职责、协议细节、常见问题及前沿发展。TCP/IP、网络分层、IP协议、TCP协议、UDP协议、路由、数据传输、网络互连。

llslnsimn的博客 461

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

传输层协议UDP和TCP的核心机制解析 UDP协议采用极简设计,固定8字节报头实现快速传输,支持多播但不可靠,适用于实时应用。TCP协议通过复杂机制确保可靠性: 连接管理:三次握手建立可靠连接,四次挥手确保双向关闭 流量控制:滑动窗口动态调整发送速率 拥塞控制:慢启动和拥塞避免算法平衡网络负载 可靠传输:序列号/确认号机制、超时重传和快速重传 状态管理:TIME_WAIT状态防止旧连接干扰 关键差异:UDP侧重传输效率(视频会议/DNS),TCP保证数据完整(网页浏览/文件传输)。TCP通过窗口缩放、时间戳

wefg1的博客 672
上一篇: 几个经典的博弈问题
下一篇: 网络词汇表
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值