tcp四次挥手

TCP长连接与短连接的区别

不羁岁月 提交于 2019-12-05 11:06:38
1 什么是长连接和短连接 三次握手和四次挥手 TCP区别于UDP最重要的特点是TCP必须建立在可靠的连接之上,连接的建立和释放就是握手和挥手的过程。 三次握手为连接的建立过程,握手失败则连接建立失败。 四次挥手为连接的 完整 释放过程,也会发生某个消息丢失或者超时的情况,有一方主动发送 FIN 消息即表示连接即将释放。 注: SYN、ACK、FIN消息具有哪些含义,以及连接的状态,请参考《TCP/IP详解 卷1》第18章。 长连接 长连接,也叫持久连接,在TCP层握手成功后, 不立即 断开连接,并在此连接的基础上进行多次消息(包括心跳)交互,直至连接的任意一方(客户端OR服务端)主动断开连接,此过程称为一次完整的长连接。HTTP 1.1相对于1.0最重要的新特性就是引入了长连接。 短连接 短连接,顾名思义,与长连接的区别就是,客户端收到服务端的响应后, 立刻发送FIN消息 ,主动释放连接。也有服务端主动断连的情况,凡是在一次消息交互(发请求-收响应)之后立刻断开连接的情况都称为短连接。 注:短连接是建立在TCP协议上的,有完整的握手挥手流程,区别于UDP协议。 2 如何快速区分当前连接使用的是长连接还是短连接 1、 凡是在一次完整的消息交互(发请求-收响应)之后,立刻断开连接(有一方 发送FIN消息 )的情况都称为短连接 ; 2、长连接的一个明显特征是会有心跳消息

TCP三次握手、四次挥手详解

北城余情 提交于 2019-12-05 11:04:34
1.TCP报文格式 TCP(Transmission Control Protocol) 传输控制协议。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接。 我们需要知道TCP在网络OSI的七层模型中的第四层(Transport层),IP在第三层(Network层),第二层(Data Link层),在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。 TCP传输控制协议是面向连接的可靠的传输层协议,在进行数据传输之前,需要在传输数据的两端(客户端和服务器端)创建一个连接,这个连接由一对插口地址唯一标识,即是在IP报文首部的源IP地址、目的IP地址,以及TCP数据报首部的源端口地址和目的端口地址。 上图中有几个字段需要重点介绍下: (1) Sequence Number 序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。是包的序号,用来解决网络包乱序(reordering)问题。 (2) Acknowledgement Number 确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。 (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下: a. URG(urgent紧急)

【计算机网络】TCP基础知识详解

橙三吉。 提交于 2019-12-05 05:16:33
1. TCP概念相关 [!NOTE] TCP(Transmission Control Protocol),又叫传输控制协议。 TCP协议是面向连接的,可靠的,基于字节流的传输协议。在基于 TCP 进行通信时,通信双方需要先建立一个 TCP 连接,建立连接需要经过三次握手,断开连接的时候需要经过四次挥手。 1.1 TCP头部 对于 TCP 头部来说,以下几个字段是很重要的: 序列号 (Sequence number),这个序号保证了 TCP 传输的报文都是有序的,对端可以通过序号顺序的拼接报文 确认号 (Acknowledgement Number),这个序号表示数据接收端期望接收的下一个字节的编号是多少,同时也表示上一个序号的数据已经收到 窗口大小 (Window Size),表示还能接收多少字节的数据,用于流量控制 标识符 ACK=1 :该字段为一表示确认号字段有效。此外,TCP 还规定在连接建立后传送的所有报文段都必须把 ACK 置为一。 SYN=1:当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。当SYN=1,ACK=1时,表示当前报文段是一个同意建立连接的应答报文。 FIN=1:该字段为一表示此报文段是一个释放连接的请求报文。 URG=1 : 该字段为一表示本数据报的数据部分包含紧急信息,是一个高优先级数据报文,此时紧急指针有效

TCP/IP协议

拈花ヽ惹草 提交于 2019-12-05 04:21:10
关于 TCP/IP,必知必会的10个问题 一、TCP/IP模型 TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。 基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。 TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。 上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。 上图以HTTP协议为例,具体说明。 二、数据链路层 物理层负责0、1比特流与物理设备电压高低、光的闪灭之间的互换。 数据链路层负责将0

TCP time_wait close_wait问题(可能是全网最清楚的例子)

早过忘川 提交于 2019-12-05 03:58:16
背景 公司群里,运维发现一个问题,task服务报错(如下) The stream or file \"/data/logs/adn_task/offer_service.log\" could not be opened: failed to open stream: Too many open files 测试老大看到了,根据经验就推测是应该是文件句柄使用完了,应该有TCP连接很多没释放,果真发现是很多CLOSE_WAIT的状态 简单认知 短链接,一次链接就会占用一个端口,一个端口就是一个文件描述符; 文件描述符 又称 句柄,linux系统最大的句柄数是65535,可以通过ulimit -a 查看 三次握手 TCP建立连接需要经过三次握手; 通俗版本: A: 你好,你能听见我说话吗? B: 能听到,你能听到我说话吗? A:我也能听到,我们开始通信吧 专业版本: 建立TCP连接时,需要客户端和服务器共发送3个包。 第一次:客户端发送初始序号x和syn=1请求标志 第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1 第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1 四次挥手 TCP连接断开需要经过四次挥手; 通俗版本: 前提A和B在通话 A:好的,我的话就说完了(FIN); B

抓包三次握手

守給你的承諾、 提交于 2019-12-05 03:06:20
当我们需要跟踪网络有关的信息时,经常会说“抓包”。这里抓包究竟是什么?抓到的包又能分析出什么?在本文中以TCP/IP协议为例,简单介绍TCP/IP协议以及如何通过wireshark抓包分析。 Wireshark 是最著名的网络通讯抓包分析工具。功能十分强大,可以截取各种网络封包,显示网络封包的详细信息。 Wireshark下载安装,略。注意,若在Windows系统安装Wireshark,安装成功后可能会出现Wireshark的两个图标,一个是Wireshark(中文版);另外一个是Wireshark Legacy (英文版)。下面的内容会以Wireshark Legacy为例介绍。 打开Wireshark,开始界面如下: Wireshark捕获的是网卡的网络包,当机器上有多块网卡的时候,需要先选择网卡。开始界面中的Interface List,即网卡列表,选择我们需要的监控的网卡。点击Capture Options,选择正确的网卡,然后点击"Start"按钮, 开始抓包。 我们打开浏览器输入任意http网址,连接再关闭,比如:http://blog.csdn.net。然后,我们回到Wireshark界面,点击左上角的停止按键。查看此时Wireshark的抓包信息。在看抓包信息之前,先简单介绍下Wireshark界面的含义。其中,封包列表的面板中显示编号、时间戳、源地址、目标地址

对于TCP/IP协议的三次握手和四次挥手的理解

旧街凉风 提交于 2019-12-05 02:43:33
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Freak_ysy/article/details/81543873 因为很久之前被老师要求讲过这个问题,好久没有看,又有些迷糊了。只能写一篇博客来加强一下记忆 TCP报文段首部格式的几个名词 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效 同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 终止FIN:用来释放一个连接。FIN

TCP三次握手详解及释放连接过程

江枫思渺然 提交于 2019-12-05 02:04:16
TCP报文结构 源端口和目的端口: 各占2个字节,分别写入源端口号和目的端口号。 序号: 占4个字节。序号使用mod 运算。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。故该字段也叫做“报文段序号”。 确认序号: 占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认序号=N,则表明:到序号N-1为止的所有数据都已正确收到。 数据偏移: 占4位,表示TCP报文段的首部长度。注意,“数据偏移”的单位是32位字(即以4字节长的字为计算单位)。故TCP首部的最大长度为60字节。 保留: 占6位,保留为今后使用,目前置为0; 紧急URG: 当URG=1,表明紧急指针字段有效。这时发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。 确认ACK: 当ACK=1时,确认字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。 推送PSH: 接收方TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。 复位RST: 当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。 同步SYN: 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接

关于Tcp/ip协议的三次握手和四次挥手

房东的猫 提交于 2019-12-04 19:53:32
首先我们需要知道,tcp/ip协议并不是一个协议,而是一个协议族,里面包好tcp,udp,ip等协议,tcp/ip网络协议栈包括应用层,传输层,网络层和链路层。 tcp协议是一中面向连接的,可靠的传输层协议。连接过程就像打电话的过程。现在简要介绍其三次握手的过程: 第一次握手:客户A向客户B发送一个连接请求,在这个包中,syn=1,seq=x, 第二次握手:客户B接受到了A发送的包,然后发送一个包进行确认,该包中syn=1,ack=1,ack_seq=x+1,seq=y; 第三次握手:客户A收到了B发送的包,也发送一个确认包,该包中ack=1.ack_seq=y+1,seq=x+1; 图解如下: 关于四次挥手的图解如下 解释: 第一次挥手:当客户A要断开Tcp连接时,发送一个包,其中fin=1,ack=1,seq=x,ack_seq=x; 第二次挥手:客户B知道A要断开后,发送一个确认包,其中ack=1,seq=y,ack_seq=x+1; 第三次挥手:客户B也断开Tcp连接,此时发送一个包,其中,fin=1,seq=y+1, 第四次挥手:客户A收到B的断开请求后,发送一个确认包:ack=1,seq=x+1,ack_seq=y+2; 来源: oschina 链接: https://my.oschina.net/u/123486/blog/82808

IP 抓包

核能气质少年 提交于 2019-12-04 19:05:48
一、 网络地址规划表 主机IP 子网掩码 默认网关 MAC地址 10.11.11.128 255.255.255.0 10.11.8.254 78-45-C4-8E-82 IP地址配置为: 10.11.11.128 子网掩码为:255.255.252.0 默认网关:10.11.8.254 二、在命令提示符中输入ping www.baidu.com 测试连通性, 结果显示能ping 百度,说明网络连通。 三、应用层 1.www 请求报文: 响应报文: 这里http从请求到返回耗时0.035738000s,request in frame:97表示此请求报文frame:97。 2.直播: 打开企鹅电竞直播: 由图可知源端口号为9908,目的端口号为9000,用户数据报长度为62 比特,校验和为0x96ca,数据大小为54 bytes。 四、传输层 3次握手过程分析 客户端通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答(SYN=1)。服务器发送ACK包确认应答(ACK=1),发送SYN包请求连接(SYN=1)。客户端针对SYN包发送ACK包确认应答(ACK=1)。主机的TCP通知上层应用进程,连接建立。 4次挥手过程分析 所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开