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

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

下面是一些基础的概念:

客户端:广泛来讲就是客户用的程序应用。日常中的手机软件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/衣柜/毛衣“的形式来访问。

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

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

时间: 2025-01-20 04:25:40

网络编程(1)——轻松理解网络资源定位的相关文章

网络编程的一些理解

网络编程: 端口: 物理端口: 逻辑端口:用于标识进程的逻辑地址,不同进程的标识:有效端口:0~65535,其中0~1024系统使用或保留端口. java 中ip对象:InetAddress. import java.net.*; class IPDemo{ public static void main(String[] args) throws UnknownHostException{ //通过名称(ip字符串or主机名)来获取一个ip对象. InetAddress ip = InetAd

Socket网络编程之概述理解

今天主要讲讲什么是socket网络编程 socketde 英文原义是"孔"或者"插座".是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换.通常也被称作"套接字",用关于描述IP地址和端口,是一个通信链的句柄 也类似于电话插座.举个电话网例子:电话的通话双方相当于相互通信的两个程序,电话号码就是IP地址. 任何用户在通话之前,首先要占用一部电话机,相当于申请一个socket:同时要知道对方的号码,相当

重定向在网络编程中的理解

1.概念 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置 (如:网页重定向.域名的重定向.路由选择的变化也是对数据报文经由路径的一种重定向). 2.方式 重定向的方式有:301重定向.302重定向与meta fresh.上面讲的就是meta fresh方式. 301代表永久性转移(Permanently Moved),301重定向主要是将需要转移的网址重定向另一个新的网址上,并且是永久性转移,比如你输入了”jingdong.com”,它总会跳转到”jd.com”

asp网络编程:如何轻松打造ASP计数器

以下介绍用数据库实现简单计数器 '下面存为count.asp <% Set conn=Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("count.mdb") %> <%on error resume next%> <%sql=&q

Socket网络编程进阶与实战

第1章 课程导学(Java语言教学)[说明:课程案例部分以Java语言实现]本章节首先会对课程进行导学讲解,包括为什么应该学习本课程,课程目标与收获,课程内容安排,适合人群和学习建议等,接着会讲解代码规范与开发注意事项,目的全在于希望极大的方便同学进行本课程的学习.... 第2章 Socket网络编程快速入门本章首先整体介绍什么是Socket网络编程:让大家对Socket有个大概的概念与方向.之后通过几个小Case引出课程的主角,轻松愉快的让你体验到Socket编程的快感.本章节主要收获:1.

Java Socket网络编程的经典例子(转)

事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作.Socket就是其中之一,对于Java而言,这些Api存在与java.net 这个包里面,因此只要导入这个包就可以准备网络编程了. 网络编程的基本模型就是客户机到服务器模型,简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置.并去建立两者之间的联系,然后完成

android开发笔记之网络编程—使用TCP协议和URL进行网络编程

手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UDP协议的网络通信. Android也支持JDK提供的URL,URLConnection等网络通信

[CSAPP笔记][第十一章网络编程]

第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真实的Web浏览器提供静态的和动态的文本和图形内容. 11.1 客户端 - 服务器编程模型 每个网络应用程序都是基于客户端 - 服务器模型的 采用这种模型,一个应用是由一个服务器进程 和一个或多个客户端进程组成. 服务器管理某种资源,并且通过操作这种资源为它的客户端提供某种服务. WEB服务器,代表客

理解网络编程和套接字

编写“Hello world!”服务器端 服务器端(server)是能够受理连接请求的程序.下面构建服务器端以验证之前提到的函数调用过程,该服务器端收到连接请求后向请求者返回“Hello world!”答复.除各种函数的调用顺序外,我们还未涉及任何实际编程.因此,阅读代码时请重点关注套接字相关函数的调用过程,不必理解全部示例. hello_server.c 1.  #include <stdio.h> 2.  #include <stdlib.h> 3.  #include <