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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络基本知识 -> 正文阅读

[网络协议]计算机网络基本知识

OSI七层模型

物理层 数据链路层 网络层 运输层 会话层 表示层 应用层

五层协议结构

  • 物理层 :利用物理媒体以比特形式传送数据
  • 数据链路层 :将网络层交下来的 IP 数据报组装成帧,并在两个相邻结点间的链路上传送
  • 网络层 :把运输层产生的报文段或用户数据报封装成分组或包进行传送
  • 运输层 :运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务
  • 应用层 :应用层协议定义的是应用进程间通信和交互的规则

UDP的主要特点

UDP是无连接的协议,首部开小比TCP小20字节,面向报文的,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
UDP没有拥塞控制。可以一对一、一对多、多对一、多对多。
UDP 使用尽最大努力交付,即不保证可靠交付,主机不需要维持复杂的连接状态表

TCP的主要特点

TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接
每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)
TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达
TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据
面向字节流。TCP 中的“流”指的是流入到进程或从进程流出的字节序列

简述三报文握手建立 TCP 连接

  1. 服务器进程先创建传输控制块 TCB,并处于监听状态,等待客户端的连接请求;此时状态为LISTEN
  2. 客户端创建传输控制块 TCB,并向服务器发出连接请求报文段SYN,此时状态为SYN-SEND
  3. 服务器收到连接请求报文段后,如同意建立连接,则发送确认报文段ACK,此时状态为SYN-RECV,并且客户端链接进入半链接队列,系统参数/proc/sys/net/ipv4/tcp_max_syn_backlog
  4. 客户端进程收到服务器的确认报文段后,立即回复确认报文段ACK,并进入已建立连接状态,此时状态为ESTABLISHED
  5. 服务器收到确认报文段之后,也进入已建立连接状态,此时状态为ESTABLISHED,并且客户端链接进入全连接队列,系统参数/proc/sys/net/core/somaxconn

建立 TCP 连接为什么最后还要发送确认

这主要是为了防止已失效的连接请求报文段突然又传到了 TCP 服务器,避免产生错误 简述为了保证数据的正确性和顺序

简述 TCP 连接的释放

  1. 客户端应用进程发出连接释放报文段,并停止再发送数据,进入 FIN-WAIT-1(终止等待1)状态,等待服务器确认
  2. 服务器收到连接释放报文段后即发出确认,进入 CLOSE-WAIT(关闭等待)状态,服务器若发送数据,客户端扔要接收
  3. 客户端收到来自服务器的确认后,进入 FIN-WAIT-2(终止等待2)状态,等待服务器发出连接释放报文段
  4. 服务器没有要发送的数据,发出连接释放报文段,进入 LAST-ACK(最后确认)状态,等待客户端确认
  5. 客户端收到连接释放报文段后,发出确认,进入 TIME-WAIT(时间等待)状态,经过时间等待计时器设置的时间 2MSL 后,进入
    CLOSED(关闭) 状态 服务器收到客户端报文段后,进入 CLOSED 状态

TIME-WAIT 是什么,为什么必须等待 2MLS

TIME-WAIT 是一种 TCP 状态。等待 2MLS 可以保证客户端最后一个报文段能够到达服务器,如果未到达,服务器则会超时重传连接释放报文段,使得客户端、服务器都可以正常进入到 CLOSE(关闭) 状态

TCP 粘包问题

  • 粘包问题

在 TCP 这种字节流协议上做应用层分包是网络编程的基本需求。分包指的是在发生一个消息(message)或一帧(frame)数据时,通过一定的处理,让接收方能从字节流中识别并截取(还原)出一个个消息。因此,“粘包问题”是个伪命题

  • 长连接分包

消息长度固定
使用特殊的字符或字符串作为消息的边界,例如 HTTP 协议的 headers 以“\r\n”为字段的分隔符
在每条消息的头部加一个长度字段,这恐怕是最常见的做法
利用消息本身的格式来分包,例如 XML 格式的消息中 … 的配对,或者 JSON 格式中的 { … } 的配对。解析这种消息格式通常会用到状态机(state machine)

UDP、TCP 区别,适用场景

对比UDPTCP
连接性无连接面向连接
可靠性不可靠可靠
报文面向报文-数据报模式面向字节流-流模式
双工性一对一、一对多、多对一、多对多全双工
流量控制有(滑动窗口)
拥塞控制有(慢开始、拥塞避免、快重传、快恢复)
传输速度
资源要求较少较多
首部开销8字节20字节
数据顺序不保证保证
  • List item

UDP 适用场景

面向数据报方式、网络数据大多为短消息、拥有大量 Client、对数据安全性无特殊要求、网络负担非常重,但对响应速度要求高

TCP 适用场景

  • 文件传输(FTP HTTP 对数据准确性要求较高,速度可以相对慢)
  • 发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用)
  • 远程登录(telnet SSH 对数据准确性有要求,有连接的概念)

建立 socket 需要哪些步骤

  • 创建 socket
  • 绑定 socket 到指定地址和端口
  • 开始监听连接
  • 读取客户端输入
  • 关闭 socket

DNS 主要作用是什么

  • 计算机既可以被赋予 IP 地址,也可以被赋予主机名和域名。用户通常使用主机名或域名来访问对方的计算机,而不是直接通过 IP 地址访问
  • 但要让计算机去理解名称,相对而言就变得困难,因为计算机更擅长处理一长串数字 为了解决上述问题,DNS
    服务应运而生。DNS协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务

HTTP 报文组成

HTTP 报文是由简单字符串组成,HTTP 报文都是纯文本,不是二进制代码,可以很方便地对其进行读写
在这里插入图片描述
从客户端发往服务器的 HTTP 报文称为请求报文(request message)。从服务器发往客户端的报文称为响应报文(response message)。HTTP 请求和响应报文的格式很类似

HTTP 报文组成部分

  • 起始行:报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况
  • 首部字段:起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值
  • 主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据

状态码

  • 100:信息提示
  • 200:成功
  • 300:重定向
  • 400:客户端错误
  • 500:服务端错误

HTTP方法

GET 、POST、 HEAD、 PUT、 TARCE、 OPTIONS、 DELETE
(POST PUT包含主体)

post 与 get 的区别

在这里插入图片描述
HTTP 优缺点

  • 基于应用级的接口,使用方便
  • 传输速度慢,数据包大;如实现实时交互,服务器性能压力大;数据传输安全性差

HTTPS 通信原理

在这里插入图片描述

HTTP2.0协议

多路复用、客户端拉拽/服务器推送、流量控制、WebSocket

WebSocket

WebSocket 是一种通信协议,定义了一个全双工通信信道,仅通过 Web 上的一个 Socket 即可进行通信
推送功能:支持由服务器向客户端推送数据的推送功能
减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态
在这里插入图片描述
IPv6 与 IPv4 有什么变化

更大的地址空间、扩展的地址层次结构、灵活的首部格式、改进的选项、允许协议继续扩充、支持资源的预分配

什么是心跳机制

心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制

什么是长连接

长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包

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

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