TCP首部的数据格式

其中,

  • 源端口号和目的端口号各占16位,端口范围1~65535。1024以下为知名端口,1024~65535是供用户使用。源端口,目的端口,源ip,目的ip这四个值唯一确定一个TCP连接。
  • 序号是标识从TCP发送端向接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。
  • 确认序号包含发送确认的一端所期望收到的下一个序号,因为确认序号是上次已成功接收的数据字节序号加1。
  • URG:紧急标志位,紧急指针有效。
  • ACK:确认标志位,对已接收的数据包进行确认。
  • PSH:推送标志位,接收方应尽快将这个报文段交给应用层。
  • RST:重置标志位,重新建立连接。
  • SYN:同步标志位,发起一个连接。
  • FIN:完成标志位,完成发送,关闭连接。

TCP三次握手建立连接

握手示意图如下:

wireshark抓包握手过程:

一开始客户端和服务器都处于CLOSED状态,主动建立连接的一方为客户端,被动建立连接的一方是服务器。双方在建立连接前,需要分配内存建立传输控制块TCB,服务器随后会进入LISTEN监听状

第一次握手:客户端向服务器发起连接请求报文,同步标志位SYN=1,初始序列号seq=x,随后客户端进入进入SYN-SEND状态。

第二次握手:服务器端收到请求报文后,向客户端发送确认报文,报文中同步标志位SYN=1,确认标志位ACK=1,确认序号ack=x+1,同时产生一个随机序号seq=y,随后服务器进入SYN_RCVD状态。

第三次握手:客户端收到服务器回的确认后,也要给服务器回复一个确认报文,其中ACK=1,ack=y+1,seq=x+1。服务器收到后,检查ACK是否为1,seq是否为y+1,如果正确则成功建立连接。

建立连接后,客户端和服务器都进入ESTABLISHED状态。之后即可进行正常的数据通信。

TCP四次挥手释放连接

 握手示意图如下:

wireshark抓包挥手过程:

第一次挥手:客户端发送释放连接报文,同时停止数据发送,FIN标志位置1,序列号seq=x,之后客户端进入FIN-WAIT-1状态。
第二次挥手:服务器收到客户端发来的释放连接报文,回复确认报文,ACK=1,ack=x+1,同时序列号seq=y,之后服务器端进入CLOSE-WAIT状态。
第三次挥手:客户端收到服务器的确认后,进入FIN-WAIT-2状态等待服务器方发送释放连接的报文,当服务器将所以数据发送完成后,发送释放连接报文,其中FIN=1,ACK=1,seq=u,ack=x+1,之后服务器进入LAST-ACK状态。
第四次挥手:客户端收到服务器的发送的释放连接报文,会发出确认报文,ACK=1,ack=u+1,seq=x+1,此时客户端进入TIME-WAIT状态。服务器收到客户端的确认报文后就关闭连接。此时,客户端需要等待2MSL的时间,如果在2MSL时间后客户端没有收到服务器的回复,证明服务端已经正常关闭,那么客户端也可以关闭连接。
 
MSL:报文段最大生存时间,是任何报文段被丢弃前在网络上的最长时间。(RFC793定义MSL为2分钟)
 
四次挥手过程中,最后要等待2MSL的原因:
保证客户端回复给服务端的确认报文能够成功到达,因为客户端并不知道发出的确认报文能否被服务器准确的接收到,假如服务器没有成功接收,服务器端会重新发起一个FIN,客户端收到后会再次重新发送确认报文继续给服务器进行一个确认,如果此时客户端已经处于CLOSED状态,那么重新发起的FIN就找不到对应的连接导致失败。因此客户端发送完最后的确认报后不能直接进入CLOSED,而是进入等待状态以确保最后能够正确关闭连接。(在2MSL时间内,该连接的端口不能被使用,比如建立一个连接后用同样的端口再次建立连接,会出现端口不可用的情况)
 
 

TCP/IP协议---三次握手和四次挥手的更多相关文章

  1. TCP/IP协议三次握手和四次挥手大白话解说

    前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...

  2. 白话解说TCP/IP协议三次握手和四次挥手

    白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...

  3. TCP/IP协议 三次握手与四次挥手

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  4. TCP/IP协议 三次握手与四次挥手【转】

    一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图: 图1 TCP报文格式 上图中有几个字段需要重点介绍下:        (1)序号 ...

  5. 大白话解说TCP/IP协议三次握手和四次挥手

    背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声 ...

  6. TCP/IP协议三次握手_四次挥手

    TCP/IP协议 TCP是一种面向连接的端到端的可靠传输协议. TCP报头格式 三次握手的过程 一.客户端发送一个连接请求,发送一个随机数X,这时客户端的端口状态变为SYN_SENT状态. 二.服务端 ...

  7. TCP/IP协议三次握手与四次挥手

    一.标志位和序号 seq序号 :发送方随机生成的 ack确认序号:ack=seq+1 标志位ACK=1时确认序号有效 SYN标志位:发起一个新连接 ACK标志位:确认序号有效 FIN标志位:断开连接 ...

  8. TCP/IP协议三次握手与四次握手流程解析

    原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...

  9. TCP/IP协议三次握手与四次握手流程解析(转载及总结)

    原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详 ...

  10. TCP/IP协议三次握手与四次握手

    TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式  TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式  上图中有几个 ...

随机推荐

  1. HarmonyOS扫码服务,应用服务一扫直达打造系统级流量新入口

    二维码如今是移动应用流量入口以及功能实现的重要工具,也是各App的流量入口,是物.人.服务的连接器,通过扫码我们可以更便捷的生活,更高效的进行信息交互,包括信息的发布.信息的获取. 在日常扫码过程中, ...

  2. 虾皮shopee根据ID取商品详情 API 返回值说明

    ​ item_get-根据ID取商品详情  注册开通 shopee.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...

  3. 探索API接口:从概念到实践

    在当今数字化时代,API(Application Programming Interface)接口成为了各种应用程序之间实现数据交互和功能集成的关键.无论是开发一个网站.构建一个移动应用还是进行数据分 ...

  4. fastapi启动后访问docs不显示页面的问题

    笔者之前正常使用fastapi的docs接口进行各种接口调试,使用很正常,之前安装也都是正常安装流程,没有做任何修改,可以突然有一天不知道为啥,docs接口打开是空白的,接口也没有报错,就是空白,摸索 ...

  5. HDLbits_Conwaylife

    题目介绍 题目链接 Conwaylife 简介 题目要求我们实现一个康威生命游戏的电路. 该游戏在一个二维网格空间中进行,在该题目中是 16 * 16 的大小,每一个格子都有两种状态(0 或 1),代 ...

  6. 设备维修保养通知:如何使用API接口发送通知给相关人员

    在设备维修保养管理中,及时通知相关人员是确保设备得到及时维护的关键.API接口提供了一个方便的方式来自动发送维修保养通知,以确保工作流程的顺利进行.本文将详细介绍如何使用成熟的API接口来发送设备维修 ...

  7. Spring Boot RestController接口如何输出到终端

    背景 公司项目的批处理微服务,一般是在晚上固定时段通过定时任务执行,但为了预防执行失败,我们定义了对应的应急接口,必要时可以通过运维在终端中进行curl操作.然而,部分任务耗时较长,curl命令执行后 ...

  8. 第五周单元测验题英语教学与互联网 mooc

    第五周单元测验题 返回 本次得分为:16.00/20.00, 本次测试的提交时间为:2020-08-30, 如果你认为本次测试成绩不理想,你可以选择 再做一次 . 1 单选(2分) 从评价的主体来看, ...

  9. 实验四报告: 熟悉Python字典、集合、字符串的使用

    实验目标 本实验的主要目标是熟悉Python中字典.集合.字符串的创建和操作,包括字典的创建.访问.修改和合并,集合的创建.访问以及各种集合运算,以及字符串的创建.格式化和常用操作. 实验要求 通过编 ...

  10. 它让你1小时精通RabbitMQ消息队列、且能扛高并发

    支持.Net Core(2.0及以上)与.Net Framework(4.5及以上) 本文所述方案近期被江苏省某亿级数据量+高并发的政府"物联网"项目采用,获得圆满成功!! [目录 ...