1.1 使用 HTTP 协议访问 Web:

  根据 Web 浏览器地址栏中指定的URL,从服务端获取资源等信息,在页面上展示。

  Web 使用一种 HTTP (超文本传输协议)作为规范,完成从客户端到服务端等一系列流程。

  Web 是建立在 HTTP 协议上通信的。

  

1.2 HTTP 的诞生:

  1989-3,CERN(欧洲核子研究组织)蒂姆·伯纳斯-李(Tim Berners-Lee)博士提出一种能让远隔两地的研究者们共享知识的设想。

  基本设计理念:借助多文档之间相互关联形成的超文本(HyperText),连城和相互参阅的 WWW(World Wide Web,万维网)。

  三项WWW构建技术:

  •   把SGML(Standard Generalized Markup Language,标准通用标记语言)作为页面的文本标记的HTML(Hyper Markup Language,超文本标记语言);
  •   作为文档传递协议的HTTP
  •   指定文档所在的地址的URL(Unuform Resource Locator,统一资源定位符)

  1996 年 5 月,HTTP 1.0

  1997 年 1 月,HTTP 1.1 是目前主流的 HTTP 协议版本

  小结:HTTP协议的出现主要是为了解决文本传输的难题  

1.3 网络基础 TCP/IP

  通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的。HTTP 属于它内部的一个子集。

  计算机与网络设备要相互通信,双方必须基于相同的方法,相同的规则。这种规则称为协议(Protocol)。

  

  协议中存在各种各样的内容,像这样把互联网关联的协议集合起来总称为 TCP/IP 协议。协议族的统称。

  TCP/IP 协议族分层:应用层、传输层、网络层、数据链路层。

  应用层:决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务,如 FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name Service,域名系统)服务就是其中两类。HTTP协议也处于该层。

  传输层:提供处于网络连接中的两台计算机之间的数据传输。该层有两种协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol, 用户数据报协议)。

  网络层:用来处理在网络上流动的数据包。数据包是网络传输的最小单位。该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。

  链路层:用来处理网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC,及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。

  

  利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往上走。

  例如,客户端在应用层(HTTP协议)发出一个想看某个Web页面的 HTTP 请求。

  接着为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文打上标记序号及端口号后转发给网络层。

  在网络层(IP协议),增加作为通信目的地的 Mac 地址后转发给链路层。这样一来,发送网络的通信请求就准备齐全了。

  接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。

  

  发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。

  这种把数据信息包装起来的做法称为封装(encapsulate)。

1.4 与 HTTP 关系密切的协议:IP、TCP、DNS:

  负责传输的 IP(Internet Protocol) 协议。IP 协议的作用是把各种数据包传送给对方。要保证确实传送到对方那里,则需要满足各类条件。 IP 地址 和 MAC 地址。

  IP 地址指明了节点被分配到的地址,Mac 地址是指网卡所属的固定地址。IP 地址可以和 Mac 地址进行配对。IP 地址可变换,但 Mac 地址基本上不会更改。

  ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 Mac 地址。

  TCP 位于传输层,提供可靠的字节流服务。为了传输方便,将大块数据分割成以报文段(Segment)为单位的数据包进行管理。而可靠的传输服务协议是指,能够把数据准确可靠地传给对方。。

  TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。

  为了准确无误地将数据送达到目的地,TCP 协议采用了三次握手策略。握手过程中使用了 TCP 的标志(flag)--SYN(synchronize)和 ACK(acknowledgement)。

  发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。

  若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。

  

1.5 负责域名解析的 DNS 服务

  DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。

  计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。

1.6 各种协议与 HTTP 协议的关系

  HTTP 协议职责:生成针对目标 Web 服务器的 HTTP 请求报文;

  TCP 协议职责:为了通信方便,将 HTTP 请求报文分割成报文段,把每个报文段可靠的传给对方;

  IP 协议的职责:搜索对方的地址,一边中转一边传送

  

1.7 URI 和 URL

  URI(Uniform Resource Identifier)统一资源标识符:是由某个协议方案表示的资源定位标识符。协议方案是指访问资源所使用的协议类型名称。

  常见的有 HTTP、FTP、mailto、telnet、File 等;

  URI 用字符串标识某一互联网资源,而URL 标识资源的地点(互联网上所处的位置)。

  URL 是 URI 的子集。

  

  URI 格式:

  

2.1 HTTP 协议用于客户端和服务端之间的通信:

  请求报文的构成:

  

  

2.3 HTTP 是不保存状态的协议:

  HTTP 是不保存状态的协议,即无状态(stateless)协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。

  使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。

  为了实现保存状态的功能,引入了 Cookie 技术。

2.4 请求 URI 定位资源:

  HTTP 协议使用 URI 定位互联网上的资源。当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求 URI 包含在内。

2.5 告知服务器意图的 HTTP 方法:

  GET 方法用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。

    如果请求的资源是文本,那就保持原样返回;如果是像 CGI(Common Gateway Interface,通用网关接口)那样的程序,则返回经过执行的输出结果。

  POST 方法用来传输实体的主体。一般用 POST 方法传输实体的主体。POST 的主要目的并不是获取响应的主体内容。

  PUT:传输文件 ,像 FTP 协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到指定 URI 指定的位置。

    PUT 方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般 Web 网站不使用该方法。

  Head:获取报文首部,不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等。

  DELETE:删除文件:delete 方法按请求 URI 删除指定的资源。不带验证机制,一般的 Web 网站不用。当配合 Web 应用程序的验证机制,或遵守 REST 标准时还是有可能开发使用。

  OPTIONS:方法用来查询对请求 URI 指定的资源支持的方法。

  TRACE:方法是让 Web 服务器将之前的请求通信环回给客户端的方法。发送请求时,在 Max-Forward 首部字段中填入数值,每经过一个服务器端就将该数字减 1,当数值刚好减到 0 时,就停止传输,最后接收到请求的服务端则返回状态码 200 OK 的响应。

  

  CONNECT:要求用隧道协议连接代理,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,安全传输层)协议把通信内容加密后经网络隧道传输。

2.6 使用方法下达命令:

  

  

  

2.7 持久连接节省通信量

  HTTP keep-alive 特点,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。这样做减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务端的负载。另外,减少开销的那部分时间,

  

  

  

  

【读书笔记】图解HTTP完整流程的更多相关文章

  1. TIJ读书笔记02-控制执行流程

      TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决 ...

  2. struts 2读书笔记-----struts2的开发流程

    一.将struts 2的lib文件夹下地commons-fileupload.jar.commons-io.jar.freemarker.jar.javassist.jar.ognl.jar.stru ...

  3. 读书笔记---<<图解HTTP>>(一)

    一.了解Web及网络基础 1. 网络基础TCP/IP 通常使用的网络包括互联网都是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集. 1.1 TCP/IP协议族 像这样吧与互联网关联 ...

  4. hadoop学习day1环境配置笔记(非完整流程)

    hdfs的工作机制: 1.客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户 ...

  5. Learning The Bash Shell读书笔记(整理)

    最近搞了一本书 Learning Bash Shell,发现有人已经写了阅读笔记,我就在这边整理一下 来自blog:http://blog.sina.com.cn/n4mine Learning Th ...

  6. 《C#图解教程》读书笔记之六:接口和转换

    本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.接口那点事儿 (1)什么是接口? 一组函数成员而未实现的引用类型.只有类和结构能实现接口. (2)从ICom ...

  7. 读书笔记——《图解TCP/IP》(1/4)

    读书笔记——<图解TCP/IP>(1/4) 经典摘抄 第一章 网络基础知识 1.独立模式:计算机未连接到网络,各自独立使用的方式. 2.广域网 WAN 局域网 LAN 城域网 MAN 3. ...

  8. 图解http读书笔记

    以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化.服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也 ...

  9. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

随机推荐

  1. Modelsim, Debussy联合仿真Xilinx

    http://wenku.baidu.com/view/8363d40003d8ce2f006623e9.html  另外一个博客 生成Xilinx库 先调用ISE的simulation librar ...

  2. Android输入法挤乱布局问题

    今天做布局的时候 嵌套的TbaleLayout里面有三行  但是准备输入的时候输入法自动将整个activity布局全部往上挤 导致输入框变小甚至消失  弄的很是郁闷 在网上查了之后  发现有些人是因为 ...

  3. redis常用配置参数

    首先弄清楚当前redis读取的是哪个配置文件,然后去配置文件修改,例如windows 打开服务列表,点击Redis,右键属性 "D:\Program Files\Redis\redis-se ...

  4. 快递查询API

    https://market.aliyun.com/products/56928004/cmapi014394.html#sku=yuncode839400000

  5. Git - git bash 在 windows 下创建软连接

    1. 概述 使用 git bash 在 windows 下创建软连接 或者叫 快捷方式 感谢 Tony 老师的帮助 Tony 的技术笔记 Windows 使用 ln -s 创建软链接 2. 问题 需求 ...

  6. find 报错 find: paths must precede expression:

    编写shell脚本,报错,如下面 [root@localhost backup]#find ./ -name mysqldump* -mtime +3 -delete [root@localhost ...

  7. 【Angular】关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep

    [Angular]关于angular引用第三方组件库无法改变其组件样式 :host ::ng-deep css修改:无效 .ant-input-affix-wrapper .ant-input:not ...

  8. 每天进步一点点------Sobel算子(2)

    转载  http://blog.csdn.net/tianhai110 索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值. ...

  9. windows线程同步的几种方式

    以下为main函数的测试代码 具体线程同步的实现代码请下载:https://github.com/kingsunc/ThreadSynchro #include <stdio.h> #in ...

  10. Linux kali添加root用户密码

    1.1.打开终端 2.输入命令: sudo passwd root