TCP详解和STCP
tcp连接的特点
- 提供面向连接的,可靠的字节流服务 。
- 为上层应用层提供服务。不关心传输的具体内容。
tcp如何保证可靠性
分块传输:数据被分割成最合适的数据块(UDP的数据报长度不变)
等待确认:通过定时器等待接收端发送确认回复,收不到确认则重发
确认回复:收到确认后发送确认回复(稍微延迟一下发送)
数据校验:保持首部和数据的校验和,检测数据传输过程有无变化
乱序重排:接收端能重排数据,以正确的顺序交给应用端
重复丢弃:接收端能丢弃重复的数据包
流量缓冲:两端有固定大小的缓冲区(滑动窗口),防止速度不匹配丢数据
TCP报头讲解
宏观位置
TCP数据被封装在IP数据报中
TCP:传输控制协议
面向连接的可靠传输协议 --在完成了传输层基本工作的基础上还需要保证传输的可靠性
面向连接:传输数据前先通过三次握手建立端到端的虚链路
可靠传输:4种可靠传输机制 排序、确认、重传、流控(滑动窗口机制)
首部格式:
第1-2两个字节:源端口号
第3-4两个字节:目的端口号
第5-8四个字节:32位序号。tcp提供全双工服务,两端都有各自的序号。编号:解决网络包乱序的问题
第9-12四个字节:32位确认序列号。上次成功收到数据字节序号加1,ack为1才有效。确认号:解决丢包的问题
第13位字节:首部长度。因为任选字段长度可变
后面6bite:保留
随后6bite:标识位。控制各种状态
第15-16两个字节:窗口大小。接收端期望接收的字节数。解决流量控制的问题
第17-18两个字节:校验和。由发送端计算和存储,由接收端校验。解决数据正确性问题
第19-20两个字节:紧急指针
标识位的说明
紧急URG:为1时,表示紧急指针有效,告诉系统此报文段中有紧急数据;
确认ACK:确认标识,连接建立成功后,总为1。为1时确认号有效
推送PSH:接收方应尽快把这个报文交给应用层,为1
复位RST:复位标识,重建连接。当RST=1,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立连接;
同步SYN:建立新连接时,该位为0
终止FIN:关闭连接标识
URG (urgent紧急) — 紧急标志位,表示的是此报文段中有紧急数据,将紧急数据排在普通数据的前面;当接受端收到此报文后后必须先处理紧急数据,而后再处理普通数据。 通常用来