一、TCP
● TCP,传输控制协议(Transmission Control Protocol),是面向连接的、可靠的、基于字节流的传输层通信协议。
● 它提供计算机之间的可靠无差错的数据传输。应用程序通过 TCP 进行通讯时,数据源和接收目标之间会建立一个虚拟的连接,这个连接一旦建立,
计算机之间就可以把数据作为双向字节流进行交换。其实基于 TCP 的通信传输的数据帧也不是可靠的,只是在发送 TCP 数据帧的时候,接收端每次
接收到数据以后就会进行差错验证,如果没有任何问题,就会回馈发送端一个数据帧,告诉它接收成功,发送端就会继续发送第二个数据包。
通过这样的问答方式就保证了 TCP 传输数据的无差错性。即完成了三次握手,这种行为是靠驱动程序的底层协议来完成的。
● 应用场景 : 远程连接(Telnet)和文件传输(FTP)、打电话等
1、TCP的三次握手四次挥手过程
①、建立连接协议(三次握手)
(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。
(2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;
同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
(3)客户端必须再次回应服务器一个ACK报文,这是报文段3。

image.png
2、连接终止协议(四次挥手)
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。
收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,
而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
(2) 服务器收到这个FIN,它返回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
(4) 客户段返回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

image.png
二、UDP
● UDP,用户数据报协议(User Datagram Protocol),是面向无连接的通信协议。
● 它是一个无连接的通信协议,UDP 不保证用户数据的可靠性传输,但能向若干个目标发送数据,和接收若干个数据源的数据。如果一台主机向
另一台主机发送 UDP 数据,这个数据会立即发送出去,而不管另一台主机是否准备好接收数据。当网络状态异常的时候,会造成 UDP 数据报的丢失。
如果另外一台主机接收到了数据,它不会确认是否收到。
● 应用场景 : 视频会议 和 发短信等
三、TCP与UDP的区别
UDP
将数据源和目的封装成数据包中,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。
每个数据报的大小在限制在64k;
因无连接,是不可靠协议,发送方所发送的数据报并不一定以相同的次序到达接收方;
不需要建立连接,速度快
TCP
建立连接,形成传输数据的通道;
在连接中进行大数据量传输;
通过三次握手完成连接,是可靠协议,它确保接收方完全正确地获取发送方所发送的全部数据。;
必须建立连接,效率会稍低
四、Socket
1、Socket套接字:
• 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
2、Socket原理机制:
• 通信的两端都有Socket。
• 网络通信其实就是Socket间的通信。
• 数据在两个Socket间通过IO传输。
网友评论