网络编程套接字概念(UTP和TCP)

前言:

认识了网络,我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。

套接字(Socket)是网络编程的一种基本概念,套接字是应用程序通过网络协议进行通信的接口,是操作系统提供的一组api(在传输层给应用层提供)。

在网络编程中,套接字主要应用于客户端和服务器之间的通信,工作在网络的传输层,基于TCP/UDP协议来传输数据。TCP/UDP是传输层的俩个核心的协议,这俩个协议有很大的差别,所以Socket就提供了俩套套接字,分别为流套接字数据报套接字

流套接字、数据报套接字

流套接字:使用TCP协议,有连接,可靠运输,面向字节流,全双工

数据报套接字:使用UDP协议,无连接,不可靠运输,面向数据报,全双工

有连接&无连接

对于TCP协议来说,有连接就是对于A和B进行通信,AB先建立连接,A中保存了B的通信信息,B中也保存了A的通信信息。但对于UDP协议本身来说就不保存对方信息。

该连接只是逻辑上的连接,并不是网线类的物理连接。区别只是是否包含对端信息。

可靠运输&不可靠运输

在网络传输中,丢包现象(数据丢失)还是很容易发生的,光电信号的传输也会受到外界影响,导致0011这样的bit位可能就会被修改了。这样乱了的数据就会被识别出来丢掉。

在网络世界上是通过各种路由器和交换机发送和接收数据的,有时候数据传输量过大会导致“堵”在某个路由器和交换机上,无法准确100%的传输过去。

对于TCP的可靠传输:虽然也无法保证数据100%的传送过去,但是会识别出来是否丢包,然后重新传输。

对于UDP的不可靠传输:不提供确认和重传服务,就是单纯把数据包传送过去就不理了。

面向字节流&面向数据报

面向字节流(TCP):读取数据的时候,是以字节为单位进行读取,无长度限制可能会出现粘包现象。

面向数据报(UDP):读取数据的时候,以一个数据报为单位读取,一次为一整个数据报,有长度限制不会出现粘包现象。

全双工&半双工

全双工:一个通信链路,支持双向(可读可写)

半双工:一个通信链路,支持单向(要么读要么写)

上一篇:Flutter:SlideTransition位移动画,Interval动画延迟


下一篇:Java 实现PDF添加水印