计算机网络(三)之传输层
2022-03-27 本文已影响0人
ThunderChen
传输层概述

传输层:端到端的传输。

端口
- 使用端口(port)来标记不同的网络进程
-
端口(port)使用16比特位表示(0~65535)
例如:
端口示例
传输层协议TCP/UDP:

UDP协议详解
- UDP(User Datagram Protocol:用户数据包协议)
-
UDP是一个非常简单的协议
特点:不合并,不拆分。UPD的大小有数据包(Datagram)的长度所决定。
图解:
UDP组成

16位源端口号:源机器使用网络的进程
16位目的端口号:目的机器正在使用网络的进程
16位UDP长度:UDP数据报的长度(包含UDP数据),最小值是8个字节
16位UPD的校验和:略
UDP的特点
- UDP是
无连接
的协议,A向B发送数据不需要建立链接。 - UDP
不能保证可靠的交付数据
,“想发就发”,无法保证数据在网络中是否丢失 - UDP是
面向报文
传输的,不会对报文进行任何处理,直接发送 - UDP没有
拥塞控制
- UDP的首部
开销很小
TCP协议详解
- TCP(Transmission Control Protocol:传输控制协议)
-
TCP协议是计算机网络中非常复杂的一个协议
图解:
- TCP是
面向链接
的协议 - TCP的一个连接有两端(
点对点通信
) - TCP
提供可靠
的传输服务 - TCP协议提供
全双工
的通信(同时接受/发送) - TCP是面向
字节流
的协议
TCP组成

- 序号
- 0~2^32-1个比特位
- 一个字节一个序号
- 数据首字节序号
- 确认号
- 0~2^32-1个比特位
- 一个字节一个序号
-
期望收到数据的首字节序号
(如下图601)
总结: 确认号为N:则表示N-1序号的数据都已经收到
- 数据偏移
- 占4位: 0~15,单位为:32位字
-
数据偏移首部的距离
- TCP标记
-
占6位,每位各有不用意义
6位图解:
- 窗口
- 占16位: 0~2^16-1
- 窗口指明允许对方发送的数据量,如果窗口是1000,指明发送的大小为1000字节.
-
校验和
略 - 紧急指针
- 紧急数据(URG = 1)
- 指定紧急数据在报文的位置
- TCP选项
- 最多40字节
- 支持未来的拓展
可靠传输的基本原理
停止等待协议
无差错情况

TCP的三次握手


为什么要发出第三个确认报文呢?
-
避免已经失效的丽连接请求报文传送到对方,引起错误
TCP的四次挥手 / TCP链接释放

Time-wait

为什么需要等待2MSL

