zoukankan      html  css  js  c++  java
  • HTTP

    OSI七层模型:

    (1)物理层:建立、维护、断开物理连接;
    (2)数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能;
    (3)网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。
    (4)传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP和UDP,数据包一旦离开网卡即进入网络传输层。
    (5)会话层:建立、管理、终止会话。
    (6)表示层:数据的表示、安全、压缩。
    (7)应用层:网络服务与最终用户的一个接口。协议有:HTTP、FTP、TFTP、SMTP、SNMP、DNS、TELNET、HTTPS、POP3、DHCP。
    说明:HTTP和HTTPS属于应用层;TCP属于传输层;IP属于网络层。
     
    [三次握手]
    在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.(syn请求同步,ack确认同步)
    • 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)
    • 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
    完成三次握手,客户端与服务器开始传送数据。
     
    HTTP 与 HTTPS 区别
    一句话说,https比http安全且是现在主流。(https的s就是指的security)
    HTTPS和HTTP的区别主要如下:
    1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
     
    HTTP协议的工作特点和工作原理:
    [工作特点] 基于B/S模式;通信开销小、简单快速、传输成本低;使用灵活、可使用超文本传输协议;节省传输时间;无状态。
    [工作原理] 客户端发送请求给服务器,创建一个TCP连接,制定端口号,默认80,连接到服务器,服务器监听浏览器请求,一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回状态信息和数据内容。
     
    HTTP1.0、1.1、2.0版本的区别:
    HTTP1.0:无状态、无连接
    HTTP1.1:持久连接 keep-alive、请求管道化、增加缓存处理(新的字段如cache-control)、增加Host字段、支持断点传输等
    HTTP2.0:二进制分帧、多路复用(或连接共享)、头部压缩、服务器推送
     
    HTTP协议常见的请求头、响应头、请求方法:
    Content-Type:请求的与实体对应的IMME信息
    Accept:指定客户端能接受的内容类型
    Origin:最初的请求的来源,主要用于POST请求
    Cookie:HTTP发送给服务端的cookie值
    Cache-Control:指定请求和响应的缓存机制
    User-Agent:用户信息
    Referrer:上级请求路径
    X-Forwarded-For:请求端的真实IP
    Access-Control-Allow-Origin:允许特定的域名访问,跨域使用
    Last-Modified:请求资源的最后响应时间
     
    对HTTP的理解
    • HTTP默认端口80,是一个基于TCP/IP通信协议来传递数据,传输的类型由Content-Type标记。HTTP协议是一个无状态的协议,同一个客户端这次请求和上次请求没有对应关系。HTTP使用URI传输数据和建立连接(URI的两种形式:URL和URN)。
    • HTTPS默认端口443,HTTPS是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是在SSL/TLS协议封装之上传输的。HTTPS协议在HTTP协议的基础上添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。
    • HTTP请求包括:请求行、消息报头、请求正文。HTTP响应包括:状态行、消息报头、响应正文。HTTP消息报头包括:普通报头、请求报头、响应报头、实体报头。
    • HTTP请求方法:GET/POST/HEAD/PUT/DELETE/TRACE/CONNECT/OPTIONS.(HEAD和GET基本一致,只是不返回内容)。
    • HTTP返回状态码:1开头(请求已接受),2开头(请求成功),3开头(重定向),4(客户端错误),5(服务器端错误)。
     
    HTTP常见状态码说明:
    200(客户端请求成功)
    301(永久重定向header('Location:$url',true,301) )
    302(临时重定向,默认)
    304(NOT MODIFIED 未修改,表示是从浏览器缓存中取的数据)
    307(重定向并且保留POST的数据)
    400(客户端请求有语法错误)
    401(请求未经授权)
    403(服务器拒绝提供服务)
    404(请求资源不存在)
    500(服务器错误)
    502(服务器应用程序错误)
    503(服务器暂时错误,一段时间后可能会恢复正常)
    说明:500和502的区别:
    用PHP举例,500是代码写的有问题(语法或语义错误),502是PHP配置出了问题,或者PHP没有正常启动。
     
    常见 HTTP 状态码
    1xx消息:这一类型的状态码,代表请求已被接受,需要继续处理。
    2xx成功:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受
    200 OK:请求已成功,请求所希望的响应头或数据体将随此响应返回。
    202 Accepted:服务器已接受请求,但尚未处理。
    204 No Content:服务器成功处理了请求,没有返回任何内容
    3xx重定向:这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向
    301 Moved Permanently:被请求的资源已永久移动到新位置
    4xx客户端错误:这类的状态码代表了客户端看起来可能发生了错误
    400 Bad Request:由于明显的客户端错误(例如,格式错误的请求语法,太大的大小,无效的请求消息或欺骗性路由请求),服务器不能或不会处理该请求
    401 Unauthorized:类似于403 Forbidden,401语义即“未认证”,即用户没有必要的凭据
    403 Forbidden:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
    404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现,但允许用户的后续请求
    405 Method Not Allowed:请求行中指定的请求方法不能被用于请求相应的资源。
    408 Request Timeout:请求超时
    5xx服务器错误:表示服务器无法完成明显有效的请求。这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生
    500 Internal Server Error:通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。没有给出具体错误信息
    502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应
    503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是暂时的,并且将在一段时间以后恢复。
    504 Gateway Timeout:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
     
     
    3. PHPHTTP相关的函数:
    stream_*系列函数;
    socket系列函数;
    CURL扩展库;
    header函数;
    http_build_query系列函数;
    get_headers函数。
    函数:get_headers(stringurl[,int format]) ; //请求一个URL,获取HTTP请求发送的所有头信息
    4. $http_response_header可以得到HTTP响应的报头:
    file_get_contents('https://www.baidu.com’);
    print_r($http_response_header);
    5.告诉浏览器不使用缓存:
    header(“Cache-Control:no-cache,must-revalidate”); header(“Prarma:no-cache”);
    6. Telnet完成GET请求:
    GET /test/01.php HTTP/1.1
    Host:localhost
    7. Telnet完成POST请求:
    POST /test/02.php HTTP/1.1
    Host:localhost
    Content-type:application/x-www-form-urlencoded
    Content-length:23
    8.HTTP协议的头信息里有个Referer,代表网页的来源,也就是上一页的地址。如果直接在浏览器输入网址访问,则没有Referer头。
    9. Content-Encoding:gzipgzip压缩页面,客户端请求服务器的时候会传递Accept-Encoding,表示此浏览器支持哪些类型的压缩方式。
    10.反向Ajax又叫cometserver push、服务器推技术,一般用于网页聊天服务器。
    11.无刷新提交,不使用Ajax:利用 204 No Content 状态码,当浏览器收到204时,执行PHP,页面不跳转。
    header(‘HTTP/1.1 204 No Content’);
     
    常见网络协议含义及端口:
    FTP:文件传输协议,默认端口21
    Telnet:用于远程登录,端口23
    SMTP:简单邮件传输协议,端口25.
    POP3:用于接收邮件,端口110
    HTTP:超文本传输协议,端口80
    HTTPS:端口443
    DNS:用于域名解析服务,端口53
  • 相关阅读:
    Web——[HCTF 2018]WarmUp
    栈的设置+栈的越界问题+栈的极限大小
    栈的概念
    检测点3.1
    字节型数据和字型数据的小结
    汇编语言(王爽)学习记录_第一章
    sqli-labs less-1 --> less-4
    五角星
    STD二手图书交流平台团队博客-登陆问题的解决
    STD二手图书交流平台团队博客-界面构建
  • 原文地址:https://www.cnblogs.com/rxbook/p/10913001.html
Copyright © 2011-2022 走看看