1. 1.1 TCP三次握手historical

    1. 什么是三次握手 所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包 三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息 2. 三次握手过程 最开始客户端服务端都处

  2. 1.2 TCP四次挥手historical

    1. 什么是四次挥手 所谓四次挥手,是指TCP断开连接时需要发送四个包 2. 四次挥手过程 最开始客户端服务端都处于ESTABLISHED的状态,假设由客户端开始关闭连接 记忆思路:置FIN/ACK为1,FIN伴随着SEQ Number,ACK伴随着ACK Number。发送完会进入什么状态 1.

  3. 1.3 TCP流量控制historical

    1. 什么是TCP流量控制 控制发送方发送速率,避免接收方来不及接收 2. TCP流量控制原理 2.1. 滑动窗口 流量控制通过TCP滑动窗口来实现流量控制。 由接收方告诉发送方我的缓存有多大,你不能超过这个数据,否则我来不及接受 3. 参考 - TCP流量控制中的滑动窗口大小、TCP字段中16位窗

  4. 1.4 TCPhistorical

    1. TCP是什么 传输层协议 2. 为什么需要TCP 为网络上的计算机进程间提供可靠的通信服务 3. TCP特点 面向连接的、可靠的、面向字节流的传输层通信协议 3.1. 面向连接 传输数据之前需要三次握手建立连接和四次握手断开连接 TCP三次握手.md TCP四次挥手.md 3.2. 可靠 保证

  5. 1.5 TCP KeepAlivehistorical

    1. 为什么需要TCP KeepAlive TCP建立连接后,双方会进行数据交互。交互过程中如果任一方出现掉电、死机、异常重启等各种意外,另一方会一直保持这个连接,造成资源浪费 这就可以使用TCP的保活机制:TCP KeepAlive来解决这个问题 2. 什么是TCP KeepAlive 隔一段时间

  6. 1.6 TCP close waithistorical

    1. 什么是close wait TCP被动关闭连接的一方会进入close wait状态。 2. 为什么需要close wait 客户端关闭了从客户端- 服务器的连接后,我服务器可能还有数据没有传输完毕,于是处于这个状态继续传输数据,传输完了进行最后一次关闭 3. close wait的问题 - 场

  7. 1.7 TCP拥塞控制historical

    1. 什么是TCP拥塞控制 TCP避免网络拥塞的算法 2. 为什么需要TCP拥塞控制 拥塞控制是为了防止过多的数据注入到网络中,使网络过载进而瘫痪。 3. TCP拥塞控制原理 拥塞控制通过发送窗口 min(发送方的拥塞窗口,接收方的滑动窗口) 进行拥塞控制 发送方的拥塞窗口大小由 慢开始+拥塞避免

  8. 2.1 HTTP版本historical

    1. HTTP1.0 1.1. 客户端/服务器 1.2. 短链接 - 每次HTTP请求时建立TCP连接、请求完释放TCP连接,以尽快将资源释放出来服务其他客户端 - 问题:对于图片这种静态资源每张都需要请求服务器,重新建立连接的时间很浪费 - 解决: Connection:Keep-Alive 。即

  9. 2.2 WebSockethistorical

    1. WebSocket是什么 WebSocket与Http一样,也是一种协议 2. 为什么需要WebSocket 为了解决Http的一个缺点:服务器有数据要通知给用户的时候无法主动推送/通信仅能由客户端发起 3. WebSocket作用 - 实时获取服务器数据 websocket之前只能使用aja

  10. 2.3 HTTP状态码historical

    1. 1xx 表示临时响应并需要请求者继续执行操作的状态代码 2. 2xx 表示成功处理了请求的状态代码 - 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 - 201 (已创建) 请求成功并且服务器创建了新的资源。 - 202 (已接受) 服务器已接受请求,但尚未

  11. 3.1 CDNhistorical

    1. 什么是 CDN - 内容分发网络 - 由全球范围内的代理服务器组成,给用户就近提供 静态内容 ,说白了就是缓存 2. 为什么需要 CDN - 缓存提高访问速度 3. CDN 缺点 - 时效性 4. CDN 工作原理 - 开发人员 1. 开发人员架设好 www.a.com <- 3.3.3.3

  12. 3.2 DNShistorical

    1. DNS是什么 - 域名- IP地址 - IP地址有以下几种:A记录(IPv4)、AAAA记录(IPv6)、CNAME(主机别名) 2. 为什么需要DNS - 域名只是助记符,根据IP才能找到网络上的机器, 3. DNS解析过程 1. 计算机查询 www.baidu.com 对应的IP,还原成

  13. 1.8 TCP time waithistorical

    1. 什么是time wait TCP主动关闭连接的一方,最后一个ACK后会进入time wait状态 2. 为什么需要time wait - 应对最后一个ack丢失,需要重传的情况。 - 防止在网络上闲逛的旧连接的数据包被新连接接收 一个连接是由(客户端IP、客户端Port、服务器IP、服务器Port)4元组唯一标识的

  14. 1.9 UDPhistorical

    1. 什么是UDP 传输层协议 2. UDP特点 - 无连接:减少了连接开销 - 不可靠:最大努力交付 - 面向报文:应用层给UDP多长的报文,UDP照样发送,即一次性发送一个完整报文

  15. 1.10 传输层historical

    1. 传输层协议 1.1. TCP TCP.md 1.2. UDP UDP.md

  16. 2.4 Fiddlerhistorical

    1. 工作原理 Fiddler相当于一个中间人 2. Fiddler界面 2.1. 工具栏 2.2. 状态栏 2.3. 会话工具 - Statistics:性能分析 - Inspectors:检查一个Http事务 - AutoResponder:自定义响应信息 - Filter:过滤器 3. 常用操作 3.1. 设置HTTPS - Tool-Options - HTTPS 3.2. 设置代理 - Tool-Options - Connections - 浏览器 3.3. 添加Server IP列

  17. 2.5 HTTP KeepAlivehistorical

    1. HTTP KeepAlive是什么 Http的长连接是一种复用tcp连接的机制。 Http1.0时期,每个tcp连接只能用于一个Http Transaction(request+response)。 Http1.1引入了Http Keep Alive,即复用一个TCP链接用于多个Http Transaction 2. HTTP KeepAlive原理 - 客户端request header带上 Connection: KeepAlive - 服务器response header带上 Connection: KeepAlive

  18. 2.6 HTTPhistorical

    1. HTTP报文格式 1.1. 请求 - 请求行 - 请求头 - 空行 - 请求体 1.2. 响应 - 状态行 - 响应头 - 空行 - 响应体 2. URL URL编码.md 3. HTTP方法 HTTP方法.md 4. HTTP状态码 HTTP状态码.md 5. HTTP版本 HTTP版本.md 6. HTTP跨域 浏览器同源策略以及跨域.md 7. HTTP缓存 HTTP缓存.md 8. HTTP长链接 HTTP KeepAlive.md

  19. 2.7 HTTPShistorical

    1. 什么是HTTPS - HTTPS=HTTP+SSL/TLS 2. 为什么需要HTTPS Http是明文传输,如果有人捕获了这个报文,那么他可以解析出所有数据。 Https是密文传输,即数据仅仅只在发送方和目的方双方可见,而对中间任一一个节点都不可见 2.1. HTTP VS HTTPS URL HTTP HTTPS 是否安全 否,明文 是(会加密传输过程中的数据),密文 端口 80 443 OSI网络模型 应用层 应用层

  20. 2.8 HTTP方法historical

    1. 什么是HTTP方法 HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。 HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法 2. HTTP方法性质 2.1. 安全 指的是是否只读的。 GET, HEAD, OPTIONS 和 TRACE 这几个方法是安全的

  21. 2.9 HTTP缓存historical

    1. 什么是HTTP缓存 - 浏览器端的缓存 2. 为什么需要HTTP缓存 - HTTP是无状态的,优点在于可扩展,缺点在于需要发送重复数据导致网络性能降低 3. HTTP缓存分类 3.1. 状态缓存 - 不经过服务器,直接根据缓存信息对目标网络的状态判断 3.1.1. 301/302 - 缺点:通过301/302跳转HTTPS时可能产生的降级中间人劫持

  22. 2.10 HTTP超时historical

    1. 什么是HTTP超时 - Connection、Read、Write任意一个超过一定的时间就会发生超时 2. 参考 - HTTP 在什么情况下会请求超时? - 知乎

  23. 2.11 Restfulhistorical

    1. 什么是Restful - 基于HTTP协议的软件架构设计风格 - Resource Representational State Transfer 1.1. Resource 资源。使用URI定位资源 1.2. Representational 表现层。可以是txt、json等格式。

  24. 2.12 URL编码historical

    1. 为什么需要URL编码 URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。如果是其他字符需要转义,%字符编码 2. 如何编码 - 路径中:用的是utf-8编码 - get query param中:用的是操作系统的默认编码 需要使用encodeURI进行编码 3. 参考

  25. 2.13 cookie和sessionhistorical

    1. cookie+session工作机制 浏览器访问服务端, 服务端生成session代表会话,生成sessionid标识这个会话并把sessionid设置到cookie中返回给浏览器 浏览器每次访问服务器都会带上cookie,其中有sessionid 服务器拿到sessionid后就能知道是哪个用户访问的 2. cookie vs session

  26. 2.14 在浏览器地址栏输入一个URL后回车historical

    1. 简述过程 1. 解析URL 比如 https://www.baidu.com 或者 https://www.baidu.com/ - https://www.baidu.com/index.html ,而 https://www.baidu.com/dir 则会先找是否有dir的文件,没有的话找目录 1. DNS域名解析 DNS.md 2. 3次握手建立TCP连接 TCP三次握手.md ARP.md IP协议.md 3. 如果是HTTPS的话还要建立HTTPS连接 HTTPS.md

  27. 2.15 浏览器同源策略以及跨域historical

    1. 什么是同源 两个URL的 (协议,主机,端口) 三元组相同的话就叫做同源 下表给出了相对http://store.company.com/dir/page.html同源检测的示例 2. 什么是跨域 当前页面的javascript访问了非同源的资源,就叫做跨域 3. 跨域资源限制 4. 如何解决跨域问题 使用CORS。

  28. 4.1 应用层historical

    1. 应用层协议 1.1. HTTP HTTP.md 1.2. DNS DNS.md

  29. 5.1 网络层historical

    1. 网络层设备 路由器 2. 网络层协议 2.1. IP IP协议.md 2.2. NAT NAT.md 2.3. ICMP ICMP.md 2.4. ARP ARP.md

  30. 5.2 ARPhistorical

    1. ARP是什么 完成IP地址- MAC地址的转换的网络层协议 2. 为什么需要ARP 解决下一跳走哪的问题 3. ARP过程 1. 看ARP高速缓存有没有,有则使用这个MAC地址,没有则需要查找 2. 查找的话使用MAC地址 FF-FF-FF-FF-FF-FF 1. 广播ARP请求,同一局域网内

  31. 5.3 ICMPhistorical

    1. ICMP是什么 工作在网络层,用于在主机、路由器之间传递控制消息。 什么是控制消息? - 网络通不通 - 主机是否可达 - 路由是否可用 2. 为什么需要ICMP 由于IP协议只提供尽力而为的服务,即为了把数据包发送到目的地址尽最大努力,但是网络传输中出现错误是不可避免的,为了提高IP数据包交

  32. 5.4 IP协议historical

    1. 什么是IP协议 网络层协议。 2. IP协议特点 为网络上的主机提供一种无连接、不可靠的、尽力而为的数据包传输服务 3. 为什么需要IP协议 解决异构网络的联通问题 4. IP数据报格式 5. IP数据报分片 IP数据包最大长度:2^16-1为65535字节,但是MTU(数据链路层的可封装数据

  33. 5.5 NAThistorical

    1. NAT是什么 用于把私有地址和公网地址相互转换的一种技术 2. 为什么需要NAT 公网IP有限,通过NAT可以让多台主机共享同一个公网IP 3. 如何配置NAT 在私有网络连接到公网的路由器上安装NAT软件即可

  34. 6.1 数据链路层historical

    1. 数据链路层设备 网桥、交换机 2. MTU 数据链路层的可封装数据的上限,以太网是1500Byte,所以IP数据如果超过这个长度需要分片 2.1. 路径MTU 由链路中MTU的最小值决定

  35. 7.1 计算机网络historical

    1. OSI七层体系结构 由下至上是: - 物理层 在传输媒体上传输bit流 - 数据链路层 在相邻的机器节点之间传输帧 - 网络层 网络上的主机到主机之间传输数据 - 传输层 主机上的进程到进程之间传输数据 - 会话层 建立、管理和终止会话 - 表示层 数据的转换、加密和压缩 - 应用层 用户就是通过网络应用程序访问网络资源