TCP与UDP协议。

一、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服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值