计算机网络总结第一部分-TCP/IP

  1. 什么是TCP/IP协议

    1. TCP/IP协议模型, 包含了一系列构成互联网基础的网络协议, 是Internet的核心协议.
    2. TCP/IP协议模型, 将协议分为四个层次(括号内未对应7层模型):
      1. 链路层/网络接口层(物理层 + 链路层)
      2. 网络层(网络层)
      3. 传输层(传输层)
      4. 应用层(会话层, 表示层, 应用层)
  2. TCP三次握手 && 四次挥手(面试官特意问了某个状态是什么时候发生的, 并说明这样你才能快速找到出问题的地方, 非常重要, 所以掌握要细)

    1. tcp协议提供可靠连接服务, ip协议和udp都不不可靠
    2. RgdA0g.png
    3. 三次握手:
      1. Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
      2. Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
      3. Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
    4. 四次挥手:
      1. Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。(状态位FIN=1,发送seq=J)
      2. Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。(状态位ACK=1,发送ack=J+1)
      3. Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。(状态位FIN=1,发送seq=K)
      4. Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。(状态位ACK=1,ack=K+1)
      5. 注意此时客户端并未进入CLOSED状态,为了防止服务延迟,需要等待2MSL (Max Segment Lifetime/最大报文段生存时间)的时间,然后进入CLOSED状态。
    5. 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
      1. 保证TCP协议的全双工连接能够可靠关闭.
      2. 保证这次连接的重复数据段从网络中消失.
  3. TCP报文格式:

  4. TCP保证数据传输可靠性的方式:

    1. 校验和: 通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢弃TCP段,重新发送。TCP在计算检验和时,会在TCP首部加上一个12字节的伪首部。检验和总共计算3部分:TCP首部、TCP数据、TCP伪首部
    2. 序列号: 每条报文都有编号
    3. 确认应答: 发送端发送信息给接收端,接收端会回应一个包,这个包就是应答包, 没收到应答包, 就会重发.
    4. 超时重传: 超时重传是指发送出去的数据包到接收到确认包之间的时间,如果超过了这个时间会被认为是丢包了,需要重传.
    5. 连接管理: 三次握手, 四次挥手
    6. 流量控制: 而TCP根据接收端对数据的处理能力,决定发送端的发送速度,这个机制就是流量控制.
    7. 拥塞控制: 慢开始和拥塞避免, 刚开始倍数增加, 遇到阻塞改为每次+1
  5. TCP, UDP对比

    1. RgdknS.jpg
  6. TCP, UDP应用场景对比

    1. RgdiX8.jpg