一、概念
网络编程就是对信息的发送和接收。通过操作相应的API调度计算资源硬件,并且利用管道(网线)进行数据交互的过程。更具体的涉及为网络模型、套接字、数据包等。
(一)服务器与客户端的三次握手
1、什么是三次握手
(1)第一次握手:客户端给服务器发送一个 SYN 报文。 (2)第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。 (3)第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。服务器收到 ACK 报文之后,三次握手建立完成。 三次握手的作用:确认双方的接收与发送能力是否正常。
2、为什么要三次握手,而两次却不行
(1)第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。 (2)第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。 (3)第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。因此,需要三次握手才能确认双方的接收与发送能力是否正常。
3、三次握手的好处
(1)确认双方的接受能力、发送能力是否正常。 (2)指定自己的初始化序列号,为后面的可靠传送做准备。 (3)如果是 https 协议的话,三次握手这个过程,还会进行数字的验证以及加密和密钥的生成等。
4、ISN是固定的吗?
三次握手的一个重要功能是客户端和服