TCPUDP 分解

xiaoxiao2021-02-28  58

网络七层模型

 

TCP是面向连接的,可靠的,缓慢的,可靠交付以及保证消息顺序的,而UDP是无连接的,不可靠的,没有序列保证,但是一个快速传输的协议

TCP UDP是两个协议,简单的说,TCP连接要对方确认的,而UDP却不需要对方确认收到包,所以TCP连接更加安全,但是一般播放网络流媒体使用UDP协议

传输层协议一般有TCPUDPTCP为可靠传输,协议本身会保证数据传输的可靠,但为此会付出很多额外的网络开销。UDP为不可靠传输,所以传输效率比较高,本端只负责发送数据,不保证对端能否收到。对于UDP,可靠性可以在应用层实现

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接

位码即tcp标志位,6种标示:

SYN(synchronous建立联机)

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束)

RST(reset重置)

URG(urgent紧急)

整个流程如下图所示:

 

 所谓三次握手(Three-Way Handshake)即建立TCP连接,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发

  1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给ServerClient进入SYN_SENT状态,等待Server确认。

 

  2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYNACK都置为1ack (number )=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

 

  3)第三次握手:Client收到确认后,检查ack是否为J+1ACK是否为1,如果正确则将标志位ACK置为1ack=K+1,并将该数据包发送给ServerServer检查ack是否为K+1ACK是否为1,如果正确则连接建立成功,ClientServer进入ESTABLISHED状态,完成三次握手,随后ClientServer之间可以开始传输数据了。

TCPUDP的优缺点

TCP

优点:1、可靠性,在发送数据前会建立连接(三次握手)。数据丢失、超时都会进行重传。

2、流量控制。

3、全双工机制:在一个连接上,可以在发送数据的同时接收数据。

缺点:1、会使数据包变大(不确定)?在(三次握手)的时候会确定开始序号。

TCP会为每个字节编制一个序号。在发送数据过程中,将整个传输数据分成单个的字节流,但是一次发送的话可能是多个字节(TCP数据段)。例如某次发送端的段数据的序号是500,长度是100。那么接收端在确认的时候,会回复601,表示接收端下次期望收到的字节流开始序号,那么当前收到的字节数是600字节。

UDP

优点:1、无需建立连接,传输速度快。例如常用的网络命令ping,就是发送端直接向接收端发送4个数据包。接收端收到数据包后,回传数据包来确定网络是否通畅。

连接的理解

每一个连接对,都是由4元组来确认的,简单的概述为这种形式:《客户端ip:客户端端口号,服务器ip:服务器端口号》。

只要有一元是不同的,就是不同的连接对。

服务器会一直在服务器端口号上监听客户端的连接请求。

什是TCP

TCPTransmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

TCP是面向连接的,可靠的,缓慢的,可靠交付以及保证消息顺序的。

 TCP充分实现了数据传输时各种控制功能,可以进行丢包的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在UDP中都没有。此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

什么是UDP

UDPUser Datagram Protocol  用户数据报协议)是一种面向无连接的、不可靠的、基于报文的传输层通信协议。

 UDP是无连接的,不可靠的,没有序列保证,但是一个快速传输的协议。

有了保证可靠传输的TCP协议,为什么还要非可靠传输的UDP协议呢?

主要的原因有两个。  (1)可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。  (2)在许多应用中并不需要保证严格的传输可靠性,比如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些.

TCPUDP的异同点

  它俩都是处于计算机网络OSI模型的第四层(传输层)中。

TCP层是位于IP层之上。同样,对于UPD也是位于IP层之上。

  如果你不想丢失任何消息,使用TCP协议,而UDP能够高速传输数据,并且丢失少量的数据包是可以接受的,如视频流或在线多玩家游戏。

转载请注明原文地址: https://www.6miu.com/read-2623583.html

最新回复(0)