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

《图解HTTP》个人学习系列

本人在阅读《图解HTTP》的时候阅读的记录,多为对原书内容的精炼摘要,并在这初学之时结合个人的一些理解思考学习。有诸多不足,请多执教。如有

本人在阅读《图解HTTP》的时候阅读的记录,多为对原书内容的精炼摘要,并在这初学
之时结合个人的一些理解思考学习。有诸多不足,请多执教。如有侵权,则删。
由于笔者看的《图解HTTP》版本是2012年的,书中提出的协议内容和新技术等当今多数已经使用开来。且笔者是一个小白初学者,因此看和HTTP/1.0有关的内容时候仍有诸多未解、不明和困惑,希望笔者以及看到这的“ni”i不断努力探求知识。


《图解HTTP》个人读书与学习记录(文章链接)

《图解HTTP》第一章个人学习
《图解HTTP》第二章个人学习
《图解HTTP》第三章个人学习
《图解HTTP》第四章个人学习
《图解HTTP》第五章个人学习
《图解HTTP》第六章个人学习
《图解HTTP》第七章个人学习
《图解HTTP》第八章个人学习
《图解HTTP》第九章个人学习
《图解HTTP》第十章个人学习
《图解HTTP》第十一章个人学习






心得体会

各章分述:
第一章


HTTP为知识共享而诞生的协议,属于TCP/IP协议族里的协议之一。
我们浏览web时候web是如何实现的?数据怎么传的?网络是如何通信的呢?

利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
HTTP这个应用层协议和其他层的协议之间是什么一种关系?


第二章


HTTP协议是TCP/IP协议簇里的一个协议,是应用层的协议,用户客服端和服务器端的通信。那如何进行通信???
如果是人和人通信,线下就见个面打个招呼唠两句,线上那就发消息呗。
客户端和服务器就是在线上交流,用的”消息“叫做报文。说需求的一方的报文叫做请求报文,请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。回应需求的一方的报文是响应报文,响应报文由版本协议、状态码(标识成功或失败的数字代段)、用以解释状态码的原因语句,可选的响应首部字段以及实体主体构成。


提需求,五花八门需求对应的不同在请求报文里的方法,get获取资源、post传输实体主体、 put传输文件、head获得报文首部、 delete删除文件、 options询问支持的方法等传达信息从而更好地得到有针对性地响应。


事务总会不断发展,遇到问题,然后解决问题。本章就讲了HTTP发展过程里地两个问题并简单概要讲述如何解决这两个问题地方法。
问题一:HTTP协议的初始版本里,每进行一次HTTP通信就要断开一次TCP连接。同一个网站了访问好多好多次资源,那就给连接好多好多次,每一次请求都重新建立连还给得到响应,资源极大浪费怎么解决? 持久连接和管道化。
问题二:HTTP 协议自身不对请求和响应之间的通信状态进行保存。因此会使得在需要进行和用户判断身份等操作时候遇到困难,为解决这个问题就有COOKIE出现。本章就对COOKIE在客户端和服务器端的过程进行概述。

在学习java SE程序的时候,有Java Servlet,然后老看到Servlet COOKIE 处理,有这么一句话,java servlet支持http COOKIE。但是看了也不知是啥,也没去查查。《图解HTTP》算是给我解惑.。HTTP是一个不保存状态的协议,


第三章


本章从HTTP报文的结构谈起。报文是多行的数据构成的字符串文本。有发送就有接受,因此就会有HTTP的请求报文的和HTTP响应报文的,二者各是什么结构?本章进行的概述。请求报文包含着请求行、请求首部字段、通用首部字段、实体首部字段和其他;响应报文则包含着状态行、响应首部字段、通用首部字段、实体首部字段和其他。

用户体验永远是Web的一个重点考虑内容?本章简要的讨论几个和用户体验有关的内容。
第一、用户如何在客户端更快的收到服务器端传来的数据——压缩传输的内容编码和把实体主体分块传输。
第二、用户如何一次性得到多个不同类型的数据,比如同时获得文本+图片+视频?这就是HTTP协议里发送多种数据的多部份对象集合。
第三、客户端接受服务器端资源进行中却出现问题时候怎么办?HTTP协议里的获取部分内容的范围请求。
第四、用户在内容协商机制下(客户端和服务器对响应的资源进行交涉)如何被提供最适合的资源内容?


第四章


概述性的简单的讲述1XX\2XX\3XX\4XX\5XX状态码里的几种常见的状态码。
1XX状态码表示接受的请求正在处理
2XX状态码表示请求被正常处理了

200 OK
204 Not Found
206 Partial Content
3XX状态码表示重定向
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
4XX客户端错误
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
5XX服务器错误
500 Internal Server Error
503 Service Unavaiable


第五章


一台 Web 服务器可搭建多个独立域名的 Web 网站,利用虚拟主机的技术。因此发送请求到相同的ip地址是需要在送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。
通信路径上的中转服务器提升传输效率。

代理 代理是具有转发功能的应用程序,扮演位于服务器和客户端“中间人”的角色,接受从客户端发送到服务器的请求并转发给服务器。
网关 网关是转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,它可以向用于资源的服务器一样进行处理。客户端可能不会发现处理自己的请求的、自己通信的目标是网关。
隧道是相隔河源的客户端和服务器之间进行中转,并保持双发通信连接的应用程序。


第七章


网络安全的简单内容,可以了解到HTTPS是什么,这个通信机制可以有效的防止什么问题。
HTTP的三个问题:传输的内容被窃听,服务器无法确定,客户端无法确定。 通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成HTTP先和 SSL通信,再由 SSL和 TCP 通信了。采用 SSL后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。SSL是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和Telnet 等协议均可配合 SSL协议使用。 HTTPS如何进行加密呢? 比如两把密钥加密机制、混合加密机制
那HTTPS加密造成的一些不足是什么呢?HTTPS响应比HTTP慢。慢如何解决呢?主要的方法就是根据业务需求适合的使用HTTPS和HTTP请求。


第八章


第八章讲述的是 确认访问用户身份的认证。
计算机认证使用者的身份,需要核对的信息通常有密码、动态令牌、数字证书、生物认证等信息,以此确认使用者身份,提供进一步对应的服务。
章节里简述4种用户身份认证方式BASIC认证、DIGEST认证、SSL客户端认证、基于表单认证。其中各有优缺点。DIGEST 认证和 BASIC 认证被发明的时间早,但是使用上不那么便捷灵活,且仍达不到多数 Web 网站对高度安全等级的追求标准,易被攻击。
SSL客户端验证相比而来更安全,但是需要高昂的费用。
基于表单认证本身是通过服务器端的 Web 应用,将客户端发送过来的用户 ID 和密码与之前登录过的信息做匹配来进行认证的。是当今流行的一种方式。


第九章


第九章介关于HTTP/1.0发布后的追加协议。这些协议和技术的提出多数基于HTTP/1.0协议在Web不断发展的过程当中不能够继续满足需求而产生。比如消除HTTP瓶颈的SPDY.;使用浏览器进行全双工通信的WebSocket;期盼已久的HTTP/2.0;Web服务器管理文件的WebDAV等。


第十章


第十章讲述构建Web内容的技术。Web的静态内容主要由HTML实现,动态内容借助Javascript实现。Web的数据常用XML/JSON进行组织,发布更新信息i利用的RSS/Atom。同时简述了CGI和JAVA Servlet。


第十一章


第十一章讲述的是网络攻击有关的内容,从主动攻击和被动攻击两种攻击方式切入,以菜因输出值转义不完全引发的安全漏洞 、因设置或设计上的缺陷引发的安全漏洞、 因会话管理疏忽引发的安全漏洞、 其他安全漏洞四大内容展开讲解在网络里常见的网络攻击。



推荐阅读
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
author-avatar
手机用户2602915215
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有