Java面试-计算机网络

1.OSI七层模型

        物理层:定义了物理设备的标准,如网线的类型、传输介质速率。传输比特流(网卡)。
        数据链路层:如何格式化数据进行传输,控制对物理介质的访问,提供错误检测和纠正。将比特数据转换成帧(交换机)。
        网络层:将网络地址翻译成对应的物理地址,并决定将数据如何从发送方路由到接收方(路由器)。此层的数据是数据包。TCP/IP中的IP协议。
        传输层:解决主机间的数据传输,传输协议、流量控制、调整发送速率。TCP协议、UDP协议    。
        会话层:管理和建立应用程序之间的通信。应用程序自动收发包和寻址。
        表示层:解决不同系统之间通信语法的问题。
        应用层:应用从网络中传递的数据(HTTP)

2.TCP

  2.1 TCP的三次握手

          TCP: 面向连接的、可靠的、基于字节流的传输层通信协议;
                 将应用层的数据流分割成报文段并发送给目标节点的TCP层;
                 数据包都有序号,对方收到则发送发送ACK确认,未收到则重传;
                 使用校验和来校验数据在传输过程中是否有误
            ACK: 确认序号标志
            SYN: 同步序号,用于建立连接过程
            FIN: 用于释放连接
            第一次握手:建立连接时,客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认
            第二次握手:服务器收到SYN包,必须确认用户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态
            第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),客户端和服务器进入ESTABLISHED状态,完成三次握手。

  2.2 TCP的四次挥手

            第一次挥手: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后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
            最后,Client需要等待2MSL的时间,关闭连接(因为要确保服务器端接收到了ACK,避免新旧连接混淆)。 

  2.3 TCP的滑动窗口

            RTT:发送一个数据包到收到对应的ACK,所花费的时间
            RTO:重传时间间隔
            作用:
                保证TCP的可靠性
                保证TCP的流控特性
            TCP发送方:已发送已收到ACK|【已发送未收到ACK|未发送但是可以发送】|未发送不允许发送
            TCP接收方:已接收已发送ACK|【未接收但可以接收】|未接收但不能接收    

3.UDP

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

4.HTTP

  4.1 特点

            支持客户/服务器模式
            简单快速
            灵活
            无连接(限制每次连接只处理一个请求)
            无状态(连接对事务处理没有记忆信息)

  4.2 请求/响应的步骤

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

  4.3 HTTP状态码

            1xx:指示信息--表示请求已接收,继续处理
            2xx:成功--表示请求已被成功接收、理解、接受
            3xx:重定向--要完成请求必须进行更进一步的操作
            4xx:客户端错误--请求有语法错误或请求无法实现
            5xx:服务器端错误--服务器未能实现合法的请求
            200 OK:正常返回信息
            400 Bad Request:客户端请求有语法错误,不能被服务器理解
            401 Unauthorized:请求未经授权
            403 Forbidden:服务器收到请求,但是拒绝提供服务
            404 Not Found:请求资源不存在(输入了错误的URL)
            500 Internal Server Error:服务器发生了不可预期的错误
            503 Server Unavailable:服务器当前不能处理客户端请求,一段时间后可能恢复正常

  4.4 GET请求/POST请求

            Http报文层面:GET将请求信息放在URL,POST放在报文体中
            数据库层面:GET符合幂等性和安全性(查询数据),POST不符合(提交数据)
            其他层面:GET可以被缓存、被存储,而POST不行

  4.5 Cookie/Session

            Cookie:
                是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
                客户端再次请求的时候,会把Cookie回发
                服务器接收到后,会解析Cookie生成与客户端相对应的内容
                Cookie的发送过程:
                    客户端向服务端发起请求;服务端对客户端进行响应(响应头中有Cookie信息);
                    客户端再发起请求(请求头中也含有Cookie);服务器解析Cookie进行响应
            Session:
                服务器端的机制,在服务器上保存的信息
                解析客户端请求并操作session id,按需保存状态信息(如果客户端中存在session id,那么说明服务端为这个客户端创建过session)
                Session的实现方式:
                    使用Cookie来实现:服务器为每一个客户端分配一个唯一的JSESSIONID,并发送给客户端。
                                     当客户端进行请求的时候,在请求头中会携带这个JSESSIONID
                    使用URL回写来实现:在URL中写入JSESSIONID
            区别:
                Cookie的数据存放在客户的浏览器上,Session数据放在服务器上
                Session相对于Cookie更安全
                若考虑减轻服务器负担,应当使用Cookie

5.HTTPS

  5.1 HTTPS数据传输流程

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

  5.2 HTTP/HTTPS的区别

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

6.Socket

  是对TCP/IP协议的抽象,是操作系统对外开放的接口

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值