zoukankan      html  css  js  c++  java
  • TCP协议

    TCP协议详解:https://www.cnblogs.com/qdhxhz/p/10267932.html

    TCP协议的三次握手和四次挥手:https://www.cnblogs.com/qdhxhz/p/8470997.html

    相关面试题: https://www.cnblogs.com/huajiezh/p/7492416.html

    为什么不进行两次握手:

      如果只有两次握手:客户端向服务端发送一个请求报文,但是在网络三种滞留一段时间,很长时间才会到达服务端,在客户端看来这是一个失效报文。一段时间以后服务端接收到这个请求报文,并发送一个确认报文,,但是在这个时候,客户端不会理睬这个确认报文,然后服务端还在一直等待客户端发送数据,这样就会造成服务端的浪费。

      如果只有两次握手:客户端发送请求报文,服务端发出确认后,就向客户端发送消息,客户端可能接收不到。

    为什么不进行四次握手:

      在进行三次握手之后,双发就已经确认对方能过接收到自己的信息了,第四次就已经没有必要了。

    TIME-WAIT存在的原因: --> 实现TCP全双工连接的可靠释放

      客户端发送在收到FIN时,就会发送ACK确认,然后就会进入TIME-WAIT。

      客户端发送的ACK可能会丢失,由于TCP协议的重传机制,服务器会重传FIN,直到在2*MSL(最长报文的寿命) 的周期里面没有再收到FIN。

      就是要确保在2MSL时间里,即使ACK的确认包丢失,也还能收到服务器重传的FIN。

    服务端设置保活计时器:

      没接到客户端的信息,计时器复位,一般2小时,若超过2小时就发送探测报文,发送n个,若客户端没有响应,则认为客户端down掉了,终止连接

    重传:

      超时重传:发送方在发送一个数据后,就开启一个定时器,若在规定时间没有收到接收方的ACK确认包,则重传。若到达一定次数后依然没有收到接收方的确认包就放弃,并发送一个复位信号(RST)。RTO:超时重传时间

      快速重传:接收方收到序号为1, 2, 4 的包,未收到 3 ,就会发送ack=2的确认报文,请求重传,如果发送方收到相同序号的ack,就会重传。

  • 相关阅读:
    Django基础(三)
    Python--时间模块.s(基本操作)
    Python--Pandas.1(Series的概念和创建,索引和切片,常用的基本操作)
    Python--Numpy.s(numpy的创建,通用函数,索引和切片,随机数,数据存读)
    主键约束 primary key
    not null 非空约束
    unique key 唯一约束
    表约束
    mysql操作
    python学习笔记
  • 原文地址:https://www.cnblogs.com/DDiamondd/p/10959350.html
Copyright © 2011-2022 走看看