1、TCP/IP协议?
分为应用层、传输层(TCP、UDP协议)、网络层、链路层;
2、TCP连接需要过程需要三次握手,断开连接需要四次挥手;
三次握手:
第一次握手:首先客户端向服务端服请求建立连接,等待服务器确认;
第二次握手:服务端确认客户端的连接请求,并且请求与客户端简历连接;
第三次握手:客户端确认服务端的连接请求,确认完毕后完成三次握手;
四次挥手:
第一次挥手:客户端向服务端发送一个FIN(结束),请求关闭数据传输;
第二次挥手:当服务端接受到客户端的请求时,向客户端发送一个确认;
第三次挥手:然后服务器向客户端发送结束连接请求,告诉客户端连接关闭;
第四次挥手:当客户端收到服务器端的结束连接请求时,回复确认结束;
四次挥手后整个通信过程就此终结;
ps:断开连接不一定就是客户端,谁都可以发起断开指令;
客户端和服务端没有固定标准,谁先发起请求谁就是客户端;
三次握手,四次挥手:https://blog.csdn.net/du5006150054/article/details/80157447
3、TCP与UDP
(1)TCP是基于连接的(三次握手),UDP是无连接的,即发送数据前是否需要建立连接;
(2)TCP是可靠的;TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP可能丢包(不保证可靠交付);
(3)TCP堆系统资源要求较多,UDP对系统资源要求较少且程序结构较简单;
(4)TCP应用场合,传输大量数据,UDP则是用于传输少量数据(大量数据会报错);
(5)TCP传输速度慢,UDP传输速度快;
(6)TCP面向字节流,TCP吧数据看成一连串无结构的字节流,TCP有一个缓冲区,当应用程序传送的数据块太长,TCP可以把他划分短一些在传送;当应用程序需的数据块太短,则TCP可以等待积累足够长的字节后在构成报文发送出去;
UDP则是面向报文,应用层交给UDP多长的报文,UDP就照样发送;
(7)有无边界:
TCP中,客户端连续发送数据,只要服务端的这个函数的缓冲区足够大,会一次性接收过来,即客户端是通过多次发送(有边界的),但是服务端却一次性的接收过来,故是无边界的;
UDP中,同样的情况,客户端分几次发送,服务端就必须按照几次接收,从而证明UDP是又不边界的;
总结:
TCP:可靠的、面向连接的、面向字节流的、无边界的、传输效率低的、每一条TCP的连接都是点对点的;
UDP:不可靠的、面向非连接的、面向报文的、有边界的、传输效率高的、支持一对一、一对多、多对一、多对多的交互通信;
4、什么是网络通信?
网络通信其实就是Socket间的通信,Socket(套接字)就是为网络服务提供的一种机制,通信的两端都有Socket,数据在两个Socket间通过IO传输;
只要是网络传输,必须有Socket;
传输分为UDP传输和TCP传输;
网络通信的三要素:ip、端口、协议;
https://blog.csdn.net/shanshan_1117/article/details/79862674
5、Socket是什么?
Socket = ip + port;