计算机网络基础知识——TCP协议

计算机网络基础知识——TCP协议


参考: https://blog.csdn.net/sinat_36629696/article/details/80740678

TCP 传输控制协议

Transmission Control Protocol 传输控制协议是传输层协议,提供可靠的端到端交互,是一个面向连接的协议。使用3次握手和4次挥手来建立或者关闭连接,使用滑动窗口及流量控制机制在保证可靠性的同时充分提升传输效率,并且使用阻塞控制协议保证最大程度利用带宽。

  • 三次握手与四次挥手

    几个标志位及其表示:
    SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
    FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段
    ACK: 标识确认序号是否有效
    seq:序号
    ack:确认序号

    • 三次握手:在这里插入图片描述
      开始时,客户端与服务器都处于CLOSED状态,当要建立连接时客户端主动打开变为LISTEN状态,服务器被动打开。然后经历下面几个步骤:
      1.客户端发送首部标志位SYN=1,序号为x的报文,然后变为SYN_SENT状态。
      2.服务端接收到报文后,向客户端发送首部标志为SYN=1,ACK=1,确认序号ack=x+1,seq=y的报文(表示建立连接确认)后,然后变为SYN_RCVD状态。
      3.客户端接收到报文后,会向服务器发送首部标志位ACK=1,序号为seq=x+1,确认序号ack=y+1的报文,然后变为ESTABLISHED状态。
      4.客户端接收到信息后,变为ESTABLISHED状态,自此,连接建立。

    为什么要用三次而不是两次或者四次?
    如果只用两次握手,服务端回应的消息客户端可能接收不到,由此会导致服务器以为客户端接收到了,所以等待,而客户端一直在等待服务端的回应,由此造成死锁。而三次握手就可以满足我们的需求,四次就多余了。

    • 四次挥手:
      在这里插入图片描述
      开始时客户端和服务器都是处于ESTABLISHED状态,然后客户端主动断开连接,服务器被动断开连接,然后经历以下几个步骤:
      1.客户端向服务器发送标志位FIN=1,seq=u的报文,然后变为FIN-WAIT-1状态。
      2.服务器向客户端发送标志位ACK=1,ack = u+1;seq=v,的报文,然后变为CLOSE-WAIT状态。
      3.客户端接收到报文时变为FIN-WAIT-2状态.
      3.服务器继续传输未传完成传输的数据,数据传输完后向客户端发送标志位FIN=1,ACK=1,ack=u+1;seq=w的报文,然后变为LAST-ACK状态。
      4.客户端向服务器发送标志位ACK=1,序号为ack=w+1,seq=u+1的报文,然后变为TIME-WAIT状态,等待2个MSL(Maximum Segment Lifetime)时间后变为CLOSED状态
      5.服务器接收到报文时变为CLOSE状态

为什么最后客户端还要等待 2*MSL的时间呢?
MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

  • 保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。
  • 防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。
  • 滑动窗口协议
    • 滑动窗口:在TCP建立连接和取消连接时,每次只发送了一次请求并且要等待对方回应的时候再发第二次请求。在建立连接的时候这种方法是可行的,但在传输数据时,这种方法就会太慢,因此TCP连接允许同时发送多条报文,接收端也同时接收多条报文,这个允许发送的报文范围就叫窗口,当窗口的一部分发送完成后就可以继续使窗口向还未发送的地方移动,这个过程就叫做滑动。
      在这里插入图片描述
    • 流量控制 在设置窗口大小时如果发送放设置的窗口大小过大会导致,接收放接收的窗口一下就被填满,从而导致丢包进而导致传输效率变低,因此在TCP中通过流量控制协议控制双方发送窗口的大小。
      在这里插入图片描述
  • 阻塞控制协议
    https://blog.csdn.net/sinat_36629696/article/details/80740678
    慢启动及快恢复:
    在这里插入图片描述

TCP 和 UDP 对比

TCP和UDP之间的优点和缺点, 不能简单绝对地进行比较
TCP用于可靠传输的情况, 应用于文件传输, 重要状态更新等场景
UDP用于对高速传输和实时性要求较高的通信领域
例如, 早期的QQ, 视频传输等. 另外UDP可以用于广播

  • TCP保证可靠性的机制
    校验和
    序列号(按序到达)
    确认应答
    超时重传
    连接管理
    流量控制
    拥塞控制
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值