第一章 -- 了解Web及网络基础
网络基础 TCP/IP
1、定义
为了计算机和网络设备之间相互通信,定义的一系列标准,或者说准则。比如:如何探测到通信目标,由哪边先发起通信,使用什么语言通信,怎么结束通信。而TCP/IP是互联网各种协议族的总称。
2、分层
分为4层:应用层,传输层,网络层和数据链路层。
优点:某地方需修改的时候,修改指定部分即可,设计变简单。例如:应用层只需考虑分配自己的任务,而不需要弄清楚对方的地址,传输线路,能否传到等。。
应用层:决定了向用户提供应用服务时通信的活动。(比如:FTP,DNS,HTTP。。。)
传输层:提供处于网络连接中的两台计算机之间的数据传输。(比如:TCP,UDP)
网络层:处理网络上流动的数据包。数据包是网络传输的最小单位。规定了通过怎样的路径(传输路线)到达对方。就是在众多网络线路中选择一条网络线路将数据传送给对方。
链路层:用来处理连接网络的硬件部分。如:控制操作系统,硬件的设备驱动,NIC(网卡),光钎等物理可见部分和连接器等一切传输媒介。和硬件相关的范畴均在链路层的作用范围。
3、通信传输流
利用TCP/IP通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从底层往应用层走。
HTTP举例:
发送端(客户端)在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。为了方便传输,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各报文上打上标记序号和端口号后转发给网络层,在网络层(IP协议)增加通信目的地的MAC地址后转发给链路层,这样发往网络的通信请求就准备齐全。
接收端的服务器在链路层接受到数据,按序往上走,通过响应解析,一直到应用层,才算真在接受到客户端发送过来的HTTP请求。
3、与HTTP关系密切的TCP、IP、DNS
负责传输的IP协议:
IP(Internet protocol)位于网络层,作用为将各种数据包发送给对方,而要保证数据正确的传送到对方那里,则需要满足各类条件,其中最重要的是IP地址和MAC地址。IP地址指明了节点被分配到的地址,MAC地址指网卡所属的固定地址,IP地址可和MAC地址进行配对。IP地址可变化,但MAC地址基本不变(使用ARP,Address Resolution Protocol 协议凭借MAC地址进行通信)。ARP协议为一种以解析地址的协议,根据通信方的IP地址就可以反查对应的MAC地址。
TCP协议
位于传输层,提供可靠字节流服务(Byte Stream Service)。即:为了方便传输,将大文件分割成以报文段(segment)为单位的数据包进行管理。并且能够准确的传递给对方,无数据遗漏。为了确认数据最终是否到达对方,采用”三次握手“ 策略,握手过程中使用TCP的标志(flag) --- SYN(synchronize 序列)和ACK(acknowledgement)。
三次握手:
1)发送端发送一个带SYN标志的数据包给对方。(我有东西要发给你)
2)接收到接收到后,返回一个SYN/ACK的数据包以表示传达确认信息。(好的,你发给我)
3)发送端最后再返回一个ACK标志的数据包,代表“握手”结束。(好的,我发给你)
如果中间有中断,则会再以相同顺序发送一个相同的数据包。
DNS
相当于对主机名和域名进行解析,通过DNS协议查找IP地址或者从IP地址查找域名的服务。
HTTP协议和其他协议的关系
Protocol(协议)
指定使用的传输协议,下表列出 protocol 属性的有效方案名称。 最常用的是http协议,它也是目前WWW中应用最广的协议。常见协议如下:
file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠。
ftp 通过 FTP访问资源。格式 FTP://
gopher 通过 Gopher 协议访问该资源。
http 通过 HTTP 访问该资源。 格式 HTTP://
https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://
mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:
MMS 通过 支持MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://
ed2k 通过 支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴) 格式 ed2k://
Flashget 通过 支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:快车) 格式 Flashget://
thunder 通过 支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷) 格式 thunder://
news 通过 NNTP 访问该资源。
URI(Uniform Resource Indentifier):统一资源标识符。就是互联网上资源的地点或者说位置。
URL:统一资源定位符。(Uniform Resource Locator)
1、定义:
Uniform
规定统一的格式可方便处理不同类型的资源,而不用根据上下文环境来标识资源指定的访问方式。新增协议也容易(http,ftp)
Resource
可标识的任何东西。除了文档文件,图像和服务(例如当天的天气预报)等能够区别其他类型的,都可以作为资源。不仅仅为单一的,也可是多数的集合体。
Identifier
可标识的对象,也可叫做标识符。
2、URL URN URI
例如:个人的身份证号就是URN,个人的家庭地址就是URL,URN可以唯一标识一个人,而URL可以告诉邮递员怎么把货送到你手里。
URI包括URL和URN两个类别,URL是URI的子集,所以URL一定是URI,而URI不一定是URL
URI = Universal Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。
URL = Universal Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。
URN = Universal Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。
URI
“URI可以分为URL,URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了东西的身份,URL提供了找到它的方式。”
1.有这样一个需求:
要求找到一本书(书就是资源),这本书在A省份/B市/C区/D街道/xx栋/392-1住户/1号房间/名字叫做《xxx》 (这里就是模拟我们输入网址进行HTTP请求)
那么此时的 《xxx》 这本书 对于 1号房间 来说就是uri
此时的D街道/xx栋/392-1住户/1号房间/名字叫做《xxx》这本书 对于 A省份/B市/C区 来说就是uri
可以看出uri是不固定的,是相对来说的,具体是什么就看你的参照角度是什么。(不同请求参照角度不一样,所以他们的返回uri有差异)
由此总结:uri是一个标识,用来区别于其他资源的标识。 (相信你对这句话就更能理解了)
url
ok ,理解了uri那么再来说一说什么是url。url就是每次我们输入网址访问某个网站时,浏览器上输入的那一行内容。比如:http://baidu.com这是一个url,每个链接地址是一个url。
2、URI格式
-
当没有URI时:
-
- 站长欲分享一部电影给Forrest Gump给B时,需要告诉:
- 请使用FTP协议访问mysite.net,端口是8502
- 登陆用户名是user,密码是pass
- 进入到/shared/movie/目录下
- 转换为二进制格式
- 下载名字为Forrest Gump.mkv格式的文件
-
- 有了URI:ftp://[user:pass]@mysite.net:8502/shared/movie/Forrest Gump.mkv(我们管这种方式也可以叫URL)
协议方案名(http:):为访问资源时要指定的协议。也可使用data:或javascript:这类指定的数据或者脚本程序的方案名称。
登录信息(user:pass):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)【可选项】。
服务器地址(www.example.jp):可以是IPV4或者IPV6,可以是DNS可解析的域名或者IP。
服务器端口号(80):连接的网络端口号,省略则为默认端口号,【可选项】。
带层次的文件路径(dir/index.htm):指服务器上的文件路径来定位特指的资源。和UNIX系统文件目录相似。
查询字符串(uid=1):针对指定的文件路径内的资源,可使用查询字符串传入任意参数。【可选】
片段标识符:标记出已获取资源中的子资源(文档中的某个位置)。【可选】