计算机网络常见面试题

本文详细探讨了计算机网络的面试重点,包括七层模型及其协议、TCP与UDP的区别、TCP的三次握手与四次挥手机制、TCP如何保证可靠性和拥塞控制、粘包拆包问题、TCP连接状态(CLOSE-WAIT和TIME-WAIT)以及HTTP和HTTPS的区别。此外,还涵盖了DNS查询、HTTP协议、状态码、跨域问题和网络安全相关攻击及其防御措施。
摘要由CSDN通过智能技术生成

1.说一说七层模型,各层都是干什么的?有哪些协议?

OSI分层:(7层) 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
TCP/IP 分层:(4层) 网络接口层 网际层 运输层 应用层
五层协议:(5层) 物理层 数据链路层 网络层 运输层 应用层

每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)

数据链路层:将比特组装成帧和点到点的传递(帧Frame)

网络层:负责数据包从源到宿的传递和网际互连(包PackeT)

传输层:提供端到端的可靠报文传递和错误恢复(段Segment)

会话层:建立、管理和终止会话(会话协议数据单元SPDU)

表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)

应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

2.TCP和UDP区别,各自的组成部分,基于TCP和UDP的应用层协议?各自应用场景?

TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。
两者的区别大致如下:

  • TCP面向连接,UDP面向非连接即发送数据前不需要建立链接
  • TCP提供可靠的服务(数据传输),UDP无法保证
  • TCP面向字节流,UDP面向报文
  • TCP数据传输慢,UDP数据传输快

  • TCP提供一种面向连接的、可靠的字节流服务
  • 在一个TCP连接中,仅有两方进行彼此通信,因此广播和多播不能用于TCP
  • TCP使用校验和,确认和重传机制来保证可靠传输
  • TCP使用累积确认
  • TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

TCP对应的协议:

  • FTP:定义了文件传输协议,使用21端口。
  • Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
  • SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
  • HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
  • POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

UDP对应的协议:

  • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
  • SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
  • TFTP(Trival File TransferProtocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

为什么 TCP 叫数据流模式? UDP 叫数据报模式?
所谓的“流模式”,是指TCP发送端发送几次数据和接收端接收几次数据是没有必然联系的
所谓的“数据报模式”,是指UDP发送端调用了几次 write,接收端必须用相同次数的 read 读完。


TCP的组成

在这里插入图片描述
源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去;
32位序号/32位确认号: 不一定从0开始(作用:保证确认应答;保证数据按序到达;去重)
4位TCP报头长度: 表示该TCP头部有多少个32位bit(有多少个4字节); 所以TCP报头最大长度是15 * 4 = 60 字节
6位标志位:
1. URG: 紧急指针是否有效
2. ACK: 确认号是否有效
3. PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
4. RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
5. SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
6. FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段
16位窗口大小: 接收缓冲区剩余的空间大小
16位校验和: 发送端填充, CRC校验. 接收端校验不通过, 则认为数据有问题. 此处的检验和不光包含TCP 首部, 也包含TCP数据部分.
16位紧急指针: 标识哪部分数据是紧急数据;

UDP 的组成
在这里插入图片描述
UDP数据报最大长度64K(包含UDP首部),如果数据长度超过64K就需要在应用层手动分包,UDP无法保证包序,需要在应用层进行编号。

3.TCP三次握手、四次挥手、为什么三次握手?四次挥手?,三次挥手行不行,连接后客户端出现故障怎么办?

https://blog.csdn.net/kyang_823/article/details/79496259

为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

4.TCP如何保证可靠,拥塞控制过程?

https://blog.csdn.net/u010843421/article/details/82026427

5.TCP粘包、拆包出现原因场景及如何解决?

6.CLOSE-WAIT 和 TIME-WAIT ?

LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-SENT -在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
CLOSING -等待远程TCP对连接中断的确认;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED - 没有任何连接状态;

7. TIME-WAIT连接过多什么原因?解决?

https://blog.csdn.net/u013616945/article/details/77510925

8.浏览器输入URL并回车的过程发生了什么?DNS查询过程?DNS什么时候用TCP,什么时候用UDP?CDN知道吗?

https://blog.csdn.net/zwq68/article/details/97681986?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

9、HTTP1.0、1.1、2.0区别?

10.HTTP报文格式?常用字段?强缓存和协商缓存?

11.HTTP和HTTPS的区别?HTTPS的建立过程?对称加密和非u对称加密?

https://blog.csdn.net/wangjun5159/article/details/51510594

12.HTTP请求方式?GET和POST区别?

13.常见状态码?301和302区别?502和504区别?

14.cookie和session区别?

15.跨域?怎样解决跨域?

16.SYN泛洪攻击?XSS脚本攻击?csrf跨站请求伪造?解决方式?

17.ARP欺骗?DNS劫持?傻瓜窗口?等等。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值