HTTP状态码

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。

HTTP状态码主要有5种,代表5种不同类型的响应:

  1. 1xx:信息性状态码,代表接收到请求,正在处理
  2. 2xx:成功状态码,代表请求正常处理完毕

a)     200 OK

表示从客户端发来的请求在服务端被正常处理了

b)     204 No Content

服务器接收的处理已经全部处理完毕,但是返回的响应报文中不含有实体的主体部分,另外也不允许返回任何的主体,浏览器接收到204响应之后页面不更新。

c)      206 Partial Content

客户端进行了范围请求,服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定的实体内容。

  1. 3xx:重定向,表明浏览器需要执行某些特殊的处理以正确处理请求。

a)     301 Moved Permanenty

永久重定向,301表示请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。

b)     302 Found

临时重定向,该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能够使用新的URI访问。

与301不同,302是临时重定向,已移动的资源对应的URI在将来可能还是会发生改变。

c)      303 See Other

表示请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。

d)     304 Not Modified

304虽然被划分在3xx中,但是和重定向并没有关系。该状态码表示客户端发送附带条件的请求时,服务器允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Modified(服务器资源未改变,可直接使用客户端未过期的缓存)。304状态码返回时,不包含任何响应的主体部分。

e)     307 Temporary Redirect

临时重定向。该状态码与302 Found 有着相同的含义。尽管302标准禁止POST变换成GET,但实际使用时大家并不遵守。

307会遵照浏览器标准,不会从POST变成GET,但是对于处理响应的行为,每种浏览器有可能出现不同的情况。

  1. 4xx:客户端错误,表示服务器无法处理请求,错误是由于客户端引起的。

a)     400 Bad Request

请求报文中存在语法错误。当错误发生时,需修改请求的内容再次发送请求。

b)     401 Unauthorized

表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。若之前已经进行过1次请求,则表示用户认证失败。

返回含有401的响应必须包含一个使用于被请求资源的WWW-Authenticate首部用以质询(challenge)用户信息。当浏览器第一次接收401的时候,会弹出认证用的对话窗口。

c)      403 Forbidden

对请求资源的访问被服务器拒绝了。

d)     404 Not Found

服务器上无法找到请求的资源。

  1. 5xx:服务器错误,表示服务器在处理请求时出错

a)     500 Internal Server Error

服务器在执行请求时发生了错误,也有可能是web应用存在的bug或临时的故障。

b)     503 Server Unaviabilable

服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

OSI七层模型

http://www.cnblogs.com/qishui/p/5428938.html 这篇文章讲的很详细了。

  1. 物理层 : 建立、维护、断开物理连接。
  2. 数据链路层 : 建立逻辑连接、进行硬件地址寻址、差错检验等功能。
  3. 网络层 : 进行逻辑地址寻址,实现不同网络之间的路径选择。
  4. 运输层 : 定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP ,数据包一旦离开网卡即进入网络传输层。

  1. 会话层 : 建立、管理、终止会话。
  2. 表示层 : 数据的表示、安全和压缩。
  3. 应用层 : 网络服务与最终用户的一个接口。

协议有:HTTP FTP TFTP SMTP POP3 SNMP DNS TENNET HTTPS DHCP

HTTP协议的工作特点与工作原理

工作特点

1、 基于B/S模式

2、 通信开销小、传输快速、传输成本低

3、使用灵活、可使用超文本传输协议

4、节省传输时间

5、无状态

工作原理

客户端发送请求给服务器,创建一个TCP连接,指定端口号(默认为80),服务器监听浏览器请求,一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回状态信息和数据内容。

HTTP协议常见的请求/相应头

1、Content-Type :实体主体内对象的媒体类型,和Accept一样,字段值用type/subtype形式赋值。

Content-Type: text/html; charset=UTF-8

2、Accept :可通知服务器用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用 type/subtype 这种形式,一次指定多种媒体类型。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

n  文本类型

text/html, text/plain, text/css ...

application/xhtml+xml, application/xml ...

n  图片类型

image/jpeg, image/gif,image/png ...

n  视频文件

video/mpeg, video/quicktime ...

n  应用程序使用的二进制文件

application/octet-stream, application/zip ...

1、Origin :最初的请求来源与哪,主要用与post请求

2、Cookie :HTTP请求发起时,发送给服务端的cookie值

3、Cache-Control :指定请求和响应的缓存机制

4、User-Agent :用户信息

5、Referrer :上级请求路径

6、X-Forwarded-For :强求端的真实IP(做代理的时候可以用次来获取)

7、Access-Control-Allow-Origin :允许特定的域名来进行访问,通常用做跨域使用

8、Last-Modified :指明资源最终修改的时间

HTTP协议的请求方法

1、GET

2、POST

3、HEAD

4、OPTIONS

5、PUT

6、DELETE

7、TRACE

GET 和 POST 的区别:

  1. GET在刷新和后退时,没影响,而POST会重新提交信息。
  2. GET可以被收藏为书签,而POST不行。
  3. GET 可以被缓存,POST不行。
  4. GET 请求时,编码类型为 application/x-www-form-urlencoded,POST 除了这个,还可以是Multipart/form-data(文件上传)
  5. GET 参数直接显示在url中,post看不到
  6. 由于url限制,GET 的数据量是有限的
  7. POST比GET更安全

HTTPS 的工作原理

HTTPS 是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。

HTTPS 协议在HTTP 协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。

常见网络协议含义及端口

1、FTP :文件传输协议(21)

2、Telnet :用于远程登录的端口(23)

3、SMTP :定义了简单邮件传输协议(25)

4、POP3 :接收邮件(110)

5、HTTP :超文本传输协议(80)

6、DNS :域名解析服务(53)

PHP--网络协议相关知识的更多相关文章

  1. TCP/IP网络协议基础知识集锦[转]

    引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...

  2. Windows网络编程笔记4 -- Winsock 协议相关知识

     Win32平台上的Winsock编程,Winsock是一个与协议无关的接口.以下协议是我们需要了解的: 网络协议的特征包括: 1.  面向消息 2.  面向连接和无线接 3.  可靠性和次序性 4. ...

  3. PHP网络协议相关考点

    HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...

  4. 读书笔记——网络编程与开发技术(3)基于TCP/IP协议的网络编程相关知识

    TCP/IP协议:数据链路层,网络层,传输层,应用层. IP地址分为5类:A类.B类.C类.D类.E类. (A类.B类.C类是基本类,D类多用于多播传送,E类为保留类.) "*"表 ...

  5. USB协议[转]_基本上涵盖了所有最基础的USB协议相关知识。

    背景: 需要使用到USB协议,我一直尝试着去强记这个流程,现在看来,其实不用.看多了,把这个过程具象出来,就牢牢记住了. 正文: 正文转自:http://fangjian0518.blog.163.c ...

  6. 网络协议相关面试问题-http协议相关面试问题

    HTTP协议简介: 一些基本概念: 协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则. HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML ...

  7. Java 网络编程相关知识

    网络的一些基础知识 IP地址分类 IP地址根据网络ID的不同分为5种类型,A类地址.B类地址.C类地址.D类地址和E类地址.A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用 ...

  8. ubuntu网络配置相关知识(转载)

    From:http://os.51cto.com/art/201003/188055.htm 文章主要介绍Ubuntu网络配置,希望能让Linux新手学习参考.更好使用Ubuntu.更有效的学习Ubu ...

  9. Python 网络编程相关知识学习

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

随机推荐

  1. POJ-2406Power Strings-KMP+定理

    Power Strings 题意:给一个字符串S长度不超过10^6,求最大的n使得S由n个相同的字符串a连接而成,如:"ababab"则由n=3个"ab"连接而 ...

  2. CodeForces 979 D Kuro and GCD and XOR and SUM

    Kuro and GCD and XOR and SUM 题意:给你一个空数组. 然后有2个操作, 1是往这个数组里面插入某个值, 2.给你一个x, k, s.要求在数组中找到一个v,使得k|gcd( ...

  3. 牛客小白赛4 A 三角形 数学

    链接:https://www.nowcoder.com/acm/contest/134/A来源:牛客网 题目描述 铁子从森林里收集了n根木棍,她开始将它们按顺序的排成一排,从左到右依次为1到n,她回想 ...

  4. android CTS 介绍

    [转]http://blog.csdn.net/pugongying1988/article/details/6976091 一.为什么需要兼容性测试(以下称CTS)? 1.1.让APP提供更好的用户 ...

  5. github初学者搭建自己的网站

    如何利用github打造博客专属域名 感谢园友的无私共享-- http://www.cnblogs.com/xuehaoyue/p/6551217.html 选分支 建立好库,在设置 这里选择博客类型 ...

  6. 【Offer】[34] 【二叉树中和为某一值的路径】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.  ...

  7. 封装axios来管控api的2种方式

    前言:我们在开发项目的时候,往往要处理大量的接口.并且在测试环境 开发环境 生产环境使用的接口baseurl都不一样 这时候如果在开发环境完成之后切换每一个接口的baseurl会变的非常的麻烦,(要去 ...

  8. Linux安装yum install gcc-c++出错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos...

    错误如图: 解决办法: 1.修改配置文件 /etc/resolv.conf,该配置文件如下: 2.输入:gedit resolv.conf,修改配置文件内容如下: 3.然后重启: 4.重新进行安装: ...

  9. PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)

    前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...

  10. [大数据学习研究] 3. hadoop分布式环境搭建

    1. Java安装与环境配置 Hadoop是基于Java的,所以首先需要安装配置好java环境.从官网下载JDK,我用的是1.8版本. 在Mac下可以在终端下使用scp命令远程拷贝到虚拟机linux中 ...