TAG
Computer_Network
35 篇笔记
- 1.1 TCP三次握手historical
1. 什么是三次握手 所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包 三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息 2. 三次握手过程 最开始客户端服务端都处
- 1.2 TCP四次挥手historical
1. 什么是四次挥手 所谓四次挥手,是指TCP断开连接时需要发送四个包 2. 四次挥手过程 最开始客户端服务端都处于ESTABLISHED的状态,假设由客户端开始关闭连接 记忆思路:置FIN/ACK为1,FIN伴随着SEQ Number,ACK伴随着ACK Number。发送完会进入什么状态 1.
- 1.3 TCP流量控制historical
1. 什么是TCP流量控制 控制发送方发送速率,避免接收方来不及接收 2. TCP流量控制原理 2.1. 滑动窗口 流量控制通过TCP滑动窗口来实现流量控制。 由接收方告诉发送方我的缓存有多大,你不能超过这个数据,否则我来不及接受 3. 参考 - TCP流量控制中的滑动窗口大小、TCP字段中16位窗
- 1.4 TCPhistorical
1. TCP是什么 传输层协议 2. 为什么需要TCP 为网络上的计算机进程间提供可靠的通信服务 3. TCP特点 面向连接的、可靠的、面向字节流的传输层通信协议 3.1. 面向连接 传输数据之前需要三次握手建立连接和四次握手断开连接 TCP三次握手.md TCP四次挥手.md 3.2. 可靠 保证
- 1.5 TCP KeepAlivehistorical
1. 为什么需要TCP KeepAlive TCP建立连接后,双方会进行数据交互。交互过程中如果任一方出现掉电、死机、异常重启等各种意外,另一方会一直保持这个连接,造成资源浪费 这就可以使用TCP的保活机制:TCP KeepAlive来解决这个问题 2. 什么是TCP KeepAlive 隔一段时间
- 1.6 TCP close waithistorical
1. 什么是close wait TCP被动关闭连接的一方会进入close wait状态。 2. 为什么需要close wait 客户端关闭了从客户端- 服务器的连接后,我服务器可能还有数据没有传输完毕,于是处于这个状态继续传输数据,传输完了进行最后一次关闭 3. close wait的问题 - 场
- 1.7 TCP拥塞控制historical
1. 什么是TCP拥塞控制 TCP避免网络拥塞的算法 2. 为什么需要TCP拥塞控制 拥塞控制是为了防止过多的数据注入到网络中,使网络过载进而瘫痪。 3. TCP拥塞控制原理 拥塞控制通过发送窗口 min(发送方的拥塞窗口,接收方的滑动窗口) 进行拥塞控制 发送方的拥塞窗口大小由 慢开始+拥塞避免
- 2.1 HTTP版本historical
1. HTTP1.0 1.1. 客户端/服务器 1.2. 短链接 - 每次HTTP请求时建立TCP连接、请求完释放TCP连接,以尽快将资源释放出来服务其他客户端 - 问题:对于图片这种静态资源每张都需要请求服务器,重新建立连接的时间很浪费 - 解决: Connection:Keep-Alive 。即
- 2.2 WebSockethistorical
1. WebSocket是什么 WebSocket与Http一样,也是一种协议 2. 为什么需要WebSocket 为了解决Http的一个缺点:服务器有数据要通知给用户的时候无法主动推送/通信仅能由客户端发起 3. WebSocket作用 - 实时获取服务器数据 websocket之前只能使用aja
- 2.3 HTTP状态码historical
1. 1xx 表示临时响应并需要请求者继续执行操作的状态代码 2. 2xx 表示成功处理了请求的状态代码 - 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 - 201 (已创建) 请求成功并且服务器创建了新的资源。 - 202 (已接受) 服务器已接受请求,但尚未
- 3.1 CDNhistorical
1. 什么是 CDN - 内容分发网络 - 由全球范围内的代理服务器组成,给用户就近提供 静态内容 ,说白了就是缓存 2. 为什么需要 CDN - 缓存提高访问速度 3. CDN 缺点 - 时效性 4. CDN 工作原理 - 开发人员 1. 开发人员架设好 www.a.com <- 3.3.3.3
- 3.2 DNShistorical
1. DNS是什么 - 域名- IP地址 - IP地址有以下几种:A记录(IPv4)、AAAA记录(IPv6)、CNAME(主机别名) 2. 为什么需要DNS - 域名只是助记符,根据IP才能找到网络上的机器, 3. DNS解析过程 1. 计算机查询 www.baidu.com 对应的IP,还原成
- 1.8 TCP time waithistorical
1. 什么是time wait TCP主动关闭连接的一方,最后一个ACK后会进入time wait状态 2. 为什么需要time wait - 应对最后一个ack丢失,需要重传的情况。 - 防止在网络上闲逛的旧连接的数据包被新连接接收 一个连接是由(客户端IP、客户端Port、服务器IP、服务器Port)4元组唯一标识的
- 1.9 UDPhistorical
1. 什么是UDP 传输层协议 2. UDP特点 - 无连接:减少了连接开销 - 不可靠:最大努力交付 - 面向报文:应用层给UDP多长的报文,UDP照样发送,即一次性发送一个完整报文
- 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列
- 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
- 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
- 2.7 HTTPShistorical
1. 什么是HTTPS - HTTPS=HTTP+SSL/TLS 2. 为什么需要HTTPS Http是明文传输,如果有人捕获了这个报文,那么他可以解析出所有数据。 Https是密文传输,即数据仅仅只在发送方和目的方双方可见,而对中间任一一个节点都不可见 2.1. HTTP VS HTTPS URL HTTP HTTPS 是否安全 否,明文 是(会加密传输过程中的数据),密文 端口 80 443 OSI网络模型 应用层 应用层
- 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 这几个方法是安全的
- 2.9 HTTP缓存historical
1. 什么是HTTP缓存 - 浏览器端的缓存 2. 为什么需要HTTP缓存 - HTTP是无状态的,优点在于可扩展,缺点在于需要发送重复数据导致网络性能降低 3. HTTP缓存分类 3.1. 状态缓存 - 不经过服务器,直接根据缓存信息对目标网络的状态判断 3.1.1. 301/302 - 缺点:通过301/302跳转HTTPS时可能产生的降级中间人劫持
- 2.10 HTTP超时historical
1. 什么是HTTP超时 - Connection、Read、Write任意一个超过一定的时间就会发生超时 2. 参考 - HTTP 在什么情况下会请求超时? - 知乎
- 2.11 Restfulhistorical
1. 什么是Restful - 基于HTTP协议的软件架构设计风格 - Resource Representational State Transfer 1.1. Resource 资源。使用URI定位资源 1.2. Representational 表现层。可以是txt、json等格式。
- 2.12 URL编码historical
1. 为什么需要URL编码 URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。如果是其他字符需要转义,%字符编码 2. 如何编码 - 路径中:用的是utf-8编码 - get query param中:用的是操作系统的默认编码 需要使用encodeURI进行编码 3. 参考
- 2.13 cookie和sessionhistorical
1. cookie+session工作机制 浏览器访问服务端, 服务端生成session代表会话,生成sessionid标识这个会话并把sessionid设置到cookie中返回给浏览器 浏览器每次访问服务器都会带上cookie,其中有sessionid 服务器拿到sessionid后就能知道是哪个用户访问的 2. cookie vs session
- 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
- 2.15 浏览器同源策略以及跨域historical
1. 什么是同源 两个URL的 (协议,主机,端口) 三元组相同的话就叫做同源 下表给出了相对http://store.company.com/dir/page.html同源检测的示例 2. 什么是跨域 当前页面的javascript访问了非同源的资源,就叫做跨域 3. 跨域资源限制 4. 如何解决跨域问题 使用CORS。
- 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
- 5.2 ARPhistorical
1. ARP是什么 完成IP地址- MAC地址的转换的网络层协议 2. 为什么需要ARP 解决下一跳走哪的问题 3. ARP过程 1. 看ARP高速缓存有没有,有则使用这个MAC地址,没有则需要查找 2. 查找的话使用MAC地址 FF-FF-FF-FF-FF-FF 1. 广播ARP请求,同一局域网内
- 5.3 ICMPhistorical
1. ICMP是什么 工作在网络层,用于在主机、路由器之间传递控制消息。 什么是控制消息? - 网络通不通 - 主机是否可达 - 路由是否可用 2. 为什么需要ICMP 由于IP协议只提供尽力而为的服务,即为了把数据包发送到目的地址尽最大努力,但是网络传输中出现错误是不可避免的,为了提高IP数据包交
- 5.4 IP协议historical
1. 什么是IP协议 网络层协议。 2. IP协议特点 为网络上的主机提供一种无连接、不可靠的、尽力而为的数据包传输服务 3. 为什么需要IP协议 解决异构网络的联通问题 4. IP数据报格式 5. IP数据报分片 IP数据包最大长度:2^16-1为65535字节,但是MTU(数据链路层的可封装数据
- 5.5 NAThistorical
1. NAT是什么 用于把私有地址和公网地址相互转换的一种技术 2. 为什么需要NAT 公网IP有限,通过NAT可以让多台主机共享同一个公网IP 3. 如何配置NAT 在私有网络连接到公网的路由器上安装NAT软件即可
- 6.1 数据链路层historical
1. 数据链路层设备 网桥、交换机 2. MTU 数据链路层的可封装数据的上限,以太网是1500Byte,所以IP数据如果超过这个长度需要分片 2.1. 路径MTU 由链路中MTU的最小值决定
- 7.1 计算机网络historical
1. OSI七层体系结构 由下至上是: - 物理层 在传输媒体上传输bit流 - 数据链路层 在相邻的机器节点之间传输帧 - 网络层 网络上的主机到主机之间传输数据 - 传输层 主机上的进程到进程之间传输数据 - 会话层 建立、管理和终止会话 - 表示层 数据的转换、加密和压缩 - 应用层 用户就是通过网络应用程序访问网络资源