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
连接已经建立






TC P的连接释放



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(时间等待计时器),就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。


有机状态图:

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




















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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值