网络面试题

<1>.说一说TCP/IP模型,以及都做了哪些事情
TCP/IP模型分为五层,分别是应用层,传输层,网络层,数据链路层,物理层

TCP/IP协议群主要是报文的拆分,增加协议头,数据的传输,路由和寻址以及数据的重组

<2>.说一说TCP的三次握手四次挥手
1.建立连接------>TCP三次握手:

TCP------>三次握手的流程

1.主机A发送syn到主机B,要求建立a到b的连接。此时主机A的状态为syn_sent
2.主机B回复ack+syn(这里的ack和syn数据报本来是两个,但是仅标志位不同,所以可以合并,为什么不是四次的原因),要求建立b到a的连接,主机B的状态为syn_rcvd
3.主机A回复第2步syn的ack。主机A的状态为established,建立A到B的连接
主机B接收到第3步的数据报,建立B到A 的连接,主机B的状态置为established

TCP------>三次握手中的问题:
1.syn为什么有两个?
双方的连接状态会持续,且连接是有方向的

2.第二步中,为什么是ack+syn?
本质上是一个发ack应答,一个发syn请求,而且是方向一致的两个数据报,可以合并

3.第三步中,ack确认应答哪个?
应答第二步的syn

2.断开连接------>TCP四次挥手:

TCP------>四次挥手的流程
1.主机A发送fin到主机B,请求关闭a到b的连接
2.主机B回复ack,主机B的状态置为close_wait
3.主机B发送fin到主机A,请求关闭b到a的连接
4.值即A回复ack(第三步的fin),状态置为time_wait
主机B接收到第四步的数据报,状态置为closed
主机A经过2MSL(超时等待时间)之后,状态置为closed

TCP------>4次挥手中的问题
1.第2步和第3步为什么不能和3次握手流程一样,进行合并
原因:第2步是TCP协议在系统内核中实现时,自动响应的ack
第3步时应用程序手动调用close来关闭连接的
程序在关闭连接之前,可能需要执行释放资源等前置操作,所以不能合并(TCP协议实现时,没有这样进行设计)

2.第3步中,主机A为什么不能直接设置为closed状态
原因: 第4个数据报可能丢包,如果直接置为closed,丢包后无法重新发送数据。
主机B达到超时时间之后,会重发第三个数据报,然后要求主机A再次回复ack

3.服务器出现大量的close_wait状态,是为什么?
服务端没有正确的关闭连接(程序没有调用close,或者没有正确使用)

<3>IPV4和IPV6的区别
1.地址不同(IPV4 32位,IPV6 128位),所有地址的空间,数目不同

2.地址分配不同(IPV4资源不够,分配的话需要竞争,而IPV6可以给每个人都分配很多的地址)

3.寻址的方式不同:IPV4 通过子网掩码计算网络地址,而IPV6有固定的计算方式划分网络

<4>TCP和UDP的区别
1.TCP是有连接的可靠传输协议,而UDP是无连接的
2.UDP传时数据是有大小限制的,而TCP没有
3.UDP是面向数据报的,而TCP是面向数据流的。
4.TCP保证数据正确性,顺序性,而UDP不能保证.

5.UDP的传输速率高于TCP

<5>如何用UDP进行可靠传输
引入序列号, 保证数据顺序;
引入确认应答, 确保对端收到了数据;
引入超时重传, 如果隔一段时间没有应答, 就重发数据;

<6>正向代理和反向代理的区别
正向代理:要访问的服务器只知道代理服务器来访问它,并不知道真实的客户端是谁

反向代理:反向代理正好相反。对于客户端来说,反向代理就好像目标服务器,客户端向反向代理发送请求,接着反向代理判断请求走向何处,隐藏了真实的服务器。

<7>说说HTTP和HTTPS
HTTP是超文本传输协议,是目前应用最广泛的网络通信协议,也是客户端和服务端交互的一系列行为的标准

http header包含三大部分,有General。Response Headers(响应头)。 Request Headers(请求头)。

http是无连接,无状态的(每次连接只处理一个请求,发送完数据后,不会记录)

而https简单讲是HTTP的安全版,即HTTP下加入SSL层,主要是来确认网站的真实性和数据传输的安全。

区别:

1.http的数据是明文传输,而https是加密传输,需要用到ca证书

2.http使用80端口,而https是443端口

3.http的速度比https要快

<8>https中SSL握手的过程
<1>.首先客户端给出协议版本号,一个客户端生成的随机数,以及支持的加密方式

<2>.服务端确认双方使用的加密方式,给出数字证书,以及一个服务器生成的随机数

<3>.客户端确认数字证书有效,然后生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,发个服务端

<4>.服务端使用自己的私钥,获取客户端发来的随机数

<5>.客户端和服务端根据约定的加密方式,使用前面的三个随机数,生成密钥

<9>DNS解析(DNS找IP)
1.当浏览器中输入www.bai.com域名时,操作系统会检查自己本地的hosts文件查看是否有这个网址的映射关系,如果有,直接调用

2.如果没有,则查找本地的DNS解析器缓存,如果有,则直接返回IP

3.如果没有,再找TCP/IP参数中设置的本地的DNS服务器,如果该域名包含再本地配置区域的资源中,则返回解析结果。

4.也可能查找的域名,本地的DNS服务器已经缓存在网址的映射关系,那么直接调用这个IP

5.如果本地DNS服务器也无法解析,会根据本地的DNS服务器是否设置转发器进行查询

如果是未转发模式,本地DNS会把请求发给13台根DNS,由对应的根服务器(例如.com)向下找,最后完成解析

如果是转发模式,那么DNS服务器会把请求一级一级向上传,往上找,直到传到根DNS。

<10>GET和POST的区别
1.get的请求数据只能放在url中,post的数据,可以放在url和请求体

2.url长度有限制,所有get方法请求数据不能太多,并且url只能传输ascli字符

3.安全性将,post可以存放请求数据在请求体,相对更加安全

4.GET主要是从服务端获取数据,而POST请求主要是将数据发送到服务端

5.POST请求刷新会被重新提交,但Get请求不会

<11>常见的状态码
400:客户端请求语法错误,服务端无法理解

405:映射找到了,但是客户端请求方法和服务端提供的请求方法不匹配

500:服务端内部报错

403:无权限

<12>输入一个URL到浏览器中,会发生什么
1.域名解析(DNS解析)

2.发起TCP的三次握手

3.建立TCP连接后发起HTTP请求(如果浏览器存储了该域名下的Cookies,那么会把Cookies放入HTTP请求头里发给服务器。)

4.服务器端响应http请求,浏览器得到html代码

5.浏览器解析html代码,并请求html代码中的资源

6.浏览器对页面进行渲染呈现给用户
———————————————
原文链接:https://blog.csdn.net/qq_45704528/article/details/118635841

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值