计算机网络 Andrew 传输层笔记

计算机网络 Andrew

Transfer Layer的作用:
   屏蔽 网络的 细节;给 User 一个接口。这种 接口 可能是 可靠的流传输,也可能是 不可靠的 报传输。
   为什么这么用,而不是直接利用 网络层 的功能呢?他们也提供了。实际上,网络层的这些功能主要是 在Router上实现的。而用户往往需要在不知道网络具体情况下,实现可靠的传输。

   Transfer Layer主要是在 网络层 的基础上,实现 可靠的 port-port传输。

Transfer Layer要解决的问题:
   1)具体的模型
      host上的进程通过host上的Network Layer然后再通过子网 与 另外一台 host 通信。

      子网可能是由channel和Router组成,有 延迟 和 掉包 现象。
           主机之间是通过子网连接,这和链路层是不同的。链路层 一般 网络很好,不会有 congetion等现象。而子网带来的问题很多,主要是 包丢失 和 延迟过于严重。包丢失 可能是 channel congetion,也可能是 host buffer 耗尽,同样也可能是channel本身就是个不可靠的网络。

           对于 报文 网上的 流传送,必须要考虑 报 的延迟很大 的问题。这里核心是带来了 包的识别问题,也就是 包 是否是 应该发送的 包。
               有两个解决办法,第一个 是 限制包的生存时间,用 跳数 和 延迟时间 得到了 包的生存时间,这样,就减少了 包 的延误 问题;
                     第二个解决办法 是 标识 每一个 包,这样,在连接建立起来以后,接收方就知道是否是要用的包。关键是 将发送的包 和 发送的时间联系起来。如果接收方发现接收到的包的标号不可能是 这个时间内的,它就可以把它拒收。这样,就解决了延迟包的问题。

    2)具体的 工作流程。
       a)用户进程建立连接,以 对方的 ip+port address 为地址发送请求。

           这里,用户进程 要 告诉 传输层实体 一些他的信息。即 传输层 Entity知道 要发送到哪里,得到了结果 要能够找到 接收者。 这里 采取了 socket的机制。socket相当于一个buffer,进程向 socket写入或读出,传输层Entity 也一样,这样,就可以通信。传输层相当于一个 收发室,他管理着一个小区的所有邮箱,并且发送给邮局,各家各户可以不管邮局的变化,也可以保证邮件肯定可以发送出去。它可以将信息在两者之间传送。他要做的就是将对应的内容从 UserBuffer copy到trasnfer buffer(一般在kernel buffer中),然后再把它 传递给 Network Layer。
 
           sender怎么知道发送成功??如果不是可信网络,必须要receiver发送一个反馈;相反,receiver怎么知道 发送方 确认了消息??sender也必须要发送一个反馈。这里,假设的是网络有丢包的情况。

       b)如果建立socket成功,那么,两者进行通信。
             通信时,显然建立成功,得到socket号,就可以通信了。只需要几个socket号就可以。
             这里,同样要考虑到丢包的情况,必须要接收方给发送方反馈。

       c)发送完毕,双方断开连接。
             这里,一般是由一方发出 请求(F),另一方接收(A)。考虑到延迟,

 

           建立连接时,。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值