文章转自:https://blog.csdn.net/weixin_43914604/article/details/105901440

学习课程:《2019王道考研计算机网络》

学习目的:利用最省时间的方法学习考研面试中的计算机网络。


1、www万维网

(1)什么是万维网?

  • 万维网(World Wide Web, WWW)是一个资料空间,在这个空间中:

    一样有用的事物称为一样“资源”,并由一个全域“统一资源定位符”(URL)标识。

    这些资源通过超文本传输协议(HTTP)传送给使用者,通过单击链接来获取资源。
  • 万维网使用链接的方法能让用户非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
  • 超文本标记语言(Hyper Text Markup Language,HTML)使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面。

(2)万维网的组成

万维网的内核部分是由三个标准构成的:

  • 1)统一资源定位符(URL)。 负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL。
  • 2)超文本传输协议(HTTP)。 一个应用层协议,它使用TCP连接进行可靠的传输,HTTP是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
  • 3)超文本标记语言(HTML)。 一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。

(3)URL——统一资源定位符

  • URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁表示。URL相当于一个文件名在网络范围的扩展。
  • URL的一般形式是: <协议>://<主机>:<端口>/<路径>。

    常见的<协议>有http、ftp 等;

    < (主机>是存放资源的主机在因特网中的域名,也可以是IP地址;

    <端口>和<路径>有时可以省略。
  • 在URL中不区分大小写。

(3)万维网工作流程

  • 万维网以客户/服务器方式工作。
  • 浏览器是在用户计算机上的万维网客户程序,而万维网文档所驻留的计算机运行服务器程序,这台计算机称万维网服务器
  • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的文档。工作流程如下:

    ① Web 用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。

    ② Web服务器把URL转换为文件路径,并返回信息给Web浏览器。

    ③ 通信完成,关闭连接。

2、HTTP——超文本传输协议

  • HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
  • 从层次的角度看,HTTP是面向事务的(Transaction-oriented) 应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

(1)HTTP操作过程

  • 在浏览器和服务器之间的请求与响应的交互,必须遵循规定的格式和规则,这些格式和规则就是HTTP。
  • 因此HTTP有两类报文:

    请求报文(从Web客户端向Web服务器发送服务请求)

    响应报文(从Web服务器对Web客户端请求的回答)。
  • 从协议执行过程来说,浏览器要访问WWW服务器时,首先要完成对www服务器的域名解析
  • 一旦获得了服务器的IP地址,浏览器就通过TCP向服务器发送连接建立请求。万维网的大致工作过程如图所示

  • 每个万维网站点都有一个服务器进程,它不断地监听TCP的端口80(默认),当监听到连接请求后便与浏览器建立连接
  • TCP连接建立后, 浏览器就向服务器发送请求获取某个Web页面的HTTP请求
  • 服务器收到HTTP请求后,将构建所请求Web页的必需信息,并通过HTTP响应返回给浏览器。
  • 浏览器再将信息进行解释, .然后将Web页显示给用户。
  • 最后,TCP连接释放

用户单击鼠标后所发生的事件按顺序如下(以访问清华大学的网站为例):

1)浏览器分析链接指向页面的URL (http://www.tsinghua.edu.cn /chn/index.htm)。

2)浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。

3)域名系统DNS解析出清华大学服务器的IP地址。

4)浏览器与该服务器建立TCP连接(默认端口号为80)。

5)浏览器发出HTTP请求: GET /chn/index.htm.

6)服务器通过HTTP响应把文件index.htm 发送给浏览器。

7) TCP连接释放。

8)浏览器解释文件index.htm,并将Web页显示给用户。

(2)HTTP特点

HTTP是无状态的。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。

HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

在实际应用中,通常使用Cookie 加数据库的方式来跟踪用户的活动(如记录用户最近浏览的商品等)。

Cookie 是一个存储在用户主机中的文本文件,里面含有一串“识别码”,如“123456”,用于Web服务识别用户。

Web服务器根据Cookie就能从数据库中查询到该用户的活动记录,进而执行一些个性化的工作,如根据用户之前浏览过的商品向其推荐新产品等。

HTTP采用TCP作为运输层协议,保证了数据的可靠传输

HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。

但是,HTTP本身是无连接的。也就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接

HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。

  • 对于非持久连接每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个TCP连接,如下图6.12所示(第三次握手的报文段中捎带了客户对万维网文档的请求)。

    也就是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。

  • 持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求与响应报文,如上图6.13所示。
  • 持久连接又分为非流水线流水线两种方式。

    对于非流水线方式,客户在收到前一个响应后才能发出下一个请求;

    HTTP/1.1 的默认方式是使用流水线的持久连接。这种情况下,客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个地连续发出对各个引用对象的请求。如果所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流水线方式那样,每个引用都必须有1个RTT延迟。

(3)HTTP报文结构

  • HTTP是面向文本的(Text-Oriented), 因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。有两类HTTP报文:

    ●请求报文: 从客户向服务器发送的请求报文

    ●响应报文: 从服务器到客户的回答
  • HTTP请求报文和响应报文都由三个部分组成。

    这两种报文格式的区别是开始行不同。
  • 开始行:用于区分是请求报文还是响应报文。

    请求报文中的开始行称为请求行

    响应报文中的开始行称为状态行

    开始行的三个字段之间都以空格分隔,最后的“CR"和“LF”分别代表“回车”和“换行”

请求报文的“请求行”有三个内容:方法、请求资源的URL及HTTP的版本

  • 其中,“方法”是对所请求对象进行的操作,这些方法实际上也就是一些命令。HTTP请求报文中常用的几个方法:

  • 首部行:用来说明浏览器、服务器或报文主体的一些信息。

    首部可有几行,但可不使用。

    在每个首部行都有首部字段名和它的值,每行在结束的地方都要有“回车”和"换行”。

    整个首部结束时,还有一空行将首部行和后面的实体主体分开。
  • 实体主体:在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。

(4)WireShark捕获HTTP报文实例

  • 请求报文



  • 响应报文

3、常用应用程序的协议及端口号

万维网www与HTTP协议的更多相关文章

  1. 对TCP/IP网络协议的深入浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  2. iOS网络协议 HTTP/TCP/IP浅析

    一.TCP/IP协议       话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电 ...

  3. 转:对TCP/IP网络协议的深入浅出归纳

    转自:http://blog.jobbole.com/74795/ 前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没 ...

  4. 计算机网络——TCP/IP协议族详解

    一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...

  5. 对TCP/IP网络协议的深入浅出归纳(转)

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

  6. 深入浅出TCP/IP协议

    目录 什么是网络协议? 谁来制定这个网络协议? TCI/IP协议 什么是socket? http协议属于应用层还是传输层? soap可以使用HTTP协议进行传输吗? 各层协议举例 什么是网络协议? 话 ...

  7. TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP

    TCP/IP,HTTP,SOAP等协议之区别   术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...

  8. 计算机网络——OSI、TCP/IP协议族详解

    一.OSI七层协议体系结构域TCP/IP四层体系结构对比 ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是 ...

  9. OSI与TCP/IP各层的结构与功能,都有哪些协议

    前言: 今天更新一下计算机网络的一些非常重要的知识,可能很多人都不知学计算机网络有什么用,我想说的是它真的比较重要,像咱们学校只要是学计算机这个专业都要学习这门课程.另外大家要是去一些像BAT,阿里, ...

随机推荐

  1. RabbitMQ核心知识总结!

    本文已经收录到github仓库,此仓库用于分享Java相关知识总结,包括Java基础.MySQL.Spring Boot.MyBatis.Redis.RabbitMQ.计算机网络.数据结构与算法等等, ...

  2. Python脚本运行出现语法错误:IndentationError:unexpected indent

    对于py来说典型错误就是缩进,,烦不胜烦,整理一下解决方法:一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: Indentation ...

  3. 论文解读(DGI)《DEEP GRAPH INFOMAX》

    论文标题:DEEP GRAPH INFOMAX 论文方向:图像领域 论文来源:2019 ICLR 论文链接:https://arxiv.org/abs/1809.10341 论文代码:https:// ...

  4. UVA 1572 Self-Assembly(拓扑排序)

    1 // 把一个图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v的前面. 2 // 在图论中,这个问题称为拓扑排序.(toposort) 3 // 不难发现:如果图中存在有向环,则不存在拓 ...

  5. 抽奖之Flash大转盘

    1.搭建JS与Flash互通的环境 function thisMovie(movieName){ if (window.document[movieName]) { return window.doc ...

  6. C# lambda 实现 Ascii 排序

    var dir = new Dictionary<string, string>();            dir.Add("channelId", "1& ...

  7. windows系统升级python

    卸载python最干净的办法 https://blog.csdn.net/ic_zswdbk/article/details/88315779?utm_medium=distribute.pc_rel ...

  8. 使用php函数 json_encode ,数据存入mysql

    $data = json_encode($array); // 过滤 $data = addslashes($data); // 插入数据库 $db->insert($table_name,ar ...

  9. HTML 网页开发、CSS 基础语法——五. 编辑器

  10. Superedge的新特性和未来之路

    作者 王冬,腾讯云高级研发工程师,专注于Kubernetes.容器等云原生领域,SuperEdge 核心开发人员,现负责腾讯云边缘容器TKE Edge私有化相关工作. 背景 2021年9月27号,,在 ...