OSI 七层网络模型
OSI 七层模型各层级所对应的协议和设备
OSI 七层模型中常用的物理设备
物理层:网卡,网线,集线器,中继器,调制解调器
数据链路层:网桥,交换机
网络层:路由器
TCP/IP 四层网络模型与 OSI 七层网络模型对应关系
TCP/IP 四层网络模型各层常见协议和设备
应用层:Telnet、FTP、SMTP、DNS、HTTP 以及其他应用协议
传输层:TCP、UDP
网络层:IP、ARP(IP -> MAC 转换)、RARP(MAC -> IP 转换)、ICMP(ping 命令),对应设备路由器
网络接口:各种通信网络/物理接口(以太网等),对应设备网线、网桥、集线器、交换机
TCP 三次握手:TCP 提供面向连接的服务,在传送数据前必须建立连接,TCP 连接是通过三次握手建立的。
最开始,客户端和服务端都处于 CLOSE 状态,服务端监听客户端的请求,进入 LISTEN 状态
客户端端发送连接请求,第一次握手 (SYN=1, seq=x),发送完毕后,客户端就进入 SYN_SENT 状态
服务端确认连接,第二次握手 (SYN=1, ACK=1, seq=y, ACKnum=x+1), 发送完毕后,服务器端就进入 SYN_RCV 状态。
客户端收到服务端的确认之后,再次向服务端确认,这就是**第三次握手 **(ACK=1,ACKnum=y+1),发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态。
为什么需要三次握手?其一、为了防止服务器端开启一些无用的连接增加服务器开销。
其二、防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。
TCP 四次挥手
数据传输结束之后,通信双方都可以主动发起断开连接请求,这里假定客户端发起
客户端发送释放连接报文,第一次挥手 (FIN=1,seq=u),发送完毕后,客户端进入 FIN_WAIT_1 状态。
服务端发送确认报文,第二次挥手 (ACK=1,ack=u+1,seq =v),发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态。
服务端发送释放连接报文,第三次挥手 (FIN=1,ACK1,seq=w,ack=u+1),发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个 ACK。
客户端发送确认报文,第四次挥手 (ACK=1,seq=u+1,ack=w+1),客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT 状态,等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。