文章目录
参考的博客
书籍:计算机网络(第8版)谢希仁
TCP与UDP所在的传输层
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。
TCP与UDP区别
TCP | UDP | |
---|---|---|
客户端服务端是否连接 | 连接 | 无连接 |
资源消耗 | 较多20+ | 较少8+ |
结构 | 复杂 | 简单 |
数据模式 | 字节流 | 数据报 |
可靠性 | 可靠(数据正确) | 不可靠(丢包) |
数据顺序 | 保证顺序 | 不保证顺序 |
通讯模式 | 全双工通信 一对一 | 可多对多 |
- 基于连接与无连接;
- 对系统资源的要求(TCP较多,UDP少);
- UDP程序结构较简单;
- 流模式与数据报模式 ;
- TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
TCP 传输控制协议
特点
- 面向连接
一对一的连接,保证信息的可靠性与顺序 - 全双工通信
支持连接双方同时读写 - 面向字节流
首部
- 序号[32位]: 用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
- 确认号[32位]: 期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
- 数据偏移[4位]: 指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。最大为
16*4=60
字节 - 控制位[8位]: 八位从左到右分别是 CWR,ECE,URG,ACK,PSH,RST,SYN,FIN。
- CWR: CWR 标志与后面的 ECE 标志都用于 IP 首部的 ECN 字段,ECE 标志为 1 时,则通知对方已将拥塞窗口缩小;
- ECE: 若其值为 1 则会通知对方,从对方到这边的网络有阻塞。在收到数据包的 IP 首部中 ECN 为 1 时将 TCP 首部中的 ECE 设为 1;