更多

目录

计算机基础知识

传输层协议

面向连接

3次握手过程

4次挥手过程

可靠传输

拆包和粘包

滑动窗口

并行发送

流速控制

TCP  VS  UDP

总结

Web技术

URL


计算机基础知识

  1. 计算机组成原理:计算机是如何工作。
  2. 操作系统:如何合理地规划应用生命周期和资源使用:如何处理高并发、如何提升系统的稳定性和如何节约硬件成本等。
  3. 计算机网络:如何设计应用之间的通信协议。如何让页面秒开、服务秒回;如何提升吞吐量、减少延迟(IO复用);如何避免DownTime(连接池);应用开发涉及应用层协议;日常开发涉及基本概念DNS、CDN、NAT、IPv4/6等。
  4. 算法和数据结构:算法是一个计算过程,数据结构是数据的组织方式。
  5. 编程技巧:如何让代码表达得更清楚,更简单,更容易维护。
  6. 图形学
  7. 编译原理

传输层协议

协议 特点
TCP 面向连接,提供可靠传输。
UDP 提供发送报文的基础功能。

面向连接

握手可以确定双方已经准备好发送接收数据,而挥手可以确定双方已经完成发送接收数据。这也是保证数据可靠传输中的一个环节。

3次握手过程

  1. 客户端给服务端发送一个SYN同步请求。
  2. 服务端准备好后给客户端发送一个SYN ACK响应。
  3. 客户端最后给服务端发送一个ACK,让服务端知道客户端准备好接收数据了。

4次挥手过程

  1. 客户端给服务端发送一个FIN请求。
  2. 服务端给客户端一个ACK响应。
  3. 服务端确认数据发送完成并且本地资源释放后,给客户端发送一个FIN请求。
  4. 客户端确认数据发送完成并且本地资源释放后,给服务端一个ACK响应。

可靠传输

要素 实现方法
不丢失 通过【请求应答】和【超时重传】保证数据不丢失。也就是说发送方在收到ACK确认之前,会把数据保留在缓冲区,在超时情况下会重发。
不重复 每个TCP段都有一个唯一的Seq,接收方收到TCP段后,会检查是否与【滑动窗口】(接收缓冲区)中的数据重复。
不乱序

原理:假设发送方发送一个连续有序序列,接收方收到后按顺序排列,且接收总数等于发送总数,此时接收序列等于发送序列。

实现:连接双方各自维护一套连续的Seq序号,每个TCP段都有一个唯一的Seq序号。对于发送方来说,发出去的每个请求都应该收到一个ACK确认,且ACK确认号表示这个值之前的所有TCP段已经被接收(注意:不是表示已接收的最大Seq序号)

拆包和粘包

  • 拆包发送,降低整体发送出错的概率;支持并行发送,提高传输效率。
  • 粘包发送,防止数据量过小,报文头占比大,而降低了带宽的有效利用率。

MSS(Max Segment Size)字段:控制TCP段大小,即发送接收缓冲区大小。对于服务端来说,该MSS过大,导致缓存区占用过多内存资源。

滑动窗口

TCP会将数据拆包后放入一个拥有滑动窗口的数组(发送缓冲区)。滑动窗口从数组左边往右滑动,窗口中的TCP段会【并行发送】。如果窗口中最小Seq的TCP段收到ACK响应了,窗口会往右移动;如果窗口中最小Seq的TCP长时间没有收到ACK响应,会触发整个窗口中的TCP段【超时重传】。

并行发送

如果数据是【串行发送】的,即一个请求收到响应后再发送下一个请求,一个RTT的时间内可以发送一个TCP段;采用【并行发送】,一次可以发送多个TCP段,耗时为多次请求RTT的平均值。

流速控制

窗口中的TCP段是【并行发送】的,在多个请求中的RTT平均值是相对固定的,所以窗口越大,固定时间内发送的TCP段越多。因此通过改变滑动窗口的大小可以控制TCP协议流速。

TCP  VS  UDP

区别 TCP UDP
目的 提供一套完整的可靠传输方案。 提供最基础的报文传输解决方案。
可靠性 保证数据传输的可靠性。 只管数据发送,不保证可靠传输。
连接 面向连接 无需建立连接。
流速控制 通过滑动窗口控制流速。 无该功能。
传输速度   无需建立连接,无需保证可靠传输的机制,速度快。
场景差异 保证传输可靠性的场景:远程控制(SSH)、FTP、邮件。

高速数据传输、低延迟场景:音视频传输、网络游戏。

只需要一次性请求/响应的场景:PING和DNS。

总结

TCP提供了一套完整的可靠传输方案,可以满足可靠性要求高的场景。而UDP提供了最基础的报文传输能力,应用层可以在这个基础功能之上,针对特定的场景搭建出合适的解决方案,给了应用层更多的发挥空间。

Web技术

URL

  • Scheme(Protocol):传输协议(https、ftp、ssh、file),不同协议代表不同类型的应用在提供资源。
  • Host:代表提供资源的站点域名或ip地址。
  • Port:代表提供资源的站点端口好。
  • Path:代表资源在服务中的路径。
  • Query:查询条件,代表需要的是资源中的某一部分。
  • Fragment:用于标识二级资源(URL资源中的某个资源)。

Fragment不会被发送到服务端,且改变时不会刷新页面,但会生成浏览记录。常用于前端展示定位内容(例如:SPA前端路由和HTML锚点)。

理论基础篇 -- 【计算机网络通关29讲笔记】相关推荐

  1. 【算法笔记】极客时间 算法面试通关40讲 笔记  覃超

    [算法笔记]极客时间 算法面试通关40讲 覃超 [算法笔记]极客时间 算法面试通关40讲 覃超 相关链接 在leetcode 上的题号 数组.链表: (堆)栈stack.队列queue 优先队列 哈希 ...

  2. 小啊呜产品读书笔记001:《邱岳的产品手记-15》第28讲 产品分析的套路(上):谁是利益相关者? 29讲产品分析的套路(中):解决什么问题?

    小啊呜产品读书笔记001:<邱岳的产品手记-15>第28讲 产品分析的套路(上):谁是利益相关者?& 29讲产品分析的套路(中):解决什么问题? 一.今日阅读计划 二.泛读& ...

  3. 软件测试52讲 - 笔记(二)-GUI自动化测试篇

    软件测试52讲 - 笔记(二)- GUI自动化测试篇 12|从0到1:你的第一个GUI自动化测试 Selenium 的实现原理 总结 Selenium 1.0 的工作原理 Selenium RC 的执 ...

  4. 视觉SLAM十四讲笔记-1

    视觉SLAM十四讲笔记-1 文章目录 视觉SLAM十四讲笔记-1 第一讲:预备知识 1.1 本书讲什么 1.2 如何使用本书 参考链接: link link 高翔,张涛,等. 视觉 SLAM 十四讲: ...

  5. MySQL 实战45讲--笔记

    文章目录 MySQL 实战45讲-->笔记 开篇词 基础篇(8讲) 01 | 基础架构:一条SQL查询语句是如何执行的? 1.1 SQL 语句在 MySQL 的各个功能模块中的执行过程. 依次看 ...

  6. 视觉SLAM总结——视觉SLAM十四讲笔记整理

    视觉SLAM总结--视觉SLAM十四讲笔记整理 说明 基础知识点 1. 特征提取.特征匹配 (1)Harris (2)SIFT (3)SUFT (4)ORB (5)特征匹配 2. 2D-2D:对极约束 ...

  7. hive 两个没有null指定的表左关联的结果有null_《数据仓库篇》——Hive的学习笔记3...

    <数据仓库篇>--Hive的学习笔记1 讲了Hive的原理,<数据仓库篇>--Hive的学习笔记2 讲了Hive的操作,本篇将介绍Hive的优化. 本篇将Hive的优化分成三个 ...

  8. 信安精品课:第2章网络攻击原理与常用方法精讲笔记

    第2章网络攻击原理与常用方法精讲笔记 https://www.moondream.cn/?p=2098 一.本章知识框架 2.1 网络攻击概述 22 2.1.1 网络攻击概念 22 2.1.2 网络攻 ...

  9. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

最新文章

  1. gcc/g++ 以及makefile
  2. innerhtml js执行_JS 中 DOM 操作
  3. PHP如何批量更新MYSQL中的数据
  4. jPlayer插件的使用
  5. java游戏开发基础Swing之JRadioButton
  6. xshell 6 连接debian系统拒绝了密码_Xshell中操作Linux的常用命令,你知道几个?
  7. 【BZOJ1015】【tyvj3487】星球大战starwar,特别的并查集技巧
  8. 「 软件安装 」倍福“TwinCAT 与 WHD 软件安装”教程
  9. Java后端根据身份证号计算年龄
  10. 温习古文之生于忧患,死于安乐
  11. Java基础--继承
  12. Matlab save colormap
  13. html如何把素材做成按钮,html botton html submit按钮表单控件与CSS美化
  14. vue + Element UI 动态Breadcrumb 面包屑的制作
  15. 编译原理:语法树,短语,直接短语,句柄
  16. oppo Reno 5 pro​​手机打开USB调试步骤(oppo手机大同小异,其他品牌也适用)
  17. Windows Server 2008 R2下安装卸载Oracle 11g
  18. 在TeXstuidio中如何设置XeLaTeX编译
  19. 用python浪漫告白_Python实现浪漫表白
  20. mysql最高安全级别双一_MySQL调优参数

热门文章

  1. 智能化改造推动企业生产过程更为精准与高效
  2. Mac的MSFCould not find rake-xxx in any of the sources报错和重新安装
  3. 图像处理 - GLCM灰度共生矩阵如何计算
  4. 【漏洞发现-1】操作系统之漏洞探针类型及利用
  5. 青少年python编程比赛试题答案_Python编程及应用-中国大学mooc-试题题目及答案
  6. 如何通过手机话费余额充值Q币?
  7. 为什么快捷指令无法将媒体转换为文本_全知乎最全!iOS“捷径(快捷指令)”应用进阶教程 (附入门教程链接)...
  8. 飞猪如何靠着一群猪队友,实现单日21亿交易额?
  9. 家庭成员介绍html模板,幼儿园介绍家庭成员教案
  10. 物流基础知识(十六)