计算机网络-浅谈运输层(传输层)

(持续更新,记录学习,有误请一定告知)


什么是运输层

运输层在OSI七层协议中为第4层(在网络层的上层,会话层的下层),在TCP/IP协议中为第三层(网络层上层,应用层下层),其功能就是给予不同主机间的应用进程提供分组通信,主要的通信协议为UDP和TCP。

为什么需要运输层

从网络层的角度来说,IP数据报的首部明确了两个要通信的主机的地址,并能够将分组数据由发送端主机传送到目的主机端中,实现两台主机间的通信,既然都已经实现了两台主机间的通信那为什么还需要运输层呢? 其实 “两台主机通信” 并不够准却,应该是 “两台主机的应用进程间通信” ,因此IP做的仅仅是将分组数据传送到了目的端主机的网络层中并没有交付到目的主机的进程中,而运输层就是将在网络层中的分组数据交付给应用层达到应用进程间通信的作用。

说了这么多可以总结两句话:
网络层:为主机间提供逻辑通信

传输层:为主机中的应用进程提供逻辑通信

在这里插入图片描述

运输层的分用与复用

上面说到对于运输层而言,所谓的通信是指两台主机间的应用进程间的通信,而不是两台主机间的通信,那么两台主机间不会在一个时刻只相互通信一个进程的数据吧!一定是多个进程与多个进程之间同时的交互,因此,运输层有一个很重要的功能---- 分用复用

举个平常的例子:
当一个小区的sf快递小哥收到这个小区所有业主要寄出的sf快递,之后把快递都交到sf的物流中心,这个行为我们就可以说是小区的所有业主复用了小区的快递小哥,而当各地方的sf物流中心包裹要寄来这个小区时,快递小哥收集了包裹后分别的交给对应的业主,这个行为就是分用。

而在运输层中,应用层的所有应用进程都可以通过运输层传输到网络层,这就是 复用,而运输层收到从网络层要发送给各应用进程的数据后,运输层将分别交付到指定的应用进程这就是分用

UDP(用户数据报协议)

1.特点

1.1 UDP是无连接的:字面上的意思,UDP在发送数据之前不用建立连接(此处可和后面讲到的TCP建立连接做对比)

1.2 UDP的服务是尽最大努力的服务:就是不可靠的服务,说的在白话一些就是UDP传送的数据不会保证有没有传到,也不会确认到底传到没有,所以主机不需要维持连接状态表(节省资源)

1.3 UDP没有拥塞控制:所以使用UDP传输时当网络出现拥塞时,并不会影响发送端的发送数据,所以对于实时应用要求高的应用进程(视频电话、直播)会使用UDP

##注意虽说实时应用要求高的应用进程会使用UDP,但当很多这类应用进程同时向网络发送数据时,网络就可能会引起拥塞,会造成所有应用进程都没法正常使用##

2.UDP首部格式

2.1 每个UDP的数据报有两段格式=>UDP首部+UDP数据部份

2.2 UDP首部:源端口+目的端口+长度+校验和 (每一个字段占用2字节)

源端口: 需要对方回信时选用,不需要时可以是全0
目的端口: 在终点交付报文时必须使用
长度: 就是数据报长度,最小为8
校验和: 检测数据报在传输中是否有错,有错就扔

##如果目的端UDP发现目的端口号并没有对应的应用进程,则会丢掉数据报,并由ICMP回传
"端口不可达"差错报文给发送方