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---通过MAC地址获取IP地址
免费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
应用层三大协议DNS HTTP(传输层用TCP协议) FTP</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">DHCP协议---动态1主机配置协议,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:
广播包 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>
<span style="background-color:#f8f8f8"><span style="color:#333333">www.baidu.com ---域名
URL(资源定位符):http://www.baidu.com:80/news/index.html</span></span>
DNS服务---域名解析服务
<span style="background-color:#f8f8f8"><span style="color:#333333">目的:通过域名获取到相应IP地址。
域名分级:
www.baidu.com.
从后往前进行分级,根,顶级,一级,二级</span></span>
基于UDP/TCP的53号端口传输数据
超过512字节用TCP,TCP消耗资源多,速度慢;而UDP消耗资源少,速度快
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>
确认序列号:接收方期望收到发送方发送的下一给字节的序号。
1.接收方希望接收到的报文序号;2.该序号之前的数据以全部接收。----累积确认机制
选项字段:长度可变。MSS数值(最大传输段)、窗口扩大因子、时间戳、选择确认机制。
<span style="background-color:#f8f8f8"><span style="color:#333333">确认位:ACK;当ACK=1时,确认号有意义。在连接建立以后,所有传输的报文段都必须将该标志位置为1.
同步位SYN:SYN=1时,代表该数据段是一个连接请求报文。
终止位FIN:当FIN=1时,代表此报文段发送方数据已发送完毕,要求释放连接。
复位RST:表面TCP连接出现严重错误,需要释放连接并重新建立连接。
紧急位URG:代表该报文中存在高优先级的数据,应尽快处理应配合紧急指针使用。
推送位PSH:接收方应尽快将接收到的数据交付给对应应用程序。</span></span>
TCP的可靠性
-
确认机制----传输确认,每接收到一个数据段,都需要进行一次确认
-
重传机制----超时重传,当一个数据段中的某一个包丢失,会提示要求重新传输这个报文
-
排序机制----传输一个报文,可能会被分为多个数据包,并从不同路径传输,最终达到目的地的顺序会被打乱,需要进行重新排序。----重新排序依靠TCP的序号字段
-
流控机制(滑动窗口机制):通过调节窗口大小来对流量进行控制。
-
窗口大小:指无需等待确认就可以连续发送的数据的最大量。
<span style="background-color:#f8f8f8"><span style="color:#333333">MTU:最大传输单元----以太网环境下1500字节---数据包大小。
MSS:最大数据段长度
MSS(最大传输段)= MTU-IP头部-TCP头部</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>
TCP要求发送方依据rwnd发送数据量。发送方的发送窗口大小是依据接收方的反馈信息中的接收窗口大小而设定的。
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小时时间,若小时时间内没有收到任何客户端的数据,则服务端发送一个探测报文,以后每隔75秒发送一次若一连内10发送都未得到回应则服务端认为客户端出现故障断开连接。</span></span>
TCP连接释放
<span style="background-color:#f8f8f8"><span style="color:#333333">1、TCP连接的释放实际上是在释放本地分配给TCP连接的资源
2、本地没有新的数据需要发送</span></span>
双方同时释放连接