udp与tcp

2021-01-03  本文已影响0人  jluemmmm

网络层为主机之间提供逻辑通信,应用层为应用进程之间提供端到端的逻辑通信。网络层中,ip数据报首部中的检验和字段,只检验首部中是否出现差错而不检验数据部分。运输层对收到的报文进行差错检测。传输层有两种不同的传输协议,面向连接的tcp和无连接的udp

udp

udp user datagram protocol 用户数据报协议。传输数据之前不需要先建立连接,远地主机在收到 udp 报文后,不需要给出确认。DNS、TFTP、RIP、DHCP、SNMP、NFS、IP电话、流式多媒体通信等采用的是 udp 传输。

udp 传输特点

udp 检验

将首部和数据部分一起都检验。udp首部包括:

将12字节伪首部、8字节首部、数据,二进制反码求运算和后,将得出的结果求反码放入检验和字段,接收方将得到的数据报连同伪首部、补0码一起,求16位字的和,无差错时结果应全为 1。

tcp

tcp transmission control protocol传输控制协议,特点是:

tcp可靠传输工作原理

拥塞控制

当主机开始发送数据时,如果立即把大量数据字节注入到网络,因为不清楚网络负荷情况,有可能引起网络拥塞。慢开始算法:先进行探测,由小到达逐渐增大拥塞窗口数值。在刚刚开始发送报文段时,先把拥塞窗口设置为一个最大报文段 MSS 值。在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送方的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍。

为了防止拥塞窗口 cwnd 增长过大引起网络阻塞,需要设置一个慢开始门限 ssthresh :

拥塞避免算法主要思路,让拥塞窗口 cwnd 缓慢增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,拥塞窗口 cwnd 按线性规律缓慢增长。

无论在慢开始阶段还是拥塞避免阶段,只要发送方判断网络出现拥塞,根据就是没有按时收到确认,就要把慢开始门限 ssthresh 设置为出现拥塞时的发送窗口之的一半 (但不能小于2),然后把拥塞窗口 cwnd 重新设置为1,执行慢开始算法。这样可以迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完毕。

在接收方每收到一个失序的报文段后就立即进行重复确认。(前提)快重传算法规定:发送方只要一连收到三个重复确认就应当立即重传对方未收到的报文段,不必继续等待为丢失报文段设置的重传计时器到期。

发送方连续收到三个重复确认时,将慢开始门限 ssthresh 减半,然后开始执行拥塞避免算法,使拥塞窗口缓慢线性增大。

tcp 建立连接

  • A发起连接请求报文段, SYN=1,seq=x
  • B发送确认,SYN=1,ACK=1,seq=y,ack=x+1
  • A给出确认,ACK=1,seq=x+1,ack=y+1

三次握手的原因:防止已失效的连接请求报文段突然传送到 b,导致产生错误。

tcp连接释放

  • A发送连接释放报文段,进入 FIN-WAIT-1,FIN=1,seq=u
  • B发出确认,进入 CLOSE-WAIT,ACK=1,seq=v,ack=u+1,A进入 FIN-WAIT-2
  • B发送连接释放报文段,进入 LAST-ACK,FIN=1,ACK=1,seq=w,ack=u+1,A进入 TIME-WAIT
  • A等待 2MSL(maximum segment lifetime 最长报文段寿命),发出 ACK=1,seq=u+1,ack=w+1,A/B均进入CLOSED

等待2MSL的原因:

https://blog.csdn.net/qzcsu/article/details/72861891

上一篇 下一篇

猜你喜欢

热点阅读