zoukankan      html  css  js  c++  java
  • 计算机网络 知识点

    1月27号 28号 
    计算机网络基础
    http://www.cyc2018.xyz/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%9B%AE%E5%BD%95.html#%E5%8F%82%E8%80%83%E9%93%BE%E6%8E%A5

    关于三次握手和四次挥手,面试官想听到怎样的回答?
    https://mp.weixin.qq.com/s/S1mv8AE_pQz3uHjRGS7tWg

    35 张图解:被问千百遍的 TCP 三次握手和四次挥手面试题
    https://www.cnblogs.com/xiaolincoding/p/12638546.html

    [CRC校验]手算与直观演示
    https://www.bilibili.com/video/BV1V4411Z7VA/?spm_id_from=333.788.videocard.1

    1月29

    听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!
    https://mp.weixin.qq.com/s/leE2DgDOl5z90hG2gG1Urw

    30张图解:键入网址后,到网页显示,其间发生了什么?
    https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvzemIw

    2月3号
    硬核!30 张图解 HTTP 常见的面试题
    https://www.cnblogs.com/xiaolincoding/p/12442435.html

    2月4号
    通俗理解数字签名,数字证书和https
    https://www.jianshu.com/p/4932cb1499bf

    【web安全3】【硬核】HTTPS原理全解析
    https://www.bilibili.com/video/BV1w4411m7GL/?spm_id_from=333.788.videocard.0
    完全理解HTTPS如何做到传输安全
    https://juejin.cn/post/6844903613479796750
    抓包分析https的传输过程
    https://blog.csdn.net/lyztyycode/article/details/81259284
    2月8
    你真的了解 Cookie 和 Session 吗?
    https://www.cnblogs.com/ityouknow/p/10856177.html

    上边内容有的大部分我就不贴了

    路由器的功能?

    路由选择与分组转发

    ip地址有什么用,ip地址和mac地址, 为什么需要IP地址

    1)   IP地址是在网络上分配给每台计算机或网络设备的32位数字标识。在Internet上,每台计算机或网络设备的IP地址是全世界唯一的。IP地址的格式是 xxx.xxx.xxx.xxx,其中xxx是 0 到 255 之间的任意整数。例如,每步站主机的IP地址是 219.134.132.131。

    2)   MAC地址是数据链路层的地址,如果mac地址不可直达 ,直接丢弃,在LAN里面,一个网卡的MAC地址是唯一的。MAC地址在arp协议里常常用到,mac地址到ip地址的相互转化。Mac地址是48位的地址。

    3)   IP地址是网络层的地址,如果ip地址不可达,接着转发,在WAN里面,ip地址不唯一,计算机的ip地址可以变动

    4)  

    为什么使用IP地址通信

    1)   由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。

    2)   连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。 

     介绍OSI七层协议

    • 物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
    • 数据链路层:为同一链路主机提供数据传输服务
    • 网络层:为主机提供数据传输服务。  Arp协议解析mac地址,icmp传输控制报文协议
    • 传输层:为进程提供数据传输服务。Tcp/udp协议
    • 会话层:负责在网络中的两节点之间建立、维持和终止通信
    • 表示层:处理用户信息的表示问题,数据的编码,压缩和解压缩,数据的加密和解密
    • 应用层:为应用程序提供网络通信服务  http,dns域名解析系统

    TCP为啥挥手要比握手多一次?

    • Tcp是全双工通信,服务端和客户端都能发送和接受数据。所以断开连接需要服务端和客户端都确定对方不再发送数据,所以双方都需要发送fin报文。服务端收到客户端的fin后,自己可能还在处理数据,所以第二次不能和第三次一起,而是先回个ack报文。等数据处理好之后再通知客户端说我也不发送数据了,也就是发fin报文。

    为什么一定进行三次握手

    • TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。
    • 「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
    • 「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

    TCP与UDP的区别?应用场景都有哪些?

    1)   TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

    2)   TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

    3)   UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

    4)   每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

    5)   TCP对系统资源要求较多,UDP对系统资源要求较少。

    6)   若通信数据完整性需让位与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。

    7)   UDP:DNS   SNMP

    8)   TCP面向字节流,UTP面向数据包;

    为什么UDP有时比TCP更有优势?

    1. 网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。
    2. TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。
    3. 采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

    TCP可靠性保证

    TCP 的连接状态查看,在 Linux 可以通过 netstat -napt 命令查看。

    1. 序列号和确认应答信号
    2. 超时重传
    3. 滑动窗口
    4. 流量控制
    5. 拥塞控制
    • 流量控制与拥塞控制的区别:所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能承受现有的网络负荷。流量控制往往指的是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接受。

     

    讲讲浏览器输入地址后发生的全过程,以及对应的各个层次的过程

    http->DNS->协议栈->TCP->IP->MAC->网卡->交换机->路由器

    1. 应用层,解析url,确定web服务器和文件名。然后生成HTTP 请求信息,在发送之前要查询服务器域名对应的ip地址,用DNS域名解析找到ip地址(递归,本地->根->顶级域->权威域)。
    2. 到达传输层,传输层会给http报文加上tcp头部,tcp在建立连接前需要3次握手。把http传输工作交给协议栈。协议栈里面有upd,tcp和ip,ip里面包括ARP(由ip地址得到MAC地址)和ICMP(控制报文协议,用于在IP主机、路由器之间传递控制信息,比如主机是否可达,网络通不通)。浏览器调用socket库委托协议栈。  netstat -napt查看连接状态
    3. 到达网络层,加上ip头部,IP头部里有目的地址和源地址,客户端如果有多个网卡,由路由表规则(地址与运算子网掩码)判断哪一个网卡作为源地址,会在协议号(16进制)里填上对应的tcp的协议号,表示协议为tcp。
    4. 在链路层,加MAC头部,发送方与接收方MAC地址(48位)和协议类型,通过ARP协议由ip地址找到mac地址。0800是ip协议,0806是ARP协议。至此网络包只是存放在内存中的一串二进制数字信息,没有办法直接发送给对方。我们需要将数字信息转换为电信号,才能在网线上传输,也就是说,这才是真正的数据发送过程。负责这个的是网卡。
    5. 网卡在物理层,控制网卡需要网卡驱动程序,网卡驱动从ip模块获得包后将其复制到网卡的缓存中,然后在头部加报头和起始帧分界符,末尾加上帧校验序列(循环冗余算法(CRC)生成的fcs校验序列)。经过网卡将数字信号转化为电信号,通过网线发送出去。
    6. 到达交换机(交换机没有mac地址),在数据链路层,MAC地址表有mac和端口。如果表中没有,除了源端口都发,只有相应的接受者才会接受,其他的会忽略。
    7. 到了路由器,路由器工作在网络层。(路由器端口有MAC地址),通过末尾的fcs校验看是不是给自己的,如果是就放在缓冲区,接受之后就会去掉MAC头部,然后通过MAC后方的IP头部获得ip,通过ARP协议找到MAC,加上新的MAC段,然后发送到下一个路由器,最后到达目的地。

    在网络包传输的过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

    http状态码

    1)   1XX    信息码,服务器收到请求,需要请求者继续执行操作;

    2)   2XX    成功码,操作被成功接收并处理;

    3)   3XX    重定向,需要进一步的操作以完成请求;

    4)   4XX    客户端错误,请求包含语法错误或无法完成请求;

    5)   5XX    服务器错误,服务器在处理请求的过程中发生了错误

    • FTP 21;TELNET 23;SMTP  25;DNS  53;HTTP 80;HTTPS 443
    • 100目前很正常,200成功,204成功但响应不包含主体,206范围请求,301永久重定向,302临时重定向,400报文语法错误,401认证失败,403请求被拒绝,404页面丢失,500执行请求时发生错误,503无法处理请求

    get/post 区别

    1. GET用于获取资源,POST用于传输实体主体
    2. GET参数传递在URL中,只支持ASCII码,POST在实体主体(body)中
    3. GET安全,POST不安全(改变服务器数据)
    4. GET是幂等的,POST是不幂等的
    5. GET可缓存,POST大多数情况下不可缓存
    • 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
    • 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。

    http请求方式

    http1.0和http1.1和http2.0区别

    • http1.0:短连接 不记录ip 每次都得验证
    • http1.1:默认长连接,管道化支持流水线,(但服务器还是得按照时间顺序回应请求,队头阻塞),多个TCP连接,新增状态码。
    • http2.0:长连接+io多路复用,二进制分帧、服务端推送、首部压缩。  
    • 头部压缩:HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分。这就是所谓的 HPACK 算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
    • 二进制:头部和数据体都是二进制,对计算机友好,无需再转换就能被计算机识别,提高数据传输的效率。
    • 多路复用:HTTP/2 是可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应。移除了 HTTP/1.1 中的串行请求,不需要排队等待,也就不会再出现「队头阻塞」问题,降低了延迟,大幅度提高了连接的利用率。

    • 服务器推送:HTTP/2 还在一定程度上改善了传统的「请求 - 应答」工作模式,服务不再是被动地响应,也可以主动向客户端发送消息。举例来说,在浏览器刚请求 HTML 的时候,就提前把可能会用到的 JS、CSS 文件等静态资源主动发给客户端,减少延时的等待,也就是服务器推送(Server Push,也叫 Cache Push)。

    Cookie与session比较   会话技术

    Cookie 主要用于以下三个方面:

    1. 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
    2. 个性化设置(如用户自定义设置、主题等)
    3. 浏览器行为跟踪(如跟踪分析用户行为等)
    • 创建过程:客户端发送请求,服务端回应请求和一个set-cookie让客户端保存cookie,客户收到后存下来,之后客户端再发请求时会把cookie一起发过去。
    1. 作用范围不同:Cookie 保存在客户端(浏览器),Session 保存在服务器端。
    2. 存取方式的不同:Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在 Session 中保持一些常用变量信息,比如说 UserId 等。
    3. 有效期不同:Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
    4. 隐私策略不同:Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
    5. 存储大小不同:单个 Cookie 保存的数据不能超过 4KB,Session 可存储数据远高于 Cookie。

    Cookie与session如何配合的?

    • 客户端第一次请求是,服务端会创建对应的session,返回一个session唯一标识符sessionID,客户端收到后会存放在cookie中,同时cookie会记录sessionID属于哪个域名。之后客户端再请求时,会自动判断此域名是否存在cookie信息,如果有会发过去,服务端收到后会根据里面sessionID查找session信息,没找到说明没有登录或者登陆失效,找到再进行之后的操作。
    •  如果禁用了cookie怎么办?通过url或者token机制。
  • 相关阅读:
    Python语言程序设计(1)--实例1和基本知识点
    前端学习笔记--函数
    知乎推荐书籍整理
    第六周周总结
    第五周总结
    第四周周总结
    第三周周总结
    第二周总结
    第一周总结
    项目目标
  • 原文地址:https://www.cnblogs.com/philo-zhou/p/14593155.html
Copyright © 2011-2022 走看看