app开发者平台在数字化时代的重要性与发展趋势解析
813
2022-11-30
传输层 知识点总结
理想的传输条件特点
理想的传输条件有以下两个特点∶
1.传输信道不产生差错。(不会出现乱序的现象,或者丢包)
2.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的到数据。(接收方处理不过来,让发送方发慢一点,这个时候就需要TCP协议来实现流量控制)
在这样的理想传输条件下,不需要采取任何措施就能够实现可靠传输。然而实际的网络都不具备以上两个理想条件。必须使用一些可靠传输协议,在不可靠的传输信道实现可靠传输。
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服务器将解析的结果使用一个报文返回给客户端。
UDP 的主要特点是什么?
UDP是`无连接的`,减少开销和发送数据之前的时间延迟。大家都知道`TCP`的`三次握手和四次分手`,这个是需要时间花销的,但是UDP没有这部分花销。 UDP使用`最大努力交付`,即不保证可靠交付。那谁来保证可靠的交付呢?是由UDP的上一层协议,应用层来保证。 UDP是`面向报文的`,适合一次性传输少量数据的网络应用。什么意思呢,如下图,UDP这层,把应用层的全部内容作为自己的数据报部分,在IP层也只是加了一个IP首部,我们知道,在以太网,链路层上的数据如果超过1500字节,就会分片,所以网络层发现上面传输层给了`太大的数据就会分片`,加上UDP是不可靠的协议,这就加大了UDP的`不可靠性`,容易丢失,所以UDP适合数据量少的。
UDP没有拥塞控制,适合很多实时应用。也就是说如果网络堵塞,UDP不管那么多,照样按照自己的速率发数据,那有些人就会说,这协议是不是有点坑B,路都堵上了,还发死劲发数据呢,但是反过来看,这也是UDP的优点,它允许丢包,如果你的网络情况还不错,UDP就非常适合实时应用,比如视频会议。UDP首部较小,只有8字节,而TCP由20字节。这也是`减少网络传输开销`的一方面。
传输层协议和应用层协议之间的关系
传输层协议就两个,一个TCP,一个UDP,应用层这么多协议,怎么来区分呢。tcp+80标识它是http协议,同理其他的也一样。通过这个tcp+端口实现复用,协议就一个,但是标识的端口不一样,上层的协议也不一样。udp协议也是一样。
通常传输层协议加一个端口号来标识一个应用层协议。
TCP通过端口号标识上层是什么协议,同理UDP也是通过端口来区分上层协议。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~