网络协议
HTTP 状态码
常见的请求头/响应头
GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
Accept: /(客户端能接收的资源类型)
Accept-Language: en-us(客户端接收的语言类型)
Connection: Keep-Alive(维护客户端和服务端的连接关系)
Host: localhost:8080(连接的目标主机和端口号)
Referer: http://localhost/links.asp(告诉服务器我来自于哪里)
User-Agent: Mozilla/4.0(客户端版本号的名字)
Accept-Encoding: gzip, deflate(客户端能接收的压缩数据的类型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)
Date: Tue, 11 Jul 2000 18:23:51 GMT(客户端请求服务端的时间)
响应(服务端->客户端[response])
HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据)
Pragma: no-cache(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)
在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息,解决跨域的一种方法
常见的状态码
200 :
请求成功。成功的含义取决于HTTP方法:
- GET:资源已被提取并在消息正文中传输。
- HEAD:实体标头位于消息正文中。
- POST:描述动作结果的资源在消息体中传输。
- TRACE:消息正文包含服务器收到的请求消息
204 No-Content
响应无内容,当表明响应成功。 节省流量,适用不需要返回数据的场景
206 partial Content
客户端表明自己只需要目标URL上的部分资源的时候返回的 | 服务器已经完成了部分用户的GET请求
301
被请求的资源已永久移动到新位置
302
要求客户端执行临时重定向
301 和 302 的区别
对于用户301,302对用户来说没有区别,他们看到效果只是一个跳转,浏览器中旧的URL变成了新的URL。页面跳到了这个新的url指向的地方。
对于引擎及站长302转向可能会有URL规范化及网址劫持的问题。可能被搜索引擎判为可疑转向,甚至认为是作弊。
使用
301 <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.google.com"); 302 <?php header("Location: http://www.google.com");
303
建议客户访问其他URL或访问方式
307
307 状态码可以确保请求方法和消息主体不会发生变化
400
错误请求,如语法错误
401
请求授权失败
403
请求不允许 , 授权失败
404
响应目标未找到,请求失败
500
服务器产生内部错误 , 系统错误
503
服务器过载或暂停维修
OSI 七层模型
应用层 : 网络服务与最终用户的一个接口。 (HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP) 表示层 : 数据格式的转换,使其和网络数据格式保持同一格式 会话层 : 建立、管理、终止会话 传输层 : 定义传输数据的协议端口号,以及流控和差错校验。 (TCP UDP) 网络层 : 进行逻辑地址寻址,实现不同网络之间的路径选择。(ICMP IGMP IP(IPV4 IPV6) ARP RARP) 数据链路层 : 建立逻辑连接、进行硬件地址寻址、差错校验 [2] 等功能 物理层 : 建立、维护、断开物理连接。(比特流 0 1 与电压之间的互换)
HTTP 协议的工作特点和工作原理
工作特点
- 支持客户/服务器模式。(c/s模式)
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得 HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
工作原理
- https://blog.csdn.net/hudashi/article/details/50788595
POST 和 GET 请求的区别
GET 回退时是无害的,POST会再次提交要求
GET 会被浏览器自动cache,而POST需要手动设置
GET 明文提交(不安全)且只支持url编码,post支持多种方式编码
GET 长度限制 (大多数浏览器限制长度 2K 个字节,而服务器最多处理64 k 的数据)
深入
GET 在发送数据的时候只产生一个数据包,而 get 会产生两个tcp数据包,post会先发送一个header请求头,服务器端返回一个100 状态码(是一个临时状态码,服务器端已经收到请求,等待客户端再次发送请求,如已经发送,则忽略)。 当在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。 fixbox只发送一次包
网络协议中常见端口类型及分类
FTP : 21 HTTP : 80 SMTP : 25 TELENET: 23 SNMP : 161
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 4, 2019 at 11:39 am