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与UDP区别

  1. TCP面向连接,UDP面向无连接

  2. TCP面向报文,UDP面向字节流

  3. TCP是一对一的两点服务,即一条连接只有两个端点

    UDP支持一对一,一对多,多对多的交互通信

  4. TCP提供可靠传输服务(数据顺序、正确性),UDP传输不可靠

  5. TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。

    UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

  6. TCP协议对系统资源要求多(头部开销大),UDP协议要求少

TCP三次握手

首先服务端和客户端都处于close状态,先是服务端主动监听某个端口,处于listen状态。

客户端会随机初始化一个序列号,将此序列号置于TCP首部的“序列号”字段中,同时把SYN标志位置为1,表示SYN报文。接着把第一个SYN报文发送到服务端,表示向服务端发起连接。

服务端收到SYN报文后也会随机初始化一个序列号,将此序列置于TCP首部的“序列号”字段中,其次把TCP首部的’‘确认应答号”字段填入“SYN报文序列号+1“,接着把SYN和ACK标志位置为1.最后把该报文发给客户端。

客户端受到服务端报文后,要回应最后一个应答报文,首先将应答报文TCP首部ACK标志位置为1,其次“确认应答号”填入“服务端报文序列号+1”,最后把报文发送给服务端,之后客户端处于已建立连接状态,服务端收到报文后也会进入已建立连接状态、

三次握手的原因

三次握手才可以阻止重复历史连接的初始化(主要原因)
三次握手才可以同步双方的初始序列号
三次握手才可以避免资源浪费

不使用「两次握手」和「四次握手」的原因:

「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

TCP四次挥手

客户端打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,即FIN报文

服务端收到该报文后,就向客户端发送ACK应答报文进入等待状态,客户端收到ACK应答报文后也进入等待状态

等待服务端处理完数据后,也向客户端发送FIN报文

客户端收到服务端的FIN报文后,回一个ACK应答报文,进入Time_Wait状态

服务端收到ACK报文后,就进入关闭状态了,服务端完成了连接的关闭

客户端在经过2MSL时间后,也自动进入关闭状态,完成了连接的关闭

为什么需要 TIME_WAIT 状态?

主动发起关闭连接」的一方,才会有 TIME-WAIT 状态。

需要 TIME-WAIT 状态,主要是两个原因:

  • 防止旧连接的数据包
  • 保证连接正确关闭

MSL

Maximum Segment Lifetime,报文最大生存时间

HTTP是什么?

超文本传输协议

GET 和 POST 的区别?

Get 方法的含义是请求从服务器获取资源

POST 方法则是相反操作,它向 URI 指定的资源提交数据,数据就放在报文的 body 里

操作方式数据位置明文密文数据安全长度限制应用场景
GETHTTP包头明文不安全长度较小查询数据
POSTHTTP正文可明可密安全支持较大数据传输修改数据

HTTP 与 HTTPS 有哪些区别?

  1. HTTP 是超文本传输协议,信息是明文传输,存在安全?险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
  2. HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  3. HTTP 的端口号是 80,HTTPS 的端口号是 443。
  4. HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

HTTP/1.1 相比 HTTP/1.0

使用 TCP ?连接的方式改善了 HTTP/1.0 短连接造成的性能开销。

支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间

HTTP/2.0与HTTP/1.1区别?

  1. HTTP/2.0采用二进制格式而非文本格式

  2. HTTP/2.0是完全多路复用,是可以在一个连接中并发多个请求或回应,而不用按照顺序一一对应,只需要一个连接就可以实现并行

  3. HTTP/2.0使用报头压缩,降低了开销

  4. 服务不再是被动地响应,也可以主动向客户端发送消息。

DNS协议

域名解析,能够使用户更方便的访问互联DNS协议
域名解析,能够使用户更方便的访问互联网,而不用记住能够被机器直接读取的ip地址

DNS协议运行在UDP协议之上,使用端口号53网,而不用记住能够被机器直接读取的ip地址

DNS协议运行在UDP协议之上,使用端口号53

HTTP状态码

1xx:信息,服务器收到请求,需要请求者继续执行操作

2xx:成功,操作被成功接收并处理

200 -- 表示从客户端发来的请求在服务端被正常处理了

204 -- 表示服务端接收的请求已成功处理,但不返回内容

206 -- 表示服务端只成功处理了部分GET请求

3xx:重定向,需要进一步的操作以完成请求

301 -- 表示永久性重定向

302 -- 临时性重定向

4xx:客户端错误,请求包含语法错误或无法完成请求

400 -- 客户端请求的语法错误,服务器无法理解

403 -- 对请求资源的访问被服务器拒绝了

404 -- 服务器无法根据客户端的请求获取资源

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

500 -- 服务器内部错误,无法完成请求

503 -- 表明服务器暂时处于超负载或进行停机维护,现在无法处理请求

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:34:02  更:2021-08-04 11:36:09 
 
开发: 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:08:27-

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