tcp四次挥手

TCP三次握手与四次挥手的过程及原因

点点圈 提交于 2019-12-01 18:37:53
*本篇文章来彻彻底底的分析一下TCP三次握手与四次挥手的过程及原因。。。→_→* TCP的连接建立——三次握手 最初两端的TCP进程都处于 CLOSED(关闭)状态 。 A主动打开连接,B被动打开连接 B的TCP**服务器进程创建传输控制块TCB(Transmission Control Block) ,然后 处于LISTEN(收听)状态,准备接受客户端的连接请求** A的TCP**客户端进程也创建传输控制块TCB,向B发出连接请求报文段,此报文段中同步位SYN=1,且选择一个初始序号seq=x**。TCP规定, SYN=1的报文段不能携带数据,但要消耗一个序号 。此时A进入 SYN-SENT(同步已发送)状态 B收到连接请求报文后, 如果同意建立连接,则向A发送确认报文段,此报文段中SYN=1,确认位ACK=1,确认号为ack=x+1,同时选择一个初始序号seq=y 。此报文段也 不能携带数据,但同样要消耗一个序号 。此时B进入 SYN-RCVD(同步收到)状态 A收到B的确认报文段后,还要向B发送确认报文段。 此报文段中ACK=1,ack=y+1,seq=x+1 。TCP规定 ACK报文段可以携带数据,但如果不携带数据则不消耗序号,所以下一个数据报文段的序号仍是seq=x+1 。此时A进入 ESTABLISHED(以建立连接)状态 当B收到A的确认后,也进入

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

百般思念 提交于 2019-12-01 18:36:35
背景描述 通过上一篇中网络模型中的 IP层的介绍 ,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机, 但是并没有交付给主机的具体应用进程 。而 端到端的通信 才应该是应用进程之间的通信。 UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,但是正是因为这样,省去和很多的开销,使得它的速度比较快,比如一些对实时性要求较高的服务,就常常使用的是UDP。对应的应用层的协议主要有 DNS,TFTP,DHCP,SNMP,NFS 等。 TCP,提供面向连接的服务,在传送数据之前必须先建立连接,数据传送完成后要释放连接。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等。对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。 常用的熟知端口号 应用程序 FTP TFTP TELNET SMTP DNS HTTP SSH MYSQL 熟知端口 21,20 69 23 25 53 80 22 3306 传输层协议 TCP UDP TCP TCP UDP TCP TCP TCP TCP的概述 TCP把连接作为最基本的对象

TCP-三次握手和四次挥手

这一生的挚爱 提交于 2019-12-01 18:36:08
三次握手 OSI七层参考模型 TCP/IP四层网络模型 传输层的任务就是负责主机中两个进程之间的通信, IP 知道怎么把分组投递给哪个主机不知道怎么把它们投递给主机上的具体应用。 简单的说, IP 层提供主机到主机间的通信, UDP/TCP 提供进程与进程之间的通信, 应用层协议规定了进程通信时需遵守的规则和标准。 UDP/TCP 位于 IP 层的上层,应用协议的下层。 TCP提供在不可靠的互联网络上提供一个可靠的端到端传输,特点是:1.面向连接、2.可靠、3.基于字节流。下面看看三次握手怎样保证可靠连接的: 每一次TCP连接都需要三次握手:1.建立连接、2.数据传输、3.连接释放 第一次握手----客户端向服务器招手问你能收到吗?能的话回个话。: 客户端首先向服务器发送SYN=1来创建一个主动打开,作为三次握手的一部分。客户端把这段连接的序号设定为随机数seq=client_isn=A; 第二次握手----服务器反馈说我能收到,你能收到吗?能的话回个话。: 服务器收到连接后应当回应这次招手,给客户端返回一个SYN=1、ACK=A+1、SYN/ACK本身又有一个随机序号seq=server_isn=B;客户端收到服务器的反馈后,收到SYN=1、ACK=A+1、seq=server_isn=B,判断服务器能够正常回应。 第三次握手----客户端最后反馈说,我能收到:

后端开发工程师面试题汇总 | 网络知识

本秂侑毒 提交于 2019-12-01 18:13:01
无论做前端开发还是后端开发,网络知识是必备的知识。这部分知识是基础中的基础,是我们必须掌握的内容。网络相关的问题也是在面试过程中经常被问到的内容。本文主要梳理了一下网络相关的主要知识点及面试中经常被问到的内容,希望对大家有所帮助。 OSI有哪几层,会画出来,知道主要几层的各自作用 OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。其一共有7层: 1. 应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用 2. 表示层(数据):主要解决拥护信息的语法表示问题,如加密解密 3. 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的 4. 运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等 5. 网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的 传输 6. 数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正 7. 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等* TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称 TCP/IP分层模型(TCP/IP Layening Model

TCP三次握手 四次挥手

旧街凉风 提交于 2019-12-01 17:40:08
三次握手: 最初,客户端服务器端都处于CLOSED状态 服务器处于LISTEN状态,等待客户端发送请求(SYN=1(标志位,意思是请求连接) seq=x(随机产生的数)) 客户端发送请求后,进入SYN-SENT状态,等待服务器确认。 服务器端收到请求,进入SYN-RCVD状态,同时发送给客户端应答信号SYN=1 ACK=1 seq=y ack=x+1 客户端收到应答后,进入ESTABLISHED状态,同时给服务器端回复应答信号 ACK=1 seq=x+1 ack=y+1 服务器端收到应答,进入ESTABLISHED状态。 四次挥手: 最初,客户端服务器端都处于ESTABLISHED状态 客户端向TCP发送连接释放报文(FIN=1,序号seq=u),同时停止发送数据,进入终止等待状态1 FIN-WAIT-1 服务器端收到释放报文后,给出回复确认(ACK=1,确认号ack=u+1,序号seq=v),并进入关闭等待状态CLOSE-WAIT 客户端收到了来自服务器的确认,进入终止等待2状态FIN-WAIT-2,等待服务器发出释放报文 等到服务器端没有需要发给客户端的数据后,服务器端发出释放报文(FIN=1,ACK=1,序号seq=w,确认号ack=u+1)并进入最后确认状态,等待客户端的回复 客户端收到来自服务器端的释放报文后,回复确认(ACK=1,seq=u+1,ack=w+1

day26

房东的猫 提交于 2019-12-01 17:37:47
整理TCP三次握手、四次挥手图 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=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。 TCP三次握手 最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端

day26作业

久未见 提交于 2019-12-01 17:16:09
明日默写: 带连接循环和通讯循环的TCP通讯代码模板。 作业: 1.整理TCP三次握手、四次挥手图 TCP三次握手 最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。 TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了LISTEN(监听)状态; TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。 TCP服务器收到请求报文后,如果同意连接,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了SYN-RCVD(同步收到)状态。这个报文也不能携带数据,但是同样要消耗一个序号。 TCP客户进程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED(已建立连接)状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。

day26 网络编程

老子叫甜甜 提交于 2019-12-01 17:12:52
软件开发架构 ​ 开发软件,必须要开发一套 客户端 与 服务端 ​ 客户端与服务端的作用 ​ 服务端:24小时不间断提供服务 ​ 客户端:如果想要找服务,就去服务端 软件开发架构分两种 C/S架构: ​ Client:客户端 ​ Server:服务端 优点: ​ 软件的使用稳定,并且可以节省网络资源。 缺点: ​ 1.若用户想要在同一个设备上使用多个软件,必须下载多个客户端。 ​ 2.软件的每次更新,客户端也必须跟着重新下载更新 c/s架构的软件: ​ 例如:电脑上的qq,pycharm等,手机端的微信,王者荣耀等 B/S架构: ​ Browser:浏览器 ​ Server:服务端 优点: ​ 以浏览器充当客户端,无需用户下载多个软件,与也无需用户下载更新软件版本,直接在浏览器上访问需要使用的软件 缺点: ​ 消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定。 b/s架构的软件: 例如:在浏览器上输入某个软件的域名( http://oldboyedu.com/ ) 网络编程 网络发展历史 ​ 所有先进的技术都源自于军事,希望通过远程获取数据,所以出现了‘网络编程’。 ​ 早期如何实现远程通信: ​ 打电话—》电话线 ​ 电脑—》网线,有线网卡 ​ 笔记本电脑—》有线网卡,无线网卡 ​ 要实现远程通信必须具备: ​ 1.物理连接介质—》网卡 ​ 2.互联网协议: ​

day26 作业

人盡茶涼 提交于 2019-12-01 17:12:28
1. 整理TCP三次握手、四次挥手图 三次握手 服务器开机,开始listen监听, 客户端开机,发送链接请求,进入SYN-SENT(同步已发送)状态, 服务端收到链接请求,同意链接,返回发送确定报文,进入SYN-RCVD同步状态, 客户端收到同意链接报文,进入established状态,并向服务端给出确认, 服务端收到客户端的确认,同步完成,也进入established状态。建立连接成功! [] 四次挥手 数据传输完毕 客户端发送释放链接请求,进入fin-wait1状态(停止发送数据,但可以接收数据), 服务端收到释放链接请求,同意释放,返回发送确定报文,进入close-wait状态, 客户端接收到同意释放报文,进入fin-wait2状态,接收服务器发送的最后的数据,并等待服务端发送释放链接请求, 服务端将最后的数据发送完,发送释放链接请求,进入last-ack状态,等待客户端确认 客户端收到释放链接请求,同意释放,返回发送确认报文,进入time-wait状态,等待服务端接收到报文, 服务端接收到确认报文,立刻进入closed状态,释放链接, 连接被释放,客户端进入closed状态。 ( https://img2018.cnblogs.com/blog/1774906/201910/1774906-20191017212935537-1120845795.png ) 2.

网络编程---scoket使用,七层协议,三次挥手建连接,四次挥手短链接

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-01 17:00:42
目录 == 网络编程 == 软件开发架构 网络编程 互联网协议 TCP协议的工作原理 Socket == 网络编程 == 软件开发架构 开发软件 必须要开发一套 客户端与服务端 客户端与服务端的作用 服务端:24小时不间断提供服务 客户端:如果想要找服务,就去寻找服务端并享受 软件开发架构分为两种 C/S架构 Client:客户端 Server:客户端 优点:软件的使用稳定,并且可以节省网络资源 缺点:1.若用户想在同意设备上使用多个软件,不许下载多个客户端 2.软件的每一次更新,客户端也必须跟着重新下载更新 C/S架构的软件:电脑上的qq,P有charm,手机上的微信, B/S架构 Brower:浏览器充当客户端, Server: 服务端 优点: 以浏览器充当客户端,无需用户下载多个软件,也无需用户下载更新软件版本, 直接在浏览器上访问需要使用的软件。 缺点: 消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定。 B/S架构的软件: 例如: 在浏览器(客户端)上输入某个软件的域名( http://oldboyedu.com/ )。 网络编程 网络编程发展历史 所有先进的技术都源于军事,希望通过远程获取数据,所以出现了“网络编程” 早期如何实现远程通信 --打电话 -----》电话线 --纯平电脑-----》网线,有线网卡 --笔记本电脑-----》有线网卡,无线网卡