网络八股

110 阅读3分钟

计算机网络

juejin.cn/post/684490…

image.png

网络编程

了解网络编程吗

Http

HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol)HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

http与https

HTTPS 并不是一个新的应用层协议,它其实就是 HTTP + TLS/SSL 协议组合而成,而安全性的保证正是 TLS/SSL 所做的工作。

image.png

SSL协议是为了保证服务器和浏览器之间的通信安全、数据传输安全,首选数据是要加密的(SSL采用的是非对称加密),非对称加密时用到一个第三方认证权威机构签发CA证书作为加密传输的公钥和私钥

郭燕老师我的超人 zhuanlan.zhihu.com/p/50692294

image.png

image.png

image.png

http状态码

image.png

image.png

从输入URL到页面显示的过程

这个写的真好 zhuanlan.zhihu.com/p/133906695

image.png

image.png

TCP和UDP

三次握手和四次挥手

image.png

image.png

image.png

image.png

image.png

TCP如何保证可靠传输

这一篇读熟没有阻碍,就可以了 segmentfault.com/a/119000002…

(1)重传机制

超时重传:RTO略大于RTT,这俩值都是动态的

快速重传:收到三个相同的 ACK 报文时,会在定时器过期之前,重传丢失的报文段。但不知道重传多少!

选择确认重传:不仅告诉发送方你下一个应该发哪些,还告诉他我已经收到哪些,你发丢的包的后面的包也许我已经收到了。

(2)滑动窗口与流量控制

窗口大小就是指无需等待确认应答,而可以继续发送数据的最大值

累计确认:600的确认丢了但700的确认来了,表明600也是收到了的。

(3)拥塞控制

慢启动,到一个门限值,然后拥塞避免线性增长,拥塞发生后快恢复然后又线性增长。

TCP和UDP的区别

1. 连接

  • TCP 是面向连接的传输层协议,传输数据前先要建立连接。
  • UDP 是不需要连接,即刻传输数据。

2. 服务对象

  • TCP 是一对一的两点服务,即一条连接只有两个端点。
  • UDP 支持一对一、一对多、多对多的交互通信

3. 可靠性

  • TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。
  • UDP 是尽最大努力交付,不保证可靠交付数据。

4. 拥塞控制、流量控制

  • TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
  • UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

5. 首部开销

  • TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使用了「选项」字段则会变长的。
  • UDP 首部只有 8 个字节,并且是固定不变的,开销较小。

6. 传输方式

  • TCP 是流式传输,没有边界,但保证顺序和可靠。
  • UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

7. 分片不同

  • TCP 的数据大小如果大于 MSS 大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装 TCP 数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。
  • UDP 的数据大小如果大于 MTU 大小,则会在 IP 层进行分片,目标主机收到后,在 IP 层组装完数据,接着再传给传输层。

TCP 和 UDP 应用场景:

由于 TCP 是面向连接,能保证数据的可靠性交付,因此经常用于:

  • FTP 文件传输;
  • HTTP / HTTPS;

由于 UDP 面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:

  • 包总量较少的通信,如 DNS 、SNMP 等;
  • 视频、音频等多媒体通信;
  • 广播通信;

IP

报文结构

image.png