计算机网络Computer Networking(七、传输层复习(第一部分))

Apr 14, 2017


参考来源: 原创

多路复用 与 多路分解

  • 多路分解(demultiplexing): 将传输层报文段中的数据交付到正确的套接字。
  • 多路复用(multiplexing): 源主机从不同套接字中收集数据块,并为每个数据块封装上首部数据(为了方便分解。

图示:

image

即:

【原始socket数据】—-多路复用—-【传输层报文段】

【传输层报文段】—-多路分解——【原始socket数据】

TCP 和 UDP的区别

区别 TCP UDP
数据单位 报文段 报文段
是否连接
是否可靠
是否拥塞
包头 20字节 8字节
广播或多播

校验和

步骤:

  1. 原报文段加上IP数据报的伪首部,分成十六位十六位一个单位
  2. 初始将校验和字段全部归零
  3. 所有十六位的字段相加,溢出位加到末位
  4. 将最后结果按位取反

TCP报文段结构

image

其中最重要的概念是【序号】(seq)和【确认号】(ack)

序号(seq):表示发送过去的报文段要被接收方接受的序号

确认号(ack):表示发送发希望从接收方得到的报文段的序号

序号和确认号实例

image

分为三个步骤:

  1. 初始,用户->主机,序号为42,确认号79,表示主机从42开始接收数据,用户希望获得79
  2. 主机收到了序号42的数据,数据长度1,所以下一次希望收到43的数据,然后发给用户一个数据c,序号就应该是79,因为用户希望获得79的数据
  3. 用户收到了序号79的数据,数据长度1,所以下一次希望收到80的数据,于是确认号为80,发到主机43的位置,所以序号为43,确认号80

TCP的连接管理

连接建立:

image

连接中止:

image

都有着序列号+1和确认号+1的过程。