TCP机制与实现

TCP的机制与实现

version 1.0

2008-11-3

一、  TCP的任务:

在不可靠的IP之上,实现可靠的端到端的字节流服务;

 

二、  要解决的问题:

l         数据分段,将合适大小的数据段交给IP传送;

l         确认与重发;

l         校验和以保证数据传输的正确性;

l         失序数据的排序,丢弃重复数据;

l         流量控制;

l         拥塞避免;

三、  问题与解决方案

1,             建立连接的需要——处理网络中的延迟、重复分组

问题:如果连接建立、数据发送、连接断开的分组都存储在网络中,并在后面某个时候有规律地到达接收端,则可能:

1)  如果连接还存在,这些数据会被接收方丢弃;

2)  如果连接已经断开,接收端可能会再次执行连接建立、数据处理、断开的过程;

解决思路:

1)  废弃使用过的传输地址;

2)  每个连接分配一个标识符;

3)  保证每个分组在网络中停留时间不超过某个已知值;

解决办法:

2MSL等待?对于服务器来说是一个连接4元组的等待还是监听端口的等待?如果是4元组的等待,OS应该允许socket被重用,但是需记录已经释放的4元组。

 

根据TCP的标准状态机实现连接建立与关闭。

 

2,             确认与顺序收发

TCP头中的Seqack_seq,对每个发送的字节进行编号,收到小序号的报文段直接丢弃,收到大序号的报文段,发送ack通知对方自己已成功收到的数据,要求对方重发;该报文段应该缓存起来,以处理仅仅是报文段到达接收方顺序不对的情况;

TCP不提供要求对方发送指定报文段的能力;

RFC1106引入NAK扩展,要求对方发送指定的报文段;缓存已获得的大序号的数据(可能是包丢失,或失序),在获得重发报文段时,一次性确认收到的所有数据,并将所有数据提交给应用;

接收方收到重复ACK时不应立即重发数据,见“快速重发与快速恢复”。

 

实现:

存储待发Segment

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值