传输控制协议TCP

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),客户进入时间等待状态,服务器收到后就关闭,客户等待两个最长报文段寿命后也关闭,至此连接释放。

 

posted @   进击的胖虎  阅读(59)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示