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