1.WWW (World Wide Web) 的由来
1.1诞生:1990年,Tim Berners-Lee(蒂姆·伯纳斯-李)在他的NeXT工作站上写了第一个网页,那年圣诞节,他制作了第一个网页浏览器(World Wide Web)和网页服务器。
问:1990年以前,人们是如何上网的呢?
答:
(1) 1965 年,Email 被发明出来,成为互联网的「杀手级」应用,因为你可以瞬间发一封信给远方的人,不需要信纸、邮票和邮递员。
(2) 1971 年,用 @ 符号来表示 Email 的方法被发明出来。
(3) 1979 年,邮件讨论组被发明出来,人们可以在一个话题下公开地互发邮件。
(4) 人们通过 FTP 来下载文件附件
(5) 1980 年至 1990 年间,人们迫切需要一种更好的上网方式,很多方案被提出,如 HTTP 和 Gopher。后面的事情大家都知道了,HTTP 因为其易用性胜出。
(6) 当时的邮件内容全都是普通文本,或者是类 Markdown 形式的文本,人们需要一种超级文本用来做页面跳转,也就是我们现在见到的
<a>
标签,不过那时的人还没想到这一点,当时的超集文本方案有很多,HTML 只是其中之一,而且当时的 HTML 也非常简陋,只有 11 个标签。参考资料:维基百科:万维网
1.2 主要为三个概念:URI,HTTP,HTML
1.21 URI(Uniform Resource Identifier):统一资源标志符,它主要包括2部分,分别为 URN,URL
1.21.1 URL(Uniform Resource Locator):统一资源定位符,俗称 “网址”。
URL是一种URI,它标识一个互联网资源,并指定对其进行操作或获取该资源的方法。可能通过对主要访问手段的描述,也可能通过网络“位置”进行标识。例如,http://www.wikipedia.org/这个URL,标识一个特定资源(首页)并表示该资源的某种形式(例如以编码字符表示的,首页的HTML代码)是可以通过HTTP协议从www.wikipedia.org这个网络主机获得的。
1.21.2 URL的组成:主要为以下5部分:
URL 的组成- 协议:
https://
- 域名:
www.baidu.com
- 路径:
/s
- 查询参数:
?wd=hello&rsv_spt=1
- 锚点:
#5
小知识:DNS:Domain Name System,域名系统
域名解析
简单理解为:输入域名,输出IP
举一个例子,zh.wikipedia.org作为一个域名就和IP地址208.80.154.225相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打wikipedia的名字来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像zh.wikipedia.org一样便于人类使用的名字转化成像208.80.154.225一样便于机器识别的IP地址。
1.21.3 URN(Uniform Resource Name):统一资源名称
问:URL和URN之间的关系?
URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。
2..HTTP协议
- HTTP协议:HyperText Transfer Protocol,缩写为 HTTP -- 超文本传输协议。
- TCP协议:Transmission Control Protocol,缩写为 TCP--传输控制协议
- UDP协议:User Datagram Protocol ,缩写为 UDP--用户数据报协议
- IP协议:Internet Protocol,缩写为IP协议:网际协议,或称互联网协议,是用于报文交换网络的一种面向数据的协议。IP是在TCP/IP协议中网络层的主要协议,任务是仅仅根据源主机和目的主机的地址传送数据。为此目的,IP定义了寻址方法和数据报的封装结构。第一个架构的主要版本,现在称为IPv4,仍然是最主要的互联网协议,尽管世界各地正在积极部署IPv6。
问:TCP协议和UDP协议的区别是什么?
- TCP 可靠、面向连接、相对 UDP 较慢;
- UDP 不可靠,不面向连接、相对 TCP 较快。
理解 :
- 可靠:即TCP传送数据有反馈,是否可以传输?对象是否错误;而UDP则没有反馈
- 面向连接:可参考下面的题目[TCP的三次握手是什么?]
- 速度:TCP的传输速度较慢(因为使用了复杂的 拥塞控制算法),但是稳定安全;而UDP的传输速度较快,安全性却不得而知,但是目前UDP的应用范围依然很广。
问:TCP协议的三次握手是什么?
简单理解为:
1. 客户端:我要连接你了,可以吗
2. 服务端:嗯,我准备好了,连接我吧
3. 客户端:那我连接你咯。
4. 开始后面步骤
3.IP网络协议
图片- 你从电信/移动/联通运营商那里买来带宽,一年一千多。
- 电信为你提供 DNS服务。
- 你买了一个路由器,然后用电脑和手机分别连接路由器广播出来的无线 WIFI。
- 只要路由器连上电信的服务器,那么路由器就会有一个「外网 IP」,比如「14.17.32.211」就是一个外网 IP。这就是你在互联网中的地址。
- 但是如果你重启路由器,那么你很有「可能」被重新分配一个「外网 IP」,也就是说 你的路由器没有「固定的外网 IP」
你可以花每年几千块钱租用一个「固定的外网 IP」,但是显然不会这么浪费钱。像腾讯、阿里这样的大公司租用了很多外网 IP,这样才能对我们提供稳定的服务。 - 但是有个问题,你的路由器的外网 IP 如果是
14.17.32.211
,那么你的手机和电脑的 IP 又是什么呢?答案是「内网 IP」 - 路由器会在你家里创建一个内网,内网中的设备使用内网 IP,一般来说这个 IP 的格式都是
192.168.xxx.xxx
。 - 一般路由会给自己分配一个好记的内网 IP,如
192.168.1.1
然后路由会给每一个内网中的设备分配一个不同的内网 IP,如电脑是192.168.1.2
,手机是192.168.1.3
,以此类推。 - 现在路由器有两个 IP,一个外网 IP(
14.17.32.211
)和一个内网 IP(192.168.1.1
)
内网中的设备可以互相访问(比如你可以用电脑或手机进入 http://192.168.1.1 来查看你的路由器),但是不能直接访问外网,内网设备想要访问外网,就必须经过路由器中转。
外网中的设备可以互相访问(比如 qq.com 可以把首页发送给你的路由器,你的路由器有外网 IP),但是外网中的设备无法访问你的内网设备(这很好理解,内网是一个封闭的网络,外人进不来,所以实际上 qq.com 无法直接把首页放送给你的电脑和手机) - 问题来了,那 qq.com 是怎么把首页发送到我的手机上的呢?答案是通过路由器来中转。
路由器接收到 qq.com 的页面后,把页面发送给你的电脑或手机。路由器知道如何给这些信息指路,路由器就是一个指路人,这就是「路由」两个字的来历。 - 路,就是「必由之路」中的路。由,就是「必由之路」中的由(由是经过、缘由的意思)。所有的信息都要经过路由器,然后被指向一条它该去的路。
- 也就是说内网和外网就像两个隔绝的空间,无法互通,唯一的联通点就是路由器(因为路由器既有外网 IP 也有内网 IP),所以路由器有时候也被叫做「网关」,这个「关」是「一夫当关,万夫莫开」的---- - 「关」。如果路由器到电信的连接中断了,那么内网中所有的设备也就无法上网了。(这很好理解,相当于唯一一条出去的路断了)
- 除了内网 IP 和外网 IP,还有两个特别特殊的 IP,就是本地
IP:127.0.0.1
。本地 IP 永远表示设备自己。不信你可以ping 127.0.0.1
一下,会发现只需要 0.01 ms 就得到了响应(你 ping qq.com 需要几十毫秒才得到响应) - 默认情况下,hosts 文件里会有一行
127.0.0.1 localhost
,意思就是 localhost 指向127.0.0.1
,所以 localhost 也表示设备自己。不信你ping localhost
试试,会发现实际上是在ping 127.0.0.1
- 还有一个特别特殊的
IP:0.0.0.0
,它不表示任何设备。
4.端口
前面我们说到,访问某个地址,使用URL地址;传输数据,使用TCP/IP协议;但是,当我们把数据传到服务器上时,服务器时如何分辨我的访问需求呢?毕竟服务器肯定是提供多种不同服务的,例如:HTTP服务,FTP服务等,此时,就要用到端口(Port),用于区分不同服务,原则是:一个端口对应一个服务。
4.1技术细节
- 传输层协议,如传输控制协议(TCP)与用户数据报文协议(UDP),在数据包表头中,定义了来源端口号与目的端口号。一个通信端口号使用16位无符号整数(unsigned integer)来表示,其范围介于0与65535(即2^16-1)之间。在TCP协议中,端口号0是被保留的,不可使用。在UDP协议中,来源端口号是可以选择要不要填上,如果设为0,则代表没有来源端口号。
- 在操作系统中,一个进程,可以通过internet socket,将它的输入与输出,与一个特定的传输协议,一个通信端口,与IP地址,关系起来。这个关系动作,称为绑定(binding),在这之后,就可以通过网络提交与接收数据。
4.2用途
端口号有两种用途:
- 标识服务器上提供特定网络服务的进程。客户机可以按照服务器IP与端口号与相应的服务器进程创建网络连接,获得相应的网络服务。例如,通常使用80端口号提供http服务,使用23端口号telnet服务。服务器的这种功能叫做listening。客户机通常使用动态指定的端口号与服务器创建连接。
- 由本机地址、本机端口号、目标机地址、目标机端口号、通信协议组成的五元组,用于唯一确定正在使用的网络连结。因此,对于不同的协议、不同的目标机地址,本机的不同地址(如果本机使用多个网卡)等多种情形,同一个端口号可以复用。因此对于1对1通信,且本机与目标机之间只能创建一个通信连接,则不需要使用端口号。
网友评论