OSI参考模型
<span style="background-color:#f8f8f8"><span style="color:#333333">应用层:程序的编译过程;人机交互的接口。
表示层:数据格式化--->二进制
会话层:维护网络应用和服务器之间的会话连接
传输层:用以标定和区分不同的应用程序;TCP、UDP(端口号)
网络层:IP协议、ICMP协议
数据链路层--->二进制转换为电信号;MAC地址
物理层:处理电信号、规定一些物理特性</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">ARP协议-----地址解析协议,使用某一种地址获取另一种地址的协议。
正向ARP---通过IP地址获取MAC地址----ARP缓存表(动态,180S)
反向ARP
免费ARP---自我介绍、冲突检测;原理:利用正向ARP的原理请求自己的IP地址。</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">以太网类型字段--->在解封装的过程中,根据该字段将数据交付给上层某个应用模块来处理。
0x0800--->IP协议
0x0806--->ARP协议
协议号
6--->TCP
17-->UDP
常见端口号
20/21--->FTP
22--->SSH
23--->Telnet
67/68--->DHCP
53--->DNS
80--->HTTP</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">DHCP协议---动态主机配置协议,C/S架构
客户端 服务端
广播包 Discover报文--->源IP:0.0.0.0;目IP:255.255.255.255;源端口:68;目端口:67;UDP;目MAC:F
单播包 Offer报文(携带服务器即将分配给PC的IP地址、掩码、网关、DNS等信息)--->源IP:服务器;目IP:即将分配给PC的IP地址;源MAC:服务器;目MAC:PC
广播包 Request报文(正式请求Offer报文中包含的IP地址)--->源IP:0.0.0.0;目IP:255.255.255.255;目MAC:F
单播包 ACK报文---></span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">交换机工作原理
1、自学习:基于收到的数据帧中的源MAC地址以及该接口编号,动态生成MAC地址表项,并记录在MAC地址表中。老化时间300S
2、查表:基于数据帧中的目的MAC地址,再MAC地址表中查找对应记录关系,若存在记录关系,则直接单播转发;若不存在,则进行洪泛操作(交换机将数据从除了进入的接口外的所有接口发送一遍数据)。
交换机的洪泛情况:
1、遇到未知单播数据帧
2、遇到广播帧或组播帧时--->01-00-5e-xx-xx-xx</span></span>
基于UDP/TCP的53号端口传输数据。UDP一般用于客户端与服务端之间的查询与响应过程。TCP用于主从服务器之间的数据传输过程。
DNS查询过程---->递归查询、迭代查询。
TCP协议——传输控制协议
是一种面向连接的可靠传输协议。可靠、有序、无丢弃和不重复。
特点:
-
TCP是面向连接(虚连接)的传输层协议
-
每一条TCP连接有且只能有两个端点。
-
可靠、有序、无丢弃和不重复。
-
TCP协议提供全双工通讯。
-
发送缓存
-
存放发送方TCP准备发送的数据。
-
TCP已发送但是没有收到确认的数据。
-
-
接收缓存
-
存放发送端发送来的不按照顺序到达的数据
-
按照顺序到达的数据,但并未被应用程序读取
-
-
-
TCP是面向字节流的。TCP将应用层数据仅看做是一串无结构的字节流。
<span style="background-color:#f8f8f8"><span style="color:#333333">TCP连接的四元组(源IP、源端口、目IP、目端口)--->唯一标识一条TCP连接。
套接字--->IP:port</span></span>
URG=1 紧急指针位有效(服务端优先执行)
RST:重新连接(连接成功后可能出现问题,需要重新连接)
<span style="background-color:#f8f8f8"><span style="color:#333333">MTU:最大传输单元--->以太网环境下1500字节--->数据包大小。
MSS:最大数据段长度</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">RTT--->往返时间(指发出端将数据发送后,到本端接收到对端反馈的确认报文的时间总和)
RTO--->超时重传时间
RTO取值略大于RTT值。
快速重传机制--->根据接收方的反馈信息进行数据重传。客户端需要连续接收到三次确认序列号相同的ACK报文,则认为数据丢失,需要进行数据重传。
快速重传机制会导致部分数据重复传输,降低数据传输效率。
解决思路:使用选择确认机制。--->在TCP首部的选项字段中,添加上未接收到的数据信息。发送方接收到该确认报文后,会根据选项字段内容,重新传输缺少的数据部分。
选择确认机制是否可以执行是需要通讯双方进行协商的。--->在三次握手的前两次SYN报文中进行协商。</span></span>
RTO数值是动态变化的数值。超时间隔加倍。
<span style="background-color:#f8f8f8"><span style="color:#333333">窗口:窗口的大小是可以指定的,窗口大小指的是无需等待确认报文,而可以直接发送的数据包的最大值。
rwnd(接收窗口)---最开始等于整个缓存区的大小,浮动变化。</span></span>
可靠性
1.确认机制:每接收到一个时间段,都需要进行一次确认
2.重传机制:超时重传,当一个数据段中的某个包丢失,会提示要求重新传输这个报文
3.排序机制:传输一个报文,可能会被分为多个数据包,并从不同的路径传输,最终到达目的地的顺序会被打乱,需要进行重新排序。——重新排序依靠TCP的序号字段
4.流控机制(滑动窗口机制):通过调节窗口大小来对流量进行控制。
窗口大小:指无需等待确认就可以连续发送的数据的最大量。
TCP为了保证自身的可靠性,具备重传机制,故不允许在网络层进行IP分片。而TCP会在传输层使用分段的方式将报文大小分割成满足网络层MTU数值的大小,以保证不会被网络层分片。
MSS(最大传输段)===MTU-IP头部-TCP头部
PMTU——路径MTU发现协议
<span style="background-color:#f8f8f8"><span style="color:#333333">在IP头部,DF字段设置为1,表示不能分片。
当接收方收到一个不能分片的报文时,会将该报文丢弃,并回复一个ICMP报文(告诉发出者,数据不可达,并表示)
发送方接收到该ICMP</span></span>
面向连接
1.三次握手
TCP连接的建立
<span style="background-color:#f8f8f8"><span style="color:#333333">TCP连接连接需要解决的问题:
1、知晓对端的套接字信息
2、允许双方进行参数的协商(窗口值、选择确认机制、是否使用窗口扩大因子)
3、对设备进行资源分配</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">当TCP连接建立成功,但是客户端突发故障。
此时服务端会等到2小时时间,若2小时时间内没有收到任何客户端的数据,则服务端发送一个探测报文,以后每隔75秒发送一次。若一连发送10次仍没有回复,则服务器认为客户端出现故障,关闭连接。</span></span>
2.四次挥手
TCP连接释放
<span style="background-color:#f8f8f8"><span style="color:#333333">1、TCP连接的释放实际上是在释放本地分配给TCP连接的资源
2、本地没有新的数据需要发送</span></span>
双方同时释放连接
MSL:一个数据报文在网络中传输的最大时间(2分钟)
TCP成功建立,服务端每75分钟向客户端发送报文,查看客户端是否存在问题。