热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

读书笔记之《图解HTTP》

读书笔记之《图解HTTP》

一、了解 Web 及网络基础

(一)使用 HTTP 协议访问 Web

本书没有上面就是硬生生的讲概念,而是用一个问题引出 HTTP当我们在浏览器的地址栏中输入 URL 时,Web 页面是如何呈现的?

然而书上也没有很官方的给出回答,只是说信息被发往某处,然后从某处返回一个页面就是咱们看到的页面。接着说到,像这种从服务器获取文件资源等信息的,都可以被称为客户端,返回结果(响应)的被称为服务器。也就是说,客户端跟服务器之间是存在通信的,那么它们之间到底是如何通信的呢,客户端又是怎么精确的找到服务器上的资源呢?这里面一切的一切都是 HTTP 规定的,对的,HTTP 就是一个协议,它规定着客户端与服务器通信的准则。

(二)HTTP 的诞生

HTTP 协议,全称为 HyperText Transfer Protocol 意为超文本传输协议。它诞生于20世界90年代,起初诞生的设想是用于让远隔两地的研究者们共享知识。最初设想的基本理念:借助多文档之间相互关联形成的超文本,连成可相互参阅的 WWW(World Wide Web),万维网WWW 是浏览器当年用来浏览超文本的客户端应用程序时的名称。现在则用来表示这一系列的集合,也可以称为 Web

(三)网络基础 TCP/IP

要把 HTTP 说清楚还得先从 TCP/IP 开始,因为通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的,而 HTTP 属于它内部的一个子集。计算机与网络设备要相互通信,双方就必须基于相同的方法。 比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎么结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议。

1. 分层管理

TCP/IP 协议族里重要的一点就是分层管理。TCP/IP 协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层。 分层是有好处的,比如,如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够***改动了(感觉这跟分模块开发或者说跟微服务是同一个思想,分而治之)。

  • 应用层
    应用层决定了向用户提供应用服务时通信的活动,HTTP 协议正是处于该层。

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

  • 网络层
    网络层用来处理在网络上流动的数据包。 数据包是网络传输的最小数据单位(打游戏的都知道丢包率或者丢包的概念,这里所丢的包其实就是数据包)。该层规定了通过怎样的路径到达对方计算机,并把数据包传送给对方。

  • 链路层(又称为数据链路层,网络接口层)
    用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动等物理可见部分。

2. TCP/IP 通信传输流

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

读书笔记之《图解HTTP》
HTTP 来举例:发送端的客户端在应用层发出了一个 HTTP 请求,接着,为了传输方便,在传输层把应用层收到的数据(HTTP报文)进行分割,并在各个报文上标记序号以及端口号转发给网络层。在网络层,增加作为通信目的地的 MAC 地址后转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。

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

(四)与 HTTP 关系密切的协议:IPTCPDNS

1. 确保可靠性的 TCP 协议

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

​ 为了准确无误将数据送达目标处,TCP 协议采用了三次握手策略。用 TCP 协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。

​ 握手过程中使用了 TCP 的标志 —— SYNACK。发送端首先发送一个带有 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据,代表握手结束。若在握手过程中某个阶段中断,TCP 协议会再次以相同的顺序发送相同的数据包。

读书笔记之《图解HTTP》

2. 负责传输的 IP 协议

按层次分,IP 协议位于网络层,作用是把数据包传送给对方。而要确保信息传送过去则需要满足各种各样的条件,比如说最重要的条件是 IP 地址和 MAC 地址。IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对,IP 地址可变换,但 MAC 地址基本不会改变。

IP 间的通信依赖于 MAC 地址。在网络上,通信的双方在同一局域网内的情况是很少的,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议。ARP 协议是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。

3. 负责域名解析的 DNS 服务

DNS ,全称为 Domain Name System ,意为:域名系统,是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。

读书笔记之《图解HTTP》

4. HTTP 与各种协议的关系

读书笔记之《图解HTTP》
待续~


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 第8章 使用外部和内部链接
    8.1使用web地址LearnAboutafricanelephants. ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • SharePoint 指定配置数据库访问账户“域账户\用户”
    大家在安装sharepoint时都会遇到这个问题,域账户,什么是域账户哪?域账户简单理解就是网路账户,与本地账户不同,什么是域哪?域就是控制器。一台Windows计算机,它要么隶属 ... [详细]
  • linux6.5 配置邮件服务,centos 6.5服务器搭建邮件服务postfix和dovecot
    centos6.5搭建邮件服务postfix和dovecot------------------------------------------------安装DNS指定邮件交换记 ... [详细]
author-avatar
手机用户2702934510
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有