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

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


什么是运输层

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

为什么需要运输层

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

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

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

在这里插入图片描述

运输层的分用与复用

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

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

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

端口号

1. 什么是端口号

上面说到的端口,端口号就是应用层中各个应用进程的一个号码,端口就像一扇门,在发送端,应用进程通过端口将要交互的数据传给运输层;而在接收端运输层通过端口号将数据传给个应用进程

2. 端口号分类

2.1 服务器端口号:
   熟知端口号(系统端口号):数值为 0-1023,详细的对应可在IANA查询
   登记端口号:数值为 1024-49151,可在IANA登记办理

常见的熟知端口号
                 

2.2 客户端口号: 数值为 49152-65535,又叫短暂端口号,当客户端和服务器端的通信结束时,
       客户端口号就会消失

##注意##端口号的作用范围只在本地,在整个因特网中,不同计算机的相同端口号是没有关联的

无连接服务和面向连接服务

所谓的连接指两端在数据传前是否需要建立连接,而面向连接就是在通信之前,必须建立连接,在通信的过程中,会一直被监控和管理,在通信结束后,释放连接;而相对于面向连接,无连接服务就是两个通信设备通信前不建立连接,当要传数据时,直接把数据放到网络上,由系统决定怎么传输数据,无连接服务部能保证数据发送端发送的数据顺序以相同的顺序到达接收端

可靠传输

1. 可靠传输特性

1.1 不错: 数据不会出差错
1.2 不丢: 数据不会丢失
1.3 不乱: 数据按造发送端发送的数据顺序以相同的顺序到达接收端

2. 停止等待协议

要满足可靠传输,需要有理想的传输条件1.传输信道不产生差错 2.不管发送方发送的多块.接收方都能够来得及处里接收的数据, 然而现实总是差强人意,这种理想是不存在的,因此通过停止等待协议来达到可靠传输

2.1 中心思想:就是当发送方传送数据到接收方,接收方能够回传确认信息给发送方,发送方收到后再接着传接下来的数据分组,但在发送和接收通信时往往会有以下情况发生 :

无差错情况:这是最理想的情况了,就是发送端发送的数据分组都能够到达接收端,并且接收端也都可以回传确认信息

出现差错 :指得是传送端将数据传送给发送端后,接收端检测数据是有差错的,这时接收端会丢失数据,接着啥也不干,而发送端一直没收到接收端的确认信息,则重新在发送一次相同的数据分组,这个过程叫做超时重传, 要达到超时重传需要 1.设置一个超时计时器 2.发送端必须暂时保留发送的数据分组的副本,直到接收端回传确认信息再丢弃 3. 超时计时器的设计需要比分组传输的平均往返时间更长

确认信息丢失或迟到: 从字面意思就可以知道,发送端的分组数据到达接收端并没有丢失且没有差错,但接收端返回确认信息时,确认信息丢失或迟到,导致发送端以为是数据没有传到,因此再传了一次,导致接收端收到重复的分组,这时接收端会做两件事: 1.将重复的数据丢弃 2. 再重新传一次确认信息; 而发送端会一直等待确认,如果一直没等到就一直等,直到系统自动关闭连接,而发送端在这过程如果收到重复的确认信息,丢掉重复的确认信息

UDP(用户数据报协议)

1. 特点

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

1.2 UDP的服务是尽最大努力的服务:就是不可靠的服务,说的在白话一些就是UDP传送的数据不会保证有没有传到,也不会确认到底传到没有,但UDP有简单的差错检验,不过如果检验出错误,会直接丢弃报文所以主机不需要维持连接状态表(节省资源)

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

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

2. UDP首部格式

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

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

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

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

猜你喜欢

转载自blog.csdn.net/monkey_IT/article/details/109259393