IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络-面试 -> 正文阅读

[网络协议]计算机网络-面试

TCP怎么保证可靠性

序列号,确认序列号 确认应答和超时重传
当接收方接受到消息之后会发送一个ACK报文给发送方 报文中有一个确认序列号 就是接收到的报文的序列号+1 说明没有接收错报文 如果没有发送方没有接收到这个ACK报文 就会超时重传 也就是在等待2RTT(也就是两个报文往返时间)+一个偏差值后重新发送
窗口控制和快速重发

窗口控制能提高传输效率 他不用等到发送方应答才发送下一条数据
那么如何保证数据的可靠 如果接收方并没有按顺序接受到预想中的数据 例如序列号一般接受到 1 2 3 5中间没有接受到4 直接接受到了5 那么接收方就会一直发送确认序列号为3的ACK报文给发送方 如果发送方连续接受到三次(三次的原因是 就算发送端是按序列号发送的报文 在传输过程中因为是TCP包封装在IP包里 一样可能造成乱序 而乱序一般是造成两次乱序 乱序造成三次冗余的概率是百分之四十 而三次更大概率是丢包了 所以选择了三次 为啥不选择四次五次 主要是因为这样会造成响应太慢 三次是实践经验吧 )相同的ACK报文那么就会重发这个序列号的报文保证数据的准确
拥塞控制
拥塞控制就有慢开始 拥塞避免
慢开始就是一开始值发送一点点数据 这个一点点的定义就是一开始将拥塞窗口设置为1 每接受到一次应答(也就是一个rtt)就2
拥塞避免就是这个拥塞窗口的增长有个上限值 到了这个设定的上限值后就不再
2增长 而是每次+1 如果发生了堵塞(可以看做发生了超时重传) 那么这个上限就会变为一般 拥塞窗口又从1开始 重复慢开始

HTTP

http就是一个请求-响应协议标准
就是在在两方建立好了TCP链接之后 按照HTTP协议标准进行数据传输
作用是对前后端(浏览器和服务端)数据传输做一个规范
默认是在TCP协议的80端口
HTTP是以明文的方式传递信息 结束后就会断开链接
而HTTP在1.0的时候 浏览器每次发起HTTP请求都需要和服务端创建一个新的TCP链接 每次创建和关闭请求都需要耗费时间 如果将connection设置为keep aLive(长链接)就会告诉对方这个请求响应暂时不要关闭
但是keepalive也有缺点 就是长时间保持TCP链接容易导致系统资源被无效占用 所以选了个折中的办法就是完成最后一个HTTP请求之后就设置固定数秒关闭TCP链接

长链接和短链接

主要应用场景就是短链接 用于多并发交流没那么频繁的 客户端连接数较多 淘宝京东那种 长链接就是交流比较频繁 点对点那种 网路游戏 通讯等

HTTPS

就是在HTTP协议的基础上添加了身份验证和传输加密 保证了传输的安全
用的TCP端口就是443

HTTPS工作流程

客户端会先发起一个HTTPS请求给服务端 然后会链接上服务器的443端口
这个HTTPS请求里面包含了自己的加密算法列表(加密算法列表就是告诉服务端自己支持那些加密算法)和秘钥长度

服务端就会通过这个加密算法列表选择一个合适这个客户端的加密算法连同加密组件一起发送给客户端

服务端再向客户端发送一个包含数字证书的报文

然后服务端就会再发送一个完成协商报文告诉客户端SSL第一阶段协商已经完成

第一阶段完成之后客户端会回一个回应报文 告诉服务端之后的内容都用pre_master_secre加密
然后再向服务端发送一个结束报文 这次握手中包含第一次握手至今所有报文的整体校验值,最终协商是否完成取决于服务端能否成功解密。
然后服务端会发送一个和①一样的报文给客户端 让客户端确认
最后服务端发送一个finish报文告诉客户端自己正确解密了
当服务端和客户端的 finish 报文交换完成之后,SSL 连接就算建立完成了,之后就进行和 HTTP 相同的通信过程,唯一不同的是在 HTTP 通信过程中并不是采用明文传输,而是采用对称加密的方式,其中对称密钥已经在 SSL 的建立过程中协商好了

HTTP和HTTPS的区别

HTTP是以明文进行数据传输 而HTTPS会对数据进行TLS加密
HTTPS在三次握手之后还需要进行SSL握手
HTTPS还要申请服务端申请证书 浏览器端需要安装对应的根证书
HTTP端口是80 而HTTPS端口是443
HTTPS的有点就是安全性更高 但是缺点是握手端延时较高就是三次握手之后还需要SSL握手 要数字认证机构申请证书 需要一定费用
HTTPS还需要对传输数据进行解密 占用更多CPU资源

状态码(HTTP返回码)

200 请求成功
204 请求成功但无内容返回
206 范围请求成功

301 永久重定向; 30(2|3|7)临时重定向,语义和实现有略微区别;
304 带if-modified-since 请求首部的条件请求,条件没有满足

400 语法错误
401 需要认证信息
403 拒绝访问
404 找不到资源
412 除if-modified-since 以外的条件请求,条件未满足

500 服务器错误
503 服务器宕机了

IP地址和MAC地址

MAC地址是一个硬件地址 用来定义网络设备的位置 数据链路层负责
IP地址是IP协议提供 为互联网上每一个网络每一个主机分配一个逻辑地址屏蔽物理地址的差异

七层模型

物理层 (比特)实现计算机之间的比特流的透明传输 尽量屏蔽掉传输设备和物理设备之间的物理差异 方便链路层传输 不需要在考虑网络的传输介质是什么 IEE8802.3
数据链路层(帧) 两台主机就是在链路上进行数据交换 将网络层传递下来的网络数据组装成帧 MAC VLAN PPP
网络层(IP层)(包) 选择合适的网间路由和交换节点 将传输层的报文装成分组和包 IP ARP ICMP
传输层(报文) 传递报文和错误恢复 TCP UDP
会话层(SPDU) 建立 管理 终止对话 RPC NFS
表示层(PPDU) 对数据进行翻译加密传输 使通信的应用程序能解释交换数据的含义 就是帮助程序理解交换来的数据的意义 JPEG
应用层(APDU) 定义了用户之间的交互规则 FTP HTTP DNS

四层模型
网络接口层:MAC VLAN

网络层:IP ARP ICMP

传输层:TCP UDP

应用层:HTTP DNS SMTP

搜索baidu,会用到计算机网络中的什么层?每层是干什么的

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:35:43  更:2021-07-27 16:36:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:57:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计