传输层 知识点总结

TCP协议是什么


其实网络当中的流量,绝大多是应用程序之间的通信产生的。比如访问网站的流量,看电影的流量等等。程序在电脑上面的表现为进程,其实访问网络上面的服务就是进程和进程的通信。

网络其实是不可靠的,比如图片的发送被分为一个一个的数据包来传,如果链路上面传的数据包多,路由器处理不了,这个路由器就将这个数据包直接丢弃,那么接收端接收到的图片就是不完整的,这是不允许的。 

网站要将网页传输给浏览器,将网页放到传输层,在传输层分段进行编号,分段之后给每个段添加IP地址,源地址目标地址,这就形成了数据包。接收端收到之后放到缓存里面,然后按照顺序读取,如果丢包了,那么接收端就得等着,发送端就得重新发送丢了的数据包。最后丢失的数据包到了才能读取连续收到的包。

数据包可能是不是同时到达的,也就是没有按照顺序到达,因为每个数据包都是独立选择路径的,接收端会等着这个迟到的数据包,等到这些迟到的数据包再开始都连续的数据包。

上面就是传输层为我们应用层提供可靠传输,这个协议就是TCP协议。

TCP场景(需要多次交互,传输的数据比较大,分段传输)


TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收,其间发送丢包、乱序,TCP负责重传和排序。下面是TCP的应用场景。

(1)客户端程序和服务端程序需要多次交互才能实现应用程序的功能。比如接收电子邮件使用的POP3和发送电子邮件的SMTP,传输文件的FTP,在传输层使用的是TCP。(客户端和服务端需要多次交互的通信)

(2)应用程序传输的文件需要分段传输,比如浏览器访问网页,网页中图片和HTML文件需要分段后发送给浏览器,或QQ传文件,在传输层也是选用TCP。 (在传输的时候可能需要一段时间,要将文件分为很多段去传,因为文件大,在传输的时候可能丢包,没有按照顺序到达,都需要实现可靠传输)

TCP的主要特点是什么?


TCP是`面向连接`的传输层协议。比如说TCP的三次握手,四次分手,针对的都是连接。

每一条TCP连接`只能有两个端点`,每一条TCP连接是点对点的。`也就是说TCP是不同计算机之间的进程的通信`。

TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达。总结一下就是,`可靠有序,不丢不重`。

TCP提供`全双工通信`。全双工指的是连接双方可以同时收发数据。在收发两端都有发送缓存和接收缓存,发送缓存就是一个准备发送的队列,接收缓存是一个准备接收的队列。

TCP`面向字节流`。如下图,我们解释一下什么是面向字节流:

图中的1,2,3,4.....数据块,每一个表示一个字节。tcp将应用层的数据变为了这样的字节进行发送,比如玩过node同学,知道一个buffer,buffer就是字节流。

UDP应用场景


在传输层还有一个协议是UDP协议,用户报文协议,和TCP相比其不提供可靠传输。不可靠有不可靠的好处,比较精简,快速,不需要建立连接,不需要释放连接。

(1)客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。比如域名解析,DNS协议就是用传输层的UDP,客户端向DNS服务器发送一个报文解析某个网站的域名,DNS服务器将解析的结果使用一个报文返回给客户端

(2)实时通信(延时尽量低),比如QQ或微信语音聊天,或视频聊天。这类应用,发送端和接收端需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能愉快的聊天了。(丢包了,网速不好,那么就重新说一遍,如果向TCP一样提供可靠传输,丢包了,说了一句话,丢包了重传,没有按照顺序到等一会,这样得过一段时间才能收到对方说的话,这就不是实时通信了



UDP 的主要特点是什么?


UDP是`无连接的`,减少开销和发送数据之前的时间延迟。大家都知道`TCP`的`三次握手和四次分手`,这个是需要时间花销的,但是UDP没有这部分花销。

UDP使用`最大努力交付`,即不保证可靠交付。那谁来保证可靠的交付呢?是由UDP的上一层协议,应用层来保证。

UDP是`面向报文的`,适合一次性传输少量数据的网络应用。什么意思呢,如下图,UDP这层,把应用层的全部内容作为自己的数据报部分,在IP层也只是加了一个IP首部,我们知道,在以太网,链路层上的数据如果超过1500字节,就会分片,所以网络层发现上面传输层给了`太大的数据就会分片`,加上UDP是不可靠的协议,这就加大了UDP的`不可靠性`,容易丢失,所以UDP适合数据量少的。 

UDP没有拥塞控制,适合很多实时应用。也就是说如果网络堵塞,UDP不管那么多,照样按照自己的速率发数据,那有些人就会说,这协议是不是有点坑B,路都堵上了,还发死劲发数据呢,但是反过来看,这也是UDP的优点,它允许丢包,如果你的网络情况还不错,UDP就非常适合实时应用,比如视频会议。

UDP首部较小,只有8字节,而TCP由20字节。这也是`减少网络传输开销`的一方面。 

猜你喜欢

转载自blog.csdn.net/qq_34556414/article/details/125406358
今日推荐