《图解HTTP》第1章 了解Web及网络基础

《图解HTTP》第1章 了解Web及网络基础

  • 1. 使用 HTTP 协议访问 Web
    • 1.1 网络基础 TCP/IP
    • 1.2 TCP/IP 协议族
      • 1.2.1 TCP/IP 的分层管理

1. 使用 HTTP 协议访问 Web

Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议) 的协议作为规范,完成从客户端到服务器端等一系列运作流程。而协议是指规则的约定。可以说,Web 是建立在 HTTP 协议上通信的。 – 《图解HTTP》

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而 消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。-- 百度

1.1 网络基础 TCP/IP

为了理解 HTTP,我们有必要事先了解一下 TCP/IP 协议族。

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

1.2 TCP/IP 协议族

计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

在这里插入图片描述

协议中存在各式各样的内容。从电缆的规格到 IP 地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及 Web 页面显示需要处理的步骤,等等。

像这样把与互联网相关联的协议集合起来总称为 TCP/IP。也有说法认为,TCP/IP 是指 TCP 和 IP 这两种协议。还有一种说法认为,TCP/IP 是在 IP 协议的通信过程中,使用到的协议族的统称。

1.2.1 TCP/IP 的分层管理

TCP/IP 协议族里重要的一点就是分层。TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。

把 TCP/IP 层次化是有好处的。比如,如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。

值得一提的是,层次化之后,设计也变得相对简单了。处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对方在地球上哪个地方、对方的传输路线是怎样的、是否能确保传输送达等问题。

TCP/IP 协议族各层的作用如下:

  • 应用层:应用层决定了向用户提供应用服务时通信的活动,TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(FileTransfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。
  • 传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission ControlProtocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。
  • 网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
  • 链路层:用来处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

//TODO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JBoss Forge NetBeans集成–入门

JBoss Forge是构建基于Maven的Java EE项目的最快方法。 因此,它已经具有了令人敬畏的功能,使您作为开发人员的生活更加轻松。 在大多数情况下,使用Forge的人们可能会对创建Web应用程序感兴趣。 有很多入门Forge基础的方法。 您可以查看quick…

java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗

我有一個簡單的關係測試,我試圖運行使用Rest API創建一個獨特的節點(java-rest-binding)https://github.com/neo4j/java-rest-binding但不幸的是我被困在某些東西上,這裏是細節:(非唯一的節點和關係工作完全正常,與這一點&#xf…

Nifty JUnit:在方法和类级别上使用规则

如Nifty JUnit:使用临时文件一文中所示 ,可以在JUnit测试中使用Rule ,这是方法级别的规则。 在此示例中,我想显示ClassRule用于类级别规则的变体。 方法规则 Rule在测试类的每个测试方法(就像Before )之前…

SQL语法的重要知识点总结

好几年没写SQL语句了。现在到了新的team,需要用到数据库。作为QA的话时常需要使用客户端工具连接到数据库中找寻或修改数据。这么长时间没使用,一些SQL的使用技巧都忘得差不多了。晚上看了一些资料,花了1个多小时又捡起了曾经的知识。现在总结…

java语法定制混淆,由撇号混淆的textpad语法高亮显示

我想知道在textpad的语法文件中放置什么来修复问题,例如,在html文件中,你正在写一个段落,而撇号会创建语法高亮,直到下一个aspostrophe .例如:Hi, I m an example.lol text here placeholder lorem ipsum I…

您需要了解的有关默认方法的所有信息

因此,默认方法是……昨天的新闻,对不对? 是的,但是使用一年后,积累了很多事实,我想将这些事实收集在一个地方,供刚开始使用它们的开发人员使用。 甚至有经验的人都可以找到他们不知道的一两个细…

RAC+ASM在单机上恢复的过程

IT168技术文档】网上也有类似的例子,但不尽详细,也没多花心思解释流程及原因,可能对初试者不太解惑。有感于此,故认真整理了恢复步骤即操作流程,望有助于同行朋友。 环境:正式环境是IBM4IBM5(RAC)&#xf…

php event_base_new,php event拓展基本使用

php event拓展基本使用2019-02-04 22:02:28(527)1. 确定io复用类型(select/poll/epoll)php$cfg new EventConfig();$cfg->avoidMethod("select");$cfg->avoidMethod("epoll");$base new EventBase($cfg);$sig Event::signal($base, SIGTERM, func…

OSGi服务测试助手:ServiceRegistrationRule

OSGi服务测试可以有效避免与悬挂的服务引用有关的问题。 就像我在写简单服务贡献验证中所承诺的那样,这次我引入了一个JUnit规则 ,该规则有助于测试组件之间的交互。 OSGi服务测试组件交互 假设我们有一个服务,该服务通知根据whiteboard-pat…

php 在函数里打开链接,JavaScript中打开链接的几种方法介绍

如何使用JavaScript打开链接?本篇文章我们就来看看使用JavaScript打开链接的几种方法介绍。我们先来看一段代码使用Javascript实现打开链接,需要在location.href中替换要打开的链接的URL。location.href http://www.php.cn/blog.html;通过上述代码我们可…

三代基因组测序技术原理简介

考虑到cnblog不适合基因组领域这种类型的文章, 最终,我自己开通了公众号:碱基矿工,欢迎感兴趣的同学关注! 也可以关注我的知乎:https://www.zhihu.com/people/yellowtree/activities 2018年1月修改&#x…

Java并发教程–锁定:显式锁定

1.简介 在许多情况下,使用隐式锁定就足够了。 有时,我们将需要更复杂的功能。 在这种情况下, java.util.concurrent.locks包为我们提供了锁定对象。 当涉及到内存同步时,这些锁的内部机制与隐式锁相同。 区别在于显式锁提供了其他…

POJ 1422 Air Raid (最小路径覆盖)

题意 给定一个有向图&#xff0c;在这个图上的某些点上放伞兵&#xff0c;可以使伞兵可以走到图上所有的点。且每个点只被一个伞兵走一次。问至少放多少伞兵。 思路 裸的最小路径覆盖。 最小路径覆盖 【路径覆盖】在一个有向图G(V, E<u,v>)中&#xff0c;路径覆盖就是在图…

自编码网络粒子群matlab,粒子群算法优化BP

这是数据1999 1611 1746 1277 753 323 229 7.10561325 1064 1414 1026 430 191 153 24.54521125 839 1197 857 301 168 139 …

在非托管对象中使用Spring托管Bean

即使我们想使用现有的最佳和最新技术&#xff0c;我们也必须处理遗留代码。 想象一下&#xff0c;新代码是用Spring框架的最新技术编写的&#xff0c;而旧代码根本不是用Spring编写的。 然后在非托管Spring对象中使用Spring托管Bean是我们必须处理的模式之一。 遗留代码具有非托…

lda php,主题模型︱几款新主题模型——SentenceLDA、CopulaLDA、TWE简析与实现

[导读]百度最近开源了一个新的关于主题模型的项目。文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型&#xff1a;LatentDirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。一、Familia简介帮Familia&#xff0c;打个小广告~ F…

Spring项目中的Netflix Archaius属性

Archaius基础 Netflix Archaius是用于管理应用程序配置的库。 考虑一个属性文件“ sample.properties”&#xff0c;其中包含一个名为“ myprop”的属性&#xff1a; mypropmyprop_value_default这是使用Archaius加载文件的方式&#xff1a; ConfigurationManager.loadCascad…

linux进程之间传递句柄

参考网上的实现&#xff0c;进行了一点改进&#xff0c;本来想用FIFO实现的&#xff0c;后来发现不行&#xff0c;必须使用系统的sendmsg函数&#xff0c;代码格式有点乱&#xff0c;不过功能可以实现&#xff0c;改天有空整理一下~~ 讲究看哈~ #include <sys/types.h>#i…

php 中间代码,PHP内核中用户函数、内部函数和中间代码的转换

昨天和一朋友在邮件中讨论这样一个问题&#xff1a;zend_internal_function&#xff0c;zend_function&#xff0c;zend_op_array这三种结构是可以相互转化的&#xff0c;这三者的转化是如何进行的呢&#xff1f; 以此文&#xff0c;总结。在函数调用的执行代码中我们会看到这样…

Byteman –用于字节码操纵的瑞士军刀

我正在JBoss的许多社区中工作&#xff0c;有很多有趣的事情要谈论&#xff0c;以至于我自己无法将自己的每一分都缠住。 这就是为什么我非常感谢有机会不时地欢迎客座博客的主要原因。 今天是Jochen Mader&#xff0c;他是以代码为中心的书呆子群的一部分。 目前&#xff0c;他…