面试题总结-计算机网络

1.学JavaWeb为什么要学网络知识?

当性能无法满足我们的需求时,如果不熟悉框架底层,往往束手无策,网络也是一样,我们没办法判定程序为何变慢,是网络原因还是其他原因?数据包是否丢失?为什么会造成大量loads wait?为什么会出现大量连接丢失等等。

2.七层模型

第一层:** **物理层(网卡)

定义物理设备的标准,如光纤的接口类型,网线的类型,传输介质的速率。
作用:发送数据时,将比特流(010101二进制数据),转换为电流的强弱强弱来传输,到达目的地后,再转换为0101二进制数据(数模转换)。
数据:比特

第二层:数据链路层(交换机)

定义了如何格式化数据以进行传输,控制对物理介质的访问。
在传输比特流过程中,会产生错传,数据传输不完整的可能,
作用:它提供错误检测和纠正的功能,以确保数据传输的可靠性,将比特数据组成帧。
数据:帧

第三层:网络层(路由器)

网络层考虑问题:随着网络节点的增加,点对点的通讯是需要多个节点的,如何找到目标节点,如何选择最佳路径。
作用:将网络地址翻译成物理地址,并决定如何将数据从发送方路由到接收方。
数据:数据报、分组

第四层:传输层(路由器)OSI模型中最重要的一层

传输层考虑的问题:随着网络通讯需要的进一步扩大,通讯过程需要发送大量数据,可能需要很长时间,而网络在通讯过程中中断很多次,为了保证传输大量文件的准确性,需要对发送出去的数据进行切分,切割为一个个段落(segment),段落丢失时 是否重传?每个段落是否按顺序到达?
作用:1.分割与重组数据;2.差错控制和流量控制,纠错的功能;3.按端口号寻址;4.连接管理。
传输层要向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错
数据:分段

表示网络中唯一的进程:ip地址加传输层协议和端口号
某些场合将这个进程称为套接字:socket

3.说说TCP的三次握手?

4.说说TCP的四次挥手?

为什么要三次握手
为什么要TIME_WAIT?
为什么要四次挥手?
服务器出现大量CLOSE_WAIT的原因

在这里插入图片描述
在这里插入图片描述

10.TCP滑动窗口的原理

在这里插入图片描述

  • LastByteAcked:当前已发送并且对方已确认的数据段

  • LastByteSent:指向当前以发送的但对方未确认的最后一个字节

  • LastByteWritten:指向上层应用已写完的最后一个字节,当前程序准备好的要发送的数据段。

  • LastByteAcked ~ LastByteSent区间:表示已经发送但是未收到ACK的数据

  • LastByteSent ~ LastByteWritten区间:表示未发送出去的数据

  • LastByteRead:TCP缓冲区已读取的最后一个字节

  • NextByteExpected:收到的连续包的最后一个位置

  • LastByteRcved:收到的包的最后一个位置

  • NextByteExpected ~ LastByteRcved区间:未到达的数据区间

  • LastByteRead ~ NextByteExpected区间:已收到的数据区间

ACK中会汇报自己的Window = MaxRcvBuffer – LastByteRcvd – 1(只剩下这么多的空间能装新的数据)
发送方会根据窗口来控制发送数据的大小,以保证接收方可以处理

在这里插入图片描述

已发送且待确认的数据量要小于接收方的窗口大小。

在这里插入图片描述
窗口内剩余的可发送的数据大小EffectiveWindow等于AdvertisedWindow减去待确认的数据量。

在这里插入图片描述
在这里插入图片描述
TCP最基本的传输可靠性来源于确认重传机制,TCP滑动窗口的可靠性也是建立在重传基础之上的,发送窗口只有收到接收端对于本段发送窗口内字节的ack确认才会移动发送窗口的左边界,接收窗口只有在前面所有的段确认的情况下才会移动左边界,当在前面还有字节未接收,但收到后面的字节窗口是不会移动的,并不会对后面字节确认对端会对这些数据重传。

11.GET和POST的区别

在这里插入图片描述

12.session和cookie的区别

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
url回写:比如登陆请求成功后返回首页,这时首页的链接或包含的其他链接都会在链接参数后加上sessionId

  • 实验证明一下关于tomcat的url回写机制

在这里插入图片描述

13.socket的通信流程

在这里插入图片描述

14.浏览器上输入url后按下回车发生了什么?

  • 待详细

1. 根据域名解析得到ip地址
2. 通过ip地址和端口与服务端建立tcp连接
3. 向服务端发送http请求
4. 服务端接收处理请求
5. 响应结果给浏览器
6. 关闭tcp连接
7. 浏览器解析html
8. 浏览器渲染结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值