黑马程序员-----简单理解 浏览器与服务器
2013-11-02 22:53
381 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
1.我们都知道 表面是通过浏览器的输入http://localhost:8080/s2sh?name=nihao&age=14 就能访问服务器 但你们知道过程么
---- 其实是先把输入的URL 解析 URL u = new URL("http://localhost:8080/s2sh?name=nihao&age=14"); 可以通过url 得到一些有用的数据
他通过URL得到的有用数据按TCP协议要求 发送给服务器 格式如下
GET / HTTP/1.1
Host: 127.0.0.1:40001
Connection: Keep-Alive
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.5072
7; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MALN; BRI/2; .NET4.0C; SE 2.X MetaSr 1.0)
Accept-Encodin
g: gzip, deflate
9; .NET CLR 3.0.30729; MALN; BRI/2; .NET4.0C; SE 2.X MetaSr 1.0)
Accept-Encodin
其实浏览器作用就是(解析URL+如下代码)(---------装包--------)
tomcat 服务器会返回信息
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=F6BE54A3DF5F54099A51827B15C86067; Path=/s2sh
Content-Type: text/html;charset=UTF-8
Content-Length: 753
Date: Sat, 02 Nov 2013 14:43:33 GMT
那么我们的机器又是如何处理tomcat返回的数据的呢
这时用到了URLConnection 会调用HttpURLConnection 子类 处理tomcat的返回数据 (-----------也就是拆包------------)
代码如下
这样我们就能得到我们需要的数据 jsp页面 而不是带返回头信息的数据
域名解析协议 其实 就是 根据 sina去查域名解析服务器DNS(可以是电信默认的也可以是联通的) (127.0.0.1 www.sina.com.cn )
得到ip 再返回客户端 再访问此ip(如果本地有则先走本地)
本地地址C:\Windows\System32\drivers\etc\hosts
先走本地的好处 与应用
1.速度快
2.收费软件都是启动软件访问一个网站做验证但他们走的都不是本地DNS 我们就可以在本地做手脚让他访问不了 此网页做验证
3.360写一些数据比如2010年恶意网站 127.0.0.1 myhao123 这样你访问这个网站时就不能访问
4.黑客也可以让你访问那个网站你就访问那个 不让你访问你就访问不到
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
1.我们都知道 表面是通过浏览器的输入http://localhost:8080/s2sh?name=nihao&age=14 就能访问服务器 但你们知道过程么
---- 其实是先把输入的URL 解析 URL u = new URL("http://localhost:8080/s2sh?name=nihao&age=14"); 可以通过url 得到一些有用的数据
URL u = new URL("http://localhost:8080/s2sh?name=nihao&age=14"); System.out.println(u.getProtocol()); System.out.println(u.getHost()); System.out.println(u.getPort()); System.out.println(u.getPath()); System.out.println(u.getFile()); System.out.println(u.getQuery()); /* http localhost 8080 /s2sh /s2sh?name=nihao&age=14 name=nihao&age=14 */
他通过URL得到的有用数据按TCP协议要求 发送给服务器 格式如下
GET / HTTP/1.1
Host: 127.0.0.1:40001
Connection: Keep-Alive
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.5072
7; .NET CLR 3.5.30729; .NET CLR 3.0.30729; MALN; BRI/2; .NET4.0C; SE 2.X MetaSr 1.0)
Accept-Encodin
g: gzip, deflate
9; .NET CLR 3.0.30729; MALN; BRI/2; .NET4.0C; SE 2.X MetaSr 1.0)
Accept-Encodin
其实浏览器作用就是(解析URL+如下代码)(---------装包--------)
public class ClientDemo { public static void main(String[] args) throws Exception { Socket socket = new Socket("127.0.0.1", 8080); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); pw.println("GET /s2sh/index.jsp HTTP/1.1"); pw.println("Accept: */*"); pw.println("Accept-Language: zh-cn"); pw.println("Host: 127.0.0.1:8080"); pw.println("Connection: Keep-Alive"); pw.println(); pw.println(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = null; while ((line = br.readLine()) != null) { System.out.println(line); } socket.close(); } }
tomcat 服务器会返回信息
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=F6BE54A3DF5F54099A51827B15C86067; Path=/s2sh
Content-Type: text/html;charset=UTF-8
Content-Length: 753
Date: Sat, 02 Nov 2013 14:43:33 GMT
那么我们的机器又是如何处理tomcat返回的数据的呢
这时用到了URLConnection 会调用HttpURLConnection 子类 处理tomcat的返回数据 (-----------也就是拆包------------)
代码如下
public class URLConnectionDemo { public static void main(String[] args) throws Exception { URL u = new URL("http://localhost:8080/s2sh?name=nihao&age=14"); URLConnection uc = u.openConnection(); System.out.println(uc); InputStream in = uc.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf, 0, len)); } }
这样我们就能得到我们需要的数据 jsp页面 而不是带返回头信息的数据
域名解析协议 其实 就是 根据 sina去查域名解析服务器DNS(可以是电信默认的也可以是联通的) (127.0.0.1 www.sina.com.cn )
得到ip 再返回客户端 再访问此ip(如果本地有则先走本地)
本地地址C:\Windows\System32\drivers\etc\hosts
先走本地的好处 与应用
1.速度快
2.收费软件都是启动软件访问一个网站做验证但他们走的都不是本地DNS 我们就可以在本地做手脚让他访问不了 此网页做验证
3.360写一些数据比如2010年恶意网站 127.0.0.1 myhao123 这样你访问这个网站时就不能访问
4.黑客也可以让你访问那个网站你就访问那个 不让你访问你就访问不到
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
相关文章推荐
- Leetcode Plus One
- 程序员编程艺术:第六章、求解500万以内的亲和数
- 图像处理职位面试题汇总(2)
- 黑马程序员_java字符串
- 黑马程序员_银行调度系统
- IT面试题目汇总
- 让程序员最头疼的事儿是什么?给变量起个有意义的名字
- 黑马程序员之《内部类》
- [转]为什么不能打断程序员?
- twitter面试一题-转载
- 四十条测试你是不是合格的PHP程序员
- 一个合格的程序员应该读过哪些书
- 新浪面试
- ios面试
- Leetcode Single Number II
- 做数据库维修工、还是码农?
- 如何做好自由职业
- 黑马程序员_常用的Sql语句
- 黑马程序员_接口和类
- 黑马程序员_Sql Server总结