zoukankan      html  css  js  c++  java
  • TCP IP知识梳理

    1. 为什么需要TCP协议?工作在哪一层?
      1. 需要保证包交付的可靠、按序、完整,因此有TCP协议
      2. IP层不可靠,因此在传输层
    2. 什么是TCP连接
      1. 面向连接(一对一)、可靠、字节流(无边界、有序)
    3. 如何唯一确定一个TCP连接
      1. 源地址+端口,目的地址+端口确定一个唯一的连接
    4. TCP UDP 的区别及应用场景
      1. 从连接的角度,TCP先建立连接再传,UDP直接传
      2. 从对象的角度,TCP一对一传,UDP一对多(一对一,多对多)
      3. 从可靠的角度,TCP可靠交付,UDP尽力交付不保证
      4. 从拥塞、流量控制的角度,TCP有拥塞控制与流量控制,UDP没有
      5. 从首部开销的角度,TCP长且可变,UDP固定八个字节
        1. 应用场景:TCP(FTP、HTTP等)UDP(视屏、音频、广播通信)
    5. 三次握手
      1. 客户端发送(表示向服务器端发起连接)
      2. 服务器端收到,发回“确认应答”
      3. 客户端发送,变成established状态,服务器端收到后也变成established状态(仅此次可以带数据发送,前两次都不行,因为established了)
    6. 为什么是三次握手
      1. 避免历史连接(假设一个旧的报文比新报文先到server,server回了,client收到的旧报文的回复,可以发现是个过期报文,然后发RST回去终止这个连接,而如果是两次,这个连接就建立了,就离谱)
      2. 同步初始序列号
      3. 避免资源浪费(新旧SYN报文先后到达,若二次握手会导致多个连接建立)
    7. 什么是四次挥手
      1. 客户端打算关闭,发送关闭的FIN_WAIT_1报文
      2. server发送ACK应答报文,并进入CLOSED_WAIT状态
      3. client收到后进入FIN_WAIT2状态
      4. server处理完数据后,向client发送FIN
      5. client收到后,回ACK
      6. server收到后,关闭了
      7. 最后client等2MSL后,也关闭
    8. 为什么需要四次挥手
      1. 关闭连接时,client不发送,但是要接收数据
      2. 服务器回ACK后,可能还有数据需要发送和处理,要发的发完了,再发FIN
    9. TIME_WAIT时间为2MSL的理由
      1. 1MSL为一个报文的最大生存时间
      2. 但有可能万罗中存在来自发送方的报文,还需要接收方响应再回,一来一回2MSL
    10. TIME_WAIT存在的理由
      1. 防止旧连接的数据包(旧连接的数据,由于TIME_WAIT时间过短,第二个连接开始了,他被接收了,离谱)
      2. 保证连接的正确关闭(等待足够的时间确保最后的ACK能让被动关闭方接收,帮助其正常关闭)
    11. 待续
  • 相关阅读:
    牛客网-2019校招真题-跳格子游戏(斐波那契数列)
    牛客网-2019校招真题-学数学
    牛客网-2019校招真题-方格走法
    牛客网-2019年校招真题-通过率降序(二)
    牛客网-2019年校招真题-通过率降序(一)
    常用数据库连接URL的举例
    Css3-渐变
    清除浮动的方法
    html中的条件注释
    Css中的定位
  • 原文地址:https://www.cnblogs.com/tillnight1996/p/12741302.html
Copyright © 2011-2022 走看看