Loading... <p> <strong>http</strong>:Hyper Text Transfer Protocol,超文本传输协议。是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。</p> <p> <strong>html</strong>:Hyper Text Mark Language,超文本标记语言。标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。</p> <p> html文本框架:</p> <pre class="brush:html;toolbar:false"> <html> <head> <title>TITLE</title> </head> <body> <h1>H1</h1> <p></p> <h2>H1</h2> <p> <a href="admin.html">ToGoogle</a> </p> </body> </html></pre> <p> html文档的生成方式:</p> <p> 静态:直接编写</p> <p> 动态:编程语言编写的程序可输出html格式的结果,如,php,jsp,asp,.net</p> <p> CGI:通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI描述了客户端和服务器程序之间传输数据的一种标准。</p> <p> http首部分为三类:通用首部,请求首部,响应首部</p> <p><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> </span><span style="line-height: 1.5;font-family: arial,helvetica,sans-serif;font-size: 16px">通用首部:</span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> Connection:定义C/S之间关于请求、响应的有关选项</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> Cache-Control:缓存控制</span></p> <p><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <span style="line-height: 1.5;font-family: arial,helvetica,sans-serif;font-size: 16px">请求首部:</span></span></p> <pre class="brush:bash;toolbar:false"> Client-IP:客户端IP地址 Host:请求的主机 Referer:指明了请求当前资源原始资源的URL,可做防盗链控制 User-Agent:用户代理 Accept:服务端能够发送的媒体的类型 Accept-Charset:可发送的字符集 Accept-Encoding:可发送的编码方式 Accept-Language:可发送的语言 条件式请求;安全相关请求</pre> <p> 响应首部:</p> <pre class="brush:bash;toolbar:false"> Age:从最初创建开始,响应持续时间 Server:向客户端说明自己的程序名称和版本 协商首部: Vary:首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端 跟安全相关: WWW-Authentication Set-Cookie</pre> <p> 实体首部:</p> <pre class="brush:bash;toolbar:false"> Location:资源的新位置 Allow:允许对此资源使用的请求方法 内容相关的首部: Content-Encoding:编码方式 Content-Language:主体最适宜使用的自然语言 Content-Length:主体的长度或尺寸 Content-Location:资源实际所处的位置 Content-Type:主体的对象类型 缓存相关: Etag:与实体相关的实体标记 Expires:实体不再有效,需要再次获取日期和时间 Last-Modified:实体最后一次被修改的时间</pre> <p>扩展首部:非标准首部,可由程序猿自行创建,如:X-Forward-for,X-Via</p> <p>http协议请求报文</p> <pre class="brush:bash;toolbar:false"> <method><request-URL><version> <HEADERS> <entity-body></pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160749-99.jpg" /></p> <p> http协议响应报文格式</p> <pre class="brush:bash;toolbar:false"> <version><status><reason-phrase> <HEADERS> <entity-body></pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160749-28.jpg" /></p> <p> 解释:sp(Space)空格符;cr ( carriage return )回车符;lf(line feed)换行符。</p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <method>:请求方法</span><span style="font-family:微软雅黑"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <request-URL>:请求的资源,可以是相对路径,如/image/log.jpg,也可以是绝对路径</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <version>:http协议版本,格式HTTP/<major>.<minor>,例如HTTP/1.0,HTTP/1.1</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <headers>:各种可以使用的首部</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <status>:状态码</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> </span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"> <reason-phrase>:原因短语,指状态码的易读信息</span><span style="font-family: 微软雅黑;font-size: 10.5pt;line-height: 1.5"><br /></span></p> <p><span style="font-family:微软雅黑"> 注意:http协议是无状态,stateless;无连接</span></p> <p><span style="font-family:微软雅黑">http方法:</span></p> <pre class="brush:bash;toolbar:false"> GET:从服务器端获取数据,请求获取一个资源 HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部 POST:基于HTML表单向服务器提交数据,服务通常需要存储此数据;(位置:通常为关系型数据库) PUT:与GET相反,向服务器发送资源,服务器通常需要存储此资源;(位置:通常为文件系统) DELETE:删除URL指向的资源 OPTIONS:探测服务器端对请求的URL所支持使用的请求方法 TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等</pre> <p>http状态码:</p> <pre class="brush:bash;toolbar:false"> 1XX:信息性状态码 2XX:成功状态码,如200,ok;201,created 3XX:重定向类状态码; 301,Moved Permanently,永久重定向; 302,临时重定向,会在响应报文中使用“Location:新位置”, 304,Not Modified 4XX:客户端类错误 403:请求被拒绝,Forbidden 404:Not Found 405:Method Not Allowed 5XX:服务器类的错误 500:Internal Server Error,服务器内部错误,语法错误等 502:Bad Gateway,代理服务器从上游服务器收到一条伪响应 503:Service Unavailable,服务暂时不可用</pre> <p><span style="font-family:微软雅黑"></span>web服务器:<br /> 理解用户请求的资源格式不仅仅是纯html格式的文档<br /> 静态资源<br /> 动态资源:<br /> application/php</p> <p> web资源:<br /> 资源类型:MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展,是设定某种扩展名的文件用一种应用程序来打开的方式类型,HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。</p> <p> major/minor<br /> text/html<br /> text/plain<br /> image/jpeg<br /> image/gif<br /> vedio/mpeg4<br /> application/vnd.ms-powerpoint</p> <p> 资源名称:URI (Uniform Resource Idnentifier)<br /> URL:描述一个特定服务器上某资源的特定位置<br /> http://www.magedu.com:80/download/bash-4.3.1-1.rpm<br /> 分为三部分:<br /> scheme(方案):http://<br /> 服务器:www.magedu.com:80<br /> 特定服务器上的资源:/download/bash-4.3.1-1.rpm</p> <p><span style="font-family:微软雅黑">http事务:打开到关闭一个连接的过程</span></p> <p><span style="font-family:微软雅黑">http协议版本:</span></p> <p><span style="font-family:微软雅黑"> http 0.9:仅用于传输HTML文档</span><span style="font-family:微软雅黑"><br /></span></p> <p><span style="font-family:微软雅黑"> http 1.0:引入MIME机制,从而支持多媒体数据;首部引入keep-alive(持久连接),请求到资源后不会四次挥手断开,支持缓存</span><span style="font-family:微软雅黑"><br /></span></p> <p><span style="font-family:微软雅黑"> http 1.1:更多请求方法,更精细缓存控制,持久连接(persistent);</span></p> <p>web服务器的I/O结构:</p> <p><span style="font-family:微软雅黑"> 单进程模型:串行</span></p> <p><span style="font-family:微软雅黑"> 多进程模型:每个进程响应一个用户请求实现并发的效果</span><span style="font-family:微软雅黑"><br /></span></p> <p><span style="font-family:微软雅黑"> 复用的I/O机制:一个进程生成多个线程,单个线程响应一个用户请求</span><span style="font-family:微软雅黑"><br /></span></p> <p><span style="font-family:微软雅黑"> 复用的I/O机制:多个线程,每个线程响应多个用户请求</span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信