目录
UDP
UDP的主要特点
- UDP 是无连接的
- UDP 使用最多交付,即不保证可靠交付,同时也不使用拥塞控制
- UDP 是面向报文的。UDP没有拥塞控制,很适合多媒体的要求
- UDP 支持1对1、1对多、多对1和多对多的交互通信
- UDP 的头部开销小,只有 8个字节。
UDP的首部格式
UDP 的首部共20个字节,其中12个是伪首部(网络层的的一些数据)
检验和:需要伪首部和数据的校验。
TCP
传输控制协议 TCP
TCP 概述
- TCP是面向连接的传输协议
- 每条TCP连接只能有两个端点(endpoint),每条TCP连接只能是点对点的(1对1的)
- TCP提供可靠交付的服务
- TCP提供全双工通信
- 面向字节流 把文件从一个计算机传递到另一个计算机。(文件分成多段,先读到TCP缓存,然后从缓存里在分段读取发送。目标计算机拿到后先在缓存,然后从缓存拿到数据再进行组装成文件。每次读取都是面向字节的,读,存,取 ,发的数据大小没有关系。)
TCP的首部格式
序号: seq 指发送的数据段的第一个字节在整个文件里的字节的位置。eg: 1234 为一个数据段序号为1;56为一个数据段序号为5;……
确认号:ack 指收到数据包后给发送的计算机确认信息,确认下一个应该发送的数据包在文件里的字节;eg :1234收到后会给发送者下次该发5,确认号为5;56收到后会给发送者下次该发7,确认号为7;
数据偏移: 1个字节。中的一个1代表4个字节。最多15*4 = 60 ;60 - 20 = 40 ;选项中的可变长度最多为40字节。
保留 :无用
URG:优先标记位。发送的缓存里的优先级的指令,可以不在缓存里排队。
ACK:确认标记位。用于标记确认号有无效。1有效
SYN:同步时用到。发起会话的数据包。(发送和同意发送)1时为主动发起连接是数据包
PSH:同 URG 标记位。接收缓存里的优先级的指令,可以不在缓存里排队。
RST:异常中断。需重新连接
FIN:释放连接。
窗口:得到对方发送和接收时的缓存大小,进行同步
检验和:校验范围首部和数据两部分。同UDP的校验,协议号为7;
紧急指针:标记紧急数据的尾部位置。(从0 到标记)
TCP的连接
TCP 是点到点的通信(iP地址+端口 叫套接字socket)。
套接字socket = iP地址+端口 。
每条TCP连接唯一的被通信两端的两个端点(即两个套接字所确定) 即:TCP连接 = {socket1 ,socket2} = { (IP1:port1),(IP2:port2) }
TCP的主要特点
TCP如何实现可靠传输?
停止等待协议。没有收到回复就会再次发送重复数据。ARQ(自动重传机请求)。
优点:简单。缺点:信道利用率太低。
如和提高信道利用:
1、 流水线传输。发送方连续发送多个数据包,不等待收到回复后在发送后面的数据。利用发送窗口发送数据。
2、累计确认:确定连续收到包的最后一个数据加1(应该发送那个数据了)。
一 、以字节为单位的滑动窗口
丢失时会选择性确认,只发送丢失的数据段。
超时重传时间的选择。取平均往返时间,因为受到网速带宽的影响。
TCP 如何实现流量控制?
通过接收端告诉发送端发送窗口的大小来控制。
当接收端收到的数据快要充满缓存是,接收端会告诉发送方减缓发送。当处理完全时也会处理,告知快速发送。
TCP 如何避免网络拥塞?
发送方维护一个拥塞窗口。(开始慢的计算原则)
慢开始和拥塞避免算法(先是值数增长达到16后,在线性增长,丢包后回减少发包,减少到丢失前的一半)
快速重传:发现丢包后立即确认(发送三次),重传丢失的数据包。
快恢复:出现拥塞后不回复到指数增长前,回到线性增长位置
TCP的传输连接管理
传输的三个阶段: 建立连接、数据传输和连接释放。
TCP连接的建立都是采用客户服务方式。(客户端Client 主动连接服务器 server)
建立连接
三次握手
第三次确认:非同步信息了。为了防止服务器等待时间过长而造成的资源浪费。
三次握手建立TCP连接的状态
1、客户端发送请求连接后的状态为:SYN - SENT
2、服务接收到连接请求后然后发送收到的确认,然后的状态变更为SYN-RCVD。 (由LISTEN转变过来的).
3、客户端收到服务的请求后的状态后,再发送确认(非同步信息了),客户端的状态变为ESTAB -LISHED .
4、服务接收到客户端的再次请求后状态变更为ESTAB -LISHE;
都变成ESTAB -LISHE状态后,然后进行数据传输。
TCP的连接释放
客户端最后等待2MSL(4分钟):原因是如果最后一个包丢失,服务会一直处于LAST-ACK的状态。延迟等待后,当包丢失后服务再次发送是还可以响应。
参考 :《韩立刚老师主讲 计算机网络》视频笔记。仅供自己复习参考使用,如有问题欢迎指出