服务协议tcp和udp和both(端口映射服务协议tcp udp both)

      最后更新:2023-07-26 07:46

      网络--TCP/IP(四)TCP 与 UDP 协议简介

      从本节开始,我们开始学习最重要的传输层。传输层位于OSI七层模型的第四层(从下往上)。顾名思义,传输层的作用是实现应用程序间的通信。网络层的作用是保证数据在不同数据链路上传输的可达性,至于如何传输则是由传输层负责。常见的传输层协议主要有TCP和UDP协议。UDP协议最大的特点就是简单,UDP首部如图:和UDP首部相比,TCP首部要复杂的多。解析这个首部的时间也会相应的增加,这也是TCP连接的效率低于UDP的原因之一。TCP是面向有连接的协议,连接在每次通信前被建立,通信结束后被关闭。了解连接建立和关闭的过程通常是考察的重点。连接的建立和关闭可以用一张图来表示:通常情况下我们认为客户端首先发起连接请求。1.发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手;2.接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让发送端发送一个确认数据包,这是第二次握手;3.最后,发送端发送一个SYN=0,ACK=1的数据包给接收端,告诉它连接已被确认,这就是第三次握手。之后,一个TCP连接建立,开始通讯。*SYN:同步标志同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。*ACK:确认标志确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。*RST:复位标志复位标志有效。用于复位相应的TCP连接。*URG:紧急标志紧急(The urgent pointer) 标志有效。紧急标志置位,*PSH:推标志该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。*FIN:结束标志带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据根据一般思路,我们认为第三次是多余的,TCP协议为什么还要增加第三次的握手呢?这是因为在网络请求的时候,我们应该时刻记住“网络是不安全的,数据包是可能丢失的”。假设没有第三次确认,客户端向服务端发送了SYN包,请求建立连接。由于网络原因,服务器没有及时收到这个包,于是客户端重新发送了SYN包。正常建立了连接。此时超时的那个确认包到达了服务端,如果是两次握手此连接就建立了,服务端就建立了一个空连接,白白浪费资源。如果是三次,客户端判断这个确认包是无效的,就丢弃了。三次握手实际其实解决了第二步丢包问题。那么第三步的ACK包丢失了,TCP协议是如何处理的呢?按照TCP协议处理丢包问题的一般方法,服务器会重新向客户端发送确认包,知道ACK确认为止。但实际上这种做法有可能遭到SYN泛洪攻击。所谓的泛洪攻击,是指发送方伪造多个IP地址,模拟三次握手的过程。当服务器返回ACK后,攻击方故意不确认,从而使服务器不断重发ACK。由于服务器长时间处于半连接状态,最后消耗过多的CUP和内存资源导致死机。所以服务端采用的是这种方法,发送RST数据包,进入close状态,这个RST数据包中的TCP首部中的控制位中的RST位被置为1。这表示连接信息全部被初始化,原有的TCP通信不能继续。客户端如果还想建立TCP连接,需要从第一步握手重新开始。(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。
      网络--TCP/IP(四)TCP 与 UDP 协议简介

      UDP、TCP 协议的具体区别?

      udp 和tcp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。两者的区别大致如下: tcp 面向连接,udp 面向非连接即发送数据前不需要建立链接;tcp 提供可靠的服务(数据传输),udp 无法保证;tcp 面向字节流,udp 面向报文;tcp 数据传输慢,udp 数据传输快;tcp 为什么要三次握手,两次不行吗?为什么? 我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手。第一次握手:A给B打电话说,你可以听到我说话吗?第二次握手:B收到了A的信息,然后对A说:我可以听得到你说话啊,你能听得到我说话吗?第三次握手:A收到了B的信息,然后说可以的,我要给你发信息啦!在三次握手之后,A和B都能确定这么一件事:我说的话,你能听到;你说的话,我也能听到。这样,就可以开始正常通信了。注意:HTTP是基于TCP协议的,所以每次都是客户端发送请求,服务器应答,但是TCP还可以给其他应用层提供服务,即可能A、B在建立链接之后,谁都可能先开始通信。 如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。
      1、tcp基于连接udp无连接;通俗说就是tcp就像是手机 先拨通号码建立连接,再去通信;udp像是送快递(也不是很恰当)先把东西送出去再说, 2、对系统资源的要求(TCP较多,UDP少);3、UDP程序结构较简单;4、流模式与数据报模式 ;5、TCP保证数据正确性,UDP可能丢包; 6、TCP保证数据顺序,UDP不保证
      一张图看懂TCP与UDP的区别 哈哈 通信路上,一起走!
      UDP、TCP 协议的具体区别?

      UDP、TCP 协议两者区别?

      udp 和tcp 是 OSI 模型中的运输层中的协议。tcp 提供可靠的通信传输,而 udp 则常被用于让广播和细节控制交给应用的通信传输。两者的区别大致如下: tcp 面向连接,udp 面向非连接即发送数据前不需要建立连接;tcp 提供可靠的服务(数据传输),udp 无法保证;tcp 面向字节流,udp 面向报文;tcp 数据传输慢,udp 数据传输快;tcp 为什么要三次握手,两次不行吗?为什么? 我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手。第一次握手:A给B打电话说,你可以听到我说话吗?第二次握手:B收到了A的信息,然后对A说:我可以听得到你说话啊,你能听得到我说话吗?第三次握手:A收到了B的信息,然后说可以的,我要给你发信息啦!在三次握手之后,A和B都能确定这么一件事:我说的话,你能听到;你说的话,我也能听到。这样,就可以开始正常通信了。注意:HTTP是基于TCP协议的,所以每次都是客户端发送请求,服务器应答,但是TCP还可以给其他应用层提供服务,即可能A、B在建立连接之后,谁都可能先开始通信。 如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再次确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。
      TCP/IP协议是一个协议簇。里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,就用他两命名了。 TCP/IP协议集包括应用层,传输层,网络层,网络访问层。
      tcp协议需要三次握手,有一套复杂的校验机制和重传机制,比较适合数据安全性,可靠性高的应用比如 ftp,pop,http等等。 udp相对于tcp协议设计简单,数据传输速率高,适合对业务要求不太严格的业务,比如说dns,广播语音业务等等。
      UDP、TCP 协议两者区别?

      计算机网络基础:TCP、UDP协议的简单介绍及区别

      TCP(Transmission Control Protocol,传输控制协议),属于TCP/IP协议模型中的传输层,是基于连接的协议。TCP协议通过序列化应答和必要时重发数据包,为应用程序提供了可靠的传输流和虚拟连接服务。面向连接指的是在发送数据之前,必须与对方建立可靠的连接,就像打电话一样,你得先拨号,然后保证线路通畅,对方接听了电话,这时才能互相通话。这个建立连接的过程被称作“三次握手”。妹子:在吗?(你没有回应……)GG,你将永远失去她。妹子:在吗?(一个小时过去了)你:在这时候妹子的问题已经解决了,而你却激动地等待着她的回复。(她什么时候才能回我啊.jpg)当然这不是我们想看到的结果妹子:在吗?(第一次握手)你:在(第二次握手)妹子:问你一个问题(第三次握手)这时,她确定你在,所以会准备问问题,你也确定她在,所以激动紧张的等待没有白费接下来你们开始愉快地聊天(数据传输)终止连接的过程称之为“四次挥手”或者“四次分手”(感觉后者不太吉利,以下就用挥手)继续用刚才的微信发消息来举例:你:我讲完了, 你懂了吗?(第一次挥手)妹子:懂了,我也问完了(第二次挥手)妹子:谢谢谢,那我下了(第三次挥手)你:好,我也下了(第四次挥手)如果只有一、二、三次挥手的话,结果很容易自己想到。建立连接的三次握手,和终止连接的四次挥手,都是为了保证双方应答有效,避免让某一方持续等待接受数据而造成的资源浪费。在例子中体现为,开始聊天时不会咕咕咕,结束时不会突然去世。UDP(User Datagram Protocol,用户数据报协议),属于TCP/IP模型中的传输层,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。注:传输可靠指的是,通过拥塞控制、流量控制、超时重发、丢弃重复数据等等可靠性检测手段,保证数据无差错、不丢失、不重复且按序到达。
      计算机网络基础:TCP、UDP协议的简单介绍及区别

      TCP和UDP分别指的是什么?

      TCP/IP协议族为运输层指明了两个协议:TCP和UDP。它们都是作为应同程序和网络操作的中介物。 运输层协议通常具有几种责任。一种是创建进程到进程的通信;UDP和TCP使用端口来完成这种通信。另一种责任就是在运输层提供控制机制。UDP在一个非常低的水平上完成这个功能。UDP没有流量控制机制,在收到分组时也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,它就悄悄地丢弃这个分组。而TCP使用滑动窗口协议来完成流量控制。TCP使用确认分组,超时和重传来完成差错控制。运输层还应负责为应用程序提供连接机制。这些应用程序应当能够向运输曾发送数据流。在发送站运输层分责任是和接收站建立连接,把数据流分割成可运输地单元,把它们编号,然后逐个发送它们。运输层在接收端的责任是等待属于同一个进程的所有不同单元的到达,检查并放过那些没有差错的单元,并以流的方式把它们交付给接收进程。当全部的流都发送完毕后,运输层应当关闭这个连接.TCP完成所有上面的工作,而UDP不完成!UDP叫做无连接的、不可靠的运输协议。TCP叫做面向连接的、可靠的运输协议,它给IP服务提供了面向连接和可靠性的特点。TCP/IP协议族为运输层指明了两个协议:TCP和UDP。它们都是作为应同程序和网络操作的中介物。运输层协议通常具有几种责任。一种是创建进程到进程的通信;UDP和TCP使用端口来完成这种通信。另一种责任就是在运输层提供控制机制。UDP在一个非常低的水平上完成这个功能。UDP没有流量控制机制,在收到分组时也没有确认。但是,UDP提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,它就悄悄地丢弃这个分组。而TCP使用滑动窗口协议来完成流量控制。TCP使用确认分组,超时和重传来完成差错控制。运输层还应负责为应用程序提供连接机制。这些应用程序应当能够向运输曾发送数据流。在发送站运输层分责任是和接收站建立连接,把数据流分割成可运输地单元,把它们编号,然后逐个发送它们。运输层在接收端的责任是等待属于同一个进程的所有不同单元的到达,检查并放过那些没有差错的单元,并以流的方式把它们交付给接收进程。当全部的流都发送完毕后,运输层应当关闭这个连接.TCP完成所有上面的工作,而UDP不完成!UDP叫做无连接的、不可靠的运输协议。TCP叫做面向连接的、可靠的运输协议,它给IP服务提供了面向连接和可靠性的特点。UDP分组叫做用户数据报。有8个字节的固定首部,源端口号、目的端口号、长度和检验和各2个字节。UDP长度=IP长度-IP首部长度下面是UDP的某些用途:UDP适用于这样的进程,它需要简单的请求-响应通信,而较少考虑流量控制和差错控制。对于需要传送成块数据的进程,如FTP,通常不使用UDP。UDP适用于具有内部流量控制和差错控制机制的进程。例如,简单文本传送协议(TFTP)的进程就包括流量控制和差错控制。它能够很容易地使用UDP。对多播和广播来说,UDP是个合适的运输协议。多播和广播能力已经嵌入在UDP软件中,但没有嵌入在TCP软件中。UDP可用于管理进程,如SNMP UDP可用于某些路由选择更新协议,如路由信息协议(RIP)
      TCP和UDP的区别 tcp连接就像打电话,两者之间必须有一条不间断的通路,数据不到达对方,对方就一直在等待,除非对方直接挂电话。先说的话先到,后说的话后到,有顺序。udp就象寄一封信,发信者只管发,不管到。但是你的信封上必须写明对方的地址。发信者和收信者之间没有通路,靠邮电局联系。信发到时可能已经过了很久,也可能根本没有发到。先发的信未必先到,后发的也未必后到。说的很简单,具体的东西当然很复杂。但是java把所有的操作都封装好了,用起来到挺方便的TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?说到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。TCP是面向连接的,有比较高的可靠性, 一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。
      GARP和FRM分别是什么
      TCP和UDP分别指的是什么?

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

          热门文章

          文章分类