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七层结构概述

在这里插入图片描述

应用层:

应用层是OSI模型的最高层,是用户与网络的界面,所有能和用户交互产生网络流量的程序
因为用户的实际应用多种多样,就要求应用层采用不同的协议来解决不同应用类型的需求
典型的协议有:文件传输协议FTP、电子邮件协议SMTP、万维网HTTP等。
表示层:
主要处理两个通信系统中交换信息的表示方式(语法和语义)
功能一、数据格式变换
不同机器采用的编码和表示方法不同,使用的数据结构不同
功能二、数据加密解密
功能三、数据的压缩和恢复
会话层:
向表示层实体/用户进程提供简历连接,并在连接上有序的传输数据。(进程:正在运行的程序)
这是会话,也是建立同步(SYN)
功能一、建立、管理、终止会话(如网页)
功能二、使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
适用于传输大文件
主要协议:ADSP、ASP
传输层:
负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
数据链路层是点到点的通信,传输层是端到端的通信
点到点(下三层):可以理解为主机到主机之间的通信,一个点指一个硬件地址或IP地址,网络中参与通信的主机通过硬件地址或IP地址标识的;
端到端(上三层):指运行在不同主机内的两个进程之间的通信,一个进程由一个端口号来标识,所以称端到端通信
功能一:靠传输、不可靠传输
功能二:错控制
功能三:量控制(发送方传输速度)
功能四:复分用
主要协议:TCP、UDP
在这里插入图片描述
网络层
主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。
流量控制(发送方传输速度)
拥塞控制(整体速度)
在这里插入图片描述
数据链路层
主要任务是把网络层传下来的数据报组装成帧。数据链路层/链路层的传输单位是帧。
在这里插入图片描述
物理层
主要任务是在物理媒体上实现比特流的透明传输。物理层传输单位是比特。
在这里插入图片描述

TCP/PI五层参考模型(应用层、传输层、网络层、数据链路层、物理层)

1.TCP/IP、OSI、五层参考模型结构图
在这里插入图片描述

2.TCP/IP、OSI的相同点
在这里插入图片描述
3.TCP/IP、OSI的不同点
在这里插入图片描述
4.五层参考模型结构
在这里插入图片描述

5.五层参考模型数据封装与解封装(数据传输)

在这里插入图片描述

TCP

在这里插入图片描述

TCP 的包头有哪些内容,分别有什么用

  1. 首先,源端口和目标端口是不可少的。
  2. 接下来是包的序号。主要是为了解决乱序问题。不编好号怎么知道哪个先来,哪个后到
  3. 确认序号。发出去的包应该有确认,这样能知道对方是否收到,如果没收到就应该重新发送,这个解决的是不丢包的问题
  4. 状态位。SYN 是发起一个链接,ACK 是回复,RST 是重新连接,FIN 是结束连接。因为 TCP
    是面向连接的,因此需要双方维护连接的状态,这些状态位的包会引起双方的状态变更
  5. 窗口大小,TCP 要做流量控制,需要通信双方各声明一个窗口,标识自己当前的处理能力。

三次握手四次挥手

??TCP/IP 协议是传输层的一个面向连接的安全可靠的一个传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接,那么第一次握手是由客户端发起,客户端会向服务端发送一个报文,在报文里面:SYN标志位置为1,表示发起新的连接。当服务端收到这个报文之后就知道客户端要和我建立一个新的连接,于是服务端就向客户端发送一个确认消息包,在这个消息包里面:ACK标志位置为1,表示确认客户端发起的第一次连接请求。以上两次握手之后,对于客户端而言:已经明确了我既能给服务端成功发消息,也能成功收到服务端的响应。但是对于服务端而言:两次握手是不够的,因为到目前为止,服务端只知道一件事,客户端发给我的消息我能收到,但是我响应给客户端的消息,客户端能不能收到我是不知道的。所以,还需要进行第三次握手,第三次握手就是当客户端收到服务端发送的确认响应报文之后,还要继续去给服务端进行回应,也是一个ACK标志位置1的确认消息。通过以上三次连接,不管是客户端还是服务端,都知道我既能给对方发送消息,也能收到对方的响应。那么,这个连接就被安全的建了。
??四次挥手机制也是由客户端去发起,客户端会发送一个报文,在报文里面FIN位标志位置一,当服务端收到这个报文之后,我就知道了客户端想要和我断开连接,但是此时服务端不一定能做好准备,因为当客户端发起断开连接的这个消息的时候,对于服务端而言,他还有可能有未发送完的消息,他还要继续发送,所以呢,此时对于服务端而言,我只能进行一个消息确认,就是我先告诉客户端,我知道你要给我断开连接了,但是我这里边还可能没有做好准备,你需要等我一下,等会儿我会告诉你,于是呢,发完这个消息确认包之后,可能稍过片刻它就会继续发送一个断开连接的一个报文,也是一个FIN位置1的报文也是由服务端发给客户端的啊,这个报文表示服务端已经做好了断开连接的准备,那么当这个报文发给客户端的时候,客户端同样要给服务端继续发送一个消息确认的报文一共有四次,那么,通过这四次的相互沟通和连接,我就知道了,不管是服务端还是客户端都已经做好了断开连接的准备,于是连接就可以被断开啊,这是我对三次握手和四次挥手的一个理解。

为什么TCP连接要建立三次连接?

??为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误,主要目的防止服务端一直等待,浪费资源。

TCP协议如何保证可靠传输

(1)应用数据被分割成 TCP 认为最适合发送的数据块。
(2)TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
(3)校验和:(发送的数据包的二进制相加然后取反)目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
(4)TCP 的接收端会丢弃重复的数据。
(5)流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。(TCP 利用滑动窗口实现流量控制)。
(6)拥塞控制: 当网络拥塞时,减少数据的发送。
(7)停止等待协议 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
(8)超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

TCP四次挥手的时候,先发起方为什么会有一个TIME_WAIT状态,它的作用是什么?

(1)保证最后一次握手报文能到接收方,如果接收方未收到会再次发送FIN+ACK,发起方可以进行超时重传。
(2)TIME_WAIT时间一般是2MSL。2MSL后这次连接的所有报文都会消失,不会影响下一次连接。

为什么客户端在TIME-WAIT状态必须等待2MSL的时间?

??1)为了保证客户端发送的最后一个ACK报文段能够达到服务器。 这个ACK报文段可能丢失,因而使处在LAST-ACK状态的服务器收不到确认。服务器会超时重传FIN+ACK报文段,客户端就能在2MSL时间内收到这个重传的FIN+ACK报文段,接着客户端重传一次确认,重启计时器。最好,客户端和服务器都正常进入到CLOSED状态。如果客户端在TIME-WAIT状态不等待一段时间,而是再发送完ACK报文后立即释放连接,那么就无法收到服务器重传的FIN+ACK报文段,因而也不会再发送一次确认报文。这样,服务器就无法按照正常步骤进入CLOSED状态 。
??2)防止已失效的连接请求报文段出现在本连接中。客户端在发送完最后一个ACK确认报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
4分钟就是2个MSL,每个MSL是2分钟。MSL就是maximium segment lifetime——最长报文寿命

TCP 和 UDP 的区别

  1. TCP 是面向连接的,UDP 是面向无连接的
  2. UDP程序结构较简单
  3. TCP 是面向字节流的,UDP 是基于数据报的
  4. TCP 保证数据正确性,UDP 可能丢包
  5. TCP 保证数据顺序,UDP 不保证

什么是面向连接,什么是面向无连接

??在互通之前,面向连接的协议会先建立连接,如 TCP 有三次握手,而 UDP 不会

UDP

TCP 和 UDP 是传输层的两个协议
UDP 的包头在这里插入图片描述

UDP 的主要应用场景

  1. 需要资源少,网络情况稳定的内网,或者对于丢包不敏感的应用,比如 DHCP 就是基于 UDP 协议的。
  2. 不需要一对一沟通,建立连接,而是可以广播的应用。因为它不面向连接,所以可以做到一对多,承担广播或者多播的协议。
  3. 需要处理速度快,可以容忍丢包,但是即使网络拥塞,也毫不退缩,一往无前的时候
    直播:直播对实时性的要求比较高,宁可丢包,也不要卡顿的,所以很多直播应用都基于 UDP 实现了自己的视频传输协议
    实时游戏:游戏的特点也是实时性比较高,在这种情况下,采用自定义的可靠的 UDP 协议,自定义重传策略,能够把产生的延迟降到最低,减少网络问题对游戏造成的影响
    物联网:一方面,物联网领域中断资源少,很可能知识个很小的嵌入式系统,而维护 TCP 协议的代价太大了;另一方面,物联网对实时性的要求也特别高。比如 Google 旗下的 Nest 简历 Thread Group,推出了物联网通信协议 Thread,就是基于 UDP 协议的
    域名查询、语音通话、视频直播等

HTTPs加密过程?及为什么?

加密过程:HTTPS在传输数据之前需要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL使用了非对称加密,对称加密以及hash等。HTTPS相比于HTTP,虽然提供了安全保证,但是势必会带来一些时间上的损耗,如握手和加密等过程,是否使用HTTPS需要根据具体情况在安全和性能方面做出权衡。
在这里插入图片描述

为什么加密:因为HTTP报文是包裹在TCP报文里面的,服务器端收到报文段后,会解包提取HTTP报文,而HTTP报文是明文,所以若传输过程中被截取,有可能泄露信息,所以需要在HTTP报文进入TCP报文之前,先使用SSL对HTTP报文进行加密。HTTPS协议的本质就是HTTP + SSL(or TLS)。

HTTP和HTTPS的区别?(长连接和短连接)

https:全称Hyper Text Transfer Protocol Secure,相比http(超文本传输协议),多了一个secure,这一个secure是怎么来的呢?这是由TLS(SSL)提供的,可以简单理解为 HTTPS=HTTP+SSL。
①HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
②HTTP 是相对不安全的,而 HTTPS 是相对安全的
③HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
④在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
⑤HTTP 无需加密,而 HTTPS 对传输的数据进行加密
⑥HTTP 无需证书,而 HTTPS 需要认证证书

长连接和短连接

??在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:
Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

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

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