Learning Records 计算机网络( 三 )


Learning Records 计算机网络

文章插图
一个TCP的建立需要以下步骤
  • 客户端发送一个SYN报文段,并且指明想要的接收端端口和自己的ISN1
  • 服务器也发送自己的SYN报文段进行响应,并且包含自己的ISN2,同时为了确认客户端的SYN,将ACK置为ISN1+1所以每次发送一个报文段,ISN都会+1,这样可以防止丢失的情况
  • 同样为了确认服务端的ISN,客户端会将ACK置为ISN2+1所以可以发现,TCP的这三次握手主要目的在于交换连接双方的初始序列号ISN
终止需要4次挥手
  • 连接的主动关闭者发送一个FIN段指明接收者,同时发送自己的序列号ISN1
  • 被动关闭者将ACK置为ISN1+1 。此时,上层的程序会被告知连接的另一端已经发出了关闭请求 。
  • 然后被动关闭者变为主动关闭者,并发送自己的FIN
  • 为了完成连接的关闭,最后一个报文还包含一个ACK用于确认上一个FIN,防止FIN丢失
TCP的成块数据流TCP使用的被称为滑动窗口协议的另一种流量控制方法该协议允许发送方在停止并等待确认前可以连续发送多少个分组由于发送方不必每发送一个数据就等待确认,所以这可以加速数据的传输用三个术语来描述窗口左右两边的运动
  • 窗口合拢:左边沿向右收缩,一般发生在数据被发送和确认时
  • 窗口张开:右边向右移动,一般发生在另一端的接收进程读取已经确认的的数据并释放了TCP的接收缓存时
  • 窗口收缩:右边沿向左移动如图所示:
    Learning Records 计算机网络

    文章插图
    (字丑还请见谅doge由接收方提供的滑动窗口进程通常可以由接受进程控制,同时也会影响到TCP的性能----------慢启动TCP支持一种叫慢启动的算法,它保证了新分组进入网络的速率和另一端确认的速率相同它为发送方提供了一种窗口:拥塞窗口在工作时,发送方取拥塞窗口和通告窗口中的最小值作为发送上限 。拥塞窗口是发送方的流量限制,通告窗口是接收方的流量限制
TCP的超时和重传超时重传是TCP保证安全的一个重要的机制原理是在发送一个数据过后就开启一个定时器,如果在一定的时间内没有接收到ACK报文,那么就重新发送数据,直到发送成功为止重传超时时间(RTO):RTO的设定会影响到超时传输协议的效率,其值的设定是一个关键的参数传输往返时间(RTT):固定的超时值一般会认为RTO的取值会略大于RTT使用低通过滤器来更新一个被平滑的RTT估计器新的SRTT=α×(旧的SRTT)+(1-α)×(新的RTT样本)Karn算法:在一个超时和重传发生时,在重传数据到达确认前,不能更新RTT估计器,因为不知道ACK对应哪次传输有关算法还有拥塞避免算法,快速重传和快速回复算法等等
TCP的坚持定时器如果一个确认丢失了,那么发送方和接收方之间可能会因为持续等待而发生死锁为了防止死锁的产生,所以有了坚持定时器 。以周期性地向接收方查询
TCP的保活定时器如果TCP连接的双方都没有向对方发送数据,则在两个TCP模块之间不交换任何信息如果一个给定的TCP连接在两个小时都没有任何动作,则服务器向客户发送一个探查报文片段则客户主机必须处于以下4种情况之一
  • 客户主机依然正常运行,并且从服务器可达
  • 客户主机崩溃,并且关闭或者重新启动
  • 客户主机崩溃并已经重新启动
  • 客户主机正常运行,但是从服务器不可达第一种情况客户主机并不会发现保活探查的发生,整个过程对TCP层是透明的只有第2,3,4种情况时TCP会发送差错报告
HTTP协议包括4个请求:

经验总结扩展阅读