网络协议

    HTTP协议状态码

      状态分为五大类:1XX、2XX、3XX、4XX、5XX

        1XX:信息类状态码  表示接受请求正在处理

        2XX:success 成功状态码  请求正常处理完毕

        3XX:重定向   需要进行附加操作完成请求

        4XX:客户端错误    服务器无法处理请求

        5XX:服务器错误    服务器处理请求出错

     常见状态码:

        200   成功   从客户端发出的请求在服务器端正常处理

        204   服务器接收的请求已成功处理   但在返回的响应报文中不含实体的主体部分   (没有内容)

        206   客户端进行了范围请求   服务端成功执行了部分请求

        301   跳转   永久性重定向   请求的资源已被分配了新的uri 以后请指向现在的uri

        302   临时性重定向   请求资源被分配了临时uri  此次访问请指向新的uri

        303   由于请求的资源存在另一个uri  应使用get方法定向获取资源

        304   客户端发送附带条件的请求 服务器端允许请求访问资源  但因发生请求未满足条件的情况

        307   临时重定向  该状态码和302相同含义

        400   请求报文中存在语法错误

        401   发送的请求需要HTTP认证的认证信息

        403   对资源的访问别服务器拒绝

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

        500   服务器错误无法完成请求

        503   服务器正处在超负载或者正在停机维护

    OSI七层模型

      物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

        第一层:物理层

           建立、维护、断开物理连接

        第二层:数据链路层

           建立逻辑连接、进行硬件地址寻址、差错校验等功能

        第三层:网络层

           进行逻辑地址寻址,实现不同网络之间的路径选择

        第四层:传输层

           定义传输数据的协议端口号,以及流控和差错校验

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

        第五层:会话层

           建立、管理、终止会话

        第六层:表示层

           数据的表示、安全、压缩

        第七层:应用层

           网络服务与最终用户的一个接口。

           协议:HTTP \ FTP \ TFTP \ SMTP \SNMP \ DNS \ TELNET \ HTTPS \ POP3 \ DHCP

    HTTP协议工作特点和工作原理

      工作特点:基于B/S模式,通信开销小、简单快速、传输成本低,使用灵活、可使用超文本传输协议,节省传输时间,无状态。

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

    HTTP协议常见请求/响应头和请求方法
       常见请求头信息  

        Accept    告诉浏览器客户端支持的数据类型

        User-Agent  告诉客户机的软件环境

        Cookie      可以带给服务器客户端的数据

        Date        请求时间

        Referer         从哪个资源访问服务器  (常用于防盗链)

        Origin      用来说明最初请求是从哪里发起的    (百度了解referer和origin的区别)

       常见响应头信息

        Content-Type    告诉浏览器响应数据类型

        Cache-Control    控制浏览器的缓存

        X-Forwarded-For     一个 HTTP 扩展头部

        Access-Control-Allow-Origin   设置跨域头    如 header("Access-Control-Allow-Origin:*"); 允许所有域名访问

        Last-Modified   最后请求资源的响应时间

      

      请求方法

        GET  POST   HEAD   OPTIONS   PUT   DELETE   TRACE

        面试中常问的一个为题:get和post请求方法的区别?

        post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器记录中)

        post发送的数据量更大(get有url长度限制)

        post能发送更多的数据类型(get只能发送ASCII(gb2312)字符)

        post比get慢

        post是向服务器提交数据的一种请求,get是向服务器索取的一种请求

        get会将数据缓存起来

        POST请求过程:

          1、浏览器请求TCP连接(第一次握手)

          2、服务器答应进行TCP连接(第二次握手)

          3、浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以HTTP会在此时进行第一次数据发送)

          4、服务器返回100 continue响应

          5、浏览器开始发送数据

          6、服务器返回200

PHP面试 PHP基础知识 十(网络协议)的更多相关文章

  1. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  2. 【Java面试】基础知识篇

    [Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...

  3. 【转载】[基础知识]【网络编程】TCP/IP

    转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又 ...

  4. 网络基础知识-TCP/IP协议各层详解

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  5. 死磕面试 - Dubbo基础知识37问(必须掌握)

    作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基 ...

  6. JAVA基础知识|TCP/IP协议

    虽然写代码也有一定的年头了,但是对于一些基础概念,还是很模糊.这在后来的学习过程中,带来了很大的痛苦,所以痛定思痛,决心重新学习这些概念.并把自己的理解和查询的资料做一些整合,便于以后查阅! 一.什么 ...

  7. Android学习之基础知识十二 — 第一讲:网络技术的使用

    这一节主要讲如何在手机端使用HTTP协议和服务器端进行网络交互,并对服务器返回的数据进行解析,这也是Android中最常用的网络技术. 一.WebView的用法 有时候我们可能会碰到比较特殊的需求,比 ...

  8. JAVA基础知识之网络编程——-基于UDP协议的通信例子

    UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramS ...

  9. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

随机推荐

  1. java pair配对的概念

    今天在项目中遇到了Pair,之前没有使用过,百度了下,记录. 使用场景 当我们在写一个方法需要返回两个字段值时,我之前的方法是新建一个类或使用集合.目前来看使用Pair方便很多. 配对(Pair).配 ...

  2. 购买一台阿里云云主机(CentOS)后

    系统的优化优化之前,首先查看版本信息 cat /etc/redhat-release CentOS release 6.9 (Final) 查看内核版本 uname -a Linux iZwz98ak ...

  3. MySQL高级学习笔记(四):索引优化分析

    文章目录 性能下降 SQL慢 执行时间长 等待时间长 查询语句写的烂 查询数据过多 关联了太多的表,太多join 没有利用到索引 单值 复合 服务器调优及各个参数设置(缓冲.线程数等)(不重要DBA的 ...

  4. ubuntu+VS code+launch.json+task.json

    1.ubuntu->vs code . 通过官方PPA安装Ubuntu make sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make s ...

  5. angular5引入sass

    angular/cli支持使用sass新建工程:如果是新建一个angular工程采用sass:ng new My_New_Project --style=sass这样所有样式的地方都将采用sass样式 ...

  6. oninput 事件 比较angular张的 ng-model指令 和 Vue中的 v-model指令

    oninput 事件在用户输入时触发. 该事件在 <input> 或 <textarea> 元素的值发生改变时触发. 提示: 该事件类似于 onchange 事件.不同之处在于 ...

  7. LeetCode题:旋转链表

    原题: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2输出: ...

  8. nmon 定时任务 监控资源

    nmon命令: # ./nmon  –f  -s 30 –c 100 说明:-f 以文件的形式输出,默认输出是机器名+日期.nmon的格式,也可以用-F指定输出的文件名,例如: # ./nmon_x8 ...

  9. 转 jmeter 等待时间 pacing think time

    第一部分:Request之间的等待时间的设置 先明确一些概念:1)定时器是在每个sampler(采样器)之前执行的,而不是之后:是的,你没有看错,不管这个定时器的位置放在sampler之后,还是之下, ...

  10. 破解Xshell6强制升级

    一.背景今天打开xshell时,弹出提示,“要继续使用此程序,您必须应用最新的更新或使用新版本”(如下图) 这是让我强制升级啊,点了确定按钮却提示我已经是最新版了 反正点了半天xshell也没打开.后 ...