网络通信
1. 网络通信协议分为几层?各层解决的问题是什么?
- 网络通信协议分为七层,后三层为面向用户提供应用服务的高层次通信协议
- 物理层:通过物理电气接口实现互联设备间的比特形式的信息传输;
- 数据链路层:网络相邻节点设备间二进制信息传输的数据通道,负责数据通道的建立和拆除;
- 网络层:解决跨越多个链路的甚至不同网络设备之间的通信问题,是一种端到端的通信;
- 传输层:解决处于不同网络设备间的通信传输、通信管理,对上层需要通信的数据信息分解为标准的数据单元,这些数据单元到达终端后能对这些数据单元进行重新排序和整合;
- 会话层:为用户交互信息而按特点规律建立的连接,提供会话地址和会话管理服务;
- 表示层:将会话层得到的数据转化为应用层可以理解的表达形式,或则将数应用层数据转化为会话层可以传输的形式;
- 应用层:面向特定得到网络应用提供服务
2. TCP和UDP协议有什么不同,为什么称TCP是面向连接的可靠的协议?
- TCP是面向应用的可靠的数据传输机制,而UDP是非可靠的数据传输机制,因为TCP在传输数据之前要进行“三次握手”
连接请求消息段
,允许连接消息段
,确认消息段
,再传输时得到的是顺序无差错的数据流; - TCP可以按统一格式传输大量数据,而UDP传输数据必须在64KB以内;
- TCP能确保接受方完全正确地获取发送方地全部数据,而UDP无法保证是否接收与顺序保证。
3. 在Java语言当中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择Java高层次网络编程,什么情况下选择低层次网络编程?
- Java网络编程是从传输层开始;
- 基于应用层开发时使用高层次网络编程,基于传输层开发使用低层次网络编程。
##=## 4. Socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出?
- Socket编程时,目的地址和端口在创建Scket对象时指出;
- 使用数据报时,目的地址和端口在新建DatagramPacket对象时指出。
5.利用URLConnection对象编写程序返回某网站的首页,并将首页内容存放到文件当中。
package URL;
/**
* @title URLConnection 读取网页资源并保存到文件
* @author YEE686
* @version 20.11.14
*/
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLConn {
public static void main(String[] args) {
URL baidu = null;
try {
baidu = new URL("https://www.baidu.com/");
} catch (MalformedURLException e) {
e.printStackTrace();
}
URLConnection con = null;
try {
con = baidu.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader in = null;
try {
in = new BufferedReader(
new InputStreamReader(con.getInputStream())
);
} catch (Exception e) {
System.out.println("ERROR");
}
File file = new File("D:\\Sources\\JavaSource\\Homework15\\src\\URL\\file.txt");
FileOutputStream out = null;
try {
out = new FileOutputStream(file);
} catch (IOException e) {
e.printStackTrace();
}
String str ;
try {
while ((str = in.readLine()) != null) {
System.out.println(str);
str+="\n";
out.write(str.getBytes("UTF-8"));
out.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}