Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

图解HTTP之web及网络基础 #15

Open
chenxiaochun opened this issue May 29, 2017 · 0 comments
Open

图解HTTP之web及网络基础 #15

chenxiaochun opened this issue May 29, 2017 · 0 comments

Comments

@chenxiaochun
Copy link
Owner

chenxiaochun commented May 29, 2017

HTTP的诞生

HTTP通常被译为超文本传输协议,但这种译法并不严谨。严谨的译法应该为“超文本转移协议”。但是前一种译法已经被大众所接受,已经约定俗成。

CERN(欧洲核子研究组织)的蒂姆·伯纳斯-李提出了一种设想:借助多文档之间相互关联形成的超文本(HyperText),形成了可相互参阅的WWW(World Wide Web,万维网)。

WWW主要包括

  • 把SGML(Standard Generalized Markup Language,标准能用标准语言)作为页面文本标记语言的HTML(HyperText Markup Language)
  • 作为文档传递协议的HTTP
  • 指定文档地址的URL(Uniform Resource Locator,统一资源定位符)

驻足不前的HTTP

  • HTTP/0.9
    HTTP于1990年问世,那时的HTTP并没有作为标准被建立,含有HTTP1.0之前的意思,因此被称为HTTP/0.9。

  • HTTP/1.0
    HTTP正式被作为标准公布是在1996年5月,版本被命名为HTTP/1.0,并记载于RFC1945

  • HTTP/1.1
    1997年公布的HTTP/1.1是目前的主流版本,记载于RFC2616

TCP/IP协议族

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

分层管理

TCP/IP协议族里最重要的一点就是分层,按层次分为以下4层:应用层、传输层、网络层和数据链路层。分层的好处是,如果某个地方的设计有变化时,不需要整体替换掉,只需要把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计可以自由改动。

各层的作用

  • 应用层
    应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了种类通用的应用服务,比如,FTP、DNS和HTTP协议。

  • 传输层
    传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP、UDP。

  • 网络层
    网络层用来处理在网络上流动的数据包。数据包是网络传输的最小单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。

  • 链路层
    链路层用来处理网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(网卡)及光纤等物理可见部分。

IP、TCP和DNS

IP协议

IP(Internet Protocol)网际协议属于网络层,它的作用是把数据包传送给对方。而要确保确实传送到对方,需要满足两个条件:IP地址、MAC(Media Access Control Address)地址。

传输数据通常是经过多台计算机和网络设备的中转才能连接到对方,而在中转时,会ARP(Address Resolution Protocol)协议来解析下一站中转设备的MAC地址,以此来搜索下一个中转目标。ARP是一种用来解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。

TCP协议

TCP协议位于传输层,提供可靠的字节流服务。
字节流服务,是指为了方便传输,将大块数据分割成报文段为单位的数据包进行管理。可靠,是指能够把数据准确可靠地传给对方。

为了准确无误的将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)策略。TCP协议把数据包送出去后,不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。具体的机制是:发送端首先发送一个带SYN(synchronize)标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK(acknowledgement)标志的数据包以示传达确认信息。最后,发送端再回传一个带有ACK标志的数据包,代表“握手”结束。

DNS服务

DNS(Domain Name System)服务位于应用层,提供域名到IP地址的解析服务。

可以通过域名或者IP地址去访问网络上的一台计算机设备。用户一般使用前者,因为和IP地址是一组纯数字相比,它更符合人类的记忆习惯。但是,计算机正好相反,它更擅长去处理一长串数字。为了解决这个问题,DNS服务应运而生了。

URI和URL

URI

URI(Uniform Resource Identifier),统一资源标识符。RFC2396分别对3个单词进行了详细定义。

  • Uniform
    规定统一的格式可方便处理多种不同的资源,而不用根据上下文环境来识别资源指定的访问方式。

  • Resource
    资源的定义是“可标识的任何东西”。除了文档文件、图像或者服务等能够区别于其它类型的,全都可作为资源,资源不仅可以是单一的,也可以是多数的集合体。

  • Identifier
    表示可标识的对象,也称为标识符。

URL

URL(Uniform Resource Locator)统一资源定位符。我们使用浏览器访问网页时输入的地址就是URL,例如:http://www.jd.com

两者的区别

URI是用字符标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置),所以URL是URI的子集。典型的几种URI示例:

ftp://ftp.is.co.za/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc2396.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
mailto:John.Doe@example.com
news:comp.infosystems.www.servers.unix
tel:+1-816-555-1212
telnet://192.0.2.16:80/
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
@chenxiaochun chenxiaochun changed the title 《图解HTTP》之网络基础 《图解HTTP》之web及网络基础 May 29, 2017
@chenxiaochun chenxiaochun changed the title 《图解HTTP》之web及网络基础 图解HTTP之web及网络基础 May 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant