TCP和UDP协议(深信服X计划)

简介: TCP和UDP协议(深信服X计划)

文章目录


一、TCP协议概述

二、TCP三次握手和四次挥手

三、UDP协议概述

四、TCP和UDP对比及应用场景


一、TCP协议概述


TCP (Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由ETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP) 是同一层内另一个重要的传输协议。


TCP报文结构


73b74a179e9c40148c5f37650bcb414a.png


①源端口:标识发送方的应用进程。

②目的端口:标识接收方的应用进程。

③序号:保证数据传输的有序性。

④确认号:对收到的数据进行确认。

⑤Flag字段(8位):ACK-确认号标志,置1表示确认号有效,表示收到对端的特定数据;RST-复位标志,置1表示拒绝错误和非法的数据包,复位错误的连接;SYN-同步序号标志,置1表示同步序号,用来建立连接;FIN-结束标志,置1表示连接将被断开,用于拆除连接。

⑥Option字段(可选项):MSS最大报文段长度,通过置位,协商能承载的TCP数据的大小。


TCP序列号及确认号:


be94d4eb3d92402f88746ab419c96c7c.png


TCP端口号:


9d1adba3f7d543c9a68ec825f15aaeb2.png


源端口随机分配,目标端口使用知名端口(Well-known port) ;

应用客户端使用的源端口号一般为系统中未使用的且大于1023;

目的端口号为服务端开启的服务所侦听的端口,如HTTP缺省使用80。


TCP端口号、序列号及确认号:


3f02c6e15d644e4ebd6c70c480d26c8b.png


二、TCP三次握手和四次挥手


传输机制-TCP三次握手:


83688b0fcf904830ad07276cd6ad036b.png


传输机制-TCP四次挥手:


34b3e3c0fdac42f6920b6b220b3c3134.png


面向字节流:


1be40954e1144e09ada2d77b823a9b17.png


流量控制-滑动窗口机制:窗口大小决定了在收到确认前可以发送的字节数。


8b5fefd59ab44fbf82b558bacbe26242.png204edd094a204817a0bc2135dddb6c11.png



可靠传输-停止等待协议:


d32328f9844d4134b36ec3fba3ac7ad2.png3cbbc59cc9fd4b1f8d5db4afd6cb887d.png



拥塞控制:


6b403b5e5db1408fa2d561d713c1bf0b (1).png


RST标志位:用于复位因某种原因导致的错误连接,也用来拒绝非法数据和请求。如果接收到RST位,通常发生了某些错误。其可能被接收方或者中间设备置为。


RST置为的原因:①服务器端口没有打开。②服务器响应太慢,用户终止连接。③网络攻击等。


三、UDP协议概述


UDP是User Datagram Protocol的简称,中文 名是用户数据报协议,是OSI (Open System Interconnection,开放式系统互联)参考 模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。


UDP报文结构:


48afc4285e514e5994778d457ffac043.png


UDP协议特点:

①UDP是无连接的,在传输数据之前,不需要进行复杂的三次握手来建立连接。

②在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。

③传输结束后,也不用再用四次握手握手来结束连接。


四、TCP和UDP对比及应用场景


e15d4717836e47dba3d7483a66f88b02.png


TCP适用场景:

①当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。

②TCP一般用于文件传输(FTP HTTP对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP对数据准确性要求高,非紧急应用), 远程登录(TELNET SSH对数据准确性有一定要求,有连接的概念)等。


UDP适用场景:

①在高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中 的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。

②在轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3个IP数据包,然后数据传输,1个IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5个IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP,SNMP,DNS,DHCP等。

③在对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具 体需要通过应用层协议提供可靠性,不用像TCP那么严格。)



相关文章
|
5月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
7月前
|
网络协议 安全 网络安全
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
589 2
|
7月前
|
网络协议 开发者
探讨UDP协议中connect函数的作用及影响
总结来看,虽然UDP是无连接的,`connect()` 函数的使用在UDP编程中是一种可选的技术,它可以带来编程上的便利和某些性能上的改进,同时它改变的是程序逻辑上的行为,而非UDP协议本身的无连接特性。在实际应用中,根据通信模式和需求的不同,开发者可以根据情况选择是否调用 `connect()` 函数。
336 8
|
9月前
|
监控 网络协议 视频直播
UDP协议(特点与应用场景)
UDP(用户数据报协议)是传输层的一种无连接协议,具有简单高效、低延迟的特点。其主要特点包括:无连接(无需握手)、不可靠传输(不保证数据完整性)、面向数据报(独立传输)。尽管UDP不如TCP可靠,但在实时通信(如语音通话、视频会议)、在线游戏、多媒体流媒体(如直播、点播)及网络监控等领域广泛应用,满足了对速度和实时性要求较高的需求。
1484 19
|
10月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
580 14
|
10月前
|
网络协议
TCP/IP与OPC协议的深度比较
总的来说,TCP/IP和OPC协议各有其优点和应用场景。TCP/IP协议是网络通信的基础,而OPC协议则是工业自动化领域的重要工具。在实际应用中,我们需要根据具体的需求和场景,选择合适的协议。
400 11
|
10月前
|
网络协议 Java 开发工具
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
643 1
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
515 1
Jmeter如何对UDP协议进行测试?
|
XML JSON 算法
【JavaEE】——自定义协议方案、UDP协议
自定义协议,序列化,xml方案,json方案,protobuffer方案,UDP协议,校验和,比特翻转,CRC算法,md5算法
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。