网络通信基础-02

什么是ARP协议

      ARP(Address Resolution Protocol,地址解析协议)是一种网络协议,用于将网络层的IP地址解析为物理层的MAC地址。在计算机网络中,通信的两个设备之间需要知道对方的MAC地址才能进行数据传输,而IP地址是网络层的地址,不能直接用于物理层的数据传输。ARP协议通过发送ARP请求和ARP响应的方式,将目标IP地址映射到对应的MAC地址,以实现设备之间的通信。

具体来说,当一个设备想要与另一个设备通信时,它首先检查自己的ARP缓存表,看是否已经有目标IP地址对应的MAC地址。如果没有,发送一个ARP请求广播包,请求与目标IP地址对应的设备回复自己的MAC地址。收到该ARP请求的设备根据自己的IP地址检查是否与请求中的目标IP地址匹配,若匹配则发送一个ARP响应包,包含自己的MAC地址。发送ARP请求的设备收到ARP响应后,将目标IP地址与对应的MAC地址存入ARP缓存表,并使用该MAC地址进行数据传输。

ARP协议能够动态地映射IP地址和MAC地址,使得网络设备可以通过IP地址进行通信,而不需要了解对方的物理地址。它是一种基础的网络协议,在局域网中被广泛使用。

什么是NAT (Network Address Translation, 网络地址转换)

       NAT (Network Address Translation,网络地址转换) 是一种在计算机网络中常用的技术,用于将私有网络的IP地址转换为公共网络的IP地址,以实现私有网络与公共网络之间的通信。NAT的作用是解决IPv4地址空间有限的问题。

在一个私有网络中,使用私有IP地址可以有效地管理和分配地址,但这些私有IP地址在公共网络中是无法通信的。NAT通过在边界设备(通常是路由器或防火墙)上维护一个转换表,将私有IP地址映射到公共IP地址,使得私有网络中的主机可以通过公共网络与外部主机通信。

NAT的主要功能有:

  1. IP地址转换:将私有IP地址转换为公共IP地址,使私有网络与公共网络之间可以互通。
  2. 端口转换:通过使用不同的端口号,将多个私有IP地址映射到一个公共IP地址上。这样可以实现多个主机共享一个公共IP地址。
  3. 防火墙功能:NAT可以过滤和控制通过转换设备的数据流量,提供一定的网络安全性。

NAT是一种常见的网络技术,广泛应用于家庭网络、企业网络和互联网服务提供商等场景中。它的出现解决了IPv4地址不足的问题,并提高了网络的安全性和灵活性。

TCP的三次握手

  1. 第一次握手(SYN):

    • 客户端发送一个SYN报文给服务器,请求建立连接。SYN标志位被置为1,初始序列号(ISN)被随机选择。
    • 客户端进入SYN_SENT状态,等待服务器的确认。
  2. 第二次握手(SYN+ACK):

    • 服务器收到SYN报文后,发送一个SYN+ACK报文给客户端。SYN和ACK标志位均被置为1,确认号(ACK)被设置为客户端的初始序列号加1,服务器也选择一个随机的初始序列号。
    • 服务器进入SYN_RCVD状态。
  3. 第三次握手(ACK):

    • 客户端收到服务器的SYN+ACK报文后,发送一个ACK报文给服务器。ACK标志位被置为1,确认号(ACK)被设置为服务器的初始序列号加1。
    • 服务器收到ACK报文后,进入ESTABLISHED状态,客户端也进入ESTABLISHED状态,此时TCP连接建立成功。

三次握手的目的是确保客户端和服务器之间的双向通信可以正常进行。在握手过程中,客户端和服务器都发送了一个初始序列号,以确保后续的数据传输可以被准确识别和排序。SYN+ACK报文的发送和ACK报文的确认可以验证双方的连接请求是否被正常接收。

三次握手所涉及的步骤和报文交换确保了可靠的连接建立,同时也提供了一定的安全性。通过握手过程,双方可以确认彼此的有效性,并建立起一个可靠的通信信道。如果在握手过程中发生错误或丢包,客户端或服务器会重新发送相应的报文,直到连接建立成功为止。

TCP的四次挥手

      当TCP连接建立之后,在数据传输完毕后,需要进行连接的关闭,这个过程称为四次挥手。四次挥手的目的是确保双方都没有数据需要传输,才能安全地关闭连接。下面是四次挥手的详细解释与说明:

  1. 第一次挥手(主动关闭方发送FIN): 主动关闭方(一般为客户端)发送一个FIN(finish)报文段到被动关闭方(一般为服务器),告诉对方自己已经发送完了所有的数据。这时,主动关闭方进入FIN_WAIT_1状态。

  2. 第二次挥手(被动关闭方发送ACK): 被动关闭方接收到FIN报文段后,会发送一个ACK(acknowledge)报文段作为确认,告诉主动关闭方自己已经收到了关闭请求。这时,被动关闭方进入CLOSE_WAIT状态,而主动关闭方进入FIN_WAIT_2状态。

  3. 第三次挥手(被动关闭方发送FIN): 被动关闭方(一般为服务器)也需要发送一个FIN报文段给主动关闭方(一般为客户端),告诉对方自己也没有数据需要传输了。这时,被动关闭方进入LAST_ACK状态。

  4. 第四次挥手(主动关闭方发送ACK): 主动关闭方接收到被动关闭方发送的FIN报文段后,发送一个ACK报文段作为确认。这时,被动关闭方进入TIME_WAIT状态,等待2倍的MSL(最长报文段寿命)时间后,进入CLOSED状态。而主动关闭方在收到ACK报文段后,也进入CLOSED状态。

注意事项:

  • 主动关闭方和被动关闭方的角色并非固定,根据具体的情况可互换。
  • 为了防止已经关闭的连接上出现延迟的报文段,主动关闭方需要等待一段时间(2倍MSL)才能彻底关闭连接。
  • MSL是最长报文段寿命,是指网络上报文段的最长寿命,一般为2分钟。主要是为了保证网络中的所有报文段在2倍的寿命时间内都能被丢弃,防止旧的报文段出现在新建立的连接中。

为什么不能把服务器发送的ACKFIN合并起来,变成三次挥手(CLOSE_WAIT状态意义是什

么)

       将服务器发送的ACK和FIN合并起来,变成三次挥手是不可行的,因为ACK和FIN是不同的控制标志位,有着不同的含义和作用。

在TCP连接的关闭过程中,客户端和服务器之间需要进行三次挥手来确保数据的可靠传输和连接的正常关闭。

三次挥手的过程如下:

  1. 客户端发送FIN包,告知服务器已经发送完所有数据。
  2. 服务器收到FIN包后,发送一个ACK包,确认接收到了客户端的FIN包。
  3. 服务器发送FIN包,告知客户端已经发送完所有数据。
  4. 客户端收到服务器的FIN包后,发送一个ACK包,确认接收到了服务器的FIN包。

通过三次挥手的过程,客户端和服务器可以互相确认对方已经没有数据需要发送,并且双方都可以安全地关闭连接。

而CLOSE_WAIT状态是在TCP连接关闭的过程中,服务器收到客户端的FIN包后进入的状态。在CLOSE_WAIT状态下,服务器已经发送了FIN包,但是仍然可以接收到客户端发送的数据。服务器会等待客户端发送完所有数据,并发送ACK包确认接收到客户端的数据,然后才会进入最后的ACK状态来结束连接。所以CLOSE_WAIT状态的意义是告诉服务器还有数据没有接收完,需要等待客户端发送完所有数据后再关闭连接。

客户端TIME_WAIT状态的意义是什么

      TIME_WAIT状态是指客户端在关闭一个连接后等待一段时间,以确保远程服务器收到了TCP的连接关闭请求,并且有足够的时间来处理可能尚未完全传输的数据。在TIME_WAIT状态下,客户端不能再发送任何数据,但仍然可以接收来自服务器的数据。TIME_WAIT状态的意义包括以下几点:

  1. 确保连接的双方都能正常关闭连接:在TCP协议中,双方关闭连接需要发送相应的FIN(结束)报文,以通知对方关闭连接。如果客户端在发送完FIN后立即关闭连接,而服务器还未来得及接收完数据,就可能导致服务器丢失一部分数据。因此,客户端在TIME_WAIT状态中等待一段时间,确保服务器有足够的时间接收完数据,从而保证连接的正常关闭。

  2. 避免连接复用:在TIME_WAIT状态下,客户端会阻塞相同源IP和端口的新连接,以防止新连接被误认为是之前关闭连接的重复连接。如果不进行等待,新连接可能会被服务器误认为是之前关闭连接的残留连接,从而导致数据传输错误。

  3. 支持TCP可靠性:TCP协议保证了可靠的传输,它通过各种机制来确保数据的完整性和可靠性。TIME_WAIT状态给予了TCP协议足够的时间来检测和处理可能尚未完全传输的数据,以确保数据的正确性。

总结 

   

ARP(Address Resolution Protocol)是网络层的一个协议,用于将IP地址转换为MAC地址,以实现在局域网中的通信。

NAT(Network Address Translation)是一种网络协议,用于将私有IP地址转换为公共IP地址,以实现多个内部设备共享一个公网IP地址的功能。

TCP(Transmission Control Protocol)是一种传输层的协议,它在网络中提供可靠的、面向连接的数据传输服务。TCP通过建立连接、传输数据、重传丢失数据、拥塞控制等机制,确保数据的可靠性和完整性。

  • ARP协议用于将IP地址转换为MAC地址,在局域网中实现通信。
  • NAT协议用于将私有IP地址转换为公共IP地址,实现多个内部设备共享一个公网IP地址的功能。
  • TCP协议为传输层协议,提供可靠的、面向连接的数据传输服务,通过连接建立、数据传输、重传、拥塞控制等机制确保数据的可靠性和完整性。

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OS中断机制-外部中断触发

中断函数都定义在中断向量表中,外部中断通过中断跳转指令触发中断向量表中的中断服务函数,中断指令可以理解为由某个中断寄存器的状态切换触发的汇编指令,这个汇编指令就是中断跳转指令外部中断通过在初始化的时候使能对应的中断服务函数如何判断外部中断被触发的条件根据Da…

关于ONLYOFFICE8.1版本桌面编辑器测评——AI时代的领跑者

关于作者:个人主页 目录 一.产品介绍 1.关于ONLYOFFICE 2.关于产品的多元化功能 二.关于产品体验方式 1.关于套件的使用网页版登录 2.关于ONLYOFFICE本地版 三.关于产品界面设计 四.关于产品文字处理器(Document Editor) 1.电子表格&a…

昇思25天学习打卡营第6天 | 函数式自动微分

神经网络的训练主要使用反向传播算法, 模型预测值(logits)与正确标签(label)送入损失函数(loss function)获得loss, 然后进行反向传播计算,求得梯度(gradie…

数据中心 250KW 水冷负载组概述

该负载专为数据中心冷水机组调试和测试应用而设计, 是一款紧凑的便携式产品,具有无限功率和水流控制功能,可实现精确的温升设置与施加的功率。鹦鹉螺是完全可联网的,可以从远程站控制单个或多个单元。 使用带有触摸屏 HMI 的 PLC,…

豆包大语言模型API调用错误码一览表

本文介绍了您可能从 API 和官方 SDK 中看到的错误代码。 http code说明 400 原因:错误的请求,例如缺少必要参数,或者参数不符合规范等 解决方法:检查请求后重试 401 原因:认证错误,代表服务无法对请求进…

FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流

《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,虽然MediaMTX使用很简单,可是不能满足复杂的业务需求,故而实际应用中需要引入专业的流媒体服务器。 nginx-rtmp是开…

Navicat连接Oracle出现Oracle library is not loaded的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 使用Navicat链接Oracle的时候,出现如下提示:Oracle library is not loaded. 截图如下所示: 2. 原理分析 通常是由于缺少必需的 Oracle 客户端库或环境变量未正确配置所致 还有一种情况是 32位与64位的不匹配:Navica…

基于Langchain-chatchat搭建本地智能知识问答系统

基于Langchain-chatchat搭建本地智能 搭建本地智能知识问答系统:基于Langchain-chatchat的实践指南引言项目概述环境安装Anacondapip 项目安装步骤大语言模型(LLM)的重要性结语 搭建本地智能知识问答系统:基于Langchain-chatchat的…

记错医院预约的日期,选择加号还是回去?

记错了去医院的日期,起了个大早,用了 90 分钟才到医院,取号时提示没有预约的号,才发现记错时间了。这个时候是选择找医生加号还是直接回去呢?如果是你怎么选择? 如果选择找医生加号,号会排到最后…

STM32 ---- F1系列内核和芯片系统架构 || 存储器映像 || 寄存器映射

一,存储器映像 STM32 寻址范围:2^32 4 * 2^10 *2^10 K 4 * 2^10 M 4G 地址所访问的存储单元是按字节编址的。 0x0000 0000 ~ 0xFFFF FFFF 什么是存储器映射? 存储器本身不具有地址信息,给存储器分配地址的…

STM32单片机WDG看门狗详解

文章目录 1. WDG简介 2. IWDG框图 3. IWDG键寄存器 4. IWDG超时时间 5. WWDG框图 6. WWDG工作特性 7. WWDG超时时间 8. IWDG和WWDG对比 9. 代码示例 1. WDG简介 WDG(Watchdog)看门狗 看门狗可以监控程序的运行状态,当程序因为设计…

2024年6月24日 语法纠正

修改前的 So happy to see you again in our English Corner. Today, we have our old friend Fannie come with us and Ms. Liang is also here. Because today we use this new meeting material at first time, I arbitrarily assgin the roles according to everyone’s r…

Docker Compose--安装Nginx--方法/实例

原文网址:Docker Compose--安装Nginx--方法/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker Compose如何安装Nginx。 目录结构 ├── config │ ├── cert │ │ ├── xxx_bundle.pem │ │ └── xxx.key │ ├── conf.d │ …

【ONLYOFFICE震撼8.1】ONLYOFFICE8.1版本桌面编辑器测评

随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找一款具有强大功能和便捷使用的办公软件。在这个时候,ONLYOFFICE 8.1应运而生,成为了许多用户的新选择。ONLYOFFICE 8.1是一种办公套件软件,它提供了文档处理、电子表格…

jupyter中如何看plt.plot的局部细节

在Jupyter中使用matplotlib时,如果你想要放大图表的某一部分,可以使用matplotlib的交互式方式查看局部细节。 %matplotlib notebook # 在Jupyter中使用交互式后端 import matplotlib.pyplot as plt import numpy as np# 生成数据 x np.linspace(0, 10…

TiDB 资源管控的对撞测试以及最佳实践架构

作者: GreenGuan 原文来源: https://tidb.net/blog/bc405c21 引言 TiDB 是一个存算分离的架构,资源管控对这种分离的架构来说实现确实有非常大的难度,TiDB 从 7.1 版本开始引入资源管控的概念,在社区也有不少伙伴测…

STM32实现独立看门狗和窗口看门狗

文章目录 1. WDG 2. IWDG独立看门狗 2.1 main.c 3. WWDG窗口看门狗 3.1 main.c 1. WDG 对于WDG看门狗的详细解析可以看下面这篇文章: STM32单片机WDG看门狗详解-CSDN博客 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原…

论文速递 | Management Science 4月文章合集(下)

编者按 在本系列文章中,我们梳理了运筹学顶刊Management Science在2024年4月份发布有关OR/OM以及相关应用的13篇文章的基本信息,旨在帮助读者快速洞察领域新动态。本文为第二部分(2/2)。 推荐文章1 ● 题目:Social Le…

模拟面试之外卖点单系统(高频面试题目mark)

今天跟大家分享一个大家简历中常见的项目-《外卖点单系统》,这是一个很经典的项目,有很多可以考察的知识点和技能点,但大多数同学都是学期项目,没有实际落地,对面试问题准备不充分,回答时抓不到重点&#x…

SpringBoot中使用MQTT实现消息的订阅和发布

SpringBoot中使用MQTT实现消息的订阅和发布 背景 java框架SpringBoot通过mQTT通信 控制物联网设备 还是直接上代码 第一步依赖&#xff1a; <!--mqtt相关依赖--><dependency><groupId>org.springframework.integration</groupId><artifactId>s…