精华内容
下载资源
问答
  • 本文主要讲的是传输层的两大重要协议TCPUDP,虽然在Android开发中,并不需要了解到这么底层,但有理论的支撑,写代码总是很自信的啦。理论指导着实践,实践是理论检验的唯一标准。站在巨人的肩膀窥伺网络世界。...

    本文主要讲的是传输层的两大重要协议TCP和UDP,虽然在Android开发中,并不需要了解到这么底层,但有理论的支撑,写代码总是很自信的啦。理论指导着实践,实践是理论检验的唯一标准。站在巨人的肩膀窥伺网络世界。

    57294a873769949c55350506dfa4d9a9.png

    用户数据报协议UDP

    用户数据报协议UDP只在IP的数据报服务至上增加了复用和分用的功能以及差错检测的功能。只有面向无连接的报文,不可靠传输的特点。UDP对应用层交下来的数据只添加首部,并进行特别的处理,就交给网络层;对网络层传递上来的用户数据报拆封首部后,原封不动地交给应用层。

    77b9e70f357597b373a8e046921739f2.png

    1、UDP的首部格式

    用户数据报UDP分为两个字段:数据字段和首部字段,从图来分析用户数据报UDP的首部格式。

    69f7eb76bc7647b68d4c4fb9fa9d3574.png

    UDP首部字段很简单,由4个字段组成,每个字段的长度都是两个字节,共8字节。

    • 源端口 原端口号,在需要对方回信时选用,不需要时可全0
    • 目的端口 目的端口号,这在终点交付报文时必须使用,不然数据交给谁呢?
    • 长度 UDP的长度,最小值为8字节,仅有首部
    • 检验和 检测用户数据报在传输过程是否有错,有错就丢弃。

    在传输的过程中,如果接收方UDP发现收到的报文中的目的端口不存在,会直接丢弃,然后由网际控制报文协议ICMP给发送方发送“端口不可达”差错报文。

    2、伪首部

    计算校验和时,需要在UDP之前增加12个字节的伪首部。这种首部并不是用户数据报的真正首部。伪首部并不在网络中传输,只是在计算检验和,临时添加在UDP用户数据报前,得到一个临时的用户数据报。

    UDP的校验和是把首部和数据部分一起校验,发送方计算校验和的一般步骤:

    1. 将首部的校验和字段填充为0(零)
    2. 把伪首部和用户数据报UDP看出16位的字符串连接起来
    3. 如果数据部分不是偶数字节,则填充一个全零字节(该字节不发送到网络层)
    4. 按二进制反马计算出这些16位字的和
    5. 然后将和写入校验和字段,就可以发送到网络层了。

    接收方收到用户数据报后,连同伪首部一起,按二进制反码求这些16位字的和,无差错结果是应全为1.否则出错,直接丢弃该报文。

    e8df3cd52359fca999ff3330c4410a03.png

    TCP协议

    TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议。

    1、TCP报文段

    虽然TCP面向字节流,但TCP传输的数据单元却是报文段。TCP报文段分为TCP首部和数据部分,TCP报文段首部的前20个字节是固定的,后面有4*n字节根据需要动态添加的选项,最大长度为40字节。

    c65f27baad6ce306662963f88b5d31de.png
    • 源端口和目的端口 各占两个字节,TCP的分用功能也是通过端口实现的。
    • 序号 占4个字节,范围是[0,232],TCP是面向字节流的,每个字节都是按顺序编号。例如一个报文段,序号字段是201,携带数据长度是100,那么第一个数据的序号就是201,最后一个就是300。当达到最大范围,又从0开始。
    • 确认号 占4个字节,是期望收到对方下一个报文段的第一个字节的序号。若确认号=N,则表示序号N前所有的数据已经正确收到了。
    • 数据偏移 占4位,表示报文段的数据部分的起始位置,距离整个报文段的起始位置的距离。间接的指出首部的长度。
    • 保留 占6位,保留使用,目前为0.
    • URG(紧急) 当URG=1,表明紧急指针字段有效,该报文段有紧急数据,应尽快发送。
    • ACK(确认) 仅当ACK=1时,确认号才有效,连接建立后,所有的报文段ACK都为1。
    • PSH(推送) 接收方接收到PSH=1的报文段,会尽快交付接收应用经常,不再等待整个缓存填满再交付。实际较少使用。
    • RST(复位) RST=1时,表明TCP连接中出现严重差错,必须是否连接,再重连。
    • SYN(同步) 在建立连接时用来同步序号。当SYN=1,ACK=0,则表明是一个连接请求报文段。SYN=1,ACK=1则表示对方同意连接。TCP建立连接用到。
    • FIN(终止) 用来释放一个连接窗口。当FIN=1时,表明此报文段的发送方不再发送数据,请求释放单向连接。TCP断开连接用到。
    • 窗口 占2个字节,表示发送方自己的接收窗口,窗口值用来告诉对方允许发送的数据量。
    • 校验和 占2字节,检验和字段查验范围包括首部和数据部分。
    • 紧急指针 占2字节,URG=1时,紧急指针指出本报文段中的紧急数据的字节数(紧急字节数结束后为普通字节)。
    • 选项 长度可变,最长可达40字节。例如最大报文段长度MSS。MSS指的是数据部分的长度而不是整个TCP报文段长度,MSS默认为536字节长。窗口扩大,时间戳选项等。

    2、TCP建立连接-三次握手

    三次握手图例如下,与文字解释配合使用效果更佳。

    0c56b9a6111894da585736226af8422f.png

    第一次:客户端发送连接请求报文给服务端,其中SYN=1,seq=x。发送完毕后进入SYN_END状态。

    第二次:服务端接收到报文后,发回确认报文,其中ACK=1,ack=x+1,因为需要客户端确认,所以报文中也有SYN=1,seq=y的信息。发送完后进入SYN_RCVD状态。

    第三次:客户端接收到报文后,发送确认报文,其中ACK=1,ack=y+1。发送完客户端进入ESTABLISHED状态,服务端接收到报文后,进入ESTABLISHED状态。到此,连接建立完成。

    三次握手原因

    避免资源被浪费掉。如果在第二步握手时,由于网络延迟导致确认包不能及时到达客户端,那么客户端会认为第一次握手失败,再次发送连接请求,服务端收到后再次发送确认包。在这种情况下,服务端已经创建了两次连接,等待两个客户端发送数据,而实际却只有一个客户端发送数据。

    3、TCP断开连接-四次挥手

    四次挥手指客户端和服务端各发送一次请求终止连接的报文,同时双方响应彼此的请求。 四次挥手图例如下,请配置文字解释使用哦。

    30de1329d338008395a5a2772a485af6.png

    第一次挥手:客户端发送FIN=1,seq=x的包给服务端,表示自己没有数据要进行传输,单面连接传输要关闭。发送完后,客户端进入FIN_WAIT_1状态。

    第二次挥手:服务端收到请求包后,发回ACK=1,ack=x+1的确认包,表示确认断开连接。服务端进入CLOSE_WAIT状态。客户端收到该包后,进入FIN_WAIT_2状态。此时客户端到服务端的数据连接已断开。

    第三次挥手:服务端发送FIN=1,seq=y的包给客户端,表示自己没有数据要给客户端了。发送完后进入LAST_ACK状态,等待客户端的确认包。

    第四次挥手:客户端收到请求包后,发送ACK=1,ack=y+1的确认包给服务端,并进入TIME_WAIT状态,有可能要重传确认包。服务端收到确认包后,进入CLOSED状态,服务端到客户端的连接已断开。客户端等到一段时间后也会进入CLOSED状态。

    四次挥手原因 由于TCP的连接是全双工,双方都可以主动传输数据,一方的断开需要告知对方,让对方可以相关操作,负责任的表现。

    使用TCP协议有:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等

    4、TCP流量控制

    滑动窗口协议

    TCP滑动窗口协议主要为了解决在网络传输数据的过程中,发送方和接收方传输数据速率不一致的问题,从而保证数据传输的可靠性,达到流量控制的效果。 发送方中的数据分为三种:

    • 发送已确认
    • 发送未确认
    • 未发送

    接收方数据分为三种:

    • 已接收和确认但未被上层读取
    • 接收未确认

    在发送方的滑动窗口中,可分为发送窗口和可用窗口。发送窗口中的数据已发送接收方,但未接到接收方的确认;可用窗口则表示发送方还可以发送多少数据。发送方的窗口大小会受到接收方窗口的改变而改变。

    d7ddbe8f73a8cc281b646fc59642cd46.png

    利用滑动窗口机制能有效的控制发送方的发送数据速率。下面是个例子:

    b9f315645b387542bd3148f4157aba2c.png

    TCP的窗口单位是字节,不是报文端,所以上文假设一个报文包含100个字节。ACK是确认位,ack是确认号,seq是序列号,对应报文的数据格式的。A和B在TCP三次握手时候,B会告诉A自己的接收窗口rwnd大小。上图中,A向B先发送了三次数据,但第三次丢失了,同时受到B的流量控制,当前ack=201,还需允许继续发送序号为201到500共300个字节。当A发送到序号为500时,就不能发新的数据了,但能接收第三次丢失的数据。

    接收方数据被上层读取后,又可以接收序号为501-600共100个字节,所以通知A,接收窗口大小为100,序号为501开头....在上图的整个过程中,A共收到B三次流量控制。

    TCP报文段发送的机制

    应用层把数据传递给传输层的TCP的发送缓存后,TCP通过不同的机制来控制报文段的发送时机。 主要有下面三种机制:

    • TCP维护一个变量,等于最大报文段长度MSS,缓存中存放的数据达到MSS字节时,则以一个报文段发送出去。
    • 发送应用层指明要求的报文段,即TCP支持的推送操作。
    • 发送法计时器期限到了,就要把前面缓存的数据以报文段发送出去,前提是长度不能超过MSS。

    TCP传输效率问题

    不同的发送机制都会带来一定的效率问题,例如用户发送一个字符,加上20字节首部,得到21字节长的TCP报文段,再加上21字节的IP首部,就变成41字节长的IP数据报。发送一个字节,线路上就需要发送41字节长的IP数据报,若等待接收方确认,线程就又多了40字节长的数据报。所以在线程带宽不富裕时,这种传输效率非常不高。因此应当推迟发回确认报文,并尽量使用捎带确认的方法。

    Negle算法

    Negle算法主要为了解决TCP的传输效率问题。Negle算法规定:若要把发送的数据逐个字节缓存起来,则发送方需要把第一个字节发送出去,然后缓存后面的字节,在收到接收方第一个字节的确认,再将现有缓存中所有字节组成一个报文段发送出去,继续缓存后续数据。只有在收到前一个报文的确认之后发送后面的数据。这是为了减少所用带宽。当发送数据到达TCP发送窗口的一半或已达到报文段的最大长度也会立即发送报文段,而不是等待接收方确认。这是为了提高网络吞吐量。

    糊涂窗口综合征

    TCP接收方的缓存已满,若上层一次从缓存中读取一个字节,这样接收方就可以继续接纳一个字节的窗口,然后向发送方发送确认,把窗口设为1个字节(上文所讲,IP数据报为41字节长)。如果这样持续下去,那么网络效率非常低。

    所以有效的解决方法,就是让接收方等待一定时间,让缓存空间能够接纳一个最长的报文段,或者等待接收缓存已有一半的空闲空间,再发出确认报文和通知当前窗口大小。

    5、TCP的拥塞控制

    拥塞

    什么是拥塞呢,在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就会变坏了,这种情况就叫拥塞。网络资源常指网络链路容量(带宽)、交换节点中的缓存和交换处理机。

    当出现拥塞,条件允许一般都是通过添加网络资源,例如带宽换成更大的,但这治标不治本,而且不一定总是有用。网络拥塞往往是有许多因素引起的,因此就需要拥塞控制了。

    拥塞控制

    拥塞控制指防止过多的的数据注入到网络中,这样可以使网络中的路由器或链路不过载。拥塞机制是一个全局性的过程,涉及到所有主机、所有路由器,以及与降低网络传输性能有关的所有因素。

    而滑动窗口协议的流量控制,是指点到点的通信量控制,是端到端的问题。

    TCP的拥塞控制方法

    TCP进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传、快恢复

    拥塞控制是基于拥塞窗口的,发送方维持一个拥塞窗口 cwnd的状态变量。窗口大小取决网络的拥塞程度,并且动态变化,发送方会让自己的发送窗口等于拥塞窗口。判断网络拥塞的依据就是发送方接收接收方的确认报文是否超时

    1、慢开始算法

    慢开始指主机由小到大逐渐增大发送窗口,即增大拥塞窗口的数值。初始拥塞窗口cwnd设置为不超过2到4个最大报文段SMSS的数值,具体规定:

    • 若SMSS≤1095字节,cwnd=4 x SMSS字节,不得超过4个报文段。
    • 若SMSS>1095且≤2190字节,cwnd=3 X SMSS字节,不得超过3个报文段。
    • 若SMSS>2190字节,则 cwnd=2 x SMSS字节,不得超过2个报文段。

    从上面的规定限制了初始拥塞窗口的大小。

    慢开始在每收到一个对新的报文段的确认后,cwnd就可以增加最多一个SMSS的数值。

    a2aab19842d545d2d04a619fd31b6861.png

    N是刚收到确认的报文段所确认的字节数,当N

    af121095040af3e0de8806473ee8a599.png

    从图可知,初始化窗口为1,所有发送M1报文段,收到确认号之后,发送M2-M3两个报文段,因为拥塞窗口增大了,后面的轮次也是这样翻倍增加的。随着轮次的增多,那么发送到网络的数据就会急剧增加,容易出现拥塞,因此需要慢开始门限(ssthresh)状态变量。

    • 当cwnd
    • 当cwnd>ssthresh时,使用拥塞避免算法
    • 当cwnd=ssthresh时,慢开始或者拥塞避免算法

    2、拥塞避免算法

    拥塞避免算法就是让cwnd缓慢增大,每一个轮次把拥cwnd增加1,而不是像慢开始算法那样翻倍增加。需要注意的是,拥塞避免算法只是让网络不那么快出现拥塞,而不是避免拥塞出现。

    上文已经说到,判断网络是否拥塞以报文是否超时为准,当网络出现拥塞时,会把ssthresh设为原有的一半,然后开始慢开始算法。如下图所示:

    f391dba96ea9cecd2847043134054585.png

    在上黑色园圈4点的时候,发送方收到对同一个报文端重复确认(3-ACK)。这种情况,个别报文端会在网络中丢失,但实际上未发生网络拥塞,发送方未及时收到确认,就会产生超时,误认为出现拥塞,发送方会重新开始慢开始算法。降低了传输效率。因此,就需要快重传算法了。

    3、 快重传算法

    快重传算法是让发送方尽早知道发生了个别报文段的丢失。快重传算法要求接收方不要等待自己发送数据时才进行捎带确认,而是立即发送确认。也就是说,当出现丢包情况,接收方在接收新数据时会重复发送对丢失包的前一个报文段的确认号。发送方接收到三次确认号后,就判断该丢失报文段确实丢失,会立即进行重传(快重传)。

    5f792fc186e5ba2e504533b51c21e0aa.png

    4、快恢复算法

    在上文,知道只是报文段丢失,而不是网络出现拥塞后,发送方会调整ssthresh为原来的一半,然后继续进行拥塞避免算法,这个过程就叫快开恢复算法。

    5、小结

    可见,TCP拥塞控制四个算法是相辅相成,少了谁都不行,共同维护这拥塞控制机制。下面是总体的流程图。

    949c4dd0f12c2445054ff075075e0dca.png

    从流量控制和拥塞控制整体看,涉及到三个窗口,接收窗口、发送窗口、拥塞窗口。发送窗口的数值是不能大于接收窗口的,但是拥塞窗口由网络的拥塞程度决定的(所以上文的发送窗口等于拥塞窗口,是假设在接收窗口数值足够大,能够容纳拥塞窗口的数据)。因此,发送窗口的上限值应该是拥塞窗口cwnd和接收窗口rwnd之间的最小值。也就是说,通过流量控制和拥塞控制,发送的发送速率取决于cwnd和rwnd中数值较小的一个。

    最后

    在这里我也分享一份由几位大佬一起收录整理的Flutter进阶资料以及Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料。

    这些都是我闲暇时还会反复翻阅的精品资料。可以有效地帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。

    如果你有需要的话,可以私信发送【资料】来领取。

    3fd5e8e23f69673bb558358e6717142c.png
    df98f6396ea86343a664737f0bf6e7ac.png
    1f554e560b1b463a0ed880991471e47a.png
    fa18e38425012210974a0b18d7768947.png

    如果你有需要的话,可以私信发送【资料】来领取。

    相信一定可以帮助到大家

    展开全文
  • TCPUDP各包含了哪些协议

    万次阅读 2010-08-31 02:43:00
    使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 (2) Telnet:它是一种用于远程...
    使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 (2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。 (3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。 (4) POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。 使用UDP协议端口常见的有: (1) HTTP:这是大家用得最多的协议,它就是常说的"超文本传输协议"。上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。常说"WWW服-务"、"Web服务器"用的就是这个端口。 (2) DNS:用于域名解析服务,这种服务在Windows NT系统中用得最多的。因特网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,它以纯数字+"."的形式表示。然而这却不便记忆,于是出-现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。 (3) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 (4) OICQ:OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用的是无连接的协议,也是说它用的是UDP协议。OICQ服务器是使用8-000号端口侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。
    展开全文
  • TCPUDP协议

    2020-07-18 22:11:32
    一、TCPUDP的概念 传输层上有两大协议: 1、UDP(User Datagarm Protocol):用户报文协议 特点:不可靠,无连接,面向数据报文...接收方(解包和分):接收方根据哪些信息,可以做解包操作(去掉包头)——固定长度

    一、TCP和UDP的概念

    传输层上有两大协议:
    1、UDP(User Datagarm Protocol):用户报文协议
    特点:不可靠,无连接,面向数据报文传输
    2、TCP(Transmission Contro; Protocl):传输控制协议
    特点:可靠,有连接,面向字节流传输

    二、UDP

    应用层将数据交给UDP,让其传输。UDP所打的包头含有:固定长度,包头里带长度,特殊字符。
    发送方(封装)负责为数据添加上这部分包头。
    接收方(解包和分用):接收方根据哪些信息,可以做解包操作(去掉包头)——固定长度;可以做分用的操作(交给上层协议——应用层哪个进程处理 )

    在此过程中我们使用到校验和
    校验和的作用:
    通过一种粗糙的方式,验证收到的信息有没有被修改(被人主动修改)
    如果数据没改,就交付给应用层。
    如果数据修改,直接把包丢弃。(造成我们应用中看到的丢包UDP包)

    过程:
    1、应用层进程通过Socket把数据交付给UDP
    2、UDP(①填写源port/目标port;②计算长度;③计算校验和)添加包头并发送(实际上是交给网络层继续处理)
    3、UDP找出8字节的包头,得到长度/确定数据有没有被修改。如果修改了,直接丢掉;如果没有被修改,交给对应的进程。

    结论:
    1、不可靠: 丢包问题不能百分百解决,但UDP连尝试努力处理一下都没有。甚至发送方UDP都不知道数据到达对方没有,应用层就更不知道了。
    2、无连接: 数据想发就发,没有任何准备工作,所以也不需要连接。
    3、面向数据报文传输: 应用层给了UDP什么,UDP就原封不动发送,对方UDP就原封不动的接收,同时原封不动的交付给对方应用层。使得:在应用层看起来,接受方完全是按照接受方发送的切割方式。

    三、TCP

    TCP是一个传输层协议,传输层最主要的协议就是端对端协议,端对端协议也就是进程对进程的协议,解决网络间两个进程通信的。TCP涉及的最大核心就是追求可靠性,TCP最主要进行了两个机制:确认应答和超时重传。TCP内部为了能做到这套机制,必须在内部为每个通信通道维护一些信息(序列号,下一次要发送的序列号,发送缓冲区,接收缓冲区等等),我们将这个通信通道抽象出来叫做连接。
    TCP一开始有很多数据需要同步给对方,所以在真正数据连接可用之前,必须有一个同步的过程,这个同步过程称为三次握手。TCP是确认应答机制的,首先同步信息是双向的,所以至少有两次,而每个同步信息都有应答,所以一来一回则有四次。中间两种因为发生在同时所以可以合并,segment同时具有同步和应答功能,所以合并之后使最终达到三次。如果比三次更少则意味着同步应答这个机制没有完成;如果更多,理论上可行但是效率低下。

    确认应答:
    方发送方发送了数据之后。
    如果在超时时间内,收到了接受方的应答,就代表对方收到了。
    如果在超时时间到达之后,仍没有收到对方的应答,就代表对方没有收到。(实际上并不知道对方是否收到)

    如果没有收到应答,代表:①对方没有收到数据;②对方收到数据了,但应答回来时,应答丢失。

    超时重传:
    当发送方发现数据丢失之后,会采取超时重传。
    1、既然发送方的TCP可以重传这份数据,说明发送方的TCP,是不是得保留这份数据。(不能去向应用层要了)
    TCP是有发送缓冲区的。byte[] sendBuffer;
    2、如果重传也没有收到应答,说明目前网络状况不佳。
    解决方案:①再次重传;②超时时间增大;③会有一个上限(比如5次)
    如果重传5次对方都没有应答,说明数据确实发不过去,就不再发送,同时通知应用层出问题了。

    超时时间的设定:动态的设定
    TCP需要接收缓冲区(1、需要保留暂时未被接收方应用层读走的数据;2、可以根据需要重新排列顺序)
    TCP需要发送缓冲区(1、因为要重传,所以需要保留发送过的数据一段时间)

    TCP以字节为单位,为数据进行编号,解决了:
    1、确认-应答机制中,接受方有能力应答正确的序号;发送方有能力根据ASN,知道哪些数据已经被对方收到。
    2、乱序的问题可以被TCP解决。TCP接受方可以根据序号对数据顺序进行重新整理,整理之后再通知接受方的应用层数据到了。
    3、接收重复的问题。TCP接收方有能力根据序列号判断出数据是否已经被收到了,所以可以去重。

    四、TCP与UDP的异同

    1、TCP面向连接(如打电话要先拨号建立连接)
    UDP是无连接的,即发送数据之前不需要建立连接

    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
    UDP不保证可靠交付

    3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

    4.每一条TCP连接只能是点到点的
    UDP支持一对一,一对多,多对一和多对多的交互通信

    5、TCP对系统资源要求较多
    UDP对系统资源要求较少。

    注意事项:
    为什么UDP有时比TCP更有优势?

    UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

    (1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

    (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。

    采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

    五、对应的协议

    TCP对应的协议

    (1) FTP:定义了文件传输协议,使用21端口。
    (2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
    (3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
    (4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
    (5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

    UDP对应的协议

    (1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
    (2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
    (3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

    展开全文
  • 请问如何kettle接收tcpudp协议数据,然后保存至数据库? 需要用到的kettle组件有哪些?最好给个例子,非常感谢!
  • TCPUDP

    2018-09-22 19:34:36
    TCPUDP哪些区别? TCP是面向连接的,UDP是面向无连接的。面向连接的协议会先建立连接。例如TCP的三次握手。所谓的建立连接是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,这样...

    UDP协议

    TCP和UDP有哪些区别?

    1. TCP是面向连接的,UDP是面向无连接的。面向连接的协议会先建立连接。例如TCP的三次握手。所谓的建立连接是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,用这样的数据结构来保证所谓的面向连接的特性。
    2. TCP提供可靠支付,保证数据无差错、不丢失、不重复、按序到达,UDP反之。
    3. TCP是面向字节流的,UDP是基于数据报的。
    4. TCP可以拥塞控制。
    5. TCP是有状态服务。

    包的传输过程:
    UDP包到达目标机器,发现MAC地址匹配,取下。将剩下的包传输给处理IP层的代码。取下IP头,目标IP匹配。IP头里面有8位协议,存放数据是UDP还是TCP协议,如果我们知道UDP头的格式,就能从数据里面将它解析出来。处理完传输层的事情,数据就应该交给应用程序去处理。无论应用程序使用TCP还是UDP传数据,都需要监听一个端口来区分应用程序。

    在这里插入图片描述

    UDP三大特点:

    1. 沟通简单,不需要大量的数据结构、处理逻辑、包头字段。
    2. 不会建立连接。
    3. 不会根据网络的情况进行发包的拥塞控制。

    UDP的三大使用场景:

    1. 需要资源少,在网络情况较好的内网,或者对于丢包不敏感的应用。
    2. 不需要一对一沟通,建立连接,而是可以广播的应用。
    3. 需要处理速度快,时延低,可以容忍少数丢包,但是要求即便网络拥塞,也要毫不退缩。

    TCP协议

    TCP包头格式:
    在这里插入图片描述

    • 端口号:确定数据应该往哪里发送。
    • 序号和确认序号:序号是为了防止乱序问题,确认序号是确定发出去的包有没有被收到。
    • 状态位:SYN发起一个连接,ACK是回复,RST是重新连接,FIN是结束连接。
    • 窗口大小:TCP要做流量控制,通信双方各声明一个窗口,标识自己当前能够的处理能力。

    TCP的三次握手
    在这里插入图片描述
    一开始,客户端和服务端都处于CLOSED状态。先是服务器主动监听某个端口,处于LISTEN状态。然后客户端主动发起连接SYN,之后处于SYN—SEND状态。服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RCVD。客户端收到服务端的SYN和ACK之后,发送ACK的ACK,之后处于ESTABLISTEN状态。服务端收到ACK的ACK后,处于ESTABLISTEN状态。

    TCP的四次挥手
    在这里插入图片描述

    展开全文
  • UDP协议

    2020-07-15 20:17:08
    TCPUDP哪些区别? TCP是面向连接的,UDP是面向无连接的。 什么是面向连接? 在互通之前,面向连接的协议会先建立连接。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方...
  • UDPTCP

    2019-03-31 19:22:07
    TCPUDP哪些区别? UDP协议是面向无连接的,TCP是面向连接的 所谓建立连接,是为了客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,这样的数据结构来保证所谓的面向连接的特性。 面向无...
  • 第十篇:UDP协议

    2019-12-09 16:57:01
    TCPUDP哪些区别呢? TCP是面向连接的,而UDP是面向无连接的。 什么叫面向连接,什么叫无连接呢? 在互通之前,面向连接的协议会先建立连接。例如,TCP会三次握手,而UDP不会。 为什么要建立连接呢? ...
  • TCPTransmission Control Protocol 传输控制协议建立在不可靠的IP层上的可靠数据传输协议UDPUDP在IP的数据服务之上增加了复用和分以及差错检测的服务特点:无需建立连接,没有建立连接时的时延无连接状态,TCP需要...
  • ARQ模型响应有两种,UNA(此编号前所有包已收到,如TCP)和ACK(该编号包已收到),光UNA将导致全部重传,光ACK则丢失成本太高,以往协议都是二选其一,而 KCP协议中,除去单独的 ACK包外,所有包都有UNA信息。...
  • TCPUDP哪些区别? TCP是面向连接的,UDP是面向无连接的。 所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,这样的数据结构来保证所谓的面向连接的特性。 ...
  • 初识TCP/IP协议

    2020-05-09 00:30:14
    为了简单化,TCP/IP协议是分层实现的,有哪些层呢?从上往下: 应用层:HTTP FTP 等等 传输层:TCP UDP 端口号标识进程 网络层:IP协议IP地址标识主机 网络接口层:以太网协议(Ethernet),MAC地址标识主机...
  • TCPUDP哪些区别? TCP面向连接,UDP无连接。 所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,这样的数据结构来保证所谓的面向连接的特性。 TCP提供可靠...
  • TCPUDP哪些区别? TCP是面向连接的,UDP是面向无连接的。 什么是面向连接呢?就是在互通之前先建立连接。所谓的建立连接,是为了在客户端和服务端维护连接,而建立一定的数据结构来维护双方交互的状态,这样...
  • 文章目录三次握手和四次挥手三次握手四次挥手TCP连接常见面试题UDPTCP协议UDP协议TCP协议为什么tcp可靠,哪些方法保证可靠TCP的流量控制请你说一说TCP断连过程,以及单向连接关闭后还能否通信请你说说TCPUDP用一...
  • 抓包工具 Win 上不外乎 WireShark,Linux 上是 TCPDump,本文就是实际的抓包,一步一步分析 TCP/IP 协议栈,读懂数据包,从而理解协议栈,理解了协议栈,在网络编程中无往而不利。 本文主要讲解一下内容: 教你看...
  • 1、tcp我们常见的协议哪些,作用和端口号分别是多少? Telnet:终端模拟:23 FTP:文件传输协议:20、21 HTTPS:超文本传输安全协议:443 SSH:安全壳协议:22 2、udp我们常见的协议哪些? qq应用的算吧...
  • 一面:计算机网络三次握手 握手时产生的序列号干什么的 讲一下接收窗口 TCPUDP的本质区别 什么时候选择TCP/UDP HTTPS的连接过程 7层模型和4层模型,每一层有哪些常见协议? 路由器/交换机是哪一层 网络层用来干...
  • 问:NB-IoT的优势是什么? 答:支持单小区50K用户连接,做上传低功耗优势明显。 问:NB-IoT支持定位吗? 答:NB-IoT支持基站定位,当前(18年10月)...答:支持TCPUDP协议,应用层通信包含:MQTT、CoAP、LWM...
  • 这都烂大街的问题了,之前做项目的时候有做过有关tcpudp的东西,但是都是直接的人家封装好的协议栈(lwip),现在有时间了,我得回过头来认认真真学一遍。冲冲冲 应用层 应用层做了哪些事情呢?我们知道,网络...
  • 面试官: 音视频是什么,视频为什么需要压缩 心理分析:很多人对音视频的概念停留在 苍老师...(1)一来就问我tcp/udp哪些协议(就记得http和dns解析,估计是看我专业是网络工程的) (2)弱引用,软引用 (3)vol
  • 非科班面试字节泪经

    2021-01-29 22:47:58
    6、介绍一下udptcp的区别,以及应用层哪些协议用udp哪些协议用tcp? 7、了解数据结构吗?将数组[a,b,c,d,e,f,g]用链表表示出来(手撕代码) 8、了解数据库吗?如何查看表结构?如何查找出1000-1300行? 9、你...
  • 面试之网络问题

    2013-10-22 20:02:15
    1、三次握手 2、四次握手 3、tcp头部的标志 有哪些 分别是? 然后每一种的功能 4 MSS 什么意思 全名:Maximum Sgment Size ...7 应用层协议哪些 哪些用到了TCP 哪些UDP 很细节的问题! 未完待续。。。。。。
  • 在计算机网络系列(零)篇曾提到最早用得协议是UDP,后来发现UDP的不足,所以就开始用TCP.现在就来详细说说这两种协议。 UDP 最早的时候,数据传输发送的内容少,一个数据包就能发送全部内容,这个时候用UDP。 UDP它...
  • 面试必备基础知识点

    2019-03-15 16:53:32
    这里大部分是整理自该篇帖子(侵...哪些应用层协议使用了TCP哪些使用了UDP? 这一块需要好好看。TCPUDP最主要的区别是TCP是可靠传输的,UDP是不可靠传输的。所以如果我们的发送消息之类的场景,因为你要确保...
  • 计算机网络

    2020-01-12 21:32:58
    文章目录1 七层网络结构图2 TCP三次握手2.1 TCP 三次握手漫画图解2.2 为什么...2.7 三次握手有哪些缺陷3 TCP 四次挥手3.1 为什么要四次挥手4 TCPUDP 协议的区别(常问)5 TCP 协议如何保证可靠传输6 如何实现UDP的...
  • 《Android秘籍.第六卷》 目录 《Android秘籍.... 《计算机网络篇》 ...五层协议的体系结构分别是什么?每一层都有哪些协议?...TCP和UDP的区别?...播放视频用TCP还是UDP?为什么? 《HTTP篇》 了解哪些响应状...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

哪些协议用tcp哪些用udp