网络上两个主机A和B通过建立一个唯一的连接实现A和B之间的数据的交换,那么A和B需要通信时建立的这条连接就是一个套接字socket(套接字),socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,这条连接是对一些不同技术和协议的抽象的表示。
套接字Socket=(IP地址:端口号),例如:如果IP地址是192.168.10.9,端口号是16,那么得到套接字就是(192.168.10.9:16)。每一条连接唯一地被通信两端的两个端点(两个socket)所确定即:TCP连接={socketa,socketb}={(IPA:portA),(IPB:portB)}。
socket是对TCP/IP协议的抽象的表示,隐藏了复杂的TCP/IP协议和具体实现。比如说A的进程a和B的进程b需要进行数据通信,首先建立套接字【socket a-socket b】,a的数据进入socket a然后传入到socket b最后到b。当然也可以从应用层、运输层、网络层、数据链路层、物理层的角度来说数据的流动。socket 不是一种协议而是一个调用接口(API) 。这是API的定义:
应用程序编程接口(英语:Application Programming Interface,简称:API),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
比如说某某局信息系统有很多当地居民的基本情况数据,以前居民要查自己的数据就要到当地某某局去查询。现在某某局给微信某个程序提供一个API,微信的某个程序就有权限访问该局信息系统,居民就可以在微信中的这个小程序查到相关的一些信息。
Port(端口)这里所说的是逻辑端口而不是物理端口(USB、RJ45头等),它是数据的一部分不属于硬件。因为计算机上有不同的应用不同的软件,要实现通信就要将数据发往不同的地方,但是计算机的IP只有一个,比如说计算机接收到了IP数据怎么知道是送给哪个应用呢,解决这个问题的方法就是在运输层使用协议端口号(port)。常用端口号如下:
应用程序 | FTP | TELNET | SMTP | DNS | TETP | HTTP | SNMP |
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
个人能力有限,以上纯属个人理解,难免有错误恳请谅解,后面我会陆续发一些关于【从计算机安装系统到计算机软件是如何运行】的一些个人的浅见,也算是对自己所学的一点总结。从物理层到应用层有一个清晰的理解,从中找一个自己喜欢的、自己擅长的、自己可以胜任的、现实中适合自己的岗位,在此岗位上再进行深入细致的学习研究。