知道这点网络还怕问嘛~怕得很!

Posted 可乐好哇!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知道这点网络还怕问嘛~怕得很!相关的知识,希望对你有一定的参考价值。

传输层

OSI七层模型:

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

协议分层

降低模块之间的耦合,降低人们使用和学习成本,并且可以灵活替换

封装和分用:

  • 封装:将数据打包传给传输层,根据TCP(源端口,目的端口)报头传输给网络层,根据IP(源IP,目的IP)报头传输给数据链路层,根据以太网数据帧头和以太网数据帧尾 把网络层的数据包打包成数据链路层的数据包 交给物理层进行传输
  • 分用: 物理层将光电信号的数据,数据进行分析还原成二进制的bit流,把二进制的数据交给数据链路层,去掉以太网帧头帧尾,把中间交给网络层,再解析IP数据包,把IP头去掉,剩下部分给传输层 ,传输层TCP协议解析数据,取出TCP报头,把剩下的交给应用层 ,应用层对数据进行应用层协议解析,得到最终的数据

TCP/IP五层结构:

  • 应用层:常见Http协议
  • 传输层:(操作内核已经实现好的)端对端 的数据进行传输
    1. TCP
    2. UDP
  • 网络层:(操作内核已经实现好的)
  • 数据链路层:
  • 物理层:

TCP和UDP的区别:

  • UDP协议无连接,TCP协议有连接
  • UDP协议不可靠传输,TCP协议可靠传输
  • UDP协议面向数据报,TCP协议面向字节流

UDP优点:

  • 传输速度快
  • UDP能够支持”广播“
  • 应用场景:对于效率要求高,对于可靠性要求不高的场景 (机房内部主机之间的通信)

TCP:

  • 要对数据的传输进行一个详细的控制

TCP核心机制:

  1. 6位标志位:

    • URG: 紧急指针是否有效
    • ACK: 确认号是否有效
    • PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
    • RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
    • SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
    • FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段
  2. 确认应答机制:保证TCP可靠性的核心机制

  • 可靠性目的为了防止丢包
  1. 超时重传:

    ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqWyeMHl-1631537322938)(/Users/cola/Library/Application Support/typora-user-images/image-20210913115635648.png)]

    • 主机A发送数据给B之后, 可能因为网络拥堵等原因, 数据无法到达主机B;
    • 如果主机A在一个特定时间间隔内没有收到B发来的确认应答, 就会进行重发;

TCP三次握手和四次挥手

  • 建立连接(三次握手):建立连接过程互相发送SYN(同步报文段)和ACK

  • 断开连接(四次挥手):双方各自向对方发送FIN(结束报文段),并且向对方发送ACK

TCP中核心的状态:

  • ESTSBLISHED:连接成功,可以进行后续通信
  • LISTEN:服务器进入的状态,服务器准备就绪,允许客户端随时建立连接
  • CLOSE_WAIT:断开连接时的中间状态
  • TIME_WAIT(意义:为了防止最后一个ACK丢包而做准备的):断开连接时的状态,谁主动断开连接,谁就进入该状态(建立连接,一定是客户端主动发出连接请求;断开连接,客户端和服务器都可以做)

滑动窗口

  • 既保证了可靠性,有提高了效率

  • 超时重传机制(快速重传)导致接受方难以接受 要想办法进行 流量控制

  • 流量控制:为了让发送方的速率和接收方的速率尽可能一致,才能做到可靠的同时又高效

  • 拥塞控制:滑动窗口的大小由拥塞控制+流量控制一起决定的;先设置小的窗口,发现没有丢包,将窗口扩大,直至发现丢包为止,然后让窗口回到初始大小

  • 延迟应答:提高效率的机制,接受方收到数据不立即返回ACK,等待一定的时间再发送,这时ACK携带更大的窗口返回给发送方

捎带应答

  • 最常见的服务器通信方式“一问一答”
  • 多问一答
  • 一问多答
  • 多问多答

面向字节流:

只要是面向字节流都会有粘包问题,面向数据报的UDP没有粘包问题

如何解决粘包问题(粘的是应用层的数据包)?

  1. 显示指定包的长度
  2. 显示指定包与包的分割符(结束标记)

TCP对于异常情况的处理:

  1. 进程终止
  2. 机器重启
  3. 机器断点、网线断开

负载均衡机制(处理高并发的问题):

成千上万用户访问服务器,需要通过网关/反向代理平均分配给若干服务器(这些服务器定时向网关发送心跳包防止服务器下线);可以在服务不中断的情况下,对服务器进行重启和升级

如何基于UDP实现可靠性传输?

根据TCP的确认应答和超时重传进行细说

端口号范围划分:

0~65535


网络层

网络层

  • 地址管理
  • 路由选择

IP协议

  • 自己可以分包和组包

IP协议不够用解决方法?

  • 动态分配(治标不治本)
  • NAT通过路由设备,把IP数据报中的源IP进行替换,使用一个公网IP代表一波局域网中的设备

IP协议进行分片,把一个大的IP数据报分成很多小的


数据链路层

数据链路层:

  • 只关注相邻节点之间的传输情况

以太网协议:

  • 插网线的有线网
  • CRC(校验和)为了验证数据是正确的,没有发生改变;
  • 比较简单的校验和方法“循环冗余校验”

Mac地址

  • Mac地址也叫物理地址,是和主机的网卡设备绑定的,只要主机出厂,Mac地址就被写死了
  • 每个Mac地址都是唯一的

ARP协议

  • 建立主机IP地址和Mac地址的映射关系

DNS协议

  • 域名解析系统
  • 访问一个网站先通过DNS解析域名称为IP地址,网络传输是靠IP 地址

浏览器输入URL后,发生的事情?

  1. 根据域名到DNS中找到IP

  2. 根据IP建立TCP连接(三次握手)

  3. 连接建立成功发起http请求

  4. 服务器响应http请求

  5. 浏览器解析html代码并请求html中的静态资源(js,css)

  6. 关闭TCP连接(四次挥手)

  7. 浏览器渲染页面

地址,网络传输是靠IP 地址

浏览器输入URL后,发生的事情?

  1. 根据域名到DNS中找到IP

  2. 根据IP建立TCP连接(三次握手)

  3. 连接建立成功发起http请求

  4. 服务器响应http请求

  5. 浏览器解析HTML代码并请求html中的静态资源(js,css)

  6. 关闭TCP连接(四次挥手)

  7. 浏览器渲染页面

以上是关于知道这点网络还怕问嘛~怕得很!的主要内容,如果未能解决你的问题,请参考以下文章

知道这点网络还怕问嘛~怕得很!

事前做好策略分析,网络运营你还怕做不来?

面试时最怕问到 Java 虚拟机内存模型?这篇文章我发晚了

Git的优点

最怕问初衷,大梦成空

知道这些SpringCloud面试专题及答案后你还怕什么!