引言
在计算机网络中,用的最多的就数TCP和UDP。两者的作用都是供网络进行传输的协议,而两者在原理上又有所不同。简而言之,TCP是面向连接的数据流传输,而UDP是非面向连接的、不可靠的传输方式。
七层网络模型(OSI)
物理层 : 中继器、集线器所在层。通过媒介传输Bit数据,确定电气、机械等规范。
数据链路层 : 网桥、交换机所在层。将Bit组装成一帧帧,实现点到点的传递。
网络层 : 即路由器所在层,主要协议有IP、ARP、RARP等。将数据包在网络间传输。
传输层 : TCP协议、UDP协议所在层。提供端到端的可靠报文传递和错误恢复。
会话层 : NFS、RPC。建立、管理、终止会话。
表示层 : ASII、JPEG。对数据进行翻译、加密、压缩。
应用层 : FTP、DNS、HTTP、SMTP,我们常见的协议都在应用层。通过OSI模型,最后实现不同应用的手段。
TCP
TCP传输单位称为TCP报文段。相比UDP,TCP更加注重数据的安全性、可靠性,TCP保证了在传输过程中的不错、不乱、不丢。虽然TCP可靠,但是在数据传递时的确认机制、重传机制、拥塞控制却要花费更多的时间以及资源。并且TCP的三次握手、四次挥手机制容易被人利用,进而实现网络攻击。
TCP对应的协议:
1.文件传输协议FTP,使用了21端口。
2.邮件传输协议SMTP,实现邮件的 收发,使用了25端口。
3.超文本传输协议,也就是我们上网经常使用到的协议。默认为80端口。
TCP协议具备拥塞控制机制,这个机制是为了防止过多的数据载入当前的网络中,因为过多的数据会使网络中的路由器、链路过载。常用的解决办法有慢开始、拥塞控制、快重传、快恢复。
UDP
UDP传输单位称为用户数据报。UDP支持一对一,一对多,多对一,多对多的交互通信。与TCP不同,UDP不会理会传输的可靠性,它只会尽力完成交互。UDP只进行最基本的校验和纠错,所以像传输视频时,可以使用UDP。因此,UDP被攻击者利用的漏洞就少了许多
UDP对应的协议:
1.DNS,用于域名解析,将域名解析成IP地址,使用的是53端口。
2.简单文本传输协议TFTP,该协议在69端口上使用UDP服务。
使用场景
TCP:当对网络的通信有质量要求时,首选TCP,这样可以将这个数据无误地传输给对方。比方文件传输、浏览器的使用。
UDP:1.视频、语音此类要求实时性的多媒体通信;2.数据包总量较少的通信,如DNS、TFTP;3.广播通信,多播通信。
TCP协议如何保证可靠性传输?
在传输时,TCP通过序列号、校验和、确认应答信号、重发控制、窗口控制、流量控制、拥塞控制等方式实现可靠性。
校验和:TCP保持首部和数据的校验和,如果接收端的校验和和发送端的不同,TCP则会丢弃这个报文。
流量控制:在TCP连接中,会有一段固定大小的缓冲段,这意味着只允许发送端发送接收端能够接收的数据量。此外,当接收的一方来不及处理发送端传输过来的数据,则会提示发送端降低速率,防止包丢失。
拥塞控制:当网络发送堵塞时,则会减少数据的发送。
超时重传:当TCP发送出一个报文后,会启动一个定时器,等待接收端确认收到这个报文。若超过规定时间没有收到应答,则会重新发送一次。
握手挥手机制
三次握手
第一次握手,客户端发送包到服务器,并等待服务器确认,并进入准备发送状态。
第二次握手,服务器收到客户端发来的包,同时返回一个应答包给客户端,并进入准备接收状态。
第三次握手,客户端收到来自服务器的应答包后,发送自己的一个应答包,此包发送完毕后开始建立传输,完成三次握手。
四次挥手
第一次挥手,主动关闭的那一方首先发送一个FIN,用来关闭主动方到被动方的数据传输。
第二次挥手 ,被动关闭方收到FIN后,会发送一个应答回去,表明已经收到关闭请求。但是被动方需要传输完数据才能够结束连接。
第三次挥手,被动关闭的那一端发送FIN给主动方,告诉对方这边也已经发送完数据了。
第四次挥手,主动方收到来自被动方的FIN后,发送应答给被动方,确认已经收到。发送完毕后则结束连接。
结语
三次握手的机制是为了防止已经失效的连接请求,突然又发送给服务器。
比方说某个网络节点发生滞留,导致请求延迟到本次连接释放后才传输到另一端。假设A发送给B连接请求,但是因为网络延迟,B暂时没有收到;此时A又发送请求,B收到后两者建立连接,正常传输数据。
随后B又收到了之前因为前段时间网络滞留没有接收到的请求,此时B表明同意建立连接。但是这个时候,这个请求对A来说已经过时,即A不会发送数据给B,但是B却会一直等待A传输数据。造成资源上的浪费
以上内容如有错误,欢迎指出。谢谢!