TCP三次握手and数据传输and四次分手解析简述

  • Post author:
  • Post category:其他



TCP三次握手


总所周知tcp的中文名叫传输控制协议,属于传输层 主要目的是给用户提供可靠的传输服务

三次握手是tcp用来建立端到端之间connection(连接)的方式

首先由发送端(发送端可以是pc机也可以是服务器)发送请求报文

pc1——————-————————————————>server

>>>>seq(序列号)=x(随机值),ack=0(确认号)

>>>>flag:

syn(请求连接)=1

,ACK=0(ack无效)

此时的ack(确认号)=0

pc1<——————-————————————————server

<<<<seq=随机值,ack=b

(ack=seq+1)


<<<<flag:

syn=1(答应了pc1的请求)

,ACK=1(此时ack确认号有效)

pc1——————-————————————————>server

>>>>seq=x+1,ack=b+1

>>>>flag:syn=0

(已经完成三次握手不在请求)

,ACK=1



数据传输




单个传输



传输数据时序列号等于上个报文的确认号

确认号等于上个报文的序列号+数据大小


pc1——————-————————————————>server

传输一个100字节大的数据

>>>>seq=x+1,ack=b+1

>>>>flag:syn=0,ACK=1;date=100

pc1<——————-————————————————server

<<<<seq=b+1,ack=x+1+100

<<<<flag:syn=0,ACK=1;


批量传输


pc1——————-————————————————>server

传输一个200字节大的数据

>>>>seq=x+1+100,ack=b+1+0

>>>>flag:syn=0,ACK=1;date=200

pc1——————-————————————————>server

传输一个150字节大的数据

>>>>seq=x+1+100,ack=b+1+0

>>>>flag:syn=0,ACK=1;date=150

pc1——————-————————————————>server

传输一个100字节大的数据

>>>>seq=x+1+100,ack=b+1+0

>>>>flag:syn=0,ACK=1;date=100

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

pc1<——————-————————————————server

<<<<seq=b+1+0,ack=x+1+100+450

<<<<flag:syn=0,ACK=1;

pc1<——————-————————————————server

<<<<seq=b+1+0,ack=x+1+100+450

<<<<flag:syn=0,ACK=1;

pc1<——————-————————————————server

<<<<seq=b+1+0,ack=x+1+100+450

<<<<flag:syn=0,ACK=1;


四次分手


pc1——————-————————————————>server

>>>>seq=x+1+100+450,ack=b+1+0

>>>>flag:syn=0,FIN=1(释放连接),ACK=1;

pc1<——————-————————————————server

<<<<seq=b+1+0,ack=x+1+100+450

<<<<flag:syn=0,FIN=0,ACK=1;

pc1<——————-————————————————server

<<<<seq=b+1+0,ack=x+1+100+450

<<<<flag:syn=0,FIN=1,ACK=1;

pc1——————-————————————————>server

>>>>seq=x+1+100+450,ack=b+1+0+1

>>>>flag:syn=0,FIN=0(完全释放连接),ACK=1;
请添加图片描述



版权声明:本文为weixin_45976683原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。