运输层协议
- 通信和信息处理:运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,也是用户功能中的最低层。
- 运输层:通信的真正断点并不是主机而是主机中的进程,即端到端的通信是应用进程之间的通信。
- 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。
重要功能
复用
在发送方不同的应用进程都可以使用同一个运输层协议传送数据。
分用
指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
两个主要协议
UDP(用户数据报协议)
- 无连接:传送数据之前不需要先建立连接
- UDP用户数据报
- 不可靠的通信信道。
TCP(传输控制协议)
- 面向连接:传送数据之前需要先建立连接
- TCP报文段
- 尽管下面的网络不可靠,这种相当于一条全双工的可靠通信信道。
端口
服务器
系统端口号:
- FTP:21
- SMTP:25
- DNS:53
- HTTP:80
- HTTPS:443
-登记端口号:1024~49151.
客户端
49152~65535.
UDP
- 无连接
- 尽最大努力交付
- 面向报文
- 没有拥塞控制
- UDP支持一对一、一对多、多对一和多对多的交互通信
- UDP首部开销小(只有8字节,TCP20字节)
首部格式
- 源端口,需要对方回信时选用,不需要时可全0
- 目的端口,终点交付报文时使用
- 长度,最小值是8
- 检验和,检测UDP用户数据报在传输中是否有错,有错就丢弃UDP报文
TCP
特点
- 面向连接
- 每一条TCP连接只能有两个端点
- 可靠交付(可靠:无差错、不丢失、不重复,按序到达)
- 全双工(两端都设有发送缓存和接收缓存)
- 面向字节流(流指的是流入到进程或从进程流出的字节序列)
TCP的连接
- TCP把连接作为最基本的抽象
- TCP连接的端点叫做套接字(socket)或插口
- socket = (IP地址:端口号)
- 每一条TCP连接唯一地被通信两端的两个端点(套接字)所确定
- 同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中
可靠传输的工作原理
TCP发送的报文段是交给IP层传送的。但IP层只能提供尽最大努力服务,TCP下面的网络所提供的是不可靠的传输,故TCP必须采用适当的措施使得两个运输层之间的通信变得可靠。
理想的可靠:
(1)传输信道不产生差错
(2)不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
停止等待协议
- 停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
- 可靠传输协议:A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。(超时重传)
- 要实现超时重传,就要在每发送完一个分组时设置一个超时计时器。
连续ARQ协议
- 接收方一般都是采用累积确认的方法:在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。
- GO-BACK-N:如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。