计算机网络学习笔记

date: 2019-07-20 20:37:37

TCP/IP协议族

  • 应用层(HTTP/FTP)

  • 传输层(TCP/UDP)

  • 网络层(IP)

  • 网络接口层(把0、1序列划分为数据帧从一个节点传输到临近的另一个节点)

HTTP

无状态、无连接 (自HTTP1.1起,可以keep aliva)

  • 请求格式

    • 请求行:请求方法 URL 协议版本

    • 请求头:多个kv对

    • 请求体:请求数据

  • 响应格式

    • 状态行:协议版本 状态码 状态码描述

    • 响应头:多个kv对

    • 响应体:响应数据

  • 常见通用头

    • Content-Type

    • Accept

    • Content-Length

    • Content-Encoding

    • Accept-Encoding

    • ETag

    • Cache-Control

  • 常见请求头

    • Authorization

    • User-Agent

    • If-Modified-Since

    • If-Node-Match

    • Cookie

    • Referer

    • Host

  • 常见响应头

    • Date

    • Last-Modified

    • Transfer-Encoding

    • Set-Cookie

    • Location

    • Server

HTTPS

  • 对称加密存在被黑客截获消息后伪装的问题

  • 非对称加密存在公钥权威性问题

  • 于是衍生出了CA机构,用于暴保障权威性

TCP

基本性质

  • 面向连接、可靠的字节流服务,使用校验和重传的方式来保证可靠传输

  • 给数据分节进行排序,并使用累计确认来保证数据的顺序不变和非重复

  • 使用滑动窗口机制来实现流量控制

三次握手:建立连接

  • 第一次:客户端说:我要和你(服务端)建立连接

  • 第二次:服务端说:好的,可以,你确认要和我建立连接吗

  • 第三次:客户端说:确认 => 建立连接

三次握手是为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误

如果只需要请求+返回就建立连接,那么在这种情况下如果一个历史的连接建立请求被阻塞在网络中,一段时间后到达服务端的话,服务端会直接返回确认并建立连接,但是客户端已经不需要了,服务端会一直等待这个连接传入数据,造成资源浪费。

四次挥手:断开连接

  • 第一次:主机1:我没什么要对你说的了,我想关闭连接可以吗

  • 第二次:主机2:可以

  • 第三次:主机2:我也没什么要对你说的了,我想关闭连接可以吗

  • 第四次:主机1:可以 => 主机2收到后就关闭连接;主机1发送完成后等待2MSL后关闭连接

TCP是全双工模式,四次挥手是需要双方都确认没有数据要发送后才可以关闭

主机1为啥要等2MSL?

  • 保证TCP协议的全双工连接能够可靠关闭

    如果由于网络延迟等原因,主机2迟迟没有收到主机1的最后确认信息,会一直重复发送FIN信号。

  • 保证这次连接的重复数据段从网络中消失

    一种极端情况,两个端口关闭后马上又在相同的端口建立的新的连接,如果原来的数据传输有延迟,那么会被混淆到新的连接里。

滑动窗口限流

如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。即接收方通知发送方,我目前能接收多少数据

拥塞控制 (逐步试探的过程)

  • 慢开始算法

    • 最开始时发送最小单位,如果网络状况允许,就逐渐翻倍扩大每次发送的数据量。
  • 拥塞避免

    • 当慢开始算法一直翻倍到某个阈值,接下来就是每次把发送的数据量加一个单位,避免一直翻倍造成网络拥塞。

    • 当遇到网络拥塞时,马上把慢开始阈值调成原来的一半,并且把每次发送的数据量降到1,重新开始执行慢开始算法

  • 快重传

    • 当接收方还没收到3就已经收到456时,对于456的响应都是2,这样发送方就知道缺失了3,马上发送缺失的3
  • 快恢复

    • 当有数据丢失发送后,就想应对网络拥塞一样把慢开始阈值调低一半,但是并不把每次发送的数据量降到1后逐步翻倍,而是降到新阈值的一半后重新开始逐步加1。

UDP

不可靠,数据报有长度,无连接,支持多播和广播

IP

不可靠

参考资料

  • TCP/IP

    • https://hit-alibaba.github.io/interview/basic/network/

    • https://zhuanlan.zhihu.com/p/70949908

    • https://zhuanlan.zhihu.com/p/72587882

    • https://blog.csdn.net/qzcsu/article/details/72861891

  • CDN

    • https://zhuanlan.zhihu.com/p/28940451

    • https://www.jianshu.com/p/1dae6e1680ff

你可能感兴趣的:(计算机网络学习笔记)