文章目录
1.TCP协议
特征
应用场景
优势
有缺点
运行在TCP 协议之上的协议
2.UDP协议
特征
应用场景
优势
有缺点
运行在UDP 协议之上的协议
TCP(传输控制协议)和UDP(用户数据报协议)在网络通信中扮演着不同的角色,并且各自有自己的优点和缺点。
1.TCP协议
特征
提供面向连接的、可靠的数据传输服务。
3次握手用于建立连接,4次握手用于断开连接。
它提供流量控制、拥塞控制和错误恢复机制,以确保数据的可靠性和完整性。
采用有序数据传输,数据包按顺序发送,不存在数据混乱。
适合对数据可靠性要求高、排序要求严格的应用场景。
应用场景
网页浏览:HTTP协议通常使用TCP作为传输层协议,以保证网页内容的完整性和真实性。
电子邮件:SMTP、POP3 和IMAP 等电子邮件协议使用TCP 协议来实现可靠的电子邮件传输。
文件传输:FTP 协议使用TCP 来可靠地传输文件。
实时通信:语音、视频通话等应用需要保证数据的完整性和顺序,通常选择TCP协议。
优势
高可靠性保证数据完整性和可靠传输。
支持流量控制和拥塞控制,避免网络拥塞和丢包。
有缺点
数据传输速率相对较慢,因为每个数据包都需要确认和重传。
在某些情况下,建立和维护TCP 连接可能会增加网络开销。
运行在TCP 协议之上的协议
许多协议都建立在TCP(传输控制协议)之上,以提供可靠的数据传输。下面是一些运行在TCP 协议之上的常见协议。
HTTP(超文本传输协议):用于在Web 服务器和Web 浏览器之间传输超文本文档,例如Web 内容。
FTP(文件传输协议):用于通过网络传输文件。
SMTP(简单邮件传输协议):用于发送电子邮件。
POP3(邮局协议版本3)和IMAP(互联网消息访问协议):这两种协议用于从邮件服务器接收电子邮件。
Telnet:用于远程登录计算机系统。
SSH(Secure Shell,安全外壳协议):与Telnet类似,但提供加密且安全的连接。
DNS(域名系统):用于将域名解析到相应的IP地址。
HTTPS(安全超文本传输协议):HTTP 的安全版本,使用SSL/TLS 协议提供数据加密和身份验证。
所有这些协议都依赖于TCP协议可靠的数据传输特性来保证网络上数据传输的稳定可靠。
2.UDP协议
特征
无连接且不可靠的数据传输服务。
不提供数据重传、流量控制、拥塞控制等机制。
数据包传输速度快,适合实时性要求较高的应用场景。
数据包的发送顺序无法保证,可能会乱序或丢失。
应用场景
实时多媒体应用:实时音频、视频流、游戏数据传输等需要低延迟和高实时性。
DNS 解析:UDP 通常用于需要快速域名解析的DNS 查询和响应。
NTP时间同步:UDP常用于网络时间同步。
优势
传输速度快,适合实时性要求高的应用场景。
不增加额外的连接或维护开销。
有缺点
它非常不可靠,数据包可能会丢失或乱序。
不支持流量控制和拥塞控制,容易出现网络拥塞和丢包问题。
综上所述,TCP适合对数据可靠性要求高、顺序要求严格的应用场景,而UDP适合对传输速率和实时性要求高的应用场景。选择合适的协议取决于您的特定应用需求和性能要求。
运行在UDP 协议之上的协议
在UDP(用户数据报协议)上运行的常见协议包括:
DNS(Domain Name System,域名系统):UDP通常用于DNS查询和响应。 DNS用于将域名解析为相应的IP地址。
DHCP(动态主机配置协议):DHCP 用于向客户端设备动态分配网络配置信息,例如IP 地址、子网掩码和默认网关。
TFTP(简单文件传输协议):TFTP 用于通过网络进行简单文件传输,通常是启动系统或在LAN 内传输配置文件。
SNMP(简单网络管理协议):SNMP用于管理和监控网络设备,UDP用于发送SNMP消息。
NTP(网络时间协议):NTP用于同步计算机网络中各个节点的时间。
RIP(路由信息协议):RIP是一种动态路由协议,用于在路由器之间交换路由信息。
Syslog:Syslog是用于发送系统日志消息的协议,常用于发送Syslog消息。
这些协议通常选择UDP 作为其传输层协议。这是因为UDP比TCP更轻量、传输速度更快,适合一些实时性要求较高的应用场景。然而,UDP 不像TCP 那样提供可靠的数据传输和错误处理机制,因此某些应用程序可能需要额外的逻辑来处理数据包丢失或重复。
TCP和UDP的区别和优缺点以及应用实例
TCP和UDP的区别总结:
TCP是面向连接的,UDP是无连接的
TCP 在开始发送数据之前需要三次握手,而UDP 不需要准备发送数据,因此TCP 在建立连接时不会引入任何延迟,并提供可靠的服务,我们将尽力为您提供最好的结果。无法保证安全交付。
TCP在发送数据时有重传机制,如果数据传输过程中发生丢包,发送方就会重传丢失的数据包。因此,TCP保证它发送的数据包能够到达接收者。
UDP在应用层检索到数据后,添加用于复用/解复用服务的源端口号和目的端口号字段,并将形成的报文段直接发送到网络,这是不可靠的,因为网络层是不可靠的。数据流量无法保证。 (UDP数据传输的可靠性可以在应用层实现)UDP比TCP具有更高的实时性和更高的工作效率。
UDP比TCP更高效,因为它在发送数据之前不需要建立连接,没有繁琐的握手过程,也没有复杂的拥塞控制算法或重传机制。每个TCP 连接仅支持点对点。 TCP需要较多的系统资源,而UDP需要较少的系统资源。
TCP建立连接后,需要更多的系统资源来为连接分配发送和接收缓冲区以及维护拥塞控制变量以及序列和确认号参数。 UDP 是无连接的,需要较少的系统资源。
为什么UDP 有时比TCP 更好?
网络速度的提升保证了UDP的稳定性以及极低的因应用层重传导致的丢包率,保证了网络通信的可靠。 TCP采用了复杂的拥塞控制机制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈,很难改进。基于UDP严格的实时性要求,可以采用自定义的重传机制,最大限度地减少因丢包而导致的延迟,并最大限度地减少网络对进程的影响。
使用UDP可靠传输数据的示例
TCP 和UDP 应用示例
TCP应用:
FTP:文件传输协议SSH:安全登录、文件传输(SCP) 和端口重定向Telnet:不安全文本传输SMTP:简单邮件传输协议HTTP:超文本传输协议
UDP应用:
流媒体
使用TCP 时,如果数据包丢失,则延迟会增加,因为TCP 会缓存后续数据包并等待前一个数据包重新传输并接收后再继续发送。基于UDP 的协议是WebRTC 的不错选择。
实时游戏
对于严格的实时性要求,可靠的自定义UDP协议和自定义重传策略可以最大限度地减少由于丢包而导致的延迟,并最大限度地减少网络问题对游戏玩法的影响。
物联网
TCP和UDP的优缺点及区别
TCP的优点:可靠性和稳定性TCP的可靠性在于TCP发送数据之前有3次握手建立连接,并且没有确认、窗口、重传和拥塞控制机制存在。发送数据后,连接也会断开,以节省系统资源。 TCP 的缺点:速度慢、效率低、占用更多系统资源、更容易受到攻击、需要花费大量时间、需要维护每个设备上的所有出站连接。事实上,每个连接都会占用系统上的CPU、内存和其他硬件资源。 此外,TCP 具有确认和三向握手机制,很容易被利用来执行DOS、DDOS、CC 和其他攻击。
UDP 的优点: 比TCP 更快、更安全。 UDP没有TCP的握手、确认、窗口、重传和拥塞控制等机制,因此传输数据的速度要快得多。由于没有TCP 的这些机制,UDP 比TCP 具有更少的可供攻击者利用的漏洞。然而,UDP无法避免以下攻击: UDP Flood Attack. UDP 的缺点: UDP 缺乏TCP 的可靠机制,使其不可靠且不稳定。 数据传输过程中,如果网络质量较差,很容易丢包。 基于以上的优点和缺点,什么时候应该使用TCP呢?比如对网络通信质量有要求的时候,比如需要将整个数据准确地传输给对方并且需要可靠性的时候常用。包括HTTP、HTTPS、FTP、其他文件传输协议、POP、SMTP 和其他电子邮件传输协议。 日常生活中常见的使用TCP协议的应用有:浏览器、HTTP FlashFXP、FTP Outlook、POP、SMTP Putty、Telnet、SSH QQ文件传输……什么时候需要使用UDP?如果您的网络通信速度不快,而您想要尽可能快的网络通信速度,则可以使用UDP。 例如,在日常生活中,常见的使用UDP协议的应用有:QQ语音、QQ视频、TFTP.
一些对可靠性要求不高的应用场景会使用UPD,例如对速度要求较高的长视频。
TCP和UDP的区别总结:
1.基于连接和无连接。
2.系统资源要求(TCP较多,UDP较少)。
3. UDP程序的结构比较简单。
4.流模式和数据报模式。
5.TCP保证数据准确性,但UDP可能会丢包。 TCP 保证数据顺序;UDP 不保证。
tcp和udp协议的区别
TCP UDP
连接与否。它不是面向连接的。
传输可靠性可靠不可靠
应用场景:发送大量数据和少量数据
慢快
TCP和UDP的区别总结:
1、TCP是面向连接的(如果要打电话,必须先拨号建立连接)。 UDP 是无连接的。即发送数据之前不需要建立连接。
2. TCP提供可靠的服务。这意味着通过TCP 连接发送的数据不会出错、不会丢失、不会重复并且按顺序到达。换句话说,UDP 会尽最大努力来交付。这意味着无法保证可靠的交付。
3. TCP是面向字节流的。事实上,TCP 将数据视为一系列非结构化字节流。 UDP是面向消息的。
UDP 没有拥塞控制,因此网络拥塞不会减慢发送主机的速度(对于IP 电话和实时视频会议等实时应用很有用)。
4、每个TCP连接只能是点对点的;UDP支持一对一、一对多、多对一、多对多交互通信。
5. TCP头开销为20字节,UDP头开销仅为8字节。
6、TCP的逻辑通信通道是全双工可靠通道,而UDP是不可靠通道。
TCP与UDP的技术面试考点
要在面试中回答此类问题,首先介绍这两个概念,然后解释两者之间的区别。
TCP和UDP是OSI模型中的传输层协议。 TCP 提供可靠的通信传输,而UDP 通常用于卸载广播和对应用程序通信传输的细粒度控制。
1. TCP(传输控制协议)的概念
TCP是一种面向连接、基于字节流的端到端传输层通信协议,提供可靠的传送服务和全双工通信。
TCP在发送数据之前必须建立连接(TCP连接过程参见:理解TCP 3次握手和4次挥手及面试题(很全面)-CSDN博客),发送数据完成后必须释放连接。
TCP 不提供广播或多播服务,因为每个TCP 连接只能有两个端点。
TCP 提供可靠的传输。通过TCP 连接发送的数据不会出现错误,不会丢失,不会重复,并且按顺序到达。
TCP是面向字节流的。应用程序进程和TCP 之间的交互是一次一个数据块(不同大小),但TCP 将英语程序传递的数据仅视为一系列非结构化字节流。 TCP不知道发送的字节流的含义。
2.UDP(UserDataProtocol,用户数据报协议)
(1) UDP在发送数据之前不建立连接,它从应用程序检索数据并尽快将其发送到网络。在发送端,UDP发送数据的速度仅受应用程序生成数据的速度、计算机的能力以及接收端的发送带宽的限制。 UDP将每个消息段排队,应用程序每次从队列中读取该消息段。
(2)由于传输数据时不建立连接,因此无需维护传输/接收状态等连接状态。因此,服务器机器可以同时向多个客户端发送相同的消息。
(3)UDP包头很短,只有8个字节,与TCP的20个字节的包相比,额外的开销很小。
(4)吞吐量不受拥塞控制算法调节,仅受应用软件生成数据的速率、传输带宽以及源主机和终端主机的性能的限制。
(5) UDP采用尽力而为传输。这意味着主机不必维护复杂的链路状态表(表有许多参数),因为无法保证可靠的传送。
(6)UDP是面向消息的。由发送方的UDP传递给应用程序的消息在添加报头后被传递到IP层。没有拆分或合并,但这些数据包的边界被保留,因此应用程序必须选择适当的数据包大小。
UDP应用场景:
1. 面向数据报的方法
2、网络数据大部分是短信
3、拥有大量客户
4、数据安全无特殊要求
5.网络负载很高,但响应速度快
3、TCP和UDP区别总结:
1)TCP是面向连接的(如果要打电话,必须先拨号建立连接)。 UDP 是无连接的。即发送数据之前不需要建立连接。
2)、TCP提供可靠的服务。这意味着通过TCP 连接发送的数据不会出错、不会丢失、不会重复并且按顺序到达。换句话说,UDP 会尽最大努力来交付。这意味着无法保证可靠的交付。
3)TCP是面向字节流的。事实上,TCP 将数据视为一系列非结构化字节流。 UDP是面向消息的。
UDP没有拥塞控制(),因此网络拥塞不会减慢发送主机的速度(对于IP电话和实时视频会议等实时应用很有用)。
4)每个TCP连接只能是点对点的,UDP支持一对一、一对多、多对一、多对多交互通信。
5) TCP 头有20 个字节的开销,UDP 头只有8 个字节的开销。
6) TCP的逻辑通信通道是全双工可靠通道,而UDP是不可靠通道。
TCP和UDP的区别
(1) 同步:当两个客户端请求从同一端口发送时,第一个连接得到响应并与服务器建立通信,第二个请求将阻塞,直到第一个请求完成其操作。请求排队并按顺序执行。
(2)异步是指如果同时有两个或多个请求,服务器同时响应并连接多个客户端。每个客户端和服务器之间的通信是并行发生的,因此一个客户端不必等待另一客户端的操作完成。这两种方法通常用于接收客户端请求。
(3)阻塞调用是指在调用结果返回之前当前线程被挂起。示例:Console.ReadLine() 如果您未在控制台中输入数据,则此方法将等到输入数据后再执行。这时,当前线程被挂起,让CPU去做其他事情。
(4)非阻塞和阻塞的概念是对应的,意思是函数不会阻塞当前线程,并在结果不再可用之前返回。
syn攻击
在三向握手过程中,服务器发送SYN-ACK 到收到客户端ACK 之间的TCP 连接称为半开连接。此时服务器收到ACK后进入Syn_RECV状态。切换到ESTABLISHED 状态。
SYN攻击通过在短时间内伪造大量不存在的IP地址,不断向服务器发送syn报文来攻击客户端。服务器回复来自源的确认数据包,并等待客户端的确认。如果该地址不存在,服务器将不得不重试发送,直到超时,这些伪造的SYN数据包将长期占用未连接队列,正常的SYN请求将被丢弃,目标系统的行为将受到影响会迟到的。在某些情况下,它可能会导致网络拥塞和系统瘫痪。
Syn攻击是一种典型的DDOS攻击。 SYN攻击检测:如果我们看到服务器上有大量的半连接,特别是源IP地址是随机的,我们基本可以断定这是一次SYN攻击。检测是否为SYN攻击的命令。
netstat -n -p TCP | SYN_RECV |
一般来说,新的TCP/IP协议栈修改了这个过程,以防止Syn攻击并修改TCP协议的实现。主要方法包括Syn AttackProtect保护机制、SYN Cookie技术、增加最大半连接数、减少超时时间等。
然而,不可能完全阻止Syn 攻击。
TCP和UDP是OSI模型中的传输层协议。 TCP提供可靠的通信传输,而UDP常用于广播,提供无连接的通信服务。
握手
“我要发送数据,你确定吗?”(请输入序列号作为起始数据段) SYN:同步序列号
“好的,您想什么时候发送?(提供序列号)SYN+ACK 响应”
“立即发送。继续用ACK 消息进行响应。”
挥手 (A为主动关闭方,可以是SERVICE也可以是CLIENT)
服务器:发送完成。我想关闭它。 1)主机A完成数据传输后,发送FIN,请求停止TCP连接,并进入FIN_WAIT1状态。
客户端:我们看一下2)主机B收到FIN后,发送ACK,进入CLOSE_WAIT状态。
客户:好的,您可以关闭它了。 3)B方向相反方向发出关闭请求,发送FIN并进入LAST_ACK状态。
服务器:嗯,我把它关掉了。 4) 主机A确认主机B的请求,接收FIN,并发送ACK。它进入TIME_WAIT 状态并在2MSL 小时后退出。
UDP(用户数据协议,用户数据报协议)
“ping”命令通常用于测试两台主机之间的TCP/IP 通信是否成功。其实“ping”命令的原理就是向其他主机发送UDP数据包,然后再发送给其他主机。验证数据包的接收。当数据包到达的消息及时反馈后,网络就开通了。
UDP应用场景: 1、面向数据报2、网络数据大部分是短消息3、客户端数量较多4、对数据安全无特殊要求5、网络负载很高但响应速度较高
TCP和UDP的区别总结: 1. 基于连接与无连接。 2.系统资源要求(TCP较多,UDP较少)。 4、UDP程序结构更简单。 5.TCP。保证数据的准确性,但UDP可能会丢包。 TCP 保证数据顺序;UDP 不保证。
TCP:
服务器端TCP编程的一般步骤是: TCP 标头的最小长度为20 字节。
1. 创建一个套接字并使用socket()函数。
2. 设置套接字属性并使用setsockopt()函数*可选
3. 使用bind()函数将IP地址、端口等信息绑定到socket。
4. 打开监听并使用函数listen()。
5. 要接收来自客户端的连接,请使用函数accept()。
6. 要发送和接收数据,请使用函数send() 和recv() 或read() 和write()。
7. 关闭网络连接。
8. 关闭监控。
TCP客户端编程的一般步骤是:
1. 创建一个套接字并使用socket()函数。
2. 设置套接字属性并使用setsockopt();*函数(可选)
3. 使用bind()函数将IP地址、端口等信息绑定到socket。 *选修的
4、设置要连接的对方IP地址和端口。
5. 使用函数connect()连接到服务器。
6. 要发送和接收数据,请使用函数send() 和recv() 或read() 和write()。
7. 关闭网络连接。
UDP:的UDP编程步骤非常简单:
UDP 编程的一般服务器端步骤是:
1. 创建一个套接字并使用socket()函数。
2. 设置套接字属性并使用setsockopt();*函数(可选)
3. 使用bind()函数将IP地址、端口等信息绑定到socket。
4. 要循环接收数据,请使用函数recvfrom()。
5. 关闭网络连接。
UDP编程客户端的一般步骤是:
1. 创建一个套接字并使用socket()函数。
2. 设置套接字属性并使用setsockopt();*函数(可选)
3. 使用bind()函数将IP地址、端口等信息绑定到socket。 *选修的
4. 配置对端的IP 地址、端口等属性。
5. 要发送数据,请使用函数sendto()。
6. 关闭网络连接。
#TCP和UDP协议的区别+应用场景+优缺点+以上常用协议信息仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93956.html