TCP协议

TCP协议简述

  • TCP协议提供可靠的连接服务,连接通过三次握手进行初始化。TCP协议是一种面向连接的,可靠的,基于字节流的运输层通信协议,TCP是双工模式,所以需要四次握手关闭连接。

TCP协议在网络传输中的位置

  • TCP协议在网络传输层给数据赋予TCP包首部

TCP包首部的规范定义

image
image

TCP 三次握手建立连接

简单理解

  • 第一次握手客户端(报文标准位SYN设为1,随机生成序列号seq=J)向服务端发送请求连接进入(报文已发送状态)等待服务器确认
  • 第二次握手服务器端收到(标志位为SYN=1)的数据包知道客户端想建立连接并将(SYN和ACK都设置为1),并对接收的请求包进行确认将(ack=J+1)ack即为头部确认号,并随即生成一个(序列号seq=k)将该数据包发送给客户端以确认连接请求,服务器进入报文已接收状态。
  • 第三次握手客户端接收到数据包,检查(ack是否为J+1,ACK是否为1),如果是即将ack设为接收的数据包的seq+1及(ack=K+1)并将给数据包发送给服务器,服务器进入已确认状态,完成三次握手,客户端和服务器端之间即可进行数据传输。

为什么要三次握手

  • 简单解释为防止服务器端错误地接收到数据包以为客户端需要进行连接,直接就建立了行的连接等待客户端发送数据,浪费服务器端资源。

TCP 四次挥手关闭连接

简单理解

  • 第一次挥手客户端向服务器发起关闭请求
  • 第二次挥手服务器端端接收到请求,并发送确认并同意
  • 第三次挥手服务器端发送标志位为FIN的报文段,向客户端发送请求关闭连接,并进入最后的等待状态。
  • 第四次挥手,客户端接收到请求,向服务器发送同意,后进入倒计时等待状态,同时服务器接收到同意后关闭连接,客户端等待2MSL的时间后没有接收到回复即也关闭连接。

image

posted @   Luck16th  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示