菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
146
0

TCP协议

原创
05/13 14:22
阅读数 59711

一、TCP与UDP

  TCP(传输控制协议)和UDP(用户数据报协议)是OSI模型中的传输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输。传输层的功能是使源主机和目标端主机上的实体可以进行会话。

  TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。需要三次握手建立连接才能进行数据传输。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。

  UDP协议是一个不可靠、无连接协议,不与对方建立连接而是直接就把数据包发送过去。主要适用于不需要对报文进行排序和流量控制的场合。UDP适用于一次只传少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

TCP/UDP的优缺点:

  TCP的优点:可靠、稳定;TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立来连接,而且在数据传递时,有确认、窗口、拥塞控制机制,在数据传完后,还会断开连接来节约系统资源。如果消息在传输过程中丢失,那么它将重发。

  TCP的缺点:慢、效率低、占用系统资源高、易被攻击;TCP在传递数据之前,要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接。事实上,每个链接都会占用系统的CPU、内存等硬件资源。而且因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

  UDP的优点:快、比TCP稍安全;UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据是非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些,但UDP也是无法避免攻击的,比如UDP Flood攻击......

  UDP的缺点:不可靠、不稳定;因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

两者的区别大致如下:

  TCP面向连接;UDP面向非连接,即发送数据前不需要建立连接;

  TCP提供可靠的服务(数据传输);UDP无法保证;

  TCP面向字节流、UDP面向报文;

  TCP数据传输慢;UDP数据传输快;

  TCP适合传输大量数据;UDP适合传输少量数据;

  TCP只能单播,不能广播和组播;UDP可以广播和组播;

TCP/UDP应用场景:

  什么时候使用TCP?答:效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。当对网络通讯质量有要求时,比如:整个数据要准确无误地传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输协议。

  什么时候使用UDP?答:效率要求相对高,对准确性要求相对低的场景。当对网络通讯质量要求不高时,要求网络通讯速度能尽量的快,这是就可以使用UDP。例如:QQ聊天、网络语音电话、广播通信(广播、多播)。

面向连接和面向无连接的区别?

  面向连接举例:两个人之间通过电话进行通信;面向无连接举例:邮政服务,用户把信函放在邮件中期待邮政处理流程来传递邮政包裹。显然,不可达代表不可靠。

  TCP通信需要服务器端侦听listen、接收客户端连接请求accept,等待客户端connect建立连接后才能进行数据包的收发(recv/send)工作。而UDP则服务器和客户端的概念不明显,服务器端即接收端需要绑定端口,等待客户端数据的到来,后续便可以进行数据的收发(recvfrom/sendto)工作。

TCP和UDP中报文的边界问题:在默认的阻塞模式下,TCP无边界,UDP有边界。

  对于TCP协议,客户端连续发送数据,主要服务端的这个函数的缓冲区足够的大,会一次性接收过来,即客户端是分好几次发过来,是有边界的,而服务端却一次性接收过来,这个名师无边界的;

  对于UDP协议,客户端连续发送数据,即使服务端的这个函数的缓冲区足够大,也只会一次一次的接收,发送多少次接收多少次,即客户端分几次发送过来,服务端就必须按几次接收,从而证明,UDP的通讯模式是有边界的。

二、TCP对应的协议和UDP对应的协议

TCP对应的协议:

  1)FTP:定义了文件传输协议,使用21端口。计算机开了FTP服务便是启动了文件传输服务。下载文件、上传主页,都要用到FTP服务。

  2)Telent:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。

  3)SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常用的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置中常看到有SMTP端口设置这个栏,服务器开放的是25号端口。

  4)POP3:它是和SMTP对应,POP3用于接收邮件,通常情况下,POP3协议所用的是110端口。也就是说,只要你有相应的使用POP3协议的程序,就可以不以web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件。

  5)HTTP协议:是从web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

  1)DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53端口。

  2)SNMP:简单网络管理协议,使用161端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

  3)TFTP,简单文件传输协议,该协议在端口69上使用UDP服务。

 

1、为什么TCP比UDP安全,但是还是很多用UDP?

   1)无需建立连接(减少延迟);

  2)无需维护连接状态;

  3)头部开销小,一个TCP数据报的报头大小最少是20字节,UDP数据报的报头固定是8字节;

  4)应用层更好地控制要发送的数据和发送时间。UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送频率。某些事是应用要求以稳定的速度发送数据,可以容忍一些数据的丢失,但不允许有较大的延迟,而UDP正好满足这些应用的需求。

2、UDP为何快?

  1)不需要建立连接?

  2)对于收到的数据,不用给出确认;

  3)没有超时重发机制;

  4)没有流量控制和拥塞控制;

发表评论

0/200
146 点赞
0 评论
收藏