各层及作用https://blog.csdn.net/qq_26565861/article/details/80956960
https://blog.csdn.net/FanceFu/article/details/79357105
*数据链路层
数据链路层协议有多种,但有三个共同的基本问题:
(1)封装成帧:添加首部和尾部,进行帧定界;例如使用SOH、EOT作为首尾
(2)透明传输:若数据段中含有EOT,则会提前结束,使用字节填充的方法(在数据段中的EOT前添加ESC)
(3)差错控制:传输过程中会产生差错,为避免错误,需要进行差错检测措施:循环冗余检验。要做到可靠传输,还需要加上确认和重传机制。
**对于点对点的链路,使用最广泛的数据链路层协议是点对点协议PPP
(1)帧格式:
(FCS为帧校验序列,是一个循环冗余校验码)
(2)透明传输问题
当PPP用在同步传输链路时,协议规定采用硬件来完成比特填充:五个连1就添0
用在异步传输时,使用一种特殊的字符填充法
*网络层: 路径的选择、数据的转发。 源主机到目的主机之间分组的透明传输(之间可能经过很多节点)
IPV4 https://www.cnblogs.com/BrokenSwitch/p/8473472.html
IP分片https://www.cnblogs.com/glacierh/p/3653442.html
*运输层:为应用进程之间提供端到端的逻辑通信
**UDP
UDP协议特点:无连接(减少开销和时延);使用最大努力进行交付(不保证可靠交付,主机不需要维持复杂的连接状态);面向报文(不拆分也不合并,一次交付完整的报文);没有拥塞控制(对实时应用很重要);UDP 支持一对一、一对多、多对一和多对多的交互通信;首部开销小,8 个字节,小于TCP的24。
**TCP
*****TCP协议特点:面向连接;每一条TCP连接只能有两个端点;每一条TCP连接只能是一对一的;TCP提供可靠交付的服务;全双工通信;面向字节流,虽然应用程序和 TCP 的交互是一次一个数据块,但TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流;TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系;但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
*****TCP 连接的端点叫做套接字 (socket) 或插口。 套接字 socket = (IP地址 : 端口号)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP 连接 ::= {socket1, socket2}
= {(IP1: port1),(IP2: port2)}
*****TCP报文中为何要规定MSS(数据字段最大长度)? 若选择较小的MSS长度,网络利用率就不高。若过大,则IP层需要分片,IP分片会导致开销增大。
*****拥塞控制
出现拥塞原因:∑对资源需求 > 可用资源