计算机网络

    网络分层架构
        TCP/IP四层模型(OSI七层模型):应用层(应用层|表示层|会话层)、传输层(传输层)、网络层(网络层)、链路层(数据链路层|物理层)
        1. 应用层:文件传输(HTTP、FTP、SMTP)
        2. 表示层:数据格式化及编码转换
        3. 会话层:解除或建立联系
        4. 传输层:定义传输协议和端口(TCP、UDP)
        5. 网络层:控制子网的运行(IP、ICMP)
        6. 数据链路层:地址解析
        7. 物理层:定义物理设备的标准


    TCP和UDP的区别
        1. TCP是传输控制协议,提供的是可靠的字节流。服务实际数据传输之前需要进行三次握手、结束时需要四次挥手
        2. UDP是用户数据报协议,是无连接的,没有超时重发,所以传输速度很快,主要用于视频传输
        3. TCP保证数据按序到达,提供流量控制和阻塞控制,网络拥堵的时候会减慢发送字节数,而UDP不管网络是否拥堵
        4. TCP是连接的,所以是1对1,而UDP是1对多,可能是多对多


    TCP如何确保传输可靠性
        1. 校验和:接收方将数据和和发送方对比
        2. 序列号和确认应答:在ACK报文中确认序列号
        3. 超时重传:发送方没有接收到接收方的确认后,会每秒重传一次
        4. 连接管理:三次握手和四次挥手
        5. 流量控制:TCP协议的报头是接收端剩余缓冲区的大小
        6. 拥塞控制:慢启动,一开始传小数据量尝试,后面成指数增长


    HTTP和HTTPS的区别
        1. https需要到ca申请证书,http免费申请
        2. http是超文本传输协议,信息是明文传输,https是具有安全性的ssl/tls加密传输协议
        3. http的端口是80,https是443
        4. http的连接是无状态的,https协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议


    HTTPS加密
        背景:不使用SSL/TLS通信的HTTP都是用明文通信的,可能会被窃听、篡改、冒充
        作用:
            1. 将信息由明文传输变成加密传输,解决窃听
            2. 使用校验机制,解决篡改
            3. 使用数字证书,解决冒充
        加密方式
            1. 对称加密:只有一个秘钥
            2. 非对称加密:公钥加密,私钥解密
        目前形式
            1. 服务器和浏览器通过服务器的非对称加密拿到浏览器的对称加密公钥,之后使用对称加密保障性能
            2. 使用数字证书防止中间劫持


    浏览器发送http请求全过程
        1. 域名解析
        2. 与服务器建立TCP连接
        3. 发起HTTP请求
        4. 服务器响应HTTP请求
        5. 关闭TCP连接
        6. 浏览器得到html代码并解析html代码,并请求html代码中的资源(如js、css、图片
        7. 浏览器对页面进行渲染呈现给用户


    三次握手
        1. 发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
        2. 接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。
        3. 最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束
        原因:
            a. 为了防止服务器端开启一些无用的连接增加服务器开销以及防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
            b. 如果两次,那么接收方无法确定接收方的信息发送方是否能收到


    四次挥手
        1. 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
        2. 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
        3. 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
        4. 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手
        原因:
            a. 握手的时候并没有数据传输,所以服务端的SYN和ACK报文可以一起发送,但是挥手的时候有数据在传输,所以ACK和FIN报文不能同时发送,需要分两步,所以会比握手多一步
            b. 为什么客户端在TIME-WAIT阶段要等2MSL?确认服务器端是否收到客户端发出的ACK确认报文,同时为了防止之前已经失效的连接保报文又出现在连接中,2ML是报文最大生存时间


    GET和POST区别
        1. GET一般用于获取/查询资源信息,而POST一般用于更新资源信息
        2. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。
        3. Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。


    进程和线程的区别
        1. 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位
        2. 线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程
        3. 一个程序至少一个进程,一个进程至少一个线程
        4. 为什么线程切换比进程切换开销小:
            a. 线程只需要保存线程的上下文(相关寄存器状态和栈的信息)就好了
            b. 进程切换时的上下文比较多,存器,内存,文件等


    进程间通信
        1. 无名管道通信(pipe)管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
        2. 高级管道通信(popen)将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。
        3. 有名管道通信(named pipe)有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
        4. 消息队列通信(message queue)消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
        5. 信号量通信(semophore)信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
        6. 信号(sinal)信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
        7. 共享内存通信(shared memory)共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
        8. 套接字通信(socket)套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。


    IO模型
        1. 同步阻塞IO(BIO):阻塞整个步骤,适用于连接少延迟低的场景,如数据库连接
        2. 同步非阻塞IO(NIO):阻塞业务处理但不阻塞数据接收,适用高并发如聊天软件
        3. 多路复用IO:连接和数据处理步骤分开
        4. 信号驱动IO
        5. 异步IO:数据请求和数据处理是异步的,数据请求一次返回一次,适用于长连接的业务场景


    select、poll、epoll
        1. 都是IO多路复用的机制
        2. epoll是select和poll的改进,可以处理大量连接的性能


    cookie与session区别如下:
        1. cookie是针对每个网站的信息,每个网站只能对应一个,其他网站无法访问,这个文件保存在客户端,每次您拨打相应网站,浏览器都会查找该网站的 cookies,如果有,则会将该文件发送出去。cookies文件的内容大致上包括了诸如用户名、密码、设置等信息。
        2. session是针对每个用户的,只有客户端才能访问,程序为该客户添加一个session。session中主要保存用户的登录信息、操作信息等。此session将在用户访问结束后自动消失
        3. 存储数据的大小不同,一个 cookie存储的数据不超过3 K; session存储在服务器上可以任意存储数据,但是,当 session存储数据太多时,服务器可选择进行清理。

posted on 2022-02-03 20:34  xiao_xin  阅读(83)  评论(0)    收藏  举报

导航