5. 网络
5.1 OSI七层协议
OSI七层协议分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- 物理层是我们传输信息的一些介质,比如双绞线、网线等
- 数据链路层是对数据传输最基本的协议,比如数据传输的0和1按照什么方式进行理解,传输机制是全双工还是半双工
- 网络层是定义IP的选址,和一些路由的规则,怎么讲信息发送给网络上另外的机器
- 传输层能够建立端到端的连接,进行数据的传输和理解
- 上三层可以统一理解为应用层,有封装的很多种传输协议
5.2 IP/ICMP
每一台连接网络的计算机都有一个唯一的IP地址,多台计算机交互的时候根据IP地址确认,相互传输的IP数据报的消息,IP协议是不可靠的,ICMP是辅助IP的一种协议,用来为IP数据报做差错检测。
5.3 UDP
UDP是一种无连接的传输层协议,其实UDP就是在IP的基础上增加了一些类似差错检测的基本功能而封装的,A发送给B端UDP的数据包,并不能了解B是否获得,如果传输的代价低而且对准确性的要求不高可以用UDP。
常见的UDP协议:DNS
5.4 TCP
TCP是面向连接的协议,在连接和释放的时候会进行三次握手和四次挥手来确保成功的创建和释放,在数据传输的时候用滑动窗口协议和一些相关的算法保证数据送达的效率。
5.5 三次握手
- 客户端和服务端打开连接,服务端进入监听模式Listen
- 客户端向服务端发送消息,SYN=1,ACK=0,seq=x(本次服务开始的初始序号),进入SYN-SENT
- 服务端接收到消息,向客户端发送SYN=1,ACK=1,seq=y(服务端初始序号),ack=x+1(表示希望客户端下一个从x+1开始发送),进入SYN-RCVD
- 客户端接受到回执,向服务端再发送SYN=1,ACK=1,seq=x+1(开始发送x+1),ack=y+1(希望对方下一个发送y+1),进入完成状态
- 服务端收到消息也进入完成状态
5.6 四次挥手
- 客户端先进入关闭状态,发送请求FIN=1,ACK=0,seq=u(u-1是最后发送给服务端的序号),状态变为FIN-WAIT1
- 服务端接收到请求,通知响应的服务即将关闭,也进入关闭状态,发送FIN=0,ACK=1,seq=w(服务端向客户端发送的最后一个序号),ack=u+1,进入CLOSE-WAIT状态等待其他服务的关闭
- 其他服务关闭后,且客户端没有重发请求,服务端再次发送一条,FIN=1,ACK=1,seq=v,ack=u+1,进入LAST-ACK状态
- 客户端接受到消息之后,会发送一条消息FIN=0,ACK=1,seq=u+1,ack&#