跳转至

传输

20210808231312

20220103224646

  • MSS(Maximum Segment Size) 最大段长度
  • MTU(Maximum Transmission Unit) 最大传输单元

MTU = MSS + TCP首部(20B) + IP首部(20B) + 可选部分

以太网MTU一般默认为1500 Bytes,如果来自传输层的报文超过MTU,IP层则需要分片传输给MAC层。据此,需要设置一个合适的MSS,过大会导致IP分片传输,过小则网络利用率太低。

传输方式

全双工系统的带宽是半双工系统的两倍

网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量

  • 基带传输:信号源产生的原始电信号称为基带信号(数字信号),将数字数据0、1直接用两种不同的电压表示,然后送到线路上去传输。传输速率高,传输距离短。

  • 宽带传输:通过调制解调器将数字信号进行调制后形成模拟信号(特定带宽的音频信号),然后采用频分复用技术实现宽带传输,然后在接收端又将它解调回来的传输方式。

传输协议

传输层主要有两种协议:UDP、TCP

UDP跟IP一样,传输形式都是包,它只管转发数据,不需要建立连接,并不关心数据是否被送达,所以也不会关心数据被送达的顺序等等。可以一对多。

而TCP比较复杂,是以字节流(没头没尾)的形式分段且有序传输的,需要建立连接,遇到阻塞数据丢失等会重传。只能一对一。

所谓的建立连接,只是逻辑上的概念,本质是指客户端和服务端各自维护一定的数据结构(一种状态机),来记录和维护这个“连接”的状态。

如果说前三层协议建立了一座桥,则四层的TCP只是在桥的两端增加了记录审查人员,它只能努力保障自己这一层传输的可靠性,至于下层的桥是否牢固可靠,跟TCP无关。

UDP可以用在环境简单、需要多播,以及应用层自己控制传输的场景:

  • DHCP广播获取IP
  • VXLAN
  • QUIC(Quick UDP Internet Connections,快速 UDP 互联网连接)(由Google 提出)
  • 实时游戏
  • 很多直播应用,都基于 UDP 实现了自己的视频传输协议,因为基于TCP的直播协议RTMP在延迟较高时卡顿比较严重
  • IoT物联网通信协议 Thread(由Google 旗下的 Nest 建立 Thread Group推出)

20220103112203

端口号大小:2Bytes*8bit=16bit,所以取值范围为:1~65535(2^16,0和65536不使用),使用IP+端口号则可以一对一连接。

UDP头部只有源端口和目的端口,而TCP相对比较复杂

  • 源/目标端口号,应用程序会监听端口号,通过端口号来区分收/发程序
  • 序号,用于重发与控制顺序,保证可靠通信
  • 确认序号,为了确认是否丢包
  • 窗口大小,流量控制和阻塞控制
  • 校验和,用于校验信息是否在传输中出现损失
  • 状态标识位,连接维护

20210808234116

TCP三次握手

A:您好,我是 A。
B:您好 A,我是 B。
A:您好 B。

20210808234230

握手的目的:

  1. 建立连接,保证双方可以互相发送和接收数据(全双工)
  2. 互相确认对方数据片段的起始序号,为后续数据传输做准备

完全满足以上两点至少需要三次握手,同时恰好解决了重复链接的问题

为了防止冲突,起始序号并不能从1开始,起始序号要随着时间变化,每4微秒+1,每个连接都要有不同的序号。

TCP四次挥手

A:我完事了。
B:我知道了,我还没完事。
B:我也完事了。
A:我知道了。

20210808234244

经过“四次挥手”确保双方都知道且同意对方断开连接,然后移除为对方维护的数据结构和信息,对方之后发送的包也不会接收,直到再次连接。


最后更新: 2022-01-10