网络的基础
网络的重要性
互联网时代,网络非常的发达,网络无处不在
各种操作系统都支持相同的网络标准
linux运维的职业生涯50%网络故障,都来源于网络
osi 7层模型
物理层:把通信介质的信号装换成数字信号(二进制)
通信介质
双绞线:转换电信号
wifi:转换电磁波
数据链接层:有mac地址(唯一),通过交换机实现设备和设备之间的相互通讯
网络层:IP地址(定位),路由(指路)
公网IP:全世界唯一,定位,可以满足两台设备在世界任何位置都能相互通讯
私网IP:局部唯一(解决公网IP不够用的情况,可以让多个设备共用一个公网IP上网)
路由:指定数据包的下一站该怎么走
传输层:控制数据包的传输速度和可靠性,应用程序端口
TCP协议:速度慢,可靠性高 (每传输一个数据包都需要确认是否收到,适合容易丢包的场景且特别重要的数据)
UDP协议:速度快,可靠性差 (每传输一个数据包,不需要确认,适合局域网)
端口:多个程序同时进行通讯,使主机可以区分不同的网络服务 (客户端端口是临时随机不唯一的,这样可以打开多个客户端,安全,服务端的端口在同一台设备上是唯一的)
会话层:每一个链接会创建一个会话
表示层:表示文件的类型,用正确的方式打开文件
应用层:应用程序,最终我们需要传输的数据
程序和程序之间通信用的是协议,所有协议都是基于osi 7层模型来设计
数据封装,解封装,数据传输过程
TCP/IP协议 (协议类似发电报用到的密码本,双方都要遵守的一种约定)
运维只关注传输层 TCP协议
tcp的标识:
SYN:建立链接
ACK:回应标识
FIN:断开链接
PSH:数据包
URG:紧急指针
RST:重置(重传)
传数据之前需要三次握手,保证网络畅通
先需要了解网络传输的方式: 单工(发送方只能发,接收方只能收,收音机广播)
半双工(双方都可以作为发送方和接收方,但不能同时进行,对讲机,WiFi,无线)
全双工 (同时收发,双绞线网络)
在网络中,谁先发起数据包传输请求谁就是客户端
三次握手,发测试包,查看网络是否畅通,每个数据包有个标识
客户端发送第一个SYN标识数据包(随机序列号SEQ=x)给服务器端,进入SYN_SEND状态。
服务器端收到SYN数据包,回应一个SYN,ACK标识(SEQ=y,确认序列号ACK=x+1)报文,进入SYN_RECV状态。
客户端收到服务器端的SYN报文,回应一个ACK(SEQ=x+1,ACK=y+1)报文,进入Established状态。
传数据后需要四次挥手,保证数据传输完成
客户端发送一个fin,ack标识数据包(SEQ=j,ack=k)给服务器端
服务器端收到数据包,回应一个ack标识(SEQ=k,ACK=j+1)报文,
等待数据传输完成,再发送fin,ack标识(seq=k,ack=j+1)
客户端只需要回应一个ACK(SEQ=J+1,ACK=K+1)数据包