解决的问题
实现两台主机中进程之间的通信。
复用和分用
复用
多个应用层进程可使用同一运输层服务
分用
运输层把收到的信息分别交付上面应用层的相应进程
提供可靠性
TCP
- 面向连接
- 面向字节流
- 提供可靠性
- 不提供广播或多播服务
- 协议数据单元是TCP报文段
- 有拥塞控制
每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
套接字:IP地址+端口号
UDP
- 无连接
- 面向报文(给什么数据,传什么数据)
- 尽最大努力交付
- 可以一对多、多对一、多对多
- 协议数据单元是UDP用户数据报
- 没有拥塞控制
停止等待协议
无差错情况:停止等待
每发送完一个分组就停止发送,等待对方的确认,在收到确认后再发送下一个分组。
出现差错:超时重传
每发送完一个分组时设置一个超时计数器。
如果超时还未收到确认,就重传分组;在超时前收到确认则撤销该超时计数器。
A发送完一个分组后必须暂时保留已发送到分组的副本,在收到响应确认后才能清除这个副本。
分组和确认分组必须进行编号,这样才能明确发送出去的分组是哪一个收到了确认,哪一个没有收到确认。
可以处理确认迟到的情况。
超时计数器设置的重传时间应当比数据在分组传输的平均往返时间长一些。如果设定得很长,通信效率就会降低;如果设定得太短,会导致不必要的重传,浪费了网络资源。
确认丢失
确认丢失时,发送方进行超时重传,而接收方丢弃这个重复的分组,向发送方发送确认。
确认迟到
确认迟到了,发送方进行超时重传,而接收方丢弃这个重复的分组,向发送方发送确认。
发送方收到迟到的确认什么也不做。
慢开始
TCP进行拥塞控制的一种算法。
拥塞是运输层的概念。
发送方维持一个变量:拥塞窗口,让自己的发送窗口等于拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度。
判断网络拥塞的依据就是出现了超时。网络拥塞时就把拥塞窗口减小一些。
慢开始:由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。
发送方每收到一个对新报文段的确认就使发送方的拥塞窗口+1。
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!