Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

1. 几个定义:

  1. IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。
  2. 端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通讯前必须要分配一个没有被访问的端口号。
  3. 连接:指两个进程间的通讯链路。
  4. 半相关:网络中用一个三元组可以在全局唯一标志一个进程,它指定连接的每半部分:
  • 协议
  • 本地地址
  • 本地端口号
  1. 全相关:一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识,即两个协议相同的半相关才能组合成一个合适的相关,或完全指定组成一连接。:
  • 协议
  • 本地地址
  • 本地端口号
  • 远地地址
  • 远地端口号
  1. TCP/UDP协议:TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。
  • TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
  • UDP则不为IP提供可靠性、流控或差错恢复功能。
  1. url:统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

2. 连接过程

根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

  1. 服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
  2. 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
  3. 连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

3. 客户端连接

  1. 创建socket对象
  2. 建立连接后,通过输出流向放服务器端发送请求信息
  3. 通过输入流获取服务器响应的信息
  4. 关闭响应资源

4. 服务端连接

  1. 创建serversocket对象,绑定监听端口
  2. 通过accept()方法监听客户端请求
  3. 连接建立后,通过输入流读取客户端发送的请求信息
  4. 通过输出流向客户端发送信息
  5. 关闭相关资源

5. 总结

  1. 创建ServerSocket和Socket
  2. 打开连接到Socket的输入\输出流
  3. 按照协议对Socket进行读\写操作
  4. 关闭输入输出流、关闭Socket

参考:

  1. socket编程到底是什么?
  2. Socket
  3. TCP/UDP协议
  4. URL

你可能感兴趣的:(Socket)