码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程(1)——轻松理解网络资源定位

时间:2015-02-25 09:09:59      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:android   网络编程   url   资源定位符   

一开始学习网络编程,听起来感觉很难。当时如果按照正确的方法和多理解多思考,学习网络编程其实很简单了。这个过程需要我们不断地里面和码例子,看请来龙去脉,相信如果大家坚持看完学习网络编程知识对大家会很有收获的。如果没有接触过计算机网络的基础知识,推荐一本教科书《计算机网络第六版》,这部书讲得挺不错的,对于入门学习计算机网络的朋友会很有帮助。

下面是一些基础的概念:
客户端:广泛来讲就是客户用的程序应用。日常中的手机软件QQ、微信、拨号器等等就是客户端。
服务端:形象点讲就是处理客户端程序应用发送过来的请求的程勋应用。
因特网(Internet):采用TCP/IP协议组作为通信规则。日常生活中我们所谓的“联网”、“上网”都需要直接或间接连接到因特网。至于为何这里说直接或者间接呢?网络是一个嵌套的模型(互联网),涉及子网,局域网,路由等复杂的概念,有兴趣的朋友可以进一步了解。
网络是一个虚拟抽象的概念。在日常是生活中我们并不会陌生。学习网络编程并不止是想中国网民一样会上网,而且还需要会原理并且掌握这些原理来灵活地编程。
打个比方:

1)我点击打开火狐浏览器(百度是我的首页),利用360网络监控查看

技术分享


技术分享

这一步是客户机与服务器建立连接,通常我们日常是只需要单击超级链接(某个浏览器的快捷方式),HTTP便开始工作。
上述我们看到协议是TCP协议。我们所述的HTTP协议在此操作中是基于TCP协议的。第二三个红框是本地IP和端口(客户端),第四五个空框是火狐服务器IP和端口(服务端)。
2)客户端建立链接发送请求。事实上我们点击浏览器开始工作的时候,我们的电脑发送了一个请求给服务器。(借助火狐插件Firebug查看请求信息)
技术分享

3)服务器响应链接:分别点开每一个GET请求,可以看到对应有一个响应头。即服务器给予的响应。

技术分享

4)客户端处理完每一个响应消息后,就把内容显示在用户的界面后并断开连接。

技术分享

上述的一个浏览器“百度事件“事实上包含了很多个请求和响应过程。而我们学习网络编程首先是弄清楚每一个请求和响应是怎么产生并交互的。刚才所说到的因特网是一个”嵌套“的网络(网络的网络)。这里理解起来和数据结构的树差不多。每一树都有可能会有父结点和子节点。

比如我现在是通过wifi连接我家的路由,可以理解我需要通过的第一个关口是我家的路由。而我家的路由和隔壁家的路由又是连接我家附近的一个更大的路由器。一层套一层。而每一层中每一个主机(可能是电脑/手机,而事实上作为客户端的是对应设备的程序)使用网络都会有一个ID,用IP地址表示。而对应主机上的应用程序使用”端口“来标志。这样一来,每一台连接到因特网的设备都会有一个独特的地址(IP),并且还有很多个门(端口)。

我们平时搜索本地C盘根目录下的一个”A.txt“文件,比如进去C盘的指令 C:\A.txt,这样就可以直接打开该文件资源。那如果我们和其他的用户设备通过因特网连接起来后,我们是否也可以使用类似的方式请求打开其他用户设备上的资源呢?答案是可以的,前提是在其他电脑的权限允许下。

编程中使用”统一资源定位符URL“来标志因特网上得到的资源的位置。

URL的一般形式为(无大小写区分)

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

<协议>包含有ftp(平时我们迅雷下载的时候应该见过)-文件传输协议FTP;http-超文本传送协议HTTP;News-USENET新闻

<主机>指的是存放资源的主机在因特网中的域名。域名也是唯一标识主机,对用户使用比较人性化。

使用”tracert“路由追踪指令,当我追踪“www.baidu.com”的时候,显示如下

技术分享

试试上如果我在浏览器访问180.97.33.108也可以访问百度页面

技术分享

此时域名的作用就体现出来。我们在不同的地区使用追踪”www.baidu.com“,得到的最终路由(也是一台服务器)是一样的。原因是因特网是一个网络套网络的模式,百度的服务器分布全国很多地方。当我们需要访问百度的时候,其背后是去直接或间接连接到当前追踪到的服务器。如果使用IP地址来作为主机标志,那么用户每一次去到一个不同的地方,那么就需要把对应附近的百度服务器IP打进去请求,这样根本不现实。所以统一使用域名来”代表请求的主机地址“,而背后的实现对用户是透明的。

<端口>/<路径>指的是主机上特定的程序中的文件路径(可以省略)

这里就比较简单。如果一台主机比作一件房子,那么IP就是地址,而端口可理解为房子里的房间,端口号就是房间号。如果我要找放在房间号为60且放在衣柜里面的毛衣,可以用地址+”:60/衣柜/毛衣“的形式来访问。

这样一来,我们就可以轻松找到网络上的资源了。

更多内容请关注网络编程连载。





网络编程(1)——轻松理解网络资源定位

标签:android   网络编程   url   资源定位符   

原文地址:http://blog.csdn.net/u010794180/article/details/43934689

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!