计算机网络知识总结,参考小林 coding 图解网络系列。
开篇碎碎念
整理自 Go-Interview 仓库的 计算机网络 模块,分上下两篇覆盖 OSI/TCP/IP 各层协议、HTTP/HTTPS、DNS、CDN 等高频考点,附带小林 coding 的总结。
适合人群:需要复习计算机网络协议栈、准备后端面试的同学。
1、HTTP是什么?详细解释一下。
HTTP是超文本传输协议,即HyperText Transfer Protocol。
可以拆分成三个部分:超文本、传输、协议。HTTP是一个计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
2、http常见字段有哪些?
Host字段:客户端发送请求时,此字段用来指定服务器的域名。
Content-Length字段:服务器返回数据时,会有Content-Length字段,表明本次回应的数据长度。
Connect字段:最常用于客户端要求服务器使用TCP持久连接,以便其他请求服用。比如http/1.1版本默认时长连接,需要指定Connection首部字段的值为Keep-Alive.即Connection:keep-alive.
Content-Type字段:用于服务器回应时,告诉客户端,本次数据是什么格式。比如:Content-Type:text/html;charset=utf-8,说明发送的是网页,编码格式是utf-8.
Content-Encoding字段:表示服务器返回的数据使用的压缩方法。客户端在请求时,用Accept-Encoding字段说明可以接受哪些压缩方法。
3、说一下GET和POST的区别?
Get方法是请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。
Post方法是相反操作,它是向URL指定的资源提交数据,数据方法在报文的body里。
本质区别:
Get方法是安全且幂等。因为它是只读操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。
Post因为是新增或提交数据的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。
拓展知识:
在 HTTP 协议⾥,所谓的「安全」是指请求⽅法不会「破坏」服务器上的资源。
所谓的「幂等」,意思是多次执⾏相同的操作,结果都是「相同」的。