- 虚电路
- 独占真实的线路资源(路由器、网线等),很浪费资源,还需要和路上的路由器专门沟通
- TCP
- 目的是在不可靠的网络链路上建立一条可靠的发送方法,但其实主要还是靠失败重发
- TCP连接是虚拟的,连接的状态并不在线路上保存,而是由两端来保证,路上经过的路由器只会根据各种路由算法来机械地进行转发,最终要不要重发、怎么还原数据包都是由两端来处理的
- 基于端口
- 分块传输
- 通过滑动窗口来控制流量,也就是一次发几块,既避免资源浪费,又控制流量。像流水线一样,并行处理。
- 每个小块可能走的路径不同,最后会重组回原来的样子,路径由路上的路由器来根据各种路由算法自行决定
- 中间节点不承诺提供可靠的连接通道,分块完全有可能乱序、重复、丢失
- 失败重传
- 特定时间内没有收到确认,就说明丢了,就要重发了
- 只要每次发的多个块的最后一个块收到了确认,那么就当做前面几个一起发送的块也收到了。也就是说接收方万一先收到了后面的块,那么会缓存下来等着同一次发送的还没收到的块
- 三次握手
- 为了在发送数据之前,确认双方都可以正常收发数据并都准备好了
- 第一次让B明白,A的发送没问题,B的接收没问题。
- 第二次让A明白,A的发送没问题,A的接收没问题,B的发送没问题,B的接收没问题。
- 第三次让B明白,A的接收没问题,B的发送没问题。
- 而这也就是双方各个状态名字的由来,第一次后,A是SYNC-SENT,B是SYNC-RCVD;第二次后,A明白双方都可以了,所以是ESTAB-LISHED;第三次后,B才明白双方都可以了,所以才是ESTAB-LISHED