1、万维网概述

万维网以客户--服务器方式工作,万维网客户程序就是各式各样的浏览器,万维网文档所驻留的主机则运行服务器程序, 因此这个主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面(page)。因特网(Internet)提供的主要服务有万维网(WWW)、文件传输(FTP)、电子邮件E-mail、远程登录(Telnet)。

万维网使用统一资源定位符URL来标志万维网上的各种文档, 并使每一个文档在整个因特网的范围内具有唯一的标识符URL。万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议HTTP。HTTP 是一个应用层协议,它使用TCP连接进行可靠的传送。万维网使用超文本标记语言HTM,使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来。最后,用户可使用搜索工具在万维网上方便地查找所需的信息。

2、统一资源定位符URL

统一资源定位符URL是用来表示从因特网上得到的资源位置和访问这些资源的方法。这里所说的“ 资源” 是指在因特网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与因特网相连的任何形式的数据。由于访问不同对象所使用的协议不同, 所以URL还指出读取某个对象时所使用的协议。URL的一般形式由以下四个部分组成:

<协议>://<主机>:<端口>/<路径>

URL 的第一部分是最左边的协议,协议就是指出使用什么协议来获取该万维网文档,现在最常用的协议就是http (超文本传送协议HTTP),其次是ftp (文件传送协议FTP)。在协议后面是规定必须写上的格式://,不能省略。第二个部分是主机,它指出这个万维网文档是在哪一个主机上,这里的主机就是指该主机在因特网上的域名。第三和第四部分是端口和路径, 有时可省略。比如:http://www.baidu.com

对于万维网的网点的访问要使用HTTP协议,HTTP的默认端口号是80, 通常可省略。若省略路径,则URL就指到该域名上的主页。

3、超文本传送协议HTTP

HTTP 协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

每个万维网网站都有一个服务器进程,它不断地监听TCP 的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求(浏览器在第三次握手时将http请求报文作为TCP数据报的数据部分发送过去),服务器接着就返回所请求的页面作为响应。最后,TCP 连接就被释放了。在浏览器和服务器之间的请求和响应的交互, 必须按照规定的格式和遵循一定的规则,这些格式和规则就是超文本传送协议HTTP。

情景假设:用户点击链接,该链接指向清华大学院系设置页面:http:/ /www.tsinghua.edu.cn/chn/yxsz/index.htm,下面具体地说明在用户点击鼠标后所发生的几个事件:

(1 )浏览器分析链接指向页面的URL。
(2)浏览器向DNS请求解析 www.tsinghua.edu.cn 的 ip 地址。
(3)域名系统DNS解析出清华大学服务器的 ip 地址为166.111.4.100。
(4)浏览器与服务器建立TCP连接(在服务器端IP地址是166.111.4.100, 端口是80)。
(5)浏览器发出取文件命令:GET /chn/yxsz/index.html
(6)服务器 www.tsinghua.edu.cn 给出响应,把文件index.htm发送给浏览器。
(7)释放TCP连接。
(8 )浏览器显示“ 清华大学院系设置” 文件index.htm中的所有文本。

浏览器在下载文件时,可以设置为只下载其中的文本部分,要想查看其它内容可以用鼠标点击未显示完全的小图标,而每点击一次鼠标,就重复执行一次类似于上面的8个步骤。

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输,HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。HTTP协议本身是无连接的,这就是说,虽然HTTP 使用了TCP 连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。HTTP协议是无状态的:同一个客户第二次访问同一个服务器上页面时,服务器的响应与第一次被访问时的相同,服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。

3.1、代理服务器

代理服务器是一种网络实体,它又称为万维网高速缓存。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。代理服务器能有效减小访问因特网的时延,提高上网速度。

3.2、cookie

当页面浏览器允许使用cookie时,该网站的服务器就为用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在给用户的HTTP响应报文中添加一个叫做Set-cookie的首部行,Set-cookie后面有cookie的键值对。浏览器收到响应时就会将在存储cookie文件里在对应着这个特定域名的内容里将传过来的cookie键值对存储起来。在以后的每次往该服务器发http请求时,浏览器都会自动在http请求头的cookie字段里添加进这个cookie键值对,服务器通过接收到的cookie值就能知道是同一个用户的行为,以此达到追踪效果。

//后台代码
response.setHeader('Set-Cookie','token=cowshield');

http协议是无状态的,浏览器发送请求,服务器返回响应报文给浏览器,响应的Response Header中的Set-Cookie就是告诉浏览器为当前页面设置cookie。比如:响应头中有Set-Cookie: username=JasonChi,那么浏览器会在当前页面所在域名设置cookie字符串。当浏览器再次发送请求时,浏览器默认会自动将cookie中的字符串放在请求头中的Cookie项中发送给Web服务器。

网络体系应用层之万维网、http协议的更多相关文章

  1. 网络体系应用层之DNS系统

    1.概述 域名系统 DNS 是因特网使用的命名系统,用来把便于人们使用的机器名字(即域名)转换为 ip 地址. 用户与因特网上某个主机通信时,必须要知道对方的 ip 地址,然而用户很难记住长达32位二 ...

  2. Android网络编程(一)HTTP协议原理

    相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley使用方法全解析 A ...

  3. Android网络编程系列 一 TCP/IP协议族

    在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...

  4. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    本文原作者:“竹千代”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.前言 无论是即时通讯应用还是传统的信息系统,Http协议都是我们最常打交 ...

  5. HTTP简介,http是一个属于应用层的面向对象的协议

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. 网络编程之OSI七层协议略析

    OSI七层协议 1 物理连接层 用高低电平模拟二进制数01012 数据链路层 以太网协议,Ethernet,要求连入网络的计算机必要要有一块网卡,并且规定全球每一块网卡的mac 地址都不一样,用12位 ...

  7. 网络编程(二)--TCP协议、基于tcp协议的套接字socket

    一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...

  8. 网络体系之TCP/IP模型

    TCP/IP参考模型是因特网使用的参考模型,这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型.该模型将网络协议分为四层:网络接口层.网络层.运输层.应用层. TCP/IP协议不是TC ...

  9. 网络编程(二)——TCP协议、基于tcp协议的套接字socket

    TCP协议与基于tcp协议的套接字socket 一.TCP协议(流式协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的 ...

随机推荐

  1. Vue自定义事件:触发自定义事件

    一 项目结构 二 子组件(Mongo.vue) <template> <button @click="eat">按钮</button> < ...

  2. Support Vector Machine(3):Soft Margin 平衡之美

    很多材料上面讲道“引入Soft Margin的原因是因为数据线性不可分”,个人认为有些错误,其实再难以被分解的数据,如果我们用很复杂的弯弯绕曲线去做,还是可以被分解,并且映射到高维空间后认为其线性可分 ...

  3. Cross-entropy Cost Function for Classification Problem

    在Machine Learning的Regression Problem中,常用Quadratic Function来做Cost Function,用以表征Hypothesis与Y之间的差距.而通过G ...

  4. 企业SRC整理

    0.SRCs|安全应急响应中心 - 0xsafe 1.腾讯安全应急响应中心(TSRC) 2.360安全应急响应中心 3.京东安全应急响应中心(JSRC) 4.平安集团安全应急响应中心(PSRC) 5. ...

  5. Mac apache You don't have permission to access / on this server.

    在mac下配置完apache和php环境后,通过localhost访问页面,出现403Forbidden.页面提示: Forbidden You don't have permission to ac ...

  6. ubuntu18.04 安装 jdk

    1.当前路径(如果不想下载到当前路径,可以先cd到指定路径,再开始下载),官网下载JDK文件jdk-8u121-linux-x64.tar.gz $ wget https://download.ora ...

  7. SpringBoot项目FatJar同War之间的相互转换

    目录 1.原有的项目结构 修改后的项目结构 常见的dependency的scope 1.原有的项目结构 启动类 @SpringBootApplication(exclude = {DataSource ...

  8. [fw]拦截系统调用

    今天在ubuntu中玩了下“拦截系统调用”,记录下自己对整个实现的理解. 原理 在linux kernel中,系统调用都放在一个叫做“sys_call_table”的分配表里面,在进入一个系统调用的最 ...

  9. call和apply,函数伴侣

    Predefined:js中的this指向直接运行上下文. call和apply是ECMASCRIPT 3在函数原型上所定义的方法,目的在于改变或指定this的指向,从而改变函数直接执行上下文.两者的 ...

  10. js操作对象属性用点和用中括号有什么不同

    书读百遍其义自见 学习<JavaScript设计模式>一书时,学习工厂模式这一章节,发现了对象后使用中括号的情况,如下: var Factory=function(type,content ...