1.什么是TCP连接?
当网络通信采用TCP协议的时候,在真正的读写操作之前,Server与Client之间必须建立一个连接。当读写操作完毕之后,双方不再需要这个连接时,就断开这个连接。连接时是三次握手,断开时则需要四次分手。所以说每个连接都是比较消耗资源的。
三次握手:
客户端从close状态开启之后(SYN_SEND),发送一个消息(SYN)给服务端,此时服务端时listen状态。服务端接收这个数据后(SYN_RECIVED),发送一个应答(ACK)给客户端。客户端接收这个应答之后,给服务端发送一个应答(estab-listen)。
四次挥手:
客户端发送一个消息告诉服务端,我没有数据发送给你了(FIN_Wait1),服务端应答说哦,你先等一下,我还有一些数据要给你)。然后服务端(close_wait)发送数据给客户端(FIN_Wait2),客户端收到之后(Time_wait),发送一个应答说。我收到数据了,你关闭吧。服务端接收数据之后,关闭。客户端等待2秒,如果没有应答的话,也关闭。
2.什么是TCP长连接?
长连接就是发送接收一个数据之后,这个连接不断开,仍然可以传递接收数据,当不需要传递数据的时候断开就是长连接。短连接就是发送接收一个数据之后,连接断开就是短连接。http1.0之前缺省短连接。http1.0之后缺省长连接(keepalive)
3.TCP和UDP的区别?
TCP传输控制协议,提供面向连接的,可靠的字节流服务,当客户端和服务端彼此交换数据的之前,必须双方建立一个连接之后才能传输数据。TCP提供超时重发,丢弃重复数据。检验数据,流量控制等功能,保证数据从一端传递到另一端。
UDP数据传输协议,是一个数据包传输协议。传输数据不可靠。因为它不管数据是被另一端收到。都按照顺序传输。也不管接收方的cpu,磁盘状态是否良好。所有它的传输效率很高。
一次http请求:
查缓存-》DNS解析——》获取IP->建立连接——>传输数据——》接收报文数据并响应-》关闭连接。
正向代理:客户端请求-》代理服务器-》服务器
反向代理:客户端请求-》ngnix转发请求->服务器