[Asp.net本质论]重新认识url
引言
之前大部分时间,一直在学c#,打算将asp.net本质论好好学习一下,之前虽然已经看了两边了,总感觉看过,没做笔记等于白看了,一点印象也没。打算将书中的代码,自己实现一下,在敲代码时要一直反思,为什么作者那样实现,如果是自己该如何实现?
web应用程序
资源的地址——通用资源标识符(URI)
我们在浏览器地址栏中输入的内容统称为通用资源标识符(Universal Resource Identifier,URI),它有很多种形式,在web中我们通常使用统一资源定位符(Uniform Resource Locator)的形式,格式如下:
协议://主机[.端口号][绝对路径[?参数]]
在http://www.microsoft.com/en/us/default.aspx中:
http:表示协议名称;
www.microsoft.com:表示主机的地址;http协议的默认端口号为80.
/en/us/default.aspx:绝对路径。后面没有参数出现,如果加上多个参数则可以如下表示:
/en/us/default.aspx?p=1&n=2
在.net中,不管是URI还是URL都是定义在System命名空间中的URI类来进行处理。
该类定义了5个属性,分别对应5个组成部分。
Scheme属性:协议的名称。
Host:取得URI地址中的主机部分。
Port:取得端口号。
AbsolutePath:绝对路径部分。
Query:URI地址中的参数部分。
简单例子:
System.Uri ms = new Uri("http://www.microsoft.com/en/us/default.aspx");
Console.WriteLine("协议:"+ms.Scheme);
Console.WriteLine("主机:"+ms.Host);
Console.WriteLine("端口号:"+ms.Port);
Console.WriteLine("绝对路径:"+ms.AbsolutePath);
Console.WriteLine("参数:"+ms.Query);
Console.Read();
结果:
如何找到主机
互联网上的服务器成千上万,如果找到互联网上的其中一台,该如何找呢?就好比,虽然世界人口多达几十亿,如何找到某个人呢,那你如果知道他的地址,岂不是找起来更方便快捷?同样到了,浏览器要找到服务器,也需要服务器的网络地址。
在当前的TCP/IP协议下,所谓的网络地址,就是一个IP地址,目前我们使用的是IPV4的地址,即IP协议的第四版规定的地址,每个地址由四个字节共32位组成。理论上讲,可以表示4G个网络地址。格式:192.198.0.1,以圆点分割的四个数,最大为255.例如,微软的ip地址:207.46.19.254,直接在地址栏中输入http://207.46.19.254也可以看到网页。
但是,如果单单记忆数字,很让人头疼,如果能通过一个有意义的名字来找到主机,就更容易了。在1983年,保罗.莫卡派乔斯(Paul Mockapetris)发明了域名系统,这样,在互联网上,我们可以为IP起一个有意义的名字以方便寻找主机,这个名字成为域名,比如,微软web服务器的域名为www.microsoft.com,这个名字对应实际IP地址:207.46.19.254
域名和ip如何对应?
这个工作由域名服务器DNS(即Domain Name Server)完成。DNS服务器提供一个类似于分层的通讯录,允许用户通过域名来查找对应的地址,或者通过地址来查找对应的域名。通常情况下,互联网服务商已经帮我们自动设置了DNS服务器,因此可以简单地通过www.microsoft.com域名找到微软的web服务器。
知道服务器之后,需要将请求从我们的客户端传输到服务器,那么,两台计算机是如何通信的呢?他们如何才能理解彼此发送的数据呢?这就需要提到协议了。
总结
URL格式:
协议://主机[.端口号][绝对路径[?参数]]
互联网中通过ip找到主机,通过DNS将域名和ip地址关联起来。
[Asp.net本质论]重新认识url的更多相关文章
- ASP.NET获取请求的url信息汇总
ASP.NET获取请求的url信息汇总 最近做项目需要处理一个用代码获取当前网站的域名或ip信息的问题,于是尝试了ASP.NET中各种获取url信息的方法,在此总结一下: 在Global.asax文件 ...
- 【ASP.NET MVC 牛刀小试】 URL Route
例子引入 先看看如下例子,你能完全明白吗? using System; using System.Collections.Generic; using System.Linq; using Syste ...
- asp.net获取当前网址url
asp.net获取当前网址url 设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http://" ...
- ASP.NET Core中使用URL重写
ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,终于可以进行 URL 重写了,实际使用体验一下. 首先要将 ASP.NET Core ...
- Asp.Net通过HttpModule实现URL重写
首先总结一下为什么要对URL进行Rewrite,比如我可以把/Default.aspx?param=3替换成/Home/Default/3(类似mvc). 一.缩短url,隐藏实际路径提高安全性; 二 ...
- cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等
asp.net分页是最最常用的功能,实现方式也很多,使用不同的控件有不同的分页方式. 下面分享一个我们团队内部使用了多年的一个分页控件cPage,是自己设计编写,没有冗余,简单.快速. cPage,现 ...
- asp.net中获取当前url的方法
HttpContext.Current.Request.Url.ToString() 并不可靠. 如果当前URL为 http://localhost/search.aspx?user=http://c ...
- ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http
在.NET环境下,万物皆对象,在HttpRuntime收到请求之后,立即将通过HttpWorkerRequest传递的参数进行分析和分解,创建方便用于网站应用程序处理用的对象,其中主要涉及到两个对象类 ...
- asp.net获取当前网址url的各种属性(文件名、参数、域名 等)的代码
用 asp.net获取当前网页地址的一些信息. 设当前页完整地址是:http://www.jb51.net/aaa/bbb.aspx?id=5&name=kelli "http:// ...
随机推荐
- python基础===PEP网站,代码规范指南
PEP 8是最古老的PEP之一,它向Python程序员提供了代码格式设置指南.PEP 8的篇幅很长,但大都与复杂的编码结构相关. https://python.org/dev/peps/pep-000 ...
- centos_7.1.1503_src_3
http://vault.centos.org/7.1.1503/os/Source/SPackages/ kdf-4.10.5-3.el7.src.rpm 05-Jul-2014 13:28 161 ...
- Vim的分屏功能(转)
注:本文属于转载,源地址:http://blog.csdn.net/ithomer/article/details/6035627(博主很牛,欢迎关注) 本篇文章主要教你如何使用 Vim 分屏功能 分 ...
- [ python ] 反射及item系列
反射 什么是反射? 通过字符串的形式操作对象相关属性.python中的事物都是对象: 关键方法: (1)getattr:获取属性 (2)setattr:设置属性 (3)hashattr:检测是否含有属 ...
- Java显式锁学习总结之一:概论
我们都知道在java中,当多个线程需要并发访问共享资源时需要使用同步,我们经常使用的同步方式就是synchronized关键字,事实上,在jdk1.5之前,只有synchronized一种同步方式.而 ...
- linux命令(13):kill/killall命令
停止指定的进程名:kill 进程ID号 把所有httpd进程杀掉:killall httpd 强制停止进程mysqld:killall -9 mysqld
- Django-分頁組件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib imp ...
- NYOJ 10 skiing(好题)
skiing 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...
- 【JBPM4】完成任务
示例代码: ProcessEngine processEngine = Configuration.getProcessEngine(); TaskService taskService = proc ...
- PHP生成随机字符串与唯一字符串
代码如下: <?php /* * 生成随机字符串 * @param int $length 生成随机字符串的长度 * @param string $char 组成随机字符串的字符串 * @ret ...