赞
踩
目录
定长——8个字节,容易做解包
16位源端口 + 16位目的端口 + 16位UDP长度(决定了能传输的数据最大长度是64K) + 16位校验和(校验和就是为了防止数据错误,类似hash算法,发方计算得到校验和,收方用相同hash计算,比对数据,如果收端的hash值与发端的hash不一致,会直接丢弃)
无连接的(不用连接就发送);
不可靠的(只管发,至于发成功没,发正确没是不能确定的)
面向数据报文(从应用层来的数据,我收到就直接发,不会拆分也不会合并,也没有发送缓冲区)
职责:
进程-进程通信
TCP是可靠的(但不能保证是安全的)
TCP会尽自己最大努力,将数据发给对方
如果真的发不过去,TCP至少会告诉进程,让进程知道我没发过去,数据失败了(UDP不可靠就在这里,任何反馈信息都没有,发出去就不管了)
校验和也保证了我数据大概率无错
TCP可以保证收到的数据一定是有序的,按照发放顺序
TCP会根据对方的接收能力和网络线路的承载能力,进行流量的控制
确认-应答机制——对方的TCP对收到的TCP数据确认应答,通过32位序号SN和32位确认序号ASN实现
确认应答机制:
【双方维护各自的SN,ASN则是对对方SN的回应】
超时重传机制:
如果没有收到应答:
可能对方确实没有收到?
可能对方的应答还没来?
可能对方的应答丢包了?
总之,发方不应该无限期等下去,可以定一个时限
无论哪种情况,发方是不管的,如果超过了时间还没收到,发方就重发一份,这就要求 收方 要有去重能力(根据序列号去重),收方对于已经收到的丢弃就行;
发方也不应该无限的超时重传,所以,超时重传的次数也有限
达到上限次数后,就实在没办法了,所以TCP会关闭连接再通知进程(以异常返回),最后的最后,TCP会发送 reset segment 出去给收方(最后的努力)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。