- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Net底层原理
一、浏览器和服务器的交互原理
二、写自己的迷你A框架
三、Asp.Net的请求与响应过程
1、在此之前,首先简单的模拟一下我们去请求一个网址的时候,浏览器和服务器都做了些什么事情:?????????????
? ? ? ? ? ? 我们请求一个网站的时候,?浏览器会封装一个请求报文,发送至服务器,服务器会拿到浏览器的请求报文,进行分析处理,生成响应报文和处理生成后的html或者文本图片等,以流的方式返回给浏览器,浏览器会解析服务器返回的数据,把html、图片、js、css等呈现在浏览器中。他们之间的通信都遵循了Http协议,顾名思义,HTTP协议就是定义服务器端和客户端之间文件传输的沟通方式,规定了一系列请求响应的格式,我们称为?Http请求报文(浏览器向服务器发送请求的数据格式)和Http响应报文(服务器返回给浏览器的数据格式)。
一个Http请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下面是请求报文的一般格式:
?
?
响应报文格式:
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。
如下所示,HTTP响应的格式与请求的格式十分类似:
TCP是底层通讯协议,定义的是数据传输和连接方式的规范;
HTTP是应用层协议,定义的是传输数据的内容的规范;
所以HTTP协议也是利用的TCP协议通过Socket通信方式来传输的。
接下来,我们来演示一下通过Socket通信来理解Http协议:
创建一个winform程序,设置Ip和端口,开启服务时候,来监听Http请求。?
?
?
private void btnStart_Click(object sender, EventArgs e)
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
4 IPEndPoint ip = new IPEndPoint(IPAddress.Parse(txtIP.Text), Convert.ToInt32(txtPoint.Text));
5 socket.Bind(ip);
6 socket.Listen(10);
7 this.btnStart.Enabled = false;
8 Task.Factory.StartNew(o = //启动一个线程来监听浏览器的请求
9 {
10 Socket serverSocket = o as Socket;
11 while (true)
12 {
13 Socket clientSocket = serverSocket.Accept();
14 byte[] data = new byte[1024 * 1024];
15 int len = clientSocket.Receive(data, 0, data.Length, SocketFlags.None); //获取接受到的字节长度
16 if (len = 0)
17 {
18 clientSocket.Shutdown(SocketShutdown.Both);
19 clientSocket.Close();
20 continue;
21 }
22 //我们在这里拿到了浏览器的请求报文,下面我们输出一下这个报文,看看他是不是上面所诉的格式
23
24 string strRequest = Encoding.UTF8.GetString(data, 0, len);
25
26 //要发送会浏览器的数据,socket通信要以byte类型的数据传输,这里也可以使html、图片
文档评论(0)