面向连接和无连接协议之间的区别

1 理解面向连接和无连接协议之间的区别
1.1 区别
区别:对无连接协议来说,每个分组的处理都独立于所有其他分组,都是独立寻址,而面向连接的协议来说,协议面向连接的协议来说,协议实现规则维护了与后继分组有关的状态信息。
注意:对于无连接,如果应用程序实现的功能较为复杂,就可能需要维护数据报之间的状态,但重点是状态由应用程序维护,而不是协议维护。

1.2 TCP/IP协议栈
TCP/IP分为四层,分别是接口层/物理层/链路层–>网络层–>传输层–>应用层。
网络层主要就是IP层,该层提供了一个很好的高效的,不可靠的,无连接的服务,负责接收来自上层的数据包,然后封装到一个IP数据包中,并路由该数据包到正确的硬件接口上。

1.3 TCP的可靠性实现
TCP在IP层上增加了三个服务,以用来实现TCP的可靠的面向连接的服务:

为TCP段提供了校验位,这就能保证到达目的地的数据不会在网络上传输时被破坏
为每个字节分配一个序列号,如果数据不按顺序到达目的地那么接受者可以重新进行组合
TCP提供了一个确认和重传机制来保证每一个段最终都会递交到目的地
1.4 接收窗口
TCP连接但每一端都维护了一个接收窗口,接收窗口就是可以从对等实体接收的数据序列号范围。最小值是窗口的左边界,是所期望的下一个字节的序列号。最大值表示窗口的右边界,是TCP缓冲区空间所能容纳字节的最大编号。
TCP段到达时,
序列号在接收范围之外的所有数据都会被丢弃,
如果段中的第一个可接收字节不是所期望的下一个字节,就说明这个段是错序的,大部分TCP应用程序都会将其放入队列,直到缺少的数据达到位置
如果段中的第一个可接收字节就是所期望的下一个字节,就通知应用程序有数据可读,并在所期望的下一个字节序列号加上段中本次接收的字节数,对其进行更新。此时窗口向右滑动本次接收字节数的长度。最后TCP向对等实体发送一条ACK,其中携带了它所期望的下一字节序列号。
1.5 发送窗口
发送窗口被划分成两部分:已发送但还未被确认的字节,以及可以发送但还未发送的字节。
在部分字节发送后,TCP可以发送接下来的字节,而无须等待来自对等实体的ACK。在发送了部分字节后,TCP会启动一个RTO(重传超时)定时器。如果定时器超时之前这部分字节没有被确认,TCP就认为它们丢失了,并重传。
注意:
很多实现并不记录一个特定段中发送了哪些字节,因此重传段中包含的字节数可能会比原来的多,比如字节8,9在RTO定时器超时之前发送出去,应用程序就会重传字节4~9
RTO定时器超时并不意味着原来的数据没有到达目的地。有可能ACK丢失,或者在ACK达到之前,RTO就超时了。但这不会造成什么问题,因为如果原来的数据确实达到了,那么重传的数据就会处于接收端TCP接收窗口的范围之外,会丢弃。
1.6 UDP在IP层上增加了两个服务
校验和
端口 提供了一个多路输出数据到适当的应用程序的方法
注意:如果有多个进程或线程打开了这个套接字,那么其中任何一个都可以读取数据,但读过一次之后,数据对其他进程或线程老说就不可用了。
————————————————
版权声明:本文为CSDN博主「kaydxh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kaydxh/article/details/106317750

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值