tcp四次挥手

TCP三次握手和四次挥手原理分析

岁酱吖の 提交于 2019-11-28 17:00:10
TCP/IP协议不是 TCP 和 IP 这两个协议的合称,而是指因特网整个TCP/IP协议族。 从协议 分层模型 方面来讲,TCP/IP由四个层次组成: 网络接口层 、 网络层 、 传输层 、 应用层 。 TCP协议:即传输控制协议,它提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或举出网络故障,或网络负荷太重而使网际基本传输系统不能正常工作 时,就需要通过其他的协议来保证通信的可靠。TCP就是这样的协议。TCP采用“带重传的肯定确认”技术来实现传输的可靠性。并使用“滑动窗口”的流量控制机制来高网络的吞吐量。TCP通信建立实现了一种“虚电路”的概念。双方通信之前,先建立一条链接然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。 本文主要讲述的是 1、TCP三次握手原理,以及为什么要三次握手,两次握手带来的不利后果。 2、TCP四次挥手原理,为什么要四次挥手。 TCP三次握手原理 首先,给张图片,建立TCP三次握手的直观印象。 每次握手(发送数据请求或应答)时,发送的数据为TCP报文,TCP段包含了源/目的地址,端口号,初始序号,滑动窗口大小,窗口 扩大因子,最大报文段长度等。还有一些标志位: (1)SYN:同步序号 (2)ACK:应答回复 (3)RST:复位连接,消除旧有的同步序号 (4)PSH:尽可能的将数据送往接收进程

为什么Tcp连接的创立需要三次握手 ,而断开需要四次挥手

北城余情 提交于 2019-11-28 16:56:07
这是经典的三次握手,为啥是3次? 刚开始不明白,后来读了一些书,看了一些资料,了解了基于TCP协议传递信息流的通信方式。 发送方以确定SYN标志,同时生成一个ISN(初始序列号),也就是消息序号来发送信息(消息字节数n)。接收方如果收到了信息,会以ACK标志和下次需要对方传递的序号值发送给对方,ack标志告诉对方我已经收到了信息,传递序号ISN+n告诉对方下次从这个序号的地方开始发送。 两次消息的传递,意味着一次通信的完成。后面消息的序号都是基于ISN和传递消息的字节数逐渐累加计算得来。 TCP协议的通信方式规定是这样的。同时,基于tcp协议的双方是双全工的,也就是说通信双方都可以向对方发送消息,也都可以独立关闭自己一方的通信通道。 基于通信方式和双全工的特性,所以在tcp连接建立时 client需要将自己的ISN序号告知对方,同时需要对方的确定。 server也需要将自己的ISN序号告知对方,同时也要对方的确定。 在上图中,server将自己的ack和发出的syn标志的告知对方ISN的合并在一次传递中,这样子节省流量。所以三次握手很合理。 至于四次挥手,同样也是基于以上的原理。尤其是通信双方都可以独立关闭自己的通信通道,也就是半关闭。 client先发送FIN告知对方我已经完成数据发送了,server回复ack来确定我知道了。这样一个流程,就关闭了client的发送信息通道

TCP常见面试题

末鹿安然 提交于 2019-11-28 16:55:48
1.画出TCP的报头 2.说一下TCP的三次握手过程 3.为什么TCP握手需要三次? TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。 如果TCP的握手是两次: <1>如果client发给server的SYN报文因为网络原因,延迟发送。由于client没有收到server对SYN的确认报文,会重发SYN报文,服务器和回复ACK,连接建立。数据发送完毕,这条连接被正常关闭。这时,延迟的SYN报文发到了server,server误以为这是client重新发送的同步报文,又回复了一个ACK,和client建立了连接。 <2>如果server给client发送的ACK报文因为网络原因,报文被丢弃,此时server认为已经建立好连接,但是client没有收到确认报文,认为没有建立好连接。client会重发SYN报文,此时server已经处于就绪状态,认为已经建立好连接。 如果TCP的握手是四次: –1.client给server发送SYN同步报文; –2.server收到SYN后,给client回复ACK确认报文; –3.server给client发送SYN同步报文; –4.client给server发送ACK确认报文。 第2.3步之间,server和client没有任何的数据交互,分开发送相当于多发了一次TCP报文段,SYN和ACK标识只是TCP报头的一个标识位

TCP为什么是三次握手和四次挥手

故事扮演 提交于 2019-11-28 16:55:34
为什么建立连接是三次握手断开连接是四次挥手? 三次握手的流程和四次挥手的流程是什么? 三次握手与四次回收分别对应TCP连接与断开过程 tcp报文格式 标志位含义 ACK:确认序号有效。 SYN:发起一个新连接。 FIN:释放一个连接。 三次握手的过程 注意:三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的 所谓三次握手,即建立TCP连接,需要客户端和服务端总共发送至少三个包确认连接的建立。流程如下 第一次握手 Client将标志位SYN置1,随机产生一个值seq=J,并将数据包发给Server Client进入SYN_SENT状态,等待Server确认 第二次握手 Server收到数据包后标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置1,随机产生一个值,并将数据包发给Client确认连接请求,Server进入SYN_RCVD状态 第三次握手 Client收到确认后若ACK为1,则将该数据包发送给Server,Server检查ACK为1则连接建立成功,Client与Server进入ESTABLISHED状态完成三次握手,可以传输数据 问题1:为什么建立连接是三次握手,四次不可以吗 第一次握手: Client什么都不能确认 Server确认了对方发送正常 第二次握手: Client确认:自己发送/接收正常,对方发送/接收正常

TCP四次挥手原理

☆樱花仙子☆ 提交于 2019-11-28 16:55:24
我们对TCP三次握手耳熟能详,那么你知道TCP四次挥手过程吗? 一、前言 唐代诗人李商隐在《无题》诗中写到:“ 相见时难别亦难,东风无力百花残 ”,表达了自己与心爱之人相见之难、离别之苦。如果把这句诗用在形容 TCP连接的建立与释放 过程,也很贴切。我们知道 TCP建立连接 时需要 三次握手 ,而 TCP连接释放 则需要 四次挥手 ,是不是很像诗中描述的意境——见面很难,分开更难。 如果你还不清楚 相见之难 — TCP三次握手 过程,可以看我的上篇博文 TCP三次握手原理 ,这样便于你更好理解T CP四次挥手 释放连接的过程。 二、TCP四次挥手过程 TCP四次挥手 指的是 TCP连接释放 过程, 不同于TCP连接建立时的 三次握手 过程,TCP连接释放过程更加复杂。在进入正题前,我们先回忆下 TCP协议 的两个重要特点: TCP协议面向连接 :应用在使用TCP协议通讯时,必须要先建立TCP连接。 TCP连接是双向通信 :通信的两端是对等的,既能发送数据,也能接收数据,就向我们打电话时一样,既能说也能听。 这两个重要特点决定了TCP连接的释放过程。下面我们一起来看下 TCP四次挥手 的过程都发生了什么。为了更好的理解,简单的画了下 TCP四次挥手 示意图如下: TCP连接 数据传输结束 后,通信的双方client与server都可以选择释放当前TCP连接

Python之网络编程(一)网络编程初识

偶尔善良 提交于 2019-11-28 16:26:02
网络编程初识 C/S B/S架构 C/S B/S架构 C: client端 B: browse 浏览器 S: server端 C/S架构: 基于客户端与服务端之间的通信 ​ QQ, 游戏,皮皮虾, 快手,抖音. ​ 优点: 个性化设置,响应速度快, ​ 缺点: 开发成本,维护成本高,占用空间,用户固定. B/S架构: 基于浏览器与服务端之间的通信 ​ 谷歌浏览器,360浏览器,火狐浏览器等等. ​ 优点: 开发维护成本低,占用空间相对低,用户不固定. ​ 缺点: 功能单一,没有个性化设置,响应速度相对慢一些. 网络通信原理 80年代,固定电话联系,(还没有推广普通话) 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 由于当时没有统一普通话,所以你如果和河南,山西,广西,福建等朋友进行友好的沟通交流,你必须学当地的方言. 推广普通话,统一交流方式. 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 统一交流方式. 全球范围内交流: 两台电话之间一堆物理连接介质连接. 拨号,锁定对方电话的位置. 统一交流方式.(英语) 话题转回互联网通信: ​ 我现在想和美国的一个girl联系.你如何利用计算机联系??? 两台计算机要有一堆物理连接介质连接. 找到对方计算机软件位置. 遵循一揽子互联网通信协议. osi七层协议 osi七层协议 应用层 表示层 会话层

网络中的 TCP/IP

空扰寡人 提交于 2019-11-28 16:23:13
TCP/IP OSI 的“实现”:TCP/IP OSI 七层模型 TCP/IP 概念层模型 功能 TCP/IP 协议族 应用层 应用层 文件传输、电子邮件、文件服务、虚拟终端 FTP,HTTP,SMTP,SNMP,Telnet 表示层 数据格式化、代码转换、数据加密 无 会话层 解除或建立与别的接点的连接 无 传输层 传输层 提供端对端的接口 TCP,UDP 网络层 网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,IGMP 数据链路层 链路层 传输哟偶地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP 物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2 常用的TCP端口号有:HTTP 80,FTP 20/21,Telnet 23,SMTP 25,DNS 53等;常用的保留UDP端口号有:DNS 53,BootP 67(server)/ 68(client),TFTP 69,SNMP 161等。 TCP的三次握手 TCP Flags URG:紧急指针标志 ACK:确认序号标志 PSH:push标志 RST:重置连接标志 SYN:同步序号,用于建立连接过程 FIN:finish标志,用于释放连接(1:发送方已无数据发送) “握手”是为了建立连接,TCP三次握手的流程图如下: 在TCP/IP协议中

几率大的网络安全面试题(含答案)

安稳与你 提交于 2019-11-28 16:22:57
其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含答案) 几率大的Redis面试题(含答案) 几率大的linux命令面试题(含答案) 几率大的杂乱+操作系统面试题(含答案) 几率大的SSM框架面试题(含答案) 几率大的数据库(MySQL)面试题(含答案) 几率大的JVM面试题(含答案) 几率大的现场手撕算法面试题(含答案) 临时抱佛脚必备系列(含答案) 本文面试题汇总 : 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理 rip协议是什么?rip的工作原理 什么是RARP?工作原理 OSPF协议?OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手? tcp为什么要三次握手? dns是什么?dns的工作原理 一次完整的HTTP请求过程 Cookies和session区别 GET 和 POST 的区别 HTTPS和HTTP的区别 session 的工作原理? http长连接和短连接的区别 OSI 的七层模型都有哪些? session 的工作原理?什么是TCP粘包/拆包?发生原因?解决方案 TCP如何保证可靠传输? URI和URL的区别 什么是SSL ? https是如何保证数据传输的安全(SSL是怎么工作保证安全的)

面试官,不要再问我三次握手和四次挥手

我只是一个虾纸丫 提交于 2019-11-28 14:48:38
面试相关文章推荐: 面试必备 | 小伙伴栽在了JVM的内存分配策略。。。 垃圾收集器(CMS、G1)及内存分配策略 Java虚拟机何谓垃圾及垃圾回收算法 你真的知道Integer和int的区别吗? 三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。 见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就成功了。 面试官:然后呢? 求职者:这就是三次握手的过程,很简单的。 面试官:。。。。。。 ( 番外篇:一首凉凉送给你 ) 记住猿人谷一句话: 面试时越简单的问题,一般就是隐藏着比较大的坑,一般都是需要将问题扩展的 。上面求职者的回答不对吗?当然对,但距离面试官的期望可能还有点距离。 希望大家能带着如下问题进行阅读,收获会更大。 请画出三次握手和四次挥手的示意图 为什么连接的时候是三次握手? 什么是半连接队列? ISN(Initial Sequence Number)是固定的吗? 三次握手过程中可以携带数据吗? 如果第三次握手丢失了,客户端服务端会如何处理? SYN攻击是什么? 挥手为什么需要四次

python之socket(套接字)

孤街醉人 提交于 2019-11-28 13:18:36
一、客户端/服务器架构 1.1基本概念 客户端/服务器架构即:C/S架构,包括: (1)硬件C/S架构(打印机) (2)软件C/S架构(Web服务器) 1.2举例 生活中的C/S架构:饭店为S端,所有食客C端 二、TCP/udp/osi七层 2.1TCP/UDP协议 TCP (Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。 UDP (User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文,尽最大努力服务,无拥塞控制。使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。 2.1tcp的三次握手 所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示: TCP三次握手 (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2