计算机网络面试基础

HTTP状态码

  • 1开头的说明消息已经接收,待处理。
  • 2开头的:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
  • 3开头的是用户需要重定向,如资源移动到了新的位置(301),需要重新请求另一个地址
  • 4开头是客户端错,如错误请求(400),Forbidden (403) , Not found (404)
  • 5开头的是服务端错误,Service Unvailable(503),服务器维护或过载。Internal Server error(500),通常是服务端代码错误。

Tcp三次握手与四次挥手

先看这篇博文:https://blog.csdn.net/qzcsu/article/details/72861891

SYN:同步序列包

ACK:应答包

FIN:释放连接包

三次握手的过程

 

四次挥手的过程

 

三次握手为什么TCP客户端最后还要发送一次确认呢?

一句话,主要防止已经失效的连接请求报文突然又传送到了服务器,从而产生错误。

如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送了第一个请求连接并且没有丢失,只是因为在网络结点中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时此前滞留的那一次请求连接,网络通畅了到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。

如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。

TCP连接断开为什么要四次挥手?

TCP是全双工通信的,两个方向都有数据传输,所以两个方向上的数据传输都需要见单独的关闭。在一端的发送任务完成的时候,就会发起FIN请求报文,收到FIN报文的一端会通知应用层:另一端不会有数据再发送过来了。四次挥手的目的就是为了保证连接的两端都能完整的发送数据和接受数据。在握手的时候,服务端收到SYN请求包后,可以把SYNACK放在一个报文里面发送给客户端。而在挥手的时候,服务端收到客户端发来的FIN报文后,仅仅表示客户端已经没有数据要发送了,客户端还能够接收数据,并且服务端也还需要发送数据,所以只回了一个带有ACK的报文,待服务端的发送任务完成,再发送FIN请求报文,所以需要四次挥手。

TCP四次挥手后客户端为是什么还要等待2*MSL

MSLMaximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

因为虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SENT状态到ESTABLISH状态那样),但是我们必须假想网络是不可靠的,你无法保证你最后发送的ACK报文一定会被对方收到,就是说对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。

HttpHttps区别

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,HTTP协议不适合传输一些敏感信息。HTTPSHTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

https协议在应用层的http协议和传输层的TCP协议层之间加了一层SSL/TSL层。


https协议的主要作用:

1、一种是建立一个信息安全通道,来保证数据传输的安全。

2、另一种就是确认网站的真实性。

httphttps区别:

1http协议是明文传输的,httpsSSL加密的传输协议,https要安全

2https需要数字证书,一般需要花钱购买。

3http使用80端口、https使用443端口

HTTPS优点:

1、具有身份认证的功能,确保数据发送到正确的客户机和服务器

2、https使用了SSL加密,防止数据在传输过程中被窃取

3、https虽然不是绝对安全,但增加了人身攻击的成本

HTTPS缺点:

1、要钱,好的数字证书费用更高、小网站消费不起。

2、HTTPS握手阶段更加费时间(多次握手),从http变为https方式,多数网站采用302跳转,页面加载时间会变长。

3、https需要用到安全加解密算法,增加了服务器CPU的压力(https慢一点的一个原因)。

OSI参考模型和TCP/IP模型
TCPUDP

TCPTCP主要的优点就是可靠。它在建立连接前需要三次握手,连接建立后进行数据传输时为了实现是靠传输使用了超时重传,丢弃重复数据,检验数据,流量控制,为避免网络拥塞还使用了拥塞控制。这些保证可靠传输的措施会使TCP传输效率降低,服务器和客户端需要为了维护TCP连接需要占用一定的CPU和内存资源。

UDPUDP尽最大努力进行交付的无状态协议。UDP协议不需要保证可靠交付,自然传输的效率就比TCP高。它适用于对实时性要求较高的应用,如视频、音频的传输。

TCP应用的:HTTPHTTPS(浏览器)、SMTP(邮件传输)、FTPputty

UDP应用:RIP(路由选择协议)、DNS(域名解析协议)、SNMP(简单网络管理协议)

TCPUDP区别

1、连接方式TCP面向连接,UDP不是面向连接的,发送数据前不需要事前建立连接。

2、是否可靠TCP提供可靠的服务,通过校验和、序号标识,重传,滑动窗口、确认应答等实现可靠传输、UDP是不可靠的,只保证尽最大努力进行交付。

3、实时性UDP实时性更好,TCP需要事先连接。

4、协议首部开销UDP首部开销小(首部8字节)TCP报文格式复杂些,首部开销大(20字节)

5、报文TCP是面向字节流的,传输的是无结构的字节流,UDP是面向报文的

6、双工性TCP连接时点对点的通信、UDP可以是111对多、多对1、多对多的通信。

7、拥塞控制TCP有拥塞控制、UDP没有。

网络各层的协议

 

浏览器输入URL地址到返回页面的过程

先看博文:

https://blog.csdn.net/yumanman666/article/details/58161540

https://blog.csdn.net/mevicky/article/details/46789381

https://blog.csdn.net/samjustin1/article/details/52650520

https://blog.csdn.net/ty987654/article/details/78007319

1、浏览器缓存查询是否缓存了对应域名的IP地址

2、本地操作系统hosts文件是否有,有就返回

3、向路由器缓存中查询是否有域名的IP地址,有就返回。

4、若没有就向DNS服务器发起查询,这里有递归查询(本地DNS服务器代理查询)和迭代查询(DNS客户机自己去查询)。

5、发起HTTP请求(不是第一次带上cookie,应用层的HTTP协议在传输层被封装成TCP报文。TCP在网络层次又被封装成ip数据包,ARP协议会将IP地址解析为MAC地址,如果在同一网段,ARP广播给同一网段的所有主机,每个主机查询自己的MAC地址,如果不在同一网段,通过ARP协议就会知道下一个路由的MAC地址,把数据包发过去。

6、如果访问不出问题,服务器收到客户端发来的请求,若服务器同意请求,则建立TCP连接,TCP连接会有一个三次握手的过程。

7、握手完成后,服务器向客户端向客户端发送请求的数据。客户端就可以开始解析页面。下载js和请求响应的css,下载页面所需的图片并进行渲染,最终用户就能看到一个页面了。

8、待双方数据传输完成后,就可以进行TCP的连接释放的四次挥手过程。客户端和服务器端也可以释放TCP连接所占用的CPU和内存资源。

http1.0http1.1http2

博文地址

https://blog.csdn.net/m_xiaoer/article/details/72903355

https://www.jianshu.com/p/75563ce21021

http1.1相比与1.0

(1)http1.1默认长连接 , http1.0默认是短连接

(2)http1.1可以节约带宽,支持发送只带header消息,若客户端没权限请求服务器,返回401,若服务器接受请求返回100,然后客户端才开始发送请求的body信息发送到服务器。

(3)HOST域,web server上的多个虚拟站点可以共享同一个ip和端口。HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

http2.0相比与1.1

1、多路复用:http2.0使用了多路复用技术,做到同一个连接并发处理多个请求,并且并发请求的数量也比http1.1高几个数量级。在HTTP/1.1协议中,浏览器客户端在同一时间针对同一域名的请求有一定数据限制,超过限制数目的请求会被阻塞。虽然可以通过多建立几个TCP连接来提高并发性,但是TCP连接是需要开销的,而单连接多资源的方式更节省内存,减少服务器压力,提高吞吐量。TCP连接的减少可以改善网络拥塞情况,慢启动的时间减少了,拥塞和丢包恢复也会更快。HTTP2.0 通过让所有数据流共用同一个连接,可以更有效地使用TCP连接,让高带宽也能真正的服务于 HTTP 的性能提升。


2、二进制分帧: 在 应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。在二进制分帧层中, HTTP/2 会将所有传输的信息分割为更小的消息和帧(frame,并对它们采用二进制格式的编码 ,其中 HTTP1.x 的首部信息会被封装到 HEADER frame,而相应的 Request Body 则封装到 DATA frame 里面。


3、数据压缩:http2.0可以对header数据进行压缩,数据体积小了,在网络上的传输速度也就变快了。

4、服务器推送(Server Push:服务端能够更快的把资源推送给客户端,比如客户端请求了一个页面,服务器可以主动把相应的jscss推送过去,不用客户端再去请求了。

拥塞控制

博文地址:

https://www.cnblogs.com/a294098789/p/5658593.html 

https://blog.csdn.net/u010796790/article/details/52853539

ARP是地址解析协议,简单语言解释一下工作原理。

1首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

3当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IPMAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4源主机收到ARP响应包后。将目的主机的IPMAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应。

ICMP协议与Ping原理

博文地址:https://www.cnblogs.com/a294098789/p/5645055.html

ICMP是网络层协议,ICMP报文分为两类:查询报文、差错报文。它用于在主机、路由器之间传递控制信息,用来探测主机、路由器是否可达。ICMP封装在IP数据包中,用来保证IP数据包的可靠性。当传送IP数据包发生错误时,ICMP协议会把错误信息封装成包回送给目的主机。

ping和icmp

Ping命令就是使用ICMP协议的一个例子:源主机向一个目的主机发送类型为8的回送请求icmp报文给目的主机,若源主机在一定时间内收到类型为0icmp回送应答报文说明目的主机可达,否则不可达。

IP地址及其分类

 

A类地址:0开头的地址,网络地址(1字节)+主机地址(3字节)

B类地址:10开头的地址,网络地址(2字节)+主机地址(2字节)

C类地址:110开头的地址,网络地址(3字节)+主机地址(1字节)

D类地址:1110开头的地址,用于广播。

E类地址:保留未使用。

TTL

TTLTime To Live是指生存时间,简单来说,它表示了数据包在网络中的时间,经过一个路由器后TTL就减一,这样TTL最终会减为0,当TTL0时,则将数据包丢弃,这样也就是因为两个路由器之间可能形成环,如果没有TTL的限制,则数据包将会在这个环上一直死转,由于有了TTL,最终TTL0后,则将数据包丢弃。Ping命令中使用到了TTLtraceroute也使用了TTL

运输层协议与网络层协议的区别?

1网络层协议负责的是提供主机间的逻辑通信

2运输层协议负责的是提供进程间的逻辑通信

IP协议及相关

https://blog.csdn.net/super_yc/article/details/72290931

https://www.cnblogs.com/red-code/p/7132023.html#_label0

IP数据报格式、TCP报文格式、UDP协议格式、MAC帧格式。
IP数据报格式:
TCP报文格式:

UDP格式:

以太网帧格式:


不同报文的字段含义需要去看书,内容太多了就不贴了。

交换机与路由器区别

1、交换机工作在数据链路层,路由器工作在网络层。

2、交换机使用MAC地址转发(简单),路由器使用IP地址进的网络号行转发(复杂)。

3传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

4、路由器提供了防火墙的服务,而交换机则没有。路由器仅仅转发特定地址的数据包,不传送不支持路由协议的数据包传送和未知目标网络数据包的传送,从而可以防止广播风暴。

什么叫冲突域?

以太网中,如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突,那么这个CSMA/CD网络就是一个冲突域(collision domain)

加密算法

1对称加密

有流式、分组两种,加密和解密都是使用的同一个密钥。

例如:DESAES-GCMChaCha20-Poly1305

2、非对称加密

加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。

例如:RSADSAECDSADHECDHE

3、哈希算法

将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。

例如:MD5SHA-1SHA-2SHA-256

数字签名

签名就是在信息的后面再加上一段内容(信息经过hash后的值),可以证明信息没有被修改过。hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

后续收集再补充。。。

参考资料

https://blog.csdn.net/u013408431/article/details/62442670?locationNum=10&fps=1

https://www.nowcoder.com/discuss/1937

《计算机网络》第六版 谢希仁 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络计算机科学中的一个重要领域,面试中常常会涉及到计算机网络基础知识。以下是一些常见的计算机网络面试基础: 1. 什么是计算机网络计算机网络是指将多台计算机通过通信设备连接起来,实现信息交换和资源共享的系统。 2. OSI七层模型是什么? OSI七层模型是一种将计算机网络通信过程划分为七个不同层次的模型,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 3. TCP/IP协议族包括哪些协议? TCP/IP协议族包括IP协议、TCP协议、UDP协议、HTTP协议、FTP协议等。 4. 什么是IP地址和MAC地址? IP地址是用于在网络中唯一标识一个设备的地址,分为IPv4和IPv6两种格式。MAC地址是网卡的物理地址,用于在局域网中唯一标识一个设备。 5. TCP和UDP的区别是什么? TCP是面向连接的可靠传输协议,提供数据传输的可靠性和顺序性;UDP是无连接的不可靠传输协议,提供数据传输的快速性和实时性。 6. 什么是HTTP协议? HTTP协议是一种用于传输超文本的应用层协议,常用于Web浏览器和Web服务器之间的通信。 7. 什么是DNS? DNS(Domain Name System)是用于将域名转换为IP地址的分布式数据库系统,实现域名解析功能。 8. 什么是网络拓扑结构? 网络拓扑结构指的是计算机网络中各个节点之间连接的方式,常见的拓扑结构有总线型、星型、环型、树型等。 9. 什么是路由器和交换机? 路由器是一种网络设备,用于在不同网络之间转发数据包;交换机是一种网络设备,用于在局域网内转发数据包。 10. 什么是网络安全? 网络安全是指保护计算机网络及其资源不受未经授权的访问、使用、披露、破坏、修改或干扰的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值