什么是TCP协议呢?
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
怎样连接?(三次握手的过程)
三次握手
客户端Client向服务端发送syn包,请求建议连接。
服务端向客户端发送已接收syn包的ack响应请求。
客户端向服务端发送ack请求,告知服务端已知晓,连接完成,双方开辟资源。
三次握手的过程就好像你遇到一个心仪的女孩求交往的过程,首先你会请求人家做你女朋友,结果很好,人家也很心仪你,于是就给你了一个同意的响应,但是她不知道你接受没接收到,于是你还需要给人家送小礼物来表示表示,最后关系建立,二人开辟了新的世界。
所以连接的成功建立的标志就是:客户端和服务端都在各自的内存空间上开辟了新的资源。
服务器如何找到唯一的客户端呢?
网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用四元组(ip+port ip+port)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
什么是socket呢?
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
什么是四次分手?
四次分手
客户端向服务端发FIN包。
服务端回送基于FIN包的ack请求给客户端。
服务端向客户端发FIN包。
客户端回发ack请求给服务端,双方释放资源。
四次分手的过程就好像,你和你女朋友结婚了,生活了一阵子,你发现你们之间发生了一些事情,于是你不想和她在一起,于是终于有一天,你鼓起勇气跟她说:“喂!我们离婚吧。”,她反应一下,回应了你:“哼!凭什么你跟老娘主动提离婚呢。”,之后她又冷静地想了想,可能两个人在一是不合适,于是她同意了,跑过来跟你说:“我考虑过了,离婚就离婚!”,于是你也做出了回应:“好!”,之后你们就开心地恢复了你们自由的单身生活,释放了之前的种种不安与压力。所以,这一过程就是客户端与服务端之间断开连接,释放各自内存资源的过程。