udp与tcp协议介绍

UDP主要特点:传输的是用户数据报协议。
1.UDP是无连接的,即发送数据之前不需要建立连接。
2.UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
3.UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。
4.UDP支持一对一、一对多、多对一和多对多的交互通信。
5.UDP的首部开销小,只有 8个字节。发送方 UDP对应用程序交下来的报文,在添加首部后就向下交付 IP层。UDP  对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界(而tcp是流的方式,不断地注入,是可以合并和截取的)。应用层交给 UDP多长的报文,UDP就照样发送,即一次发送一个报文。接收方 UDP对 IP  层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。


TCP: http,ftp都是基于tcp传输协议

链接过程:


数据包格式:


1.源端口和目的端口:分别占有两个字节表示接受和发送方的应用进程(端口)

2.序列号:tcp对每一个字节的数据都进行编号,那么此序列号表示数据包中的首字节数据的序号。 Seq = first byte data number.

3.确认号:确认号为接收端接收到数据包的确认返回数据,它表示将接受下一个数据包的序列号。那么 ack = seq + lenth

从序列号和确认号都是4byte,那么最大数值为65536*65536,即2^32;即一个tcp链接接受最大的数据量为4GB.


4.数据偏移(dataoffset):其是4bit,表示数据头部分距离tcp头部的距离,2^4为16但是表示最大为16字节。但是从上面图中看出tcp头部长度不止是16字节,那么这怎么能表示呢?要知道tcp头部必须包含上面图中的前四行,即16字节数据,那么数据偏移不包含这16字节的数据,而是说明校验和、紧急指针和任意选项那两行的数据长度,从而确定tcp数据包中数据的起始位置。

dataoffset = lenth(校验和+紧急指针 = 8 byte) + lenth(任意选项)

5.保留(reserved):占有6bit,暂时作为未来使用项。目前都是设置为0

6.URG(1 bit):urgent紧急标志位 1表示紧急 0 非紧急。紧急表示优先传输

7.ACK(1 bit):确认,1表示ack表示确认号有效否则无效

8.PSH(1 bit):当为1的时候,表示接收端尽快将数据交付给应用程序使用,而不是等待缓存区满了以后交给程序使用。

9.RST(1 bit):复位标志位,当为1的时候,表示出现严重的错误,将断开tcp链接。重新链接发送数据。

10.SYN(1 bit):同步标志位,表示这是一个同步链接信号,或者同步链接数据包。

11.FIN(1 bit):结束标志位,表示数据包已经发送完毕,将要断开链接。

12.窗口:占两个字节,表示窗口大小最大为2^16,即为32KB,表示一般一个数据流或者数据包为32KB.

接收方可以依据窗口大小来划定缓存区的大小,从而通知发送方最大发送窗口大小。

13.校验和:占两个字节,校验数据的准确性,校验范围包含数据部分,ip地址和协议类型。

14.紧急指针:占两个字节,指向紧急数据的位置

15.任意选项:可告知对方窗口最大长度和窗口扩展因子。字节数不确定。但是最大<= 16 - 8 = 8,上面在dataoffset中已有计算。

16.填充(fill):为了tcp数据头保持4byte的整数倍。


tcp断开链接:(前三后四,建立链接有3步,断开有4步)



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 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值