美文网首页
TCP 详解

TCP 详解

作者: 曹小恒 | 来源:发表于2018-10-24 00:15 被阅读0次

    可靠传输的一些机制
    连接管理:3次握手,4次挥手,应答机制

    图片.png

    1)应答机制:

    From To SEQ ACK LEN
    A B 100 100 1
    B A 100 101 80
    A B 101 180 4

    应答时延:接收端为了减少发送包的数量,提出了应答时延,在接受数据之后,并不立刻发送一个应答数据包,而是计入一个定时器,有其他的数据能搭上顺风车或者溢出了,就发送(MTU=1500)
    NAGLE 算法:TCP 基于字节流,在Telnet 传输中会出现只有一个字节的数据包,而TCP 和 IP 首部就有40个字节,性能会浪费.所以,我们会在服务器端应答包达到之后,发送下一个数据包,数据在客户端被缓存,到达指定大小或上一个应答包达到之后,再发送(MTU=1500)
    应答时延和 NAGLE 在发送端和接收端分别减少了包的数量.
    2)三次握手
    图中 SYN 的值是1,即包长度是1
    3)四次挥手

    • 客户端发送 FIN 包, seq = x, ack= y
    • 服务端先发送 ack = x+1
    • 服务端再发送 FIN 包, seq = y
    • 客户端发送 ack = y+1,成功断开,客户端进入 TIME_WAIT 阶段,又称为2MSL 阶段, MSL 是系统中最大的报文生存时间, TCP 报文在网络中生存时间超过这个值就要被丢弃(等待2MSL 是为了 ACK 可能的丢失,这样的话服务端会重发 FIN)

    为什么是三次握手
    这是双向通信的最低值.因为信道不可靠,如果只有两次,如果客户端发送的 SYN 在网络中滞留了,客户端实际上因为超时放弃了此次连接,一段时间后,客户端收到SYN, 建立了通信,但是发送的 SYN 不会被客户端应答,这样就造成了资源的损失.
    四次的话,可以合并,没有必要

    为什么是四次挥手
    TCP 是全双工的,可以半关闭,因此需要双方都关闭连接,并确认对方也已经关闭

    超时重传
    当一个包发送之后,开启一个定时器,如果时间到了没有收到发送包的应答包,重传一份

    快速重传
    收到同一个包的三个应答包之后,立刻重传

    拥塞控制
    慢启动,加法增大,乘法减少,

    图片.png

    相关文章

      网友评论

          本文标题:TCP 详解

          本文链接:https://www.haomeiwen.com/subject/kophhftx.html