zoukankan      html  css  js  c++  java
  • http

    HTTP概念:超文本传输协议,是一种通信协议,它允许将超文本标记语言html文档从web服务器传送到客户端的浏览器。是一个应用层协议,承载与TCP之上;有请求和响应构成;主要规定了客户端和服务器端之间的通信格式,默认使用的端口80

    协议:两台计算机进行通信,所遵循的规定或规则。

    TCP/IP协议的分层:

    应用层:HTTP协议。处理特定的应用程序。TCP/IP协议族内预存了各类通用的应用服务: FTP  DNS  HTTP

    传输层: TCP协议。对上层应用层提供处于网络连接中两台计算机之间的数据传输。:TCP和UDP

    网络层:IP协议。处理网络上流动的数据包 :IP ICMP IGMP如何闯送给用户

    数据链路层:以太网协议。处理连接网络的硬件部分,包括操作系统、硬件设备驱动、网卡、光纤

    IP协议:把各类数据包传送给对方,需满足各类条件:ip地址(指明子节点被分配到的地址,可变)和Mac 地址是指网卡所属的固定地址,不可变。

    ARP协议:用于解析地址的协议,根据通信方的IP地址就可以翻查到对应的MAC地址。

    TCP协议:传输控制协议,提供可靠的字节流服务。;如何保证提供可靠的服务?采用三次握手策略

    DNS:域名系统,提供域名到IP地址之间的解析服务。

    URI:统一资源标示符,是一个用于标示某一互联网资源名称的字符串。

    URL:统一资源定位符,描述一台特定服务器上某特定资源的特定位置。URI包含URL和URN。

    http事务:请求命令+响应结果;

    报文流:向下。抓包软件:

    状态码:100-199 信息提示  200-299请求成功 300-399 请求资源被移走 400-499 请求出错了 500-599 服务器出错

    一次完整的HTTP事务的过程:

    1域名解析 :浏览器搜索DNS缓存,查看是否有记录   》 没找到,搜索操作系统自身的DNS缓存 > 没找到,读取HOSt文件 > 没找到,浏览器发起一个DNS的系统调用,域名请求 > 获得域名对应的IP地址后,发起HTTP三次握手

    2 发起TCP的三次握手

    3发起HTTP请求   TCP/IP 连接建立起来后,用HTTP的GET方法请求一个根域里的一个域名。

    4 服务器响应HTTP请求,返回给浏览器

    5浏览器解析HTML代码 并请求HTML中的资源JS、CSS、图片

    6浏览器对页面进行渲染呈现给客户。

    三次握手:客户端 发送请求至服务器(客户端等待服务器回应);若同意链接,则向客户端发送确认问答(表示服务器已经收到请求,等待客户端确认);客户端发送请求 带数据(表示客户端可以发送http请求了)

    TeLnet :为用户提供本地计算机完成远程主机工作能力。

    400:客户端的请求语法错误 服务器无法理解

    401:请求未经过授权

    403:服务端拒绝提供请求 ,没有权限

    404:

    503:服务器当前时间 还不能处理 要等一段时间

    参考 http://www.ruanyifeng.com/blog/2016/08/http.html

    请求的格式:

    GET / HTTP/1.0
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
    Accept: */*         声明自己可以接受的哪些数据格式
    Accept-Encoding: gzip,default,compress

    服务器响应的格式:

    HTTP/1.0 200 OK 
    Content-Type: text/plain   服务器回应的时候,需告诉客户端,数据是什么格式
    Content-Length: 137582    在传送多个回应时,区分数据包是属于哪一个回应的,
    Transfer-Encoding:chunked 表明回应由数量未定的数据块组成,没有content-length字段
    Content-Encoding:gzip Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84
    connection:keep-alive 要求服务器不要关闭TCP连接,以便其他请求复用
    Host:指定服务器的域名

    最新版本HTTP/2  新规定:1 二进制协议;2 多工,可以同时发送多个请求或回应,不用按照顺序一一对应;3 数据流  4 头信息压缩  5 服务器推送

    通常cookie是用来保存用户登录状态的。

    浏览器特性与安全策略:同域与不同域,

    url.parse('url')   解析URL地址 为JSON对象     可加参数1:true  将query  ‘name=1&name=2’字符串解析成{}对象

                                                                         参数2:true   正确解析//www.imooc.com/ 未写协议的路径

    http://www.imooc.com/video/6710

    protocol 协议 ‘http’

    slashes  是否有双斜线  //

    host  IP地址或域名 imooc.com

    port  端口  

    hostname  主机名

    hash  锚

    pathname   /video/6710   访问资源路径名

    href 完整超链接

    url.format({...})   将对象转换为url href

    url.resolve('http://imooc.com/','/course/list')      //连接url

    querystring  

    序列化 .stringify

    querystring.stringify({name:'scott',course:'node',form:''})  解析为 字符串  ‘name=scott&cource=jade&from=’

    querystring.stringify({name:'scott',course:'node',form:''}, ',')  第一个参数  ‘name=scott,cource=jade,from=’

    querystring.stringify({name:'scott',course:'node',form:''}, ',',':') 第二个参数 ‘name:scott,cource:jade,from:’

    反序列化  .parse

    querystring.parse(‘name=scott&course=jade&course=1’)   将字符串 解析为 对象{name:'scott',cource:['jade','1']}

    querystring.parse('‘name=scott,cource=jade,from=',',')   第二个参数 将以,连接的字符串解析成对象

    querystring.parse( ‘name:scott,cource:jade,from:’ , ',' , ':')   第三个参数 将以:连接的字符串解析成对象

    转译  .escape

    querystring.escape('哈哈')     '%3c%e5%ff%%%'   

    反转译   .unescape

    querystring.unescape( '%3c%e5%ff%%%'  )       哈哈

  • 相关阅读:
    抽象类和接口的区别
    排序之快速排序(quickSort)
    互联网协议入门(1)
    字符串的操作String
    Java笔试题之SQL语句(单表)
    求职之Java开发所需技能
    【更新完毕啦!】一篇完整的产品体验报告处女作
    阿里2015暑期实习生业务型产品笔试题(附部分参考答案)
    滴滴笔试题(附我的答案)
    【面试】蘑菇街产品运营二面&结果
  • 原文地址:https://www.cnblogs.com/yxiaoqian/p/6009718.html
Copyright © 2011-2022 走看看