Java小李备春招|计算机网络

Java小李备春招|计算机网络

Java小李备春招系列文章:
1. Java小李备春招|JVM
2. Java小李备春招|面向对象
3. Java小李备春招|常用API
4. Java小李备春招|异常
5. Java小李备春招|集合
6. Java小李备春招|IO
7. Java小李备春招|计算机网络

  1. 说一说OSI七层模型。
    (1)物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流。这一层的数据叫做比特。
    (2)数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
    (3)网络层:主要将从下层接收到的数据进行IP地址的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
    (4)传输层:定义了一些传输数据的协议和端口号,如:TCP、UDP。 主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。常常把这一层数据叫做段。
    (5)会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在用户的系统之间发起会话或者接受会话请求。
    (6)表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等))。
    (7)应用层:主要是一些终端的应用,比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的(通俗来说就是我们在电脑屏幕上可以看到的东西,就是终端应用)。

  2. 简述TCP/IP四层模型。
    (1)网络访问层(与OSI参考模型中的物理层和数据链路层相对应):负责监视数据在主机和网络之间的交换,指出主机必须使用某种协议与网络相连。
    (2)网络层(与OSI参考模型中的网络层相对应):主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址。它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
    (3)传输层(与OSI参考模型中的传输层相对应):为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:TCP协议和UDP协议。
    (4)应用层(与OSI参考模型中的应用层、表示层和会话层相对应):应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(FTP)、虚拟终端协议(TELNET)、超文本传输协议(HTTP),也有基于UDP协议的,如网络时间协议(NTP)、简单文件传输协议(TFTP)、简单网络管理协议(SNMP)。DNS是域名解析服务,提供域名到IP地址之间的转换(可以基于TCP也可以基于UDP)。

  3. TCP/IP模型与OSI模型的比较
    共同点:
    (1)OSI参考模型和TCP/IP参考模型都采用了层次结构的概念;
    (2)都能提供面向连接和无连接两种通信服务机制。
    不同点:
    (1)OSI是七层模型,TCP/IP是四层模型;
    (2)TCP/IP对可靠性要求更高;
    (3)OSI模型是在协议开发前设计的,具有通用性。TCP/IP模型是先有协议集然后建立模型,不适用于非TCP/IP网络;
    (4)实际市场应用不同(OSI模型只是理论上的模型,并没有成熟的产品,而TCP/IP已经成为“实际上的国际标准”)。

  4. TCP和UDP的区别。
    TCP,即传输控制协议。面向连接,即必须在双方建立可靠连接之后,才会收发数据。建立可靠连接需要经过3次握手,断开连接需要经过4次挥手,需要维护连接状态。
    UDP,即用户数据报协议。不建立可靠连接,无需维护连接状态。接收端,UDP 把消息段放在队列中,应用程序从队列读消息,传送数据的速度受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。面向数据报,不保证接收端一定能收到。
    两者的区别大致如下:
    (1) TCP 面向连接;UDP 面向数据报不建立可靠连接;
    (2) TCP 信息包头 20 个字节;UDP 8 个字节;
    (3) TCP 只能一对一的传输;UDP 支持一对一、一对多、多对一、多对多的传输;
    (4) TCP 需要维护连接状态;UDP 不需要;
    (5) TCP 拥有流量控制及拥塞控制的机制;UDP 不关注网络状况;
    (6) TCP 通过流模式传输数据;UDP 通过数据报模式传输数据;
    (7) TCP 保证数据正确性、不丢包、不重复、有序性;UDP 只最大交付,不保证可靠性;
    (8) TCP 适合网络负担不大、可靠性要求高的场景;UDP 适合网络负担重响应高、客户端较多、可靠性要求不高的场景。

  5. 简述三次握手以及为什么要三次握手。
    第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
    原因:为了保证服务端能成功接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够成功接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

  6. 简述四次挥手以及为什么要四次挥手。
    第一次挥手:客户端发送FIN包,用来关闭客户端到服务端的数据连接,客户端进入FIN_WAIT1状态。
    第二次挥手:服务端收到FIN包后返回一个ACK包,进入CLOSE_WAIT状态。客户端收到FIN的应答后进入FIN_WAIT2状态。
    第三次挥手:服务端发送FIN请求包,用来关闭服务端到客户端端的数据连接,进入LAST_ACK状态。
    第四次挥手:客户端收到FIN请求包后,发送ACK包给服务端,进入TIME_WAIT状态。服务器收到ACK应答后,进入close状态。
    原因:因为TCP是全双工的,客户端和服务端都需要FIN报文和ACK报文,客户端断开连接需要两次挥手,服务端断开连接也需要两次挥手。
    这里有两个需要注意的地方:(1)TIME_WAIT0的作用是确保有足够的时间让服务器接收到ACK包,如果ACK包丢失了,还可以重传;(2)服务器出现大量CLOSE_WAIT状态的原因可能是程序bug导致资源未释放或者线程配置不合理。

  7. HTTP与HTTPS的区别
    (1)https协议需要从CA申请证书,需要一定经济成本;
    (2)http是明文传输,https是加密的安全传输;
    (3)连接端口不同,http是80,https是443;
    (4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

  8. GET和POST请求区别
    从用途方面说:GET请求一般用于一些安全性不太高的请求场景,如查询;而POST用于表单提交比较多,安全性比较高。
    消息体方面说:GET是直接把请求的URL的放到请求头当中,直接在标签栏看到,而POST请求而是直接把请求的信息放到了请求体中,用户看不到。
    传输格式来说:GET只能进行url编码,而POST可以指定任意编码格式进行请求。
    长度限制方面来说:GET请求在URL栏中有固定的长度限制,不能大于2K,而POST请求的长度基本上没有长度限制。
    从URL方面来说:GET请求的地址可以直接保存为书签,但是在POST请求中就不能使用书签保存。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值