计算机网络之传输层

1、作用

计算机网络体系结构中的物理层、数据链路层和网络层,它们共同解决了将主机通过异构⽹络互联起来所⾯临的问题,实现了主机到主机的通信。

如何为运行在不同主机上的应用进程提供直接的逻辑通信服务,就是传输层的主要任务,传输层协议⼜称为端到端协议。

传输层提供了"端⼝"的概念,⽤来区分不同应⽤进程的标识符。

2、TCP/IP运输层中的两个重要协议

2.1、TCP

  • 传输控制协议(TCP)为其上层提供的是⾯向连接的可靠的数据传输服务
  • 使用TCP通信的双方,在传送数据之前必须首先建立TCP连接(逻辑连接,而⾮物理连接)。数据传输结束后必须要释放TCP连接
  • TCP为了实现可靠传输,就必须使⽤很多措施,例如TCP连接管理、确认机制、超时重传、流量控制以及拥塞控制等
  • TCP的实现复杂,TCP报文段的首部比较⼤,占用处理机资源比较多

2.2、UDP

  • ⽤户数据报协议(UDP)为其上层提供的是⽆连接的不可靠的数据传输服务
  • 使⽤UDP通信的双方,在传送数据之前不需要建立连接
  • UDP不需要实现可靠传输,因此不需要使⽤实现可靠传输的各种机制
  • UDP的实现简单,UDP⽤户数据报的首部比较小

2.3、传输层端口号

运行在计算机上的进程是使用**进程标识符(PID)**来标识的。

TCP/IP体系结构的运输层使用端口号来标识和区分应用层的不同应用进程,端口号的长度为16比特。

端口号的分类:分为两种

  1. 服务器端使用的端口号:熟知端口号和登记端口号
  2. 客户端使用的端口号:短暂端口号---仅在客户端使用,由客户进程在运行时动态选择,通信结束后回被系统收回,以便于给其他客户进程使用

TCP和UDP的端口号之间是没有关系的,他们是独立的。

2.4、TCP和UDP的对比

TCP UDP
连接性 单面向连接 无连接
传输速率
资源消耗
应用场景 浏览器,文件传输,邮件发送 音视频通话、直播
应用层协议 HTTP、HTTPS 、FTP、SMTP、DNS DNS

3、TCP可靠传输

3.1、停止等待ARQ协议

ARQ--->自动重传请求

3.2、连续ARQ协议+滑动窗口协议

滑动窗口是流量控制机制,连续 ARQ 是差错恢复机制,二者绑定使用,用来解决发太快收不下传错 / 丢包 问题。

3.3、选择性确认(SACK)

SACK 就是 TCP 的选择性确认 ,让接收方告诉发送方:我收到了哪些不连续的块,你只重传缺口就行,别瞎重传后面已经到了的包。

优点

  1. 只重传真正丢失的段,减少无效重传,节省带宽
  2. 高丢包、长距离链路(如 4G/5G、跨境)吞吐明显提升
  3. 不破坏原有累积 ACK

4、TCP流量控制

流量控制(Flow Control)机制:以解决因发送方发送数据太快而导致接收方来不及接收,造成接收方的接收缓存溢出的问题。

流量控制的基本方法:接收方根据自己的接收能力(接收缓存的可用空间大小),控制发送方的放松速率。

  • 通过确认报文中窗口字段来控制发送方的发送速率
  • 发送方的发送窗口大小不能超过接收方给出的窗口大小
  • 当发送方收到接收方窗口为0时,停止发送数据

5、TCP拥塞控制

拥塞 :在某一段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。计算机网络中的链路容量(带宽)、交换节点中的缓存和处理机等都是网络的资源

  • 拥塞控制是一个全局性的过程
  • 流量控制是点对点通信的控制

5.1、拥塞控制的常用算法

慢开始:指数增,试探网络,到门限转拥塞避免

拥塞避免:传线性增,平稳运行

快速重传:3 个重复 ACK 就重传,不等超时

快速恢复:丢包后门限减半,拥塞窗口等于新门限,直接进拥塞避免

cwnd:拥塞窗口、rwnd:接收窗口、swnd:发送窗口

6、TCP建立连接和释放连接

6.1、三次握手

核心目的 :双方确认自身、对方收发能力都正常,协商初始序列号,同步连接信息,防止失效旧连接报文混入新连接。

流程(分步讲解)

  • 第一次握手:客户端 → 服务端
    客户端主动发起连接,报文:SYN=1,携带客户端初始序号 seq=x
    含义:我想和你建立连接,这是我的初始序号
    客户端进入 SYN_SENT 状态。
  • 第二次握手:服务端 → 客户端
    服务端收到请求,回复报文:SYN=1,ACK=1
    确认号 ack = x+1(收到客户端序号 x,确认收到)
    携带服务端初始序号 seq=y
    含义:我收到你的请求,同意建连;这是我的初始序号
    服务端进入 SYN_RCVD 状态。
  • 第三次握手:客户端 → 服务端
    客户端收到回复,发送报文:ACK=1,ack = y+1,seq=x+1

含义:我收到你的确认,连接正式就绪

客户端收到后 → 进入 ESTABLISHED(已连接)

服务端收到该报文后 → 也进入 ESTABLISHED

至此,双向连接建立完成,开始传输数据。

6.2、四次握手

TCP 全双工,一方关闭发送通道,不代表另一方也要立刻关闭,因此需要四次交互。

场景:客户端主动关闭连接。

流程

  • 第一次挥手:客户端 → 服务端
    客户端数据发完,请求断连:FIN=1,seq=u
    含义:我不再发数据了,请求关闭我方发送通道
    客户端进入 FIN_WAIT_1。
  • 第二次挥手:服务端 → 客户端
    服务端回复确认:ACK=1,ack=u+1,seq=v
    含义:收到你的关闭请求
    此时状态:客户端发通道关闭,收通道仍可用;服务端可继续向客户端发剩余数据,客户端进入 FIN_WAIT_2;服务端进入 CLOSE_WAIT
    重点:这一步只确认关闭请求,服务端不会立刻发 FIN,因为可能还有数据要传。
  • 第三次挥手:服务端 → 客户端
    服务端所有数据发送完毕,主动请求关闭自己的发送通道:
    FIN=1,ACK=1,seq=w,ack=u+1
    含义:我数据也发完了,现在请求关闭连接
    服务端进入 LAST_ACK。
  • 第四次挥手:客户端 → 服务端
    客户端回复确认:ACK=1,ack=w+1,seq=u+1
    含义:收到,连接可以彻底关闭
    客户端发送后,进入 TIME_WAIT(关键状态,等待 2MSL)
    服务端收到 ACK → 立即进入 CLOSED,断开连接
    客户端等待 2MSL 时长,确保服务端收到最后一个 ACK、网络残留报文全部消散,再进入 CLOSED
相关推荐
梁辰兴6 分钟前
计算机网络基础:在 P2P 对等方中搜索对象
网络·计算机网络·计算机·p2p·计算机网络基础·梁辰兴
JZZC217 分钟前
第1章 计算机网络概论-其他
计算机网络
爱讲故事的23 分钟前
计算机网络第四章复习:网络层 Data Plane 数据平面
网络·计算机网络·平面
梁辰兴27 分钟前
计算机网络基础:计算机网络面临的安全性威胁
网络·计算机网络·计算机·计算机网络基础·梁辰兴
liulilittle15 小时前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信
FlechazoCLF16 小时前
以太网之从输入网址到网页显示保姆级教程
计算机网络
艾莉丝努力练剑1 天前
【Linux网络】数据链路层协议(二):ARP协议
linux·运维·服务器·网络·计算机网络·udp
梁辰兴1 天前
计算机网络基础:P2P 文件分发的分析
网络·计算机网络·计算机·p2p·计算机网络基础·梁辰兴·文件分发分析
爱讲故事的1 天前
计算机网络第 5 章复习:Network Layer Control Plane(网络层控制平面)
网络·计算机网络·平面
梁辰兴1 天前
计算机网络基础:具有全分布式结构的 P2P 文件共享程序
网络·分布式·计算机网络·p2p·计算机网络基础·梁辰兴·文件共享程序