JAVA面试核心知识点(一):计算机网络

一·计算机网络

1.1 网络基础知识

OSI 七层协议(制定标准使用的标准概念框架):
    物理层(传递比特流0101)->数据链路层(将比特流转换为逻辑传输线路)->网络层(逻辑编址,分组传输,路由选择)->传输层(传输协议同时进行流量控制)->会话层(自动寻址,建立不同用户之间的会话)->展示层(加密解密,转换翻译,缩解压缩)->应用层
    应用层,表示层,会话层(数据),传输层(分段),网络层(分组,数据包),数据链路层(帧),物理层(比特)

OSI实现的TCP/IP的主流协议:
    应用层(应用层,表示层,会话层),传输层,网络层,链路层(数据链路层,物理层)

1.2 tcp三次握手

传输控制协议TCP简介:
    面向连接的,可靠的,基于字节流的传输层通信协议
    将应用层的数据流分割成报文段并发送给目标节点的TCP层
    数据包都有序号,对方收到则发送ACK确认,未收到则重传
    使用校验和来检验数据再传输过程中谁否有误

TCP flags:
    URG:紧急指针
    ACK:确认标识
    PSH:push
    RST:重置链接
    SYN:同步序号,建立链接
    FIN:finsh标识,释放链接

额外:
    单工通信:指消息只能单方向传输的工作方式,只占用一个信道。
    半双工通信:指通信双方都能收发信息,但不能同时进行收和发的工作方式
    全双工通信:指通信双方可同时进行收发消息的工作方式

tcp三次握手流程:
tcpthree

    第一次握手: 建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认

    第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态

    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

1.3 tcp四次挥手

tcp四次挥手流程:
tcpfour

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送
Client进入FIN_WAIT_1状态

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为
收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,
Server进入LAST_ACK状态

第四次挥手:Client收到FIN后,Clinet进入TIME_WAIT状态,接着发送一个ACK给
Server,确认序号为收到序号+1,Server进入CLOSE状态,完成四次挥手。

为什么需要四次挥手呢?
    因为全双工通信,发送方和接受放都需要确认FIN报文和ACK报文。

1.4 tcp和udp的区别(传输层协议)

传输控制协议UDP简介:
    面向非链接
    不维护链接状态,支持同时向多个客户端传输相同的消息
    数据包报头只有8个字节,额外开销较小
    吞吐率只受限于数据生成速率,传输速率以及机器性能
    尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表
    面向报文,不对应用程序提交的报文信息进行拆分或者合并

区别: 
    面向链接 vs 无连接
    可靠性
    有序性
    速度
    量级

1.5 tcp的滑动窗口

RTT和RTO
    RTT:发送一个数据包到收到对应的ACK所花费的时间
    RTO:重传时间间隔

TCP使用滑动窗口做流量控制与乱序冲重排
    保证TCP的可靠性
    保证TCP的流控特性

1.5 http相关(应用层协议)

超文本传输协议HTTP主要特点:
    支持客户/服务器模式
    简单快速
    灵活(允许传输任何类型的数据对象)
    无连接
    无状态

请求/响应步骤
    客户端连接到web服务器
    发送HTTP请求
    服务器接受请求并返回HTTP响应
    释放链接TCP链接
    客户端浏览器解析HTML内容

相关面试题:
1.在浏览器地址键入URL,按下回车之后经历的流程
    DNS解析
    TCP链接
    发送HTTP请求
    服务器处理请求并返回HTTP报文
    浏览器解析渲染页面
    连接结束

2.HTTP状态码
    1xx:指示信息--表示请求已接受,继续处理
    2xx:成功--标识请求已被成功接收,理解,接受
    3xx:重定向--要完成请求必须进项更进一步的操作
    4xx:客户端错误--请求有语法错误或请求无法实现
    5xx:服务器端错误--服务端未能实现合法的请求

3.常见的状态码
    200 OK:正常返回信息
    400 Bad Request:客户端请求由于发错误,不能被服务器理解
    401 Unauthorized:请求未授权,这个状态码必须和WWW-Authenticate报头域一起使用
    403 Forbidden:服务器收到请求,但是拒绝提供服务
    404 Not Found:请求资源不存在,eg,输入了错误的URL
    500 Internal Server Error:服务器发生了不可预期的错误
    503 Server Unavaliable:服务器当前不能处理客户端请求,一段时间后可能恢复正常

4.GET请求和POST请求的区别

    HTTP报文层面:GET将请求信息放在URL,POST放在报文体中
    数据库层面:GET符合幂等性和安全性,POST不符合
    其他层面:GET可以被缓存,被储存,POST不行

5.Cookie和Session的区别

Cookie简介:
    是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
    客户端再次请求的时候,会把Cookie回发
    服务器接收到后,会解析Cookie生成与客户端相对应的内容

Cookie的设置以及发送
    1. Client发动一个HHTP Request到Server
    2. Server发送一个HTTP Response + Set-Cookie到Client
    3. Client发送一个HTTP Requset + Cookie到server
    4. Servre发送一个HHTP Response到Client

Session简介
    服务器端的机制,在服务器上保存的信息
    解析客户端请求并操作session id,按需保存状态信息

Session的实现方式
    使用Cookie来实现
    使用URL回写来实现

Cookie和Session的区别
    Cookie数据存放在客户的浏览器上,Session数据放在服务器上
    Session相对于Cookie更安全
    若考虑减轻服务器负担,应当使用Cookie

1.6 http和https的区别

SSL(Security Sockets Layer,安全套接层)
    为网络通信提供安全及数据完整性的一种安全协议
    是操作系统对外的API,SSL3.0后更名为TLS
    采用身份验证和数据加密保证网络通信的安全和数据的完整性

HTTPS数据传输流程
    浏览器将支持的加密算法信息发送给服务器
    服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器
    浏览器验证证书合法性,并结合证书公钥加密信息发送给服务器
    服务器使用私钥解密信息,验证哈希,加密响应消息回发浏览器
    浏览器解密响应消息,并对消息进行验真,之后进行加密交互数据

HTTP和HTTPS的区别
    HHTPS需要到CA申请证书,HTTP不需要
    HTTPS密文传输,HTTP明文传输
    连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
    HTTPS=HTTP+加密+认证+完整性保护,比HTTP更加安全

1.7 socket相关

Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口。
posted @ 2021-03-18 10:09  烟雨先生  阅读(132)  评论(0编辑  收藏  举报