5.6.3 套接字
我们先以示例引入套接字的基本内容,我们知道在邮政通信的时候我们需要在信封上写明我们的收件地址,比如北京市海淀区双清路30号清华大学8444号某某某收,这其中我们需要一个物理地址“北京市海淀区双清路30号”,一个逻辑的地址“清华大学”,还需要一个信箱号“8444”,通过这样一种方式就可以进行邮政的通信了。
类比到两台计算机之间的用户进程需要互相通信时,不仅需要知道双方的IP地址,通过IP地址我们可以找到对方的计算机,这就类似于邮政通信的逻辑地址,同时还需要知道对方的端口号,这就相当于邮政通信的信箱号,通过学校地址和信箱号这两个内容就可以进行邮政通信了。对于套接字而言就是在计算机网络中的IP地址和端口的结合。也称之为插口或者套接口,所以套接字的概念就是套接字等于IP地址加上端口。
因为套接字是IP地址和端口结合在一起,IP地址唯一的标识出全球互联网上的一台主机,而套接字上的端口部分是受限于IP地址,它仅能够标识出这一台主机上特定的应用,而不会与其他主机上相同的应用进程相混淆。
因特网使用五元组标识通信双方唯一的连接。
五元组=<源IP地址,源端口,目的IP地址,目的端口,传输协议>
五元组可以唯一的标识通信双方的连接。
Wireshark可以捕获网络中的数据报,并且尽可能详尽的列出网络报文的信息。
如图
这里Wireshark中的每一行都是一个唯一的五元组的信息,用于标识唯一的连接,图中标红的五元组源地址是192.168.31.109,源端口是47103,这是一个一般端口号,目的IP地址是47.96.32.142,目的端口443,使用的传输层的协议是TCP,这就是一个五元组的示例。从图中可知,客户端使用的端口是一般端口,并且在一次访问中可能需要建立多个连接,需要使用到多个不同的端口号,而目标服务器使用的web端口是443,HTTPS协议使用的是传输层协议中的TCP协议。