赞
踩
WEB浏览器
浏览器是个显示网页伺服器或档案系统内的HTML文件,并让用户与此些文件互动的一种软件。个人电脑上常见的网页浏览器包括Internet Explorer、Firefox、Safari。浏览器是最经常使用到的客户端程序。
WEB服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
通俗的讲,Web服务传送页面使得浏览器可以浏览,它专门处理HTTP请求。
嵌入式服务器架构
常见的嵌入式WEB服务器有lighttpd、shttpd、thttpd、boa、mathopd、minihttpd、appweb、goahead等上百种
SOCKET编程技术
Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程
Socket可以支持数据的发送和接收,它会定义一种称为套接字的变量,发送数据时首先创建套接字,然后使用该套接字的sendto等方法对准某个IP/端口进行数据发送;接收端也首先创建套接字,然后将该套接字绑定到一个IP/端口上,所有发向此端口的数据会被该套接字的recv等函数读出。如同读出文件中的数据一样
HTTP协议
HTTP--Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目
一次完整的HTTP请求需要七个步骤
图片来源:http://android.jobbole.com/85218/
HTTP报文:
它是HTTP应用程序之间发送的数据块。这些数据以一定的文本信息开头,这些信息描述了报文的内容及含义,报头后跟着数据部分
一次http请求,http会从客户端流到服务器,服务器的工作完成后,报文从服务器流到客户端
所有的http报文都可以分为请求报文和响应报文。它们的结构基本相同,只有起始语法些许不同
图片来源:https://www.cnblogs.com/zhuifeng/p/4072248.html
请求报文:它会向Web服务器请求一个动作
请求报文的格式:
起始行: <method> <request-URL> <version>
头部: <headers>
主体: <entity-body>
响应报文:它会将请求的结果返回给客户端。
响应报文的格式:
起始行: <version> <status> <reason-phrase>
头部: <headers>
主体: <entity-body>
- 1、方式(method):客户端希望服务器对资源执行的动作,是一个单独的词,比如,GET、POST或HEAD
-
- 2、请求URL(request-URL):要直接与服务器进行对话,只要请求URL是资源的绝对路径就可以了,服务器可以假定自己是URL的主机/端口
-
- 3、版本(version):报文所使用的HTTP版本。其格式:HTTP/<主要版本号>.<次要版本号>
-
- 4、状态码(status-code):状态码是三位数字,描述了请求过程中所发生的情况。每个状态码的第一位数字都用于描述状态的一般类别(比如,“成功”、“出错”等等)
-
- 5、原因短语(reason-phrase):数字状态码的可读版本,包含行终止序列之前的所有文本。原因短语只对人类有意义,因此,尽管响应行HTTP/1.0 200 NOT OK和HTTP/1.0 200 OK中原因短语的含义不同,但同样都会被当作成功指示处理
-
- 6、头部(header):可以有零个或多个头部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个CRLF首部是由一个空行(CRLF)结束的,表示了头部列表的结束和实体主体部分的开始
-
- 7、实体的主体部分(entity-body):实体的主体部分包含一个由任意数据组成的数据块,并不是所有的报文都包含实体的主体部分,有时,报文只是以一个CRLF结束。
SOCKET编程接口
1.socket()函数
- int socket(int domain,int type,int protocol);
-
- 说明:socket()函数创建一个套接字
- 参数:
- domain 应用程序所在主机使用的通信协议族
- type 建立的套接字类型
- protocol 使用的特定协议
2.bind()函数
- int bind(int sockfd,struct sockaddr *my_addr,socklen_t addrlen);
-
- 说明:将套接字地址和所创建的套接字id联系起来
- 参数:
- sockfd socket返回的文件描述符
- my_addr 指向结构体sockaddr的指针,保存地址信息(端口、ip)
- addrlen sockaddr的长度
3、connect函数
- int connect(int sockfd,const struct sockaddr *serv_addr,socklen_t addrlen);
-
- 说明:建立套接字连接,成功返回0,否则返回-1
- 参数:
-
- sockfd socket返回的文件描述符
- serv_addr 保存着连接信息的结构体sockaddr
- addrlen sockaddr的长度
4、listen()函数
- int listen(int sockfd,int backlog);
-
- 说明:使得一个进程可以接受其它进程的请求,使其变为服务器进程
-
- 参数:
- sockfd socket返回到文件描述符
- backlog 允许建立连接的数目
5、accept()函数
- int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
-
- 说明:用于流式套接字的通讯,返回实际发送的数据的字节数
- 参数:
-
- sockfd socket返回的文件描述符
- addr 保存套接字信息的结构体
- addrlen addr的长度
6、send()函数
- ssize_t send(int sockfd,const void *msg,size_t len,int flags);
-
- 说明:用于流式套接字或数据报套接字的通讯,返回实际发送的数据的字节数
-
- 参数:
- sockfd 发送数据的套接字描述符
- msg 指向发送数据的指针
- len 发送数据的长度
- flags 默认为0
7、recv()函数
- ssize_t recv(int sockfd,void *buf,size_t len,int flags);
-
- 说明: 用于流式套接字的通讯,返回值为实际读入缓冲的数据的字节数
-
- 参数:
- sockfd 要读的套接字描述符
- buf 要读的消息的缓冲区
- len 缓冲的最大长度
- flags 默认为0
Apache服务器的安装
Web服务器一般指网站服务器,是指驻留于Inter网上某种类型的计算机程序,它可以向浏览器客户端提供文档,也可以放置网站文件,让全世界浏览;它可以放置数据文件,让全世界下载。
Apaches世界排名第一的Web服务器软件。它可以运行在所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用。
如果你使用的linux系统为Ubuntu,你可以很方便的下载apache
终端输入:apt-get install apache2
只需一个指令,你就能完成apache的安装,如果你想要进行apache的各种配置,请自行搜索
安装之后,apache默认是开启的且每次会随系统启动
终端输入:apachectl -v查看apache的版本
当然,你可以在浏览器输入你服务器的ip地址(安装服务器的linux的ip),如果你得到默认界面,那么一切都是正常的
之后,你就能在/var/www/html/下找到index.html文件,编辑它,你就能得到你想要的界面
效果如下:
该页面为仿写淘宝页面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。