赞
踩
是一种面向连接的可靠传输协议。
注:与我之前博客HCIA的学习(2)结合一起看
面向连接:数据传输前收发双方建立一条逻辑通路
特点:
源IP、源端口、目IP、目端口----->TCP会话的四元组信息。
套接字:IP:Port
确认序列号表明是接收方期望收到发送方发送的下一个字节的序号;且表示之前的所有数据均已接收。–>累积确认。
ACK确认位:当ACK=1时,确认序列号有意义。在连接建立后所有传输的报文段都必须将该标记位置为1。
SYN同步位:代表连接请求。
FIN终止位:表明此报文段发送方数据已发送完毕,要求释放连接。
RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接。
URG紧急位:当URG=1时,表明此报文段中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急指针使用。
PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,不再等待缓存填满再向上交付。
TCP的可靠性
MTU---最大传输单元(数据帧,二层,协商在数据链路层)
MSS---最大段长度----TCP分段--->该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定。(可选项字段。)
如果在本地进行了分段操作,则不需要进行分片操作。
RTT---往返时间
RTO---超时重传时间;略大于RTT时间--->动态变化的数值。加倍的形式进行变化(可能服务器资源紧缺,避免资源加剧)。
超时重传—快速重传
在快速重传机制中,并不是因为RTO时间到达从而触发重传机制,该重传机制是根据对端的反馈信息进行重传,当连续3次收到相同的ACK报文时,发送端会重传数据。这3个连续的ACK报文被称为冗余ACK。
累积确认----选择确认
确认报文在TCP可选项里携带未接收到的数据信息(例:1000-1999缺失)
选择确认机制也是需要进行协商的。不协商默认累计确认,现在大部分电脑携带选择确认机制。
窗口:指定的是无需等待确认应答,而可以继续发送数据包的最大值。
窗口大小体现在缓存区的大小。
TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小。即rwnd变量是可变的。
TCP连接建立需要解决的问题:
1、要使双方均知晓对方的套接字信息。
2、允许双方进行参数协商(MSS、窗口值、是否使用选择确认机制)
3、给各设备进行资源分配
CLOSED:关闭状态
LISTEN:监听状态
SYN-SENT:同步已发送状态
SYN-RCVD:同步已接收状态
ESTABLISHED:连接已建立状态
序列号:seq=x,y
x,y:随机生成
数据错乱(序号回绕):例如客户端发送序列号为A的报文并进行超时重传,但A报文并未丢失,直到客户端发送一轮循环(A–>Z–>A),要发新一轮A时,之前的A报文抢先新A报文发送到服务器,会导致正常报文(新A)被服务器丢弃,接收伪(错误)报文(旧A),严重会导致计算机宕机
解决方法:在TCP首部里的选项里加一个时间戳(例:服务器发送报文里携带上一个客户端报文发送的时间和这个报文发送的时间,客户端接收报文时会查看报文里携带的上一个客户端报文发送的时间,如果与客户端现在的时间相差过大就会认为此报文为无效报文丢弃)
RTT就是根据时间戳算出来的,(动态变化)网络波动小,RTT小
**TCP的保活计时器:**2h(当第三次握手报文发出后,客户端挂了,服务器的保持连接时间,如果在时间内客户端回复,即继续用这个连接,如果2h服务器未收到客户端的信息,服务器则发送10次探测报文,如果客户端回复,则保持连接,未收到回复则断开连接)
同步申请建立连接:
1、对双方各自资源的释放过程
2、任何一方都可以在数据传输结束后发送连接释放通知
ESTABLISHED:连接已建立状态
FIN-WAIT-1:终止等待1状态
CLOSE-WAIT:关闭等待状态
FIN-WAIT-2:终止等待2状态
LAST-ACK:最后确认状态
TIME-WWAIT:时间等待状态
CLOSED:关闭状态
MSL:最大报文段寿命,即一个报文段在网络中能传输的最大时间(2min)
多次u+1:TCP过程中若不携带数据,相当于一个报文
**TCP延迟确认机制:**当服务器与客户端同时没有数据发送时,让服务器发送的第一个报文等待服务器将发送缓存释放的时间,与第二个报文一起发送(机制开启才可以同时释放,也是数据报文和确认报文合并的原因)
同步申请释放连接:
CLOSING:同时关闭状态
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。