计算机网络运输层

Posted zizi7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络运输层相关的知识,希望对你有一定的参考价值。

目录


网络层实现的是两台主机之间的通信
但数据实际是需要从一台主机的某个进程到另一台主机某个进程

运输层就是提供应用进程间的逻辑通信,其满足

  • 复用:发送方不同的应用进程都可以使用同一个运输层协议传送数据
  • 分用:接收方的运输层在解析报文首部后能把数据正确交付目的应用进程

根据应用程序的不同需求,运输层有2种不同的运输协议:面向连接的TCP、无连接的UDP


端口

  • 运输层通过协议端口号来确定应用进程
  • 运输层将报文送到特定端口,剩下的工作由TCP或UDP完成
  • 端口号一共16位,一共允许有65535个端口
端口类别端口范围说明
系统端口号0-1023服务端使用,在IANA上注册的常用应用。如FTP(21)、HTTP(80)、DNS(53)、HTTPS(443)
登记端口号1024-49151服务端使用,需要在IANA上按规定登记避免重复
短暂端口号49152-65535客户进程短暂使用

用户数据报协议UDP

  • UDP是无连接的。即发送数据前不需要建立连接,可以减少开销和时延
  • UDP是尽最大努力交付。即不保证可靠交付
  • UDP支持一对一、一对多、多对一和多对多的通信
  • UDP是面向报文的。UDP对应用层交下来的报文不做合并也不做拆分,一次交付一个完整的报文。因此如果报文太长可能降低网络层效率
  • UDP没有拥塞控制。网络出现的拥塞不会降低源主机发送速率,这时可能会丢失数据。对一些要求恒定速率发送数据并可以接受数据丢失的应用(IP电话、视频会议等)正好适合
  • UDP首部开销小。UDP首部8个字节,TCP首部20个字节

    UDP由2个字段组成:数据字段、首部字段
    伪首部是在计算检验和时临时生成的,不参与传输

传输控制协议TCP

  • TCP是面向连接的。应用程序在使用TCP协议之前需建立TCP连接,传输完毕后必须释放该连接
  • 每一条TCP连接是一对一的。
  • TCP提供可靠交付的服务。传输的数据无差错、不丢失、不重复、按序到达
  • TCP提供全双工通信。TCP连接的两端都设有发送缓存和接收缓存
  • TCP面向字节流。TCP根据对方给的窗口值和当前网络拥塞程度决定一个报文段应包含多少字节,如果应用程序发送的数据块太长,TCP会分短一些传送,反之则等待足够多的字节后再发送
  • 每条TCP连接唯一的被通信两端的套接字确定。
套接字 socket = IP地址:端口号

TCP连接的建立

TCP建立连接的过程叫握手

在这个过程中需要交换三次报文,因此也有说三次握手。但实际上是只握一次手,上下摇了三次

假设A主动打开连接,首先发送请求报文给B,B收到报文后如果同意建立连接,则向A发确认报文,A收到报文后向B发送第三次报文确认,同时进入连接建立状态,B收到第三次报文后也进入连接建立状态

之所以要有第三次报文确认,是为了避免无效连接请求传到B:
假设A向B发送了请求连接报文,但该报文在某些网络结点长时间滞留了。等B收到这个请求如果回复确认报文并直接进入连接建立状态,就会浪费许多资源。而三报文的办法就可以避免这种情况

TCP连接的释放

TCP连接释放的过程需要交换四次报文,也称四报文握手

假设A首先发送释放报文,并进入终止等待1(FIN-WAIT-1)阶段

B收到释放请求报文后向A发出确认报文,并进入关闭等待(CLOSE-WAIT)状态,A收到确认报文后进入终止等待2(FIN-WAIT-2)阶段。此时TCP连接处于半关闭状态,即A向B的通信已关闭,但B向A的通信还开启

若B决定关闭连接,向A发送释放报文,并进入最后确认(LAST-ACK)状态;A收到B的报文后向B发送确认,B进入连接关闭(CLOSE)状态,A进入时间等待(TIME-WAIT)状态

A在等待了2MSL(REC793建议MSL设为2分钟)时间后进入连接关闭(CLOSE)状态。至此A与B的TCP连接完全释放

之所以要等待2MSL时间才关闭,是为了
1)A发送给B的最后一个确认报文到达B。如果B在LAST-ACK阶段超时没受到A的确认,则重传释放报文给A,此时处于TIME-WAIT状态的A可以重传确认报文
2)确保本次连接的所有报文都从网络消失

滑动窗口协议

为了保证可靠性传输,可以让发送端A每发送一个TCP报文,都等待接收端B的确认报文,如果超时没有收到确认就重发。但这样信道利用率(报文发送时间占整个通信耗时)很低。

TCP使用的滑动窗口方法是:发送端A一次性发送多个连续报文,接收端B对正确接收到的最后一个报文发送确认报文(TCP首部的确认号为B希望下次A发送的报文序号),A收到确认报文后将发送窗口向前移动,继续发送

如上图所示,因为接收端37、38、40没有按序收到,发回A的报文确认号为37,A相应的向前面滑动3个序号的数据报

TCP采用自适应算法确定超时重传:计算报文段的平均往返时间

TCP的阻塞控制

TCP阻塞控制有4种方法:慢开始、拥塞避免、快重传、快恢复,会在传输过程中不同阶段使用

1)慢开始
当主机开始发送数据时并不知道网络负荷情况,因此采用由小到大逐渐增大发送窗口的方式

2)拥塞避免
慢开始的窗口大小是成倍增长,当到一定程度后会进入拥塞避免算法。该阶段窗口增大的速度慢很多,是线性增长

3)快重传
假设接收者收到 M 1 M_1 M1 M 2 M_2 M2并发出了确认,但接下来收到的是 M 4 M_4 M4 M 5 M_5 M5,没收到 M 3 M_3 M3。快重传算法会要求接收者对 M 4 M_4 M4 M 5 M_5 M5及之后的数据都发送对 M 2 M_2 M2的重复确认。指示发送者立即重传

4)快恢复
当发生丢失个别报文段时,快恢复算法启动。该算法重新调整窗口大小并执行拥塞避免算法

以上是关于计算机网络运输层的主要内容,如果未能解决你的问题,请参考以下文章

计网网络层首部

计网网络层首部

IP分组

计算机网络—— 运输层:TCP报文段的首部格式

【网络协议笔记】第四层:传输层(Transport)TCP协议简介(1)

计算机网络湖科大微课堂笔记 p64-66 TCP的运输连接管理:TCP的连接建立与释放TCP报文段的首部格式