OSI七层参考模型
上三层-----控制层面
应用层------接收用户数据,人机交互的接口,将自然语言--->编码
表示层------将逻辑语言转换为机器语言
会话层-----针对传输的每一种数据建立一条连接(防止数据间相互干扰)
下四层-----数据层面
传输层-----区分流量,定义数据传输方式
网络层-----通过IP地址进行逻辑寻址
数据链路层-----介质访问控制--MAC;逻辑链路控制层---LLC
物理层----定义一些物理特性,传播比特流
ARP协议----地址解析协议
正向ARP:根据已知的目标IP地址获取目标MAC地址
ARP缓存表--->通过ARP协议获取到的信息为动态信息。180S
反向ARP:根据已知的目标MAC地址获取目标IP地址
免费ARP:1.自我介绍;2.地址的冲突检测;一般是在DHCP获取到IP地址后使用。
TCP协议-----一种面向连接的可靠性协议
++可靠、有序、无丢失和无重复++
确认机制:传输确认,每接收到一个数据段,都需要进行一次确认
重传机制:超时重传,当一个数据段中的某个包丢失,会提示要求重新传输这个报文
**排序机制:**传输一个报文,可能会被分为多个数据包,并从不同路径传输,最终到达目的地的顺序会被打乱,需要进行重新排序。依靠TCP的序号字段
流控机制(滑动窗口机制):通过调节窗口大小来对流量进行控制。
窗口大小:指无需等待确认就可以连续发送的数据的最大量。
TCP是提供全双工通讯
- 发送缓存
- 想要发送的应用层数据
- 已经发送但未收到确认的数据
- 接收缓存
- 按需到达但还未被应用程序提取的数据
- 乱序到达的数据
超时重传---快速重传
在快速重传机制中,并不是因为RTO时间到达从而触发重传机制,该重传机制是根据对端的反馈信息进行重传,当连续3三收到相同的ACK报文时,发送端会重传数据。这3个连续的ACK报文被称为冗余ACK。
面向连接
一:三次握手(建立通道)
A给B发信息,需要先建立通道,A给B发送TCP报文,目的是告诉B我想和你建立连接,SYN=1,代表这个报文是请求连接的报文,seq为序列号,每一个TCP报文都有,假设为X,是随机生成的,B给A回复确认报文,有ACK,标志位=1,有Ackeq=x+1,因为没有数据交互所以只+1,不加数据,此时B收到报文后不需要用确认报文回复。此时AB建立单向连接,A可以给B主动发送消息,B不可以给A 发送消息,但是数据收发是一个双向过程,B给A发送一个请求报文,SYN=1 seq=y(序列号),此时序列号与B的确认报文相同,序列号相同,是因为B认为A 没有发送报文的原因是数据丢失。A同意建立连接,发送报文,ACK=1(标志位) Ackeq=y+1(确认序列号),seq=x+1,建立双向连接。
二:四次挥手(删除通道)
数据交互完毕,A给B发送消息,表示我要断开连接。此时标记位FIN=1,seq=u(不是随机数),B回复确认,此时ACK=1,Ackeq=u+1,seq=v,此时对于A连接断开,B给A 发送报文,FIN=1,seq=w(不是随机),Ackeq=u+1,(确认序列号),再次发送这两个参数是为了防止上次发送时丢失,A给B发送确认报文ACK=1,Ackeq=w+1,序列号seq=u+1,由上个确认序列号决定。此时双向连接断开。u和w根据传输的数值决定