TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结

TCP、UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议。

一、UDP主要特点:传输的是用户数据报协议。

1.UDP
是无连接的,即发送数据之前不需要建立连接。

2.UDP
使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

3.UDP
是面向报文的。UDP
没有拥塞控制,很适合多媒体通信的要求。

4.UDP
支持一对一、一对多、多对一和多对多的交互通信。

5.UDP
的首部开销小,只有 8
个字节。

发送方 UDP
对应用程序交下来的报文,在添加首部后就向下交付 IP
层。UDP
对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP
多长的报文,UDP
就照样发送,即一次发送一个报文。接收方 UDP
对 IP
层交上来的 UDP
用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。

应用程序必须选择合适大小的报文。

二、TCP的主要特点:

1.TCP 是面向连接的运输层协议。

2.每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP
连接只能是点对点的(一对一)。

3.TCP 提供可靠交付的服务。

4.TCP
提供全双工通信。

5,.TCP是面向字节流。

6.首部最低20个字节。

TCP可靠传输的工作原理:停止等待协议(确认重传机制)

1.无差错:

1>:无差错: A发送分组M1,发送就暂停发送,等待B的确认,B收到M1就向A发送确认,A收到对M1的确认后再发送下
一个分组

2>:出现差错:

A只要超过一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,就重传前面发过的分组,叫超时重传。由重传
计时器实现。

而且:(1)A每次发送分组必须暂时保留分组副本;(2)分组和确认分组必须进行编号‘(3)超时计时器的重传时间
应当比数据在分组的平均往返时间更多一些。

3>:如果B收到重复的分组M1,不想上一层交付;而且,向A发送确认。

2.超时重传:

停止等待协议的优点是简单,但是信道利用率太低了。解决方法是采用连续ARQ协议,发送方维持发送窗口,每次连续发送几个分组,接收方采用累积确认,对按序到达的最后一个分组发送确认。缺点是不能向发送方反映出接收方已经正确收到的所有分组信息,例如丢失中间的分组。

TCP可靠传输的实现:

TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。TCP 的可靠传输机制用字节的序号进行控制。TCP
所有的确认都是基于序号而不是基于报文段。

发送过的数据未收到确认之前必须保留,以便超时重传时使用。发送窗口不动(没收到确认)和前移(收到新的确认)

发送缓存用来暂时存放: 发送应用程序传送给发送方 TCP 准备发送的数据;TCP 已发送出但尚未收到确认的数据。

接收缓存用来暂时存放:按序到达的、但尚未被接收应用程序读取的数据; 不按序到达的数据。

必须强调三点:

1> A 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。

2> TCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到
后,再按序交付上层的应用进程。

3> TCP 要求接收方必须有累积确认的功能,这样可以减小传输开销

TCP流量控制:

流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在
TCP 连接上实现流量控制。

TCP 为每一个连接设有一个持续计时器。只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器,发送一个零窗口探测报文段。

TCP的拥塞控制:

在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏——产生拥塞(congestion)。出现资源拥塞的条件:对资源需求的总和 > 可用资源。

开环控制方法就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。

闭环控制是基于反馈环路的概念。属于闭环控制的有以下几种措施:监测网络系统以便检测到拥塞在何时、何处发生。将拥塞发生的信息传送到可采取行动的地方。调整网络系统的运行以解决出现的问题。

拥塞控制方法:

1.慢开始:在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个
MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。每经过一个传输轮回,拥塞窗口(发送端)就加倍。

2.拥塞避免:让拥塞窗口缓慢增大,每经过一个往返时间就加1,而不是加倍,按线性规律缓慢增长。拥塞窗口大于慢开始门限,就执行拥塞避免算法。“乘法减小”:指不论在慢开始还是拥塞避免阶段,只要出现超时重传就把慢开始门限值减半。"加分增大“:指执行拥塞避免算法后,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。合起来叫AIMD算法。

3.快重传算法:发送方只要一连收到三个重复确认就应当重传对方尚未收到的报文。而不必等到该分组的重传计时器到期。

4.快恢复算法:(1)当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,把慢开始门限
ssthresh 减半。但接下去不执行慢开始算法。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口
cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大.

TCP的运输建立:

采用客户服务器方式,主动发起建立的是客户,被动等待连接建立的应用进程是服务器。

1.A
的 TCP
向 B
发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是
x。

2.B
的 TCP
收到连接请求报文段后,如同意,则发回确认。 B
在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack
= x + 1,自己选择的序号 seq = y。

3.A
收到此报文段后向 B
给出确认,其 ACK = 1, 确认号
ack = y + 1。A
的 TCP
通知上层应用进程,连接已经建立。

4.B
的 TCP
收到主机 A
的确认后,也通知其上层应用进程:TCP
连接已经建立

TCP的连接释放

1.数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。

2.B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。

3.若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接, B到
A 这个方向的连接也释放了。

4.A 收到连接释放报文段后,必须发出确认,在确认报文段中 ACK = 1,确认号 ack = w + 1,自己的序号 seq = u + 1

5.TCP 连接必须经过时间 2MSL 后才真正释放掉。因为:为了保证 A 发送的最后一个 ACK 报文段能够到达 B;防止“已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL(时间等待计时器),就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。

有机状态图:

图中有三种不同的箭头。粗实线箭头表示对客户进程的正常变迁。粗虚线箭头表示对服务器进程的正常变迁。另一种细线箭头表示异常变迁。

时间: 2024-08-10 23:30:35

TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结的相关文章

python 网络通信协议/TCP,UDP区别

一.osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 协议具体内容 各层的功能简述: [1]物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化为1.0,也就是我们常说的数模转换与模数转换),这一层的数据叫做比特. [2]数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数

TCP连接的三次握手,TCP/UDP区别联系,socket连接和http连接的区别

TCP连接的三次握手 1.第一次握手:客户端发送SYN + J包(syn = j)到服务器,并进入SYN_SEND状态,等待服务器确认: 2.第二次握手:服务器收到syn包,必须确认客户的SYN(A出口= j+1),同时自己也发送一个SYN+K包(syn =k),即SYN +ACK包,向服务器发送确认包ACK(ack = k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手, TCP/UDP区别联系 1.TCP的全称是传输控制协议,这种协议可以提供面向连接的,可靠地

UDP 区别于 TCP 的特点

TCP 我们了解得多了,所以今天我们站在 UDP 的角度,探讨一下 UDP 区别于 TCP 的特点. 1. 面向无连接 UDP 比 TCP 简单得多,不需要“三次握手”来建立连接,直接把内容发送出去. 2. 数据的不可靠性 UDP 不会验证数据报文,不会流量控制,因此数据有可能会出现失真,或者丢包的情况. 3. 高效性 UDP 头部开销小,只有 8 个字节,而 TCP 需要 20 个字节. UDP 不需要保证数据不丢失和有序,而 TCP 需要. 因此 UDP 的性能会更高. 4. 传输方式多样

[网络编程] TCP、UDP区别以及TCP传输原理、拥塞避免、连接建立、连接释放总结

TCP.UDP都是属于运输层的协议,提供端到端的进程之间的逻辑通信,而IP协议(网络层)是提供主机间的逻辑通信,应用层规定应用进程在通信时所遵循的协议.一.UDP主要特点:传输的是用户数据报协议.1.UDP是无连接的,即发送数据之前不需要建立连接.2.UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制.3.UDP是面向报文的.UDP没有拥塞控制,很适合多媒体通信的要求.4.UDP支持一对一.一对多.多对一和多对多的交互通信.5.UDP的首部开销小,只有 8个字节.发送方 UDP对

TCP/UDP区别与联系

主要从应用层简要对TCP于UDP的区别进行说明 UDP协议: UDP与TCP的主要区别在于UDP不一定提供可靠的数据传输.事实上,该协议不能保证数据准确无误的到达目的地.UDP在许多方面都非常有效.当某个程序的目标是尽快传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP.许多程序使用单独的TCP连接和单独的UDP连接.重要的状态信息随可靠的TCP连接发送,而主数据流通过UDP发送. TCP协议: TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连

TCP UDP区别

TCP和UDP区别 TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快 1. TCP协议可靠,UDP协议不可靠 2. TCP协议面向连接,UDP协议采用无连接:TCP协议的发送方要确认接收方是否收到数据段(3次握手协议),UDP不需要 3. 当强调数据传输的完整性.可控制性和可靠性时,TCP协议是当然的选择.当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择,比如:包总量较少的通信(DNS/SN

scoket、TCP/UDP、多线传输

scoket:一种机制,创建一个端口,绑定对应的函数,不断地接收和发送信息. TCP:双方建立连接,进行数据传输,可靠性高,但效率低,消耗资源大. UDP:不建立连接,直接把数据扔过去,不能保证对方有没有收到.可靠性低,效率高,资源消耗低. 多线程传输:同一资源分多条线路同步进行传输,以所有的线路完成传输后为传输完毕标志.这种方法会大大加快传输速度.

TCP/UDP区别(不定期增加内容)

1:UDP可以发送字节为0的数据报,但是TCP不可以!UDP的recvfrom可以接受长度为0的数据包,这是一个只包含IP首部和一个8字节UDP首部的没有数据的IP数据报! 2:TCP  read返回0时候表示对端已经关闭连接. 3:recvfrom和sendto也可以用于TCP,但是没有理由这样做! 4:UDP是无连接的,所以没有关闭一个UDP连接的说法. 5:TCP 不支持广播,UDP可以经过设置后广播. 6:有很多方法来获取和设置影响套接字的选项 getsockopt()和setsocko

三、初识TCP/UDP(传输层)

一.初识TCP/UDP(传输层) 引言:TCP(Transmission Control Protocol),又叫传输控制协议,UDP(User Datagram Protocol),又叫用户数据报协议.两者都是是传输层协议,但他们的通信机制与应用场景不同. 1.TCP与UDP区别 特点 TCP UDP 传输方式 字节流 数据报 连接性 面向连接 面向非连接 可靠性 可靠 不可靠 传输效率 慢 快 面向字节流(TCP) 面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),TC