OSI模型的七层结构mysql
一、物理层:
二进传输
为启动、维护以及关闭物理链路定义了电气规范、机械规范、过程规范、和功能规范。
二、数据链路层:
访问介质:
定义如何格式化数据以便进行传输以及如何控制对网络的访问。
支持错误检测
三、网络层:
路由数据包
选择传递数据的最佳路径
支持逻辑寻址和路径选择
四、传输层:
确保数据传输的可靠性
创建、维护和终止虚拟电路
信息留空制来保障可靠性
五、会话层:
主机间通讯
创建、管理和终止在应用程序之间的会话
六、表示层:
数据表示:
确保接受系统能够读出该数据
格式化数据
构建数据
协商用于应用层的数据传输语法
提供加密
七、应用层:
网络进程访问应用层:
为应用程序进程(例如,电子邮件、文件传输和终端仿真)提供网络服务
提供用户身份验证
PDU:linux
PDU:Prtocol Data Unit,协议数据单元是指对等层次之间的数据单位
物理层的PDU是数据位bit
数据链路层的PDU是数据帧frame
网络层的PDU是数据包packet
传输层的PDU是数据段segment
其余更高层次的PDU是消息message
三种通信方式:redis
单播:unicast
广播:broadcast
主播:multicast
UTP交叉线T568A和T568B的线序算法
T568A:
绿白、绿、橙白、蓝、蓝白、橙、棕白、棕sql
T568B:
橙白、橙、绿白、 蓝、蓝白、绿、棕白、棕
Hub集线器缓存
Hub:多端口中继器
Hub并不记忆该信息包是由哪一个MAC地址发出,哪一个MAC地址在Hub的哪一个端口
Hub的特色:
共享带宽
半双工
以太网桥安全
交换式以太网的优点
扩展了网络带宽
分割了网络冲突域,使网络冲突被限制在最小的范围内
交换机做为更加智能的交换设备,可以提供更多用户所要求的功能:优先级、虚拟网7远程检测......
Hub和交换机服务器
集线器属于OSI的第一层物理层设备,而网桥属于OSI的第二层数据链路层设备
从工做方式来看,集线器是一种广播模式,全部端口在一个冲突域里面。网桥的能够经过端口隔离冲突
Hub是全部共享总线和共享带宽。网桥每一个端口占一个带宽
路由器网络
为了实现路由,路由器须要作下列事情:
分隔广播域
选择路由表中到达目标最好的路径
维护和检查路由信息
链接广域网
路由架构
路由:把一个数据包从一个设备发送到不一样网路里的另外一个设备上去。这些工做依靠路由器来玩成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成。
VLAN
分隔广播域
安全
灵活管理
VLAN=广播域=逻辑网络(Subnet)
分层的网络架构
核心层Core Layer
企业级应用快速转发
分布层Distribution Layer
广播域,路由,安全,远程接入,访问层汇聚
访问层AccessLayer
终端输入
TCP/IP协议栈
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通讯的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成本身的需求。因为咱们大部分时间都工做在应用层,下层的事情不用咱们操心;其次网络协议体系自己就很复杂庞大,入门门槛高,所以很难搞清楚TCP/IP的工做原理,通俗一点讲就是,一个主机的数据要通过哪些过程才能发送到对方的主机上。
应用层常见的网络协议及端口号
http80 https 443 ftp21 dnstcp53 udp53 tftp69 smtp25 pop3 110 imap143 telnet23 ssh22 mysql 3306
oracle 1521
sql server 1433
redis 6379
TCP特性
工做在传输层
面向链接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
有限状态机FSM:Finite State Machine
CLOSED 没有任何链接状态
LISTEN侦听状态,等待来自远方TCP端口的链接请求
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED在收到和发送一个链接请求后,等待对方确认
ESTABLISHED表明传输链接创建,双方进入数据传送状态
FIN-WAIT-1主动关闭,主机已发送关闭链接请求,等待对方确认
FIN-WAIT-2主动关闭,主机已收到对方关闭传输链接确认,等待对方发送关闭链接请求
TIME-WAIT完成双向传输链接关闭,等待全部分组消失
CLOSE-WAIT被动关闭,收到对方发来的关闭链接请求,并以确认
LAST-ACK被动关闭,等待最后一个关闭传输链接确认,并等待全部分组消失
CLOSING双方同时尝试关闭传输链接,等待对方确认
有限状态机
客户端先发送一个FIN给服务端,本身进入了FIN_WAIT_1状态,这时等待接受服务端的报文,该报文会有三种可能:
只有服务端的ACK
只有度无故的FIN
基于服务端的ACK,又有FIN
一、只收到服务器的ACK,客户端对进入FIN_WAIT_2状态,后续当收到服务端的FIN时,回应发送一个ACK,会进入到TIME_WAIT状态,这个状态会持续2MSL(TCP报文段在网络中的最大生存时间,RFC 1122标准的建议值是2min)。客户端等待2MSL,是为了当最后一个ACK丢失时,能够再发送一次。由于服务端在等待超时后会再发送一个FIN给客户端,进入客户端知道ACK已丢失
二、只有服务端的FIN时,回应一个ACK给服务端,进入CLOSING状态,而后接受到服务端的ACK时,进入TIME_WAIT状态
三、同时收到服务端的ACK和FIN,直接进入TIME_WAIT状态
客户端的典型状态转移
客户端经过connect系统调用主动与服务器创建链接connect系统调用首先给服务器发送一个同步报文段,使链接转移到SYN_SENT状态
此后connect系统调用可能由于以下两个缘由失败返回:
一、若是connect链接的目标端口不存在(未被任何进程监听),或者该端口仍被处于TIME_WAIT状态的链接所占用(见后文),则服务器将给客户端发送一个复位报文段,connect调用失败。
二、若是目标端口存在,但connect在超时时间内未收到服务器的确认报文段,则connect调用失败。
connect调用失败将使链接马上返回初始的CLOSED状态。若是客户端成功收到服务器的同步报文段和确认,则connect调用成功返回,链接转移至ESTABLISHED状态。
处于FIN_WAIT_2状态的客户端须要等待服务器发送结束报文段,才能转移至TIME_WAIT状态,不然它将一直停留在这个状态。若是不是为了在半关闭状态下继续接收数据,链接长时间地停留在FIN_WAIT_2状态并没有益处。链接停留在FIN_WAIT_2状态的状况可能发生在:客户端执行半关闭后未等服务器关闭链接就强行退出了。此时客户端链接由内核来接管,可称之为孤儿链接(和孤儿进程相似)
Linux为了防止孤儿链接长时间存留在内核中,定义了两个内核参数:
/proc/sys/net/ipv4/tcp_max_orphans指定内核能接管的孤儿链接数目
/proc/sys/net/ipv4/tcp_fin_timeout指定孤儿链接在内核中生存的时间
TCP超时重传
异常网络情况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务
TCP服务必须可以重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每一个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。若是超时时间内未收到接受方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略
与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管以前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定链接放弃前TCP最多能够执行的重传次数,默认值15(通常对应13~30Min)
拥塞控制
网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源。在,某个时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。这种状况就叫作拥塞
TCP为了提供=高网络利用率,下降丢包率啊,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制
TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:
慢启动(slow start)、拥塞避免(congestin avoidance)、快速重传(fastretransmit)和快速恢复(fast recovery).拥塞控制算法在linux下有多种实现,好比reno算法、vegas算法和cubic算法等。它们或者部分或者所有实现了上述四个部分
当前所使用的拥塞控制算法
/proc/sys/net/ipv4/tcp_congestion_control
UDP特性
工做在传输层提供不可靠的网络访问非面向链接协议有限的错误检查传输性能高无数据恢复特性