System.URI
常用属性:
Scheme 协议名称
Host 主机
Port 端口
AbsoultePath 绝对路径
Query URI地址中的参数部分
URI(通用资源标识符)
URL(统一资源定位符)
为IP取一个有意义的名字就是域名,通过DNS(域名服务器)来关联IP和域名
程序与程序的通信层次
1.物理层
2.数据链路层
3.网络层
4.传输层
5.会话层
6.表示层
7.应用层
应用层协议的内容需要通过传输层在浏览器和服务器之间进行传送
TCP/IP中
TCP负责可靠通信的传输层协议
IP负责网络层的协议
HTTP协议就是TCP/IP协议中专门用于浏览器与web服务器之间通信的应用层协议
在同一个网络地址上,为了区分使用相同的协议的不同应用程序,可以为不同的应用程序分配一个数字编号,这个编号称为网络端口(2字节)由IANA(互联网地址分配机构)分配这些网络端口
1.0-1023 为众所周知的端口
2.1024-49151 登记端口
3.49152-65535 私有端口
那怎么来实现一个简单的HTTP服务器?
1.SOCKET 基于SOCKET 最原始的,那也就是功能最强大的,当然也就最复杂
2.TCPListener 基于TCP的,因为HTTP就是基于TCP/IP的,对SOCKET的进一步封装
3.HttpListener 基于TCP/IP,对TCPListener的进一步封装
常用属性:
IsSupport 是否支持
prefixes 前缀
程序集管理的最小逻辑单位为应用程序域(AppDomain)
>应用程序域
>应用程序集
应用程序的四大机制
1.隔离,不同应用程序域之间不能之间访问,跨应用程序域访问的对象必须派生自System.MarshalByRefObject
2.卸载 被加载后必须以应用程序域为单位卸载
3.安全 以应用程序域为边界的安全机制
4.配置 以应用程序域为边界的程序配置
Web 应用程序域
ApplicationHost类的静态方法CreateApplicationHost(Type,virtualDir,physicalDir);
默默无闻的工作者对象:
在ASP.NET中,准备用于处理的请求,必须封装为HttpWorkerRequest类型对象
SimpleWorkerRequest可以处理简单的请求,将返回的内容输出到TextWriter流中
Web应用程序的运行时
>System.Web.HttpRuntime类是整个ASP.NET服务器处理入口
>HttpResponse
默认情况下,HttpResponse对输出的页面进行了缓冲
可以通过BufferOutput属性来获取
重定向(Redirect)原理
返回状态码:302
设置回应头["Location"]="地址"
>HttpRequest
>Headers
>Form
>Cookies
>Files
辅助的常用工具类HttpServerUtility
一个简单的Asp.net web服务器实现步骤
1.可以通过SimpleHttpListener来获取一个Http的连接
2.获取一个连接以后呢,就需要对它的请求进行处理,但是在这里我们进行直接的处理,因为不在同一个应用程序域中,所以我们用委托指向它
3.创建跨应用程序域的对象,继承至System.MarshalByRefObject,创建一个处理请求的方法
4.在处理请求的方法中指明asp.net程序的入口,并通过HttpRuntime.ProcessRequest(HttpWorkRequest)方法来获取请求的结果