计算机网络-TCP连接

TCP首部20个字节

1、为什么TCP要三次握手建立连接?

TCP连接过程,客户端发送请求到服务器,服务器确认请求发送到客户端,客户端再发送确认请求到服务器

原因:简言之,为了防止失效的连接请求发送到服务端,造成服务端以为建立了连接一直等到客户端的数据,知道超出了保活计数器的设定值,才意识到客户端出了问题,才会关闭这个连接,  如果有三次握手就不会建立连接。

网上解释的详细原因:

前两次的握手很显然是必须的,主要是最后一次,即客户端收到服务端发来的确认后为什么还要想服务端再发送一次确认呢?这主要是为了防止已失效的请求报文段突然又传送到了服务端而产生连接的误判。

考虑如下的情况:客户端发送了一个连接请求报文段到服务端,但是在某些网络节点上长时间滞留了,而后客户端又超时重发了一个连接请求报文段该服务端,而后正常建立连接,数据传输完毕,并释放了连接。如果这时候第一次发送的请求报文段延迟了一段时间后,又到了服务端,很显然,这本是一个早已失效的报文段,但是服务端收到后会误以为客户端又发出了一次连接请求,于是向客户端发出确认报文段,并同意建立连接。假设不采用三次握手,这时服务端只要发送了确认,新的连接就建立了,但由于客户端比你更没有发出建立连接的请求,因此不会理会服务端的确认,也不会向服务端发送数据,而服务端却认为新的连接已经建立了,并在一直等待客户端发送数据,这样服务端就会一直等待下去,直到超出保活计数器的设定值,而将客户端判定为出了问题,才会关闭这个连接。这样就浪费了很多服务器的资源。而如果采用三次握手,客户端就不会向服务端发出确认,服务端由于收不到确认,就知道客户端没有要求建立连接,从而不建立该连接。

2、为什么TCP断开连接要四次握手?

客户端发送关闭请求到服务器,表示客户端的数据已经全部发送给服务器。同时服务器端也要发送关闭请求到客户端,表示自己也没有数据要发送给客户端了。

时间: 2024-10-13 18:24:09

计算机网络-TCP连接的相关文章

HIT2019秋计算机网络->TCP连接3次握手

TCP(Transmission Control Protocol)传输控制协议 TCP是端-端的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous 建立联机) ACK(acknowledgement 确认) PSH(push 传送) FIN(finish 结束) RST(reset 重置) URG(urgent 紧急) seq(Sequence number 序列号) ack_seq(Acknowledge numb

计算机网络(11)-----TCP连接的建立和释放

TCP连接的建立和释放 概述 TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程,运输连接有三个阶段:连接建立,数据传送和连接释放. TCP连接的建立 如图所示,假定A主机是客户端程序,B主机是服务端程序.最初两端的TCP进程都是出于CLOSED(关闭)状态. (1)B的TCP服务器进程先创建传输控制块TCB(transmission Control Block),准备接受客户进程的连接请求.然后服务器就进入LISTEN(监听)状态,等待客户端的连接请求. (2)A的TCP客户进程

通过UDP建立TCP连接

解释 通过UDP广播查询服务器的IP地址,然后再建立TCP点对点连接. 应用场景 在服务器IP未知时,并且已知服务器与客户端明确在一个局域网或者允许组播的子网下. 通过UDP发现服务器地址然后再进行TCP连接. (PS:万维网很多路由器对组播进行了限制,所以不能通过UDP报文在万维网上进行服务器查询) 主要问题 Android真机和模拟器对组播处理不同 Android不同系统版本对组播处理不同 不同网络对组播有限制,如部分路由网络限制UDP报文 简单实现 传统组播方式,通过255.255.255

TCP学习(2)--TCP连接的建立(三次握手)

一.TCP的连接建立 TCP的建立连接的过程如下图所示.假设客户端A运行的是TCP客户程序,而服务器B运行的是TCP服务器程序.最初两端的TCP进程都处于CLOSED状态. B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后服务器进行就处于LISTEN状态,等待客户端的连接请求. TCP连接的建立过程如下: (1).客户端A发起连接请求,发送一个SYN=1,ACK=0,seq=x的报文段给服务器B,并进入SYN-SENT状态: (2).服务器B收到连接请求报文之后,如果

计算机网络——TCP三次、四次握手详解

三次握手:建立TCP连接 连接建立过程: B的TCP服务器进程先创建传输控制块TCB(存储了每一个连接中的一些重要信息,如:TCP连接表,到发送和接收缓存的指针,到重传队列的指针,当前的发送和接收序号,等),准备接受客户进程的连接请求.然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求.如有,即作出相应. A的TCP客户进程也是首先创建传输控制模块TCB,然后向B发出连接请求报文段,这时首部中的同步为SYN=1,同时选择一个初始序号seq=x.TCP规定,SYN报文段(即SYN=1

TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的

计算机网络--TCP协议深入理解

在近期学习计算机网络的过程中,由于知识点过于零散,琐碎,从而学习起来痛苦不堪,此贴只是总结了基于传输层的TCP协议相关的知识细节,并加入一点自己的理解,并无创新,若有理解不当之处,敬请提出,感谢! 首先过一下流水账,在计算机网络中,对于网络传输有七层模型,或者TCP/IP四层模型等等,那么先基于TCP/IP四层模型而言: 1.数据链路层:对0和1进行分组,定义了数据帧,确认主机物理地址,并且传输数据 2.网络层:定义IP地址,确认网络位置,通过IP给MAC寻址,对外网数据包进行路由转发 3.传输

详解TCP连接的“三次握手”与“四次挥手”(下)

上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手"我们耳熟能详,因为其相对的简单.但是,我们却不常听见"四次挥手",就算听过也未必能详细地说明白它的具体过程.下面就为大家详尽,直观,完整地介绍"四次挥手"的过程. 1."四次挥手"的详解 所谓的四次挥手即TCP连接的释放(解除).连接的释放必

计算机网络 -- TCP的三次握手

计算机网络 -- TCP的三次握手 参考:https://blog.csdn.net/qq_38950316/article/details/81087809 一).TCP协议的特点 定义: 1.是一个面向连接的.可靠的.基于字节流的传输层协议. 2.将应用层的数据分割成报文段并发送给目标节点的TCP层. 3.数据都有序号,对方收到则发ACK确认,没有则重传. 4.使用校验和来校验数据在传输过程中是否有误. 二).TCP报文头的结构 TCP报文头结构如下: 请求报文头由4个字节,32位二进制数组