JAVA网络编程

1、tcp和udp的区别

TCP是面向连接的安全的流传输控制协议,确保数据的安全性,有验证重发的机制,所以不会出现求实或者乱序。

UDP是面向无连接的不安全的数据报服务,它不对数据报进行检查与修改,无需等待对方应答,会出现分组丢失,重复乱序,但是具有很好的实时性。

UDP段结构比TCP段结构简单,所以网络开销也比较小。

TCP安全是因为他通过三次握手创建连接,四次挥手断开连接,他是点对点的连接而UDP相当于是广播,所以是不安全的

2、tcp连接建立的时候3次握手,断开连接的4次握手的具体过程

三次握手:

首先服务器端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。客户端新建套接字绑定地址信息后调用connect连接,发送SYN连接请求并且进入SYN_SENT状态,服务器端接收到后发送SYN以及ACK确认报文,并且进入SYN_RCVD状态,客户端接收到后返回ACK确认报文,并且进入ESTABLISHED状态,服务器端接收到客户端的ACK进入ESTABLISHED,至此连接完成。

四次握手:

首先客户端调用close向服务器端发送FIN结束报文,进入FIN_WAIT1。服务器端收到后会发送ACK确认报文,并且进入CLOSE_WAIT状态,这个时候服务器端是可以向客户端发送没有发送完的数据的。客户端接收到了服务器端的ACK确认报文后,进入FIN_WAIT_2状态。当服务器端的数据发送完毕后,调用close向客户端发送FIN结束报文,并且进入LAST_FIN状态,客户端接收到后,发送ACK确认报文进入TIME_WAIT状态等待2MSL后关闭,服务器端接收到了ACK确认报文后,关闭连接

3、什么是同步?什么是异步?

同步:当有多个任务进行的时候,这些任务必须逐个执行,一个任务的执行会导致整个流程等待,这些任务没有办法并发执行。

异步:当有多个任务进行的时候,这些任务可以并发执行,一个任务的执行不会导致整个流程的暂时等待。

4、.什么是阻塞?什么是非阻塞?

阻塞:当某个事件或者任务在执行的过程中,发出一个请求操作,但是由于该请求操作条件不满足,那么就会一直等待,直至条件满足。

非阻塞:当某个事件或者任务在执行的过程中,发出一个请求操作,如果该请求操作条件不满足,会立即返回一个标志信息告知条件不满足不会一直等待。

5、什么是阻塞IO?什么是非阻塞IO?

完整的IO请求包括两部分

1)查看数据是否就绪;

2)进行数据拷贝(内核将数据拷贝到用户线程)

阻塞IO:当线程发起一个IO请求时,会先去查看数据是否已经就绪,如果没有就绪,就会一直等待,直到数据就绪。

非阻塞IO:当线程发起一个IO请求时,会先去查看数据是否已经就绪,如果没有就绪,就会返回一个标志信息,告诉用户线程数据没有就绪,不会一直在那儿等待。

阻塞IO和非阻塞IO关键在于第一步。查看数据就绪是如何处理的。

6、什么是同步IO?什么是异步IO?

同步IO:当用户发出IO请求时,如果数据没有就绪,需要用户线程会这是内核不停的去轮询是否达就绪,当数据就绪后,再将数据从内核拷贝到用户线程。

异步IO:只有发送IO请求是用户线程来进行的,IO的两个操作都是由内核去自动完成的,然后发送通知告知用户线程操作已经完成。

同步IO和异步IO主要区别在于第二步是由用户线程完成还是内核完成

7、 IO模型有几种?分别是什么?

8、 Reactor和Proactor IO设计模式是什么?

9、Java NIO 中的Buffer是什么?如何使用?

10、Nio buffer 的内部结构是什么?

11、Java NIO 中的 Channel是什么?有什么特点?

12、Java NIO中的Selector是什么?

13、简单讲一下文件IO中的Path和Files

14、select、poll和epoll的区别

15、网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?

15、网络编程的一般步骤

16、TCP的全称是?

17、UDP的全称是?

18、请说出TCP和UDP的区别?

19、TCP为什么不是两次连接?而是三次握手?

20、说明socket是什么?

21、为什么需要端口?端口是真实存在的还是虚拟的概念?

22、Java中,端口使用两个字节表示,可以表示多少个端口? UDP和TCP端口是各自独立的吗?

23、URL类有什么作用?

24、基于TCP的Socket网络编程的主要步骤是什么?

25、【上机】写出建立TCP服务器ServerSocket的代码。并说明accept方法有什么特点?

26、【上机】写出建立TCP客户端Socket的代码。并说明建立Socket后,通过什么方法Socket获得流对象?

27、基于UDP的Socket网络编程的主要步骤是什么?

28、【上机】使用UDP的方式,完成对象的传递。

29、HTTPClient相关问题

30、NIO 和传统 BIO区别是什么?

31、Java NIO 的几个核心组成部分是什么?作用分别是什么?

32、简单说一下http协议?

33、http协议下客户端请求报文是什么?

34、描述一下http协议服务器响应报文有哪些?

35、HTTP协议中常用的请求方法有哪些 50

36、常见的HTTP状态码有哪些

37、HTTP 协议中content-type指的是什么?

38、网络传输协议本质和作用是什么?

39、可以实现一个简单的网络协议吗?

TCP/IP协议

TCP/IP协议模型图:

在这里插入图片描述

如图:TCP/IP模型一共分为了四层

应用层、传输层、网络层、物理层。

网络层用到的是我们的IP协议,

传输层用到的则是TCP和UDP协议

TCP的三次握手

首先,服务器端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。客户端新建套接字绑定地址信息后调用connect请求SYN,进入SYN_SENT状态等待服务器的确认。服务端如果监听到了就会把连接放入内核等待队列中,并向客户端发送SYN以及ACK确认号,进入SYN_RCVD状态。客户端收到SYN+ACK报文后向服务端发送确认ACK报文后进入ESTABLSHED状态, 开始读写数据。服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了 。

在这里插入图片描述

TCP的四次挥手

当客户端主动调用close时,会向服务端发送FIN结束报文段,进入FIN_WAIT1状态,服务器端接收到FIN报文后,会返回确认报文ACK并进入CLOSE_WAIT状态, 此时如果服务端有数据要发送的话,客户端依然需要接收 。 客户端收到服务器对结束报文段的确认,就会进入到FIN_WAIT2状态,开始等待服务器的结束报文段 。服务器端数据发送完毕后,会调用close关闭连接,向客户端发送结束报文FIN包,此时服务器进入LAST_FIN状态,等待最后一个ACK,当客户端接收到了服务器端的结束报文,会进入TIME_WAIT,并且发送ACK确认报文, 服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接而客户端要等待2MSL的时间,才会进入到CLOSED状态

在这里插入图片描述

HTTP和HTTPS

HTTP和HTTPS的不同在于HTTP使用的是明文传输数据,而HTTPS则是在HTTP外面加上了一层TSL/SSL协议加密。

HTTPS的加密涉及到两种加密方式,一种是非对称加密,另外一种是对称加密。

对称加密的传输速度比非对称加密的传输速度快很多,所以HTTPS传输数据采用的是对称加密。非对称加密用于客户端与服务器端协商密钥的时候对密钥的加密,但是非对称加密的公钥不可能用明文发送给客户端,所以就引入了 数字证书 ,数字证书由CA认证机构签发。

的加密涉及到两种加密方式,一种是非对称加密,另外一种是对称加密。

对称加密的传输速度比非对称加密的传输速度快很多,所以HTTPS传输数据采用的是对称加密。非对称加密用于客户端与服务器端协商密钥的时候对密钥的加密,但是非对称加密的公钥不可能用明文发送给客户端,所以就引入了 数字证书 ,数字证书由CA认证机构签发。

CA证书其实就是,服务器端将自己的公钥和证书一起给CA机申请,CA会用自己的私钥对其内容进行加密,申请通过之后,就会返回给申请者加密后的证书,而CA会向所有人公布自己的公钥,所以服务器端只需要向客户端发送加密后的证书,如果客户端能够解密,则说明是受信任的,不能够解密则说明可能被篡改了。CA机构就好比是贷款担保人。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值