【网络编程基础】第一节 Socket简介
学习地址 :C语言中文网 - Socket编程基础
备注:文章大部分摘自C语言中文网 - Socket编程基础, 仅作为个人学习笔记。
第一节. Socket简介
Socket称为“套接字”,是计算机之间通信的一种方式,通过Socket这种约定,一台计算机可以接受其他计算机的数据,也可以向其他计算机发送数据。
1.1 IP地址 (IP Address)
计算机之间通信,必须知道确切位置。IP地址就是常用的计算位置,127.0.0.1 是本机地址。
其实,我们计算机并不知道IP 地址对应的物理地址,当通信时,只是将IP 等封装到要发送的数据包中,交给路由器处理。路由器找到目标计算机,并将数据包专递给它,完成一次单向通信。
目前大部分软件使用IPv4 地址,但IPv6 很快被人们接受,尤其是在线教育网中,已经大量使用。
1.2 端口(Port)####
找到了目标计算机,并且传递给它数据包之后,仍不能通信。因为,目标计算机可以同时提供很多网络服务,例如:HTTP、FTP、SMTP 等,目标计算机不知道要将接受道德数据包交给哪一个网络程序来处理,所以通信失败。
为了区分不同的网络程序,计算机会为每个网络程序分配独一无二的端口号(Port Number),例如,HTTP 默认端口是80,FTP 是21,SMTP 是25 。
端口(Port)是一个虚拟的、逻辑上的概念。可以比喻成一道门,数据通过道门流入流出,Port有自己的端口号。
1.3 协议(Protocol)####
协议(Protocol)就是网络通信的约定,通信的双方必须使用同意协议才能通信。
具体可以看我的博客 - TCP/IP 协议族
1.4 数据传输方式(Data Traffic Type)####
计算机之间有很多数据传输方式Socket_type,各有优缺点,常用的两种:SOCK_STRRAM(stream用于TCP连接)或 SOCK_DGRAM(数据报用于UDP服务)。
-
SOCK_STREAM 表示面向连接的数据传输方式。数据可以准确无误的到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢。常见HTTP(HTTP 是基于TCP之上的协议)就是使用SOCK_STREAM 传输数据,因为要确保数据的正确性,否则网页不能正常解析。
-
SOCK_DGRAM 表示无连接的数据传输方式。计算机只管传输数据,不做数据校验,如果数据在传输中损坏,或没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为SOCK_DGRAM 所做的校验工作少,所以效率比SOCK_STREAM 高。
QQ 视频聊天和语音聊天就使用 SOCK_DGRAM 传输数据,因为首先保证通信效率,尽量减小延迟,而数据的正确性是次要的,及时丢失很小的一部分数据,视频和音频也可以正常解析,最多出现噪点和杂音,不会对通信质量有实质的影响。
注意:SOCK_DGRAM 没有想象中的糟糕,不会频繁丢失数据,数据错误只是小概率事件。
1.5 第一节 总结
IP地址和端口能够在广袤的互联网中定位到要通信的程序,协议和数据传输方式规定了如何传输数据,有了这些,两台计算机就可以通信了。

浙公网安备 33010602011771号