跳转至

计算机网络5:运输层

本页统计信息
  • 本页约 1809 个字, 预计阅读时间 6 分钟。

  • 本页总阅读量

Chapter 6:Transmission Layer

6.1 运输层的作用

  • 运输层向上面的应用层提供通信服务,是用户功能中的最底层,也属于面向通信部分的最高层
  • 通信的真正端点并不是主机而是主机中的进程,也就是说端到端的通信是应用进程之间的通信
  • 运输层的重要功能是复用和分用
    • 复用是指发送方不同的进程都可以用同一个传输层协议传输数据
    • 分用是接收方的运输层在处理报文之后可以把数据交付给正确的进程
    • 也就是说运输层提供了运输层之间的逻辑通信,而网络层是为主机提供了逻辑通信
  • 运输层的两个重要的运输协议是面向连接的TCP和无连接的UDP

6.2 运输层的协议

  • TCP和UDP协议
  • UDP的全称是用户数据报协议,TCP的全称是传输控制协议
  • 两个peer在通信时候传送的数据单位叫做运输协议数据单元 TPDU,但是在TCP/IP体系中,TCP传输的被称为TCP报文段,UDP传输的被称为UDP用户数据报
  • TCP提供的是面向连接的服务,在传输之前必须先建立连接,传输结束之后需要释放连接,并且不提供多播和广播的服务,SMTP、HTTP、FTP等应用层协议用的是TCP
  • UDP则是无连接的协议,远程的主机的运输层在收到UDP之后,不需要给出任何的确认
  • 端口:
  • 传输层的端口指的是软件端口,指的是应用层的各种协议进程和运输实体层之间进行交互的一种地址
  • TCP/IP的运输层用16位的端口号,最多支持65535个不同的端口,这里的端口号是一种虚拟端口
  • 也叫做传输服务访问点TSAP
  • 已经分配的一些端口号:
    • 20/21 FTP
    • 22 SSH
    • 25 STMP
  • 协议的要素:
  • 寻址:建立通信的时候指定连接到哪个应用进程上面,用一个端口映射器的进程来处理端口和服务的映射关系
  • 连接建立:拥有建立连接的一套算法,最常见的就是三次握手
  • 连接的释放:非对称释放和对称释放,非对称释放类似于挂电话,对称释放是两段建立的连接都释放
  • 差错控制和流量控制:使用动态缓冲区,对于低带宽的突发流量可以不设置缓冲区,对于文件传输和高带宽流量需要使用缓冲区
  • 多路复用:到达的数据报段必须用某种方式告知把它交给哪个进程处理。“逆向多路复用”
  • 崩溃恢复:在路由器或者主机崩溃的时候重新发送

6.3 用户数据报协议 UDP

  • 用户数据报协议UDP只在IP协议上面增加了复用和分用的功能,其主要特点是:
  • 无连接,即发送数据不需要建立连接,减小了开销和延迟
  • 尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态
  • 面向报文:一次交付一个报文,对应用层的报文既不合并也不拆分,而是保留这些报文的边界
  • 没有拥塞控制,因此网络中出现的拥塞不会导致主机的发送速率降低,允许拥塞时候丢数据但是不允许数据有太大的延迟
    • 可能会引发网络的严重拥堵
  • 支持一对一、一对多、多对多的交互通信
  • header开销小,只有8个字节

6.4 应用

  • 实时传输
  • 实时传输协议RTP
  • 实时传输控制协议RTCP
  • 防抖动和缓冲的播放

6.4 传输控制协议TCP与socket

  • TCP是一个非常复杂的传输层协议,其特点是:

  • 面向连接:使用之前必须建立连接,使用完之后必须释放

  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
  • 可靠交付,用TCP协议传输的数据无差错、不丢失、不重复并且按顺序到达
  • 提供全双工通信,用缓存来存放双向通信的数据
  • 面向字节流:将应用层传下来的数据看成无结构的数据流

  • TCP的连接:

  • 连接是TCP最基本的抽象,每条TCP的连接都有两个端点,成为socket(套接字)

  • IP地址+端口号就可以构成一个socket,每条TCP连接由两个socket来确定,一个IP地址可以有多个套接字
  • berkerley socket是在操作系统内核中实现的socket封装库,提供如下操作

image-20201112144634224 - TCP段的头 - TCP每个段的起始部分是固定格式的20字节的头部,而IP头也有20个字节,因此数据段的最大长度是65535-20-20=65495 - 源端口和目标端口字段表示了连接的本地端点,各占2字节,TCP端口+IP头中的IP地址组成了48位的唯一端点 - 序号和确认好都是4字节,确认号制定的是下一个期待的字节,而不是已经正确接收到的最后1字节 - TCP的头长度表明了TCP头包含几个32位的字,因为后面的选项option是变长的,实际上指明了数据段的起始地址,接着有四位空位 - 8个1bit的标志位,有CWR、ECE、URG、ACK、PSH、RST、SYN、FIN - 窗口大小、校验和、紧急指针的长度都是1字节 - 窗口大小指定了滑动窗口的大小,表明从被确认的字节算起可以发送多少个字节,可以是0 - 选项字段提供了一种添加额外设施的途径,主要针对常规头覆盖不到的方面,长度必须是32的倍数

  • TCP连接的建立:三次握手,即发送请求、收到确认、确认收到确认三个步骤
  • TCP的滑动窗口
  • TCP协议的窗口管理方式是将正确接收段和确认和接受段的接受缓冲区分配分开的
  • 当窗口变成0的时候,发送端不能像往常一样发送数据段了,有两种处理办法:一种是杀死进程来存储紧急的数据,或者发送窗口探测的长度为1字节的段,以便强制接受段重新宣告下一个期望的字节的窗口大小,可以放置窗口更新之后死锁

  • TCP的拥塞控制

  • TCP维持了一个拥塞窗口,窗口的大小是任何时候发送端可以往网络中发送的字节数,相应的速率则是窗口大小/连接的往返时间,TCP根据AIMD规则来调整窗口的大小
  • 东西太多了,讲不完,回去看xxr教材

颜色主题调整

评论区~

有用的话请给我个star或者follow我的账号!! 非常感谢!!
快来跟我聊天~