tcp建立连接使用(TCP连接建立和释放的过程)

      最后更新:2022-11-13 19:07:33 手机定位技术交流文章

      简述TCP协议建立连接的过程

      TCP协议建立连接的过程: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。Backlog参数:表示未连接队列的最大容纳数目。SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和,有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
      1,tcp使用三次握手 (three-wayhandshake)协议来建立连接,这三次握手为:请求端(通常称为客户)发送一个syn报文段(syn为1)指明客户打算连接的服务器的端口,以及初始顺序号(isn)。服务器发回包含服务器的初始顺序号的syn报文段(syn为1)作为应答。同时,将确认号设置为客户的isn加1以对客户的syn报文段进行确认(ack也为1)。客户必须将确认号设置为服务器的isn加1以对服务器的syn报文段进行确认(ack为1),该报文通知目的主机双方已完成连接建立。发送第一个syn的一端将执行主动打开(activeopen),接收这个syn并发回下一个syn的另一端执行被动打开(passiveopen)。另外,tcp的握手协议被精心设计为可以处理同时打开(simultaneousopen),对于同时打开它仅建立一条连接而不是两条连接。因此,连接可以由任一方或双方发起,一旦连接建立,数据就可以双向对等地流动,而没有所谓的主从关系。2,应用层向tcp层发送用于网间传输的、用8位字节表示的数据流,然后tcp把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(mtu)的限制)。之后tcp把结果包传给ip层,由它来通过网络将包传送给接收端实体的tcp层。tcp为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ack); 如果发送端实体在合理的往返时延(rtt)内未收到确认,那么对应的数据(假设丢失了)将会被重传。tcp用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
      当然是可以建立的

      简述TCP协议建立连接的过程

      TCP的连接方式是什么?

      TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答 TCP的三次握手SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议。TCP三次握手的过程如下:客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。 三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
      首先纠正你一点。。不是连接方式。。是数据的交换方式。。 TCP属于分组交换方式。。
      TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。它是由ARPANET网的研究机构发展起来的。 有时我们将TCP/IP描述为互联网协议集"Internet Protocol Suite",TCP和IP是其中的两个协议(后面将会介绍)。由于TCP和IP是大家熟悉的协议,以至于用TCP/IP或IP/TCP这个词代替了整个协议集。这尽管有点奇怪,但没有必要去争论这个习惯。例如,有时我们讨论NFS 是基于TCP/IP时,尽管它根本没用到TCP(只用到IP,和另一种交互式 协议UDP而不是TCP)。Internet是网络的集合,包括ARPANET、NSFNET、分布在各地的局域网、以及其它类型的网络,如(DDN,Defense Data Network美国国防数据网络),这些统称为Internet。所有这些大大小小的网络互联在一起。(因为大多数网络基本协议是由DDN组织开发的,所以以前有时DDN与Internet在某种意义上具有相同的含义)。网络上的用户可以互相传送信息,除一些有授权限制和安全考虑外。一般的讲,互联网协议文档案是Internet委员会自己采纳的基本标准。 TCP/IP标准与其说由委员会指定,倒不如说由"舆论"来开发的。 任何人都可以提供一个文档,以RFC(Request for Comment需求注释) 方式公布。TCP/IP的标准在一系列称为RFC的文档中公布。文档由技术专家、特别工作组、或RFC编辑修订。公布一个文档时,该文档被赋予一个RFC量,如RFC959说明FTP、RFC793说明TCP、RFC791说明IP等。 最初的RFC一直保留而从来不会被更新,如果修改了该文档,则该文档又以一个新号码公布。因此,重要的是要确认你拥有了关于某个专题的最新RFC文档。文后会列出主要的RFC文档号。不管怎样,TCP/IP是一个协议集。为应用提供一些"低级"功能,这些包括IP、TCP、UDP。其它是执行特定任务的应用协议,如计算机间传送文件、发送电子邮件、或找出谁注册到另外一台计算机。因此, 最重要的"商业"TCP/IP服务有:* 文件传送File Transfer。文件传送协议FTP(File Transfer Protocol)允许用户从一台计算机到另一台取得文件,或发送文件到另外一台计算机。从安全性方面考虑,需要用户指定一个使用其它计算机的用户名和口令。它不同与NFS(Network File System)和Netbios协议。一旦你要访问另一台 系统中的文件,任何时刻都要运行FTP。而且你只能拷贝文件到自己的机器中去来使用它。(RFC 959中关于FTP的说明)* 远程登录Remote login网络终端协议TELNET允许用户登录到网络上任一计算机上。你可启动一个远程进程连接到指定的计算机,直到进程结束,期间你所键入的内容被送到所指定的计算机。值得注意的是,这时你实际上是与你的计算机进行对话。TELENET程序使得你的计算机在整个过程中不见了,所敲的每一个字符直接送到所登录的计算机系统。一般的说,这种远程连接是通过类式拨号连接的,也就是,拨通后,远程系统提示你输入注册名和口令,退出远程系统,TELNET程序也就退出,你又与自己的计算机对话了。微电脑中的TELNET工具一般含有一个终端仿真程序。* 计算机邮件Mail允许你发送消息给其它计算机的用户。通常,人们趋向于使用指定的一台或两台计算机。计算机邮件系统只需你简单地往另一用户的邮件文件中添加信息,但随之产生问题,使用的微电脑的环境不同,还有重要的是宏(MICRO)不适合于接受计算机邮件。为了发送电子邮件,邮件软件希望连接到目的计算机,如果是微电脑,也许它已关机,或者正在运行另一个应用程序呢?出于这种原因,通常由一个较大的系统来处理这些邮件,也就是一个一直运行着的邮件服务器。邮件软件成为用户从邮件服务器取回邮件的一个界面。任何一个的TCP/IP工具提供上述这些服务。这些传统的应用功能在基于TCP/IP的网络中一直扮演非常重要的角色。目前情况有点变化,这些功能使用也发生变化,如老系统的改造,计算机的发展等,出现了各种安装版本,如:微电脑、工作站、小型机、和巨型机等。这些计算机好象在一起完成指定的任务,尽管有时看来像是只用到某个指定 的计算机,但它是通过网络得到其它计算机系统的服务。服务器Server是为网络上其它提供指定服务的系统,客户Client是得到这种服务的另外计算机系统。(值得注意的是,服务/客户机不一定是不同的计算机,有可能是同一计算机中的不同运行程序)。以下是几种目前计算机上典型的一些服务,这些服务可在TCP/IP网络上调用。* 网络文件系统(NFS)这种访问另一计算机的文件的方法非常接近于流行的FTP。网络文件系统提供磁盘或设备服务,而无需特定的网络实用程序来访问另一系统的文件。可以简单地认为它是一个外加的磁盘驱动器。这种额外"虚拟"磁盘驱动器就是其它计算机系统的磁盘。这非常有用。你只需加大几台计算机的磁盘容量,就可使网络上其他用户访问它,且不说所带来的经济效益,它还能够让几台工作的计算机共享相同的文件。它也使得系统维护和备份易如反掌,因为再不必为大量的不同机器上 的文件的升级和备份而担心。* 远程打印(Remote printing)允许你使用其它计算机上的打印机,好象这些打印机直接连到你的计算机上。* 远程执行(Remote execution)允许你请求运行在不同计算机上的特殊程序。当你在一个很小的计算机上运行一个需要大机系统资源的程序时,这时候远程执行非常有用。* 名字服务器(Name servers)在一个大的系统安装过程中,需要用到大量的各种名字,包括用户名、口令,姓名、网络地址、帐号等,管理这些是非常令人乏味的。因此将这些数据形成数据库,放到一个小系统中去,其它系统通过网络来访问这些数据。* 终端服务器(Terminal servers)很多的终端连接安装不再直接将终端连到计算机,取而代之的是,将他们连接到终端服务器上。终端服务器是一个小的计算机,它只需知道怎样运行TELNET(或其它一些完成远程登录的协议)。如果你的终端想连上去,只用键入要连的计算机名就可。通常有可能同时有几个这种连接,这时终端服务器采用快速开关技术来切换。 上述所描述的一些协议是由Berkeley, Sun,或其它组织定义的。因此,它们不是互联网协议集(Internet Protocol Suite)的一部分, 只是使用到TCP/IP的工具,如同一般的TCP/IP 应用协议。因为协议的定义不一致,并且商业支持的TCP/IP工具广泛应用,也许会把这些协议作为互联协议集中的一部分。上述列出的只是基于TCP/IP部分服务的一些简单例子,但包含了一些"主要"的应用。
      TCP的连接方式是什么?

      传输层TCP协议连接的建立和断开

      什么是TCP呢?由三个单词组成的Transport Control Protocol,字面理解是传输控制协议,可以理解为比特同学要想在网络泳池里游泳,那么他必须学习传输层控制技能,并且要掌握相应的动作——协议,他才能在畅游世界网络这个超大型游泳池。TCP:一个传输层协议,提供Host-To-Host的可靠传输,支持全双工,是一个面向连接的协议。TCP工作在传输层,它的上层是应用层,应用就是人们常用的微信、抖音、王者荣耀等服务工作的协议。两台不同的设备使用微信聊天,发送语音,需要实现Host-To-Host的数据通信,那么就可以直接调用TCP协议进行。调用TCP通信时需要指定通信的端口,不同的端口对应不同应用,不同IP对应不同的主机,也就是不同的设备。这就涉及到网络地址——IP地址,工作在网络层,当然TCP层只负责把对应的IP地址和端口传给网络层即可,具体业务由网络层来实现。互联网层,即Network Layer,提供地址和地址间的通信,只关注地址到地址Address-To-Address间通信,具体设备间通信由数据链路层实现,数据链路层关注MAC地址间通信,具体的物理设备,传输介质由物理层负责。以上就是TCP/IP协议常用的层级分割,最终目的就是为Host-To-Host服务,实现应用到应用的通信服务。什么是连接和会话呢?连接事需要通信双方相互配合来实现的,是双方达成的一种即时的状态约定,保证通信双方都在线,都有能力为接下来的数据传输做出尽快的响应,我们称之为连接。连接是网络行为状态的记录,既然连接需要双方共同努力,那么就需要双方都有一个对象来记忆当前传输的数据类型,对方的端口、已经传输了多少,效率怎么样等等一些关注点。那么与之相关联的另一个名词会话(Session),是什么意思呢,会话是应用的行为。大家每次用微信聊天时都会有一个窗口,用来发送信息,你来我往,这个窗口中会有很多条信息,我们称之为会话,当我们在会话进行中,连接一定是在通信状态的。聊一会,累了,退出微信了,但是一般我们不会删除我们的会话内容,这时会话还在,但是连接已经中断。双工/单工问题想想自己理解的是什么?单工:任何时间,数据只能单向发送,单工至少需要一条线路半全双工:某一时候可以双向发送数据,至少需要一条线路全双工:任何时刻都可以双向发送数据,大于一条线路这里线路不一定真实存在物理线路,可能采用模拟的形式实现TCP是一个全双工协议,数据任何时刻都可以双向发送,这说明服务器和客户端可以根据需要选择任意时刻发送和接收信息,所以呢都可以被称为主机(Host)可靠性的定义TCP可以提供可靠性,那么可靠性具体的实现方式是什么呢?可靠性指数据无损传输。发送主机按照顺序发送数据,数据通过网络传输,收不同网络条件限制,数据不会按照发送时的顺序到达接收方,这时我们就需要一种算法来保证接收方可以还原出发送方的顺序。这里还有一个概念叫多播,发送方同时发送给多个接收方信息,如果接收方中有一个接收到了这条信息,我们的可靠性就必须保证其他接收方也必须接收到相同的信息,这里我们不讨论多播。TCP的握手和挥手TCP是一个面向连接的连接的协议,握手是建立连接的过程,挥手是断开连接的过程。TCP的基本操作以上三种操作以后,另一方必须立即给发起方返回一个ACK(Ackknowledgement),这是TCP保证可靠性的要求。如果一方不回复发送方ACK,发送方则认为接收方没有收到信息,会重新发送。建立连接的过程-三次握手三次握手的形成和TCP要求每次发送方发送信息以后,接收方必须返回ACK确认有直接的关系上图描述了TCP建立连接的过程,分为6步:TCP建立连接的过程如上,那么为什么是三次呢?第二步服务端做准备,因为是首次收到发送数据请求,无需处理,可以立刻进入数据交互状态,所以可以立刻发送给客户端SYN,告诉客户端,我已准备好,所以第三步和第四步可以合并为一次握手——ACK-SYN,然后客户端回应ACK,连接建立完成以上就是三次握手了具体在数据交互过程,ACK和SYN等需要用标识位来标记,在实际应用中,我们一般使用1来表示开启,0表示关闭。那么四次挥手为什么是四次呢,主要是因为,挥手时服务端收到FIN以后,不能马上回复FIN,因为自身还有任务没有处理完,所以上面所说的6步中,第3、4步就不能一起回复,只能先回复ACK,等自身任务处理完毕,才能告诉客户端,我已经准备好,可以关闭连接,这样就需要4次数据交互,如下图:
      传输层TCP协议连接的建立和断开

      图解TCP建立连接全过程

      TCP是因特网中的传输层协议,使用三次握手协议建立连接,下面是TCP建立连接的全过程。 上图画出了TCP建立连接的过程。假定主机A是TCP客户端,B是服务端。最初两端的TCP进程都处于CLOSED状态。图中在主机下面的是TCP进程所处的状态。A是主动打开连接,B是被动打开连接。首先A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段不能携带数据,但要消耗掉一个序号。这时,A进入SYN-SENT状态。B收到请求后,向A发送确认。在确认报文段中把SYN和ACK位都置为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时B进入SYN-RCVD状态。A收到B的确认后,还要向B给出确认。确认报文段的ACK置为1,确认号ack=y+1,而自己的序号seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED状态,当B收到A的确认后,也会进入ESTABLISHED状态。以上给出的连接建立过程就是常说的TCP三次握手。为什么A还要发送一次确认呢?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。所谓已失效的连接请求报文段是这样产生的。A发送连接请求,但因连接请求报文丢失而未收到确认,于是A重发一次连接请求,成功后建立了连接。数据传输完毕后就释放了连接。现在假定A发出的第一个请求报文段并未丢失,而是在某个网络节点长时间滞留了,以致延误到连接释放以后的某个时间才到达B。本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误以为A又发了一次新的连接请求,于是向A发出确认报文段,同意建立连接。假如不采用三次握手,那么只要B发出确认,新的连接就建立了。由于A并未发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但B却以为新的运输连接已经建立了,并一直等待A发来数据,因此白白浪费了许多资源。 采用TCP三次握手的方法可以防止上述现象发生。例如在刚才的情况下,由于A不会向B的确认发出确认,连接就不会建立。下面留个思考题给大家:如果在TCP第三次握手中的报文段丢失了会发生什么情况?
      图解TCP建立连接全过程

      TCP/IP协议

      TCP/IP协议是一个协议集合,HTTP协议,IP协议,TCP协议,DNS协议等都属于TCP/IP协议。 TCP/IP协议是为了保证全球亿万台计算机能准确、无误的通信。TCP/IP中分层是很重要的概念,每层完成不同的功能。分为应用层,传输层,网络层,数据链路层。分层的目的是为了层级之间的功能相对队里,互不影响。TCP/IP通信数据流HTTP是基于TCP/IP协议的应用层协议,它不涉及数据包的传输,主要规定了客户端和服务器端的通信协议,默认端口是80IP协议的作用是将各种数据包准确无误的传递给对方,其中重要的条件是IP地址和MAC地址。由于IP地址是稀有资源,不可能每个人都有一个IP地址,所以我们通常的IP地址都是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址,而MAC地址是唯一的。IP实现的两个基本功能:寻址和分段寻址功能就是原地址和目标地址之间建立连接,需要使用ARP协议(Address Resolution Protocol),IP协议就是找到一条连接两台电脑的路径,从而完成数据的交互。地址解析协议,ARP协议,是根据IP地址获取物理地址的一个TCP/IP协议。IP间的通信依赖MAC地址。在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时就会采用ARP协议,根据通讯放的IP地址就可以反查出对应的MAC地址,从而进行精确的定位,完成寻址的功能。分段功能是为了适应不同网络对包的要求,对数据进行重新组装。TCP协议就是将数据包安全的给对方,IP协议是找到对方的详细地址,分工不同,互不冲突。TCP属于传输层,提供可靠的字节流服务。字节流类似于数据切割,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。可靠的传输服务是指,能够把数据准确可靠的传给对方。TCP协议为了更容易的传输大数据才将数据进行分割,而且TCP协议能够确认数据最终是否送达对方。为了确保信息准确无误的送达,TCP采用了三次握手策略(three-way-handshaking)。TCP建立连接时需要三次握手,在关闭连接时还需要四次握手。 这部分占用了http请求过程的中大量时间,在高并发时,可以考虑优化这部分。和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。1、可缓存:get请求能缓存,post请求不能;响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。2、get是获取资源,post用于传输实体主体。3、参数:get请求的参数在url里面,会被浏览器保存历史记录,post的请求数据在数据包里面,同时因为url只支持ASCII码,因此get的参数如果存在汉字就要先进性编码,post请求支持更多的编码类型且不对数据类型限制;post传输的数据比get的多;url的长度有限制,会影响get请求;4、安全的HTTP方法不会改变服务器状态,也就说是只读的。所以get是安全的,post不是安全的。5、幂等性:get是幂等的,post不是幂等的。6、XMLHttpRequest: 在使用XMLHttpRequest时,post请求发送时,浏览器会先发送header再发送Data;get请求header和data一起发送。XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。200 OK,表示从客户端发来的请求在服务器端被正确处理。204 No content,表示请求成功,但是想要报文不包含实体的主体部分。206 Partial Content ,进行范围请求。301 moved permanently 永久性重定向,表示自愿一杯分配了新的URL。302 found 临时性重定向,表示自愿临时被分配了新的URL。303 see other 表示资源存在着另一个URL,应使用GET方法获取资源。和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。304 not modified 表示服务器允许访问资源,但因发生请求未满足条件的情况。307 temporary redirect,临时重定向,和302含义相同。但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。400 bad request 请求报文存在语法错误401 unauthorized 表示没有权限403 forbidden 表示对请求资源的访问被服务器拒绝404 not found 表示在服务器上没有找到请求的资源500 internal sever error 表示服务器端在执行请求时错误503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求HTTPS是HTTP建立在SSL/TLS安全协议上的。在IOS中,客户端本地会存有CA证书,在HTTPS请求时,会首先向服务器获取公钥,获得公钥后会使用本地的CA证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息。SSL/TSL握手阶段分为五步:HTTP和HTTPS的对比:HTTP:无状态,协议对客户端没有状态存储;无连接,每次请求都会和服务器重新建立连接;基于请求和响应,由客户端发起,服务端响应;简单快速,灵活;使用明文,请求和响应不会对通信方进行确认,无法保证数据的完整性。 HTTPS:内容加密,采用混合加密技术,中间者无法直接查看明文内容;验证身份,通过证书认真客户端访问的是自己的服务器;保护数据完整性,放置传输的内容被中间人冒充或篡改。
      TCP/IP协议

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/45204.html

          热门文章

          文章分类