TCP/IP的三次握手和四次挥手
前言
tcp/ip 握手挥手是网络连接的基本知识, 值的花时间弄懂到底干了什么.
TCP/IP 协议分层
OSI参考模型| TCP/IP参考模型
- 应用层 |
- 表示层 | 4. 应用层(ftp、http、dns、telnet、smtp…)
- 会话层 |
- 运输层 | 3. 运输层(tcp,udp)
- 网络层 | 2. 网络层(ip、icmp、arp、rarp、bootp)
- 数据链路层 | 1. 网络接口层
- 物理层 |
前置知识
TCP 在发送过程中, 会借助一个TCP标志选项来确定当前TCP段的目的, 这就叫着TCP标志位(TCP Flag), 告诉另一端如何正确使用该TCP段.
TCP 一共有6 个标志选项
- Urgent pointer : 紧急指针, 接收端接收到紧急指针后立即处理, 不经过等待队列.
- Acknowledgement : 确认, 确认数据包的成功接收.
- Push : 推送. 给与数据优先级, 确保在接收端处理.
- RST: 复位. 服务端无法答复客户端的请求时, 会拒绝请求并发送复位.
- Synchronisation : 同步, 连接三次握手时, 由于建立虚拟连接而使用的标志.
- 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" 转载请保留原文链接及作者。