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. 【题解】AtCoder Beginner Contest 318(D - Ex)

    赛时过了 A-G,Ex 仿佛猜到了结论但是完全不懂多项式科技,就炸了. 大家好像都秒了 A,B,C 就不写了. D.General Weighted Max Matching 题目描述: 给你一个加权 ...

  2. Solution -「CSP 2019」Centroid

    Description Link. 给定一棵 \(n\) 个点的树,设 \(E\) 为边集,\(V'_x,\ V'_y\) 分别为删去边 \((x,y)\) 后 点 \(x\) 所在的树的点集和点 \ ...

  3. 前端三件套系例之CSS——CSS是什么、CSS3语法、css代码书写位置(引入方式)、css选择器

    文章目录 1.CSS是什么 2.CSS3语法 2.1 CSS实例 2.2 CSS注释 3.css代码书写位置(引入方式) 3-1 行间式 3-2 内联式 3-3 外联式 总结 3 css选择器 1.基 ...

  4. Dubbo3应用开发—Dubbo3注册中心(zookeeper、nacos、consul)的使用

    Dubbo3注册中心的使用 zookeeper注册中心的使用 依赖引入 <dependency> <groupId>org.apache.dubbo</groupId&g ...

  5. 两台实体机器4个虚拟机节点的Hadoop集群搭建(Ubuntu版)

    安装Ubuntu Linux元信息 两台机器,每台机器两台Ubuntu Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso 处理器数量2,每个处理器的核心数量2,总处理 ...

  6. 虹科案例 | 石油天然气行业CFD高性能计算解决方案

    公司简介 DNV GL 是全球领先的能源.石油和海事行业风险管理及资产绩效提升的软件供应商,主要为客户提供全面的风险管理和各类评估认证服务,认证涉及信息通信技术.汽车及航空天.食品与饮料.医疗等方面. ...

  7. MAC版本vmware无法识别虚拟机网卡适配器

    一.问题 莫名其妙的突然mac上的vmware无法识别网络适配器了 二.解决过程 1.重装vmware-无效 2.降级安装vmware-无效 3.安装pd虚拟机,并使用sudo命令启动-偶尔有效 4. ...

  8. k8s部署xxl-job-admin

    概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 下载好要用到的镜像 docker pull ...

  9. 通过.NET Core CLI 来创建并运行ASP.NET CORE应用程序

    说明: .NET Core 命令行接口 (CLI) 工具是用于开发.生成.运行和发布 .NET Core 应用程序的跨平台工具链. .NET Core CLI 包含在 .NET Core SDK 中. ...

  10. QT(4)-QAbstractItemView

    @ 目录 1 说明 2 常用函数 2.1 交替行颜色 2.1.1 alternatingRowColors 2.1.2 setAlternatingRowColors 2.2 autoScroll 2 ...