tcp四次挥手

linux-7week

末鹿安然 提交于 2020-03-14 00:32:45
1、osi七层模型和TCP/IP五层模型 应用层:为应用软件提供服务。 表示层;用于处理两个通信系统中交换信息的表示方式,主要有数据格式交换,数据加密数据解秘,数据压缩等。 会话层:维护两个计算机之间的传输链接,保证点到点传输不中断,以及管理数据交换等。 传输层:确保数据传输的可靠性,通过端口号来区分上层应用程序;传输的是数据段 --TCP UDP 网路层:数据传输, 数据包,逻辑地址/IP地址 --路由器 ;协议-IP ICMP IGMP ARP RARP 数据链路层:数据帧、MAC地址/物理地址, --交换机 物理层:二进制数据传输,比特流;--网卡 2、总结描述TCP三次握手四次挥手 TCP的三次握手: 在A机向B机发送数据交互时,建立SYN数据连接请求 ,数据包seq=x,发送给B机当B机收到数据后会回复给A机,同样也会发送SYN数据建立报文,B机给A机的数据包为seq=y,同样也要回复给A机的确认报文ACK=x+1,表明此数据我以收到,当A机再次收到B机确认的数据后,回复确认报文ACK=y+1,同样也会封装自己的数据包x+1告诉B机可以进行数据交互。 TCP的四次断开: 在A机向B机请求断开连接时,会发送FIN断开连接请求,封装一个数据包seq=x,发送给B,当B机收到A记得断开请求数据时,同样也会回复给A机ack确认报文数据包会表示为seq=x+1

TCP UDP面试题

早过忘川 提交于 2020-03-12 13:42:35
1.TCP/IP四层模型 # 1.网络接口层(物理层,数据链路层) # 2.网络层 # 3.传输层 # 4.应用层(会话层,表示层,应用层) 2.TCP与UDP区别 # TCP:面向连接,可靠的,速度慢,效率低 # UDP:无连接,不可靠,速度快,效率低 3.TCP/UDP应用 # TCP对通信质量有要求的,例如HTTP,HTTPS协议 # UDP不需要一对一沟通,建立连接的,可以做到一对多,如广播,直播需要处理速度快的,能容忍丢包的 4.三次握手四次挥手 # 三次握手# 1.客户端发送一个带SYN标志的TCP报文到服务器端,并进入SYN_SEND状态,等待服务端确认 # 2.服务端收到客户端的报文并返回一个同时带ACK标志和SYN报纸的报文,进入SYN_RECV状态。表示确认刚才客户端的报文,同时询问客户端是否准备好通讯 # 3.客户端再次回应服务端一个ACK报文,双方进入ESTABILISHED状态 # 四次挥手 # 1.TCP客户端发送一个FIN,用来关闭客户端到服务端的数据传送 # 2.服务端收到这个FIN,它发挥一个ACK,确认序号为收到的序号加一 # 3.服务端关闭客户端的连接,发送一个FIN给客户端 # 4.客户端发回ACK报文确认,并将确认序号设置为收到序号加一 5.为什么连接的时候是三次握手,关闭的时候是四次挥手? # 因为服务端收到客户端的SYN连接请求报文后

TCP如何实现可靠传输

瘦欲@ 提交于 2020-03-12 08:51:38
1.TCP 和 UDP的区别: (1)TCP面向连接;UDP无连接 (2)TCP保证数据的可靠传输,数据传送无差错,不丢失,无重复,按序到达;UDP不保证可靠交付 (3)TCP连接一对一;UDP支持更广泛 (4)UDP实时性好,效率高,适用场景:短消息传输,大量客户端,对数据安全性要求不高但实时性要求高 (5)TCP面向数据流;UDP面向数据报 2.TCP如何保证数据传输的可靠性? 1. 序列号 ,ACK信号:发送方按照顺序给要发送的数据包的每个字节都标上编号。接收方接收到发送方的数据包之后,回传一个ACK信号,标识下一个需求的数据包初始字节编号。 2. 超时重发 :在等待接收方回传的ACK信号超时后,发送方重发数据包。一旦开始重传,下一次等待的时间间隔指数增长,重发一定次数后还是收不到ACK信号,将强制终止连接。 3. TCP的连接管理 :建立连接的三次握手和断开连接的四次挥手。 4. 以段为单位发送数据包 :在建立TCP连接的同时,两端协商发送数据包的单位,称为“最大消息长度”:MSS。 【TCP数据(MSS字节)】【TCP首部(20字节)】【IP首部(20字节)】 5. 滑动窗口 :以段为单位发送数据包,每发送一个数据包需要等待一个ACK信号,当数据包往返时间越长效率越低。滑动窗口中窗口前端为已发送但为收到ACK的数据,后端为待发送数据。发送端一次发送多个数据

网络7层架构+TCP/IP原理

怎甘沉沦 提交于 2020-03-12 08:23:40
7 层模型主要包括: 1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率 等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为 1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。 2. 数据链路层:主要将从物理层接收的数据进行 MAC 地址(网卡的地址)的封装与解封装。常把这 一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。 3. 网络层:主要将从下层接收到的数据进行 IP 地址(例 192.168.0.1)的封装与解封装。在这一层工 作的设备是路由器,常把这一层的数据叫做数据包。 4. 传输层:定义了一些传输数据的协议和端口号(WWW 端口 80 等),如:TCP(传输控制协议, 传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议, 与 TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如 QQ 聊天数据就是通过这 种方式传输的)。 主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。 常常把这一层数据叫做段。 5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间 发起会话或或者接受会话请求(设备之间需要互相认识可以是 IP 也可以是 MAC 或者是主机名) 6

TCP连接性能指标之TCP关闭过程(四次挥手)

流过昼夜 提交于 2020-03-12 03:00:11
TCP关闭过程(四次挥手): ESTABLISHED : 当前建立连接状态 CLOSE_WAIT :Server端收到来自Client端的FIN包后,发送ACK回Client端,进入CLOSE_WAIT 状态。 LAST_ACK :同时Server端向上层应用告知客户端关闭消息,发送FIN包回Client端,然后进入LAST_ACK阶段,等待客户端ACK。 CLOSED :Server端收到Client端Ack后,进入CLOSED状态,连接关闭。 FIN_WAIT1 :Client端发送FIN包,然后进入FIN_WAIT1状态,等待Server端ACK。 FIN_WAIT2 :Client端收到Server端ACK后,进入FIN_WAIT2状态,等待Server端FIN包。 TIME_WAIT :Client端收到Server端FIN后,发送ACK回Server端,然后进入TIME_WAIT状态,等待(2*MSL)Server端接受ACK后,TCP连接关闭。 实例监控: 来源: https://www.cnblogs.com/niejunlei/p/12466823.html

TCP的三次握手和四次挥手的通俗化解释

梦想的初衷 提交于 2020-03-11 01:12:01
TCP的三次握手和四次挥手 TCP的三次握手的简单过程:1-3 0-服务器进程在创建的时候就进入listen状态,随时准备接受客户端请求(前置) 1-首先客户端向服务器发送连接请求(SYN),同时客户端主动进入syn_send(同步已发送)状态–半打开状态。 2-服务器接收到请求之后,进行自身确认请求+发出确认报文(syn+ack),这是两个动作合并成了一个,同时,服务器被动进入syn_rcvd(同步收到)状态–半打开状态。 3-客户端接收到服务器发出的确认报文之后,再一次向服务器发出确认链接报文(syn),此时客户端也进入estalished(已建立连接)状态;当服务器再次收到客户端的确认链接后进入established(已建立连接)状态,双方开始通信。 为什么是三次握手连接 假如是两次握手: 场景==》 客户端发送了第一条请求因为网络延时滞留在网络节点中 ,这时候客户端迟迟没有收到服务器的确认报文,就会认为服务器没有收到请求,就会** 重新 **进行请求,然后服务器收到后进行确认回复,这时就完成了两次握手,完成连接,传输数据,然后关闭连接。这时,滞留在网络的节点中的请求在网络通畅后到达了服务器,之后服务器还是会进行确认回复,这样就再次完成两次握手,重新建立了连接。就会导致错误和浪费。 **为什么不是四次或者更多:**tcp协议建立连接,三次就能够最大程度上达到可靠连接了

TCP的三次握手与四次挥手(详解+动图)

半腔热情 提交于 2020-03-09 21:53:26
TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。 TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节, TCP连接中传送的字节流中的每个字节都按顺序编号 。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认号,占4个字节,是 期望收到对方下一个报文的第一个数据字节的序号 。例如,B收到了A发送过来的报文,其序列号字段是501,而数据长度是200字节,这 表明B正确的收到了A发送的到序号700为止的数据 。因此,B期望收到A的下一个数据序号是701,于是B在发送给A的确认报文段中把确认号置为701; 数据偏移,占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远; 保留,占6位,保留今后使用,但目前应都位0; 紧急URG,当URG=1,表明紧急指针字段有效。告诉系统此报文段中有紧急数据; 确认ACK,仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1; 推送PSH,当两个应用进程进行交互式通信时

TCP三次握手、四次挥手、滑动窗口、流量控制

左心房为你撑大大i 提交于 2020-03-09 18:18:27
在学习TCP协议之前,我们了解一下TCP头的报文格式 最上层是源端口号和目标端口号 接下来是包的序号和确认序号,这里的序号的作用就是维持TCP的顺序性和可靠性两种特性 接下来左边部分是当前的状态位,而大名鼎鼎的三次握手和四次挥手就是基于这个状态位实现的 右半部分是滑动窗口,主要是为了实现流量控制和拥塞控制 记住这个报文格式,接下来的内容都是基于这个的 #### 三次握手 首先我们从一个两个人打电话的例子来描述一下: A:哈喽,B。能听到么? B:你好,A。我能听到,你能听到么? A:太好了,我也能听到。我们来唠嗑么。 这个过程其实可以完美的解释三次握手的机制。我们知道,网络环境总是不安全的,只有至少经过这三次交互才能确认两方的发送和接受能力都没问题。 我们来看一下这几步分别确定了什么: 第一回合:当A将要跟B通信时,它会先发出去一个包。 第二回合:当B收到这个包的时候,就可以确定A的发送能力没问题,自己的接受能力没问题,它就会给A一个回复说:我收到了你的包了。 第三回合:A收到B的返回信息后就可以确定自己的发送和接受都没有问题,B的接受和发送能力都没有问题。但是这个时候B还不能确定自己的发送能力,所以只有当A再次发送一个包告诉B我收到你的包了才算是完成了这个握手。 三次握手除了上方的连接之外,还会牵扯到我们文章刚开始时说的包的序号和状态位,下面这个图就是一个完整的三次握手流程

网络协议

こ雲淡風輕ζ 提交于 2020-03-09 11:01:08
网络协议介绍 OSI(Open System Interconnect)七层模型:通信的特点是对等通信 从上往下分别为 应用层:为应用程序提供服务,此层应有的网络协议有HTTPS,HTTP,FTP等协议 实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。 表示层:数据格式化,数据加密;表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别 由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。 会话层:建立,管理,维护会话,会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。 会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息

面试题:UDP&TCP的区别

人走茶凉 提交于 2020-03-09 09:46:08
相同点 UDP协议和TCP协议都是传输层协议。 TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。 不同点 报头不同 特点不同 协议不同 UDP 报头 UDP数据报最大长度64K(包含UDP首部),如果数据长度超过64K就需要在应用层手动分包,UDP无法保证包序,需要在应用层进行编号。 特点 无连接 :知道对端的IP和端口号就直接进行传输, 不需要建立连接。 不可靠 :没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息。 面向数据报 :不能够灵活的控制读写数据的次数和数量,应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并。 数据收不够灵活,但是能够明确区分两个数据包,避免粘包问题。 协议