seqnos
TCP有一套独特的抽象数据流的方式。数据流可以看作一个很长的字符串,这个字符串有64-bit的下标,就目前来看,64-bit已经非常够用了。然而,在TCPHeader中,空间是非常紧张的,并且每一个下标并不是有一个64-bit整数表示的,而是由一个32-bit数字表示的,我们管这个数字叫sequence number,而与之对应,这个64-bit整数叫做absolute sequence number
Random Start
为了提高攻击难度,seqno并不是从0开始的,而是从一个随机值开始的,这个起点叫做Initial Sequnce Numbre(ISN)
Beginning & Ending
并不是每一个有效的absolute seqno都对应一个有效的字符数据,起点和终点没有数据但占据了一个下标
TCPReceiver
receive
这部分负责把TCPSender传送过来的数据保存下来
如果收到的message包含SYN,那么需要把这个SYN对应的seqno保存下来;在没有收到SYN标记以前,所有message可以直接丢掉
把payload部分的数据推送给Reassembler,FIN作为标识符,辅助计算最后一个字符的下标
send
这部分负责告诉远端的TCPSender,以后应该给我从哪里开始发数据,我目前窗口有多大