计算机网络(五)——传输层

一、功能

传输层的主要功能是向两台主机进程之间的通信提供通用的数据传输服务。功能包括实现端到端的通信、多路复用和多路分用、差错控制、流量控制等。

复用:多个应用进程可以通过同一个传输层发送数据。

分用:传输层在接收数据后可以将这些数据正确分发给相应的应用进程。

端口号:在传输层中用端口号来区分一台主机上的不同应用进程。端口号只在本主机中有实际意义,用来唯一标识一个进程,不同主机的相同端口号之间没有联系。

二、UDP

UDP是一种简单无连接且不可靠 的传输层协议,只在IP数据报服务的基础上增加了复用和分用以及差错检测功能。在使用UDP协议进行通信之间不会建立连接,减少了网络开销以及发送时延。UDP不保证可靠交付,也没有拥塞控制 。UDP是面向报文 的,即无论应用层给UDP多长的报文,UDP都会完整地发送出去。基于这些特性,UDP常用于对实时性要求很高且对少量数据丢失不敏感的场景中

UDP在进行差错检测时会在UDP报文前加上一个伪首部,之所以称其为伪首部是因为伪首部只负责参与差错检测,并不会发送出去 。发送方首先会将首部的检验和部分填入全0,并在数据部分的后面填充0以使整个报文的长度为偶数个字节。然后以两个字节为单位对添加了伪首部的UDP报文作二进制反码求和运算就得到了校验和,最后将这个校验和替换掉原来填充的0,并去掉伪首部就可以将这个UDP报文转交给网络层了。接收方在收到UDP报文后也会先在报文前面加上伪首部,然后以两个字节为单位对UDP报文作二进制反码运算。如果结果为全1说明报文正确,否则表明报文在传输时出现了错误,接收方就会丢弃这个报文。UDP本身是不会要求发送方重新发送的 ,这也体现了UDP的不可靠性。TCP和UDP的差错检测相同,也使用了伪首部,不同的是当数据出错时TCP会要求发送方重新发送

三、TCP

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。

面向连接是指:在使用TCP协议进行通信时,通信双方会先建立一条TCP连接,然后开始发送数据;当数据传输完毕后会将这条连接释放掉。

可靠传输是指:第一,TCP在建立连接时会采用三次握手的形式来确保连接是可靠的。第二,接收方会对接收的数据进行差错检测,确保数据在传输过程中没有出现差错。第三,如果数据在传输时没有出现差错或丢失,那么接收方需要在规定时间内向发送方返回确认报文;如果发送方没有在规定时间内收到确认报文就会重新发送,确保发送的数据是可靠的。第四,TCP支持流量控制,通过滑动窗口机制来动态控制发送方的发送速率,避免接收方因来不及接收数据而丢弃。最后,TCP支持拥塞控制,会根据网络的拥塞情况调整发送的数据量,防止过多的数据涌入网络,进一步提升传输的可靠性。

基于字节流是指:TCP将应用层发送过来的所有数据看成是一连串的字节序列(也就是字节流),TCP不会区分哪一部分是一个整体,只负责将这些字节按顺序编号之后分割成大小合适的一个个报文进行发送。接收方会根据字节的编号把这些报文按照顺序进行重组,还原成原来的字节流,再交由应用层来将字节流划分为不同的消息整体。

TCP的三次握手

客户端会先向服务器端发送连接请求报文段用来请求建立TCP连接;服务器端收到后会为本次连接分配缓存和变量,并向客户端发送确认报文段表示允许建立连接;客户端收到确认报文段后会为本次连接分配缓存和变量,并向服务器端发送对确认报文的确认,此时连接就成功建立了。

TCP的四次挥手

当客户端的数据发送完毕后会向服务器端发送连接释放报文段,表示自己已停止发送数据,但仍可以接收服务器端的数据。随后服务器端会向客户端发送确认报文段,此时客户端到服务器端方向的TCP连接被释放。待服务器端发送完数据后会向客户端发送连接释放报文段,客户端收到之后会给服务器端返回一个确认报文段,服务器端收到后便会关闭连接,而客户端会在发送完确认报文后再等待一段时间才会关闭连接。当客户端和服务器端都关闭连接后本次TCP连接彻底结束。

客户端会在发送完确认报文后再等待一段时间才会关闭连接有两个原因

一是为了确保确认报文能够被服务器成功接收到。如果确认报文在发送时出现了问题,服务器端会让客户端重发确认报文,此时客户端需要保持连接状态才能响应重发请求;只有服务器端收到了确认报文才会关闭连接。

另一个原因是为了防止在旧连接中的数据对新建立的连接产生干扰。在旧连接中的数据可能会因为网络繁忙等原因一直处在网络中,如果客户端在发送完确认报文后立即关闭旧连接而开启新的连接,那么这些旧连接中的数据很有可能在新连接的过程中才到达,此时这些数据会被认为是新连接中传输的数据进而对新连接产生干扰。由于数据在网络中传输有生存时间,所以等待一段时间可以让这些旧连接的数据在网络中自然消逝,防止对新连接产生干扰。

TCP的流量控制:发送方会估计当前网络的拥塞程度,进而自己确定一个发送窗口大小,称之为拥塞窗口;同时,接收方会根据自己当前接收缓存的大小来确定接收窗口的大小。那么发送窗口的实际大小为拥塞窗口和接收窗口的最小值。在通信过程中拥塞窗口和接收窗口是不断变化的,并通过滑动窗口机制来动态控制发送窗口,实现流量控制。

TCP的拥塞控制 :包括慢开始拥塞避免快重传快恢复

慢开始:拥塞窗口初始为1个最大报文段长度,发送方每收到一个对新报文段的确认就把拥塞窗口增加一个最大报文长度;如果接收窗口足够大,那么下一次就会发送两个最大报文长度的数据;以此类推,拥塞窗口会以指数形式增长。慢开始用于快速探测网络的承载能力。

拥塞避免:当拥塞窗口达到一个阈值时会进入拥塞避免阶段,此时每经过一个往返时间拥塞窗口只增加1个最大报文长度,从指数增长转为线性增长。拥塞避免用来降低拥塞发生的风险。

快重传:接收方在收到一个失序报文段后会立即报告给发送方,如果连续收到了多个失序报文,那么接收方也会连续报告给发送方;当发送方连续收到3次报告后会立即重发丢失的报文而不必等待相应报文的计时器超时。

快恢复:发送方在执行快重传后会将拥塞窗口变为原来的一半,随后采取拥塞避免的方式调整拥塞窗口。快恢复能够在避免网络拥塞的同时保持快速的数据传输。

TCP和UDP的区别

①TCP是面向连接的协议,在数据传输前要建立连接;而UDP不需要建立连接。

②TCP提供可靠的传输服务,而UDP是不保证可靠传输。

③TCP由于要建立连接且要保证数据的可靠性,所以传输速率较低且网络开销较大;而UDP没有这些复杂的机制,发送过程简单,传输速率高,且实时性较好。

④TCP适用于对数据的准确性和完整性要求很高的场景,如文件传输、电子邮件等;UDP适用于对实时性要求很高且对数据准确性要求较低的场景,如实时会议、直播等。

TCP和UDP也有相同之处,比如都是全双工通信差错检测方式相同等。

相关推荐
LLLuckyGirl~1 小时前
计算机网络之---TCP连接管理
网络·tcp/ip·计算机网络
Cikiss4 小时前
HTTP详解——HTTP基础
网络·网络协议·计算机网络·http
okmacong4 小时前
04.计算机体系三层结构与优化(操作系统、计算机网络、)
java·服务器·计算机网络
LLLuckyGirl~8 小时前
计算机网络之---无线通信概述
网络·计算机网络
车到山前必有路5299 小时前
计算机网络(四)——网络层
计算机网络
LLLuckyGirl~11 小时前
计算机网络之---SSL/TLS协议
网络协议·计算机网络·https
IT 青年12 小时前
计算机网络 (40)域名系统DNS
计算机网络
昵称难产中12 小时前
浅谈计算机网络02 | SDN控制平面
网络协议·计算机网络·平面·云计算·信息与通信
昵称难产中12 小时前
浅谈计算机网络01 | SDN数据平面
网络·计算机网络·平面