前端备战21秋招之计算机网络,我觉得这一篇应该就够了(一)

简介: 前端备战21秋招之计算机网络,我觉得这一篇应该就够了(一)

计算机网络相关知识回顾


一不留神,各种秋招提前批都开始了,被迫开始复习了,哎,一言难尽。。。白菜都快gong不到了


本文篇幅较长,感兴趣的同学可以细品一下,如内容有不妥之处还请斧正,如觉得有漏掉的重要内容还请评论指出,让我不断完善一下此文

希望各位路过的大佬能再指点一二


常见协议的端口



OSI体系结构


自低向上(7层结构)


  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 传输层
  5. 会话层
  6. 表现层
  7. 应用层


TODO:贴生动形象图


TCP/IP


自底向上(4层)

  1. 网络接口层
  2. 网络IP层
  3. 运输层
  4. 应用层

TODO:贴生动形象图


五层体协结构


自底向上

  1. 物理层
  2. 数据链路层
  3. 网络层
  4. 运输层
  5. 应用层

TODO:贴生动形象图


网际层IP协议



  • ARP:地址解析协议--从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址
  • ICMP:网际控制报文协议--用于在IP主机、路由器之间传递控制消息
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
  • ICMP 属于IP 层的协议
  • PING 使用了 ICMP 回送请求与回送回答报文
  • IGMP:网际组管理协议--


IP地址分类


类别 构成(x+网络号+主机号) 范围 用途
A 0+7+24 1.0.0.1---126.255.255.254
B 10+14+16 128.0.0.0---191.255.0.0
C 110+21+8 192.0.0.0--- 223.255.255.0
D 1110+ 28(多播) 多播地址
E 11110+留用 保留今后使用


通信类型


  • 单播:从一台主机向另一台主机发送数据包的过程
  • 组播:从一台主机向选定的一组主机发送数据包的过程
  • 广播:从一台主机向该网络中的所有主机发送数据包的过程
  • A类、B类与C类IP地址中主机号全1的地址为直接广播地址


IP数据报

构成

  • 首部
  • 前:固定长度20
  • 后:有可选字段,长度可变
  • 数据


图解构成



TODO:想办法巧妙记住


  • 版本:4位--IP协议版本,等于4代表IPV4
  • 首部长度:4位--可表示的最大数值15*4=60字节,因此 IP 的首部长度的最大值是 60 字节
  • 区分服务:8位--用来获得更好的服务,在一般的情况下都不使用这个字段
  • 总长度:16位--首部和数据之和长度,单位字节,于是数据报的最大长度为65535字节 2^16-1
  • 总长度必须不超过最大传送单元 MTU
  • 标识:16位--计数器,用来产生IP数据报的标识
  • 标志:3位--目前只有前两位有意义
  • 最低位MF(More Fragment):1--后面还有分片,0--为最后一个分片
  • 中间位DF(Don't Fragment):0--才允许分片
  • 片偏移:13位--指出:较长的分组在分片后,某片在原分组中的相对位置
  • 片偏移以 8 个字节为偏移单位
  • 生存时间:8位--记为TTL(Time To Live),数据报在网络中可通过的路由器数的最大值
  • 协议:8位--指出此数据报携带的数据使用何种协议
  • 以便目的主机的 IP 层将数据部分上交给那个处理过程
  • 首部检验和:16位--只检验数据报的首部,不检验数据部分
  • 这里不采用 CRC 检验码而采用简单的计算方法
  • IP 数据报首部检验和的计算采用 16 位二进制反码求和算法
  • 源地址:32位--4字节
  • 目的地之:32位--4字节



PING


  • PING 用来测试两个主机之间的连通性
  • PING 使用了 ICMP 回送请求与回送回答报文
  • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP


运输层


UDP


用户数据报协议(User Datagram Protocol)

  • 数据单位协议:TCP报文段


特点


  • 无连接服务协议
  • 传送数据之前不需要建立连接
  • 尽最大努力交付,不提供可靠交付
  • 数据报文的搬运工,不保证有序且不丢失的传递到对端
  • 面向报文的
  • 没有拥塞控制,没有流量控制算法
  • 支持一对一、一对多、多对一和多对多的交互通信
  • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短


面向无连接


  • UDP 是不需要和 TCP 一样在发送数据前进行三次握手建立连接,想发数据就可以开始发送了
  • 只是数据报文的搬运工,不会对数据报文进行任何拆分和拼接操作
  • 发送端:应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头,表示用的是 UDP 协议,然后就传递给网络层了
  • 接收端:网络层将数据传递给传输层,UDP 只去除 IP 报文头就传递给应用层,不会任何拼接操作


不可靠性


  • 不可靠性体现在无连接上
  • 通信不需要建立连接,想发就发
  • 收到什么数据就发生什么数据,不对数据进行校验与备份
  • 不关心发送端是否收到了数据
  • 没有拥堵控制会以恒定的速度发送数据
  • 在网络条件不好的情况下会导致丢包


高效


  • UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要少得多


传输方式


  • 一对多:单播
  • 多对多:多播
  • 多对一:广播


适合场景


对当前网络通讯质量要求不高的时候,实时性要求高的地方都可以看到 UDP 的身影,要求网络通讯速度尽量的快,这时就使用UDP

  • 网游
  • 直播
  • 语音
  • 视屏等等


数据报格式



  • 源端口--16位
  • 目的端口--16位
  • 整个数据报文的长度--16位
  • 检验和--16位该字段用于发现头部信息和数据中的错误


总结


  • UDP 相比 TCP 简单的多,不需要建立连接,不需要验证数据报文,不需要流量控制,只会把想发的数据报文直接发送给对端
  • 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为
相关文章
|
1月前
|
缓存 网络协议 前端开发
2023高频前端面试题合集之网络篇
2023高频前端面试题合集之网络篇
132 0
|
1月前
|
XML 存储 前端开发
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容(三)
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容
|
1月前
|
XML JSON 前端开发
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容(二)
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容
|
27天前
|
存储 缓存 监控
深入理解前端性能优化:从网络到渲染
网络优化包括减少HTTP请求、使用HTTP/2、开启GZIP压缩和缓存策略。资源加载优化涉及懒加载、预加载和预读取。渲染优化建议使用Critical CSS、减少CSS和JavaScript阻塞以及避免强制同步布局。Service Worker实现离线存储,性能监控使用Lighthouse等工具。动态导入和代码拆分减少初始加载时间,响应式图片适应不同设备。Web Workers处理耗时任务,避免内存泄漏。
46 3
|
29天前
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
|
1月前
|
存储 XML 前端开发
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理
【4月更文挑战第30天】本文介绍了Flutter开发中的网络请求和数据处理。 Flutter开发者可选择http(官方库)或dio(功能更强大)进行网络请求。http库简单易用,dio支持更多功能如拦截器。数据处理涉及JSON和XML解析,数据存储可选SharedPreferences或Hive,数据传递推荐使用InheritedWidget或Provider状态管理库。了解这些知识点能提升Flutter开发效率。
【Flutter前端技术开发专栏】Flutter中的网络请求与数据处理
|
1月前
|
XML JSON 前端开发
【Flutter前端技术开发专栏】Flutter中的图片、视频与网络资源加载
【4月更文挑战第30天】Flutter是谷歌的开源前端框架,因其高性能、流畅UI和多端运行能力受开发者喜爱。本文聚焦于Flutter中的资源加载:使用`Image`组件加载静态、网络和本地图片;通过`video_player`库加载和播放视频;利用`http`包进行网络资源请求。掌握这些技巧将有助于提升Flutter应用的开发效率和质量。
【Flutter前端技术开发专栏】Flutter中的图片、视频与网络资源加载
|
1月前
|
存储 监控 前端开发
局域网管理软件的前端设计与实现:HTML/CSS在网络拓扑展示中的应用
本文探讨了局域网管理软件的前端设计,强调了HTML/CSS在网络拓扑展示中的作用。通过HTML/CSS创建设备节点和绘制连线,实现清晰的网络设备连接展示。此外,利用JavaScript定时收集监控数据,并通过HTTP请求自动提交到网站,便于管理员进行数据分析,提升了局域网管理效率。
113 3
|
1月前
|
前端开发
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成
100 0
|
1月前
|
XML 前端开发 JavaScript
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容(一)
前端网络请求真的搞懂了吗?解密前端参数传递方式,让开发更从容