tcp传输的可靠性

端到端。   “端”指的是“端口”。   端到端协议,是传输层提供的协议。传输层下层的网络层的IP协议在主机之间传输数据,IP地址只标志主机,并不区分进程。区分到底是主机上哪个进程在通信,就是依靠端到端协议。

 

  

                                            端到端协议简图

    2,面向对象连接  

 

       使用TCP协议,两个进程在传送实际数据之前先建立一个“连接通道”。所谓的连接通道并不是一条端到端TDM或FDM电路,也不是一条虚电路。TCP协议只在端系统中运行,不在中间的网络元素(路由器和链路层交换机)中运行,所以中间元素并不维持TCP连接状态。中间路由器对TCP连接完全毫不知情,它们看到的只是数据报,而不是连接。下面,我们简单说一下建立TCP连接的过程。

 

      一开始学写通信程序时,虽然不懂基本原理,当时Java程序是这样写的:(发起通信的客户端程序)Socket client =new Socket(IP,port);  IP,是服务器的IP地址,port是服务器进程的端口号,端口就是用来标识进程的。 这时,客户机的运输层便开始与服务器的传输层建立连接了。客户机的应用程序首先通知客户机的TCP,它想建立一个与服务器上的某个进程(已经用Port 标识好了)之间的连接。客户机的TCP会用以下方式与服务器的TCP建立一条TCP连接:

 

      第一步:客户端的TCP首先向服务器的TCP发送一个特殊的TCP报文段。该报文段并不包含应用层的数据,并封装在一个IP数据报中,发给服务器。

 

      第二步: 该IP数据报到达服务器后,为该TCPP连接分配TCP缓存和变量(这个暂且不解释,我们先说大体过程),并向客户机TCP发送允许连接的报文段(同样不包含应用层数据)。

 

      第三步:客户机收到服务器回应的报文段后,客户机同样为TCP连接分配缓存和变量,并且,客户机再向服务器发送一次报文段,对服务器允许连接进行确认。

 

     三步完成后,客户机和服务器就可以互相发送报文段了。这种连接方式成为 三次握手。通俗的说,这种连接方式确保双方已经做好准备接收数据。

 

 


 

 

 

3,可靠,按序的数据流 

 

    网络层的IP协议传输数据是不可靠的,数据报有可能丢失,乱序,出错。TCP在IP的不可靠的基础上建立了一种可靠数据传输服务。

 

 我们先说一下 , 可靠数据传输服务。

 

 可靠数据传输服务的实现自然依靠于 可靠数据传输协议

 

 我们要研究一系列协议,从简单到复杂,一个一个来。

 

    1.完全可靠信道上的可靠数据传输  rdt 1.0

         即,底层是完全可靠的。发送方发送数据,接收方接收数据。两者之间无需任何反馈信息,因为数据是完全可靠的。

    2,具有比特差错信道上的可靠数据传输  rdt 2.0

         现实的是,底层信道的比特可能受损,所以需要反馈。当接收方收到正确的数据包后,反馈一个ACK,错误的数据包,反馈NAK。 此时的协议采用了差错检测。

    3,在rdt 2.0 的基础上,若,反馈出错或丢失,要管理丢失的反馈。给分组加seq #两个 #’s (0,1),必须查收ACK/NAK   这是 rdt 2.1

 

    若,两个数据包,1,2     1号出错,2号正确,但 ACK丢失,则传输过程是:


 


 4,rdt 2.2 无NAK的协议     

        功能等同 rdt2.1, 但仅使用 ACK不使用 NAK, 接受方只为最后正确接受的报文发送 ACK,接收方必须显式表明ACK 的分组 seq #,发送方得到双重ACK导致 NAK的相同结果: 重传正确的分组。

 

       如,两个数据包 1,2  1号正确,2号出错  


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值