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

更多

目录

计算机基础知识

传输层协议

面向连接

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

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

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

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

总结

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

Web技术

URL

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值