计算机网络重点知识
1、计算机网络体系结构
1.1 网络协议是什么?
- 网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。
1.2 为什么要对网络协议分层?
-
各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。这样,整个问题的复杂程度就下降了。也就是说上一层的工作如何进行并不影响下一层的工作,这样我们在进行每一层的工作设计时只要保证接口不变可以随意调整层内的工作方式。
-
灵活性好。当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。当某一层出现技术革新或者某一层在工作中出现问题时不会连累到其他层的工作,排除问题时也只需要考虑这一层单独的问题即可。
-
结构上可分割开。各层都可以采用最合适的技术来实现。技术的发展往往是不对称的,层次化的划分有效避免了木桶效应,不会因为某一方面技术的不完善而影响整体的工作效率。
-
易于实现和维护。这种结构使得实现和调试一个庞大又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统。进行调试和维护时,可以对每一层进行单独的调试,避免了出现找不到问题、解决错问题的情况。
-
能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。标准化的好处就是可以随意替换其中的某几层,对于使用和科研来说十分方便。
https://www.applysquare.com/topic-cn/V9UHWe49W/
1.3 在浏览器地址栏输入URL,按下回车后究竟发生了什么?
- 输入地址。
- DNS解析。
- TCP连接。
- 发送http请求。
- 返回http响应。
- 浏览器解析渲染页面。
- 断开连接。
https://zhuanlan.zhihu.com/p/78677852
https://blog.csdn.net/jiao_0509/article/details/82491299?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1
2、OSI 7层网络
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或建立与别的接点的联系 没有协议
传输层 提供端对端的接口 TCP,UDP
网络层 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2
https://www.cnblogs.com/dadadechengzi/p/7999371.html
3、TCP的三次握手四次挥手
3.1 TCP报文的头部结构
https://blog.csdn.net/zeqi1991/article/details/81582985
3.2 三次握手,四次挥手
发起断开连接请求可以是客户端也可以是服务器,即主机1,主机2可以是客户端也可以是服务器。
https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
https://blog.csdn.net/qq_38950316/article/details/81087809?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
4、HTTP、HTTPS
4.1 HTTP 1.0、 1.1、 2.0区别
https://blog.csdn.net/weixin_44489066/article/details/88640088
https://www.cnblogs.com/heluan/p/8620312.html
4.1 什么是HTTP,HTTP 与 HTTPS 的区别
- https协议需要到CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
https://www.runoob.com/w3cnote/http-vs-https.html
https://www.cnblogs.com/wqhwe/p/5407468.html
4.2 常用HTTP状态码
- 1XX:表示通知信息的,如请求收到了或正在进行处理
- 2XX:表示成功,如接受或知道了
- 3XX:表示重定向,如要完成请求还必须采取进一步的行动
- 4XX:表示客户的差错,如请求中有错误的语法或不能完成
- 5XX:表服务器的差错,如服务器失效无法完成请求
https://www.cnblogs.com/postw/p/9671160.html
4.3 GET和POST区别
- GET提交的数据放在URL中,POST则不会。这是最显而易见的差别。这点意味着GET更不安全(POST也不安全,因为HTTP是明文传输抓包就能获取数据内容,要想安全还得加密)
- GET回退浏览器无害,POST会再次提交请求(GET方法回退后浏览器再缓存中拿结果,POST每次都会创建新资源)
- GET提交的数据大小有限制(是因为浏览器对URL的长度有限制,GET本身没有限制),POST没有
- GET可以被保存为书签,POST不可以。这一点也能感受到。
- GET能被缓存,POST不能
- GET只允许ASCII字符,POST没有限制
- GET会保存再浏览器历史记录中,POST不会。这点也能感受到。
总之,两者之间没有本质区别,区别就在于数据存储的位置。各自有适用环境,根据需求选择合适的方法即可。
https://www.zhihu.com/question/28586791
https://www.cnblogs.com/liziweiblog/p/11066333.html
4.4 什么是对称加密与非对称加密
https://blog.csdn.net/qq_29689487/article/details/81634057
4.5 Session、Cookie和Token的主要区别
https://www.cnblogs.com/wxinyu/p/9154178.html
4.6 如果客户端禁止 cookie 能实现 session 还能用吗?
- Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。
https://blog.csdn.net/qq_39207948/article/details/80969968
5、网络安全
5.1 签名、编码、加密区别
- 编码:
在Web开发中,需要通过URL的query参数来传递数据,但是对于URL来说,有些字符是不安全的,所以需要对此进行编码。对于发送方来说,就是编码,反之,对于接收方来说,就是解码。
常见的编码方式有Base64。 - 签名:
签名的场景很多,比如:在云盘中,会对文件进行MD5签名,对于相同文件之存一份来节省空间和做到秒传;在TCP/IP中,会用CRC来对通讯数据做签名,用于校验数据是否被篡改,已决定是否丢弃。
常见的签名方式有很多,比如:MD5、SHA系列、HmacSHA系列、CRC等。 - 加密:
有时候对数据签名并不能满足我们的需求,比如:在移动应用中明文传递imei、idfa或者mac会存在一定的风险;在Web开发中传递密码或者价格有关的信息,这些都需要接收方反解数据,这种场景仅仅签名就不够了。
加密与解密简单说就是发送方用密钥对数据进行加密,接收方用密钥对数据进行解密来满足上面场景需求。
常用的加密与解密算法有很多种,比如:DES系列、RC系列、AES(Rijndael)、BlowFish、RSA等。