什么是套接字

Socket 可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入 Socket 中,该 Socket 将这段信息发送给另外一个 Socket 中,使这段信息能传送到其他程序中。如图 1
我们来分析一下图 1 Host A 上的程序 A 将一段信息写入 Socket 中, Socket 的内容被 Host A 的网络管理软件访问,并将这段信息通过 Host A 的网络接口卡发送到 Host B Host B 的网络接口卡接收到这段信息后,传送给 Host B 的网络管理软件,网络管理软件将这段信息保存在 Host B Socket 中,然后程序 B 才能在 Socket 中阅读这段信息。
假设在图 1 的网络中添加第三个主机 Host C ,那么 Host A 怎么知道信息被正确传送到 Host B 而不是被传送到 Host C 中了呢?基于 TCP/IP 网络中的每一个主机均被赋予了一个唯一的 IP 地址, IP 地址是一个 32 位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如: 198.163.227.6 ,正如所见 IP 地址均由四个部分组成,每个部分的范围都是 0-255 ,以表示 8 位地址。
值得注意的是 IP 地址都是 32 位地址,这是 IP 协议版本 4 (简称 Ipv4 )规定的,目前由于 IPv4 地址已近耗尽,所以 IPv6 地址正逐渐代替 Ipv4 地址, Ipv6 地址则是 128 位无符号整数。
  假设第二个程序被加入图 1 的网络的 Host B 中,那么由 Host A 传来的信息如何能被正确的传给程序 B 而不是传给新加入的程序呢?这是因为每一个基于 TCP/IP 网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个信息缓冲区,用于保留 Socket 中的输入 / 输出信息,端口号是一个 16 位无符号整数,范围是 0-65535 ,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于 256 的短口号保留给标准应用程序,比如 pop3 的端口号就是 110 ,每一个套接字都组合进了 IP 地址、端口、端口号,这样形成的整体就可以区别每一个套接字。

你可能感兴趣的:(职场,套接字,休闲)