tcp连接包括(TCP连接包括哪三个过程)

      最后更新:2023-10-02 05:14

      TCP 连接详解

      1、先提出一个问题, 可以不进行三次握手直接往服务端发送数据包吗?是不可以的,也是可以的;1)不可以是因为现在的TCP连接标准和规范要求传输数据前先确认两端的状态,有一端状态不OK的话,发数据包有什么用呢;2)说可以是站在网络连接的角度,像 UDP 协议;2、TCP三次握手1)标志位、随机序列号和确认序列号是在数据包的 TCP 首部里面;2)几个状态是指客户端和服务端连接过程中 socket 状态;3)第一次握手,客户端向服务端发送数据包,该数据包中 SYN 标志位为 1,还有随机生成的序列号c_seq,客户端状态改为 SYN-SENT;4)第二次握手,服务端接收到客户端发过来的数据包中 SYN 标志位为 1,就知道客户端想和自己建立连接,服务端会根据自身的情况决定是拒绝连接,或确定连接,还是丢弃该数据包;拒绝连接,会往客户端发一个数据包,该数据包中 RST 标志位为 1,客户端会报 Connection refused;丢弃客户端的数据包,超过一定时间后客户端会报 Connection timeout;确定连接时会往客户端发一个数据包,该数据包中 ACK 标志位为 1,确认序列号 ack=c_seq+1,SYN 标志位为 1,随机序列号 s_seq,状态由 LISTEN 改为 SYN-RCVD;5)第三次握手,客户端接收到数据包会做校验,校验ACK标志位和确认序列号 ack=c_seq+1,如果确定是服务端的确认数据包,改自己的状态为 ESTABLISHED,并给服务端发确认数据包;6)服务端接到客户端数据包,会校验ACK标志位和确认序列号 ack=s_seq+1,改自己的状态为 ESTABLISHED,之后就可以进行数据传输了;7)建立连接时的数据包是没有实际内容的,没有应用层的数据;8)建立连接之后发起的请求数据包,每个数据包都会封装各层协议的头部信息,标志位ACK为1,其他标志位变动;9)网络进程间的通信,一台服务器内部的进程间通信不用这样;3、TCP 连接三次握手抓包1)Socket 在 linux 系统中是一种特殊的文件,因为 linux 系统的理念就是【一切皆文件】,是系统内核级的功能;2)以上定义比较具体,可以抽象来理解,是一个内核级的用于通信的功能层,包含一组接口函数,这些函数实际就是操作 socket 文件句柄文件描述符;一个 TCP 连接由四要素【源IP、源Port、目标IP、目标Port】唯一标识,也即 socket 由这四要素唯一确定;一个 TCP 连接的建立也就是客户端、服务端创建了相对应的一对 socket,客户端和服务端之间的通信也就是这对 socket 间的通信(物理层面是网卡在发送/接收比特流数据);3)一个服务与另一个服务建立连接,他们的端口是什么呢?客户端发出请求端口号是随机的,服务端是进程监听的端口号;2、socket 主要函数介绍1、进程通信,一个进程只有一个监听 socket,connect socket 是针对一个客户的一个连接的,有很多个; 2、connect 函数内部在发起请求前会找系统随机一个端口号; 3、连接建立后,客户端发起请求传输数据,服务端会直接交给 connect socket 处理,不会交给监听 socket 处理;4、监听 socket 在处理客户端请求时,如果此时其他客户端发请求过来,监听 socket 是没法处理的,此时系统会维护请求队列由 backlog 参数指定;全连接队列(completed connection queue)半连接队列(incomplete connection queue)Linux 内核 2.2 版本之前,backlog 的大小等于全连接队列和半连接队列之和;Linux 内核 2.2 版本之后,backlog 的大小之和全连接队列有关系:半连接队列大小由 /proc/sys/net/ipv4/tcp_max_syn_backlog 文件指定,可以开很大;全连接队列大小由 /proc/sys/net/core/somaxconn 文件和 backlog 参数指定,取两个中的最小值;tomcat acceptCount 就是配置全连接队列大小;3、socket 函数在建立连接和数据传输的大概使用情况4、TCP首部结构1)2的16次方等于 65536,所以系统中端口号的限制个数为 65536,一般1024以下端口被系统占用;2)标志位这里是 6 个,还有其他标志位的,只是这 6 个标志位常用;3)seq 序列号,ack 确认序列号,序列号在数据传输时分包用到。三次握手时 seq 序列号是随机的,没有实际意义;4)TCP 包首部后面接着的是 IP 包首部,再紧接着的是以太网包首部,其实都是加 0101010101 二进制位;几个常用标志位,首先一个标志位占一个 bit 位,只能是二进制中的 1 或 0;1)SYN,简写 S,请求标志位,用来建立连接。在TCP三次握手中收到带有该标志位的数据包,表示对方想与己方建立连接;2)ACK,简写【.】,请求确认/应答标志位,用于对对方的请求进行应答,对方收到含该标志位的数据包,会知道己方存在且可用。也会用在连接建立之后,己方发送响应数据给对方的数据包中;3)FIN,简写 F,请求断开标志位,用于断开连接。对方收到己方的含该标志位的数据包,就知道己方想与它断开连接,不再保持连接;4)RST,简写 R,请求复位标志位,因网络或己方服务原因导致有数据包丢失,己方接收到的数据包序列号与上一个数据包的序列号不衔接,那己方会发送含该标志位的数据包告诉对方,对方接收到含该标志位的数据包就知道己方要求它重新三次握手建立连接并重新发送丢失的数据包,一般断点续传会用到该标志位;还有就是如果对方发过来的数据错了,有问题,己方也会发送含该标志位的数据包;5)PSH,简写 P,推送标志位,表示收到数据包后要立即交给应用程序去处理,不应该放在缓存中,read()/write() 都有缓存区;6)URG,简写 U,紧急标志位,该标志位表示 tcp 包首部中的紧急指针域有效,督促中间层尽快处理;7)ECE,在保留位中;8)CWR,在保留位中;5、TCP 抓包1)服务端会根据自身情况,没有要处理的数据时会把第二次和第三次挥手合并成一次挥手,此时标志位 FIN=1 / ACK=1;2)MSL 是 Maximum Segment Lifetime 缩写,指数据包在网络中最大生存时间,RFC 建议是 2分钟;详细描述:1)客户端、服务端都可以主动发起断开连接;2)第一次挥手,客户端向服务端发送含 FIN=1 标志位的数据包,随机序列号 seq=m,此时客户端状态由 ESTABLISHED 变为 FIN_WAIT_1;3)第二次挥手,服务端收到含 FIN=1 标志位的数据包,就知道客户端要断开连接,服务端会向客户端发送含 ACK=1 标志位的应答数据包,确认序列号 ack=m+1,此时服务端状态由 ESTABLISHED 变为 CLOSE_WAIT;4)客户端收到含 ACK=1 标志位的应答数据包,知道服务端的可以断开的意思,此时客户端状态由 FIN_WAIT_1 变为 FIN_WAIT_2;(第一、二次挥手也只是双方交换一下意见而已)5)第三次挥手,服务端处理完剩下的数据后再次向客户端发送含 FIN=1 标志位的数据包,随机序列号 seq=n,告诉客户端现在可以真正的断开连接了,此时服务端状态由 CLOSE_WAIT 变为 LAST_ACK;6)第四次挥手,客户端收到服务端再次发送的含 FIN=1 标志位的数据包,就知道服务端处理好了可以断开连接了,但是客户端为了慎重起见,不会立马关闭连接,而是改状态,且向服务端发送含 ACK=1 标志位的应答数据包,确认序列号 ack=n+1,此时客户端状态由 FIN_WAIT_2 变为 TIME_WAIT;等待 2 个MSL时间还是未收到服务端发过来的数据,则表明服务端已经关闭连接了,客户端也会关闭连接释放资源,此时客户端状态由 TIME_WAIT 变为 CLOSED;也就是说 TIME_WAIT 状态存在时长在 1~4分钟;7)服务端收到含 ACK=1 标志位的应答数据包,知道客户端确认可以断开了,就立即关闭连接释放资源,此时服务端状态由 LAST_ACK 变为 CLOSED;SYN 洪水攻击(SYN Flood)是一种 DoS攻击(拒绝服务攻击),大概原理是伪造大量的TCP请求,服务端收到大量的第一次握手的数据包,且都会发第二次握手数据包去回应,但是因为 IP 是伪造的,一直都不会有第三次握手数据包,导致服务端存在大量的半连接,即 SYN_RCVD 状态的连接,导致半连接队列被塞满,且服务端默认会发 5 个第二次握手数据包,耗费大量 CPU 和内存资源,使得正常的连接请求进不来;
      TCP 连接详解

      TCP/IP协议包括什么

      TCP/IP协议包括因特网协议IP、传输控制协议TCP、用户数据报协议UDP、虚拟终端协议TELNET、文件传输协议FTP、电子邮件传输协议SMTP、网上新闻传输协议NNTP、超文本传送协议HTTP八大协议。TCP/IP参考模型是首先由ARPANET所使用的网络体系结构。这个体系结构在它的两个主要协议出现以后被称为TCP/IP参考模型。这一网络协议共分为四层:网络访问层、互联网层、传输层和应用层,各层有相应的协议。1、网络访问层在TCP/IP参考模型中并没有详细描述,只是指出主机必须使用某种协议与网络相连。2、互联网层是整个体系结构的关键部分,其功能是使主机可以把分组发往任何网络,并使分组独立地传向目标。这些分组可能经由不同的网络,到达的顺序和发送的顺序也可能不同。高层如果需要顺序收发,那么就必须自行处理对分组的排序。互联网层使用因特网协议(IP)。3、传输层使源端和目的端机器上的对等实体可以进行会话。在这一层定义了两个端到端的协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP是面向无连接的不可靠传输的协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。4、应用层包含所有的高层协议,包括:虚拟终端协议(TELNET)、文件传输协议(FTP)、电子邮件传输协议(SMTP)、域名服务(DNS)、网上新闻传输协议(NNTP)和超文本传送协议(HTTP)等。TELNET允许一台机器上的用户登录到远程机器上,并进行工作;FTP提供有效地将文件从一台机器上移到另一台机器上的方法;SMTP用于电子邮件的收发;DNS用于把主机名映射到网络地址;NNTP用于新闻的发布、检索和获取;HTTP用于在WWW上获取主页。扩展资料:TCP/IP协议的主要特点:1、TCP/IP协议不依赖于任何特定的计算机硬件或操作系统,提供开放的协议标准,即使不考虑Internet,TCP/IP协议也获得了广泛的支持。所以TCP/IP协议成为一种联合各种硬件和软件的实用系统。2、TCP/IP协议并不依赖于特定的网络传输硬件,所以TCP/IP协议能够集成各种各样的网络。用户能够使用以太网、令牌环网、拨号线路、X.25网以及所有的网络传输硬件。3、统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址。4、标准化的高层协议,可以提供多种可靠的用户服务。参考资料来源:百度百科-TCP/IP协议
      SLIP协议编辑 SLIP提供在串行通信线路上封装IP分组的简单方法,使远程用户通过电话线和MODEM能方便地接入TCP/IP网络。SLIP是一种简单的组帧方式,但使用时还存在一些问题。首先,SLIP不支持在连接过程中的动态IP地址分配,通信双方必须事先告知对方IP地址,这给没有固定IP地址的个人用户上INTERNET网带来了很大的不便。其次,SLIP帧中无校验字段,因此链路层上无法检测出差错,必须由上层实体或具有纠错能力MODEM来解决传输差错问题。PPP协议编辑为了解决SLIP存在的问题,在串行通信应用中又开发了PPP协议。PPP协议是一种有效的点对点通信协议,它由串行通信线路上的组帧方式,用于建立、配制、测试和拆除数据链路的链路控制协议LCP及一组用以支持不同网络层协议的网络控制协议NCPs三部分组成。PPP中的LCP协议提供了通信双方进行参数协商的手段,并且提供了一组NCPs协议,使得PPP可以支持多种网络层协议,如IP,IPX,OSI等。另外,支持IP的NCP提供了在建立链接时动态分配IP地址的功能,解决了个人用户上INTERNET网的问题。IP协议编辑即互联网协议(Internet Protocol),它将多个网络连成一个互联网,可以把高层的数据以多个数据包的形式通过互联网分发出去。IP的基本任务是通过互联网传送数据包,各个IP数据包之间是相互独立的。ICMP协议编辑即互联网控制报文协议。从IP互联网协议的功能,可以知道IP 提供的是一种不可靠的无连接报文分组传送服务。若路由器或主机发生故障时网络阻塞,就需要通知发送主机采取相应措施。为了使互联网能报告差错,或提供有关意外情况的信息,在IP层加入了一类特殊用途的报文机制,即ICMP。分组接收方利用ICMP来通知IP模块发送方,进行必需的修改。ICMP通常是由发现报文有问题的站产生的,例如可由目的主机或中继路由器来发现问题并产生的ICMP。如果一个分组不能传送,ICMP便可以被用来警告分组源,说明有网络,主机或端口不可达。ICMP也可以用来报告网络阻塞。ARP协议编辑即地址转换协议。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网上传送,必须知道彼此的物理地址。这样就存在把互联网地址变换成物理地址的转换问题。这就需要在网络层有一组服务将 IP地址转换为相应物理网络地址,这组协议即ARP。TCP协议编辑即传输控制协议,它提供的是一种可靠的数据流服务。当传送受差错干扰的数据,或举出网络故障,或网络负荷太重而使网际基本传输系统不能正常工作时,就需要通过其他的协议来保证通信的可靠。TCP就是这样的协议。TCP采用“带重传的肯定确认”技术来实现传输的可靠性。并使用“滑动窗口”的流量控制机制来提高网络的吞吐量。TCP通信建立实现了一种“虚电路”的概念。双方通信之前,先建立一条链接然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。UDP协议编辑即用户数据包协议,它是对IP协议组的扩充,它增加了一种机制,发送方可以区分一台计算机上的多个接收者。每个UDP报文除了包含数据外还有报文的目的端口的编号和报文源端口的编号,从而使UDP软件可以把报文递送给正确的接收者,然后接收者要发出一个应答。由于UDP的这种扩充,使得在两个用户进程之间递送数据包成为可能。我们频繁使用的OICQ软件正是基于UDP协议和这种机制。FTP协议编辑即文件传输协议,它是网际提供的用于访问远程机器的协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP工作时建立两条TCP链接,分别用于传送文件和用于传送控制。FTP采用客户/服务器模式?它包含客户FTP和服务器FTP。客户FTP启动传送过程,而服务器FTP对其作出应答。DNS协议编辑即域名服务协议,它提供域名到IP地址的转换,允许对域名资源进行分散管理。DNS最初设计的目的是使邮件发送方知道邮件接收主机及邮件发送主机的IP地址,后来发展成可服务于其他许多目标的协议。SMTP协议编辑 即简单邮件传送协议互联网标准中的电子邮件是一个简单的基于文本的协议,用于可靠、有效地数据传输。SMTP作为应用层的服务,并不关心它下面采用的是何种传输服务,它可通过网络在TXP链接上传送邮件,或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件,这样,邮件传输就独立于传输子系统,可在TCP/IP环境或X.25协议环境中传输邮件。
      TCP/IP协议,或称为TCP/IP协议栈,或互联网协议系列。 TCP/IP协议栈(按TCP/IP参考模型划分),TCP/IP分为4层,不同于OSI,他将OSI中的会话层、表示层规划到应用层。应用层FTP SMTP HTTP ...传输层TCP UDPIP网络层IP ICMP IGMP网络接口层ARP RARP以太网令牌环FDDI ...包含了一系列构成互联网基础的网络协议。 TCP/IP字面上代表了两个协议:TCP传输控制协议和IP互联网协议。


      TCP/IP协议包括什么

      TCP协议有哪些?

      TCP/IP协议族中包括上百个互为关联的协议,不同功能的协议分布在不同的协议层, 几个常用协议如下:1、Telnet(Remote Login):提供远程登录功能,一台计算机用户可以登录到远程的另一台计算机上,如同在远程主机上直接操作一样。2、FTP(File Transfer Protocol):远程文件传输协议,允许用户将远程主机上的文件拷贝到自己的计算机上。3、SMTP(Simple Mail transfer Protocol):简单邮政传输协议,用于传输电子邮件。4、NFS(Network File Server):网络文件服务器,可使多台计算机透明地访问彼此的目录。5、UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。
      TCP是一种传输控制协议,是面向连接的、可靠的、基于字节流之间的传输层通信协议,由IETF的RFC 793定义

      TCP协议有哪些?

      “TCP连接”究竟是什么意思?

      我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不是么? 1.久违的分组交换网络似乎这个概念只有在学校里学计算机网络才能接触到,但不过今天的话题其实和它离不开关系。我们知道最早的电话网络是以很容易理解的形式存在的,就是单纯的一根线加两端的设备,设备之间所沟通的所有信息都通过一根特定的电缆来回传输,如下图:这样的连接是我们特别好理解的,搭起两边的线,就是一个连接嘛!但是,我们讨论的是计算机网络!(严肃脸),计算机网络中两个设备节点是如何通信?计算机网络采取分组交换技术,什么意思呢?就是我有【一块数据】要发给对方小苍,那我会把这【一块数据】分成N份【单位数据】,分别发出去,而每份【单位数据】走哪条路是不一定的,但是这些【单位数据】总要全部达到小苍手里,小苍再根据【单位数据】里记录的序号拼接起来,组成完整的【一块数据】。这就是分组的意思所在。2.协议和协议实现上面不小心把TCP的大体实现给说了,实际上在具体的应用中,光有大体思路是不行的,还有很多细节问题,需要两个设备之间提前约定好协议,才能协同完成通信。举个例子:A向B发了10份【单位数据】,而B其实只收到9份【单位数据】,怎么办?TCP协议大家都应该是知道的,但协议只是想法,真正起作用的是在路由节点和设备节点上的协议软件,是运行在设备上的具体执行者,它根据协议指导,对具体数据进行控制和操作。这儿就不往下展开了。认识到协议和协议软件这一点非常重要,因为连接的限制恰恰就是受软件在设备中资源分配的影响的。3.连接的真面目上面说的第一种电话网络,如果两个设备搭设了一条线,那么两个电话就一定确定对方在线,因为他俩独享一条实时存在的线。但计算机网络的连接呢?向上面的图一样(图里不深究TCP,仅仅用来说明连接大体过程),其实他们俩并不能确保对方就是在线,只是通过几番确认,认为对方一直会在。而如果确认了对方存在,那么就会为以后的对话通讯分配内存、CPU处理时间等资源,每个设备都会在本地去维持这么一个状态,来告诉自己是有一个连接的,这些设备所花的资源和维护的状态,就是连接。而整个网络是不会记录有着一条连接的,所以说连接只是记录在各个设备的一个状态信息。那么,到现在我们知道了,连接其实并不是所谓的有一根电线连起两个设备,而是两方确认了一下对方的存在后,自己在本地记录的状态。那么下面可以讨论一下以前迷惑重重的概念了。4.为什么服务器都有连接数量的限制?这里只做讨论。我认为是有两点:物理带宽的限制,决定了一个时间段内发起连接的数据包不会超过某个数,造成了设备的链接数量的限制。维持连接需要分配内存等资源,设备的资源有限,决定了一定有个最大连接数的极限。5.待续 通过连接往外延伸的话题不少,先到此为止吧,有时间再补。
      “TCP连接”究竟是什么意思?

      什么是TCP连接

      TCP即传输控制协议。TCP连接是互联网连接协议集的一种。TCP通信最重要的特征是:有序和可靠。有序通过将文本流分段并编号实现,可靠通过ACK回复和重复发送实现。TCP连接状态图参考文章:TCP连接过程详解blog.163.com/hlz_2599/blog/static/142378474201151943414397/
      TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是由ARPANET网的研究机构发展起来的。   有时我们将TCP/IP描述为互联网协议集"InternetProtocolSuite",TCP和IP是其中的两个协议(后面将会介绍)。由于TCP和IP是大家熟悉的协议,以至于用TCP/IP或IP/TCP这个词代替了整个协议集。这尽管有点奇怪,但没有必要去争论这个习惯。例如,有时我们讨论NFS是基于TCP/IP时,尽管它根本没用到TCP(只用到IP,和另一种交互式 协议UDP而不是TCP)。   TCP/IP的标准在一系列称为RFC的文档中公布。文档由技术专家、特别工作组、或RFC编辑修订。公布一个文档时,该文档被赋予一个RFC编号,如RFC959(FTP的说明文档)、RFC793(TCP的说明文档)、RFC791(IP的说明文档)等。最初的RFC一直保留而从来不会被更新,如果修改了该文档,则该文档又以一个新号码公布。因此,重要的是要确认你拥有了关于某个专题的最新RFC文档。通常在RFC的开头部分,有相关RFC的更新(update)、修改(errata)、作废(obsolete)信息,提示读者信息的时效性。
      TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的
      什么是TCP连接

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类