图解HTTP

第一章

TCP/IP的分层管理

应用层:决定了向用户提供应用服务时的通信的活动。比如:FTP(文件传输协议),DNS(域名系统),HTTP

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

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

数据链路层:处理连接网络的硬件部分,比如,硬件的设备驱动,NIC,光纤

利用TCP/IP进行网络通信时,通过分层顺序与对方进行通信,发送端从应用层往下走,接收端则往应用层走。发送端在层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息。反之,接收层,每经过一层会把对应的首部消去。

负责传输的IP协议

IP(属于网络层),作用是把各种数据包传送给对方,保证确实传送到对方要满足的两个重要的条件是IP地址和MAC地址(网卡所属的固定地址)。IP间的通信依赖MAC地址(双方计算机通信都需要中转),路由选择就像送快递,分片(不管怎样,就是先中转)。

TCP(传输层)

提供了可靠的字节流服务。能够确认数据是否送到到对方(三次握手:用TCP协议把数据包发送后,会确认是否发送成功,握手中使用的标志:SYN和ACK,发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带SYN/ACK标志的数据包以传达确认信息,最后,发送端再回传一个带ACK标志的数据包,代表握手结束,若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包)。

负责域名解析的DNS服务(应用层)

因为人类的记忆习惯,才有的主机名或域名。DNS提供通过域名查找IP地址,或逆向查找的服务。发送端在DNS中找到相应的IP,发送端再去向此IP下的服务器发送请求

URL和URI

URL是URI的子集。URL就是地址栏输入的网址。URI就是某个协议方案表示的资源的定位标识符。采用HTTP协议是,协议方案就是http。URI用字符串标识某一互联网资源,而URL表示资源的地点。

第二章

HTTP是无状态协议,但为了实现保持状态的功能(譬如网站需要保持登录状态),于是引入了cookie。

HTTP使用URI定位互联网上的资源。因为URI,才能在互联网上的任意位置的资源都能访问到。

GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT

Cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的叫set-Cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务端接受到cookie后,会去检查从哪一个客户端发来的,然后对比服务器上的记录,得到之前的状态信息。

第三章 HTTP报文

编码提升传输速率,但是编码需要计算机完成,会消耗更多的CPU等资源。

常用的内容编码:gzip,compress,deflate,identity

分块传输编码:把实体主体分块的功能。(传输大量数据,把数据分割成多块,能够让浏览器逐步显示页面)

发送多种数据多部分对象集合,采用了MIME机制,来容纳多份不同类型的数据。相应的,HTTP协议中也采纳了多部分对象集合(需要在首部字段里加上content-type)。

获取部分内容(譬如图片下载了一半中断)的范围请求:会用到首部字段Range来指定资源的byte范围。

内容协商:包含在请求报文中的某些首部字段就是判断的基准,

第四章    返回结果的HTTP状态码

经常使用的14个状态码

200 OK

204 No Content  请求处理成功,但没有资源科返回

206  Partial  Content     表示客户端进行了范围请求,服务器执行成功了,响应报文中包含了由Content-Range指定范围的实体内容。

3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently   表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。

302 Found   表示请求的资源已被分配了新的URI,希望用户能使用新的URI访问。与301相似,但是区别是302状态码不是被永久移动,只是临时性质的。

303  See  Other  表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。与302功能相同,但303明确表明客户端应当采用GET方法获取资源

304  Not Modified  表示客户端发送附带条件的请求时,服务端允许请求访问资源,但未满足条件的情况。304状态码返回,不包含任何响应的主体部分,与重定向没有关系。

307  Temporary  Redirect 临时重定向,与302有相同的含义。

4XX   客户端错误

400  Bad Request  表示请求报文存在语法错误

401  Unauthorized   表示发送的请求需要有通过HTTP认证的认证信息。另外若之前已进行过一次请求,则表示用户认证失败。

403  Forbidden  表明对请求资源的访问被服务器拒绝了。

404  Not  Found   表明服务器上无法找到请求的资源。

5XX   服务器错误

500  Internal  Server  Error  表明服务器在执行请求时发生了错误

503   Service  Unavailable   表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

第五章

即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可假想已具有多台服务器。

第六章

时间: 2024-11-03 14:57:01

图解HTTP的相关文章

《C#图解教程》读书笔记之三:方法

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头-指定方法的特征,方法体-可执行代码的语句序列: (2)方法的调用:参数.值参数.引用参数.输出参数.参数数组: ①参数: 形参-本地变量,声明在参数列表中:形参的值在代码开始之前被初始化: 实参-实参的值用于初始化形参: ②值参数: 为形参在栈上分配内存,将实参的值复制到形参: ③引用参数: 不为形参在栈上分配内存,形参的参数名作为实参变量的别名指向同一位置,必须使用ref关

《C#图解教程》读书笔记之五:委托和事件

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执行它所"持有"的方法.如果从C++的角度来理解委托,可以将其理解为一个类型安全的.面向对象的函数指针. (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组合委托.为委托+=增加

ESXI6.5 最新版尝鲜安装图解

ESXI6.5安装图解

基于四元数的姿态解算算法图解

下面的两个地址是我存放在百度云网盘的附件,分别是基于四元数的互补滤波法的图解和梯度下降法的图解.笔者采用MindManager思维导图软件对上述两种算法进行详细的解释,非常形象. 希望这种方式能够让大家快速.准确的理解这两种算法的流程. 互补滤波法: http://pan.baidu.com/s/1c0b8qJ2 梯度下降法: http://pan.baidu.com/s/1sjI1l5F

【图解】javaScript组成结构

[图解]javaScript组成结构,布布扣,bubuko.com

【超实用】图解--如何使用本地的dtd文件映射

以前一直很苦恼,如果电脑上不了网,就比较麻烦了,自己在配置HIbernate的属性的时候,不知道属性名有没有写错.. 现在和大家分享一下,毕竟自己痛苦过了,大家不要和我一样痛苦. [超实用]图解--如何使用本地的dtd文件映射,布布扣,bubuko.com

【图解】VMware VCSA 6.5 安装部署

什么是vCSA?vCSA是一台预装了vCenter的SUSE Linux虚拟机.使用vCSA可以用来快速搭建自己的vCenter而节省大量的时间与工作量. 一.安装前准备工作 1.下载Vcsa 6.5安装包,6.5安装包仅有一个OVA文件. 2.准备Vmware虚拟化资源. 二.图解安装步骤: 1.建立VCSA虚拟机 2.选择OVA文件 3.选择存储位置 4.许可协议 7.选择部署类型(规模) 8.其他设置 a.网络配置 b.SSO(单点登录)目录密码 c.系统管理密码 d.用户体验计划 e.网

Idea破解步骤图解

Idea破解步骤图解 ? ? 准备安装文件 ? 准备文件路径 ? ? 开始安装步骤 ? ? ? ? ? ? ? ThisCrackLicenseId-{ "licenseId":"ThisCrackLicenseId", "licenseeName":"idea", "assigneeName":"", "assigneeEmail":"[email pro

《C#图解教程》读书笔记之四:类和继承

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.万物之宗:Object (1)除了特殊的Object类,其他所有类都是派生类,即使他们没有显示基类定义. (2)一个派生类只能有一个基类,叫做单继承. 二.基类那点事儿 (1)如何在派生类中访问基类成员?使用base关键字,如base.Field1: (2)如何屏蔽基类中某个方法或成员?在派生类定义的成员定义前使用new关键字: (3)如何使用基类的引用?这里可以借鉴里氏替换法则,创建指向派生类的基类对象. 三.小

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

本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.接口那点事儿 (1)什么是接口? 一组函数成员而未实现的引用类型.只有类和结构能实现接口. (2)从IComparable接口看接口实例: 假设有如下一段代码,它使用Array类的一个静态方法Sort对一个未排序的int类型数组进行排序,并输出排序后的结果. using System; class Program { static void Main() { var myInt = new[] { 20, 4, 1