TCP工作c在哪一层、为什么需要TCP协议?
TCP/IP是一个四层的体系结构,主要包括:应用层、传输层、网络层和网络接口层。
五层协议的体系结构主要包括:应用层、传输层、网络层,数据链路层和物理层。
OSI七层协议模型主要包括是:应用层(Application)、表示层(Presentation)、
会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。
发送端在层与层之间传输数据时,每经过一层时会被打上一个该层所属的首部信息。反之,接收端在层与层之间传输数据时,每经过一层时会把对应的首部信息去除。
IP 层是不提供可靠性保障的、无状态的,它不保证网络包的交付、不保证网络包的按序交付、也不保证网络包中的数据的完整性。如果需要保障网络数据包的可靠性,那么就需要由上层(传输层)的 TCP 协议来负责。因为 TCP 是一个工作在传输层的可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的。
TCP首部
使用WireShark抓包分析三次握手
TCP 建立连接为什么需要三次握手
针对这个问题,首先我们需要知道什么是连接,只有知道连接的定义,我们才能去尝试回答为什么 TCP 建立连接需要三次握手。什么是TCP连接?用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。所以,重要的是为什么三次握手才可以初始化Socket、序列号和窗口大小并建立 TCP 连接。接下来以三个方面分析三次握手的原因:
如果客户端的 SYN 阻塞了,重复发送多次 SYN 报文,那么服务器在收到请求后就会建立多个冗余的无效链接,造成不必要的资源浪费。
TCP 协议的通信双方, 都必须维护一个「序列号」, 序列号是可靠传输的一个关键因素,它的作用:
接收方可以去除重复的数据;接收方可以根据数据包的序列号按序接收;可以标识发送出去的数据包中, 哪些是已经被对方收到的;
我们都知道 TCP 连接建立是需要三次握手,假设攻击者短时间伪造不同 IP 地址的 SYN 报文,服务端每接收到一个 SYN 报文,就进入SYN_RCVD 状态,但服务端发送出去的 ACK + SYN 报文,无法得到未知 IP 主机的 ACK 应答,久而久之就会占满服务端的SYN 接收队列(未连接队列),使得服务器不能为正常用户服务。
为什么 TIME_WAIT 等待的时间是 2MSL?
超时与重传
超时重传 :在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据TCP 会在以下两种情况发生超时重传:
重传超时时间RTO计算
TCP超时与重传中最重要的部分就是对一个给定连接的往返时间(RTT)的测量。由于路由器和网络流量均会变化,因此我们认为这个时间可能经常会发生变化,TCP应该跟踪这些变化并相应地改变其超时时间。
滑动窗口
win这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。起到流量控制的作用
可用窗口的大小为 0 时,表明可用窗口耗尽,在没收到 ACK 确认之前是无法继续发送数据了。
拥塞控制
前面的流量控制是避免「发送方」的数据填满「接收方」的缓存,但我们并不知道当时的网络状况是怎样的,在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大....
每一个 TCP 连接都会维护一个拥塞控制窗口(cwnd),它决定了发送方同时能向接收方发送多少数据,其作用主要有两个:
使用 TCP 慢启动时,发送方每收到一个响应方的 ACK 消息,拥塞窗口大小就会加一。当拥塞窗口大小大于慢启动阈值时,就会使用拥塞避免算法:
线性增长:每经过一个往返时间 RTT,拥塞窗口大小会加一;积式减少:当发送方发送的数据包丢包时,慢启动阈值会设置为拥塞窗口大小的一半;
慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK,拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启动以报文段大小为单位进行增加)。发送方取拥塞窗口与通告窗口中的最小值作为发送上限。拥塞窗口是发送方使用的流量控制,而通告窗口则是接收方使用的流量控制。
当cwnd超过一定的阀值,就会启动拥塞避免算法.
网络就会慢慢进入了拥塞的状况了,于是就会出现丢包现象,这时就需要对丢失的数据包进行重传。当触发了重传机制,也就进入了「拥塞发生算法」。当网络出现拥塞,也就是会发生数据包重传,重传机制主要有两种:
页面更新:2024-06-14
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号