网络

1. OSI 七层模型

  1. 物理层:光电信号的传递
  2. 数据链路层:数据帧的传送和识别
  3. 网络层:路由管理和地址管理
  4. 传输层:数据传输
  5. 会话层:通信管理
  6. 表示层:固有数据格式和标准数据格式的转换
  7. 应用层:与应用程序的沟通

2. TCP/IP 四/五层模型

  1. 物理层:集线器
  2. 数据链路层:交换机、无线LAN
  3. 网络层:IP、ICMP、ARP
  4. 传输层:TCP、UDP、SCTP、DCCP
  5. 应用层:DNS、HTTP、FTP、SMTP

3. 封装和分用
封装类似发送快递包裹,从内到外打包
分用类似拆快递包裹,从外到内拆

  • 应用层:使用FTP包装
  • 传输层:使用TCP包装
  • 网络层:使用IP包装
  • 数据链路层:使用数据帧包装

4. 三次握手、四次挥手

  • 三次握手示意图
    在这里插入图片描述
    三次握手的目地是建立可靠的通信信道,让双方确认自己与对方的发送和接受是正常的

第二次握手传回了ACK,为什么还要传回SYN?
接收端发送ACK ,是为了告诉发送端,我接收到的消息确实就是你所发送的信号了,表明了发送端- > 接收端的通信是正常的,而回传SYN是为了建立并确认 接收端- >发送端的通信

  • 四次挥手示意图
    在这里插入图片描述
  • 客户端发送FIN,用来关闭客户端到服务端的数据传送
  • 服务端发回一个ACK,确认序列号为收到的序号+1
  • 服务器发送FIN,用来关闭服务端到客户端的连接
  • 客户端发回一个ACK,确认序列号为收到的序号+1

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后,进入半关闭状态,当另一方发出连接释放的通知,对方确认后就可以完全的关闭TCP连接

举个栗子:
A和B打电话,A说“我没啥要说的了”,B说“好的,我知道了”,但是B可能还有要说的话,A不能要求B跟着自己的节奏挂电话,于是B又说了一通,最后B说“我说完了”,A说“我知道了”,这样通话才算结束

5. TCP和UDP的区别

  • TCP是面向连接,可靠性的传输,UDP是无连接,不可靠传输
  • TCP用字节流传输,UDP使用数据报文传输
  • TCP传输慢,UDP传输快
  • TCP应用于需要通信数据可靠,比如文件传输,邮件传输
  • UDP应用于需要通信速度高,比如视频,语音,广播,直播

6. TCP 协议如何保证可靠传输

  1. 应用数据被分割成TCP认为最适合发送的数据块
  2. TCP给每一个数据包都进行编号,接收方将数据包排序,把有序数据传给应用层
  3. 校验和:TCP将保持它首部和数据的校验和
  4. TCP的接收端会丢弃重复的数据
  5. 流量控制:TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端的缓冲区能接纳的数据,当接收方来不及处理时,就提示发送方减缓发送的速率,防止包丢失。TCP使用的流量控制的协议是可变大小的滑动窗口协议
  6. 拥塞控制:当网络拥塞时,减少数据的发送
  7. 超时重传:当TCP发送一个段后,它启动一个定时器,等待目地端确认收到这个报文段,如果不能及时收到一个确认,将重新发送
  8. ARQ协议:原理是 每发完一个分组就停止发送,等待对方确认,在收到确认后再发下一组

7. 拥塞控制
因为网络上有很多计算机,可能当前的网络状态就比较拥堵,在不清楚网络状态下,贸然发送大量的数据,是有可能引起雪上加霜的 。所以为了进行拥塞控制,TCP发送端要维持一个拥塞窗口的变量

  • TCP的拥塞控制采用了慢启动机制,先发少量的数据探探路,摸清网络的状态,然后再决定按照多大的传输数据
  • 发送开始的时候,窗口大小设置为0,
  • 拥塞窗口大小呈指数级别增长
  • 引入一个叫做慢启动的阈值
  • 当窗口大小呈指数增长到阈值时,按照线性增长的方式增长
  • 在每次超时重传的时候,慢启动阈值会变为原来的一半,窗口大小也变为1
    少量的丢包,仅仅是触发了超时重传,大量的丢包,就认为是网络拥塞

8. 在浏览器中输入 url 地址,到显示主页的过程

  1. 浏览器通过DNS协议查找域名对应的IP地址
  2. 浏览器会向web服务器发送HTTP请求
  3. 服务器处理请求
  4. 服务器发回一个HTML响应

请求发起后,浏览器首先要解析这个域名,他先会查看本地文件,如果本地文件中有的话,就直接使用本地文件中对应的ip地址

如果本地文件没有这个对应的ip,浏览器就会发送一个DNS请求到本地DNS服务器,请求到达本地DNS服务器后,本地DNS服务器首先会查询它的缓存记录,如果缓存中有这个记录,就可以直接返回结果,这个过程是按照递归的方式进行查询,如果没有,本地DNS服务器会向DNS根服务器进行查询

DNS根服务器没有记录具体的域名和ip的对应关系,而是告诉DNS本地服务器,你可以到域服务器上去继续查询,并给出域服务器的地址

本地DNS服务器继续向域服务器发出请求,域服务器收到请求后,也不会直接返回域名与ip的对应关系,而是告诉本地DNS服务器,域名解析服务器地址

最后,本地DNS服务器向域名的解析服务器发出请求,这时就收到了域名对应的ip地址,本地DNS服务器不仅要把域名与ip的对应关系返回给用户电脑,还要把这个对应关系保存在缓存中,以便下一次查询时,可以直接返回结果,加快访问

在拿到域名对应的ip地址后,会以随机端口向WEB服务器程序80端口发起TCP连接请求,经过三次握手,最终建立了TCP/IP连接

建立连接之后,发起HTTP请求,请求一般分为3部分,请求方法、请求头、请求正文

服务器收到请求后,http服务器处理请求,最终将HTTP响应报文返回给浏览器客户端

为了避免资源的消耗或者占用,当双方没有请求或响应传递时,任意一方都可以关闭请求,经过四次挥手,关闭连接

然后浏览器解析渲染页面

9. 状态码
200:请求成功,一般用于GET和POST请求
301:永久移动。永久重定向
302:临时移动
307:临时重定向。使用GET请求重定向
304:未修改,不会返回任何资源
400:客户端请求语法错误,服务器无法理解
401:请求需要用户的身份认证
403:服务器理解客户端的请求,但是拒绝执行
404:找不到资源
405:客户端请求的方法被禁止
500:服务器内部错误
502:作为网关或代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503:由于超载或者维护,服务器暂时无法处理请求
504:充当网关或代理的服务器,未及时从远端服务器获取请求

10. 长连接和短连接

  • 短连接:客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接
  • 长连接:当一个网页打开完成后,客户端和服务器 之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这条连接

11. HTTP和HTTPS的区别

  • HTTP的URL由http:// 起始,默认使用端口是80,而https的URL是由https://起始,默认使用端口为443
  • http没有https的安全性高,但是https比http耗资源,因为http协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器都无法验证对方的身份,而https是运行在SSL之上的http协议,SSL运行在TCP之上,所有传输的内容都经过加密,加密采取的是对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密
    对称加密:密钥只有一个,加密解密为同一个密码
    非对称加密 :密钥成对出现

12. Cookie的作用是什么?和Session有什么区别?

  • Cookie和Session都是用来跟踪浏览器用户身份的会话方式,但是两者应用场景不同
  • Cookie一般用来保存用户信息,Session一般用来通过服务器记录用户的状态
  • Cookie数据保存在客户端,浏览器关闭不影响,而Session数据保存在服务器端,服务器重启就消失
  • Session安全性更高

13. 流量控制
接收端处理数据的速度是有限的,如果发送端发的太快,导致接收端的缓冲区被存满,这个时候如果发送端继续发送,就会造成丢包
因此,TCP支持根据接收端的能力,来决定发送端的发送速度,这个机制叫流量控制

  • 接收端把自己可以接受的窗口大小放入TCP首部中的窗口大小字段,通过ACK通知发送端
  • 窗口字段越大,说明网络吞吐量越高
  • 如果接收端的缓冲区满了,就会将窗口设置为0,这时发送方不在发送数据,但是需要定期发送一个窗口探测器段,使接收端把窗口大小告诉发送端

14. 滑动窗口

  • 因为确认应答机制是一发一回,效率差,所以我们引入了滑动窗口,就是一次发送多条数据,可以大大提高性能
  • 窗口的大小就是不用等待确认应答就可以继续发送数据的最大值
  • 当发送端收到第一个ACK时,滑动窗口向后移动,继续发送下一段数据
  • 如果出现了丢包,第一种情况是 数据包已经抵达,ACK 丢失,这样的情况下,部分ACK丢了不要紧,可以通过后续的ACK进行确认
  • 第二种情况是 数据包丢了,当某一段数据包丢了,接收端会一直响应那一段数据包的ACK,发送端如果连续三次收到同样的ACK,那就会重新发送接收端响应的那个数据包

15. 怎样解决粘包问题

粘包出现的原因:

  • 在TCP的协议头中,有一个序号字段
  • 在传输层的角度,TCP是一个一个报文过来的,按照序号排好放在缓冲区
  • 在应用层的角度,看到的是一串连续的字节数据,应用程序看到了这个一串字节数据,不知道从哪里开始从哪里结束,是一个数据包。这样才形成了粘包问题

粘包解决:明确两个包的边界
UDP不存在粘包问题

16. HTTP请求方法 GET 和 POST的区别
GET可以缓存,POST不能缓存
GET对URL有长度限制,最大长度为2048个字符,POST没有限制
GET只允许ASCII码字符,POST不限制,二进制也可以
GET的安全性较差,因为请求数据都在URL中,POST的请求数据可以在URL中,也可以在请求体中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
胶囊网络是一种新型的网络连接方式,它采用与传统网络不同的技术架构和连接方式。传统网络连接方式主要是通过有线连接,而胶囊网络则是通过无线技术实现网络连接。胶囊网络可以在无线网络信号的覆盖范围内实现设备之间的通信和数据传输。 胶囊网络的核心思想是利用胶囊设备的间接传输能力,将网络传输分解为多个胶囊节点之间的协同合作。胶囊设备通过无线连接将信号从一个节点传递到另一个节点,从而实现传输过程中的中继和转发。这种协同传输的方式可以填补传统网络覆盖盲区,提高网络连接的可靠性和稳定性。 与传统的有线网络相比,胶囊网络具有许多优势。首先,由于采用无线连接,胶囊网络可以在不同地点之间建立网络连接,具有更广阔的覆盖范围。其次,胶囊网络可以实现设备之间的直接通信,无需通过中心节点,从而降低了网络延迟和传输成本。此外,胶囊网络还具备自我组织和自我修复的能力,在网络拓扑变化或节点损坏时,可以自动调整路由和传输路径,保证网络连接的稳定性和可靠性。 胶囊网络在许多领域具有广泛的应用前景。例如,它可以用于智能家居、智能城市和物联网等领域,实现设备之间的互联互通。此外,胶囊网络还可以应用于灾难救援和无线通信覆盖不足的地区,实现临时网络连接和紧急通信。 总之,胶囊网络作为一种新型的网络连接方式,具有广阔的应用前景和许多优势。它将改变传统网络连接的方式,为人们的生活和工作带来更加便利和高效的网络体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值