协议族和数据传输方式

目录

1、协议与协议族(Protocol)

2、数据传输方式

2.1、SOCK_STREAM

2.2、SOCK_DGRAM


1、协议与协议族(Protocol)

协议(Protocol)就是网络通信的约定,通信的双方必须都遵守才能正常收发数据。协议有很多种,例如TCP、UDP、IP等。通信的双方必须使用同一协议才能通信。协议是一种规范,由计算机组织制定,规定了很多细节,例如,如何建立连接,如何相互识别等。

所谓协议族(Protocol Family),就是一组协议(多个协议)的统称。最常见的是TCP/IP协议族,它包含了TCP、IP、UDP、Telnet、FTP、SMTP等上百个互为关联的协议,由于TCP、IP是两种常用的底层协议。所以把它们统称为TCP/IP协议族。

2、数据传输方式

计算机之间有很多数据传输方式,常见的有两种:SOCK_STREAM和SOCK_DGRAM

2.1、SOCK_STREAM

SOCK_STREAM表示面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢。常见的http协议就使用SOCK_STREAM传输数据,因为要保证数据的正确性。

为什么流格式套接字可以达到高质量的数据传输呢?这是因为它使用了 TCP 协议(The Transmission Control Protocol,传输控制协议),TCP 协议会控制你的数据按照顺序到达并且没有错误。

TCP/IP:TCP 用来确保数据的正确性,IP(Internet Protocol,网络协议)用来控制数据如何从源头到达目的地,也就是常说的“路由”。

那么,“数据的发送和接收不同步”该如何理解呢?

流格式套接字的内部有一个缓冲区(也就是字符数组),通过 socket 传输的数据将保存到这个缓冲区。接收端在收到数据后并不一定立即读取,只要数据不超过缓冲区的容量,接收端有可能在缓冲区被填满以后一次性地读取,也可能分成好几次读取。

也就是说,不管数据分几次传送过来,接收端只需要根据自己的要求读取,不用非得在数据到达时立即读取。传送端有自己的节奏,接收端也有自己的节奏,它们是不一致的。

2.2、SOCK_DGRAM

SOCK_DGRAM表示无连接的数据传输方式。计算机只管传输数据,不做数据校验,如果数据在传输中损坏,或者没有达到另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为SOCK_DGRAM所做的校验工作比较少,所以效率比SOCK_STREAM高

数据报套接字也使用 IP 协议作路由,但是它不使用 TCP 协议,而是使用 UDP 协议(User Datagram Protocol,用户数据报协议)

SOCK_DGRAM没有想象中的糟糕,不会频繁丢失数据,数据错误只是小概率事件

猜你喜欢

转载自blog.csdn.net/weixin_40179091/article/details/113028061