对网络应用层的理解(三)

这篇博客来进行应用层模块的最后一部分总结,内容是socket编程。

socket编程

socket编程,也叫做应用编程接口(API),先来简单介绍一下什么叫做应用编程接口(API)。下图是两主机之间的网络通信,在功能上都可以看做有这么五个层次。应用程序接口主要就是应用层和传输层之间的通信问题。

这里写图片描述

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

这里写图片描述

应用编程接口类型

  • 套接字(socket)
  • WINSOCK(Windows Socket Interface)
  • TLI(Transport Layer Interface)

我们明白socket是最让我们熟知的一种应用编程接口,也是网络应用最典型的API接口,是对应用进程间通信的抽象机制。

这里写图片描述

来解释一下上图含义:客户主机的应用层有工作的客户应用进程,服务器主机应用层有很多服务器的应用进程,有提供web服务的,也有邮件服务的等等。上面说过应用层和传输层之间有一层应用编程接口,为了对其中的应用进程加以区分,设置了16位整数的端口号来标识进程。有了IP地址,可以知道套接字对应的哪一个主机上运行的某一个进程的套接字,进一步有了端口号,也可以明确具体是哪一个套接字。所以这样来标识套接字:

  • 对外:IP地址+端口号
  • 对内:套接字描述符

TCP协议下socket流程

1.确定服务器IP地址与端口号
2.创建套接字
3.分配本地端点地址(IP地址+端口号)
4.连接服务器(套接字)
5.遵循应用层协议进行通信
5.关闭/释放连接
socket编程中的api函数我没有用过,但是对于websocket在之前的你画我猜游戏中做过一些实践,具体请参照http://blog.csdn.net/shenmill/article/details/71440823
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值