1、面向连接和无连接指的是协议,本质区别在于:对于无连接协议来说,每个分组的处理都独立于其他的分组。
而对于面向连接的协议,协议实现维护了当前分组与后继分组有关的状态信息。
2、无连接就是指udp,分组称为数据报(datagram),每个分组都独立寻址,udp会尽最大努力发送数据报,
但是不保证数据报不丢失,不延迟,不错序。
注意:对于udp,可以在应用层维护数据报的状态。
3、面向连接就是tcp,tcp的分组称为段(segment),协议维护了分组之间的状态,记住这些状态,协议可以提供可靠的传输。
4、一个标准的类比就是:udp就像寄明信片,tcp就像打电话。
5、udp有这么多缺点,为什么还要使用这种协议呢?
a、面向连接只支持一对一通信,无连接很方便地支持一对多和多对一的通信,面向连接需要多个独立的连接才能实现。
b、更重要的是,无连接是面向连接的基础,udp和tcp在ip协议之上,ip协议只转发分组,不对底层做任何假设,
ip就是不可靠的无连接服务。
6、tcp是怎么提供可靠的传输?
tcp在ip协议上增加了3项功能:
a、为tcp段中的数据提供校验和,在接收端检查数据是否损坏
b、tcp为每个字节提供序列号,即使在接收端错序了,可以根据恰当的顺序重装起来
注意:tcp并没有为每一个字节附加一个序列号,而是在tcp发送的段中为第一个字节标识了序号,
这样就隐含了段中其它字节的序列号
c、tcp提供了确认重传机制
7、确认重传机制是如何工作的?
tcp是全双工的,每一端既是接收端又是发送端。
8、站在接收端的角度,接收端维护了接收窗口,左边界是期望接收的下一个字节的序号,右边界表示接收缓冲区的能容纳的最大字节序号。
接收端通过告诉发送端自己的接收窗口,可以用于流量控制,防止缓冲区溢出。
对于接收的数据(一组字节,会覆盖接收窗口的一个区间),如果在左边界之前,说明是已收到的数据,丢弃。
如果在右边界之后,说明是没有对应的缓冲区存储,丢弃。
如果不是所期望的下一个字节,说明是错序的,需要等待前面缺少的数据到达。
如果是所期望的下一个字节,通知应用程序有数据可读。这时候所期望接收的字节序号加上段中的字节个数,进行更新,
窗口向右滑动。同时向发送端发送ack,告知所期望接收的下一个字节序号。
9、站在发送端的角度,发送端维护发送窗口,窗口划分成两部分,已发送但还未被确认的字节,可以发送但还未发送的字节。
对于已发送但还未被确认的字节,会启动RTO(Retransmission TimeOut 超时重传)定时器,超时认为丢失了,重新发送。
注意:RTO超时并不意味着原来的数据没有到达目的地,有可能是ack丢失了,也有可能是网络延迟,导致收到ack的时候已经超时。
重传不会导致什么问题,因为接收端会丢弃重新收到的数据。
10、udp在ip协议上增加了2项功能,分别如下:
a、提供了可选的校验和用来检测数据是否损坏。ip也有校验和,但是ip的校验和只是对ip分组的首部进行计算,
而udp和tcp提供的校验和用于保护他们自己的首部和数据。
b、udp增加了端口的概念(当然tcp也是),ip地址对应主机,端口对应主机上的进程。

【T01】理解面向连接和无连接协议之间的区别的更多相关文章

  1. Linux网络编程——连接和面向连接的协议之间没有区别

    网络编程中最重要的概念就是连接取向(connection-oriented)和无连接(connectionless)协议.虽然本质.两者之间的区别是不难理解,编程的人来说,却是个非常easy混淆的问题 ...

  2. 深入理解 '0' "0" '\0' 0 之间的区别

    看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了.今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了.困惑和快乐与你分 ...

  3. http协议与soap协议之间的区别

    http是标准超文本传输协议.使用对参数进行编码并将参数作为键值对传递,还使用关联的请求语义.每个协议都包含一系列HTTP请求标头及其他一些信息,定义客户端向服务器请求哪些内容,服务器用一系列HTTP ...

  4. ftp用的是tcp还是udp_如何通俗地解释TCP和UDP协议和HTTP、FTP、SMTP等协议之间的区别

    HTTP协议 老王喜欢看岛国小片,时常泡在论坛上和网友交流最新资讯,老王是通过浏览器浏览网页的,而浏览器是借助HTTP协议与论坛服务器沟通交流. FTP协议 老王购买了该网站的会员,可以无限制下载高清 ...

  5. HTTP与私有二进制协议之间的区别

    简单的文本协议.二进制协议 写网络程序躲不过协议,协议其实就是定义了消息的格式,以及消息是如何交换的.协议可简单可复杂,复杂精密如TCP协议,简单奔放如HTTP的协议.这里将我所接触到的协议稍微总结一 ...

  6. 软件授权协议有什么作用,例如GPL、Apache License、CDDL、EPL这些协议有什么区别?

    1.授权协议有什么作用:授权协议就是授予你使用或修改软件等权利,由于软件受到著作权保护,未经授权使用即是侵犯著作权,属于违法行为,所以同意或签署软件授权协议是你使用或修改软件的前提条件.既然是授权协议 ...

  7. http、TCP/IP协议与socket之间的区别

    http.TCP/IP协议与socket之间的区别     网络由下往上分为:  www.2cto.com   物理层--                       数据链路层-- 网络层--   ...

  8. http、TCP/IP协议与socket之间的区别(转载)

    http.TCP/IP协议与socket之间的区别  https://www.cnblogs.com/iOS-mt/p/4264675.html http.TCP/IP协议与socket之间的区别   ...

  9. 理解分布式一致性:Raft协议

    理解分布式一致性:Raft协议 什么是分布式一致性 Leader选举 日志复制流程 term选举周期 timeout 选举和选举timeout 选举分裂 日志复制和心跳timeout 在分布式系统中, ...

随机推荐

  1. python接口自动化测试二十四:上传多个附件,参数化

    # 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...

  2. struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

    其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...

  3. JDBC事务,银行转账,货物进出库等等。

    1:转账业务 转账必须执行2个sql语句(update更新)都成功的情况下,提交事务,如果有一个失败,则2个都回滚事务2:事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACI ...

  4. 解决Delphi7的自带的UTF-8编码转换函数BUG

    Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del ...

  5. Flink(三)Flink开发IDEA环境搭建与测试

    一.IDEA开发环境 1.pom文件设置 <properties> <maven.compiler.source>1.8</maven.compiler.source&g ...

  6. 天天爱跑步&&弹球

    题解: 弹球题目地址:https://www.nowcoder.com/acm/contest/113/E 后面这题 应该是天天爱跑步的加强版本 原理都是查询子树中dep[x]+f[x]的值的个数 由 ...

  7. streaming优化:spark.streaming.receiver.maxRate

    使用spark.streaming.receiver.maxRate来限制你的吞吐的最大信息量. 因为当streaming程序的数据源的数据量突然变大巨大,可能会导致streaming被撑住导致吞吐不 ...

  8. 012 HDFS API 文件读写代码演示

    一:准备工作 1.新建class类 2.开启HDFS服务 3.将配置文件拷贝进resources路径 方便了Configuration的读取配置. 二:读出HDFS文件系统中的文件到控制台 4.读出在 ...

  9. js获取按键

    event.altKey.event.ctrlKey.event.shiftKey 属性 属性为true表示事件发生时Alt.Ctrl.Shift键被按下并保持,为false则Alt.Ctrl.Shi ...

  10. P2399 non hates math

    P2399 non hates math将分数化成小数的模拟题,把循环减掉就可以了.1.1(234)*10^4==11234.234*10^1==11.2349999*(1.1(234))==1122 ...