- 实现可靠数据传输的主要措施有哪些?这些措施主要用于解决哪些问题?
1)差错检测。利用差错编码实现数据包传输过程中的比特差错检测或甚至纠正。
2)确认。接受方向发送方反馈接收状态。
3)重转。发送方重新发送接收方没有正确接收的数据。
4)序号。确保数据按序提交。
5)计时器。解决数据丢失问题。
- UDP与TCP分别如何实现复用与分解
UDP: UDP套接字<目的IP地址,目的端口号>,UDP套接字的端口号是UDP实现复用与分解的重要依据。
TCP: TCP套接字<源IP地址,源端口号,目的IP地址,目的端口号>,当一个TCP报文段到达主机时,4个字段都被用来将报文段分解到相应的套接字。
-
请画出TCP报文段结构,并简要说明各个字段的主要作用
- 源端口(16字节)和目的端口源(16字节):用于多路复用/分解来自或送到上层应用的数据
- 序号(32字节)和确认号(32字节):序号是对每个应用层数据的每个字节进行编号,确认序号是期望从对方接收数据的字节序号
- 首部长度(数据偏移)(4字节):TCP段的首部长度
- 保留字段(16字节):为今后使用
- URG-通知此报文段中有紧急数据;
ACK-标识确认序号;
PSH-尽快将报文段中的数据交付接收应用进程;
RST-表明TCP连接中出现严重差错,必须释放连接,然后再建立TCP连接
SYN-TCP报文段是一个建立新连接请求控制段或者是同意建立新连接的确认段
FIN-TCP报文段的发送端数据已经发送完毕,并请求释放TCP连接- 接收窗口(16字节):实现TCP的流量控制
- 校验和(16字节):提供差错检验功能
- 紧急指针(16字节):URG=1时,指出紧急数据最后一个字节在数据中的位置
- 选项:用于对方TCP通告其缓存能够接收的数据段的最大长度是MSS个字节
- 填充:取值全0,是为了整个首部长度是4字节的整数倍
- TCP为何采用三次握手来建立连接,若采用二次握手可以吗?为什么?
为了确保连接双方彼此完全清楚对方状态,从而保证可靠,稳定地建立连接,同时有效预防过期,失效的连接请求达到后,导致无效连接的建立。
不能采用二次握手,因为网络存在数据丢失,第二次握手控制段可能丢失,发起连接方没有收到第二次握手控制段,无法建立连接;接受连接方认为已建立连接,从而连接失效
- 请说明TCP建立连接与断开连接的过程,并给出主要状态转移
第一次握手,客户端向服务器发送(SYN=1,seq=x)的SYN段。客户端进入SYN_SEND状态
第二次握手,服务器收到SYN段,向客户端发送(SYN=1,ACK=1,seq=y,ack_seq=x+1)的SYNACK段,进入SYN_RECD状态
第三次握手,客户端收到SYNACK段,向服务器发送(ACK=1,sep=x+1,ack_seq=y+1)的ACK段,客户端进入ESTABLISHEN状态;当服务器收到ACK段,也进入ESTABLISHEN
- TCP如何保证可靠数据传输?
差错编码,确认,重传,记时器来保证TCP的可靠数据传输 - 请分别简述GBN协议和SR协议的工作过程
GBN协议的发送窗口大于等于1,发送端发送未得到确认前的多个分组;而接收端只能接收1个按序达到的分组,未按序到达的分组则丢弃,并且通知发送方重新发送按序分组。
SR协议的发送窗口和接收窗口大于等1,发送端发送多个分组,接收端缓存失序的分组,通知发送端重传丢失或者未被接收的分组 - 说明TCP滑动窗口机制,对比TCP滑动窗口与GBN协议的异同
TCP滑动窗口机制
- 数据分割成发送的数据块,再封装成TCP段,传递给IP
- 当TCP发出一个段后,启动一个计时器,等待目的端确认收到这个报文段。
- TCP首部设有校验和字段,用于检测数据在传输过程中是否发生差错。有差错,则丢弃和不确认;无差错,则向发送方发送确认段。
- TCP报文段的达到也可能会失序,TCP将根据序号对收到的数据进行重新排序,以正确的顺序交给应用层。
- 由于存在网络延迟和重传机制,TCP的接收端可能接收重复的报文段,需要根据序号丢弃重复的报文段。
- TCP提供流量控制,防止较快主机发送数据太快,致使较慢主机的缓冲区溢出。
异同点:
GBN协议中,发送端的发送窗口大小是固定的,接收端的接受窗口大小等于=1,发送方只会对当前发送窗口的"基序号"的分组进行记时,只使用一个记时器;对于失序分组,接收端则丢弃。
TCP滑动窗口中,发送端和接收端的窗口大小是动态变化,每发送一个报文段,启动一个计时器。对于失序的报文段,进行重新排序。
- TCP与UDP的主要区别是什么?
UDP提供不可靠,无连接,数据报传输服务的传输层协议;
TCP提供面向连接的可靠数据传输服务的传输层协议,TCP通过三次握手建立连接,通过四次挥手断开连接。 - TCP如何实现拥塞控制
通过调节窗口的大小实现对发送数据速率的调整;网络未发生拥塞时,逐渐加性增大窗口大小,网络拥塞时,乘性快速减小窗口大小。