zoukankan      html  css  js  c++  java
  • TCP详解

     一 、TCP是如何利用IP的:

    • IP:无连接,不可靠
    • TCP将应用程序的传输数据分割成合适的数据块
    • 定时器
    • 延迟确认
    • 检验和:CRC校验
    • 流量控制:防止缓存区用完

    二、 TCP首部

    头部20个字节(IP也是20字节的首部)

    socket: IP地址 +  端口号(插口)

    socket pair: 自己IP地址 + 对方端口号  + 对方IP地址 + 对方端口号

    解释:https://www.cnblogs.com/fantastic123/p/8968132.html

    三、TCP的状态变迁

     s: server  c: client

    三个部分:

    建立连接、连接、断开连接

    1.三次握手

    目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”

     

    clinet 发送: SYN = 1, ACK = 0 , 序列号为M(随机)

    server发送:SYN = 1 , ACK = 1 ,序列号为N(随机),确定号为M+1

    client 发送: ACK = 1 ,确定号为N+1

    确定号有效,则有ACK一直为1

     2.TCP连接终止过程——四次挥手

     

    因为TCP是全双工的 ,所以双方必须都关闭才可以,一方为主动,一方为被动

    client:FIN = 1, 序列号M

    server:ACK=1, 确定号M+1

    server:  FIN  = 1, 序列号为N

    client:  ACK = 1, 确定号N+1

     3.TCP通信过程及状态转换

     

    四、TCP内部使用的定时器

    1.重传定时器(接收方没有确认,也没有回复)

    2.坚持定时器persist(window size,确定窗口还有没有能接收的空间  )

    3.保活定时器keepalive(一直保存连接,可以在应用程序中发送消息代替)

    4.2MSL定时器(TIME_WAIT)(本地socket无法使用,是本次连接的包彻底消失,不影响下一次的连接)

  • 相关阅读:
    前端线上项目汇总
    gulp构建工具学习汇总
    ES6知识点汇总
    页游技术点汇总中
    前后端方案汇总
    vim常用命令
    互联网哲学
    js调试技巧汇总中
    windows下Docker安装MySQL
    RabbitMQ几个常用面试题
  • 原文地址:https://www.cnblogs.com/zgqcn/p/10884919.html
Copyright © 2011-2022 走看看