前言:
大家都知道有很多的协议,而协议栈靠什么信息进行工作呢,靠的就是套接字中的控制信息进行工作的!所以我们了解一下套接字是什么东西还是非常有必要的!
1、百度百科的解释
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示。
它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
2、实际演练
以上是百度百科中的解释,看着可能很懵逼,不要担心咱们来看看套接字在计算机长什么样子,大家就不会懵逼了!
接下来跟着我一起操作,windows + R调出运行 ,输入cmd进入一个界面,然后输入netstat -ano 指令后就会出现套接字的全貌了!如图所示!
如图,有五个部分,协议,本地地址,外部地址,状态、pid
(1)协议
这里的协议是使用tcp/ip协议的情况下,显示tcp 和ip
(2)本地地址
计算机本身(本地端)的ip地址和端口号!由于本计算只有一个网卡,所以只显示出了一个IP地址,0.0.0.0表示不绑定ip地址!ip地址后边的号为端口号
(3)外部地址
通信对象,远程端的ip地址和端口号。0.0.0.0表示没有开始通信,没有绑定IP地址和端口号;另外udp协议中不绑定对方的地址和端口,因此这里显示 *:
(4)状态
LISTENING等待对方连接的状态
ESTABLISHED完成连接并正在进行书库通信的状态表
(5)PID
此时可以利用任务管理器来查询PID对应的程序的名称,此时可以查看到底是什么程序在和外部的通信方进行数据上的交流!
理解了上边的基本上的概念,我们就举个例子吧,比如pid为8472的那一行! 它表示PID为8472的程序正在使用ip地址为192.168.24.155的网卡与ip地址为223.252.199.69 的对象正在进行通信!
当我们想知道我们的电脑正在与什么正在通信,此时我们可以打开我们的任务管理器,点击详细信息,如图所示!
从图中我们看出各个进程占用资源的情况,这里的pid与套接字中的pid相对应!
后记:
套接字中存储着大量的控制信息,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定!