网络通信原理与IP地址的分配原理,网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

      最后更新:2022-07-23 01:14:05 手机定位技术交流文章

      互联网协议入门

      介绍: https://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

      在这里插入图片描述
      每个层是通信的,每个层都有相应的通信格式,而下层格式是基于上层格式的,最终通过家庭的网格进行通信。

      互联网通讯的整个过程

      参考: https://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html
      事实上,每个层的信息都被嵌入于通信领域中,一起发送过去,然后接收,单独分析,并建立通信。

      互联网是如何工作的

      参考: https://developer.mozilla.org/zh-CN/docs/Learn/Common_questions/How_does_the_Internet_work

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      互联网如何运作?

      参考: https://ww.Cloudflare.com/zh-cn/learning/network-layer/how-does-the-internet-work/
      我们以本文为例。为了让你看到这篇文章,它通过互联网以成千上万的包的形式传输,一次一个片段。这些包通过路由器和开关通过电缆和无线电波,从我们的网站服务器到您的计算机或设备的传输。你的电脑或智能手机接收这些数据包,然后把它们传递到设备的浏览器中,然后浏览器对这些包中的数据进行解释,显示您正在阅读的文本。

      此过程涉及的具体步骤有:

      DNS查询:当您的浏览器开始加载此网页时,首先可以进行 DNS查询以找到Cloudflare网站的IP地址。
      TCP握手:浏览器打开该IP地址的连接。
      TLS握手:浏览器还设置CloudflareWeb服务器与您的设备之间的加密,防止攻击者读取两个端点之间传输的数据包。
      HTTP请求:浏览器请求在这个页面上显示的内容。
      HTTP响应: Cloudflare服务器以HTML、CSS和JavaScript代码的形式传输内容,然后分解成一系列的包。一旦您的设备收到了数据包,并确认所有数据包已经收到,浏览器将软件包中包含的HTML、CSS和JavaScript代码解释,本文介绍了互联网的工作原理.整个过程只需要一两个秒钟。

      最后的协议在底层上叠加,然后通过底层的物理信号传输和分析。

      应用层传输层网络层

      网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,一般编程人员接触最多的就是应用层和运输层,再往下的就是所谓的媒体层了,不是我们研究的对象。

      下面是应用层、运输层,网络层、链路层通信协议概图。我们经常接触到的一般是:

      http协议:应用层协议, http协议基于tcp连接,主要解决方法是如何包装协议

      tcp协议:传输层协议,通常也称为tcp/ip协议,主要针对数据在网络上传输的方式

      UDP协议:传输层协议,用户数据报告协议,不可靠的协议,仅负责将应用程序层协议的数据转移到IP层数据报告中,不管数据是否到达。

      ip协议:网络层。

      接口连接:长接口

      http连接:短连接

      实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。
      在这里插入图片描述
      TCP协议以二进制数据流的形式解决传输层

      RPC架构是基于插座的通信,长连接,数据协议是tcp

      网络上的两个程序通过双向通信连接实现数据交换。这个连接的末端叫做插座。Socket的原意是“洞”或“界面”。作为BSD UNIX的进程通信机制,取后一种意思。它也常被称为“密码”,描述IP地址和端口,它是一系列的句子,它可以用于实现不同虚拟机或不同计算机之间的通信。互联网上的主机通常运行几个服务软件,同时提供几种服务。每个服务都会打开一个插座,并关在港口,不同的港口与不同的服务相符。索克作为其英文原意,像一个多孔插座。一个主机就像一个满是插座的房间,每个插头都有一个数字,有些插头提供220V交流,有些提供110V交流,一些公司提供电视节目。客户端软件将插头插入一个不同的编号插头,你可以得到不同的服务。

      # TCP优势

      RPC:远程过程调用(分布式、微服务方法调用)

      HTTP:无状态,每次请求都要发送一个request,服务器响应之后就断掉(http header中的keep-alive指的是tcp)

      TCP:面向连接,三向握手确保可靠的通信

      UDP:非连接oriented,不可靠,快速(可以手动验证数据接收和发送,IM系统使用更多,QQ)

      接口:TCP协议的接口实现,面向传输层进行网络编程, socket并不是一种协议,TCP/IP协议在程序员一级的包装和应用。事实上,它是一个电话接口,程序员很容易使用TCP/IP协议堆栈。程序员通过一个插座使用tcp/ip协议。但是插座不一定使用tcp/ip协议,在设计时的插座编程接口,希望它也能适应其他网络协议。

      http接口是较少的接口和较少的系统与系统之间的相互作用,该方案是信息孤岛早期普遍使用的通信方法,其优点是简单、直接、易于开发。使用现有的http协议进行传输。但是如果这是一个大的网站,有许多内部子系统和许多接口,RPC框架的好处是显而易见的,首先(在TCP协议中)是长链接,你不必每次像http那样交流三次握手。减少了网络开销
      TCP 三次握手:握手过程中并不传输数据,在握手后服务器与客户端才开始传输数据,理想状态下,TCP 连接一旦建立,在通讯双方中的任何一方主动断开连接之前 TCP 连接会一直保持下去。

      Socket 定义

      索克是一个TCP/IP协议包,它为TCP或UDP的特定接口实现,提供一种在传输层的网络编程方法,索克只是一个接口而不是一个协议,通过接口我们可以使用TCP/IP协议,除了 TCP,UDP协议也可以用于传输数据。

      创建 Socket 连接的时候,可以指定传输层协议,可以是 TCP 或者 UDP,当用 TCP 连接,该Socket就是个TCP连接,反之。

      Socket 原理

      至少需要一对插座的插座连接被分为 clientSocket 和 serverSocket 连接被分成三个步骤:

      (1)服务器监视:服务器不定位特定客户端的接口,但目前处于监视状态;

      (二)客户端请求:客户端的接口描述它想连接的服务器的接口,提供地址和端口号码,然后向服务器的接口提交连接请求;

      (3)连接确认:当服务器端口收到客户端端口的请求时,响应客户端接口请求并创建一个新的线程,将服务器端接口的描述发送给客户端。一旦客户确认了这个描述,就正式建立连接。服务器插座继续处于监控状态,继续从其他客户端接口接收连接请求。

      Socket为长连接:通常情况下Socket 连接就是 TCP 连接,一旦接口连接建立,通信各方开始共享数据内容。直到双方断开连接。在实际应用中,由于网络节点过多,在传输过程中,会被节点断开连接,因此,通过高速查询网络,节点是主动的。

      在很多情况下,服务器必须主动向客户端发送数据,以保持客户端与服务器在实时同步。

      如果两个是插座连接,则数据可以直接从服务器发送到客户端。

      如果两者都是HTTP连接,服务器需要等待客户端发送请求,然后再向客户端发送数据。

      因此,客户端在一定时间向服务器发送请求,不仅要保持在线,而且要问服务器是否有新的数据,如果有,将数据传递给客户端。

      一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件:

      客户,服务的呼叫者。

      服务器, 真正的服务提供者.

      客户端根存储服务器的地址消息,将客户端请求参数包入网络消息中,并通过网络远程发送给服务器。

      服务端根接收客户端发送的消息,解封消息,并调用本地方法。

      TCP/HTTP及插座

      TCP/HTTP及插座
      首先,我们回顾了计算机网络的五个(七)层协议:物理层、数据链层、网络层、传输层(消息层、表示层)和应用层。

      TCP是一种传输层协议,主要解决数据如何在网络中传输的问题
      HTTP是一个应用程序层协议,主要讨论如何包装数据(文本信息),这是一个基于tcp协议的应用程序。TCP协议以二进制数据流的形式解决传输层,但高级应用开发是非常不友好的,因此,面向应用程序的层的开发也产生了HTTP协议。
      而socket 它为TCP或UDP的特定接口实现,提供了在传输层进行网络编程的方法。

      名词 特点
      RPC远程过程调用(分布式、微服务调用)
      HTTP 无状态,每次请求都要发送一个request,服务器响应之后就断掉(http header中的keep-alive指的是tcp)
      TCP连接导向的,三手通信保证可靠性
      UDP不面向连接,不可靠,快速(可以手动验证数据接收和交付,使用更多IM系统,QQ)
      接口实现端口TCP协议,用于传输层网络编程

      而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。

      通过索克特,我们可以使用TCP/IP协议。

      事实上,插座不一定与TCP/IP协议连接。

      在设计时的插座编程接口,希望它也能适应其他网络协议。

      因此,索克的外观只使得程序员更容易使用TCP/IP协议堆栈,这是TCP/IP协议的抽象。

      从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。
      “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容

      4.TCP和UDP之间的区别

      1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;

      UDP不是面向连接的,UDP在发送数据之前不能与另一方建立连接,不能向接收的数据发送确认信号,发送者不知道数据是否会被正确接收,当然也无法取得数据,因此UDP是一个不连接和不可靠的数据传输协议。

      由于1中提到的特性,UDP的成本低数据传输率较高,因为不需要确认数据的接收,所以UDP的实时性更好。

      知道TCP和UDP之间的区别,并不难理解为什么基于TCP的MSN比基于UDP的QQ传输文件慢,但不能说QQ通信是不安全的。

      因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,

      即使如此,UDP也能实现TCP无法实现的传输效率,而不使用TCP类似的“三手”包装在底层协议上。

      HTTP协议基于请求/响应模型

      2、HTTP协议基于请求/响应模型上的。

      首先客户端与服务器创建一个TCP链接,并向服务器发送请求,

      请求包括请求方法、URI、协议版本和相关IME风格。

      服务器响应包含消息的协议版本、成功和失败代码以及相关的IME模式消息的状态行。

      HTTP/1.0为每个HTTP请求/响应创建新的TCP链接,

      因此,包含HTML内容和图像的页面需要创建多个短期的TCP链接。

      创建一个TCP链路需要三个握手。

      此外,TCP需要额外的路由连接时间(RTT),以达到适当的传输速度。

      每个链接的建立需要这种经常费用,并且它不包含实际有用的数据,而是只保证链接的可靠性,因此HTTP/1.1提出了实现可持续链接的方法。

      HTTP/1.1只创建一个TCP链接,并重复使用它来发送一系列请求/响应消息,从而减少创建的链接数目和频繁的链接成本。

      3、结论:

      尽管HTTP本身是一个协议,但最终是基于TCP的。 然而,目前正在研究基于TCP+UDP的混合HTTP协议。
      这个图表表示一个单独的服务
      在这里插入图片描述
      服务不一定有所有层,但可能有一些层可以组装成服务
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      TCP/IP Socket

      在这里插入图片描述

      在这里插入图片描述
      我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。
      有许多应用层协议,如HTTP、FTP和TELNET,也可以自行定义。
      Web使用HTTP协议作为应用程序层协议加密HTTP文本信息,然后使用TCP/IP作为传输层协议发送到网络。

      建立网络通信连接需要至少一个套接口.索克基本上是一个编程接口(API),TCP/IP加密,TCP/IP还为程序员提供用于网络开发的接口,这是索克编程接口;HTTP是一个汽车,提供一种具体形式的内capsulating或显示数据; 索克是一个引擎,提供在网络上通信的能力。

      Socket的原意是“洞”或“界面”。作为BSD UNIX的进程通信机制,取后一种意思。它也常被称为“密码”,描述IP地址和端口,它是一系列的句子,它可以用于实现不同虚拟机或不同计算机之间的通信。互联网上的主机通常运行几个服务软件,同时提供几种服务。每个服务都会打开一个插座,并关在港口,不同的港口与不同的服务相符。

      索克作为其英文原意,像一个多孔插座。一个主机就像一个满是插座的房间,每个插头都有一个数字,有些插头提供220V交流,有些提供110V交流,一些公司提供电视节目。客户端软件将插头插入一个不同的编号插头,你可以得到不同的服务

      每个层必须连结和通信

      参考: https://blog.csdn.web/qq_35475714/article/details/107627998

      6. 物理层

      在物理层上传输的数据单元是位数,每个层都有通信和交互
      在这里插入图片描述

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30461.html

          热门文章

          文章分类