TCP连接有两个端点,不是运输层的协议端口,而是套接字或接口。
套接字socket=(IP地址:端口号)
TCP首部格式:
1.源端口和目的端口。
2.序号,给每一个字节流编号。
3.确认号,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号=n,则n-1为止所有数据都已正确收到。
4.数据偏移,指出数据起始位置有多远,实际上指出首部长度。
5.保留,有六个控制位。紧急URG,与紧急指针连用,把紧急数据插入最前面。确认ACK,表示建立连接。推送PSH。复位RST,为1时,释放连接,重新建立运输连接。同步SYN。终止FIN,释放连接。
6.窗口,作为接收方让发送方设置发送窗口的依据。明确指出允许对方发送的数据量,窗口值经常动态变化。
7.检验和。
8.选项与填充。
超时重传时间的选择:RTO=RTTs+4×RTTd;新的RTTd=(1-b)×旧的RTTd+b×(RTTs与新的RTT样本之差)b推荐为0.25。若重传了,则扩大二倍。
TCP流量控制:利用滑动窗口机制让发送方发送速率不要太快。
由接收方的缓存能力来决定发送窗口大小,并告诉发送方。当窗口大小为零时,持续计时器将周期性发送零窗口探测报文段。
TCP拥塞控制
慢开始与拥塞控制:先将发送窗口以2的次方开始指数增长,直到增长到慢开始门限值,再采用拥塞控制,即每次将发送窗口增大1。直到出现超时重传,说明发生了拥塞,再将门限值设为此时窗口值的一半,将窗口值设为1,重复慢开始与拥塞控制。
快重传和快恢复:为了避免某些报文段丢失而直接重新慢开始造成资源浪费,采用快重传,即若发送过程中丢失了报文段,接收方在收到下一个报文段时,回复一个重复确认,若发送方收到三个重复确认,则直接重传丢失的报文段。快恢复是指收到三个重复确认后,将门限值与窗口值都设为原来的一半,再执行拥塞控制。
TCP连接建立:TCP服务器先创建传输控制块,处于监听状态,然后客户发送一个SYN=1,seq=x的报文段,服务器收到后回复SYN=1,ACK=1,seq=y,ack=x+1的报文段,客户再发送一个ACK=1,seq=x+1,ack=y+1的报文段,则连接建立。
TCP连接释放:由客户发出释放报文段(FIN=1,seq=已发送的数据最后一个字节+1),服务器收到后,通知自己的应用进程并回复(ACK=1,seq=v,ack=u+1),客户到服务器的连接就释放了,但服务器发的数据客户还能收到。等到服务器数据传输完毕,发送(FIN=1,ACK=1,seq=w,ack=u+1),客户回复(ACK=1,seq=u+1,ack=w+1),客户进入时间等待状态,服务器收到后就关闭,客户等待两个最长报文段寿命后也关闭,至此连接释放。
标签:重传,seq,ACK,传输控制协议,报文,TCP,发送 From: https://www.cnblogs.com/LCAB/p/16794656.html