简介网络请求的结构

来源:互联网 发布:梁红 张昕宇 知乎 编辑:程序博客网 时间:2024/05/19 10:12

我们在互联网传输数据的方式,看起来复杂多样,但是都是基于osi的7层参考模型的。在TCP/IP参考模型中,这7层就简化为了4层了。

如果要两者比较下的话,

共同点:
(1)OSI参考模型和TCP/IP参考模型都采用了层次结构的概念。
(2)都能够提供面向连接和无连接两种通信服务机制。
不同点:
(1)前者是七层模型,后者是四层结构。
(2)对可靠性要求不同(后者更高)。
(3) OSI模型是在协议开发前设计的, 具有通用性.TCP/IP是先有协议集然后建立模型, 不适用于非TCP/IP网络.。
(4)实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”)。


还有一种就是Url直接访问网络资源。url访问网络的方式,底层还是使用的socket,是属于TCP协议访问资源的方式。但是,有个缺点就是,URL访问服务器的时候,不能发送数据,只能获取输入流,不像TCP,UPD和HTTP那样,可以直接的发送数据过去。

URL访问方式:

public static void main(String[] args) {try {// 新建URL对象,资源地址是百度知道的网址。URL url = new URL("http://www.baid.com");// 新建URL连接URLConnection urlcon = url.openConnection();// 获取输入流InputStream instream = urlcon.getInputStream();// 将流转化为字符String instr = "";byte[] buf = new byte[1024];int len = 0;//读取流while(-1!=(len=instream.read(buf))){instr+=new String(buf,0,len);}System.out.println(instr);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

或者这样使用更快捷点:

URL url = null;InputStreamReader reader = null;BufferedReader bufferedReader = null;StringBuffer buffer = null;try {url = new URL("http://www.baidu.com/");URLConnection urlconn = url.openConnection();reader = new InputStreamReader(urlconn.getInputStream());bufferedReader = new BufferedReader(reader);buffer = new StringBuffer();String line = null;while ((line = bufferedReader.readLine()) != null) {buffer.append(line);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {reader.close();bufferedReader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}System.out.println(buffer);


打印的结果:

可以tilte中看到百度地址了。这种方式,不然考虑数据的传输问题,比其他的方式要简单的多。


原创粉丝点击