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那么严格。)



相关文章
|
1月前
|
域名解析 网络协议 关系型数据库
tcp和udp的区别是什么
TCP和UDP是互联网协议中的传输层协议。TCP是面向连接的,通过三次握手建立可靠连接,提供数据顺序和可靠性保证,适用于HTTP、FTP等需要保证数据完整性的应用。UDP则是无连接的,数据报独立发送,传输速度快但不保证可靠性,常用于实时通信、流媒体和DNS解析等对速度要求高的场景。根据应用需求选择合适的协议至关重要。
tcp和udp的区别是什么
|
1月前
|
网络协议 网络性能优化
认识TCP和UDP的区别
重排机制:由于UDP数据包可能因网络原因而发生乱序,因此在应用层需要对接收到的数据包进行排序。
31 4
|
7天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
1月前
|
网络协议 网络性能优化
网络面试题:TCP和UDP的区别
网络面试题:TCP和UDP的区别
25 0
|
1月前
|
网络协议 Python
Python网络编程实现TCP和UDP连接
Python网络编程实现TCP和UDP连接
29 0
|
1月前
|
网络协议 网络性能优化 Python
python怎么实现tcp和udp连接
python怎么实现tcp和udp连接
16 0
|
1月前
|
网络协议 Linux
TCP 和 UDP 的 Socket 调用
【2月更文挑战第19天】
TCP 和 UDP 的 Socket 调用
|
网络协议
TCP/IP协议的介绍
TCP/IP协议是众多协议的统称,通过分层结构来管理。可分为七层模型或四层结构
|
网络协议 网络架构
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
六、TCP/IP模型 和 5层参考模型
|
域名解析 网络协议
IP协议, TCP协议 和DNS 服务分别是干什么的?
大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
213 0
IP协议, TCP协议 和DNS 服务分别是干什么的?