1 网络通信协议分几层?各层解决的问题是什么?
OSI七层协议(Open System Interconnection)
应用层:直接为用户的应用进程提供服务
表示层:提供网络传输的标准格式
会话层:提供网络中两主机之间会话的建立、维持和终止等
传输层:为两主机间的进程通信提供可靠服务
网络层:为分组交换网上的不同主机提供通信服务,包括路由、地址解析等
数据链路层:两个相邻结点间的点到点的帧传输
物理层:比特流传输
TCP/IP四层协议
应用层:负责处理特定的应用程序细节
运输层:主要为两台主机上的应用提供端到端的通信。、
网际层:处理分组在网络中的活动,比如分组的选路。、
网络接口层:包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2 TCP和UPD协议有什么不同?为什么称TCP是面向连接的可靠的协议?
TCP:三次握手(先发送连接请求消息段,再发送允许连接消息段,最后是连接确认消息段)先连接再传输
UPD:数据易丢失(发送但对方可能收不到)且次序不一定是对的,但传输效率更高
3 在Java语言当中,网络编程是从协议的什么层次开始的?程序设计时,什么情况下选择Java高层次网络编程,什么情况下选择低层次网络编程?
应用层,传输层
高层次网络编程:如URL,不需要对协议本身有太多了解,但功能较弱,相对较简单
低层次网络编程:如Socket,是双向的通讯连接实现数据的交换,通常用来实现客户方和服务方的连接
4 Socket编程时,目的地址和端口号需要在什么地方指出?使用数据报时,又在什么地方指出?
Socket:创建新的Socket对象时
数据报:构造DatagramPacket时
5 利用URLConnection对象编写程序返回某网站的首页,并将首页内容存放到文件当中。
import java.net.*;
import java.io.*;
public class urlhm {//声明抛出所有例外
public static void main(String[] args) throws Exception {
URL tirc = new URL("http://www.hzau.edu.cn/");
//使用openStream得到一输入流并由此构造一个BufferedReader对象
InputStream instr = tirc.openStream();
BufferedReader in = new BufferedReader(new InputStreamReader(instr,"UTF-8"));
String inputLine;
//从输入流不断的读数据,直到读完为止
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine); //把读入的数据打印到屏幕上
in.close(); //关闭输入流
}
}
输出: