TCP三次握手,四次挥手

TCP三次握手

TCP协议 :

1。源端口 :当前的进程端口,2字节

2。目的端口:对方的端口 ,2字节

3。序号:客户端或者服务器端生成的随机数

4.确认序号:确认上一次发送给数据对方有没有收到

5.标志位

SYN:请求和对方建立连接

ACK:确认没问题 OK

FIN :请求端开连接

6.窗口大小 :接收端通知发送端 缓存剩余的容量,如果为0,发送端阻塞

三次握手的过程

1.服务器端启动监听 →listen();

2.客户端:发起连接→connect();

三次握手的发起端必须是客户端;

第一次握手:

客户端 :

1.将标志位SYN设为1 (其实发送的是整个块)

2 . 生成一个随机序号,int (32位);

服务器端:

1.收到了客户端的TCP协议解析

  SYN=1

  得到了随机序号, J

第二次握手:*客户端和服务器连接建立了

服务器端:

1.回复ACK,表示同意建立连接

2.ack=J+1,告诉客户端,你发送给我的一个字节的数据已经收到了,1字节代表连接请求;

3.服务器将TCP协议中的SYN=1,向客户端发送请求

4.服务器端也生成了一个随机序号,K;

客户端:

1.接受服务器回复的数据

  ACK 同意了客户端的连接请求

  SYN:服务器请求的客户端建立连接

  服务器端收到的数据字节数:ack-J=J+1 -J=1;

第三次握手:服务器和客户端建立了连接

客户端:

1。在TCP协议中将ACK设置为1 ,同意服务端连接请求

2.ack=K+1,告诉服务器,你给我发送的一个字节的数据收到了,1字节代表连接请求

服务器:

接受数据,解析TCP协议

  ACK=1;客户端同意了连接请求

  客户端收到的字节数:ack -K=K+1-K=1;

四次挥手的过程

//断开链接的过程,四次挥手完成之后,双向连接被双向断开

//断开连接的请求可以由客户端发起,也可以有服务器发起

//需要用到的标志位:FIN,ACK

  1. 图中是客户端先断开连接,其实服务器端先断开也可以

  2. 在程序中怎么断开连接

    调用close (通信的文件描述符)函数,连接断开

    在程序中服务器端和客户端程序都调用了close()函数,四次挥手就完成了

过程:

第一次挥手:

主动断开的连接的一方:

1.将TCP中的FIN标志位为设置为1

被动断开链接的一方:

1.接受对方请求,解析TCP协议

  FIN=1;

第二次挥手:**单向断开(断开方与被断开方断开)

被断开的一方:

1.同意对方的断开链接的请求,ACK =1;

2 确认序号:在对方发送的序号基础加一

主动断开链接的一方:

接受TCP协议解析

  检测是否ACK是否为1;

  检测发送对方的1字节数是否收到了

第三次挥手:

被断开的一方:

.将TCP中的FIN标志位为设置为1

发送序号K

主动断开的一方:

接受数据,解析TCP协议

FIN=1

第四次挥手:被断开的一方 与主动断开的一方 断开链接

主动断开链接的一方:

同意对方链接的请求 TCP 的ACK =1

计算确认序号,发送给对方

被动断开的一方:

接受TCP协议解析

  检测ACK==1

  检测发送给对方的1字节数是否收到了

相关推荐

  1. TCP握手挥手

    2024-05-02 23:00:03       39 阅读
  2. tcp握手挥手

    2024-05-02 23:00:03       37 阅读
  3. tcp握手挥手

    2024-05-02 23:00:03       36 阅读
  4. TCP 传输的握手挥手策略

    2024-05-02 23:00:03       56 阅读
  5. TCP握手挥手

    2024-05-02 23:00:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 23:00:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 23:00:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 23:00:03       82 阅读
  4. Python语言-面向对象

    2024-05-02 23:00:03       91 阅读

热门阅读

  1. vue加载vuetify模板UI

    2024-05-02 23:00:03       33 阅读
  2. 手撕spring框架(4)

    2024-05-02 23:00:03       31 阅读
  3. alsactl 保存音频配置

    2024-05-02 23:00:03       30 阅读
  4. SpringBoot 循环引用解决办法

    2024-05-02 23:00:03       32 阅读
  5. C++ 多线程中捕捉异常

    2024-05-02 23:00:03       33 阅读