您的位置:首页 > 其它

Socket笔记(第一弹:初识Socket)

2015-07-15 22:29 218 查看
一听Socket编程,就觉得它是比较高深的编程知识,但是只要弄清Socket编程的工作原理,也就不那么神秘了。那么先来点基本概念压压惊~

端口

端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,对端口的操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。 类似于文件描述符,每个端口都拥有一个叫端口号的整数型标识符,用于区别不同端口。

半相关

网络中用一个三元组可以在全局唯一标志一个进程: (协议,本地地址,本地端口号) 。

这样一个三元组,叫做一个半相关(half-association),它指定连接的每半部分。

全相关

一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识: (协议,本地地址,本地端口号,远地地址,远地端口号)。

这样一个五元组,叫做一个相关(association),即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。

客户/服务器模式

在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器模式(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。客户/服务器模式在工作过程中采取的是主动请求方式:

服务器方:

首先服务器方要先启动,并根据请求提供相应服务:

1、打开一通信通道并告知本地主机,它愿意在某一公认地址上接收客户请求;

2、等待客户请求到达该端口;

3、接收到重复服务请求,处理该请求并发送应答信号。接收到并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止;

4、返回第二步,等待另一客户请求;

5、关闭服务器 。

客户方:

1、打开一通信通道,并连接到服务器所在主机的特定端口;

2、向服务器发服务请求报文,等待并接收应答;继续提出请求……

3、请求结束后关闭通信通道并终止。

Socket(套接字)

Bruce Eckel 在他的《Java 编程思想》一书中这样描述套接字:套接字是一种软件抽象,用于表达两台机器之间的连接“终端”。对于一个给定的连接,每台机器上都有一个套接字,您也可以想象它们之间有一条虚拟的“电缆”,“电缆”的每一端都插入到套接字中。当然,机器之间的物理硬件和电缆连接都是完全未知的。抽象的全部目的是使我们无须知道不必知道的细节。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: