HTTP服务和APACHE
1. 跨Internet的主机间通讯
要通过Internet进行通信,至少需要一对套接字;其中一个运行在客户端,定义了一个唯一的客户进程,称之为ClientSocket,另一个运行于服务器端面,定义了一个唯一的服务器进程,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认
-
Socket套接字
-
套接(Socket)字作用
进程间通信(IPC)的一种实现,允许位于不同主机(或同一主机)上不同进程之间进行通信和数据交换进程间通信(IPC,Inter-Process Communication)指至少两个进程或线程间传送数据或信号的一些技术或方法
-
Socket组成
IP地址和端口号,合称为套接字地址(socket address) -
开发程序时如何实现Socket通讯
调用Socket API(封装了内核中所提供的socket通信相关的系统调用),需要指定两项内容- Socket Domain:根据其所使用的地址
-
AF_INET:Address Family,IPv4 <==常用 -
AF_INET6:IPv6 -
AF_UNIX:UNIX文件,同一主机上不同进程之间通信时使用,不需要封装解封装,通过此文件通讯
-
- Socket Type:根据使用的传输层协议
-
SOCK_STREAM:流,tcp套接字,可靠地传递、面向连接 <==常用 -
SOCK_DGRAM:数据报,udp套接字,不可靠地传递、无连接 -
SOCK_RAW:裸套接字,无须tcp或udp,APP直接通过IP包通信#API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
-
- Socket Domain:根据其所使用的地址
-
应用程序通讯过程
开发一个可以和网络通讯的应用程序,客户端和服务端相互通讯,需要调用Socket相关的一些函数 -
通讯过程
- 服务器端先创建一个ServerSocket,绑定用到的协议,ip地址,端口(低于1023的端口只有管理员可用)
- 绑定成功后服务器端不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态(监听)
- 在客户端,需要连接服务器也需要创建Socket(ClientSocket不需要绑定地址和端口),需要指出服务器端套接字的地址和端口号,创建成功后发起连接请求
- 服务器监听到请求,创建新的套接字描述符,用accept函数接收请求
- 连接成功后,便可以相互发送数据
-
套接字相关的系统调用:
-