Http - Web 基础概述

Http - Web 基础概述

唔。。。我真的是太菜了

[TOC]

一、HTTP报文

Http 报文分为请求报文(request)和响应报文(response),主要分三部分:

  • 1、起始行

    • 请求行:包含了一个方法和 URL(路径) 以及 HTTP 版本

    • 响应行:包含了 HTTP 版本,状态码和原因短语

    • 方法:

      分为常用的7种 HTTP 方法和对 HTTP 规范的扩展方法。

    • 状态码:

      状态码位于响应的起始行中;

      状态码数在每条响应报文的起始行中返回的;

    • 原因短语:

      通常与状态码成对出现,如200 OK(描述操作状态的、文本的形式的原因短语)

    • 版本号:

      注意,版本号不会被当做小数处理,2.22要比2.3要大

  • 2、首部(请求头、响应头、head)

    • 通用首部
    • 请求首部
      • Accept 首部
      • 条件请求首部
      • 安全请求首部
      • 代理请求首部
    • 响应首部
      • 协商首部
      • 安全响应首部
    • 实体首部
      • 内容首部(Content)
      • 实体缓存首部
  • 3、主体(请求体、响应体、body)

响应报文首部

二、URL

##1、URL 语法

://:@:/;;?&#

方案://用户名:密码@主机:端口/路径;参数1;参数2?查询字符串#片段

URI方案:http(80)、ftp(21)、https(443)、mailto、rtsp、rtmp(1935)、file、telnet(23)、ssh(22),以上为常用的,远不止这些

rtsp:Real Time Streaming Protocol:实时流传输协议

rtmp:Real Time Message Protocol :实时信息传输协议

2、一些常见的概念

(1) URI

URI(统一资源标识符)

  • URL(统一资源定位符)
  • URN(统一资源名)

(1)RFC

​ Request For Comments(RFC),是一系列以编号排定的文件。说白了就是 Internet标准定制文件。

​ 一个RFC文件在成为官方标准前一般至少要经历4个阶段【RFC2026】:因特网草案、建议标准、草案标准、因特网标准。

(3)事物

一个 HTTP 事物有一条请求命令和一条响应结果组成。

事物 = 请求 + 响应

(4)TCP

TCP:传输控制协议,是把东西从一个地方传到另一个地方用的。转发 HTTP 报文

TCP 客户端与服务器是通过套接字(socket)通信的。

HTTP 是应用层的,TCP 是传输层的。一个侧重应用,一个侧重传输。

作用:

  • 无差错的数据传输
  • 按序传输(数据总是按照发送的顺序到达目的地)
  • 未分段的数据流(可以在任意时刻以任意尺寸发送数据)(尺寸就是 Content-Length)

(5)隧道(tunnel)

定义:对 HTTP 报文进行盲转发的特殊代理。( 之所以敢盲转还是不因为加了一层 SSL)

(6)SSL

SSL(安全套接字层,)在 HTTPS 网络协议栈同 TSL 一样,属于安全层

(7)代理与 Agent 代理

这俩货其实不一样,前者指 proxy,用于在客户端和服务器之间转发流量;

后者是代表用户发起 HTTP 请求的客户端程序。(就是 web 机器人、爬虫)。

(8)报文流

不管报文是从客户端流入服务器,还是从服务器流入客户端,所有的报文都是像河水一样,下游流动。

HTTP 使用流入和流出描述事务处理的方向。

客服端\

​ 服务器

客户端/

三、连接管理

###1、OSI 七层协议和 TCP/IP 五层网络协议

总结为一句话:应表会、传网数物(五层协议中应表会为一层)。

###2、TCP 协议中的三次握手

总结为一句话:“船~来~了!船~来~了~吗?船~来~了。”之后服务器把船开往客服端。

3、TCP 慢启动(slow shtar)

TCP 会通过时间进行自我调谐。开始会限制连接的最大速度,如果数据传输成功,再慢慢提速。这种调谐被称为 TCP 慢启动。

新建了一座桥。汽车为了试试这个桥能不能走,先慢慢开过去,如果发现没问题,其他汽车再提速过去。

在提速的过程中,有个概念叫打开拥塞窗口

有一个车队要过一座桥。一开始先派一辆车过去,确认没事的话派两个车试试,如果还没事的话派四辆车过去,这个过程就叫打开拥塞窗口。

You forgot to set the qrcode for Alipay. Please set it in _config.yml.
You forgot to set the qrcode for Wechat. Please set it in _config.yml.
You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×