一、TCP输出

  

  1)对端必须确认收到的数据,伴随来自对端的ACK的不断到达,本端TCP至此才能从套接字发送缓冲区中丢弃

             已确认的数据;TCP必须为已发送的数据保留一个副本,直到它被对端确认为止

  2)每个数据链路都有一个输出队列,如果该队列已满,那么新到的分组将被丢弃,并沿协议栈向上返回一个错

     误:从数据链路到IP,再从IP到TCP。TCP将注意到这个错误,并在以后某个时刻重传相应的分节。应用进

     程并不知道这种暂时的情况

二、UDP输出

  

  1)每个数据链路都有一个输出队列,如果该队列没有足够的空间存放从上层来的数据报或它的某个片

     段,内核通常会返回一个ENOBUFS错误给它的应用进程

  2)有些UDP的实现不返回上面的错误