java作业9

本文详细介绍了网络通信协议的七层模型,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,以及各层的主要职责。同时,对比了TCP和UDP协议的区别,强调TCP的可靠性和UDP的效率。在Java语言中,网络编程通常从传输层开始,根据需求选择高层次的URL连接或低层次的Socket编程。最后,给出了一个利用URLConnection对象获取网页内容并保存到文件的示例代码。
摘要由CSDN通过智能技术生成

1.网络通信协议分几层?各层解决的问题是什么?

物理层:通过物理电气接口实现互联设备之间的比特形式的信息传输。

数据链路层:是网络相邻节点设备间二进制信息传输的数据通道,是一种点到点的通信。负责数据通道的建立与拆除,当物理层受到干扰而发生传输错误时,链路层可以对数据进行检错和纠错。

网络层:解决跨越多个链路甚至不同网络设备间的通信问题(路由选择、流量控制、传输确认、终端、差错及故障恢复等),是一种端到端的通信。

传输层:解决处于不同网络设备间的通信连接、通信管理,对上层需要通信的数据分解为标准的适于传输的数据单元,这些数据单元到达终端后能对这些数据单元进行重新排序和整合。

会话层:为用户交互信息而按特定规律建立的连接,提供会话地址和会话管理服务。

表示层:可以将会话层得到的数据转化为应用层可以理解的表达形式,或者将应用层数据转化为会话层可以传输的形式。

应用层:是面向特定的网络应用提供服务,例如网页传输、文件传送、邮件收发、终端控制、网络设备管理等。

会话层、表示层和应用层属于面向用户提供应用服务的高层通信协议。

2.TCP和UDP协议有什么不同,为什么称TCP是面向连接的可靠的协议?

不同:

通信方式上,TCP进行数据传输前必须要建立连接,所以多了一个建立连接的时间;UDP每个数据报中都给出了完整的地址信息,无须建立连接。

传输数据量上,TCP中双方的socket可以按统一的格式传输大量数据;UDP传输数据时有大小限制,每个被传输的数据报必须在64KB之内。

可靠性上,TCP可靠,能确保接收方完全正确地获取发送方所发送的全部数据;UDP不可靠,发送方所发送的数据报并不一定以相同的次序到达接收方,也不一定保证接收方能收到。

总之,TCP相较于UDP的传输量大,可靠性强;而UDP的操作简单,传输效率高。

TCP的通信过程必须经过三个阶段:建立连接,数据通信、连接撤销。并且使用了确认机制,因此其的通信结果是可靠的。

3.在Java语言中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择java高层次网络编程,什么情况下选择低层次网络编程?
是从传输层开始的;

高层次网络编程是基于URL的;低层次网络编程是TCP和UDP。

4.Socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出?

socket编程时,目的地址和端口号需要创建客户端时指出;使用数据报时,在构造DatagramPacket时指出。

5.利用URLConnection对象编写程序返回某网站的首页,并将首页内容存放到文件当中。

import java.io.*;
import java.net.*;

public class html {

    public static void main(String[] args) throws IOException {
        URL url=  new URL("https://www.baidu.com/");
        URLConnection con = url.openConnection();
        BufferedReader is=  new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
        //三层括号由右往左,以指定字符集获得url的字节输入流,转换为字符输入流,按行读取,更高效
        FileOutputStream fos = new FileOutputStream("E:\\test.txt");//指定路径,它会自动新建一个文件
        String line;
        while((line = is.readLine()) != null ) {
            line = line + "\n";
            fos.write(line.getBytes("UTF-8"));//同样要指定字符集
            fos.flush();
        }
        System.out.println("Successful!");
        is.close();
        fos.close();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值