首页 > 编程知识 正文

tcp和udp的区别用途(TCP和UDP协议介绍)

时间:2023-05-04 08:48:44 阅读:122783 作者:749

TCP和UDP协议包括:一、TCP协议1、TCP分段2、TCP连接(1) 3次握手(2) 4次握手) 3、常用TCP端口号及其功能2、UDP协议1、UDP分段2、…

一、TCP协议

传输控制协议(TCP )是一种面向连接、可靠的进程到进程的传输层通信协议。 TCP提供全双工服务。 这意味着数据同时双向传输,每个TCP都有发送和接收缓存,用于临时存储数据。

1、TCP段,当APP应用层向TCP层发送由用于网络间传送的8比特表示的数据流时,TCP将数据流划分成适当长度的段,其中最大传输段大小(MSS )通常为接着,TCP向IP层传递分组,经由网络向接收实体的TCP层发送分组。

TCP为保证消息传输的可靠性,对每个分组赋予序号,并且序号保证转发给接收实体的分组的顺序接收。 接着,接收实体对成功接收的字节返回适当的确认(ACK ); 如果发送实体在合理的往返延迟(RTT )内没有收到确认,则假设相应的数据)丢失)将被重新发送。

3358 www.Sina.com/http://www.Sina.com/:发送端进程的端口号。TCP报文段::接收进程的端口号。 接收方接收到段后,根据该端口号决定向哪个APP应用程序发送数据的过程。源端口号:发送端按字节编号,以便接收端正确重组。 当TCP从进程接收数据字节时,它将数据分段并存储在发送缓存中,然后对每个字节进行编号。 数据到达目的地后,接收方按此号码对数据进行排序,以保证数据的正确性。目标端口号:用于在向发送方的确认消息接收方响应消息时,向发送方传达已经接收到比该序列号早的数据段。 如果确认号为x,则表示已接收到第一个X-1个数据段。 用于确定3358www.Sina.com/:TCP标头数据结构的字节长度。 TCP标头通常为20字节,但标头长度最多可扩展到60字节。 3358 www.Sina.com/http://www.Sina.com/:紧急位。 紧急指针有效位。序号:确认位。 仅当ACK=1时,确认序列号字段有效; 如果ACK=0,则确认编号字段无效。确认号:急迫位。 如果标记为1,则请求接收方尽快优先地将数据段传递到APP应用层。首部长度:复位位。 当RST值为1时,通知TCP连接的重新建立。控制位::同步(连接)位。 序列号位。 如果TCP需要建立连接,请将此值设置为1。URG:关断位。 如果TCP需要断开连接来完成数据传输,则建议断开连接的一方将此值设置为1。ACK说明本地可接收的数据段数。 该值的大小是可变的,当网络畅通时,接收方的响应消息通过增大该窗口的值来加快传输速度,当网络不稳定时减小该值来保证网络数据的可靠传输。 TCP中的流量控制机制通过变化窗口的大小来实现。

例如,下载速度从最初的几KB上升到几MB的过程。PSH:用于错误控制。 字段检查的范围有两部分:标头和数据。 数据段在发送和到达时进行校验和计算。 如果这两次校验和一致,则数据几乎正确。 如果不匹配,则该数据将被视为已破坏,接收方将丢弃该数据。RST:与URG组合使用,URG=1时有效。SYN:在TCP报头中可以具有最多40字节的选项信息。 例如,最大段长度最大分段长度(MSS )。 MSS告诉对方,TCP: '我的缓存可以接收的消息段的最大数据字段长度为MSS字节。 "FIN

2、TCP连接(1)三次握手TCP是互联网上的传输层协议,使用三次握手建立连接。 主动端发出SYN连接请求后,等待对方回答SYN ACK,最终对对方SYN执行ACK确认。 建立此连接的方法可以防止发生错误的连接。 TCP使用的流控制协议是大小可变的滑动窗口协议。窗口大小

1、客户端将syn(seq=x )消息发送到服务器端,进入SYN_SEND状态。

2、服务器端接收SYN消息,并响应一个syn(seq=y ) ack (ack=x1 )消息,进入SYN_RECV状态。

3、客户端接收服务器端的SYN消息,响应一条ack(ack=y1 )消息,进入Established状态。

三次握手完成后,TCP客户端和服务器端可以成功建立连接并开始传输数据。

) 4挥手建立一个连接需要3次握手,结束一个连接需要4次握手,这取决于TCP的半封闭(hal )

f-close)造成的。具体过程如下图所示。
(1) 某个应用进程首先调用close,称该端执行“主动关闭”(active close)。该端的TCP于是发送一个FIN分节,表示数据发送完毕。
(2) 接收到这个FIN的对端执行 “被动关闭”(passive close),这个FIN由TCP确认。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
(3) 一段时间后,接收到这个文件结束符的应用进程将调用close关闭它的套接字。这导致它的TCP也发送一个FIN。
既然每个方向都需要一个FIN和一个ACK,因此通常需要4个分节。

3、常用的TCP端口号及其功能

二、UDP协议

用户数据包协议(UDP,User Datagram Protocol)是一个无连接的、不保证可靠性的传输层协议。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。无连接高效快捷花销小,但不保证可靠稳定。

1、UDP报文段

在UDP协议层次模型中,UDP位于IP层之上。应用程序访问UDP层然后使用IP层传送数据报。IP数据包的数据部分即为UDP数据报。IP层的报头指明了源主机和目的主机地址,而UDP层的报头指明了主机上的源端口和目的端口。UDP传输的段(segment)有8个字节的报头和有效载荷字段构成。
UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据报长度、校验值。
以下将对UDP数据报格式进行简要介绍:

端口号

UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据包通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。UDP端口号指定有两种方式:由管理机构指定端口和动态绑定的方式。
长度

数据报的长度是指包括报头和数据部分在内的总字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。
校验值

UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

2、常用的UDP端口号及其功能

三、TCP协议与UDP协议的对比

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。
TCP 是面向连接的传输控制协议,而UDP 提供了无连接的数据报服务;TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序;UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作;UDP 具有较好的实时性,工作效率较 TCP 协议高;UDP 段结构比 TCP 的段结构简单,因此网络开销也小。TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用 TCP 传输数据。
TCP通过下列方式来提供可靠性:
1.应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)。
2.当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。当TCP收到发自TCP连接另一端的数据,它将发送一个确认。TCP有延迟确认的功能,在此功能没有打开,则是立即确认。功能打开,则由定时器触发确认时间点。
3.TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
4.既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
5.既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。
6.TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。