对网络应用层的理解(三)
分类:
文章
•
2024-05-04 15:49:04
这篇博客来进行应用层模块的最后一部分总结,内容是socket编程。
socket编程
socket编程,也叫做应用编程接口(API),先来简单介绍一下什么叫做应用编程接口(API)。下图是两主机之间的网络通信,在功能上都可以看做有这么五个层次。应用程序接口主要就是应用层和传输层之间的通信问题。

网络应用程序事实上就是在应用层运行的一些应用进程上的通信问题,这些应用层遵循应用层协议,定义了应用进程之间如何交互。而两主机应用进程之间的通信并不是直接进行交互,而是通过底层一层一层进行处理然后经过网络到目的主机在经过底层处理到目的应用进程的。应用层由应用进程控制,底层由操作系统控制。所以在应用层和底层之间需要一个桥梁作用的部分,用来传输信息,通过这个桥梁将应用进程的数据交给传输层,或者传输层交给应用进程,这个桥梁就是应用编程接口(API),具体如下图。

应用编程接口类型
- 套接字(socket)
- WINSOCK(Windows Socket Interface)
- TLI(Transport Layer Interface)
我们明白socket是最让我们熟知的一种应用编程接口,也是网络应用最典型的API接口,是对应用进程间通信的抽象机制。

来解释一下上图含义:客户主机的应用层有工作的客户应用进程,服务器主机应用层有很多服务器的应用进程,有提供web服务的,也有邮件服务的等等。上面说过应用层和传输层之间有一层应用编程接口,为了对其中的应用进程加以区分,设置了16位整数的端口号来标识进程。有了IP地址,可以知道套接字对应的哪一个主机上运行的某一个进程的套接字,进一步有了端口号,也可以明确具体是哪一个套接字。所以这样来标识套接字:
TCP协议下socket流程
1.确定服务器IP地址与端口号
2.创建套接字
3.分配本地端点地址(IP地址+端口号)
4.连接服务器(套接字)
5.遵循应用层协议进行通信
5.关闭/释放连接