计算机网络——传输层 解决如何通信?
1.传输层概述
![在这里插入图片描述](https://img-blog.csdnimg.cn/a9da3383a3d34aa7908981b98575070e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/7db4d8bee3a74910be70ed9b1c4234c6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/90ead9dc7b7f4f0bafdd0036757f5b6f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/87a6516f556a42a9b76ee7f38f338d69.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/c30926dde6564805b084009f522bcd85.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d8a3d9b92c764966b158b93f36f835f6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/56b432d878e1451f99d1ec89dafa3ed3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.UDP协议概述
- UDP(User Datagram Protocol):用户数据报协议
- UDP是一个非常简单的协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/49de126e937f4293bdc5fc0594d26308.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/174182022143453db2fcec0bc10d24d4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.1.UDP协议头部
![在这里插入图片描述](https://img-blog.csdnimg.cn/81952568dc3347f98901e0073bfcf810.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2.UDP协议特点
- UDP是无连接的协议。不需要提前建立连接
- UDP不能保证可靠的交付数据,无法保证数据是否丢失
- UDP是面向报文传输的
- UDP没有拥塞控制
- UDP的首部开销很小
3.TCP协议详解
- TCP(Transmission Control Protocol):传输控制协议
- TCP协议是网络中非常复杂的一个协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/a1fddcec85564e9f877931b5c0bf9589.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.1TCP协议特点
- TCP是面向连接的协议
- TCP的一个连接有两端(点对点通信)
- TCP提供可靠的传输服务
- TCP协议提供全双工的通信
- TCP是面向字节流的协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/68a9cbc3a9d14261a583ea4868076d8d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.2.TCP协议首部
![在这里插入图片描述](https://img-blog.csdnimg.cn/6fc7fa6ca6bd4ee6a83865436f6f406b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 16源端口、16位目的端口:地址
头部固定:20字节
序号:
- 0~2^ 32 - 1
- 一个字节一个序号
- 数据首字节序号
![在这里插入图片描述](https://img-blog.csdnimg.cn/dc5c47ef52264c40b0f50ac10efb8f81.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 确认号: - 0~2^ 32 - 1
- 一个字节一个序号
- 期待收到数据的首字节序号
![在这里插入图片描述](https://img-blog.csdnimg.cn/21fe7af890134418aaf805061f5509f7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/979995bc8fac4df59bd801123cdb2fdb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 数据偏移:
占4位:0~15,单位为:32位字节
数据偏离首部的距离 ![在这里插入图片描述](https://img-blog.csdnimg.cn/49a2ae6c95834198905871bddd4ae9b4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) TCP标记:
占6位,每位各有不同的意义 ![在这里插入图片描述](https://img-blog.csdnimg.cn/993b2ee3429240c7af91c05fadef9884.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_11,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/f458fa89501a4c8aaf80acde123e9a97.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 窗口:
占16位:0~2^ 16 - 1
窗口指明允许对方发送的数据量
确认号:501, 窗口:1000, 从501到1500的数据都可以被接收
校验和
紧急指针:
- ? 紧急数据(URG = 1)
- ? 指定紧急数据在报文的位置
TCP选项:
? 最多40字节
? 支持协议未来的拓展
3.3.可靠传输的基本原理
3.3.1停止等待协议
![在这里插入图片描述](https://img-blog.csdnimg.cn/c50c26c4b30c4188bf8c126b3159108a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/6a59007bf0274d1fb2346a9b1a3cf06a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d6a0aa03e46b4fd3b978f34fc46d66fb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/4c11b70272d24476a4f244093f22c3dc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 停止等待协议是最简单的可靠传输协议
停止等待协议对信道的利用效率不高
3.3.2.连续ARQ协议
ARQ:自动重传请求 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a4bd10f0b21d46e5ba7477c6e1daf2a4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/cfc773015a444c1695201aeec67da26a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 累计确认前的都已经确认了。
3.4.TCP协议的可靠传输
- TCP的可靠传输基于连续ARQ协议
- TCP的滑动窗口以字节位单位
![在这里插入图片描述](https://img-blog.csdnimg.cn/17bfa510c16f463f863fe8174aaa1f78.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/597afc9b497441d8b0648ff3b83d99a8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/77de8ea464d64f29ad85c76530616e94.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/f1c885f3a3474c0987c95bc714db2b50.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 可靠传输的效率不高
选择重传:重传的是数据的边界
- 选择重传需要指定需要重传的字节
- 每一个字节都有唯一的32位序号
![在这里插入图片描述](https://img-blog.csdnimg.cn/fc07b7f29ef342a1a1afebd37c5ddd80.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.5.TCP协议的流量控制
- 流量控制指让发送方发送速率不要太快
- 流量控制是使用滑动窗口来实现的
![在这里插入图片描述](https://img-blog.csdnimg.cn/c55f96da50914e56b9f5bb05829802bc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5e1b9c0b948c490f866c8d322ea17f6e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e1521940e0004d4ba58e13a8a690e7a7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 发送方和接收方会一直等待,这时使用坚持定时器。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/612ba9b7926d4604bd1247563d1120f2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.6.TCP协议的拥塞控制
![在这里插入图片描述](https://img-blog.csdnimg.cn/5e4c5b96f6914781ba843d08091aa906.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
- 流量控制考虑点对点的通信量的控制
- 拥塞控制考虑整个网络,是全局性的考虑
- 报文超时则认为是拥塞
3.6.1.慢启动算法
- 由小到大逐渐增加发送数据量
- 每收到一个报文确认,增大一倍
1 2 4 8 16 指数增长 达到慢启动阈值16,启动拥塞避免算法
3.6.2.拥塞避免算法
- 维护一个拥塞窗口的变量。
- 只要网络不拥塞,就试探着拥塞窗口调大, 每次加1
1 2 4 8 16 慢启动阈值16
? 17 18 19 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6aa8540370e3402d929a20b9df86638e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.7.TCP连接的建立----三次握手
TCP标记: ![在这里插入图片描述](https://img-blog.csdnimg.cn/9e9da37030db4e72bbb67b4c052395b5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/67f8a051887d48b18a3184fac0f2a469.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 为什么发送方要发出第三个确认报文呢?(三次握手)
? 防止已经失效的连接请求报文传送到对方,引起错误。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7247759c6c4c4f2b86d9ca60c2bbab79.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/ed1a8273692e400aa39c2e07aa6bbdca.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
3.8.TCP的释放-----4次挥手
![在这里插入图片描述](https://img-blog.csdnimg.cn/5350ab1c5e0e4128888fa20b4d11d556.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) 等待计时器:等待2MSL,MSL(最长报文段寿命)
MSL建议设置为2分钟。
为什么需要等待2MSL?
- 确保发送方的ACK可以到达接收方,
- 一个报文没有确认
- MSL是报文最长寿命
- 2MSL时间内没有收到,则接收方会重发
- 确保当前连接的所有报文都已经过期
3.9套接字与套接字编程
- 使用端口(Port)来标记不同的网络进程
- 端口(Port)使用16比特位表示(0~65535)
{IP:Port}. ===>套接字(Socket)
- 套接字(Socket)是抽象概念,表示TCP连接的一端
- 通过套接字可以进行数据发送或接受
![在这里插入图片描述](https://img-blog.csdnimg.cn/b1f027c34316463596d09249b386e595.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) TCP由两个套接字组成
![在这里插入图片描述](https://img-blog.csdnimg.cn/a656e21eee6c442c858d482687039eb1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/3fe008a37a1e4038be9d5d769e057734.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/52ddfd88cf634d63bc94020f62abf6e9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAeXpoeXpoeXpod2h5eXk=,size_20,color_FFFFFF,t_70,g_se,x_16)
|