怎样保证TCP的可靠性?
(1)保证数据能够到达对方
(2)保证数据不重复、不乱序
应答确认、超时重传
滑动窗口:发送方发送数据,接收方速率匹配
拥塞控制算法:发送方发送数据的速率,与当前网络情况的匹配
(3)保证数据不失真
16位校验和,冗余检验、TCP头部和数据部分
TCP的报文头部
1、序号(seq):在一个TCP连接中传送的每一个字节流中的每一个字节都按顺序编号。序号值由系统初始化的某一个随机值ISN和本报文段第一个字节数据在整个字节流中的偏移量组成。
2、确认号(ack):用作对另一方发送的tcp报文段的响应。
例如:B正确收到了A发送过来的一个报文段,其序号字段值是501,而数据长度是200字节(序号501 ~ 700), 这表明B正确收到了A发送的到序号700为止的数据。
因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701。
总之,应当记住:
若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。
3、头部长度: