计算机网络-运输层

来源:互联网 发布:剑三笔记本优化版 编辑:程序博客网 时间:2024/05/16 14:47

前言

  • 计算机网络不管怎样,都是一个好难的学科啊;各种纷繁复杂的协议,要考虑的问题也实在是太多了;

概述

  • 运输层提供逻辑通信,服务主体是应用层的各种应用程序,让我们感觉我们所享用的服务就是自己电脑上的,而实际上却是超级远的地方;
  • 由于运输层是服务于各种应用程序的,所以分解与合并就是必然的;注意分解并不是分解成报文段,报文分解为小的报文段,主要原因是因为网络需求;报文段中的端口号才促使了分解与合并,运输层来来往往一大堆的报文段,将它们准确的发往某个主机的套接字,后者接受到某个套接字上,这才是多路分解的本质;
  • 两家人寄信为例,年龄大的姐姐把信都收到然后分发给其他人,或者收集信,一起发出去
  • udp套接字是由一个二元组标识的,目的ip和目地端口号;也就是说不管从哪里来的报文段,只要ip+端口一样,处理它们的套接字就一定相同;但是这不代表报文段中就没有端口和ip
  • tcp套接字有四元组标识,以http为例,要不然大家访问百度,就一个ip+端口,就映射一个套接字,那不累死了;

UDP

  • udp是很基础的运输层协议,就是ip + 多路复用/分解 + 差错控制。
  • 常见的udp应用:dns,流媒体传输;

TCP

  • 滑动窗口协议:发送方接收方都有一个窗口,窗口中的报文段进行传输,如果遇见丢包,就直接回退;GBN使用的是累积确认的方式;
  • 选择重传:并不执行累计确认,收到ack就表明收到,如果ack是窗口头部,窗口就向前移动;失序报文段将会缓存在接收方,而不是直接丢弃掉;只重传那些丢失的或者受损的报文;
  • tcp 是滑动窗口+选择重传,失序报文会缓存,但是ack是累计确认的方式;发送方并不在意每个报文段必须有ack,当连续三次ack或者超时时,便会重传;
  • 序号和确认号,序号是指当前传输的字节流的字节编号,在那个字节上,就这个意思,然后确认号ack,就是在声明我要的下一个字节是谁,累计确认下,三次重复ack,表明这个包我就没收到,要了三次了;
  • 超时后定时器时间加倍;
  • 三次ack后重传,为快速重传
  • 拥塞控制:慢启动,拥塞避免,快速重传;
原创粉丝点击