TCP/IP的三次握手和四次挥手

  1. 前言
  2. TCP/IP 协议分层
  3. 前置知识
  4. 三次握手
  5. 四次挥手

前言

tcp/ip 握手挥手是网络连接的基本知识, 值的花时间弄懂到底干了什么.

TCP/IP 协议分层

OSI参考模型| TCP/IP参考模型
  1. 应用层 |
  2. 表示层 | 4. 应用层(ftp、http、dns、telnet、smtp…)
  3. 会话层 |
  4. 运输层 | 3. 运输层(tcp,udp)
  5. 网络层 | 2. 网络层(ip、icmp、arp、rarp、bootp)
  6. 数据链路层 | 1. 网络接口层
  7. 物理层 |

前置知识

TCP 在发送过程中, 会借助一个TCP标志选项来确定当前TCP段的目的, 这就叫着TCP标志位(TCP Flag), 告诉另一端如何正确使用该TCP段.
TCP 一共有6 个标志选项

  1. Urgent pointer : 紧急指针, 接收端接收到紧急指针后立即处理, 不经过等待队列.
  2. Acknowledgement : 确认, 确认数据包的成功接收.
  3. Push : 推送. 给与数据优先级, 确保在接收端处理.
  4. RST: 复位. 服务端无法答复客户端的请求时, 会拒绝请求并发送复位.
  5. Synchronisation : 同步, 连接三次握手时, 由于建立虚拟连接而使用的标志.
  6. Fin : 完成, 拆除上一次(SYN) 简历的虚拟连接,一般是四次挥手时使用的标志.

    三次握手

    客户端 : 发起第一次请求, 发送 Seq num = N , 标志位 : SYN , 状态变更为: SYN_SENT
    服务端 : 发起第二次请求, 发送 Seq num = M, Ack num = N + 1, 标志位 : SYN , ACK , 状态变更为: SYN_RVCD
    客户端 : 发起第三次请求, 发送 Seq num = N + 1, Ack num = M + 1, 标志位 : ACK , 状态变更为: ESTABLISHED
    握手完成, 开始正常通信
    服务端 : 建立连接 状态变更为 ESTABLISHED
    在这里插入图片描述
    使用大白话讲解就是:
    A: 你能听的到我说话吗?
    B: 我能听到你说话, 那你能听到我说话吗?
    A: 我能听到你说话, 那我们开始交流吧

四次挥手

客户端 : 发起第一次请求, 发送 Seq num = N, 标志位 : FIN , 状态变更为 : FIN-WAIT-1
服务端 : 发起第二次请求, 发送 Seq num = L, Ack num = N + 1 , 标志位 : ACK , 状态变更为 : CLOSE-WAIT
服务端 : 发起第三次请求, 发送 Seq num = M, Ack num = N + 1 , 标志位 : FIN , ACK , 状态变更为 : LAST-ACK
客户端 : 发起第四次请求, 发送 Seq num = N + 1, Ack num = M + 1 , 标志位 : ACK , 状态变更为 : TIME-WAIT
挥手完成, 所有连接关闭, 状态变更为 CLOSED
在这里插入图片描述
使用大白话讲解就是:
A: 注意我要准备挂电话了
B: 我知道你要挂电话了, 但是我还要说些没有说完的内容.
B: 我也要准备挂电话了.
A: 我已经知道你要挂电话了, 我挂了, ByeBye.


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhao4xi@126.com

文章标题:TCP/IP的三次握手和四次挥手

文章字数:677

本文作者:Zhaoxi

发布时间:2019-01-05, 14:51:46

最后更新:2019-09-21, 14:57:26

原始链接:http://zhao4xi.github.io/2019/01/05/TCP-IP的三次握手和四次挥手/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录