什么是TCP在了解三次握手四次挥手前必须先了解什么是tcp。TCP是面向连接的,可靠的,基于字节流的传输层协议。连接:所谓连接其实是保证可靠性和流量控制的状态信息的总和,包括sokict,滑动窗口和序列号。可靠性:tcp通过序列号,重传机制,滑动窗口等一系列控制机制保证数据的无重复,无丢失,有序的被接受端处理。字节流:tcp的数据是基于字节流,因此是无边界,数据是可以无限大的,tcp可以通过分片机制将数据有序发送到接收端。TCP结构TCP的头部在无“选项”字段的情况下是20个字节。包括:2字节的源端口2字节的目标端口4字节序列号4字节确认序列号4位的首部长度6位保留字段6位标志位(SYN,AC
首先,源端口号和目标端口号是不可少的,这一点和UDP是一样的。如果没有这两个端口号。数据就不知道应该发给哪个应用。接下来是包的序号。为什么要给包编号呢?当然是为了解决乱序的问题。不编好号怎么确认哪个应该先来,哪个应该后到呢。编号是为了解决乱序问题。还应该有的就是确认序号。发出去的包应该有确认,要不然我怎么知道对方有没有收到呢?如果没有收到就应该重新发送,直到送达。这个可以解决不丢包的问题。对于TCP来讲,IP层你丢不丢包,我管不着,但是我在我的层面上,会努力保证可靠性。通过对TCP头的解析,我们知道要掌握TCP协议,重点应该关注以下几个问题:顺序问题,稳重不乱;丢包问题,承诺靠谱;连接维护,有
目录1️⃣TCP协议格式2️⃣TCP三次握手3️⃣TCP四次挥手 1️⃣TCP协议格式 TCP报头当中各个字段的含义如下:源/目的端口号:表示数据是从哪个进程来,到发送到对端主机上的哪个进程。32位序号/32位确认序号:分别代表TCP报文当中每个字节数据的编号以及对对方的确认,是TCP保证可靠性的重要字段。4位TCP报头长度:表示该TCP报头的长度,以4字节为单位。6位保留字段:TCP报头中暂时未使用的6个比特位。16位窗口大小:保证TCP可靠性机制和效率提升机制的重要字段。16位检验和:由发送端填充,采用CRC校验。接收端校验不通过,则认为接收到的数据有问题。(检验和包含TCP首部+TCP数
首先我们要知道建立连接的目的是什么,我们是为了可靠的传输数据。那既然是可靠的传输数据,我们必须保证客户端和服务端都能正常的发送和接收数据,如果某一方不能正常的发送或者接收数据,那整个数据的传输就不能成功,也就不可靠。三次握手1.第一次握手:第一次握手是客户端发送同步报文到服务端,这个时候客户端是知道自己具备发送数据的能力的,但是不知道服务端是否有接收和发送数据的能力;2.第二次握手:当服务端接收到同步报文后,回复确认同步报文,此时服务端是知道客户端具有发送报文的能力,并且知道自己具有接收和发送数据的能力,但是并不知道客户端是否有接收数据的能力;3.第三次握手:当客户端收到服务端的确认报文后,知
文章目录1.第2次握手传回了ACK,为什么还要传回SYN?2.断开连接-TCP四次挥手3.为什么要四次挥手?4.为什么不能把服务器发送的ACK和FIN合并起来,变成三次挥手?5.如果第二次挥手时服务器的ACK没有送达客户端,会怎样?6.为什么第四次挥手客户端需要等待2*MSL(报文段最长寿命)时间后才进入CLOSED状态?1.第2次握手传回了ACK,为什么还要传回SYN?服务端传回发送端所发送的ACK是为了告诉客户端:“我接收到的信息确实就是你所发送的信号了”,这表明从客户端到服务端的通信是正常的。回传SYN则是为了建立并确认从服务端到客户端的通信。SYN同步序列编号(SynchronizeS
TCP连接断开在当今数字化时代,互联网已经成为了人们生活中不可或缺的一部分。而在互联网的基础之上,TCP协议扮演着关键的角色,它负责着数据在网络中的可靠传输。在TCP连接的建立过程中,我们已经了解了三次握手的过程和原理。然而,连接的建立只是TCP协议的一部分,同样重要的是连接的断开过程。本文将重点探讨TCP连接的断开过程,包括四次挥手的过程和状态变迁,以及为什么挥手需要四次和为什么需要TIME_WAIT状态。通过深入理解TCP连接断开的过程,我们可以更好地理解网络通信的原理TCP四次挥手过程和状态变迁TCP断开连接需要通过四次挥手的方式。双方都有能力主动断开连接,一旦断开连接,主机中的各种「资
一、知识点介绍 1.什么是三次握手?三次握手(Three-wayHandshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。 本质:是确认通信双方收发数据的能力。 2.什么是四次挥手?建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是T
文章目录流程考点流程主动方打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后主动方进入FIN_WAIT_1状态。被动方收到该报文后,就向主动方发送ACK应答报文,接着被动方进入CLOSE_WAIT状态。主动方收到被动方的ACK应答报文后,进入FIN_WAIT_2状态。等待被动方处理完数据之后,也向主动方发送FIN报文,之后被动方进入LAST_ACK状态。主动方收到被动方发送的FIN报文后,回一ACK应答报文,之后进入TIME_WAIT状态。被动方收到了ACK应答报文之后,就进入了CLOSED状态,至此被动方已经完成连接的关闭。主动方在经过2MSL一段时间之后
目录一、TCP三次握手(建立连接)二、TCP三次握手细节三、TCP(四次挥手)断开连接四、TCP非常重要的协议一、TCP三次握手(建立连接)🤝🤝握手,单纯就是发一个打招呼的数据,不携带业务信息那么为什么叫三次握手呢,因为B的中间两次可以合并成一次。为什么我们要合并呢?💫💫因为我们的封装(加报头)和分用,两个分一次比分两次成本低,效率提高。合并之后,节省封装和分用的过程,降低了成本,提高了效率,原则上是能合并就合并。一般来说我们用这六位,其中两位来表示三次握手,分别是SYN和ACK我们上一篇文章说了ACK是应答报文,SYN就相当于那种传输的数据三次握手,第一次的SYN一定是客户端发起的(客户端是
本来是不愿意写的,可是在实际场景,对具体的描述标志还是模糊不清,基础不扎实,就得承认!!!TCP连接建立需要解决三大问题:知道双方存在约定一些参数,如最大滑动窗口值、是否使用滑动窗口扩大选项、时间戳、服务质量等等双方能够对运输实体资源(缓存大小、连接表中的项目)进行分配三次握手握手:TCP客户端和服务器之间进行交换三个TCP报文段初始状态:两端的进程都处于关闭状态服务器端创建传送控制块,用来存储TCP连接中的一些重要信息(TCP连接表、指向发送和接收缓存的指针、指向重传队列的指针、当前发送和接收序号等等),之后准本接收TCP客户进程的连接请求。TCP服务器处于监听状态,等待客户端进程的连接请求