一、网络的五层划分
因特网协议栈共有五层:物理层、数据链路层、网络层、传输层、应用层。
其功能分别是:
1、物理层主要负责在物理线路上传输原始的二进制数据(0和1),该层数据以比特流的形式传输;
2、数据链路层主要负责在通信的实体间建立数据链路连接,该层数据以帧的形式传输;
3、网络层主要负责创建逻辑链路,以及实现数据包的分片和重组,实现拥塞控制、网络互连等功能,该层数据以IP数据报(IP分组)的形式传输;
4、传输层负责向用户提供端到端的通信服务,实现流量控制以及差错控制,这一层主要重点是两个协议 : UDP 和 TCP;
5、应用层为应用程序提供了网络服务,应用层协议最著名的就是HTTP, FTP了, 还有一个重要的DNS。
二、TCP和UDP的区别
1、TCP是有连接的(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP是尽量交付,他可能会丢包。TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP对系统资源要求较多,UDP对系统资源要求较少。
三、TCP的三次握手过程
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。