TCP/IP协议三次握手与四次挥手
一.标志位和序号
seq序号 :发送方随机生成的
ack确认序号:ack=seq+1 标志位ACK=1时确认序号有效
SYN标志位:发起一个新连接
ACK标志位:确认序号有效
FIN标志位:断开连接
二.三次握手
三次握手是客户端与服务端建立一个TCP连接时,需要客户端和服务端发送三个包建立连接的过程
(1)第一次握手
客户端将SYN置为1,随机产生一个seq序号=J,将该数据包发送给服务端,客户端此时状态为SYN_SEND
(2)第二次握手
服务端收到客户端发送的数据包由SYN=1知道客户端要建立连接,客户端将SYN和ACK都置为1,同时发送确认序号ack=J+1
随机产生一个服务端序号seq=K,将此数据包发送给客户端。服务端此时的状态为SYN_REVD
(3)第三次握手
客户端收到服务端的数据包,由ACK=1,ack=J+1无误,客户端将ACK置为1,ack=K+1发给服务端
服务端收到ACK=1,ack=K+1连接建立成功。客户端和服务端此时的状态为ESTABLISHED
三.四次挥手
四次挥手是断开TCP连接的时候,需要客户端和服务端发送四次包确认连接的断开,断开连接可由服务端或客户端任意一方触发
(1)第一次挥手
假设客户端主动关闭。客户端发送关闭连接标志位FIN=1,序号seq=m。客户端此时状态为FIN_WAIT_1
(2)第二次挥手
服务端收到标志位FIN=1,知道客户端要关闭连接,客户端发送标志位ACK=1,确认序号ack=m+1,seq=n。
服务端并没有发送FIN标志位,因为服务端可能还有数据要发送 。此时服务端处于CLOSE_WAIT状态,客户端处于FIN_WAIT_2状态
(3)第三次挥手
服务端发送标志位FIN=1,seq=u 。此时服务端处于LAST_ACK状态
(4)第四次挥手
客户端收到FIN,发送ACK=1,确认序号ack=u+1给服务端。客户端进入TIME_WAIT状态。释放连接完成
TCP/IP协议三次握手与四次挥手的更多相关文章
- TCP/IP协议三次握手和四次挥手大白话解说
前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...
- 白话解说TCP/IP协议三次握手和四次挥手
白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...
- TCP/IP协议 三次握手与四次挥手
一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号 ...
- TCP/IP协议 三次握手与四次挥手【转】
一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号 ...
- 大白话解说TCP/IP协议三次握手和四次挥手
背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声 ...
- TCP/IP协议三次握手_四次挥手
TCP/IP协议 TCP是一种面向连接的端到端的可靠传输协议. TCP报头格式 三次握手的过程 一.客户端发送一个连接请求,发送一个随机数X,这时客户端的端口状态变为SYN_SENT状态. 二.服务端 ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
- TCP/IP协议三次握手与四次握手流程解析(转载及总结)
原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详 ...
- TCP/IP协议三次握手与四次握手
TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式 上图中有几个 ...
随机推荐
- java.lang.UnsatisfiedLinkError: dlopen failed: library "libsqlite.so" not found
项目在7.0以下系统的手机上运行正常,但在7.0的手机上运行异常. 出现这个问题的原因是:从 Android 7.0 开始,Android系统将阻止应用动态链接非公开 NDK 库. 解决方法有两种 第 ...
- linux git patch 和patch以及git diff 命令
1.git log 查看commit id,修改前为id1,修改后id2 2.根据id1到id2有几次提交来生成几个patch,否则的话会根据所有节点生成很多patch 比如: commit id2 ...
- Entity Framework学习初级篇1--EF基本概况《转》
最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...
- vue2.0--请求数据
vue中用vue-reouse请求来的数据,会被封装一层,如下图res:
- 问题:mysql服务正在启动 mysql服务无法启动 && mysql启动脚本 mysql关闭脚本
此篇目编写两个核心目的: 1.mysql服务启动脚本(start_mysql.bat),mysql服务停止脚本(stop_mysql.bat)的讲解. 2.解决问题:mysql服务无法启动. 操作流程 ...
- LeetCode119.杨辉三角II
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 进阶: 你可以优化你的算法到 O ...
- JAVA多线程常用例子
详情见该页面ttps://www.cnblogs.com/pureEve/p/6524366.html
- c#Lock学习笔记
转自 http://www.cnblogs.com/tianma3798/p/6290158.html 参考官网 https://docs.microsoft.com/zh-cn/dotnet/cs ...
- 18. 4Sum(双指针)
Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...
- Vue系列之 => 使用第三方animated.css动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...