关于TCP和UDP的一些知识梳理1

1.TCP头部
flag从左到右依次是URG,ACK,PSH,RST,SYN,FIN
ACK设置为1表示有效。
PSH要求对方在接到数据后立刻请求递交给应用程序,不是缓冲。
SYN用来建立连接的过程
FIN用来释放一个连接
窗口大小:可以发送多少个字节

三次握手所需要的:ACK=1SYN=1在连接建立时用来同步序号FIN=1释放连接

2.TCP和UDP的区别
以下是区别当中重要的四点:TCP有流量控制,UDP没有TCP有拥塞控制,UDP没有对应的协议不同:TCP 对应的协议有FTP等,UDP对应的协议有DNS等;
TCP一般用于文件传输,UDP用来即时通信

2.TCP三次握手
Client 发出请求连接即 SYN=1 ACK=0,声明自己的序号是 seq=x
→Server 进行回复确认,即 SYN=1 ACK=1。 seq=y, ack=x+1
→ Client 再进行一次确认,不用 SYN 了, ACK=1。seq=x+1,ack=y+1.

3.为什么采用三次握手而不是采用两次握手?
为了防止已失效的连接请求报文文段突然又传到了服务器,产生错误
当客户端发送的第一个连接请求没有丢失而是滞留时,在某个时间到达了服务器,服务器便会向客户端发出确定报文,如果不采用三次握手,新的连接就会建立,造成资源浪费。

4.为什么要TCP四次握手
TCP有个半关闭状态,如果客户端和服务端妖释放连接,那么客户端要发送一个释放连接报文给服务器后者收到了发送确定,(其间客户端不发数据,服务器如果发数据客户端要接受),之后发给客户端连接释放报文客户端最后发确认

5.TCP粘包问题
Nagle算法将多次间隔小,数据量小的数据,合并成一个大的数据包,进行封包,面向流的通信是无消息保护边界的。
如何解决:关闭Nagle算法,发送定长包,包头加上包体长度,使用更加复杂的应用层协议。

6.如何保证可靠性运输
数据包检验,对失序数据包重排序,丢弃重复数据,流量控制等

7.TCP流量控制
利用滑动窗口,接收方告诉发送方自己的接受窗口大小,然后发送方发送窗口不能超过接收方给出的接受川口值。
指点对点通信量的控制。

8拥塞控制
发送方维持一个叫做拥塞窗口cwnd的状态变量,大小取决于网络的拥塞程度,并且动态地在变化。
慢开始算法:由小到大逐渐增加拥塞窗口的大小,乘法增长
拥塞避免算法:加法上长
慢开始门限ssthresh状态变量,防止cwnd增长过快引起网络拥塞。
当cwnd<ssthresh时,使用慢开始算法。
当cwnd>ssthresh时,改用拥塞避免算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法任意。
拥塞后把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为 1,执行慢开始算法。

快重传:求接收方在收到一个失序的报文段后就立即发出重复确认
快恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把 ssthresh 门限减半。但是 接下去并不执行慢开始算法。将 cwnd 设置为 ssthresh 的大小,然后 执行拥塞避免算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值