计算机基础知识掌握TCP和HTTP相关知识即可。
这是一份详细 & 清晰的计算机网络基础 学习指南
计算机网络:这是一份全面 & 详细 的TCP协议攻略
计算机网络:这是一份全面& 详细 HTTP知识讲解
一、HTTP
- HTTP请求报文结构、响应报文,状态码
- Http和Https有什么不同,HTTPS的握手过程,浏览器如何验证CA证书
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html
https://juejin.im/post/59e4c02151882578d02f4aca
https://juejin.im/post/5a2ff29c6fb9a045132aac5a - Http缓存机制
https://juejin.im/post/5c93ba526fb9a070ca103898 - cookie、session、token区别
https://www.cnblogs.com/andy-zhou/p/5360107.html - Http1.0 ,Http1.1,Http2.0
1、Http1.1相对Http1.0主要改进的地方:
(1)在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive
(2)缓存处理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
2、Http1.x存在的问题:
(1)线头阻塞:TCP连接上只能发送一个请求,前面的请求未完成前,后续的请求都在排队等待。
(2)头部冗余,采用文本格式
HTTP/1.X版本是采用文本格式,首部未压缩,而且每一个请求都会带上cookie、user-agent等完全相同的首部。
3、Http2.0改进的地方:
(1)HTTP2建立一个TCP连接,一个连接上面可以有任意多个流(stream),消息分割成一个或多个帧在流里面传输。帧传输过去以后,再进行重组,形成一个完整的请求或响应。这使得所有的请求或响应都无法阻塞。
(2)HTTP 1.x每一次通信(请求/响应)都会携带头部信息用于描述资源属性。HTTP 2.0在客户端和服务端之间维护一份字典(map)存储头部信息。
第一次通信后,把头部信息存进字典中,之后每次传输只需要带上索引进行。
https://www.cnblogs.com/wjlog/p/5827168.html
https://blog.csdn.net/zhuyiquan/article/details/69257126?locationNum=4&fps=1
https://juejin.im/post/5c0ce870f265da61171c8c66
二、TCP相关
- TCP 和 UDP 的异同
UDP将应用程序发送过来的数据包在收到的那一刻,立即按照原样发送到上的一种机制,不保证数据的传输结果。
TCP是面向连接的可靠传输服务。数据发送前需要三次握手建立连接,数据发送时通过一系列的机制,如校验和、序列号、确认号、超时重传、滑动窗口、快速重传、拥塞避免、流量控制保证数据不损坏、不丢失、不重复、不乱序,最后数据传输完成后需要通过四次挥手断开连接。 - TCP如何保证可靠传输
TCP数据传输过程可能会出现数据损坏、丢失、重复、乱序的情况,通过校验和、序列号、确认号、超时重传、滑动窗口、快速重传、拥塞避免、流量控制保证可靠传输。
(1)数据损坏
数据接收方接受到数据时对TCP报文做相应的运算,得出结果并与校验和比对,相同则说明数据没被损坏。(类似于Hash算法校验数据是否被篡改)
TCP检验和的过程
(2)乱序
序列号对每个数据进行编号,维持一个滑动窗口缓存乱序的数据,同时快速重传乱序数据的ACK,当发送方接收到三个重复的ACK时,就会重传该数据,比超时重传效率高。
(3)丢失
每次发送数据时都会启动一个定时器,时间设为一个RTT,即数据在客户端和服务端之间的往返时间,当时间到达时还没收到ACK,则重新发送这个数据。
(4)重复
每个数据均有序列号,重复时丢弃即可。
https://blog.csdn.net/cmm0401/article/details/77878998
为什么收到三个重复的ACK意味着发生拥塞? - TCP建立连接三次握手的过程及原因
- TCP断开连接四次挥手的过程及原因
- 滑动窗口、快速重传
- 拥塞避免、流量控制
https://blog.csdn.net/qzcsu/article/details/72861891
TCP拥塞控制机制
其他:
1一次网络请求的过程是怎样的?
2 DNS解析
3、socket编程
https://www.cnblogs.com/zhujiabin/p/5675716.html
https://blog.csdn.net/carson_ho/article/details/53366856