Skip to content

Latest commit

 

History

History
107 lines (89 loc) · 6.31 KB

File metadata and controls

107 lines (89 loc) · 6.31 KB

网络相关

http://www.bing.com:80/search?q=nodejs&page=3#history

  • 协议(http://)

    协议确定如何传输请求。我们主要是处理 http 和 https。其他常见的协议还有 file 和 ftp。

  • 主机名(www.bing.com)

    主机名标识服务器。运行在本地计算机(localhost)和本地网络的服务器可以简单地表示,比如用一个单词,或一个数字 IP 地址。在 Internet 环境下,主机名通常以一个顶级域名(TLD)结尾,比如 .com 或.net。另外,也许还会有子域名作为主机名的前缀。子域名可以是任何形式的,其中 www 最为常见。子域名通常是可选的。

  • 端口(:80)

    每一台服务器都有一系列端口号。一些端口号比较“特殊”,如 80 和 443 端口。如果省略端口值,那么默认 80 端口负责 HTTP 传输,443 端口负责 HTTPS 传输。如果不使用 80 和 443 端口,就需要一个大于 10231 的端口号。通常使用容易记忆的端口号,如 3000、8080 或 8088。

  • 路径(/search)

    URL 中影响应用程序的第一个组成部分通常是路径(在考虑协议、主机名和端口的基础上做决定很合理,但是不够好)。路径是应用中的页面或其他资源的唯一标识。

  • 查询字符串(?q=nodejs&page=3)

    查询字符串是一种键值对集合,是可选的。它以问号(?)开头,键值对则以与号(&)分隔开。所有的名称和值都必须是 URL 编码的。对此,JavaScript 提供了一个嵌入式的函数 encodeURIComponent 来处理。例如,空格被加号(+)替换。其他特殊字符被数字型字符替换。

  • 信息片段(#history)

    信息片段(或散列)被严格限制在浏览器中使用,不会传递到服务器。用它控制单页应用或 AJAX 富应用越来越普遍。最初,信息片段只是用来让浏览器展现文档中通过锚点标记()指定的部分。

HTTP

  • http 协议:全称超文本协议传输
  • 工作流程:首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP 的工作开始。
    1. 收线客户机与服务器需要建立连接,只要单击某个超级连接,http 的工作开始
    2. 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、后边是 MIME 信息包括请求修饰符、客户机信息和可能的内容。
    3. 服务器接到请求后,给与相应的相应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容。
    4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开链接。
  • 常用的 HTTP 方法
    • GET:用于请求访问已经被 URL(统一资源标识符)识别的资源,可以通过 URL 传参给服务器。
    • POST:用于传输信息给服务器,主要功能与 Get 方法类似,但一般推荐 POST 方式。
    • PUT:传输文件,报文主体包含文件内容,保存到对应 URL 位置。
    • DELET:删除文件,与 PUT 方法相反,删除对应 URL 位置的文件。
    • HEAD:获取报文首部,与 GET 方法类似,只是不返回报文主体,一般用于验证 URL 是否有效。
    • OPTIONS:查询相应 URL 支持的 HTTP 方法。
  • HTTP 相关的状态码
    • 1xx: 提示信息--表示请求已接收,继续处理
    • 2xx:成功--表示请求已被成功接收
    • 3xx:重定向--要完成请求必须进行更进一步的操作
    • 4xx:客户端错误--请求有语法错误或请求无法实现
    • 5xx:服务器错误--服务器未能实现合法的请求

请求报文:

  • 请求行(GET/HTTP/1.1)
    • 包含:http 方法、页面地址、http 协议、版本
  • 请求头
    • key、value 值来告诉服务端要那些内容,注意哪些类型
  • 空行
    • 当遇到空行就知道不在是请求头部分了,就该当请求体来解析了
  • 请求体

响应报文:

  • 状态行(HTTP/1.1 200OK--http 状态码)
  • 响应头
    • key、value 值来告诉服务端要那些内容,注意哪些类型
  • 空行
  • 响应体
    • 比如:给的 html 文档就是响应体部分

POST 和 GET 的区别

  1. GET 在浏览器回退时是无害的,而 POST 会再次提交请求
  2. GET 产生的 URL 地址可以被收藏,而 POST 不可以
  3. GET 请求会被浏览器主动缓存,而 POST 不会,除非手动设置
  4. GET 请求只能进行 url 编码,而 POST 支持多种编码方式
  5. GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留
    • 想把参数留在浏览器历史记录里用 GET,做业务开发的时候为了防止 crsf 攻击,公司里都把 GET 请求改成 POST,
    • 如果业务需要把参数留在浏览器历史记录中记得把 POST 改成 GET;
  6. GET 请求在 URL 中传送的参数是有长度限制的(2kb),而 POST 没有限制
    • 如果用的是 GET 请求,拼接的 url 不要太长,否则会被浏览器截断,因为 http 协议对这个长度是有限制的,
    • 发不出去,导致截断这种情况,一旦被截断,你的服务器拿不到正确的地址。
  7. 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制
  8. GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息
  9. GET 参数通过 URL 传递,POST 放在 Request body 中

从输入 URL 到页面加载发生了什么?

  • 总体来说分为以下几个过程:
  • DNS 解析
  • TCP 连接
  • 发送 HTTP 请求
  • 服务器处理请求并返回 HTTP 报文
  • 浏览器解析渲染页面
  • 连接结束
所以访问一个网页的流程是这样的:
http://www.baidu.com
1、通过域名查询DNS系统找到IP地址
2、通过IP地址找到百度的服务器
3、通过80端口找到百度服务器上的应用程序Apache或者nginx等
4、服务器返回网页内容,
5、浏览器把内容渲染成页面

wamp

  • 配置说明

ip 地址和端口号

  • IP 地址用来定位计算机
  • 端口号用来定位具体的应用程序
  • 一切需要联网通信的软件都会占用一个端口号
  • 端口号的范围从 0-65536 之间
  • 在计算机中一些默认的端口号最好不要去用
    • 如 http 服务的 80 端口