TCP协议中常见的问题

文章目录

  • TCP协议中常见的问题
      • 谈一谈对OSI七层模型和TCP/IP四层模型的理解?
      • 谈谈TCP协议的3次握手过程?
      • TCP协议为什么要3次握手?2次,4次不行吗?
      • 谈谈TCP协议的四次挥手过程?
      • 什么是流量控制?
      • 什么是滑动窗口?
      • TCP和UDP有什么区别?

TCP协议中常见的问题

谈一谈对OSI七层模型和TCP/IP四层模型的理解?

  • 将计算机网络分为七层,是为了增强他的通用性和兼容性,每一层都会遵守响应的规则
  • 计算机网络被分为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  • 而TCP/IP 四层模型则是OSI七层模型的简化
    • 将OSI中的应用层、表示层、会话层整体归结为应用层
    • 将OSI中数据链路层和物理层整体归结为数据链路层
    • 所以TCP/IP四层模型包括 应用层、传输层、网络层、数据链路层四层

总结下来,物理层就是将电脑通过物理手段连接起来,数据链路层就是将比特流所表示的数据进行分组、网络层就是建立主机和主机之间的连接、传输层就是端口到端口的连接、应用层最终负责建立连接,将一些数据呈现给用户

谈谈TCP协议的3次握手过程?

  • 3次握手的过程也就是客户和服务器建立连接的过程
  • 第一次握手
    • 客户端向服务器发送一个数据包
    • 数据包的首部包含 同步SYN=1,确认ACK=0,序号seq=x
    • SYN=1,ACK=0,表示这是一个请求报文段,seq表示所传送数据的第一个字节的序号
  • 第二次握手
    • 服务器接收到客户端发来的数据包,根据这个数据包的首部**SYN=1,ACK=0,**判断出这是一个请求连接的数据包
    • 如果服务器同意连接,则会返回一个数据包,这个数据包的首部就是SYN=1ACK=1,seq=y,ack=x+1
    • SYN=1,ACK=1,表示服务器同意此次连接,ack=x+1表示服务器已经收到发来的x个数据,并告诉客户端下次从第x+1个字节开始传输
  • 第三次握手
    • 客户端收到服务的确认连接之后,会再次向服务器发送一个数据包
    • 数据包中包含 同步SYN=0确认ACK=1序号seq=x+1,ack=y+1
    • 同步SYN=0表示服务器和客户端都同意连接,确认ACK=1表示收到服务发来的数据包,序号seq=x+1表示发来的数据就是第x+1个,ack=y+1告诉服务器下次从y+1个字节开始发送

三次握手结束

TCP协议为什么要3次握手?2次,4次不行吗?

  • 因为三次握手的前两次都是确认连接,第三次才是真正的连接,如果是两次,则不能正常连接,四次则会浪费资源

谈谈TCP协议的四次挥手过程?

四次挥手其实就是释放连接的过程

  • 第一次挥手
    • 客户端向服务器发送一个请求释放连接的数据包,数据包的首部包含 终止FIN=1(表示客户端要主动释放连接),ACk=0
  • 第二次挥手
    • 服务器收到请求释放连接的数据包,会给客户端发送确认数据包,此时客户端到服务器的连接就释放了,但是服务器依然可以给客户端发送未发送完的数据,但客户端无法再向服务器发送数据
    • 第二次挥手服务器给客户端发送的数据包的首部包含 终止FIN=0,ACK=1,序号为seq,确认号ack
    • 终止FIN=0,ACK=1,表示同意客户端释放连接,但连接还没有释放
  • 第三次挥手
    • 此时服务器不再向客户端发送数据,会再向客户端发送确认报文
    • 这次报文的首部包含 终止FIN=1,ACK=1
  • 第四次挥手
    • 客户端收到服务器的报文,最后向服务器发出确认报文,连接彻底释放
    • 此次报文的首部包含ACK=1,FIN=0

什么是流量控制?

  • 流量控制其实就是控制数据的发送速率,保证接收方来得及接收

  • TCP实现流量控制是通过滑动窗口实现的,接收方可以控制滑动窗口的大小,从而控制数据发送的速率

什么是滑动窗口?

  • 滑动窗口就是TCP实现流量控制的一种机制
  • 发送方和接收方都有各自的缓冲区域,这个缓冲区域就是滑动窗口,发送方的窗口大小由接收方的TCP首部的窗口字段决定
  • 发送方将窗口分为:已发送并确认已发送未确认未发送未超出接收方窗口范围未发送但超出接收方窗口范围,随着接收方的确定,发送方的窗口会不断向前移动

TCP协议中常见的问题_第1张图片

  • 接收方将窗口分为,接收并确认未接收但可以接收,接收方通过改变窗口大小,可以控制发送方的发送速率,从而实现流量控制

TCP协议中常见的问题_第2张图片

TCP和UDP有什么区别?

是否面向连接 传输可靠性 传输效率 所需资源
TCP 面向连接 可靠性传输
UDP 无连接 不可靠传输
  • TCP 是可靠性传输,面向连接的协议,传输效率慢,所需资源多
  • UDP 是不可靠传输,无连接的协议,传输效率高,所需资源少

你可能感兴趣的:(tcp/ip,网络,网络协议)