乐趣区

关于计算机网络:计算机网络基础二十二传输层套接字与套接字编程

套接字与套接字编程

套接字

在之前的文章中有说到,通过端口(Port)能够惟一的标识不同的网络过程。如果有一个过程在应用网络的话,那必定是会占用一个端口的,计算机就是通过这个端口来辨别不通的网络过程的

端口(Port)应用 16 比特位示意(0~65535)。由 端口以及 IP就能够指定网络中某一台主机的具体过程是哪一个「IP:Port」。对于 IP 和端口的组合,有一个名字叫:套接字(Socket)

套接字(Socket)是形象的概念,示意 TCP 连贯的一端(咱们晓得 TCP 是端到端(点到点)的通信,两个端点之间会有一个 TCP 连贯来进行通信,这个套接字就能够示意通信的一端)

通过套接字能够进行数据发送或接管。很多时候对网络编程的时候,实际上就是对套接字的编程,通过套接字来进行数据的发送和接管

因为 TCP 连贯是由两端所组成的,因而就能够示意为两个套接字,通过这两个套接字就能够指定惟一的一个 TCP 连贯,而套接字又能够示意为 IP 和端口的组合(一个 IP 能够有多个套接字,因为它可能会有不同的端口)

TCP
={Socket1:Socket2}
={{IP:Port}:{IP:Port}}

如果平时对套接字进行编程的话,很多时候都是将这个架构看做是 C / S 架构。客户端和服务端通过 TCP 连贯连接起来,不论是客户端还是服务端,都会应用一个 Socket 来进行数据的发送和接管

C/ S 架构的 TCP 通信过程(右边为服务端、左边为客户端)

网络套接字与域套接字的区别

网络套接字

对于网络套接字,不论是跨计算机还是在同一台计算机,如果应用网络套接字的话,数据都会通过网络中的协定栈

域套接字

域套接字次要是通过 域套接字文件 来进行通信的。如果通过域套接字来进行通信的话,数据就不须要通过协定栈。所以,如果是单机的通信,举荐应用域套接字进行通信,因为它解决流程简略,而且不通过协定栈,对系统的耗费比拟小。如果是跨机器或跨网络的通信,就必须得应用网络套接字进行通信

退出移动版