Java面试题-Java基础(⑱)-网络编程
1.ip地址的组成包含什么?
网络地址
主机地址
2.http是什么协议?
超文本传输协议
3 .DNS是什么?
域名解析系统 负责将域名解析为对应的IP地址
4.tcp和udp的区别是什么?
TCP是面向连接的 安全的 可靠的传输协议 通过大量的确认操作建立连接和断开连接 所以数据安全 但是效率低
UDP是非面向连接的 不安全 不可靠的传输协议 不需要确认连接 所以效率高 但是不安 全
5.用自己的话描述tcp三次握手和四次挥手
TCP协议的三次握手:
-
第一次:客户端向服务器发送连接请求
-
第二次:服务器向客户端响应连接请求
-
第三次:客户端与服务器建立连接
TCP协议的四次挥手:
-
第一次:客户端向服务器发送断开连接请求
-
第二次:服务器向客服端响应收到断开连接请求(因为TCP连接是双向的,所以此时服务器依然可以 向客户端发送信息)
-
第三次:客户端等待服务器发送信息完成,向服务器确定全部信息发送完毕,并且断开客户端与服务器的连接
-
第四次:服务器向客户端断开连接
6.端口号的作用,取值范围
用来标识计算机上的每一个应用程序
7.网络编程所用到的类有哪些,各自作用是什么
Socket基于TCP协议的传输数据的套接字客户端类
ServerSocket 基于TCP协议的传输数据的套接字服务器类
DataGramPacket 基于UDP协议的传输数据的数据报包类
DataGramSocket 基于UDP协议的传输数据的套接字类
InetAddress lP地址类SocketAddress 根据套接字对象获取地址信息的工具类
8.sleep和wait的区别
①:语法使用不同:
wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出
synchronizedIllegalMonitorStateException的异常而 sleep 可以单独使用,无需配合synchronized 一起使用。
②:所属类不同:
wait 方法属于 0bject 类的方法,而 sleep 属于 Thread 类的方法
③:唤醒方式不同:
sleep 方法必须要传递一个超时时间的参数,且过了超时时间之后,线程会自动唤醒。而 wait 方法可以不传递任何参数,不传递任何参数时表示永久休眠,直到另一个线程调用了 notify 或 notifyAll 之后,休眠的线程才能被唤醒。也就是说 sleep 方法具有主动唤醒功能,而不传递任何参数的 wait 方法只能被动的被唤醒。
4:释放锁资源不同:
wait 方法会主动的释放锁,而sleep 方法则不会。
5:线程进入状态不同:
调用 sleep 方法线程会进入 TIMED WAITING 有时限等待状态,而调用无参数的 wait 方法,线程会进入 WAITING 无时限等待状态。
9.网络编程五层模型 七层模型都有哪些层