OSI模型一共分为7层,自底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
物理层负责管理个人电脑、打印机、服务器等联网设备的物理连接,包括但不限于集线器、网线、RJ-45标准。
数据链路层用于在设备之间建立数据链路连接,包括网卡、网桥、二层交换机等设备。
网路层用于实现地址管理、路由选择,包括路由器、三层交换机、防火墙、IP协议等。
传输层负责实现数据的传输,提供应用进程间的逻辑通信,包括TCP协议、UDP协议、端口等。
会话层负责建立和断开通信连接并且进行访问验证、会话管理,例如服务器验证登录。
表示层负责转换数据格式,将数据在标准数据格式与设备特定的数据格式之间进行转换。
应用层提供各种访问网络服务的接口,包括HTTP、FTP、SSH、MySQL等协议。
TCP/IP协议通信采用了5层的层级结构,分别是物理层、数据链路层、网络层、传输层、应用层。
物理层主要是负责传输数据的硬件,包括双绞线电缆、无线、光纤等。
数据链路层负责处理连接硬件,包括控制网卡、硬件相关的设备驱动等。
网络层用来处理网络中传递的数据包,数据包是最小的传递单位,ip协议、icmp协议、arp协议都位于这一层。
传输层主要负责传输应用层的数据。tcp协议、udp协议位于这一层。
应用层集成了OSI模型中的应用层、会话层、表示层这三层,用于实现应用程序间的沟通。http协议、ftp协议、telnet 协议、dns协议位于这一层。
第一次握手:客户端发送一个SYN包指明该客户端打算连接的服务器端口,以及初始序号seq,然后进入SYN_SENT状态,等待服务器确认。
第二次握手:服务器发回包含服务器的初始序号的SYN包(SYN+ACK)作为应答,并且把确认序号ACK设置为客户端的seq+1实现对客户端的SYN包进行确认。然后服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包后,向服务器发送确认包ACK(ack=k+1)。此包发送完毕后,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
状态变化流程:
客户端:CLOSE -> SYN-SEND -> ESTAB-LISHED
服务器端:LISTEN -> SYN-RCVD -> ESTAB-LISHED
第一次:Client发送一个FIN段序号seq以及确认断开连接的ACK,然后进入FIN-WAIT1状态
第二次:Server收到Client的FIN和ACK后,返回一个Client的FIN序号seq+1的ACK段,进入CLOSE-WAIT状态
第三次:客户端收到响应后进入FIN-WAIT2状态。Server向Client发送一个FIN段序号seq,然后进入LAST-ACK状态。
第四次:客户端收到Server的FIN段的seq后,进入TIME-WAIT状态并且返回给Server一个确认的ACK的序号seq+1。服务器端收到客户端响应后进入CLOSE状态,至此已断开连接。
客户端:ESTAB-LISHED -> FIN-WAIT1 -> FIN-WAIT2 -> TIME-WAIT ->CLOSE
服务器端:ESTAB-LISHED -> CLOSE-WAIT -> LAST-ACK -> CLOSE
TCP
UDP
面向连接
是
否
传输可靠性
可靠
不可靠
速度
慢
快
传输性能
低
高
数据顺序
保证
不保证
数据恢复
恢复
不恢复
流量控制
有
没有
消耗的系统资源
多
少
应用领域
金融、HTTP协议和HTTPS协议
传输语音、视频、游戏数据