TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP四层模型,从上到下依次是应用层、传输层、网络层和数据链路层(网络接口层)。
三次握手
1.客户端向服务端发送SYN包,问:“可以和你进行连接吗?”
2.服务端向客户端发送SYN+ACK包,并回答:“可以进行连接。”
3.客户端向服务端发送ACK包。连接成功。
这个过程叫做三次握手。
为什么要三次握手,而不是两次握手?
假如采用的是两次握手:
客户端向服务器端发送SYN1包,SYN1包在中间某个网络节点上产生了滞留,
过了一段时间,客户端会向服务端重新发送SYN2包,SYN2包成功发送,服务端发送SYN+ACK包给客户端,建立连接。
又过了一段时间,SYN1包滞留结束,发送到了服务端,此时,服务端会误认为是客户端又一次请求连接,于是服务端又向客户端发送了SYN+ACK包,第二次连接进入等待状态。
客户端认为是一个连接,而服务端认为是两个连接。造成了状态不一致。
如果是三次握手的情况下,服务端收不到最后的ACK包,就不会认为连接建立成功。
所以,三次握手,本质上来说,就是为了解决网络信道不可靠的问题。
为了在不可靠的网络信道上建立可靠的连接,就需要三次握手,但仅仅有三次握手还是不够。
一个包可能拆成多个包发送,如何处理丢包问题?如何处理乱序问题?
在发送数据包时,客户端或者服务端(只要是发送端)会建立发送缓冲区。
TCP协议是全双工的,对于上述过程,不区分客户端和服务端,只要是发送端。
四次挥手
UDP协议
UDP协议是基于非连接的,过程就是数据包简单封装一下,然后直接通过网卡发送出去,客户端和服务端没有状态上的联系。
三大特点:性能损耗少、资源占用少、稳定性弱。
UPD还有另外一个重要的应用场景:隧道网络