当前位置:网站首页>计算机网络知识总结(面试)
计算机网络知识总结(面试)
2022-06-25 22:57:00 【车厘子子】
网络分层模型

OSI七层模型:国际标准化组织(ISO)制定的理论模型。
应用层:为用户的应用进程提供网络通信服务,完成和实现用户请求的各种服务。
表示层:处理用户数据的表示问题,如数据的编码、格式转换等。
会话层:是用户应用进程提供网络通信服务,完成和实现用户请求的各种服务。
传输层:提供源端与目的端之间可靠的透明数据传输,传输层协议为不同主机上运行的进程提供逻辑通信。
网络层:实现网络地址与物理地址的转换。
数据链路层:通过差错控制、流量控制等方法,使有差错的物理线路变为无差错的数据链路。
物理层:实现计算机节点之间比特流的透明传输。
TCP/IP四层模型:基于OSI建立的实际实现的模型。
应用层(FTP、HTTP)、传输层(TCP、UDP)、网际层(IP)、网络接口层。
应用层:
通过应用进程间的交互来完成特定网络应用,对于不同的网络应用需要不同的应用层协议。如域名系统DNS、支持万维网应用的HTTP协议、支持电子邮件的SMTP协议、FTP文件传输协议等。
(1)DNS域名系统:用于域名解析服务,将域名地址转换为IP地址,基于UDP服务,比如百度公司的域名为www.baidu.com,域名系统作为可以将域名和IP地址相互映射的一个分布式数据库,能够使用户更方面的访问数据库。
(2)FTP:定义了文件传输协议。上传下载文件,都要用到FTP服务。
(3)Telnet:远程终端协议,它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,提供一种基于DOS模式下的通信服务。
(4)SMTP:定义了简单邮件传送协议,用于发送邮件。
(5)POP3:与SMTP对应,POP3用于接收邮件。
(6)SNMP:简单网络管理协议,是用来管理网络设备的。
(7)TFTP(Trival File Transfer Protocal):简单文件传输协议,使用UDP服务。
一、HTTP协议
基于TCP协议,用于从Web服务器传输超文本到本地浏览器的传送协议。http协议是无状态协议,自身不对请求和响应直接的通信状态进行保存,但有些场景下我们需要保存用户的登陆信息,所以引入了cookie 和 session 来管理状态。
1、cookie 和 session 的区别:
(1)保存位置与安全性:cookie保存在客户端,session保存在服务端,所以在安全性上面,cookie存在安全隐患,可以通过拦截或本地文件找到cookie后进行攻击,而session相对更加安全。因此,可以将登陆信息等重要信息存放为session中;其他信息如果需要保留,可以放在cookie中。
(2)存储容量:单个cookie最大只允许4KB,一个站点最多保存20个Cookie;session没有大小限制,个数只跟服务器的内存大小有关。
(3)有效期与实现机制:cookie可长期有效存在;session依赖于cookie,过期时间默认为-1,只需关闭窗口该 session 就会失效。每个客户端对应一个session ,客户端之间的 session 相互独立。
2、一个完整的Http请求是怎么样?
(1)解析url,获取 url 中包含的域名;
(2)通过DNS系统查询域名对应的IP;
(3)浏览器得到域名对应的IP地址之后,向服务器发起三次握手请求建立TCP链接;
(4)TCP链接链接建立起来后,浏览器向服务器发送http请求,如果 html文件在缓存里,浏览器则直接返回, 如果没有,则去后台拿;
(5)服务器接收到请求后,根据路径参数映射到特定的处理器进行处理,并将处理结果以及相应的视图返回给浏览器。
(6)浏览器解析视图,并根据请求到的资源、数据进行渲染页面,最终向用户呈现一个完整的页面。

3、HTTP的长连接和短连接
短连接是指客户端与服务端每进行一次请求操作,就建立一次TCP连接,收到服务器响应后,就断开连接。
长连接是指客户端和服务建立TCP连接后,它们之间的连接会持续存在,不会因为一次HTTP请求后关闭,后续的请求也是用这个连接进行通信,使用长连接的HTTP协议,会在响应头有加入:Connection:keep-alive。长连接可以省去每次TCP建立和关闭的握手和挥手操作,节约时间提高效率。但在长连接下,客户端一般不会主动关闭连接,如果客户端和服务端之间的连接一直不关闭的话,随着连接数越来越多,会对服务端造成压力。
所以长连接多用于频繁请求资源,而且连接数不能太多的情况,例如数据库的连接用长连接。而像Web网站这种并发量大,但是每个用户无需频繁操作的场景,一般都使用短连接,因为长连接对服务端来说会耗费一定的资源。
4、HTTP报文格式

5、HTTP的常见请求方式get和post请求的区别:

二、HTTPS协议
https 是基于tcp协议,在http的基础上加入了SSL/TLS,可看成是添加了加密和认证机制的http,使用对称加密、非对称加密、证书等技术进行进行客户端与服务端的数据加密传输,最终达到保证整个通信的安全性。
传输层:

一、传输控制协议TCP和用户数据报协议UDP 的区别:
(1)TCP是面向字节流的,基本传输单位是TCP报文段;UDP是面向报文的,基本传输单位是是用户数据报;
(2)TCP 注重安全可靠性,连接双方在进行通信前,需进行三次握手建立连接。UDP 是无连接的,使用最大努力交付,即不保证可靠交付。
(3)UDP不需要连接等待,所以数据传输快,而 TCP 传输效率相对较低。
(4)TCP首部开销是20个字节;UDP的首部开销是8个字节,这也是减少网络传输开销的一方面。
(5)TCP有拥塞控制和流量控制,而UDP没有拥塞控制和流量控制。
(6)TCP支持点对点通信,提供全双工通信,不提供广播或多播服务;UDP支持一对一、一对多、多对一、多对多的通信模式。
TCP和UDP的适用场景:
(1)当对网络通讯质量要求不高时,并且要求网络通讯速度能尽量的快,这时就可以使用UDP。比如即使通信: 语音、 视频 、直播等。
(2)当对网络通讯质量有要求时,要求整个数据准确无误可靠的传递给对方,这时就适用使用 TCP 协议,一般用于文件传输、发送和接收邮件等场景。比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议都是使用 TCP 协议。
二、TCP三次握手与四次挥手:

客户端和服务器要建立连接需要发送一次数据,这是第一次握手;服务器响应一次数据,这是第二次握手;客户端会确认服务端响应的数据这是第三次握手。
1、为什么TCP建立连接要经过三次握手呢?这三次握手的目的是什么?
是为了保证客户端与服务器之间的数据收发过程没有问题。
(1)C--->S
S:客户端的发送能力没有问题。
(2)S--->C
C:服务端的接受能力没问题以及发送能力没问题。
(3)C--->S
S:客户端的接受能力没有问题。
2、为什么TCP断开连接需要经过四次挥手呢?
客户端在断开连接的时候会主动发送一个finish包,代表客户端不会再给服务器写数据了,服务器接收到客户端的finish包会马上响应客户端已经知道了客户端想要断开连接了,但是服务器可能还会有一些数据需要发送,在发送完数据后,服务器会再给客户端发送一个finish包表示之后终止发数据,最后客户端会确认服务器的响应结果。
3、三次握手过程中是否可以携带数据:
第三次握手时是可以携带数据的,但第一二次握手时不可以携带数据。
(1)假如第一次握手可以携带数据的话,那么会放大 SYN 洪泛。如果有人要恶意攻击服务器,每次都在第一次握手中的 SYN 报文中放入大量的数据,然后疯狂重复发送 SYN 报文的话,就会让服务器开辟大量的缓存来接收这些报文,内存会很容易耗尽,从而拒绝服务。
(2) 第三次握手时客户端已经处于 ESTABLISHED 状态,对于客户端来说,他已经建立起连接了,并且已经知道服务器的接收和发送能力是正常的,所以也就可以携带数据了。
4、为什么需要TIME_WAIT状态?
(1)重发丢失的ACK报文,保证连接可靠的关闭:
由于网络等原因,无法保证最后一次挥手的 ACK 报文一定能传送给对方,如果 ACK 丢失,对方会超时重传 FIN,主动关闭端会再次响应ACK过去;如果没有 TIME_WAIT 状态,直接关闭,对方重传的FIN报文则被响应一个RST报文,此RST会被动关闭端被解析成错误。同时,服务器就因为接收不到客户端的信息而无法正常关闭。
(2)保证本次连接的重复数据段从网络中消失:
如果存在两个连接,第一个连接正常关闭,第二个相同的连接紧接着建立;如果第一个连接的某些数据仍然滞留在网络中,这些延迟数据在建立新连接之后才到达,则会干扰第二连接,等待 2MSL 可以让上次连接的报文数据消逝在网络中。
5、TCP的粘包和拆包:
拆包粘包在数据链路层、网络层以及传输层都可能存在。而在传输层中,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP协议中。TCP是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。
什么情况下会发生粘包拆包?

拆包粘包的解决策略:

三、TCP可靠性传输:
(1)三次握手
(2)应答机制与超时重传:TCP接收端收到发送端的数据时,它将发送一个确认。当TCP发送端发出一个报文段后,它会启动一个定时器,等待接收端的确认报文段,如果不能及时收到一个确认,将重发这个报文段。
(3)数据包校验与丢弃重复数据:TCP会检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP会超时重发数据;对于重复数据,则进行丢弃;
(4)对失序数据包进行重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;
(5)流量控制:TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,防止较快主机致使较慢主机的缓冲区溢出。TCP使用的流量控制协议是可变大小的滑动窗口协议。
(6)拥塞控制:网络拥塞时,减少数据的发送。
1、TCP流量控制:
所谓流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。因为如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。TCP的流量控制是通过大小可变的滑动窗口来实现的。接收端将自己可以接收的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK报文来通知发送端,滑动窗口是接收端用来控制发送端发送数据的大小,从而达到流量控制
2、TCP拥塞控制:
拥塞控制就是防止过多的数据注入网络中,使网络中的路由器或链路不致过载。发送方维持一个拥塞窗口cwnd 的状态变量。拥塞窗口的大小动态变化,取决于网络的拥塞程度,发送方让自己的发送窗口等于拥塞窗口。只要网络没有出现拥塞,拥塞窗口就再增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入到网络中的分组数。 拥塞控制的方法主要有以下几种:慢启动、拥塞避免、快重传和快恢复。
网络层:
一、IP地址与物理地址:
物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址,其中ARP协议将IP地址转换成物理地址。
二、ARP地址解析协议的工作原理:
ARP 是根据 IP 地址获取 MAC 地址的一种协议,核心原理就是广播发送ARP请求,单播发送ARP响应。
(1)每个主机都在自己的ARP缓冲区中建立一个ARP列表,以表示 IP 地址和 MAC 地址之间的对应关系。
(2)当源主机要发送数据时,先检查ARP列表中是否有该 IP 地址对应的 MAC 地址,如果有,则直接发送数据;如果没有,就向本网段的所有主机发送ARP数据包,用于查询目的主机的MAC地址,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP。
(3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
(4)源主机收到 ARP 响应包后,将目的主机的 IP 和 MAC 地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
三、RARP逆地址解析协议:
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着 MAC 地址和 IP 地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
四、DHCP协议:
动态主机配置协议,对 IP地址进行集中管理和分配,提升地址的使用率,通过DHCP协议,可以使客户机自动获得服务器分配的lP地址和子网掩码
五、ICMP协议:
因特网控制报文协议,用于在IP主机、路由器之间传递控制消息(控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息),确认 IP 包是否成功到达目标地址。因为 IP 协议并不是一个可靠的协议,它不保证数据被送达,当传送IP数据包发生错误,比如主机不可达、路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机,给主机一个处理错误的机会。
ICMP报文有两种:差错报告报文和询问报文。以下是4种常见的ICMP差错报告报文
六、交换机与路由器的区别:
(1)工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层网络层;
(2)寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址;
(3)转发速不同:交换机的转发速度快,路由器转发速度相对较慢。
七、路由选择协议:
(1)内部网关协议IGP:
① RIP(Routing Information Protocol):是一种动态路由选择协议,基于距离矢量算法,使用“跳数”来衡量到达目标地址的路由距离,并且只与自己相邻的路由器交换信息,范围限制在15跳之内。
② OSPF:开放最短路径优先协议,使用Dijskra算法计算出到达每一网络的最短路径,并在检测到 链路的情况发生变化时(如链路失效),就执行该算法快速收敛到新的无环路拓扑。
(2)外部网关协议:
BGP:边界网关协议,BGP 是力求寻找一条能够到达目的网络 且 较好的路由,而并非要寻找一条最佳路由。BGP采用路径向量路由选择协议。
边栏推荐
- Error 65:access violation at 0x58024400: no 'read' permission
- 随便画画的
- Post ordered clue binary tree
- Idea kotlin version upgrade
- [机缘参悟-30]:鬼谷子-内揵篇-同理心,站在对方的立场,拉近与对方的心理距离
- C thread pool control semaphore
- Making 3D romantic cool photo album [source code attached]
- Phoenix index
- Music spectrum display toy -- implementation and application of FFT in stm32
- 关于HC-12无线射频模块使用
猜你喜欢

What are the red lines of open source that should not be trodden on?

ciscn_2019_en_2

Installation and configuration of gradle environment

Endnote IEEE TRANSACTIONS ON INDUSTRIAL ELECTRONICS/TIE/TPEL 参考文献格式模板

DPVS fullnat mode management

Web學習之TypeScript

Flink报错:Error: A JNI error has occurred, please check your installation and try again

Mining pit record of modified field information in Dameng database

随便画画的

学习识别对话式问答中的后续问题
随机推荐
关于EF翻页查询数据库
Atlas200dk刷机
ciscn_2019_en_2
Vscode shortcut
About the use of hc-12 radio frequency module
11.1.2 overview of Flink_ Wordcount case
FreeRTOS+STM32L+ESP8266+MQTT协议传输温湿度数据到腾讯云物联网平台
Send mail tool class
Flex & bison start
How product managers control the progress of product development
Installation and configuration of gradle environment
QT custom QSlider with cursor
Solve STM32 operation μ Solution to sudden failure of task scheduling in c/os-ii system
返回值为Object型方法调用equals()
Case: drawing Matplotlib dynamic graph
Preorder and middle order traversal of forest
Endnote IEEE Transactions on industrial electronics/tie/tpel reference format template
1-11Vmware虚拟机常见的问题解决
Login interceptor
About EF page turning query database

