admin 管理员组文章数量: 1184232
2024年3月14日发(作者:amazement怎么读)
网事
计算机与网络
详解Web服务基础
一、HTTP概述
HTTP是HyperTextTransferProtocol的缩写,即超文本
传输协议。HTTP是应用层协议,同其他应用层协议一样,是
为了实现某一类具体应用的协议,并由某一运行在用户空间
的应用程序来实现其功能。HTTP是一种协议规范,这种规范
记录在文档上,为真正通过HTTP协议进行通信的HTTP的
实现程序。我们知道,HTTP协议是基于C/S架构进行通信
的,而HTTP协议的服务器端实现程序有httpd、nginx等,其
客户端的实现程序主要是Web浏览器,例如Firefox、Internet
Explorer、Googlechrome、Safari、Opera等,此外,客户端的命令
行工具还有elink、crul等。Web服务是基于TCP的,因此为了
能够随时响应客户端的请求,Web服务器需要监听在80/TCP
端口。这客户端浏览器和Web服务器之间就可以通过HTTP
协议进行通信了。
二、IANA定义的端口
我们知道,Web服务器为了让所有客户浏览器程序能够
与之通信,通常都需要监听在80端口。用户在浏览器上键入
URL时,例如:,默认端口就是80。这一端口是
由IANA(InternetAssignedNumbersAuthority)分配指定的。另
外,IANA是由ICANN管理的,其定义的端口如下:
①0-1023:众所周知的端口,永久地分配给固定应用使
用,这些端口的使用需要特定的应用去注册,属于特权端口,
例如Web服务的80/tcp,FTP的21/tcp等。该类端口只有系
统管理员才有权限启用,并让进程监听,而普通用户则没有。
②1024-41951:亦为注册端口,但要求不是特别严格,这
些端口分配给程序,并注册为某个应用使用,但这些应用并不
常见,例如mysql服务的3306/tcp,memcache的11211/tcp等。
③41952+:客户端程序随机使用的端口,为动态端口,或
私有端口。在Linux上该类端口范围定义在/proc/sys/net/ipv4
/ip_local_port_range中。
三、BSDSocket
BSDSocket最早是BSDUnix系统的进程通信机制。
Socket即为套接字,作为IPC(Inter-ProcessCommunication,进
程间通信)的一种实现,允许位于不同主机上(也可以是同一
主机上)的进程间通信机制。Socket可理解为“插座”,只要电
线插上了这个“插座”,就可以进行通信了。Socket本质上应该
是SocketAPI,它封装了内核中socket通信相关的通信细节,
也就是封装了通信子网(传输层、网络层、数据链路层和物理
就可以编写能够实现网络通信的程序了。
■王文瑞
■刘贤
层)要实现的具体的通信细节,而程序员通过调用SocketAPI
Socket描述的是IP地址和端口。不同的服务所对应的端
口号不同,每种服务需要绑定并监听在一个端口上,打开一个
Socket,而客户端可以通过一个Socket跟服务器上的Socket
建立连接,这样二者就能实现通信了,我们把正处于通信状态
的一对套接字称为已连接套接字。总的来说,Socket是应用层
与传输层之间的桥梁。
前面提到,Socket是对IP地址和端口号的描述,一个IP
地址+一个端口就是一个套接字(socket)。根据Socket在传输
层使用的协议可分为以下三类:
(1)SOCK_STREAM:tcp套接字
(2)SOCK_DGRAM:udp套接字
(3)SOCK_RAW:raw套接字
这里的raw套接字指的是在不使用任何传输层协议(例
如tcp,udp等)的情况下直接通过发送或接收IP数据包实现
通信的一种方式,也就是应用层直接绕过像tcp/udp这样的协
议直接基于IP数据包通信。
根据Socket监听的地址格式,SocketDomain可分为:
(1)AF_INET:AddressFamily,IPv4地址格式
(2)AF_INET6:AddressFamily,IPv6地址格式
(3)AF_UNIX:AddressFamily,同一主机上不同进程间基
于Socket套接字通信所使用的一种地址格式,这种地址的表
现形式就是一个套接字文件(Linux一切皆文件);这种地址又
称为Unix_SOCK。
接下来介绍TCP客户端和服务器是如何通过TCP套接
字接口进行通信的。
对于TCP服务器端来说,首先需要调用socket()函数,向
内核注册申请创建TCP套接字(IP地址+端口);一旦申请成
功了,就要通过bind()函数绑定程序到这个套接字上;绑定之
后,需要调用listen()函数,使服务器进程监听在这个套接字
上,允许套接字进行连接,但此时还不能接收用户请求;只有
再调用accept()函数之后才开始负责接收客户端请求,并在客
户端请求到达之前一直处于阻塞状态,此时TCP服务器进程
的状态为LISTEN。
对于TCP客户端来说,同样需要调用socket()函数创建套
接字,但不需要监听;当客户端向服务器发起连接请求时,即
调用connect()函数,其中在括号中的参数包括对方服务器的
42
计算机与网络
网事
微信营销也需要方法才能玩转
微信营销已经成为目前非常受热捧的企业营销利器,看
着汉庭布丁通过微信在酒店订房搞得风生水起,杜蕾斯微信
微薄品牌整合营销,蘑菇街、美丽说加上逛这些小清新更加
靓丽,自媒体搭着微信新车也风风光光……所以,很多双眼
睛里都是燃着熊熊烈火,很多人恨不得立马投身进来,一起
沐浴阳光。
但,很多人真正去玩之后很纠结:为什么到了我这,就怎
么没玩转?
为什么我坚持每天推送信息,关注不升反降?
为什么我的新关注增长一直很慢?
为什么我去做活动,互动非常之低?
这微信之风要不要继续跟下去?
到底有没有效果?
微信营销,没领悟的话,就成了把双刃剑,不懂剑意只走
剑招不仅难达目的,更可能伤己。
Web火了,网站也做了,却没有人来看,一座孤城;
淘宝火了,网店也做了,却没有人来买,一头雾水;
微博火了,认证也做了,却没有粉丝涨,自欺欺人;
微信火了,公众号也开了,却没有内容,也没有互动,自娱
自乐。
看到没,这就是很多企业做互联网营销推广的现状,今天
这里只聊微信。
为什么会这样?原因很简单,微信它不是一个媒体。因此,
笔者认为我们要做的第一件事,就是彻底抛弃我们熟练使用
多年的营销思路和方法,从0开始,从常识出发,想想我们应
该怎么来玩微信。
1.忘掉“营销”
我们来说好像有点不适合。”
■刘伟
经常被问到这样一个问题,“你们媒体做微信很方便,天
天都有文章好发,可是我们企业每天发些啥呢?微信营销,对
这个问题预设了这样一个假设:微信营销必须要不断地
给用户发送内容,而且是和企业本身的产品有关的内容。
这个假设,是典型的做媒体营销的思路,但这不是微信营
销的思路。我们要做的第一件事,就是抛弃“营销”。
以前,我们利用媒体来进行营销,搜肠刮肚地想些吓死人
的广告语,花重金请美女明星露美腿做代言,天天恨不得24
小时地毯式轰炸。这些做法都是没错的,因为你是通过媒体来
接触目标受众,对于受众来说你是个小概率事件,他们是可以
容忍的,而且他们也没法屏蔽你。
但是在微信里可不是这个概念。每个公众帐号,都是用户
的一个“好友”。你的好友会给你没事儿发广告玩儿吗?不会,
所以你也不能那么干,否则你不被删除才怪。
做微信营销,必须得学“要智取,不能强攻”。你的第一诉
求是不要被用户取消关注,凡是会引起用户反感的事情都不
能做,比如赤裸裸的发广告、每天定时骚扰之类的。
另外,失败的一大重要原因是:你以为你为女神做了很
多,其实那根本不是女神想要的。所以,做微信营销切忌从自
己角度出发,发些你想让用户知道的东西,而要给用户他们需
要的东西。而且,还要把握好时间节奏,该出现的时候出现,不
该出现的时候老老实实呆着。对于绝大部分帐号来说,一个月
群发一次消息我觉得都够用。平时干啥呢?那就是回复用户发
来的消息。
IP地址和端口;如果服务器接收连接请求,则双方进行了tcp
三次握手,建立双向的虚链路,此时客户端和服务器之间的套
接字处于已连接状态(ESTABLISHED),之后的http请求/响
应报文都是基于此前建立的虚链路进行发送。
在Linux上,当连接建立之后,客户端就可以在与服务器
建立连接的socket文件上填写需要请求的数据,写入数据就
相当于向服务器发送数据了,此过程通过调用write()函数完
成;而服务器端则可以在与客户端建立连接的socket文件上
读取数据,即调用read()函数,这一过程相当于接收客户端请
求的数据,二者之间具体的通信细节由底层的通信子网完成。
服务器读取到客户端发送过来的请求报文后,接着进行解析
请求、处理请求并构建响应报文,再通过调用write()函数把响
应报文写入socket文
件,通过通信子网传
送到客户端的socket
文件上,客户端就可
以通过这个socket文
件得到服务器的响应
报文了。如此往复循
环多次,直到客户端请求断开连接(一般是由客户端主动请求
断开连接,在使用keep-alive连接方式时则有可能是服务器主
动请求断开连接)。
一旦客户端请求断开连接,TCP服务器通过调用read()函
数读取socket文件内的断开请求数据,同意断开连接。
43
版权声明:本文标题:详解Web服务基础 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710378968a570401.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论